TenantAtlas/specs/141-shared-diff-presentation-foundation/contracts/shared-diff-presentation.openapi.yaml
2026-03-14 13:31:24 +01:00

122 lines
2.8 KiB
YAML

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