TenantAtlas/specs/174-evidence-freshness-publication-trust/contracts/evidence-review-trust-surfaces.openapi.yaml
2026-04-04 13:29:40 +02:00

396 lines
10 KiB
YAML

openapi: 3.1.0
info:
title: Evidence Review Trust Surfaces Contract
version: 1.0.0
description: >-
Internal reference contract for the rendered HTML surfaces affected by Spec 174.
These routes continue to return HTML through Filament and Livewire. The vendor
media types below document the structured truth payloads that must be derivable
before rendering. This is not a public API commitment.
paths:
/admin/evidence/overview:
get:
summary: Canonical evidence overview
description: >-
Returns the rendered evidence overview for entitled tenants in the current workspace.
The vendor media type documents the derived row contract used to communicate
artifact truth, freshness, and next steps.
responses:
'200':
description: Rendered evidence overview page
content:
text/html:
schema:
type: string
application/vnd.tenantpilot.evidence-overview+json:
schema:
$ref: '#/components/schemas/EvidenceOverviewPage'
'404':
description: Workspace context is missing or the viewer is not entitled to the relevant scope
/admin/reviews:
get:
summary: Canonical review register
description: >-
Returns the rendered review register for entitled tenants in the current workspace.
The vendor media type documents the row-level trust and publication contract.
responses:
'200':
description: Rendered review register page
content:
text/html:
schema:
type: string
application/vnd.tenantpilot.review-register+json:
schema:
$ref: '#/components/schemas/ReviewRegisterPage'
'404':
description: Workspace context is missing or the viewer is not entitled to the relevant scope
/admin/t/{tenant}/evidence/{snapshot}:
get:
summary: Tenant-scoped evidence snapshot detail
parameters:
- name: tenant
in: path
required: true
schema:
type: string
- name: snapshot
in: path
required: true
schema:
type: integer
responses:
'200':
description: Rendered evidence snapshot detail page
content:
text/html:
schema:
type: string
application/vnd.tenantpilot.evidence-snapshot-detail+json:
schema:
$ref: '#/components/schemas/EvidenceSnapshotDetailPage'
'403':
description: Viewer is in tenant scope but lacks the required manage capability for actions
'404':
description: Snapshot is not visible because it does not exist or tenant entitlement is missing
/admin/t/{tenant}/reviews/{review}:
get:
summary: Tenant-scoped review detail
parameters:
- name: tenant
in: path
required: true
schema:
type: string
- name: review
in: path
required: true
schema:
type: integer
responses:
'200':
description: Rendered tenant review detail page
content:
text/html:
schema:
type: string
application/vnd.tenantpilot.tenant-review-detail+json:
schema:
$ref: '#/components/schemas/TenantReviewDetailPage'
'403':
description: Viewer is in tenant scope but lacks the required manage capability for actions
'404':
description: Review is not visible because it does not exist or tenant entitlement is missing
/admin/t/{tenant}/review-packs/{pack}:
get:
summary: Tenant-scoped review pack detail
parameters:
- name: tenant
in: path
required: true
schema:
type: string
- name: pack
in: path
required: true
schema:
type: integer
responses:
'200':
description: Rendered review pack detail page
content:
text/html:
schema:
type: string
application/vnd.tenantpilot.review-pack-detail+json:
schema:
$ref: '#/components/schemas/ReviewPackDetailPage'
'403':
description: Viewer is in tenant scope but lacks the required manage capability for actions
'404':
description: Review pack is not visible because it does not exist or tenant entitlement is missing
components:
schemas:
ArtifactTruthSummary:
type: object
required:
- primaryLabel
- contentState
- freshnessState
- actionability
properties:
primaryLabel:
type: string
primaryExplanation:
type:
- string
- 'null'
contentState:
type: string
freshnessState:
type: string
enum:
- current
- stale
- unknown
publicationReadiness:
type:
- string
- 'null'
enum:
- publishable
- internal_only
- blocked
actionability:
type: string
enum:
- none
- optional
- required
nextActionLabel:
type:
- string
- 'null'
nextActionUrl:
type:
- string
- 'null'
diagnosticLabel:
type:
- string
- 'null'
Badge:
type: object
required:
- label
properties:
label:
type: string
color:
type:
- string
- 'null'
icon:
type:
- string
- 'null'
EvidenceOverviewRow:
type: object
required:
- tenantName
- tenantId
- snapshotId
- completenessState
- artifactTruth
- freshness
- nextStep
properties:
tenantName:
type: string
tenantId:
type: integer
snapshotId:
type: integer
completenessState:
type: string
generatedAt:
type:
- string
- 'null'
format: date-time
missingDimensions:
type: integer
staleDimensions:
type: integer
artifactTruth:
$ref: '#/components/schemas/ArtifactTruthSummary'
freshness:
$ref: '#/components/schemas/Badge'
nextStep:
type: string
viewUrl:
type:
- string
- 'null'
ReviewRegisterRow:
type: object
required:
- tenantName
- tenantId
- reviewId
- status
- completenessState
- artifactTruth
- publication
- nextStep
properties:
tenantName:
type: string
tenantId:
type: integer
reviewId:
type: integer
status:
type: string
completenessState:
type: string
generatedAt:
type:
- string
- 'null'
format: date-time
publishedAt:
type:
- string
- 'null'
format: date-time
artifactTruth:
$ref: '#/components/schemas/ArtifactTruthSummary'
publication:
$ref: '#/components/schemas/Badge'
nextStep:
type: string
viewUrl:
type:
- string
- 'null'
EvidenceOverviewPage:
type: object
required:
- rows
properties:
rows:
type: array
items:
$ref: '#/components/schemas/EvidenceOverviewRow'
ReviewRegisterPage:
type: object
required:
- rows
properties:
rows:
type: array
items:
$ref: '#/components/schemas/ReviewRegisterRow'
EvidenceSnapshotDetailPage:
type: object
required:
- recordId
- tenantId
- completenessState
- artifactTruth
properties:
recordId:
type: integer
tenantId:
type: integer
status:
type: string
completenessState:
type: string
generatedAt:
type:
- string
- 'null'
format: date-time
artifactTruth:
$ref: '#/components/schemas/ArtifactTruthSummary'
linkedReviewUrl:
type:
- string
- 'null'
linkedRunUrl:
type:
- string
- 'null'
TenantReviewDetailPage:
type: object
required:
- recordId
- tenantId
- status
- completenessState
- artifactTruth
properties:
recordId:
type: integer
tenantId:
type: integer
status:
type: string
completenessState:
type: string
generatedAt:
type:
- string
- 'null'
format: date-time
publishedAt:
type:
- string
- 'null'
format: date-time
artifactTruth:
$ref: '#/components/schemas/ArtifactTruthSummary'
linkedEvidenceUrl:
type:
- string
- 'null'
linkedPackUrl:
type:
- string
- 'null'
ReviewPackDetailPage:
type: object
required:
- recordId
- tenantId
- status
- artifactTruth
properties:
recordId:
type: integer
tenantId:
type: integer
status:
type: string
generatedAt:
type:
- string
- 'null'
format: date-time
expiresAt:
type:
- string
- 'null'
format: date-time
artifactTruth:
$ref: '#/components/schemas/ArtifactTruthSummary'
linkedReviewUrl:
type:
- string
- 'null'
linkedEvidenceUrl:
type:
- string
- 'null'