TenantAtlas/specs/091-backupschedule-retention-lifecycle/contracts/backup-schedule-lifecycle-v1.openapi.yaml
2026-02-14 14:43:53 +01:00

136 lines
3.4 KiB
YAML

openapi: 3.1.0
info:
title: TenantPilot Internal UI Contracts
version: 1.0.0
description: |
This OpenAPI document is used as a schema bundle for internal (non-HTTP) contracts.
Spec 091 does not introduce public HTTP endpoints; Filament/Livewire actions are
executed via framework internals. We still publish schemas here so the feature
has explicit, reviewable contracts under `specs/.../contracts/`.
paths: {}
components:
schemas:
BackupScheduleLifecycleAction:
type: string
description: Stable identifiers for lifecycle mutations.
enum:
- backup_schedule.archived
- backup_schedule.restored
- backup_schedule.force_deleted
BackupScheduleLifecycleGuard:
type: object
additionalProperties: false
required:
- can_archive
- can_restore
- can_force_delete
- force_delete_blocked_reason
properties:
can_archive:
type: boolean
can_restore:
type: boolean
can_force_delete:
type: boolean
force_delete_blocked_reason:
type: string
nullable: true
description: Human-friendly reason shown when force delete is blocked.
examples:
- Historical runs exist for this schedule.
BackupScheduleLifecycleMutation:
type: object
additionalProperties: false
required:
- action
- tenant_id
- backup_schedule_id
properties:
action:
$ref: '#/components/schemas/BackupScheduleLifecycleAction'
tenant_id:
type: integer
backup_schedule_id:
type: integer
actor_id:
type: integer
nullable: true
occurred_at:
type: string
format: date-time
nullable: true
metadata:
type: object
additionalProperties: true
description: Sanitized metadata payload.
RbacDecision:
type: object
additionalProperties: false
required:
- is_member
- has_capability
- outcome
properties:
is_member:
type: boolean
has_capability:
type: boolean
outcome:
type: string
description: Server-side outcome required by RBAC-UX.
enum:
- allow
- deny_as_not_found
- deny_as_forbidden
AuditLogEntry:
type: object
additionalProperties: false
required:
- action
- status
- recorded_at
properties:
tenant_id:
type: integer
nullable: true
workspace_id:
type: integer
nullable: true
actor_id:
type: integer
nullable: true
actor_email:
type: string
nullable: true
actor_name:
type: string
nullable: true
action:
type: string
description: Stable action id string.
examples:
- backup_schedule.archived
resource_type:
type: string
nullable: true
resource_id:
type: string
nullable: true
status:
type: string
enum: [success]
metadata:
type: object
description: Sanitized metadata payload.
additionalProperties: true
recorded_at:
type: string
format: date-time