TenantAtlas/specs/198-monitoring-page-state/contracts/monitoring-page-state.logical.openapi.yaml

284 lines
8.2 KiB
YAML

openapi: 3.1.0
info:
title: Monitoring Page-State Internal Contract
version: 0.1.0
summary: Internal logical contract for Spec 198 monitoring page-state behavior
description: |
This contract is an internal planning artifact for Spec 198. The affected
surfaces continue to render HTML through Filament and Livewire. The schemas
below define the bounded contract for contextual prefilter state, active
state, draft state, inspect state, shareable/restorable state, and
deterministic hydration rules across the in-scope monitoring family.
servers:
- url: /internal
x-monitoring-page-state-consumers:
- surface: operations
sourceFiles:
- apps/platform/app/Filament/Pages/Monitoring/Operations.php
- apps/platform/resources/views/filament/pages/monitoring/operations.blade.php
mustDeclare:
- contextual_prefilter
- active
- shareable_restorable
mustNotDeclare:
- draft
- competing_same_page_inspect_model
- surface: audit_log
sourceFiles:
- apps/platform/app/Filament/Pages/Monitoring/AuditLog.php
- apps/platform/resources/views/filament/pages/monitoring/audit-log.blade.php
- apps/platform/resources/views/filament/pages/monitoring/partials/audit-log-inspect-event.blade.php
mustDeclare:
- contextual_prefilter
- active
- inspect
- shareable_restorable
mustNotDeclare:
- draft
- parallel_inspect_world
- surface: finding_exceptions_queue
sourceFiles:
- apps/platform/app/Filament/Pages/Monitoring/FindingExceptionsQueue.php
- apps/platform/resources/views/filament/pages/monitoring/finding-exceptions-queue.blade.php
mustDeclare:
- contextual_prefilter
- active
- inspect
- shareable_restorable
mustNotDeclare:
- draft
- parallel_inspect_world
- surface: evidence_overview
sourceFiles:
- apps/platform/app/Filament/Pages/Monitoring/EvidenceOverview.php
- apps/platform/resources/views/filament/pages/monitoring/evidence-overview.blade.php
mustDeclare:
- contextual_prefilter
- active
- shareable_restorable
mustNotDeclare:
- draft
- same_page_selected_record_state
- surface: baseline_compare_matrix
sourceFiles:
- apps/platform/app/Filament/Pages/BaselineCompareMatrix.php
- apps/platform/resources/views/filament/pages/baseline-compare-matrix.blade.php
mustDeclare:
- contextual_prefilter
- active
- draft
- inspect
- shareable_restorable
mustNotDeclare:
- forced_direct_active_filter_model
- surface: baseline_compare_landing
sourceFiles:
- apps/platform/app/Filament/Pages/BaselineCompareLanding.php
- apps/platform/resources/views/filament/pages/baseline-compare-landing.blade.php
mustDeclare:
- contextual_prefilter
- active
mustNotDeclare:
- competing_applied_compare_owner
paths:
/internal/page-state/{surface}:
get:
summary: Return the logical page-state contract for an in-scope monitoring surface
operationId: getMonitoringPageStateContract
parameters:
- name: surface
in: path
required: true
schema:
$ref: '#/components/schemas/SurfaceKey'
responses:
'200':
description: Logical state contract and hydration rules for the requested surface
content:
application/vnd.tenantpilot.monitoring-page-state+json:
schema:
$ref: '#/components/schemas/SurfaceContract'
'404':
description: Requested surface is not in the Spec 198 inventory
components:
schemas:
SurfaceKey:
type: string
enum:
- operations
- audit_log
- finding_exceptions_queue
- evidence_overview
- baseline_compare_matrix
- baseline_compare_landing
SurfaceType:
type: string
enum:
- simple_monitoring
- selected_record_monitoring
- draft_apply_analysis
- launch_context_support
StateClass:
type: string
enum:
- contextual_prefilter
- active
- draft
- inspect
- shareable_restorable
QueryRole:
type: string
enum:
- initialization_only
- durable_restorable
- scoped_deeplink
- unsupported
StateCarrier:
type: string
enum:
- query_param
- session
- livewire_property
- route_context
- derived_render_state
InvalidFallback:
type: string
enum:
- discard_and_continue
- clear_selection_and_continue
- reset_to_default_scope
- ignore_unapplied_draft
- deny_not_found
InspectPresentation:
type: string
enum:
- none
- inline_detail
- queue_summary
- focused_matrix
- navigate_to_canonical_detail
StateFieldDescriptor:
type: object
additionalProperties: false
required:
- stateKey
- stateClass
- carrier
- queryRole
- shareable
- restorableOnRefresh
- invalidFallback
properties:
stateKey:
type: string
stateClass:
$ref: '#/components/schemas/StateClass'
carrier:
$ref: '#/components/schemas/StateCarrier'
queryRole:
$ref: '#/components/schemas/QueryRole'
shareable:
type: boolean
restorableOnRefresh:
type: boolean
tenantSensitive:
type: boolean
invalidFallback:
$ref: '#/components/schemas/InvalidFallback'
HydrationRule:
type: object
additionalProperties: false
required:
- precedenceOrder
- appliesOnInitialMountOnly
- activeStateBecomesAuthoritativeAfterMount
- invalidRequestedStateFallback
properties:
precedenceOrder:
type: array
items:
type: string
enum:
- query
- session
- default
appliesOnInitialMountOnly:
type: boolean
activeStateBecomesAuthoritativeAfterMount:
type: boolean
clearsOnTenantSwitch:
type: array
items:
type: string
invalidRequestedStateFallback:
$ref: '#/components/schemas/InvalidFallback'
InspectContract:
type: object
additionalProperties: false
required:
- primaryModel
- selectedStateKey
- openedBy
- presentation
- shareable
- invalidSelectionFallback
properties:
primaryModel:
type: string
enum:
- none
- selected_record_inline
- selected_record_workbench
- focused_subject
selectedStateKey:
type:
- string
- 'null'
openedBy:
type: array
items:
type: string
enum:
- query_param
- inspect_action
- row_selection
- cell_focus
- landing_context
presentation:
$ref: '#/components/schemas/InspectPresentation'
shareable:
type: boolean
invalidSelectionFallback:
$ref: '#/components/schemas/InvalidFallback'
SurfaceContract:
type: object
additionalProperties: false
required:
- surfaceKey
- surfaceType
- stateFields
- hydrationRule
- inspectContract
- shareableStateKeys
- localOnlyStateKeys
properties:
surfaceKey:
$ref: '#/components/schemas/SurfaceKey'
surfaceType:
$ref: '#/components/schemas/SurfaceType'
stateFields:
type: array
items:
$ref: '#/components/schemas/StateFieldDescriptor'
hydrationRule:
$ref: '#/components/schemas/HydrationRule'
inspectContract:
$ref: '#/components/schemas/InspectContract'
shareableStateKeys:
type: array
items:
type: string
localOnlyStateKeys:
type: array
items:
type: string