235 lines
6.4 KiB
YAML
235 lines
6.4 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: Inventory Coverage Truth Surfaces
|
|
version: 0.1.0
|
|
description: |
|
|
Logical surface contract for Spec 177. These contracts describe the tenant-scoped
|
|
coverage truth that inventory surfaces must render, even when the delivered transport
|
|
is server-rendered Filament UI rather than a public JSON API.
|
|
paths:
|
|
/admin/inventory-items:
|
|
get:
|
|
summary: Inventory items list with truthful coverage summary
|
|
operationId: inventoryItemsCoverageSummary
|
|
responses:
|
|
'200':
|
|
description: Tenant-scoped inventory items list surface
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- tenantId
|
|
- coverageSummary
|
|
properties:
|
|
tenantId:
|
|
type: integer
|
|
coverageSummary:
|
|
$ref: '#/components/schemas/CoverageSummary'
|
|
'403':
|
|
description: Member lacks capability for a linked follow-up action
|
|
'404':
|
|
description: User is not entitled to the tenant or workspace scope
|
|
/admin/coverage:
|
|
get:
|
|
summary: Tenant coverage truth report
|
|
operationId: inventoryCoverageReport
|
|
responses:
|
|
'200':
|
|
description: Tenant-scoped coverage report surface
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- tenantId
|
|
- coverageSummary
|
|
- rows
|
|
properties:
|
|
tenantId:
|
|
type: integer
|
|
coverageSummary:
|
|
$ref: '#/components/schemas/CoverageSummary'
|
|
rows:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/CoverageRow'
|
|
'403':
|
|
description: Member lacks capability for a linked follow-up action
|
|
'404':
|
|
description: User is not entitled to the tenant or workspace scope
|
|
/admin/operations/{run}:
|
|
get:
|
|
summary: Canonical inventory-sync run detail with per-type coverage section
|
|
operationId: inventorySyncRunDetail
|
|
parameters:
|
|
- in: path
|
|
name: run
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: Canonical operation run detail surface
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- id
|
|
- type
|
|
- status
|
|
- outcome
|
|
properties:
|
|
id:
|
|
type: integer
|
|
type:
|
|
type: string
|
|
enum:
|
|
- inventory_sync
|
|
status:
|
|
type: string
|
|
enum:
|
|
- queued
|
|
- running
|
|
- completed
|
|
outcome:
|
|
type: string
|
|
enum:
|
|
- pending
|
|
- succeeded
|
|
- partially_succeeded
|
|
- failed
|
|
- blocked
|
|
inventoryCoverageSection:
|
|
oneOf:
|
|
- $ref: '#/components/schemas/InventoryCoverageRunSection'
|
|
- type: 'null'
|
|
'403':
|
|
description: In-scope member lacks the run capability required for this operation
|
|
'404':
|
|
description: User is not entitled to the workspace or tenant scope for this run
|
|
components:
|
|
schemas:
|
|
BasisRun:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- id
|
|
- outcome
|
|
- completedAt
|
|
properties:
|
|
id:
|
|
type: integer
|
|
outcome:
|
|
type: string
|
|
enum:
|
|
- succeeded
|
|
- partially_succeeded
|
|
- failed
|
|
- blocked
|
|
completedAt:
|
|
type: string
|
|
format: date-time
|
|
CoverageSummary:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- hasCurrentCoverageResult
|
|
- supportedTypes
|
|
- succeededTypes
|
|
- failedTypes
|
|
- skippedTypes
|
|
- unknownTypes
|
|
- followUpTypes
|
|
- observedItems
|
|
properties:
|
|
hasCurrentCoverageResult:
|
|
type: boolean
|
|
basisRun:
|
|
oneOf:
|
|
- $ref: '#/components/schemas/BasisRun'
|
|
- type: 'null'
|
|
supportedTypes:
|
|
type: integer
|
|
succeededTypes:
|
|
type: integer
|
|
failedTypes:
|
|
type: integer
|
|
skippedTypes:
|
|
type: integer
|
|
unknownTypes:
|
|
type: integer
|
|
followUpTypes:
|
|
type: integer
|
|
observedItems:
|
|
type: integer
|
|
CoverageRow:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- type
|
|
- segment
|
|
- label
|
|
- category
|
|
- coverageState
|
|
- followUpRequired
|
|
- observedItemCount
|
|
- supportsDependencies
|
|
properties:
|
|
type:
|
|
type: string
|
|
segment:
|
|
type: string
|
|
enum:
|
|
- policy
|
|
- foundation
|
|
label:
|
|
type: string
|
|
category:
|
|
type: string
|
|
platform:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
coverageState:
|
|
type: string
|
|
enum:
|
|
- succeeded
|
|
- failed
|
|
- skipped
|
|
- unknown
|
|
followUpRequired:
|
|
type: boolean
|
|
observedItemCount:
|
|
type: integer
|
|
basisErrorCode:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
restoreMode:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
riskLevel:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
supportsDependencies:
|
|
type: boolean
|
|
InventoryCoverageRunSection:
|
|
type: object
|
|
additionalProperties: false
|
|
required:
|
|
- basisRun
|
|
- rows
|
|
properties:
|
|
basisRun:
|
|
$ref: '#/components/schemas/BasisRun'
|
|
rows:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/CoverageRow' |