{
  "id": "studio-0338ff9a-29f8-4867-9470-7f17d99bdded",
  "scope": "studio_project",
  "source_of_truth": "supabase.studio_artifacts",
  "source_path": "studio_artifacts/0338ff9a-29f8-4867-9470-7f17d99bdded",
  "source_kind": "supabase_json",
  "visibility": "internal",
  "renderer_id": "design_doc.dreamborn-forge.generated.v1",
  "design_system": "dreamborn-design-system:forge",
  "generated_at": "2026-05-09T13:00:56.405Z",
  "artifact_type": "api_auth_workspace_model",
  "schema_version": "studio_artifact.generated.v1",
  "title": "Bezel API api_auth_workspace_model",
  "summary": "api_auth_workspace_model artifact · for Bezel API · status draft",
  "status": "draft",
  "version": 1,
  "phase_id": null,
  "project_id": "c8bc3eed-c513-4dc8-9bc1-30c6723e232c",
  "project_slug": "redkey-bezel-api-c8bc3eed",
  "project_title": "Bezel API",
  "client_id": "redkey",
  "platform_project_id": null,
  "format_source": "supabase_json",
  "content_shape": [
    "invariant",
    "separation",
    "api_key_scopes",
    "tenant_boundary",
    "api_key_endpoint",
    "workspace_contains",
    "human_auth_endpoints"
  ],
  "sections": [
    {
      "title": "Artifact Shape",
      "level": 2,
      "body": "- invariant: Every API request resolves a workspace from human session, selected workspace, or workspace-scoped API key. Object IDs are never trusted on their own.\n- separation: Human sessions administer workspaces and create API keys. Agents claim tasks with scoped runtime API keys.\n- api key scopes: 4 items\n- tenant boundary: workspace\n- api key endpoint: POST /workspaces/:workspaceId/api-keys\n- workspace contains: 12 items\n- human auth endpoints: 5 items"
    }
  ],
  "html_path": "projects/redkey-bezel-api-c8bc3eed/artifacts/api-auth-workspace-model-0338ff9a.html",
  "json_path": "projects/redkey-bezel-api-c8bc3eed/artifacts/api-auth-workspace-model-0338ff9a.json"
}