openapi: 3.1.0 info: title: Shared Diff Presentation Foundation Contract version: 0.1.0 description: >- Internal presentation contract for Spec 141. This feature introduces no new HTTP routes. The component schemas document the supported input and output shapes for the shared diff presenter and Blade partials so follow-up consumer specs can adopt the foundation consistently. paths: {} components: schemas: StructuredCompareInput: type: object additionalProperties: false properties: baseline: type: object additionalProperties: true current: type: object additionalProperties: true changedKeys: type: array items: type: string labels: type: object additionalProperties: type: string meta: type: object additionalProperties: type: object additionalProperties: true required: - baseline - current DiffRowStatus: type: string enum: - unchanged - changed - added - removed DiffRow: type: object additionalProperties: false properties: key: type: string label: type: string status: $ref: '#/components/schemas/DiffRowStatus' oldValue: nullable: true newValue: nullable: true isListLike: type: boolean addedItems: type: array items: {} removedItems: type: array items: {} unchangedItems: type: array items: {} meta: type: object additionalProperties: true required: - key - label - status - isListLike - addedItems - removedItems - unchangedItems - meta DiffSummary: type: object additionalProperties: false properties: changedCount: type: integer minimum: 0 addedCount: type: integer minimum: 0 removedCount: type: integer minimum: 0 unchangedCount: type: integer minimum: 0 hasRows: type: boolean message: type: string nullable: true required: - changedCount - addedCount - removedCount - unchangedCount - hasRows DiffPresentation: type: object additionalProperties: false properties: summary: $ref: '#/components/schemas/DiffSummary' rows: type: array items: $ref: '#/components/schemas/DiffRow' required: - summary - rows