openapi: 3.1.0 info: title: Tenant Lifecycle Presentation Contract version: 0.1.0 description: >- Internal presentation contract for rendering tenant lifecycle consistently across tenant management surfaces and canonical viewers. This feature introduces no new external HTTP endpoints; the contract is expressed as shared schemas for UI-facing presentation objects. paths: {} components: schemas: TenantLifecycleValue: type: string enum: - draft - onboarding - active - archived description: Canonical tenant lifecycle values defined by the tenant domain. TenantLifecycleBadge: type: object additionalProperties: false required: - color - icon properties: color: type: string description: Shared badge or chip tone token. icon: type: string description: Shared icon token for lifecycle rendering. iconColor: type: - string - 'null' description: Optional icon color override. TenantLifecyclePresentation: type: object additionalProperties: false required: - value - label - badge - shortDescription - longDescription - isInvalidFallback properties: value: $ref: '#/components/schemas/TenantLifecycleValue' label: type: string enum: - Draft - Onboarding - Active - Archived badge: $ref: '#/components/schemas/TenantLifecycleBadge' shortDescription: type: string description: Concise explanation for detail, selector, or viewer surfaces. longDescription: type: string description: Detailed helper text for infolists, banners, or canonical viewers. isInvalidFallback: type: boolean description: Reserved for corrupted or unexpected non-canonical values only. TenantLifecyclePresentationVariant: type: object additionalProperties: false required: - surface - showBadge - showShortDescription - showLongDescription properties: surface: type: string enum: - table - detail - selector - canonical_viewer - banner showBadge: type: boolean showShortDescription: type: boolean showLongDescription: type: boolean contextNote: type: - string - 'null' description: Optional surface-specific note that does not change lifecycle meaning. ReferencedTenantLifecyclePresentation: type: object additionalProperties: false required: - tenantId - tenantName - presentation - viewerContext properties: tenantId: type: - integer - 'null' tenantName: type: - string - 'null' presentation: $ref: '#/components/schemas/TenantLifecyclePresentation' viewerContext: type: string enum: - operation_run - report - audit_reference contextNote: type: - string - 'null' description: Optional explanatory copy for onboarding or archived references.