TenantAtlas/specs/122-empty-state-consistency/contracts/empty-states.openapi.yaml
2026-03-08 03:16:51 +01:00

287 lines
8.5 KiB
YAML

openapi: 3.1.0
info:
title: TenantPilot Internal Empty State Contracts
version: 1.0.0
description: |
Internal review contract for Spec 122.
These are Filament list surfaces, not public API endpoints. The document exists so the
feature has an explicit, reviewable contract under specs/.../contracts/.
paths:
/admin/t/{tenant}/policies:
get:
summary: Tenant policies list empty state
description: Renders the policies list. When no rows exist, the page must expose the EmptyStateContract for the policies surface.
parameters:
- $ref: '#/components/parameters/TenantPathParam'
responses:
'200':
description: Policies list rendered
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyEmptyStateSurface'
/admin/t/{tenant}/backup-sets:
get:
summary: Tenant backup sets list empty state
parameters:
- $ref: '#/components/parameters/TenantPathParam'
responses:
'200':
description: Backup sets list rendered
content:
application/json:
schema:
$ref: '#/components/schemas/BackupSetEmptyStateSurface'
/admin/t/{tenant}/restore-runs:
get:
summary: Tenant restore runs list empty state
parameters:
- $ref: '#/components/parameters/TenantPathParam'
responses:
'200':
description: Restore runs list rendered
content:
application/json:
schema:
$ref: '#/components/schemas/RestoreRunEmptyStateSurface'
/admin/t/{tenant}/backup-schedules:
get:
summary: Tenant backup schedules list empty state
parameters:
- $ref: '#/components/parameters/TenantPathParam'
responses:
'200':
description: Backup schedules list rendered
content:
application/json:
schema:
$ref: '#/components/schemas/BackupScheduleEmptyStateSurface'
/admin/workspaces:
get:
summary: Workspace management list empty state
responses:
'200':
description: Workspaces list rendered
content:
application/json:
schema:
$ref: '#/components/schemas/WorkspaceEmptyStateSurface'
/admin/alert-deliveries:
get:
summary: Alert deliveries list empty state
responses:
'200':
description: Alert deliveries list rendered
content:
application/json:
schema:
$ref: '#/components/schemas/AlertDeliveryEmptyStateSurface'
components:
parameters:
TenantPathParam:
name: tenant
in: path
required: true
schema:
type: string
description: Current tenant route identifier for tenant-scoped Filament resources.
schemas:
EmptyStateContract:
type: object
additionalProperties: false
required:
- surface
- ownership_scope
- heading
- description
- icon
- primary_cta
- cta_count
properties:
surface:
type: string
ownership_scope:
type: string
enum: [tenant, workspace, workspace_context_monitoring]
heading:
type: string
description:
type: string
icon:
type: string
description: Heroicon identifier.
cta_count:
type: integer
const: 1
primary_cta:
$ref: '#/components/schemas/PrimaryCtaContract'
definition_source:
type: string
enum: [resource_table, page_helper_fallback]
preserved_capability_behavior:
type: string
enum: [disabled_with_explanation, hidden, mixed_by_existing_resource_rules]
PrimaryCtaContract:
type: object
additionalProperties: false
required:
- label
- intent
- target_surface
properties:
label:
type: string
intent:
type: string
enum: [create, navigate, queue_operation]
target_surface:
type: string
capability_aware:
type: boolean
notes:
type: string
nullable: true
PolicyEmptyStateSurface:
allOf:
- $ref: '#/components/schemas/EmptyStateContract'
- type: object
properties:
surface:
const: policy_list
ownership_scope:
const: tenant
heading:
const: No policies synced yet
description:
const: Sync your first tenant to see Intune policies here.
primary_cta:
allOf:
- $ref: '#/components/schemas/PrimaryCtaContract'
- type: object
properties:
label:
const: Sync from Intune
intent:
const: queue_operation
BackupSetEmptyStateSurface:
allOf:
- $ref: '#/components/schemas/EmptyStateContract'
- type: object
properties:
surface:
const: backup_set_list
ownership_scope:
const: tenant
heading:
const: No backup sets
description:
const: Create a backup set to start protecting your configurations.
primary_cta:
allOf:
- $ref: '#/components/schemas/PrimaryCtaContract'
- type: object
properties:
label:
const: Create backup set
intent:
const: create
RestoreRunEmptyStateSurface:
allOf:
- $ref: '#/components/schemas/EmptyStateContract'
- type: object
properties:
surface:
const: restore_run_list
ownership_scope:
const: tenant
heading:
const: No restore runs
description:
const: Start a restoration from a backup set.
primary_cta:
allOf:
- $ref: '#/components/schemas/PrimaryCtaContract'
- type: object
properties:
label:
const: New restore run
intent:
const: create
BackupScheduleEmptyStateSurface:
allOf:
- $ref: '#/components/schemas/EmptyStateContract'
- type: object
properties:
surface:
const: backup_schedule_list
ownership_scope:
const: tenant
heading:
const: No schedules configured
description:
const: Set up automated backups.
primary_cta:
allOf:
- $ref: '#/components/schemas/PrimaryCtaContract'
- type: object
properties:
label:
const: New backup schedule
intent:
const: create
WorkspaceEmptyStateSurface:
allOf:
- $ref: '#/components/schemas/EmptyStateContract'
- type: object
properties:
surface:
const: workspace_list
ownership_scope:
const: workspace
heading:
const: No workspaces
description:
const: Create your first workspace.
primary_cta:
allOf:
- $ref: '#/components/schemas/PrimaryCtaContract'
- type: object
properties:
label:
const: New workspace
intent:
const: create
AlertDeliveryEmptyStateSurface:
allOf:
- $ref: '#/components/schemas/EmptyStateContract'
- type: object
properties:
surface:
const: alert_delivery_list
ownership_scope:
const: workspace_context_monitoring
heading:
const: No alert deliveries
description:
const: Deliveries appear automatically when alert rules fire.
primary_cta:
allOf:
- $ref: '#/components/schemas/PrimaryCtaContract'
- type: object
properties:
label:
const: View alert rules
intent:
const: navigate