1.6 KiB
1.6 KiB
Data Model — Spec 083
This feature is primarily read-only UX + authorization hardening. No new tables are required.
Existing entities (relevant)
Workspace
- Purpose: Isolation boundary for tenant management surfaces.
- Key fields:
id.
WorkspaceMembership
- Purpose: Establishes user membership in a workspace.
- Key fields:
workspace_id,user_id,role.
Tenant
- Purpose: Managed Entra tenant (scoped to a workspace).
- Key fields:
id,external_id(Entra tenant GUID),workspace_id,status,name.
TenantMembership
- Purpose: Tenant entitlement (read-only access at minimum).
- Key fields:
tenant_id,user_id,role,source,source_ref.
TenantPermission
- Purpose: Stored permission inventory used by Required Permissions page.
- Key fields:
tenant_id,permission_key,status(granted|missing|error),details(JSON),last_checked_at.
Derived / computed values
"Last refreshed"
- Definition:
max(tenant_permissions.last_checked_at)for the tenant. - Stale rule (Spec 083): stale if missing OR older than 30 days.
Summary overall status
Derived from stored permission rows (and freshness):
- Blocked: any missing
applicationpermission. - Needs attention: any warning exists (missing delegated OR error rows folded into warning OR stale freshness).
- Ready: no blockers, no warnings.
State transitions
- None introduced here (page remains read-only). Mutations happen on other surfaces (verification start, provider connection management) and must enforce capability checks there.