{"openapi":"3.1.0","info":{"title":"Crisp App Dock","description":"Crisp App Dock API","version":"3.24.0-g863f1139-e59436b"},"paths":{"/api/health":{"get":{"tags":["health"],"summary":"Health","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/manifest":{"get":{"tags":["manifest"],"summary":"Manifest","operationId":"manifest_api_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Manifest"}}}}}}},"/api/platform/access":{"get":{"tags":["platform"],"summary":"Get Platform Access","description":"Return the caller's effective dock operator grants for SPA nav hints.","operationId":"get_platform_access_api_platform_access_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformAccessResponse"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/platform/applications":{"get":{"tags":["platform"],"summary":"List Applications","description":"List every catalog application, overlaying live registration deployments when present.","operationId":"list_applications_api_platform_applications_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformApplicationsListResponse"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/platform/applications/stats":{"get":{"tags":["platform"],"summary":"Get Application Stats","description":"Live counts of applications, modules, and deployments in OpenFGA.\n\nThe list endpoint above sources its rows from the Postgres catalog +\nregistrations; this endpoint inverts FGA so the dashboard's stat cards\nreflect what authorization can actually answer ``check`` against today.","operationId":"get_application_stats_api_platform_applications_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformApplicationStats"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/platform/applications/{application_id}/stats":{"get":{"tags":["platform"],"summary":"Get Application Detail Stats Endpoint","description":"Live deployment count for one application from OpenFGA.\n\nCounts ``application_instance`` objects whose ``base_definition`` is the\ncatalog ``application`` object — every scoped install regardless of whether\nthe scope is ``platform`` / ``portfolio`` / ``account``.","operationId":"get_application_detail_stats_endpoint_api_platform_applications__application_id__stats_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformApplicationDetailStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/applications/{application_id}/platform-modules":{"get":{"tags":["platform"],"summary":"Get Application Platform Modules Endpoint","description":"Modules materialized at ``platform:crisp`` for one catalog application.\n\nBacks the Global instance tab so platform-published semantic models\n(which never appear on any account) remain visible and manageable at the\nplatform scope even when the catalog row records only all-account fan-out.","operationId":"get_application_platform_modules_endpoint_api_platform_applications__application_id__platform_modules_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationPlatformModulesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/applications/{application_id}/default-account-install":{"patch":{"tags":["platform"],"summary":"Update Default Account Install","operationId":"update_default_account_install_api_platform_applications__application_id__default_account_install_patch","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultAccountInstallRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultAccountInstallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/applications/{application_id}/install":{"post":{"tags":["platform"],"summary":"Install Application","operationId":"install_application_api_platform_applications__application_id__install_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallApplicationTargetsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallApplicationTargetsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/applications/{application_id}/uninstall-all-accounts":{"post":{"tags":["platform"],"summary":"Uninstall Application All Accounts","description":"Remove this application's instance from every account and disable global install.","operationId":"uninstall_application_all_accounts_api_platform_applications__application_id__uninstall_all_accounts_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UninstallAllAccountsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/applications/{application_id}/resync":{"post":{"tags":["platform"],"summary":"Resync Application Authorization","description":"Re-apply an application's authorization tuples through the service.\n\nRe-applies every role bundle's catalog tuples and backfills the per-scope\n``module_instance`` plumbing for the full catalog module set on every\ninstalled scope. The transactional write path on registration /\noperator-edit / boot-seed already self-heals catalog edges; this endpoint\nexists so an operator can force a re-apply on demand when something has\ndrifted (manual FGA tampering, schema migration, a module added before the\nDOCK-259 fan-out fix) without waiting for the next write or a re-install.","operationId":"resync_application_authorization_api_platform_applications__application_id__resync_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResyncApplicationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/applications/{application_id}/role-bundles":{"get":{"tags":["platform"],"summary":"List Application Role Bundles","operationId":"list_application_role_bundles_api_platform_applications__application_id__role_bundles_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationRoleBundlesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform"],"summary":"Create Application Role Bundle","operationId":"create_application_role_bundle_api_platform_applications__application_id__role_bundles_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApplicationRoleBundleRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationRoleBundleSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/applications/{application_id}/role-bundles/{slug}":{"patch":{"tags":["platform"],"summary":"Update Application Role Bundle","operationId":"update_application_role_bundle_api_platform_applications__application_id__role_bundles__slug__patch","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateApplicationRoleBundleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationRoleBundleSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Delete Application Role Bundle","operationId":"delete_application_role_bundle_api_platform_applications__application_id__role_bundles__slug__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Delete Application Role Bundle Api Platform Applications  Application Id  Role Bundles  Slug  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/roles":{"get":{"tags":["platform"],"summary":"List Global Roles","operationId":"list_global_roles_api_platform_roles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalRolesListResponse"}}}}},"security":[{"Auth0AuthorizationCode":[]}]},"post":{"tags":["platform"],"summary":"Create Global Role","operationId":"create_global_role_api_platform_roles_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGlobalRoleRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalRoleSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/platform/roles/{slug}":{"get":{"tags":["platform"],"summary":"Get Global Role","operationId":"get_global_role_api_platform_roles__slug__get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalRoleSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["platform"],"summary":"Update Global Role","operationId":"update_global_role_api_platform_roles__slug__patch","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGlobalRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalRoleSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Delete Global Role","operationId":"delete_global_role_api_platform_roles__slug__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/organizations":{"get":{"tags":["platform"],"summary":"List Organizations","description":"Paginated, searchable listing of organizations in the connected Auth0 tenant.","operationId":"list_organizations_api_platform_organizations_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Per Page"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Case-insensitive partial match on organization id, name, or display name","default":"","title":"Q"},"description":"Case-insensitive partial match on organization id, name, or display name"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform"],"summary":"Create Organization","description":"Create an organization in the connected Auth0 tenant.\n\nRequires ``editor`` on the ``members-organizations`` module instance (derived from the\nPOST method by the parent router gate). The organization is created\nnatively in Auth0 (the source of truth). The tenant's default\nusername/password connection (``AUTH0_DEFAULT_DB_CONNECTION``) is enabled\non the new org so members can sign in (best-effort — org creation still\nsucceeds if connection wiring fails). Because a brand-new Auth0\norganization has no members — and organizations exist in FGA only through\n``member`` tuples — the creating operator is added as its first member in\nboth Auth0 and FGA so the new org is immediately reflected in the\nauthorization store and survives the next ``sync-members`` reconciliation.","operationId":"create_organization_api_platform_organizations_post","security":[{"Auth0AuthorizationCode":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/organizations/sync-members":{"post":{"tags":["platform"],"summary":"Sync Org Members","description":"Full reconciliation of Auth0 org memberships into FGA tuples.\n\nFetches all organizations and their members from Auth0, compares\nagainst current FGA ``user → member → organization`` tuples, and\nadds missing / deletes stale tuples.","operationId":"sync_org_members_api_platform_organizations_sync_members_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncMembersResponse"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/platform/organizations/{org_id}":{"get":{"tags":["platform"],"summary":"Get Organization","description":"Fetch a single organization by Auth0 id, including its groups.\n\nUsed by the organization detail page so deep links do not need to page\nthrough the full tenant catalog.","operationId":"get_organization_api_platform_organizations__org_id__get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/organizations/{org_id}/members":{"get":{"tags":["platform"],"summary":"List Organization Members","description":"All members of a single Auth0 organization as enriched ``User`` records.\n\nReturns the full membership in one shot (no pagination) — the\norganization-detail UI fans them out alongside the org's groups, and\ntypical orgs have at most a few hundred members.","operationId":"list_organization_members_api_platform_organizations__org_id__members_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform"],"summary":"Add Organization Member","description":"Add an existing Auth0 user to an organization.\n\nRequires ``editor`` on the ``members-organizations`` module instance (derived from the\nPOST method by the parent router gate). The user must already exist in the\nconnected Auth0 tenant; they are added to the organization in both Auth0\n(the source of truth) and FGA, and the resolved user record is returned.\nUse ``POST /api/platform/users`` instead to provision a brand-new user.","operationId":"add_organization_member_api_platform_organizations__org_id__members_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddOrganizationMemberRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Remove Organization Member","description":"Remove a user from an organization.\n\nRequires ``owner`` on the ``members-organizations`` module instance\n(derived from the DELETE method by the parent router gate). The user is\nremoved from the organization in both Auth0 (the source of truth) and FGA.","operationId":"remove_organization_member_api_platform_organizations__org_id__members_delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"Auth0 user id to remove from the organization","title":"User Id"},"description":"Auth0 user id to remove from the organization"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/organizations/{org_id}/scope-access":{"get":{"tags":["platform"],"summary":"List Organization Scope Access","description":"Portfolios/accounts the organization already has effective ``reader`` on.\n\nThe grant-access UI uses these lists to hide scopes where granting reader\nwould be redundant; the organization detail page renders them (id + display\nname) to show which scopes the org's members inherit reader access on.","operationId":"list_organization_scope_access_api_platform_organizations__org_id__scope_access_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationScopeAccessResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/organizations/{org_id}/groups":{"get":{"tags":["platform"],"summary":"List Organization Groups","description":"List the org's groups the caller can ``data_reader`` on.","operationId":"list_organization_groups_api_platform_organizations__org_id__groups_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformGroupsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform"],"summary":"Create Organization Group","description":"Create a group, mirror its org tuple, and grant the creator ownership.\n\nCreating a group requires module ``editor``. The new group is registered as\na ``sharable_entity`` under the members-groups module instance and the\ncreator is granted ``owner`` + ``data_owner`` on it, so they retain full\ncontrol of the group they just made.","operationId":"create_organization_group_api_platform_organizations__org_id__groups_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePlatformGroupRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformGroup"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/groups":{"get":{"tags":["platform"],"summary":"List All Groups","description":"List groups the caller can ``data_reader`` on, paginated and searchable.\n\nThe members-groups page itself requires module ``reader`` (the gate above);\nthe rows are then filtered to the groups the caller has ``data_reader`` on,\nso a delegate only sees their own groups while a dock operator sees all.","operationId":"list_all_groups_api_platform_groups_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Per Page"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"include_system_groups","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include System Groups"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformGroupsPaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/groups/by-organization":{"get":{"tags":["platform"],"summary":"List Groups By Organizations","description":"List groups for one or more organizations in a single request.\n\nResolves visibility via one ``list_objects`` call and one DB query instead of\nfanning out per-organization requests that each scanned the FGA store.","operationId":"list_groups_by_organizations_api_platform_groups_by_organization_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"orgId","in":"query","required":true,"schema":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":200,"title":"Orgid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformGroupsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/groups/lookup":{"post":{"tags":["platform"],"summary":"Lookup Groups","description":"Resolve group metadata for ids referenced outside the paginated listing.\n\nFiltered to the groups the caller has ``data_reader`` on so a delegate\ncan't probe membership of groups they cannot otherwise see.","operationId":"lookup_groups_api_platform_groups_lookup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupsLookupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupsLookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/platform/groups/organizations":{"get":{"tags":["platform"],"summary":"List Organizations For Picker","description":"Searchable organization listing for principal and member pickers.\n\nGated like ``GET /api/platform/groups`` so operators who can search groups\nin access pickers can search organizations too without members-module access.\nRows are scoped to organizations tied to groups the caller can ``data_reader``\non, so delegates only see their own orgs while dock operators see all.","operationId":"list_organizations_for_picker_api_platform_groups_organizations_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Per Page"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/groups/{group_id}":{"get":{"tags":["platform"],"summary":"Get Group Detail","description":"Get full group detail including human users, service accounts, and nested groups.","operationId":"get_group_detail_api_platform_groups__group_id__get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformGroupDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["platform"],"summary":"Update Group","description":"Patch a group's display name, description, and optionally organization.\n\nA field absent from the request body leaves the column untouched; a\nfield set to ``null`` clears ``display_name`` / ``description``.\nReassigning ``organization_id`` additionally requires group ``owner``\nplus ``editor`` on the destination organization.","operationId":"update_group_api_platform_groups__group_id__patch","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePlatformGroupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformGroup"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Delete Group","description":"Soft-delete a group and remove every FGA tuple that references it.\n\nRemoves both ``object: group:{id}`` tuples (members of the group) and\n``user: group:{id}#member`` tuples (places where the group is granted\na role on something else, plus the org-link tuple). The Postgres row\nis marked ``deleted = true`` so it stays available for audit.","operationId":"delete_group_api_platform_groups__group_id__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/groups/{group_id}/authorized-objects":{"get":{"tags":["platform"],"summary":"Get Group Authorized Objects","description":"Inverted view of FGA: every object a group has direct access to.","operationId":"get_group_authorized_objects_api_platform_groups__group_id__authorized_objects_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupAuthorizedObjectsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/groups/{group_id}/members":{"post":{"tags":["platform"],"summary":"Add Group Member","description":"Add a user, service account, or nested group to the group.","operationId":"add_group_member_api_platform_groups__group_id__members_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddGroupMemberRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Remove Group Member","description":"Remove a user, service account, or nested group from the group.","operationId":"remove_group_member_api_platform_groups__group_id__members_delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"service_account_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service Account Id"}},{"name":"group_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/impersonation/config":{"get":{"tags":["platform"],"summary":"Get Impersonation Config","description":"Return the impersonation page-shell config.\n\n``canExchange`` mirrors the ``/exchange`` gate so the SPA only offers the\nImpersonate action to callers who could actually complete the exchange:\nan end-user (not a service token, not an already-impersonating session)\nholding ``editor`` on the dock impersonation module instance. The route\nitself still requires ``reader`` on the impersonation module (router gate);\nonly the *editor* check used to compute ``canExchange`` degrades to\n``false`` on FGA error so the page shell can render once the caller has\npassed that module gate.","operationId":"get_impersonation_config_api_platform_impersonation_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImpersonationConfigResponse"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/platform/impersonation/exchange":{"post":{"tags":["platform"],"summary":"Exchange For Impersonation Token","description":"Exchange the caller's own SPA access token for a short-lived impersonation token.\n\nThe FGA gate lives on the router include (see\n:mod:`app.authorization.matrix`): this POST requires ``editor`` on the\ndock impersonation module instance, so impersonation is delegable per\npersona rather than tied to blanket app-dock ownership. Two refusals\nlayer on top:\n\n* **401 No token to exchange** — only end users can drive this flow,\n  so service-account principals are rejected outright. The SPA token\n  is reused as the ``subject_token`` for RFC 8693, so an\n  impersonating session cannot itself act as the subject of another\n  exchange (the dock identity layer rejects ``act`` on a token that\n  already has ``act`` set).","operationId":"exchange_for_impersonation_token_api_platform_impersonation_exchange_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImpersonationExchangeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImpersonationExchangeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/platform/escalation/reasons":{"get":{"tags":["platform"],"summary":"List Escalation Reasons","operationId":"list_escalation_reasons_api_platform_escalation_reasons_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationReasonsResponse"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/platform/escalation/audit-log":{"get":{"tags":["platform"],"summary":"List Escalation Audit Log","description":"Platform-admin listing of operator escalation history.","operationId":"list_escalation_audit_log_api_platform_escalation_audit_log_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationAuditLogListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/escalation/accounts/{account_id}":{"get":{"tags":["platform"],"summary":"Get Account Escalation Status","operationId":"get_account_escalation_status_api_platform_escalation_accounts__account_id__get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform"],"summary":"Escalate Account","operationId":"escalate_account_api_platform_escalation_accounts__account_id__post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalateAccountRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/escalation/accounts/{account_id}/revoke":{"post":{"tags":["platform"],"summary":"De Escalate Account","operationId":"de_escalate_account_api_platform_escalation_accounts__account_id__revoke_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalationStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/portfolios":{"get":{"tags":["platform"],"summary":"List Portfolios","operationId":"list_portfolios_api_platform_scopes_portfolios_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Page"}},{"name":"perPage","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Perpage"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfoliosListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform"],"summary":"Create Portfolio","operationId":"create_portfolio_api_platform_scopes_portfolios_post","security":[{"Auth0AuthorizationCode":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/portfolios/{portfolio_id}":{"get":{"tags":["platform"],"summary":"Get Portfolio","operationId":"get_portfolio_api_platform_scopes_portfolios__portfolio_id__get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["platform"],"summary":"Update Portfolio","operationId":"update_portfolio_api_platform_scopes_portfolios__portfolio_id__patch","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Delete Portfolio","operationId":"delete_portfolio_api_platform_scopes_portfolios__portfolio_id__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/portfolios/{portfolio_id}/applications":{"get":{"tags":["platform"],"summary":"List Portfolio Applications","operationId":"list_portfolio_applications_api_platform_scopes_portfolios__portfolio_id__applications_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioApplicationsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/portfolios/{portfolio_id}/applications/{application_id}":{"post":{"tags":["platform"],"summary":"Install Portfolio Application","operationId":"install_portfolio_application_api_platform_scopes_portfolios__portfolio_id__applications__application_id__post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeApplicationSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Uninstall Portfolio Application","operationId":"uninstall_portfolio_application_api_platform_scopes_portfolios__portfolio_id__applications__application_id__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/portfolios/{portfolio_id}/applications/{application_id}/modules":{"get":{"tags":["platform"],"summary":"List Portfolio Application Modules","operationId":"list_portfolio_application_modules_api_platform_scopes_portfolios__portfolio_id__applications__application_id__modules_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeApplicationModulesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/portfolios/{portfolio_id}/applications/{application_id}/modules/{module_name}":{"post":{"tags":["platform"],"summary":"Enable Portfolio Application Module","operationId":"enable_portfolio_application_module_api_platform_scopes_portfolios__portfolio_id__applications__application_id__modules__module_name__post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"module_name","in":"path","required":true,"schema":{"type":"string","title":"Module Name"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeApplicationModuleSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Disable Portfolio Application Module","operationId":"disable_portfolio_application_module_api_platform_scopes_portfolios__portfolio_id__applications__application_id__modules__module_name__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"module_name","in":"path","required":true,"schema":{"type":"string","title":"Module Name"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/portfolios/{portfolio_id}/members/{principal_kind}/{principal_id}/application-roles":{"get":{"tags":["platform"],"summary":"List Portfolio Member Application Roles","operationId":"list_portfolio_member_application_roles_api_platform_scopes_portfolios__portfolio_id__members__principal_kind___principal_id__application_roles_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountMemberApplicationRolesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/portfolios/{portfolio_id}/members/{principal_kind}/{principal_id}/application-roles/{application_id}/{slug}":{"post":{"tags":["platform"],"summary":"Assign Portfolio Member Application Role","operationId":"assign_portfolio_member_application_role_api_platform_scopes_portfolios__portfolio_id__members__principal_kind___principal_id__application_roles__application_id___slug__post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Unassign Portfolio Member Application Role","operationId":"unassign_portfolio_member_application_role_api_platform_scopes_portfolios__portfolio_id__members__principal_kind___principal_id__application_roles__application_id___slug__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/portfolios/{portfolio_id}/applications/{application_id}/role-bundles/{slug}/principals":{"get":{"tags":["platform"],"summary":"List Portfolio Role Bundle Principals","operationId":"list_portfolio_role_bundle_principals_api_platform_scopes_portfolios__portfolio_id__applications__application_id__role_bundles__slug__principals_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleBundleAssignmentsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/accounts":{"get":{"tags":["platform"],"summary":"List Accounts","operationId":"list_accounts_api_platform_scopes_accounts_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"portfolioId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portfolioid"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"segment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Segment"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Page"}},{"name":"perPage","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Perpage"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform"],"summary":"Create Account","operationId":"create_account_api_platform_scopes_accounts_post","security":[{"Auth0AuthorizationCode":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/accounts/sync-legacy":{"post":{"tags":["platform"],"summary":"Sync Legacy Accounts","operationId":"sync_legacy_accounts_api_platform_scopes_accounts_sync_legacy_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/LegacyAccountsSyncRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyAccountsSyncResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/platform/scopes/accounts/{account_id}/applications":{"get":{"tags":["platform"],"summary":"List Account Applications","operationId":"list_account_applications_api_platform_scopes_accounts__account_id__applications_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountApplicationsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/accounts/{account_id}/applications/{application_id}":{"post":{"tags":["platform"],"summary":"Install Account Application","operationId":"install_account_application_api_platform_scopes_accounts__account_id__applications__application_id__post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountApplicationSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Uninstall Account Application","operationId":"uninstall_account_application_api_platform_scopes_accounts__account_id__applications__application_id__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/accounts/{account_id}/applications/{application_id}/modules":{"get":{"tags":["platform"],"summary":"List Account Application Modules","operationId":"list_account_application_modules_api_platform_scopes_accounts__account_id__applications__application_id__modules_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeApplicationModulesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/accounts/{account_id}/applications/{application_id}/modules/{module_name}":{"post":{"tags":["platform"],"summary":"Enable Account Application Module","operationId":"enable_account_application_module_api_platform_scopes_accounts__account_id__applications__application_id__modules__module_name__post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"module_name","in":"path","required":true,"schema":{"type":"string","title":"Module Name"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeApplicationModuleSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Disable Account Application Module","operationId":"disable_account_application_module_api_platform_scopes_accounts__account_id__applications__application_id__modules__module_name__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"module_name","in":"path","required":true,"schema":{"type":"string","title":"Module Name"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/accounts/{account_id}/members/{principal_kind}/{principal_id}/application-roles":{"get":{"tags":["platform"],"summary":"List Account Member Application Roles","operationId":"list_account_member_application_roles_api_platform_scopes_accounts__account_id__members__principal_kind___principal_id__application_roles_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountMemberApplicationRolesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/accounts/{account_id}/members/{principal_kind}/{principal_id}/application-roles/{application_id}/{slug}":{"post":{"tags":["platform"],"summary":"Assign Account Member Application Role","operationId":"assign_account_member_application_role_api_platform_scopes_accounts__account_id__members__principal_kind___principal_id__application_roles__application_id___slug__post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Unassign Account Member Application Role","operationId":"unassign_account_member_application_role_api_platform_scopes_accounts__account_id__members__principal_kind___principal_id__application_roles__application_id___slug__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/accounts/{account_id}/applications/{application_id}/role-bundles/{slug}/principals":{"get":{"tags":["platform"],"summary":"List Account Role Bundle Principals","operationId":"list_account_role_bundle_principals_api_platform_scopes_accounts__account_id__applications__application_id__role_bundles__slug__principals_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleBundleAssignmentsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/accounts/{account_id}":{"get":{"tags":["platform"],"summary":"Get Account","operationId":"get_account_api_platform_scopes_accounts__account_id__get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["platform"],"summary":"Update Account","operationId":"update_account_api_platform_scopes_accounts__account_id__patch","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Delete Account","operationId":"delete_account_api_platform_scopes_accounts__account_id__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/platform/{platform_id}/applications/{application_id}/role-bundles/{slug}/principals":{"get":{"tags":["platform"],"summary":"List Platform Role Bundle Principals","description":"List users/groups holding an application role bundle at the platform scope.","operationId":"list_platform_role_bundle_principals_api_platform_scopes_platform__platform_id__applications__application_id__role_bundles__slug__principals_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"platform_id","in":"path","required":true,"schema":{"type":"string","title":"Platform Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleBundleAssignmentsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/platform/{platform_id}/members/{principal_kind}/{principal_id}/application-roles/{application_id}/{slug}":{"post":{"tags":["platform"],"summary":"Assign Platform Member Application Role","operationId":"assign_platform_member_application_role_api_platform_scopes_platform__platform_id__members__principal_kind___principal_id__application_roles__application_id___slug__post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"platform_id","in":"path","required":true,"schema":{"type":"string","title":"Platform Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Unassign Platform Member Application Role","operationId":"unassign_platform_member_application_role_api_platform_scopes_platform__platform_id__members__principal_kind___principal_id__application_roles__application_id___slug__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"platform_id","in":"path","required":true,"schema":{"type":"string","title":"Platform Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/accounts/{account_id}/global-roles":{"get":{"tags":["platform"],"summary":"List Account Global Roles","operationId":"list_account_global_roles_api_platform_scopes_accounts__account_id__global_roles_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeGlobalRolesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/accounts/{account_id}/global-roles/{slug}/principals":{"get":{"tags":["platform"],"summary":"List Account Global Role Principals","operationId":"list_account_global_role_principals_api_platform_scopes_accounts__account_id__global_roles__slug__principals_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeGlobalRolePrincipalsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/accounts/{account_id}/members/{principal_kind}/{principal_id}/global-roles/{slug}":{"post":{"tags":["platform"],"summary":"Assign Account Member Global Role","operationId":"assign_account_member_global_role_api_platform_scopes_accounts__account_id__members__principal_kind___principal_id__global_roles__slug__post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Unassign Account Member Global Role","operationId":"unassign_account_member_global_role_api_platform_scopes_accounts__account_id__members__principal_kind___principal_id__global_roles__slug__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/portfolios/{portfolio_id}/global-roles":{"get":{"tags":["platform"],"summary":"List Portfolio Global Roles","operationId":"list_portfolio_global_roles_api_platform_scopes_portfolios__portfolio_id__global_roles_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeGlobalRolesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/portfolios/{portfolio_id}/global-roles/{slug}/principals":{"get":{"tags":["platform"],"summary":"List Portfolio Global Role Principals","operationId":"list_portfolio_global_role_principals_api_platform_scopes_portfolios__portfolio_id__global_roles__slug__principals_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeGlobalRolePrincipalsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/portfolios/{portfolio_id}/members/{principal_kind}/{principal_id}/global-roles/{slug}":{"post":{"tags":["platform"],"summary":"Assign Portfolio Member Global Role","operationId":"assign_portfolio_member_global_role_api_platform_scopes_portfolios__portfolio_id__members__principal_kind___principal_id__global_roles__slug__post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Unassign Portfolio Member Global Role","operationId":"unassign_portfolio_member_global_role_api_platform_scopes_portfolios__portfolio_id__members__principal_kind___principal_id__global_roles__slug__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/crisp-employee-ids":{"get":{"tags":["scope-principals"],"summary":"List Crisp Employee Ids","description":"FGA members of the Crisp Employees org for the hide-Crisp users filter.\n\nLives on the scopes surface (not ``/organizations/.../members``) so operators\nwith scopes access — but not members access — can still filter the standing\norg grant. Ids come from FGA ListUsers so they match ``GET …/users``.","operationId":"list_crisp_employee_ids_api_platform_scopes_crisp_employee_ids_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrispEmployeeIdsResponse"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/platform/scopes/{scope_kind}/{scope_id}/principals":{"get":{"tags":["scope-principals"],"summary":"List Scope Principals","operationId":"list_scope_principals_api_platform_scopes__scope_kind___scope_id__principals_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"scope_kind","in":"path","required":true,"schema":{"type":"string","title":"Scope Kind"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"directOnly","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Directonly"}},{"name":"enrich","in":"query","required":false,"schema":{"type":"boolean","description":"Resolve Auth0/DB display fields for principals","default":true,"title":"Enrich"},"description":"Resolve Auth0/DB display fields for principals"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/{scope_kind}/{scope_id}/users":{"get":{"tags":["scope-principals"],"summary":"List Scope Users","description":"List human users with reader-or-higher control-plane access on a scope.\n\nDirect owner tuples (account admins) are always included, even when\nListUsers expansion would omit them.","operationId":"list_scope_users_api_platform_scopes__scope_kind___scope_id__users_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"scope_kind","in":"path","required":true,"schema":{"type":"string","title":"Scope Kind"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"enrich","in":"query","required":false,"schema":{"type":"boolean","description":"Resolve Auth0 display fields server-side. Defaults to false so clients can batch identity lookup separately after the FGA expansion returns.","default":false,"title":"Enrich"},"description":"Resolve Auth0 display fields server-side. Defaults to false so clients can batch identity lookup separately after the FGA expansion returns."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeUsersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/{scope_kind}/{scope_id}/groups":{"get":{"tags":["scope-principals"],"summary":"List Scope Groups","description":"List groups for organizations with reader access on a portfolio/account scope.","operationId":"list_scope_groups_api_platform_scopes__scope_kind___scope_id__groups_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"scope_kind","in":"path","required":true,"schema":{"type":"string","title":"Scope Kind"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeGroupsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/scopes/{scope_kind}/{scope_id}/principals/{principal_kind}/{principal_id}":{"put":{"tags":["scope-principals"],"summary":"Put Scope Principal","operationId":"put_scope_principal_api_platform_scopes__scope_kind___scope_id__principals__principal_kind___principal_id__put","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"scope_kind","in":"path","required":true,"schema":{"type":"string","title":"Scope Kind"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutScopePrincipalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["scope-principals"],"summary":"Remove Scope Principal","operationId":"remove_scope_principal_api_platform_scopes__scope_kind___scope_id__principals__principal_kind___principal_id__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"scope_kind","in":"path","required":true,"schema":{"type":"string","title":"Scope Kind"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"enum":["reader","editor","owner","data_reader","data_editor","data_owner"],"type":"string"},{"type":"null"}],"title":"Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/service-accounts":{"get":{"tags":["platform"],"summary":"List Service Accounts","description":"List all service accounts with pagination and search.","operationId":"list_service_accounts_api_platform_service_accounts_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Per Page"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformServiceAccountsPaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform"],"summary":"Create Service Account","description":"Create a new service account.","operationId":"create_service_account_api_platform_service_accounts_post","security":[{"Auth0AuthorizationCode":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServiceAccountRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformServiceAccount"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/service-accounts/{service_account_id}":{"get":{"tags":["platform"],"summary":"Get Service Account","description":"Fetch a single service account by id.","operationId":"get_service_account_api_platform_service_accounts__service_account_id__get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"service_account_id","in":"path","required":true,"schema":{"type":"string","title":"Service Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformServiceAccount"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["platform"],"summary":"Update Service Account","description":"Partially update a service account.","operationId":"update_service_account_api_platform_service_accounts__service_account_id__patch","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"service_account_id","in":"path","required":true,"schema":{"type":"string","title":"Service Account Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServiceAccountRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformServiceAccount"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Delete Service Account","description":"Soft-delete a service account.","operationId":"delete_service_account_api_platform_service_accounts__service_account_id__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"service_account_id","in":"path","required":true,"schema":{"type":"string","title":"Service Account Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/service-accounts/{service_account_id}/memberships":{"get":{"tags":["platform"],"summary":"Get Service Account Memberships","description":"FGA-derived organization, group, portfolio, and account memberships.\n\nLoaded on-demand by the service-account detail pane. The identifier is\nresolved to its canonical ``service_account:<segment>`` subject before the\nFGA fan-out. Requires ``reader`` on the ``members`` module instance (GET\nmaps to the reader relation on the parent router gate).","operationId":"get_service_account_memberships_api_platform_service_accounts__service_account_id__memberships_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"service_account_id","in":"path","required":true,"schema":{"type":"string","description":"Service account dock id or gcpsa| segment","title":"Service Account Id"},"description":"Service account dock id or gcpsa| segment"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceAccountMembership"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/service-accounts/{service_account_id}/fga-check":{"post":{"tags":["platform"],"summary":"Run Fga Check","description":"Run an ad-hoc FGA ``check`` for a service account against an arbitrary object.\n\nThe identifier is resolved to its canonical ``service_account:<segment>``\nsubject (``gcpsa|{uniqueId}`` when GCP-mapped, else the dock id) and the\ncheck is evaluated against the requested relation and object. Requires\n``editor`` on the ``members-service-accounts`` module instance (POST maps to the editor\nrelation on the parent router gate).","operationId":"run_fga_check_api_platform_service_accounts__service_account_id__fga_check_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"service_account_id","in":"path","required":true,"schema":{"type":"string","description":"Service account whose principal is checked","title":"Service Account Id"},"description":"Service account whose principal is checked"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FgaCheckRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FgaCheckResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/service-accounts/{service_account_id}/fga-check/explain":{"post":{"tags":["platform"],"summary":"Explain Fga Check","description":"Explain how a service account obtained an FGA relation on an object when allowed.\n\nRuns ``check`` first; when denied, returns ``allowed=false`` with no graph.\nWhen allowed, recursively walks OpenFGA ``expand`` trees pruned to branches\nthat prove the requested service account.","operationId":"explain_fga_check_api_platform_service_accounts__service_account_id__fga_check_explain_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"service_account_id","in":"path","required":true,"schema":{"type":"string","description":"Service account whose principal is checked","title":"Service Account Id"},"description":"Service account whose principal is checked"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FgaCheckRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FgaCheckExplanationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/summary":{"get":{"tags":["platform"],"summary":"Get Summary","description":"Return FGA-derived counts for the platform overview cards.","operationId":"get_summary_api_platform_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformSummaryResponse"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/platform/users":{"get":{"tags":["platform"],"summary":"List Users","description":"Paginated, searchable listing of users in the connected Auth0 tenant.\n\nIdentity-only. Use ``GET /platform/users/{user_id}/memberships`` to\nfetch FGA-derived organization and group memberships for a single\nuser.","operationId":"list_users_api_platform_users_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Per Page"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Search by name or email (Auth0 Lucene query)","default":"","title":"Q"},"description":"Search by name or email (Auth0 Lucene query)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform"],"summary":"Create User","description":"Create an Auth0 user and add them to an organization.\n\nRequires ``editor`` on the ``members-users`` module instance (derived from the\nPOST method by the parent router gate). The user is created natively in\nAuth0 (database connection + verification email), added to the target\norganization, and the matching ``user → member → organization`` FGA tuple\nis written so the dock's authorization view stays in lockstep with Auth0.\n\nWhen ``groupId`` is provided the user is also added to the specified group.","operationId":"create_user_api_platform_users_post","security":[{"Auth0AuthorizationCode":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePlatformUserRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/users/lookup":{"post":{"tags":["platform"],"summary":"Lookup Users","description":"Resolve Auth0 identity fields for a set of ``user_id`` values.\n\nUsed by scope member panels that only store principal ids from FGA and\nneed human-readable labels without paging the full tenant listing.","operationId":"lookup_users_api_platform_users_lookup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersLookupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersLookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/platform/users/{user_id}/memberships":{"get":{"tags":["platform"],"summary":"Get User Memberships","description":"FGA-derived organization and group memberships for a single user.\n\nLoaded on-demand by the user-detail pane. Auth0's pipe-separated\nidentifiers (``auth0|...``, ``google-oauth2|...``) ride through as a\nsingle path segment without further encoding.","operationId":"get_user_memberships_api_platform_users__user_id__memberships_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"Auth0 user id, e.g. 'auth0|abc' or 'google-oauth2|123'","title":"User Id"},"description":"Auth0 user id, e.g. 'auth0|abc' or 'google-oauth2|123'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserMembership"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/users/{user_id}/link":{"post":{"tags":["platform"],"summary":"Link Auth0 User","description":"Join another Auth0 login to this person via FGA ``user.linked`` tuples.\n\nRequires ``editor`` on the ``members-users`` module instance (POST maps to editor).\nAlso discovers every Auth0 user sharing either person's email so the linked\ngroup matches automatic reconciliation.","operationId":"link_auth0_user_api_platform_users__user_id__link_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"Auth0 user id to link from","title":"User Id"},"description":"Auth0 user id to link from"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkAuth0UserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLinkedSubsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/users/{user_id}/fga-check":{"post":{"tags":["platform"],"summary":"Run Fga Check","description":"Run an ad-hoc FGA ``check`` for a user against an arbitrary object.\n\nBy default resolves the person's anchor sub and checks the bare\n``user:<anchor>`` subject so effective access matches any of their Auth0\nlogins (via ``equivalent`` and the self-link). When ``linkedSub`` selects\none of the person's linked logins, the check runs against that bare\n``user:<sub>`` subject instead.","operationId":"run_fga_check_api_platform_users__user_id__fga_check_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"Auth0 user id whose principal is checked","title":"User Id"},"description":"Auth0 user id whose principal is checked"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserFgaCheckRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FgaCheckResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/users/{user_id}/fga-check/explain":{"post":{"tags":["platform"],"summary":"Explain Fga Check","description":"Explain how a user obtained an FGA relation on an object when allowed.\n\nBy default checks the bare ``user:<anchor>`` subject so the proof graph\nmatches grants that follow the person across Auth0 logins; with\n``linkedSub`` the proof is computed for that single login's bare\n``user:<sub>`` subject.","operationId":"explain_fga_check_api_platform_users__user_id__fga_check_explain_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"Auth0 user id whose principal is checked","title":"User Id"},"description":"Auth0 user id whose principal is checked"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserFgaCheckRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FgaCheckExplanationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/users/{user_id}/auth0-roles":{"get":{"tags":["platform"],"summary":"Get User Auth0 Roles","description":"List a user's Auth0 role grants (user- and organization-scoped) plus the catalog.\n\nReads the tenant role catalog, the user's tenant-wide (user-level) role\ngrants, and — for each organization the user belongs to — the roles granted\nto them within that organization, all from the Auth0 Management API.\nRequires ``reader`` on the ``members-users`` module instance (GET maps to the\nreader relation on the parent router gate).","operationId":"get_user_auth0_roles_api_platform_users__user_id__auth0_roles_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"Auth0 user id whose roles are listed","title":"User Id"},"description":"Auth0 user id whose roles are listed"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAuth0Roles"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform"],"summary":"Assign User Auth0 Roles","description":"Add one or more Auth0 roles to a user and return the refreshed role state.\n\nGrants tenant-wide (user-level) when ``organizationId`` is omitted, or\nscoped to that organization when supplied. Requires ``owner`` on the\n``members-users`` module instance.","operationId":"assign_user_auth0_roles_api_platform_users__user_id__auth0_roles_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"Auth0 user id to add roles to","title":"User Id"},"description":"Auth0 user id to add roles to"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignAuth0RolesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAuth0Roles"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform"],"summary":"Remove User Auth0 Roles","description":"Remove one or more Auth0 roles from a user and return the refreshed state.\n\nRemoves the tenant-wide (user-level) grant when ``organizationId`` is\nomitted, or the organization-scoped grant when supplied. Requires ``owner``\non the ``members-users`` module instance.","operationId":"remove_user_auth0_roles_api_platform_users__user_id__auth0_roles_delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"Auth0 user id to remove roles from","title":"User Id"},"description":"Auth0 user id to remove roles from"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignAuth0RolesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAuth0Roles"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/users/{user_id}/resend-verification-email":{"post":{"tags":["platform"],"summary":"Resend User Verification Email","description":"Resend the Auth0 email-address verification (\"invite\") email to a user.\n\nRe-triggers the same native Auth0 verification flow used on user creation\nvia ``POST /api/v2/jobs/verification-email``. Requires ``editor`` on the\n``members-users`` module instance (POST maps to the editor relation on the parent\nrouter gate).","operationId":"resend_user_verification_email_api_platform_users__user_id__resend_verification_email_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"Auth0 user id to (re)send the verification email to","title":"User Id"},"description":"Auth0 user id to (re)send the verification email to"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserEmailActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platform/users/{user_id}/password-reset-email":{"post":{"tags":["platform"],"summary":"Send User Password Reset Email","description":"Trigger Auth0's native password-reset email for a database user.\n\nDelegates to the Authentication API ``POST /dbconnections/change_password``\nso Auth0 sends the reset email itself. Requires ``editor`` on the\n``members-users`` module instance (POST maps to the editor relation on the parent\nrouter gate).","operationId":"send_user_password_reset_email_api_platform_users__user_id__password_reset_email_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","description":"Auth0 user id to send the password reset email to","title":"User Id"},"description":"Auth0 user id to send the password reset email to"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserEmailActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sharing/sharable-entities":{"get":{"tags":["sharing"],"summary":"Get Sharable Entity Sharing State","operationId":"get_sharable_entity_sharing_state_api_sharing_sharable_entities_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"accountId","in":"query","required":true,"schema":{"type":"string","title":"Accountid"}},{"name":"applicationId","in":"query","required":true,"schema":{"type":"string","title":"Applicationid"}},{"name":"module","in":"query","required":true,"schema":{"type":"string","title":"Module"}},{"name":"resourceId","in":"query","required":true,"schema":{"type":"string","title":"Resourceid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntitySharingState"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sharing/principals/search":{"get":{"tags":["sharing"],"summary":"Search Principals","operationId":"search_principals_api_sharing_principals_search_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"accountId","in":"query","required":true,"schema":{"type":"string","title":"Accountid"}},{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":3,"title":"Q"}},{"name":"kinds","in":"query","required":false,"schema":{"type":"string","default":"user,group,organization","title":"Kinds"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Page"}},{"name":"perPage","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":25,"title":"Perpage"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrincipalSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sharing/sharable-entities/grants":{"post":{"tags":["sharing"],"summary":"Grant Sharable Entity Access","operationId":"grant_sharable_entity_access_api_sharing_sharable_entities_grants_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityGrantMutationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntitySharingState"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/sharing/sharable-entities/grants/revoke":{"post":{"tags":["sharing"],"summary":"Revoke Sharable Entity Access","operationId":"revoke_sharable_entity_access_api_sharing_sharable_entities_grants_revoke_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityGrantMutationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntitySharingState"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/accounts":{"get":{"tags":["accounts"],"summary":"Accounts","operationId":"accounts_api_accounts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountsListResponse"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/accounts/{account_id}":{"get":{"tags":["accounts"],"summary":"Account","operationId":"account_api_accounts__account_id__get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAccount"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/apps":{"get":{"tags":["registry"],"summary":"Apps","operationId":"apps_api_apps_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AppRegistration"},"type":"array","title":"Response Apps Api Apps Get"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/dock/registered-apps/config":{"get":{"tags":["dock-registry"],"summary":"Get Config","operationId":"get_config_api_dock_registered_apps_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DockRegistryConfigResponse"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/dock/registered-apps":{"get":{"tags":["dock-registry"],"summary":"List Apps","operationId":"list_apps_api_dock_registered_apps_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisteredAppsListResponse"}}}}},"security":[{"Auth0AuthorizationCode":[]}]}},"/api/dock/registered-apps/{environment}/{app_name}":{"get":{"tags":["dock-registry"],"summary":"Get App Detail","operationId":"get_app_detail_api_dock_registered_apps__environment___app_name__get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"environment","in":"path","required":true,"schema":{"type":"string","title":"Environment"}},{"name":"app_name","in":"path","required":true,"schema":{"type":"string","title":"App Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisteredAppResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dock/companion-apps/{application_id}":{"get":{"tags":["dock-registry"],"summary":"Get Companion App Detail","description":"Return the pruned detail for one FGA-only companion application.\n\nOnly the FGA facets apply (modules + role bundles); application access is\nserved by the shared ``/scopes/application/{applicationId}/principals``\nroute. Host coordinates link the companion back to its owner's dock page.","operationId":"get_companion_app_detail_api_dock_companion_apps__application_id__get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanionAppDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dock/scopes/{scope_kind}/{scope_id}/principals":{"get":{"tags":["dock-registry"],"summary":"List Dock Scope Principals","operationId":"list_dock_scope_principals_api_dock_scopes__scope_kind___scope_id__principals_get","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"scope_kind","in":"path","required":true,"schema":{"type":"string","title":"Scope Kind"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"directOnly","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Directonly"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dock/scopes/{scope_kind}/{scope_id}/principals/{principal_kind}/{principal_id}":{"put":{"tags":["dock-registry"],"summary":"Put Dock Scope Principal","operationId":"put_dock_scope_principal_api_dock_scopes__scope_kind___scope_id__principals__principal_kind___principal_id__put","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"scope_kind","in":"path","required":true,"schema":{"type":"string","title":"Scope Kind"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutScopePrincipalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["dock-registry"],"summary":"Remove Dock Scope Principal","operationId":"remove_dock_scope_principal_api_dock_scopes__scope_kind___scope_id__principals__principal_kind___principal_id__delete","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"scope_kind","in":"path","required":true,"schema":{"type":"string","title":"Scope Kind"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"principal_kind","in":"path","required":true,"schema":{"enum":["user","service_account","group","organization"],"type":"string","title":"Principal Kind"}},{"name":"principal_id","in":"path","required":true,"schema":{"type":"string","title":"Principal Id"}},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"enum":["reader","editor","owner","data_reader","data_editor","data_owner"],"type":"string"},{"type":"null"}],"title":"Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopePrincipalMutationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dock/registered-apps/{environment}/{app_name}/recheck":{"post":{"tags":["dock-registry"],"summary":"Recheck App","operationId":"recheck_app_api_dock_registered_apps__environment___app_name__recheck_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"environment","in":"path","required":true,"schema":{"type":"string","title":"Environment"}},{"name":"app_name","in":"path","required":true,"schema":{"type":"string","title":"App Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisteredAppResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dock/registered-apps/{environment}/{app_name}/disable":{"post":{"tags":["dock-registry"],"summary":"Disable App","operationId":"disable_app_api_dock_registered_apps__environment___app_name__disable_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"environment","in":"path","required":true,"schema":{"type":"string","title":"Environment"}},{"name":"app_name","in":"path","required":true,"schema":{"type":"string","title":"App Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisteredAppResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dock/registered-apps/{environment}/{app_name}/enable":{"post":{"tags":["dock-registry"],"summary":"Enable App","operationId":"enable_app_api_dock_registered_apps__environment___app_name__enable_post","security":[{"Auth0AuthorizationCode":[]}],"parameters":[{"name":"environment","in":"path","required":true,"schema":{"type":"string","title":"Environment"}},{"name":"app_name","in":"path","required":true,"schema":{"type":"string","title":"App Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisteredAppResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/svc-registry/apps":{"post":{"tags":["svc-registry","svc-registry"],"summary":"Register App","operationId":"register_app_api_svc_registry_apps_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterAppRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisteredAppResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/svc-registry/apps/{app_name}/modules":{"post":{"tags":["svc-registry","svc-registry"],"summary":"Add Application Modules","description":"Idempotently link one or more modules to a primary or companion app.\n\nFor each ``moduleId`` this checks whether the\n``application -> parent_application -> module`` edge already exists in\nFGA and writes only the missing edges. The canonical\n``applications.modules`` list is merged (never pruned) to match.\n\nResolves ``{appName}`` against the durable ``applications`` catalog so\nboth deployed apps and the FGA-only companions declared via a host's\n``fgaOnlyApplications`` block can be targeted by the same endpoint.\nThe catalog row must already exist — a missing application is rejected\nwith 404; create one via ``POST /api/svc-registry/apps``.\n\nAuthorization (:func:`resolve_module_caller`) accepts either:\n\n* a **service account bound to the target application** — its own\n  runtime SA *or* its Terraform SA — exactly like the sharable-entity\n  runtime API. Ownership is enforced via\n  :func:`_resolve_target_application_for_caller`, so a companion can\n  only be extended by its host's runtime/Terraform SA (matched on\n  ``runtime_owner_application_id``); a caller bound to a different\n  application is rejected with 403.\n* a **human ``gcp-developers@gocrisp.com`` member**, authorized for\n  any target (the same operator path as ``POST /apps``).","operationId":"add_application_modules_api_svc_registry_apps__app_name__modules_post","parameters":[{"name":"app_name","in":"path","required":true,"schema":{"type":"string","title":"App Name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddApplicationModulesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddApplicationModulesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/svc-registry/sharable-entities":{"post":{"tags":["svc-registry","svc-registry"],"summary":"Create Sharable Entity","description":"Link a new ``sharable_entity`` to the caller's registered module instance.","operationId":"create_sharable_entity_api_svc_registry_sharable_entities_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSharableEntityRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/svc-registry/sharable-entities/{module}/{resource_id}":{"delete":{"tags":["svc-registry","svc-registry"],"summary":"Remove Sharable Entity","description":"Unlink a ``sharable_entity`` from the caller's registered module instance.","operationId":"remove_sharable_entity_api_svc_registry_sharable_entities__module___resource_id__delete","parameters":[{"name":"module","in":"path","required":true,"schema":{"type":"string","title":"Module"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","title":"Resource Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/svc-registry/sharable-entities/{scope_kind}/{scope_id}/{application_id}/{module}/{resource_id}":{"delete":{"tags":["svc-registry","svc-registry"],"summary":"Remove Scoped Sharable Entity","description":"Unlink a sharable entity from a concrete module instance path.","operationId":"remove_scoped_sharable_entity_api_svc_registry_sharable_entities__scope_kind___scope_id___application_id___module___resource_id__delete","parameters":[{"name":"scope_kind","in":"path","required":true,"schema":{"type":"string","title":"Scope Kind"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"module","in":"path","required":true,"schema":{"type":"string","title":"Module"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","title":"Resource Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/svc-registry/sharable-entities/{module}/{resource_id}/grants":{"post":{"tags":["svc-registry","svc-registry"],"summary":"Grant Sharable Entity Access","description":"Write a direct access grant on a registered-scope sharable entity.","operationId":"grant_sharable_entity_access_api_svc_registry_sharable_entities__module___resource_id__grants_post","parameters":[{"name":"module","in":"path","required":true,"schema":{"type":"string","title":"Module"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","title":"Resource Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityGrantRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityGrantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/svc-registry/sharable-entities/{scope_kind}/{scope_id}/{application_id}/{module}/{resource_id}/grants":{"post":{"tags":["svc-registry","svc-registry"],"summary":"Grant Scoped Sharable Entity Access","description":"Write a direct access grant on a concrete scoped sharable entity path.","operationId":"grant_scoped_sharable_entity_access_api_svc_registry_sharable_entities__scope_kind___scope_id___application_id___module___resource_id__grants_post","parameters":[{"name":"scope_kind","in":"path","required":true,"schema":{"type":"string","title":"Scope Kind"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"module","in":"path","required":true,"schema":{"type":"string","title":"Module"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","title":"Resource Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityGrantRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityGrantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/svc-registry/sharable-entities/{module}/{resource_id}/grants/revoke":{"post":{"tags":["svc-registry","svc-registry"],"summary":"Revoke Sharable Entity Access","description":"Revoke a direct access grant on a registered-scope sharable entity.","operationId":"revoke_sharable_entity_access_api_svc_registry_sharable_entities__module___resource_id__grants_revoke_post","parameters":[{"name":"module","in":"path","required":true,"schema":{"type":"string","title":"Module"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","title":"Resource Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityGrantRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityGrantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/svc-registry/sharable-entities/{scope_kind}/{scope_id}/{application_id}/{module}":{"post":{"tags":["svc-registry","svc-registry"],"summary":"Create Scoped Sharable Entity","description":"Link a sharable entity under a concrete module instance path.","operationId":"create_scoped_sharable_entity_api_svc_registry_sharable_entities__scope_kind___scope_id___application_id___module__post","parameters":[{"name":"scope_kind","in":"path","required":true,"schema":{"type":"string","title":"Scope Kind"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"module","in":"path","required":true,"schema":{"type":"string","title":"Module"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScopedSharableEntityRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/svc-registry/sharable-entities/{scope_kind}/{scope_id}/{application_id}/{module}/{resource_id}/grants/revoke":{"post":{"tags":["svc-registry","svc-registry"],"summary":"Revoke Scoped Sharable Entity Access","description":"Revoke a direct access grant on a concrete scoped sharable entity path.","operationId":"revoke_scoped_sharable_entity_access_api_svc_registry_sharable_entities__scope_kind___scope_id___application_id___module___resource_id__grants_revoke_post","parameters":[{"name":"scope_kind","in":"path","required":true,"schema":{"type":"string","title":"Scope Kind"}},{"name":"scope_id","in":"path","required":true,"schema":{"type":"string","title":"Scope Id"}},{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"module","in":"path","required":true,"schema":{"type":"string","title":"Module"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","title":"Resource Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityGrantRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharableEntityGrantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/svc-registry/federation-manifest":{"get":{"tags":["svc-registry","svc-registry"],"summary":"Get Federation Manifest","description":"Return federated app names and per-app LB metadata for Terraform.\n\nNo authentication — this is infrastructure metadata consumed by\nTerraform's ``external`` data source at plan time.  The response\nincludes ``federated_apps`` (sorted names) and ``apps`` (per-app\n``applicationId``, project, and Cloud Run metadata). ``applicationId`` is\nthe catalog id and the GitHub repo slug under ``gocrisp/``; it can differ\nfrom the dock federation ``appName`` (e.g. ``app-aistudio`` →\n``crisp-ai-assistant``).","operationId":"get_federation_manifest_api_svc_registry_federation_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Federation Manifest Api Svc Registry Federation Manifest Get"}}}}}}},"/api/webhooks/auth0":{"post":{"tags":["webhooks"],"summary":"Auth0 Log Stream Webhook","description":"Receive an Auth0 Log Stream event and sync to FGA + Postgres.","operationId":"auth0_log_stream_webhook_api_webhooks_auth0_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Auth0 Log Stream Webhook Api Webhooks Auth0 Post"}}}}}}},"/api/internal/auth0-actions/impersonation-authorize":{"post":{"tags":["auth0-actions"],"summary":"Impersonation Authorize","description":"Authorize an in-flight token exchange after resolving the actor identity.","operationId":"impersonation_authorize_api_internal_auth0_actions_impersonation_authorize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Auth0ImpersonationAuthorizationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Auth0ImpersonationAuthorizationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/escalation/revoke":{"post":{"tags":["internal"],"summary":"Revoke Escalation Task","operationId":"revoke_escalation_task_api_internal_escalation_revoke_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalRevokeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Revoke Escalation Task Api Internal Escalation Revoke Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccessFlags":{"properties":{"target":{"type":"string","title":"Target"},"canRead":{"type":"boolean","title":"Canread","default":false},"canEdit":{"type":"boolean","title":"Canedit","default":false},"canOwn":{"type":"boolean","title":"Canown","default":false},"canReadData":{"type":"boolean","title":"Canreaddata","default":false},"canEditData":{"type":"boolean","title":"Caneditdata","default":false},"canOwnData":{"type":"boolean","title":"Canowndata","default":false}},"type":"object","required":["target"],"title":"AccessFlags","description":"Six standard FGA relations materialized as booleans."},"AccountApplicationSummary":{"properties":{"applicationId":{"type":"string","title":"Applicationid"},"displayName":{"type":"string","title":"Displayname"},"isSystem":{"type":"boolean","title":"Issystem","default":false},"installed":{"type":"boolean","title":"Installed","default":false},"installSource":{"anyOf":[{"type":"string","enum":["account","portfolio"]},{"type":"null"}],"title":"Installsource"},"defaultInstallation":{"type":"boolean","title":"Defaultinstallation","default":false}},"type":"object","required":["applicationId","displayName"],"title":"AccountApplicationSummary"},"AccountApplicationsListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AccountApplicationSummary"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"AccountApplicationsListResponse"},"AccountCreateRequest":{"properties":{"id":{"type":"string","maxLength":128,"title":"Id"},"accountNumber":{"type":"string","maxLength":128,"minLength":1,"title":"Accountnumber"},"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name"},"shortName":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Shortname"},"isTest":{"type":"boolean","title":"Istest","default":false},"businessDashboardsEnabled":{"type":"boolean","title":"Businessdashboardsenabled","default":false},"segment":{"type":"string","maxLength":128,"minLength":1,"title":"Segment"},"status":{"type":"string","maxLength":32,"title":"Status","default":"active"},"portfolioId":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Portfolioid"}},"type":"object","required":["id","accountNumber","name","segment"],"title":"AccountCreateRequest"},"AccountDetail":{"properties":{"id":{"type":"string","title":"Id"},"accountNumber":{"type":"string","title":"Accountnumber"},"name":{"type":"string","title":"Name"},"shortName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shortname"},"isTest":{"type":"boolean","title":"Istest"},"businessDashboardsEnabled":{"type":"boolean","title":"Businessdashboardsenabled"},"segment":{"type":"string","title":"Segment"},"status":{"type":"string","title":"Status"},"portfolioId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portfolioid"},"portfolioName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portfolioname"},"fgaSyncStatus":{"type":"string","title":"Fgasyncstatus"},"fgaLastError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fgalasterror"},"fgaLastReconciledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Fgalastreconciledat"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updatedat"},"syncStatus":{"$ref":"#/components/schemas/ScopeSyncStatus"}},"type":"object","required":["id","accountNumber","name","isTest","businessDashboardsEnabled","segment","status","fgaSyncStatus","syncStatus"],"title":"AccountDetail"},"AccountMemberApplicationRoleAssignment":{"properties":{"applicationId":{"type":"string","title":"Applicationid"},"displayName":{"type":"string","title":"Displayname"},"roleBundles":{"items":{"$ref":"#/components/schemas/AccountMemberRoleBundleOption"},"type":"array","title":"Rolebundles"}},"type":"object","required":["applicationId","displayName"],"title":"AccountMemberApplicationRoleAssignment"},"AccountMemberApplicationRolesResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AccountMemberApplicationRoleAssignment"},"type":"array","title":"Items"}},"type":"object","title":"AccountMemberApplicationRolesResponse"},"AccountMemberRoleBundleOption":{"properties":{"slug":{"type":"string","title":"Slug"},"displayName":{"type":"string","title":"Displayname"},"assigned":{"type":"boolean","title":"Assigned","default":false},"controlRoles":{"items":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},"type":"array","title":"Controlroles"},"dataRoles":{"items":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},"type":"array","title":"Dataroles"}},"type":"object","required":["slug","displayName"],"title":"AccountMemberRoleBundleOption"},"AccountSummary":{"properties":{"id":{"type":"string","title":"Id"},"accountNumber":{"type":"string","title":"Accountnumber"},"name":{"type":"string","title":"Name"},"shortName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shortname"},"isTest":{"type":"boolean","title":"Istest"},"businessDashboardsEnabled":{"type":"boolean","title":"Businessdashboardsenabled"},"segment":{"type":"string","title":"Segment"},"status":{"type":"string","title":"Status"},"portfolioId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portfolioid"},"portfolioName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portfolioname"},"fgaSyncStatus":{"type":"string","title":"Fgasyncstatus"},"fgaLastError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fgalasterror"},"fgaLastReconciledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Fgalastreconciledat"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updatedat"}},"type":"object","required":["id","accountNumber","name","isTest","businessDashboardsEnabled","segment","status","fgaSyncStatus"],"title":"AccountSummary"},"AccountUpdateRequest":{"properties":{"accountNumber":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Accountnumber"},"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Name"},"shortName":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Shortname"},"isTest":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Istest"},"businessDashboardsEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Businessdashboardsenabled"},"segment":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Segment"},"status":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Status"},"portfolioId":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Portfolioid"}},"type":"object","title":"AccountUpdateRequest"},"AccountsListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AccountSummary"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"AccountsListResponse"},"AddApplicationModuleEntry":{"properties":{"id":{"type":"string","maxLength":128,"title":"Id"},"attachments":{"anyOf":[{"items":{"$ref":"#/components/schemas/ApplicationAttachmentDeclaration"},"type":"array"},{"type":"null"}],"title":"Attachments"}},"type":"object","required":["id"],"title":"AddApplicationModuleEntry","description":"One module addition, optionally with explicit attachment materialization."},"AddApplicationModulesRequest":{"properties":{"moduleIds":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Moduleids"},"modules":{"anyOf":[{"items":{"$ref":"#/components/schemas/AddApplicationModuleEntry"},"type":"array"},{"type":"null"}],"title":"Modules"}},"type":"object","title":"AddApplicationModulesRequest","description":"Payload accepted by ``POST /api/svc-registry/apps/{appName}/modules``.\n\n``moduleIds`` is the set of authorization modules to (idempotently)\nlink to the application catalog. Each id is a lowercase slug,\nmatching the ``authorizationModules`` convention used by registration."},"AddApplicationModulesResponse":{"properties":{"applicationId":{"type":"string","title":"Applicationid"},"modules":{"items":{"type":"string"},"type":"array","title":"Modules"},"added":{"items":{"type":"string"},"type":"array","title":"Added"},"alreadyPresent":{"items":{"type":"string"},"type":"array","title":"Alreadypresent"}},"type":"object","required":["applicationId"],"title":"AddApplicationModulesResponse","description":"Result of an idempotent module-addition request.\n\n``modules`` is the full module list on the application catalog after\nthe operation. ``added`` and ``alreadyPresent`` partition the\nrequested ids by whether a new ``application -> module`` edge was\nwritten or already existed in FGA."},"AddGroupMemberRequest":{"properties":{"userId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Userid","description":"Auth0 user_id to add."},"serviceAccountId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serviceaccountid","description":"Dock service account id to add."},"groupId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Groupid","description":"Nested-group id whose members become transitive members of the parent."}},"type":"object","title":"AddGroupMemberRequest","description":"Body for adding a member (user, service account, or nested group) to a group."},"AddOrganizationMemberRequest":{"properties":{"userId":{"type":"string","title":"Userid"}},"type":"object","required":["userId"],"title":"AddOrganizationMemberRequest","description":"Operator-supplied payload for adding an *existing* Auth0 user to an org.\n\nDistinct from :class:`app.platform.users.models.CreatePlatformUserRequest`,\nwhich provisions a brand-new Auth0 user. Here the ``userId`` must already\nexist in the connected tenant; the service resolves it, adds the membership\nin Auth0 (the source of truth), and mirrors the matching ``user → member →\norganization`` tuple into FGA."},"AppRegistration":{"properties":{"appName":{"type":"string","title":"Appname"},"applicationId":{"type":"string","title":"Applicationid"},"baseUrl":{"type":"string","title":"Baseurl"},"environment":{"type":"string","title":"Environment"},"updatedAt":{"type":"string","title":"Updatedat"},"sourceProjectId":{"type":"string","title":"Sourceprojectid"},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"attachmentScope":{"anyOf":[{"type":"string","enum":["platform","portfolio","account"]},{"type":"null"}],"title":"Attachmentscope"},"attachmentId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attachmentid"},"runtimeServiceAccountEmail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runtimeserviceaccountemail"},"authorizationModules":{"items":{"type":"string"},"type":"array","title":"Authorizationmodules"}},"type":"object","required":["appName","applicationId","baseUrl","environment","updatedAt","sourceProjectId"],"title":"AppRegistration"},"ApplicationAttachmentDeclaration":{"properties":{"scope":{"$ref":"#/components/schemas/AttachmentTarget"},"modules":{"items":{"type":"string"},"type":"array","title":"Modules"},"source":{"type":"string","enum":["registration","operator","dynamic"],"title":"Source","default":"registration"}},"type":"object","required":["scope"],"title":"ApplicationAttachmentDeclaration","description":"App/module instances to materialize at one target or target set."},"ApplicationAttachmentSummary":{"properties":{"scope":{"$ref":"#/components/schemas/AttachmentTargetSummary"},"modules":{"items":{"type":"string"},"type":"array","title":"Modules"},"source":{"type":"string","title":"Source","default":"registration"},"materialized":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Materialized"}},"type":"object","required":["scope"],"title":"ApplicationAttachmentSummary"},"ApplicationPlatformModulesResponse":{"properties":{"platformId":{"type":"string","title":"Platformid","default":"crisp"},"modules":{"items":{"type":"string"},"type":"array","title":"Modules"}},"type":"object","title":"ApplicationPlatformModulesResponse","description":"Modules an application has materialized at the ``platform:crisp`` scope.\n\nSourced from OpenFGA (``module_instance:platform/crisp/<app>/<module>``)\nrather than the catalog ``attachments`` policy: a platform-published\nsemantic model can be materialized at platform scope while the catalog row\nrecords only an all-account fan-out (a companion re-registration overwrites\nits attachment policy). Surfacing these lets the operator manage platform-\nscoped models from the application's Global instance tab."},"ApplicationRoleBundleSummary":{"properties":{"applicationId":{"type":"string","title":"Applicationid"},"slug":{"type":"string","title":"Slug"},"source":{"type":"string","enum":["app","system"],"title":"Source"},"displayName":{"type":"string","title":"Displayname"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"application":{"items":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},"type":"array","title":"Application"},"modules":{"additionalProperties":{"items":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},"type":"array"},"type":"object","title":"Modules"},"fgaSyncStatus":{"type":"string","title":"Fgasyncstatus"},"fgaLastError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fgalasterror"},"fgaLastReconciledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Fgalastreconciledat"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updatedat"}},"type":"object","required":["applicationId","slug","source","displayName","fgaSyncStatus"],"title":"ApplicationRoleBundleSummary","description":"API response shape for a single application role bundle."},"ApplicationRoleBundlesListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ApplicationRoleBundleSummary"},"type":"array","title":"Items"}},"type":"object","title":"ApplicationRoleBundlesListResponse"},"AssignAuth0RolesRequest":{"properties":{"roleIds":{"items":{"type":"string"},"type":"array","maxItems":50,"title":"Roleids"},"organizationId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organizationid"}},"type":"object","title":"AssignAuth0RolesRequest","description":"Role ids to add to (or remove from) a user via the Management API.\n\n``organization_id`` selects the grant scope: when omitted (or blank) the\nroles are granted tenant-wide (user-level); when set, the roles are granted\nto the user as a member of that organization."},"AttachmentTarget":{"properties":{"kind":{"type":"string","enum":["platform","portfolio","account","all_accounts"],"title":"Kind"},"id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Id"},"ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ids"},"all":{"type":"boolean","title":"All","default":false}},"type":"object","required":["kind"],"title":"AttachmentTarget","description":"One attachment target in a registration payload.\n\n``kind='account', all=true`` is accepted as wire-compatible sugar for the\nnon-FGA fan-out target ``kind='all_accounts'``. Concrete FGA scopes require\neither ``id`` or ``ids``."},"AttachmentTargetSummary":{"properties":{"kind":{"type":"string","title":"Kind"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ids"},"all":{"type":"boolean","title":"All","default":false}},"type":"object","required":["kind"],"title":"AttachmentTargetSummary"},"Auth0ImpersonationAuthorizationRequest":{"properties":{"actorUserId":{"type":"string","minLength":1,"title":"Actoruserid","description":"Auth0 ``user_id`` of the admin (token's ``sub``)."},"actorEmail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actoremail","description":"Convenience for logging."},"targetUserId":{"type":"string","minLength":1,"title":"Targetuserid","description":"Auth0 ``user_id`` to impersonate."},"targetEmail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetemail","description":"Convenience for logging."},"mode":{"type":"string","enum":["full","readonly"],"title":"Mode","default":"full"}},"type":"object","required":["actorUserId","targetUserId"],"title":"Auth0ImpersonationAuthorizationRequest","description":"Body for ``POST /api/internal/auth0-actions/impersonation-authorize``.\n\nSent by the Auth0 Custom Action whose source lives at\n``infra/app/auth0/auth0_actions/impersonation_token_exchange.js``.\nThe Action passes through the actor / subject identifiers and the\nrequested mode so the dock can resolve the canonical actor principal\nbefore letting the exchange complete."},"Auth0ImpersonationAuthorizationResponse":{"properties":{"allow":{"type":"boolean","title":"Allow"},"actorPrincipal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actorprincipal"},"impersonationModuleTarget":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Impersonationmoduletarget"},"targetUserId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetuserid"},"targetEmail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetemail"},"targetPrincipal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetprincipal"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["allow"],"title":"Auth0ImpersonationAuthorizationResponse","description":"Body returned to the Auth0 Custom Action.\n\nThe Action treats any non-2xx response (or ``allow=false``) as a denial\nand rejects the exchange. When ``allow`` is true, ``target_*`` fields\ncarry the dock-resolved canonical target identity for the Post-Login\nAction to stamp onto the minted token — caller-supplied target email /\nprincipal values on the OAuth body are never trusted."},"Auth0Role":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["id","name"],"title":"Auth0Role","description":"A single Auth0 tenant role (Management API ``/roles`` entry)."},"Auth0RoleAssignment":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"organizationId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organizationid"},"organizationName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organizationname"}},"type":"object","required":["id","name"],"title":"Auth0RoleAssignment","description":"A role granted to a user at a specific scope.\n\n``organization_id`` is ``None`` for a tenant-wide (user-level) grant, or the\norganization id when the role was granted to the user as a member of that\norganization. ``organization_name`` carries the org's display label so the\nUI can render an organization chip next to org-scoped grants."},"Auth0RoleOrganization":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"}},"type":"object","required":["id"],"title":"Auth0RoleOrganization","description":"An organization the user belongs to, offered as a role-grant scope.\n\nRoles can be granted to a user either tenant-wide (user-level) or scoped to\none of the organizations they are a member of; this is one such grant\ntarget. ``display_name`` is the preferred UI label, falling back to\n``name`` when unset."},"CompanionAppDetail":{"properties":{"applicationId":{"type":"string","title":"Applicationid"},"appName":{"type":"string","title":"Appname"},"displayName":{"type":"string","title":"Displayname"},"runtimeOwnerApplicationId":{"type":"string","title":"Runtimeownerapplicationid"},"hostAppName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hostappname"},"hostEnvironment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hostenvironment"},"authorizationModules":{"items":{"type":"string"},"type":"array","title":"Authorizationmodules"},"roleBundles":{"items":{"$ref":"#/components/schemas/RoleBundleDeclaration"},"type":"array","title":"Rolebundles"}},"type":"object","required":["applicationId","appName","displayName","runtimeOwnerApplicationId"],"title":"CompanionAppDetail","description":"Pruned detail view for an FGA-only companion application.\n\nA companion has no deployment metadata (no environment, domains, routing,\nor runtime service account), so only the FGA-relevant facets apply:\nauthorization modules, role bundles, and application access (served\nseparately via the scope-principals endpoint). ``host_app_name`` /\n``host_environment`` link back to the owning host's dock detail page."},"CompanionAppSummary":{"properties":{"applicationId":{"type":"string","title":"Applicationid"},"appName":{"type":"string","title":"Appname"},"displayName":{"type":"string","title":"Displayname"}},"type":"object","required":["applicationId","appName","displayName"],"title":"CompanionAppSummary","description":"Lightweight marker for an FGA-only companion owned by a host app.\n\nCompanions have no ``registered_apps`` row, so the dock detail page\nsurfaces them off the host's catalog row (``runtime_owner_application_id``)\npurely so operators can navigate into the companion's own FGA namespace."},"CreateApplicationRoleBundleRequest":{"properties":{"slug":{"type":"string","maxLength":128,"minLength":1,"title":"Slug"},"displayName":{"type":"string","maxLength":256,"minLength":1,"title":"Displayname"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"application":{"items":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},"type":"array","title":"Application"},"modules":{"additionalProperties":{"items":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},"type":"array"},"type":"object","title":"Modules"}},"type":"object","required":["slug","displayName"],"title":"CreateApplicationRoleBundleRequest"},"CreateGlobalRoleRequest":{"properties":{"slug":{"type":"string","maxLength":128,"minLength":1,"title":"Slug"},"displayName":{"type":"string","maxLength":256,"minLength":1,"title":"Displayname"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"referencedBundles":{"items":{"$ref":"#/components/schemas/GlobalRoleBundleRef"},"type":"array","title":"Referencedbundles"},"overrides":{"additionalProperties":{"$ref":"#/components/schemas/GlobalRoleAppPermissions"},"type":"object","title":"Overrides"}},"type":"object","required":["slug","displayName"],"title":"CreateGlobalRoleRequest"},"CreateOrganizationRequest":{"properties":{"name":{"type":"string","title":"Name"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"}},"type":"object","required":["name"],"title":"CreateOrganizationRequest","description":"Operator-supplied payload for creating an Auth0 organization.\n\nOnly ``name`` is required: it is the organization's unique slug (the value\nAuth0 stores as ``name`` and uses in invitation/login URLs), so it is\nconstrained to lowercase letters, digits, hyphens, and underscores.\n``displayName`` is the human-friendly label shown in the UI; when omitted\nAuth0 falls back to the slug. Auth0 remains the source of truth — it\nrejects duplicate or otherwise-invalid names with a 409/400 the service\nsurfaces back to the operator."},"CreatePlatformGroupRequest":{"properties":{"groupId":{"type":"string","title":"Groupid","description":"Short id (letters, digits, hyphen/underscore)."},"displayName":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Displayname","description":"Human-readable name. Defaults to the group id when omitted."}},"type":"object","required":["groupId"],"title":"CreatePlatformGroupRequest","description":"Body for creating a group under an organization."},"CreatePlatformUserRequest":{"properties":{"email":{"type":"string","title":"Email"},"organizationId":{"type":"string","title":"Organizationid"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"connection":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connection"},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"},"groupId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Groupid"}},"type":"object","required":["email","organizationId"],"title":"CreatePlatformUserRequest","description":"Operator-supplied payload for creating an Auth0 user and adding them to an org.\n\nOnly ``email`` and ``organizationId`` are required: the user is created in\na database connection (``connection``, defaulting to the tenant's standard\none) and immediately added to the organization. ``password`` is optional —\nwhen omitted the backend generates a strong random one and asks Auth0 to\nsend the verification email, so onboarding stays a single field for the\noperator while remaining a fully native Auth0 user.\n\n``groupId`` is optional — when provided the new user is also added to the\nspecified group immediately after creation and org membership."},"CreateScopedSharableEntityRequest":{"properties":{"resourceId":{"type":"string","maxLength":256,"title":"Resourceid"}},"type":"object","required":["resourceId"],"title":"CreateScopedSharableEntityRequest","description":"Payload for ``POST /sharable-entities/{scopeKind}/{scopeId}/{applicationId}/{module}``."},"CreateServiceAccountRequest":{"properties":{"id":{"type":"string","title":"Id","description":"Short id (letters, digits, hyphen/underscore)."},"displayName":{"type":"string","title":"Displayname","description":"Human-readable name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional description."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"GCP service account email (optional)."}},"type":"object","required":["id","displayName"],"title":"CreateServiceAccountRequest","description":"Body for creating a service account."},"CreateSharableEntityRequest":{"properties":{"resourceId":{"type":"string","maxLength":256,"title":"Resourceid"},"module":{"type":"string","maxLength":128,"title":"Module"}},"type":"object","required":["resourceId","module"],"title":"CreateSharableEntityRequest","description":"Payload for ``POST /api/svc-registry/sharable-entities``.\n\n``module`` must be one of the calling app's registered authorization\nmodules. ``resourceId`` is the app-defined identifier — it lives in\nthe ``sharable_entity:<scope>/<app>/<module>/<resource>`` FGA object,\nso it must be a single path segment."},"CrispEmployeeIdsResponse":{"properties":{"orgId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Orgid"},"userIds":{"items":{"type":"string"},"type":"array","title":"Userids"}},"type":"object","title":"CrispEmployeeIdsResponse","description":"FGA-expanded members of the Crisp Employees Auth0 organization.\n\n``org_id`` is ``APP_CRISP_EMPLOYEES_ORG_ID`` (empty/null when unset).\n``user_ids`` are the same principal ids ListUsers emits on scope user\nlists, so the hide-Crisp filter can match without round-tripping Auth0."},"DashboardStats":{"properties":{"total":{"type":"integer","title":"Total","default":0},"healthy":{"type":"integer","title":"Healthy","default":0},"degraded":{"type":"integer","title":"Degraded","default":0},"pending":{"type":"integer","title":"Pending","default":0},"disabled":{"type":"integer","title":"Disabled","default":0}},"type":"object","title":"DashboardStats","description":"Summary cards for the /dock dashboard."},"DefaultAccountInstallRequest":{"properties":{"installAcrossAllAccounts":{"type":"boolean","title":"Installacrossallaccounts"},"accountInstallModules":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Accountinstallmodules"}},"type":"object","required":["installAcrossAllAccounts"],"title":"DefaultAccountInstallRequest"},"DefaultAccountInstallResponse":{"properties":{"applicationId":{"type":"string","title":"Applicationid"},"installAcrossAllAccounts":{"type":"boolean","title":"Installacrossallaccounts"},"accountInstallModules":{"items":{"type":"string"},"type":"array","title":"Accountinstallmodules"}},"type":"object","required":["applicationId","installAcrossAllAccounts"],"title":"DefaultAccountInstallResponse"},"DockRegistryConfigResponse":{"properties":{"environment":{"type":"string","title":"Environment"}},"type":"object","required":["environment"],"title":"DockRegistryConfigResponse"},"EscalateAccountRequest":{"properties":{"durationHours":{"type":"integer","maximum":48.0,"minimum":1.0,"title":"Durationhours","default":4},"reason":{"type":"string","maxLength":200,"minLength":1,"title":"Reason"},"explanation":{"type":"string","maxLength":2000,"minLength":1,"title":"Explanation"}},"type":"object","required":["reason","explanation"],"title":"EscalateAccountRequest"},"EscalationAuditLogItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"accountId":{"type":"string","title":"Accountid"},"actorPrincipal":{"type":"string","title":"Actorprincipal"},"reason":{"type":"string","title":"Reason"},"explanation":{"type":"string","title":"Explanation"},"grantTime":{"type":"string","format":"date-time","title":"Granttime"},"grantDurationHours":{"type":"integer","title":"Grantdurationhours"},"expiresAt":{"type":"string","format":"date-time","title":"Expiresat"},"revokedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revokedat"}},"type":"object","required":["id","accountId","actorPrincipal","reason","explanation","grantTime","grantDurationHours","expiresAt"],"title":"EscalationAuditLogItem"},"EscalationAuditLogListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EscalationAuditLogItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"perPage":{"type":"integer","title":"Perpage"}},"type":"object","required":["items","total","page","perPage"],"title":"EscalationAuditLogListResponse"},"EscalationReasonsResponse":{"properties":{"suggestedReasons":{"items":{"type":"string"},"type":"array","title":"Suggestedreasons"}},"type":"object","required":["suggestedReasons"],"title":"EscalationReasonsResponse"},"EscalationStatusResponse":{"properties":{"isEscalated":{"type":"boolean","title":"Isescalated"},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expiresat"}},"type":"object","required":["isEscalated"],"title":"EscalationStatusResponse"},"FgaCheckExplanationResponse":{"properties":{"allowed":{"type":"boolean","title":"Allowed"},"user":{"type":"string","title":"User"},"relation":{"type":"string","title":"Relation"},"object":{"type":"string","title":"Object"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"nodes":{"items":{"$ref":"#/components/schemas/FgaExplainNode"},"type":"array","title":"Nodes"},"edges":{"items":{"$ref":"#/components/schemas/FgaExplainEdge"},"type":"array","title":"Edges"},"truncated":{"type":"boolean","title":"Truncated","default":false},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"}},"type":"object","required":["allowed","user","relation","object"],"title":"FgaCheckExplanationResponse","description":"Proof graph for how a principal obtained an FGA relation on an object."},"FgaCheckRequest":{"properties":{"objectType":{"type":"string","title":"Objecttype"},"objectId":{"type":"string","title":"Objectid"},"relation":{"type":"string","title":"Relation"}},"type":"object","required":["objectType","objectId","relation"],"title":"FgaCheckRequest","description":"Run an FGA ``check`` for a given principal against an arbitrary object."},"FgaCheckResponse":{"properties":{"allowed":{"type":"boolean","title":"Allowed"},"user":{"type":"string","title":"User"},"relation":{"type":"string","title":"Relation"},"object":{"type":"string","title":"Object"}},"type":"object","required":["allowed","user","relation","object"],"title":"FgaCheckResponse","description":"Result of an FGA ``check`` for a principal."},"FgaExplainEdge":{"properties":{"fromId":{"type":"string","title":"Fromid"},"toId":{"type":"string","title":"Toid"},"label":{"type":"string","title":"Label"}},"type":"object","required":["fromId","toId","label"],"title":"FgaExplainEdge","description":"A directed edge in an FGA access proof graph."},"FgaExplainNode":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"kind":{"type":"string","title":"Kind"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"}},"type":"object","required":["id","label","kind"],"title":"FgaExplainNode","description":"A node in an FGA access proof graph."},"FgaObjectCounts":{"properties":{"portfolios":{"type":"integer","title":"Portfolios"},"accounts":{"type":"integer","title":"Accounts"},"applications":{"type":"integer","title":"Applications"},"users":{"type":"integer","title":"Users"}},"type":"object","required":["portfolios","accounts","applications","users"],"title":"FgaObjectCounts","description":"Counts of distinct FGA objects/subjects per type.\n\nAll counts come from a single scan of the authorization store.\n``users`` counts distinct ``user:<id>`` subjects appearing in any\ntuple (i.e. anyone who has been granted any relation in FGA), not\nthe full Auth0 user directory."},"FgaOnlyApplicationDeclaration":{"properties":{"applicationId":{"type":"string","maxLength":128,"title":"Applicationid"},"appName":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Appname"},"displayName":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Displayname"},"authorizationModules":{"items":{"type":"string"},"type":"array","title":"Authorizationmodules"},"attachments":{"anyOf":[{"items":{"$ref":"#/components/schemas/ApplicationAttachmentDeclaration"},"type":"array"},{"type":"null"}],"title":"Attachments"},"keepExistingModules":{"type":"boolean","title":"Keepexistingmodules","default":false},"installAcrossAllAccounts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Installacrossallaccounts"},"accountInstallModules":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Accountinstallmodules"},"roleBundles":{"anyOf":[{"items":{"$ref":"#/components/schemas/RoleBundleDeclaration"},"type":"array"},{"type":"null"}],"title":"Rolebundles"}},"type":"object","required":["applicationId"],"title":"FgaOnlyApplicationDeclaration","description":"One companion FGA application declared from inside the host's manifest.\n\nA companion never gets a ``registered_apps`` row, never appears in\n``/api/apps`` or the LB federation manifest, and inherits the host's\nruntime service principal for bootstrap grants. It only exists in the\ndurable ``applications`` catalog so the host can manage a separate\nnamespace of modules + sharable entities under its own deployment."},"GlobalRoleAppPermissions":{"properties":{"application":{"items":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},"type":"array","title":"Application"},"modules":{"additionalProperties":{"items":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},"type":"array"},"type":"object","title":"Modules"}},"type":"object","title":"GlobalRoleAppPermissions","description":"Effective or override permissions for one application within a global role."},"GlobalRoleBundleRef":{"properties":{"applicationId":{"type":"string","title":"Applicationid"},"bundleSlug":{"type":"string","title":"Bundleslug"}},"type":"object","required":["applicationId","bundleSlug"],"title":"GlobalRoleBundleRef"},"GlobalRoleSummary":{"properties":{"slug":{"type":"string","title":"Slug"},"displayName":{"type":"string","title":"Displayname"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"source":{"type":"string","const":"system","title":"Source","default":"system"},"referencedBundles":{"items":{"$ref":"#/components/schemas/GlobalRoleBundleRef"},"type":"array","title":"Referencedbundles"},"overrides":{"additionalProperties":{"$ref":"#/components/schemas/GlobalRoleAppPermissions"},"type":"object","title":"Overrides"},"effective":{"additionalProperties":{"$ref":"#/components/schemas/GlobalRoleAppPermissions"},"type":"object","title":"Effective"},"coveredApplicationIds":{"items":{"type":"string"},"type":"array","title":"Coveredapplicationids"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updatedat"}},"type":"object","required":["slug","displayName"],"title":"GlobalRoleSummary"},"GlobalRolesListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/GlobalRoleSummary"},"type":"array","title":"Items"}},"type":"object","title":"GlobalRolesListResponse"},"GroupAuthorizedObjectGrant":{"properties":{"id":{"type":"string","title":"Id"},"role":{"type":"string","title":"Role"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["id","role"],"title":"GroupAuthorizedObjectGrant","description":"One ``(object_id, role)`` entry on a group's authorized-objects panel.\n\n``name`` is the Postgres display name for accounts and portfolios when a\nmatching row exists. Other object types leave it unset so callers fall\nback to ``id``."},"GroupAuthorizedObjectsResponse":{"properties":{"subject":{"type":"string","title":"Subject"},"objectsByType":{"additionalProperties":{"items":{"$ref":"#/components/schemas/GroupAuthorizedObjectGrant"},"type":"array"},"type":"object","title":"Objectsbytype"}},"type":"object","required":["subject"],"title":"GroupAuthorizedObjectsResponse","description":"Inverted view of FGA: every object a group has direct access to.\n\n``objects_by_type`` is keyed by **camelCase** FGA object types (so the JSON\npayload is ``applicationInstance`` / ``moduleInstance``); each value is the\ndeduplicated, alphabetically sorted list of grants where the principal is\n``group:{id}#member``."},"GroupsLookupRequest":{"properties":{"groupIds":{"items":{"type":"string"},"type":"array","maxItems":500,"title":"Groupids"}},"type":"object","title":"GroupsLookupRequest","description":"Batch metadata lookup for group ids referenced elsewhere in the UI."},"GroupsLookupResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PlatformGroup"},"type":"array","title":"Items"}},"type":"object","title":"GroupsLookupResponse","description":"Resolved group rows keyed by the ``id`` values in the request."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImpersonationConfigResponse":{"properties":{"canExchange":{"type":"boolean","title":"Canexchange"},"impersonationModuleTarget":{"type":"string","title":"Impersonationmoduletarget"},"softTtlSeconds":{"type":"integer","title":"Softttlseconds"}},"type":"object","required":["canExchange","impersonationModuleTarget","softTtlSeconds"],"title":"ImpersonationConfigResponse","description":"Tells the SPA whether the current admin is allowed to impersonate.\n\nLets the SPA gate the \"Impersonate\" row action on a single boolean without\nfiring a separate FGA check from the browser."},"ImpersonationExchangeRequest":{"properties":{"targetUserId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Targetuserid","description":"Auth0 ``user_id`` of the user to impersonate. Preferred over ``targetEmail`` because it disambiguates the same-email-across-connections case. Always available from the Users page row."},"targetEmail":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Targetemail","description":"Email of the user to impersonate. Used when ``targetUserId`` is not provided; the dock backend resolves it via ``GET /users-by-email`` and refuses with 409 if the email matches multiple Auth0 users."},"targetName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetname","description":"Optional display name passed through for the SPA banner."},"mode":{"type":"string","enum":["full","readonly"],"title":"Mode","description":"``full`` permits writes; ``readonly`` blocks every non-safe HTTP method server-side.","default":"full"}},"type":"object","title":"ImpersonationExchangeRequest","description":"Body for ``POST /api/platform/impersonation/exchange``.\n\nAccepts ``targetUserId`` (preferred) or ``targetEmail`` (fallback).\nThe Users table always has the Auth0 ``user_id`` available on each\nrow, so the SPA's primary path passes it through verbatim — that\nkeeps the lookup unambiguous (``GET /users/{user_id}``) and avoids\nthe same-email-across-connections 409 that the by-email lookup\nraises when, for example, an admin has both\n``Username-Password-Authentication`` and ``google-oauth2`` accounts\non the same address. ``targetEmail`` is preserved for callers that\ndon't have the user_id (a future search-by-email surface, scripted\ncallers, etc.) and for display purposes alongside the dialog."},"ImpersonationExchangeResponse":{"properties":{"accessToken":{"type":"string","title":"Accesstoken"},"tokenType":{"type":"string","title":"Tokentype","default":"Bearer"},"expiresIn":{"type":"integer","title":"Expiresin"},"expiresAt":{"type":"integer","title":"Expiresat"},"issuedAt":{"type":"integer","title":"Issuedat"},"targetUserId":{"type":"string","title":"Targetuserid"},"targetEmail":{"type":"string","title":"Targetemail"},"targetName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Targetname"},"actorEmail":{"type":"string","title":"Actoremail"},"mode":{"type":"string","enum":["full","readonly"],"title":"Mode"}},"type":"object","required":["accessToken","expiresIn","expiresAt","issuedAt","targetUserId","targetEmail","actorEmail","mode"],"title":"ImpersonationExchangeResponse","description":"Body returned by ``POST /api/platform/impersonation/exchange``.\n\nThe SPA hands this to ``setImpersonationSession`` from\n``@crisp/ui-toolkit/auth``, which writes it into\n``window.CrispRuntime.impersonation`` so every React root on the page\n(host + federated remotes) starts using the impersonation token on\nits next ``getAccessTokenSilently()`` call. ``expires_at`` /\n``issued_at`` are seconds-since-epoch from the dock backend's wall\nclock so the SPA can compute ``expiresAt: expiresAt * 1000`` without\ntrusting its own clock."},"InstallApplicationTargetsRequest":{"properties":{"accountIds":{"items":{"type":"string"},"type":"array","title":"Accountids"},"portfolioId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portfolioid"},"platformId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platformid"}},"type":"object","title":"InstallApplicationTargetsRequest"},"InstallApplicationTargetsResponse":{"properties":{"applicationId":{"type":"string","title":"Applicationid"},"accountsInstalled":{"items":{"type":"string"},"type":"array","title":"Accountsinstalled"},"portfolioInstalled":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portfolioinstalled"},"platformInstalled":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platforminstalled"}},"type":"object","required":["applicationId"],"title":"InstallApplicationTargetsResponse"},"InternalRevokeRequest":{"properties":{"accountId":{"type":"string","minLength":1,"title":"Accountid"},"actorPrincipal":{"type":"string","minLength":1,"title":"Actorprincipal"}},"type":"object","required":["accountId","actorPrincipal"],"title":"InternalRevokeRequest"},"LegacyAccountsSyncRequest":{"properties":{"legacyToken":{"type":"string","title":"Legacytoken","default":""}},"type":"object","title":"LegacyAccountsSyncRequest","description":"Operator-supplied input for a legacy account sync.\n\n``legacy_token`` is a bearer token for the legacy ``platform.gocrisp.com``\nGraphQL gateway, pasted by the operator at sync time. That gateway is the\nold Firebase-backed API and does not accept the dock's Auth0 tokens, so the\ncredential cannot be derived from the request's own ``Authorization`` header.\nWhen omitted, the backend falls back to the configured\n``LEGACY_PLATFORM_BEARER_TOKEN``."},"LegacyAccountsSyncResponse":{"properties":{"created":{"type":"integer","title":"Created","default":0},"updated":{"type":"integer","title":"Updated","default":0},"total":{"type":"integer","title":"Total","default":0},"accounts":{"items":{"$ref":"#/components/schemas/AccountSummary"},"type":"array","title":"Accounts"}},"type":"object","title":"LegacyAccountsSyncResponse"},"LinkAuth0UserRequest":{"properties":{"linkedUserId":{"type":"string","title":"Linkeduserid"}},"type":"object","required":["linkedUserId"],"title":"LinkAuth0UserRequest","description":"Operator payload for joining another Auth0 login to this person."},"Manifest":{"properties":{"name":{"type":"string","title":"Name"},"version":{"type":"string","title":"Version"},"isEnabled":{"type":"boolean","title":"Isenabled"},"isEmbeddable":{"type":"boolean","title":"Isembeddable"}},"type":"object","required":["name","version","isEnabled","isEmbeddable"],"title":"Manifest"},"MembershipAccount":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"inherited":{"type":"boolean","title":"Inherited","default":false}},"type":"object","required":["id"],"title":"MembershipAccount","description":"Minimal account reference embedded in a membership record."},"MembershipGroup":{"properties":{"id":{"type":"string","title":"Id"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"organizationId":{"type":"string","title":"Organizationid"},"organizationName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organizationname"},"inherited":{"type":"boolean","title":"Inherited","default":false}},"type":"object","required":["id","organizationId"],"title":"MembershipGroup","description":"Minimal group reference embedded in a membership record."},"MembershipOrganization":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"inherited":{"type":"boolean","title":"Inherited","default":false}},"type":"object","required":["id","name"],"title":"MembershipOrganization","description":"Minimal organization reference embedded in a membership record."},"MembershipPortfolio":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"inherited":{"type":"boolean","title":"Inherited","default":false}},"type":"object","required":["id"],"title":"MembershipPortfolio","description":"Minimal portfolio reference embedded in a membership record."},"Organization":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"brandingLogoUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brandinglogourl"},"brandingColorsPrimary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brandingcolorsprimary"},"memberCount":{"type":"integer","title":"Membercount","default":0},"groups":{"items":{"$ref":"#/components/schemas/OrganizationGroup"},"type":"array","title":"Groups"}},"type":"object","required":["id","name"],"title":"Organization","description":"A single organization in the connected Auth0 tenant."},"OrganizationGroup":{"properties":{"id":{"type":"string","title":"Id"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"}},"type":"object","required":["id"],"title":"OrganizationGroup","description":"Minimal group reference embedded in an organization record."},"OrganizationScope":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["id"],"title":"OrganizationScope","description":"A portfolio or account an organization's members can read."},"OrganizationScopeAccessResponse":{"properties":{"portfolios":{"items":{"$ref":"#/components/schemas/OrganizationScope"},"type":"array","title":"Portfolios"},"accounts":{"items":{"$ref":"#/components/schemas/OrganizationScope"},"type":"array","title":"Accounts"}},"type":"object","title":"OrganizationScopeAccessResponse","description":"Scopes an organization already has effective ``reader`` access to.\n\nUsed by the grant-access UI to hide portfolios/accounts the organization\ncan already read, and by the organization detail page to list the scopes\nthe org's members inherit reader access on."},"OrganizationSummary":{"properties":{"id":{"type":"string","title":"Id"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"controlRole":{"anyOf":[{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},{"type":"null"}],"title":"Controlrole"},"dataRole":{"anyOf":[{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},{"type":"null"}],"title":"Datarole"},"minimumControlRole":{"anyOf":[{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},{"type":"null"}],"title":"Minimumcontrolrole"},"minimumDataRole":{"anyOf":[{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},{"type":"null"}],"title":"Minimumdatarole"}},"type":"object","required":["id"],"title":"OrganizationSummary"},"OrganizationsListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Organization"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0},"page":{"type":"integer","title":"Page","default":0},"perPage":{"type":"integer","title":"Perpage","default":50}},"type":"object","title":"OrganizationsListResponse","description":"Paginated list envelope for :class:`Organization`."},"PlatformAccessResponse":{"properties":{"user":{"type":"string","title":"User"},"applicationInstance":{"$ref":"#/components/schemas/AccessFlags"},"modules":{"additionalProperties":{"$ref":"#/components/schemas/AccessFlags"},"type":"object","title":"Modules"},"sharableEntities":{"additionalProperties":{"additionalProperties":{"$ref":"#/components/schemas/SharableEntityAccess"},"type":"object"},"type":"object","title":"Sharableentities"}},"type":"object","required":["user","applicationInstance"],"title":"PlatformAccessResponse","description":"Caller-effective dock operator grants for SPA hinting."},"PlatformApplicationDeployment":{"properties":{"environment":{"type":"string","title":"Environment"},"baseUrl":{"type":"string","title":"Baseurl"},"publicDomain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publicdomain"},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"},"sourceProjectId":{"type":"string","title":"Sourceprojectid"},"updatedAt":{"type":"string","title":"Updatedat"}},"type":"object","required":["environment","baseUrl","sourceProjectId","updatedAt"],"title":"PlatformApplicationDeployment"},"PlatformApplicationDetailStats":{"properties":{"deploymentCount":{"type":"integer","title":"Deploymentcount","default":0}},"type":"object","title":"PlatformApplicationDetailStats","description":"Per-application FGA counts for the operator detail surface.\n\n``deployment_count`` is the number of ``application_instance`` objects\nwhose ``base_definition`` is this application's catalog object — the same\ninversion used by :class:`PlatformApplicationStats` at catalog scope."},"PlatformApplicationModule":{"properties":{"id":{"type":"string","title":"Id"},"catalogObject":{"type":"string","title":"Catalogobject"},"runtimeObject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runtimeobject"},"installedAcrossAllAccounts":{"type":"boolean","title":"Installedacrossallaccounts","default":false}},"type":"object","required":["id","catalogObject"],"title":"PlatformApplicationModule"},"PlatformApplicationStats":{"properties":{"applicationCount":{"type":"integer","title":"Applicationcount","default":0},"moduleCount":{"type":"integer","title":"Modulecount","default":0},"deploymentCount":{"type":"integer","title":"Deploymentcount","default":0}},"type":"object","title":"PlatformApplicationStats","description":"Counts of authorization objects derived from the OpenFGA store.\n\nThese are intentionally separate from the catalog list response: the list\nis sourced from the Postgres ``applications`` table + live registrations\n(what we know *should* exist), while these counts reflect what is *actually*\npresent in FGA. They can drift while a registration / reconcile is in\nflight; the operator dashboard surfaces both numbers so drift is visible."},"PlatformApplicationSummary":{"properties":{"appName":{"type":"string","title":"Appname"},"applicationId":{"type":"string","title":"Applicationid"},"displayName":{"type":"string","title":"Displayname"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"environments":{"items":{"type":"string"},"type":"array","title":"Environments"},"deploymentCount":{"type":"integer","title":"Deploymentcount"},"deployments":{"items":{"$ref":"#/components/schemas/PlatformApplicationDeployment"},"type":"array","title":"Deployments"},"attachmentScope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attachmentscope"},"attachmentId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attachmentid"},"attachmentLabel":{"type":"string","title":"Attachmentlabel"},"avatarUrl":{"type":"string","title":"Avatarurl"},"servicePrincipal":{"type":"string","title":"Serviceprincipal"},"catalogObject":{"type":"string","title":"Catalogobject"},"runtimeObject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runtimeobject"},"moduleCount":{"type":"integer","title":"Modulecount"},"modules":{"items":{"$ref":"#/components/schemas/PlatformApplicationModule"},"type":"array","title":"Modules"},"attachments":{"items":{"$ref":"#/components/schemas/ApplicationAttachmentSummary"},"type":"array","title":"Attachments"},"isSystem":{"type":"boolean","title":"Issystem","default":false},"installAcrossAllAccounts":{"type":"boolean","title":"Installacrossallaccounts","default":false},"accountInstallModules":{"items":{"type":"string"},"type":"array","title":"Accountinstallmodules"},"runtimeOwnerApplicationId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runtimeownerapplicationid"}},"type":"object","required":["appName","applicationId","displayName","deploymentCount","attachmentLabel","avatarUrl","servicePrincipal","catalogObject","moduleCount"],"title":"PlatformApplicationSummary"},"PlatformApplicationsListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PlatformApplicationSummary"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"PlatformApplicationsListResponse"},"PlatformGroup":{"properties":{"id":{"type":"string","title":"Id"},"organizationId":{"type":"string","title":"Organizationid"},"organizationName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organizationname"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"memberCount":{"type":"integer","title":"Membercount","default":0},"isAllMembers":{"type":"boolean","title":"Isallmembers","default":false},"fgaSyncStatus":{"type":"string","title":"Fgasyncstatus","default":"pending"},"fgaLastError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fgalasterror"},"fgaLastReconciledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Fgalastreconciledat"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updatedat"}},"type":"object","required":["id","organizationId"],"title":"PlatformGroup","description":"A group belonging to an organization, with FGA mirror status."},"PlatformGroupDetail":{"properties":{"id":{"type":"string","title":"Id"},"organizationId":{"type":"string","title":"Organizationid"},"organizationName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organizationname"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"members":{"items":{"$ref":"#/components/schemas/PlatformGroupMember"},"type":"array","title":"Members"}},"type":"object","required":["id","organizationId"],"title":"PlatformGroupDetail","description":"Full group detail with members."},"PlatformGroupMember":{"properties":{"userId":{"type":"string","title":"Userid"},"kind":{"type":"string","enum":["user","service_account","group"],"title":"Kind","default":"user"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"organizationId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organizationid"},"organizationName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organizationname"}},"type":"object","required":["userId"],"title":"PlatformGroupMember","description":"A direct member of a group (human user, service account, or nested group)."},"PlatformGroupsListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PlatformGroup"},"type":"array","title":"Items"}},"type":"object","title":"PlatformGroupsListResponse","description":"List envelope for groups under an organization."},"PlatformGroupsPaginatedResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PlatformGroup"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"PlatformGroupsPaginatedResponse","description":"Paginated list envelope for groups with search support."},"PlatformServiceAccount":{"properties":{"id":{"type":"string","title":"Id"},"displayName":{"type":"string","title":"Displayname"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"gcpUniqueId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gcpuniqueid"},"fgaSyncStatus":{"type":"string","title":"Fgasyncstatus","default":"pending"},"fgaLastError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fgalasterror"},"fgaLastReconciledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Fgalastreconciledat"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updatedat"}},"type":"object","required":["id","displayName"],"title":"PlatformServiceAccount","description":"A service account with FGA mirror status."},"PlatformServiceAccountsPaginatedResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PlatformServiceAccount"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"PlatformServiceAccountsPaginatedResponse","description":"Paginated list envelope for service accounts."},"PlatformSummaryResponse":{"properties":{"fga":{"$ref":"#/components/schemas/FgaObjectCounts"},"truncated":{"type":"boolean","title":"Truncated"}},"type":"object","required":["fga","truncated"],"title":"PlatformSummaryResponse","description":"Aggregated platform-overview counts sourced from FGA."},"PortfolioApplicationsListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ScopeApplicationSummary"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"PortfolioApplicationsListResponse"},"PortfolioCreateRequest":{"properties":{"id":{"type":"string","maxLength":128,"title":"Id"},"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name"},"segment":{"type":"string","maxLength":128,"minLength":1,"title":"Segment"}},"type":"object","required":["id","name","segment"],"title":"PortfolioCreateRequest"},"PortfolioDetail":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"segment":{"type":"string","title":"Segment"},"accountCount":{"type":"integer","title":"Accountcount","default":0},"fgaSyncStatus":{"type":"string","title":"Fgasyncstatus"},"fgaLastError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fgalasterror"},"fgaLastReconciledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Fgalastreconciledat"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updatedat"},"accounts":{"items":{"$ref":"#/components/schemas/AccountSummary"},"type":"array","title":"Accounts"},"syncStatus":{"$ref":"#/components/schemas/ScopeSyncStatus"}},"type":"object","required":["id","name","segment","fgaSyncStatus","syncStatus"],"title":"PortfolioDetail"},"PortfolioSummary":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"segment":{"type":"string","title":"Segment"},"accountCount":{"type":"integer","title":"Accountcount","default":0},"fgaSyncStatus":{"type":"string","title":"Fgasyncstatus"},"fgaLastError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fgalasterror"},"fgaLastReconciledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Fgalastreconciledat"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updatedat"}},"type":"object","required":["id","name","segment","fgaSyncStatus"],"title":"PortfolioSummary"},"PortfolioUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Name"},"segment":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Segment"}},"type":"object","title":"PortfolioUpdateRequest"},"PortfoliosListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PortfolioSummary"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"PortfoliosListResponse"},"PrincipalRef":{"properties":{"kind":{"type":"string","enum":["user","service_account","group","organization"],"title":"Kind"},"id":{"type":"string","maxLength":256,"minLength":1,"title":"Id"}},"type":"object","required":["kind","id"],"title":"PrincipalRef","description":"Subject of an access grant on a sharable entity."},"PrincipalSearchResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PrincipalSummary"},"type":"array","title":"Items"},"page":{"type":"integer","title":"Page"},"perPage":{"type":"integer","title":"Perpage"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","page","perPage","total"],"title":"PrincipalSearchResponse"},"PrincipalSummary":{"properties":{"kind":{"type":"string","enum":["user","service_account","group","organization"],"title":"Kind"},"id":{"type":"string","title":"Id"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle"}},"type":"object","required":["kind","id"],"title":"PrincipalSummary"},"PublicAccount":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"shortName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shortname"}},"type":"object","required":["id","name"],"title":"PublicAccount"},"PutScopePrincipalRequest":{"properties":{"role":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"],"title":"Role"}},"type":"object","required":["role"],"title":"PutScopePrincipalRequest"},"RegisterAppRequest":{"properties":{"appName":{"type":"string","maxLength":128,"title":"Appname"},"applicationId":{"type":"string","maxLength":128,"title":"Applicationid"},"environment":{"type":"string","maxLength":32,"title":"Environment"},"baseUrl":{"type":"string","maxLength":512,"title":"Baseurl"},"sourceProjectId":{"type":"string","maxLength":128,"title":"Sourceprojectid"},"runtimeServiceAccountEmail":{"type":"string","maxLength":256,"title":"Runtimeserviceaccountemail"},"runtimeServiceAccountUniqueId":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Runtimeserviceaccountuniqueid"},"terraformServiceAccountUniqueId":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Terraformserviceaccountuniqueid"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"attachmentScope":{"type":"string","enum":["platform","portfolio","account"],"title":"Attachmentscope"},"attachmentId":{"type":"string","maxLength":128,"title":"Attachmentid"},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"cloudRunServiceName":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Cloudrunservicename"},"publicDomain":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Publicdomain"},"backendServiceName":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Backendservicename"},"authorizationModules":{"items":{"type":"string"},"type":"array","title":"Authorizationmodules"},"attachments":{"anyOf":[{"items":{"$ref":"#/components/schemas/ApplicationAttachmentDeclaration"},"type":"array"},{"type":"null"}],"title":"Attachments"},"keepExistingModules":{"type":"boolean","title":"Keepexistingmodules","default":false},"installAcrossAllAccounts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Installacrossallaccounts"},"accountInstallModules":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Accountinstallmodules"},"roleBundles":{"anyOf":[{"items":{"$ref":"#/components/schemas/RoleBundleDeclaration"},"type":"array"},{"type":"null"}],"title":"Rolebundles"},"fgaOnlyApplications":{"items":{"$ref":"#/components/schemas/FgaOnlyApplicationDeclaration"},"type":"array","title":"Fgaonlyapplications"}},"type":"object","required":["appName","applicationId","environment","baseUrl","sourceProjectId","runtimeServiceAccountEmail","attachmentScope","attachmentId"],"title":"RegisterAppRequest","description":"Payload accepted by ``POST /api/svc-registry/apps``."},"RegisteredAppResponse":{"properties":{"id":{"type":"integer","title":"Id"},"appName":{"type":"string","title":"Appname"},"applicationId":{"type":"string","title":"Applicationid"},"environment":{"type":"string","title":"Environment"},"baseUrl":{"type":"string","title":"Baseurl"},"sourceProjectId":{"type":"string","title":"Sourceprojectid"},"runtimeServiceAccountEmail":{"type":"string","title":"Runtimeserviceaccountemail"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"attachmentScope":{"type":"string","title":"Attachmentscope"},"attachmentId":{"type":"string","title":"Attachmentid"},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"authorizationModules":{"items":{"type":"string"},"type":"array","title":"Authorizationmodules"},"installAcrossAllAccounts":{"type":"boolean","title":"Installacrossallaccounts","default":false},"accountInstallModules":{"items":{"type":"string"},"type":"array","title":"Accountinstallmodules"},"roleBundles":{"items":{"$ref":"#/components/schemas/RoleBundleDeclaration"},"type":"array","title":"Rolebundles"},"companions":{"items":{"$ref":"#/components/schemas/CompanionAppSummary"},"type":"array","title":"Companions"},"isEnabled":{"type":"boolean","title":"Isenabled","default":true},"backendServiceName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backendservicename"},"publicDomain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publicdomain"},"cloudRunServiceName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cloudrunservicename"},"catalogStatus":{"type":"string","title":"Catalogstatus"},"routingStatus":{"type":"string","title":"Routingstatus"},"lastError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lasterror"},"publishedBy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publishedby"},"publishedByKind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publishedbykind"},"lastPublishedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastpublishedat"},"lastReconciledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastreconciledat"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updatedat"}},"type":"object","required":["id","appName","applicationId","environment","baseUrl","sourceProjectId","runtimeServiceAccountEmail","attachmentScope","attachmentId","catalogStatus","routingStatus"],"title":"RegisteredAppResponse","description":"Single registered-app row as returned to callers."},"RegisteredAppSummary":{"properties":{"id":{"type":"integer","title":"Id"},"appName":{"type":"string","title":"Appname"},"applicationId":{"type":"string","title":"Applicationid"},"environment":{"type":"string","title":"Environment"},"baseUrl":{"type":"string","title":"Baseurl"},"publicDomain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publicdomain"},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"},"sourceProjectId":{"type":"string","title":"Sourceprojectid"},"runtimeServiceAccountEmail":{"type":"string","title":"Runtimeserviceaccountemail"},"isEnabled":{"type":"boolean","title":"Isenabled","default":true},"catalogStatus":{"type":"string","title":"Catalogstatus"},"routingStatus":{"type":"string","title":"Routingstatus"},"lastError":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lasterror"},"lastPublishedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastpublishedat"},"lastReconciledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastreconciledat"}},"type":"object","required":["id","appName","applicationId","environment","baseUrl","sourceProjectId","runtimeServiceAccountEmail","catalogStatus","routingStatus"],"title":"RegisteredAppSummary","description":"Lightweight view for the dashboard table."},"RegisteredAppsListResponse":{"properties":{"stats":{"$ref":"#/components/schemas/DashboardStats"},"apps":{"items":{"$ref":"#/components/schemas/RegisteredAppSummary"},"type":"array","title":"Apps"}},"type":"object","required":["stats","apps"],"title":"RegisteredAppsListResponse"},"ResyncApplicationResponse":{"properties":{"applicationId":{"type":"string","title":"Applicationid"},"bundles":{"items":{"$ref":"#/components/schemas/ResyncBundleEntry"},"type":"array","title":"Bundles"},"instances":{"$ref":"#/components/schemas/ResyncInstanceSummary"},"moduleInstances":{"$ref":"#/components/schemas/ResyncModuleInstanceSummary"}},"type":"object","required":["applicationId"],"title":"ResyncApplicationResponse"},"ResyncBundleEntry":{"properties":{"slug":{"type":"string","title":"Slug"},"source":{"type":"string","title":"Source"},"writesApplied":{"type":"integer","title":"Writesapplied"},"deletesApplied":{"type":"integer","title":"Deletesapplied"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["slug","source","writesApplied","deletesApplied"],"title":"ResyncBundleEntry"},"ResyncInstanceSummary":{"properties":{"scopes":{"type":"integer","title":"Scopes","default":0},"writesApplied":{"type":"integer","title":"Writesapplied","default":0},"failed":{"type":"boolean","title":"Failed","default":false},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"}},"type":"object","title":"ResyncInstanceSummary","description":"Phase-2 scoped role_bundle_instance backfill outcome (per /resync)."},"ResyncModuleInstanceSummary":{"properties":{"scopes":{"type":"integer","title":"Scopes","default":0},"mirroredAccounts":{"type":"integer","title":"Mirroredaccounts","default":0},"writesApplied":{"type":"integer","title":"Writesapplied","default":0},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"}},"type":"object","title":"ResyncModuleInstanceSummary","description":"module_instance structural backfill outcome (per /resync).\n\nWrites any missing per-scope ``module_instance`` plumbing for the app's\nfull catalog module set on every installed scope, so an instance-level data\ngrant propagates to every module without a manual re-install (DOCK-259)."},"RoleBundleAssignmentsResponse":{"properties":{"principals":{"items":{"$ref":"#/components/schemas/RoleBundlePrincipalRef"},"type":"array","title":"Principals"}},"type":"object","title":"RoleBundleAssignmentsResponse","description":"Which principals hold a single application role bundle on a scope."},"RoleBundleDeclaration":{"properties":{"slug":{"type":"string","maxLength":128,"minLength":1,"title":"Slug"},"displayName":{"type":"string","maxLength":256,"minLength":1,"title":"Displayname"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description"},"application":{"items":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},"type":"array","title":"Application"},"modules":{"additionalProperties":{"items":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},"type":"array"},"type":"object","title":"Modules"}},"type":"object","required":["slug","displayName"],"title":"RoleBundleDeclaration","description":"Single role-bundle entry inside an app's registration / seed payload.\n\nThe same shape backs both ``RegisterAppRequest.role_bundles`` and explicit\nJSON seed payloads. Validation enforces the slug format and the set of\nlegal roles so the dock can reject bad app payloads before any FGA write is\nattempted."},"RoleBundlePrincipalRef":{"properties":{"kind":{"type":"string","enum":["user","group","organization"],"title":"Kind"},"id":{"type":"string","title":"Id"}},"type":"object","required":["kind","id"],"title":"RoleBundlePrincipalRef","description":"A principal (user, group, or organization) that holds a role bundle directly."},"ScopeApplicationModuleSummary":{"properties":{"moduleId":{"type":"string","title":"Moduleid"},"displayName":{"type":"string","title":"Displayname"},"installed":{"type":"boolean","title":"Installed","default":false},"installSource":{"anyOf":[{"type":"string","enum":["account","portfolio"]},{"type":"null"}],"title":"Installsource"}},"type":"object","required":["moduleId","displayName"],"title":"ScopeApplicationModuleSummary"},"ScopeApplicationModulesListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ScopeApplicationModuleSummary"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"ScopeApplicationModulesListResponse"},"ScopeApplicationSummary":{"properties":{"applicationId":{"type":"string","title":"Applicationid"},"displayName":{"type":"string","title":"Displayname"},"isSystem":{"type":"boolean","title":"Issystem","default":false},"installed":{"type":"boolean","title":"Installed","default":false}},"type":"object","required":["applicationId","displayName"],"title":"ScopeApplicationSummary"},"ScopeGlobalRolePrincipalRef":{"properties":{"principalKind":{"type":"string","enum":["user","group","organization"],"title":"Principalkind","default":"user"},"principalId":{"type":"string","title":"Principalid"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["principalId"],"title":"ScopeGlobalRolePrincipalRef"},"ScopeGlobalRolePrincipalsResponse":{"properties":{"principals":{"items":{"$ref":"#/components/schemas/ScopeGlobalRolePrincipalRef"},"type":"array","title":"Principals"}},"type":"object","title":"ScopeGlobalRolePrincipalsResponse"},"ScopeGlobalRoleSummary":{"properties":{"slug":{"type":"string","title":"Slug"},"displayName":{"type":"string","title":"Displayname"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"coveredApplicationIds":{"items":{"type":"string"},"type":"array","title":"Coveredapplicationids"},"available":{"type":"boolean","title":"Available","default":false},"missingApplicationIds":{"items":{"type":"string"},"type":"array","title":"Missingapplicationids"},"assignedPrincipalCount":{"type":"integer","title":"Assignedprincipalcount","default":0}},"type":"object","required":["slug","displayName"],"title":"ScopeGlobalRoleSummary"},"ScopeGlobalRolesListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ScopeGlobalRoleSummary"},"type":"array","title":"Items"}},"type":"object","title":"ScopeGlobalRolesListResponse"},"ScopeGroupsResponse":{"properties":{"groups":{"items":{"$ref":"#/components/schemas/PlatformGroup"},"type":"array","title":"Groups"},"readerOrganizations":{"items":{"$ref":"#/components/schemas/ScopeReaderOrganization"},"type":"array","title":"Readerorganizations"}},"type":"object","title":"ScopeGroupsResponse","description":"Groups tab payload for portfolio/account scope detail views."},"ScopePrincipalGrant":{"properties":{"kind":{"type":"string","enum":["user","service_account","group","organization"],"title":"Kind"},"id":{"type":"string","title":"Id"},"role":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"],"title":"Role"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"inheritance":{"type":"string","enum":["direct","portfolio","platform"],"title":"Inheritance","default":"direct"},"sourceScopeKind":{"anyOf":[{"type":"string","enum":["platform","portfolio","account","application"]},{"type":"null"}],"title":"Sourcescopekind"},"sourceScopeId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sourcescopeid"}},"type":"object","required":["kind","id","role"],"title":"ScopePrincipalGrant","description":"A role granted on a scope to a principal, read from stored tuples.\n\nThe service currently emits only ``inheritance=\"direct\"`` grants (the tuple\nlives on the scope itself). The ``source_scope_*`` fields are reserved for a\nfuture affordance that surfaces parent-scope-inherited grants (e.g. the\n\"inherited from …\" view the auth-ux PortfolioView uses); they are populated\nonly for stored-tuple reads. For *effective* access expanded via FGA\nListUsers use :class:`ScopeReaderUser`, which omits them rather than\nreporting a misleading ``inheritance=\"direct\"``."},"ScopePrincipalMutationResult":{"properties":{"status":{"type":"string","title":"Status"},"principalsAffected":{"items":{"type":"string"},"type":"array","title":"Principalsaffected"}},"type":"object","required":["status"],"title":"ScopePrincipalMutationResult"},"ScopePrincipalsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ScopePrincipalGrant"},"type":"array","title":"Items"}},"type":"object","title":"ScopePrincipalsResponse"},"ScopeReaderOrganization":{"properties":{"id":{"type":"string","title":"Id"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"}},"type":"object","required":["id"],"title":"ScopeReaderOrganization","description":"Organization with reader-or-higher access on a portfolio/account scope."},"ScopeReaderUser":{"properties":{"kind":{"type":"string","enum":["user","service_account","group","organization"],"title":"Kind"},"id":{"type":"string","title":"Id"},"role":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"],"title":"Role"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"directOwner":{"type":"boolean","title":"Directowner","default":false},"organizationIds":{"items":{"type":"string"},"type":"array","title":"Organizationids"}},"type":"object","required":["kind","id","role"],"title":"ScopeReaderUser","description":"A human user with effective control-plane access on a portfolio/account scope.\n\nResolved via FGA ListUsers expansion, so the access may originate from a\ndirect tuple, a group, an organization, or a parent scope. There is no\nsingle stored tuple to attribute it to, so the ``inheritance`` /\n``source_scope_*`` fields carried by :class:`ScopePrincipalGrant` are\nintentionally omitted here.\n\n``direct_owner`` is true when this user holds a stored owner tuple on the\nscope itself (the onboarding \"account admin\" grant). Inherited owner via\n``parent_platform`` does not set this flag.\n\n``organization_ids`` lists reader-or-higher organizations on this scope\nthat the user belongs to, including membership reached only through a\ngroup that itself holds a reader-or-higher grant on the scope. The Users\nsidebar org filter matches a user when the selected org is in this list\n(the same invariant the Groups sidebar uses)."},"ScopeSyncStatus":{"properties":{"inSync":{"type":"boolean","title":"Insync"},"reconciled":{"type":"boolean","title":"Reconciled","default":false},"missingTuples":{"items":{"$ref":"#/components/schemas/ScopeTuple"},"type":"array","title":"Missingtuples"},"extraTuples":{"items":{"$ref":"#/components/schemas/ScopeTuple"},"type":"array","title":"Extratuples"},"writesAttempted":{"items":{"$ref":"#/components/schemas/ScopeTuple"},"type":"array","title":"Writesattempted"},"deletesAttempted":{"items":{"$ref":"#/components/schemas/ScopeTuple"},"type":"array","title":"Deletesattempted"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["inSync"],"title":"ScopeSyncStatus"},"ScopeTuple":{"properties":{"user":{"type":"string","title":"User"},"relation":{"type":"string","title":"Relation"},"object":{"type":"string","title":"Object"}},"type":"object","required":["user","relation","object"],"title":"ScopeTuple"},"ScopeUsersResponse":{"properties":{"users":{"items":{"$ref":"#/components/schemas/ScopeReaderUser"},"type":"array","title":"Users"}},"type":"object","title":"ScopeUsersResponse","description":"Users with effective control-plane access on a portfolio/account scope."},"ServiceAccountMembership":{"properties":{"serviceAccountId":{"type":"string","title":"Serviceaccountid"},"organizations":{"items":{"$ref":"#/components/schemas/MembershipOrganization"},"type":"array","title":"Organizations"},"groups":{"items":{"$ref":"#/components/schemas/MembershipGroup"},"type":"array","title":"Groups"},"portfolios":{"items":{"$ref":"#/components/schemas/MembershipPortfolio"},"type":"array","title":"Portfolios"},"accounts":{"items":{"$ref":"#/components/schemas/MembershipAccount"},"type":"array","title":"Accounts"}},"type":"object","required":["serviceAccountId"],"title":"ServiceAccountMembership","description":"FGA-derived organizations, groups, portfolios, and accounts for one service account.\n\nMirrors :class:`app.platform.users.models.UserMembership` but keyed by the\nservice account's canonical FGA subject segment (``gcpsa|{uniqueId}`` when\nGCP-mapped, else the dock id). Service accounts have no linked-subs concept,\nso there is no ``linked_subs`` field."},"SharableEntityAccess":{"properties":{"resourceId":{"type":"string","title":"Resourceid"},"target":{"type":"string","title":"Target"},"canRead":{"type":"boolean","title":"Canread","default":false},"canEdit":{"type":"boolean","title":"Canedit","default":false},"canOwn":{"type":"boolean","title":"Canown","default":false},"canReadData":{"type":"boolean","title":"Canreaddata","default":false},"canEditData":{"type":"boolean","title":"Caneditdata","default":false},"canOwnData":{"type":"boolean","title":"Canowndata","default":false}},"type":"object","required":["resourceId","target"],"title":"SharableEntityAccess","description":"Per-entity flags for relations not already covered by the parent module."},"SharableEntityGrant":{"properties":{"kind":{"type":"string","enum":["user","service_account","group","organization"],"title":"Kind"},"id":{"type":"string","title":"Id"},"role":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"],"title":"Role"},"principal":{"type":"string","title":"Principal"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle"}},"type":"object","required":["kind","id","role","principal"],"title":"SharableEntityGrant"},"SharableEntityGrantMutationRequest":{"properties":{"accountId":{"type":"string","title":"Accountid"},"applicationId":{"type":"string","title":"Applicationid"},"module":{"type":"string","maxLength":128,"title":"Module"},"resourceId":{"type":"string","maxLength":256,"title":"Resourceid"},"principal":{"$ref":"#/components/schemas/PrincipalRef"},"role":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"],"title":"Role"}},"type":"object","required":["accountId","applicationId","module","resourceId","principal","role"],"title":"SharableEntityGrantMutationRequest"},"SharableEntityGrantRequest":{"properties":{"principal":{"$ref":"#/components/schemas/PrincipalRef"},"role":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"],"title":"Role"}},"type":"object","required":["principal","role"],"title":"SharableEntityGrantRequest","description":"Payload for ``POST /api/svc-registry/sharable-entities/{module}/{resourceId}/grants``."},"SharableEntityGrantResponse":{"properties":{"objectId":{"type":"string","title":"Objectid"},"principal":{"$ref":"#/components/schemas/PrincipalRef"},"role":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"],"title":"Role"}},"type":"object","required":["objectId","principal","role"],"title":"SharableEntityGrantResponse","description":"Response body for grant / revoke operations on a sharable entity."},"SharableEntityResponse":{"properties":{"applicationId":{"type":"string","title":"Applicationid"},"module":{"type":"string","title":"Module"},"resourceId":{"type":"string","title":"Resourceid"},"scopeKind":{"type":"string","title":"Scopekind"},"scopeId":{"type":"string","title":"Scopeid"},"objectId":{"type":"string","title":"Objectid"}},"type":"object","required":["applicationId","module","resourceId","scopeKind","scopeId","objectId"],"title":"SharableEntityResponse","description":"Response body for sharable-entity creation / removal.\n\nReturns the resolved FGA identifiers so callers can audit exactly\nwhich tuple was written without re-deriving the path themselves."},"SharableEntitySharingState":{"properties":{"accountId":{"type":"string","title":"Accountid"},"applicationId":{"type":"string","title":"Applicationid"},"module":{"type":"string","title":"Module"},"resourceId":{"type":"string","title":"Resourceid"},"objectId":{"type":"string","title":"Objectid"},"grants":{"items":{"$ref":"#/components/schemas/SharableEntityGrant"},"type":"array","title":"Grants"},"managingOrganizations":{"items":{"$ref":"#/components/schemas/OrganizationSummary"},"type":"array","title":"Managingorganizations"},"capabilities":{"$ref":"#/components/schemas/SharingCapabilities"}},"type":"object","required":["accountId","applicationId","module","resourceId","objectId","grants","managingOrganizations","capabilities"],"title":"SharableEntitySharingState"},"SharingCapabilities":{"properties":{"canSearchPrincipals":{"type":"boolean","title":"Cansearchprincipals"},"canManageGrants":{"type":"boolean","title":"Canmanagegrants"}},"type":"object","required":["canSearchPrincipals","canManageGrants"],"title":"SharingCapabilities"},"SyncMembersResponse":{"properties":{"totalOrgs":{"type":"integer","title":"Totalorgs","default":0},"totalMembers":{"type":"integer","title":"Totalmembers","default":0},"tuplesAdded":{"type":"integer","title":"Tuplesadded","default":0},"tuplesDeleted":{"type":"integer","title":"Tuplesdeleted","default":0}},"type":"object","title":"SyncMembersResponse","description":"Result summary from an org-member FGA reconciliation."},"UninstallAllAccountsResponse":{"properties":{"applicationId":{"type":"string","title":"Applicationid"},"accountsUninstalled":{"type":"integer","title":"Accountsuninstalled","default":0},"installAcrossAllAccounts":{"type":"boolean","title":"Installacrossallaccounts","default":false}},"type":"object","required":["applicationId"],"title":"UninstallAllAccountsResponse"},"UpdateApplicationRoleBundleRequest":{"properties":{"displayName":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Displayname"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"application":{"anyOf":[{"items":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},"type":"array"},{"type":"null"}],"title":"Application"},"modules":{"anyOf":[{"additionalProperties":{"items":{"type":"string","enum":["reader","editor","owner","data_reader","data_editor","data_owner"]},"type":"array"},"type":"object"},{"type":"null"}],"title":"Modules"}},"type":"object","title":"UpdateApplicationRoleBundleRequest"},"UpdateGlobalRoleRequest":{"properties":{"displayName":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Displayname"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"referencedBundles":{"anyOf":[{"items":{"$ref":"#/components/schemas/GlobalRoleBundleRef"},"type":"array"},{"type":"null"}],"title":"Referencedbundles"},"overrides":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/GlobalRoleAppPermissions"},"type":"object"},{"type":"null"}],"title":"Overrides"}},"type":"object","title":"UpdateGlobalRoleRequest"},"UpdatePlatformGroupRequest":{"properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname","description":"New display name; null clears it."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"New description; null clears it."},"organizationId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organizationid","description":"Move group to this organization."}},"type":"object","title":"UpdatePlatformGroupRequest","description":"Body for patching a group's mutable attributes.\n\nAll fields are optional so the operator UI can submit a partial diff.\nA null value explicitly clears ``display_name`` / ``description``; an\nabsent key leaves it untouched. ``organization_id`` moves the group to\na different parent org (DB column + FGA org-link tuple).\n\nPydantic can't distinguish \"missing\" from \"null\" without help; we use\n``model_fields_set`` on the parsed instance to detect what the operator\nactually sent. See ``service.update_group``."},"UpdateServiceAccountRequest":{"properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Displayname","description":"Human-readable name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional description."},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"GCP service account email."}},"type":"object","title":"UpdateServiceAccountRequest","description":"Body for updating a service account (partial)."},"User":{"properties":{"userId":{"type":"string","title":"Userid"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"loginCount":{"type":"integer","title":"Logincount","default":0},"lastLogin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastlogin"},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Createdat"},"linkedSubs":{"items":{"type":"string"},"type":"array","title":"Linkedsubs"}},"type":"object","required":["userId"],"title":"User","description":"A single user in the connected Auth0 tenant.\n\nIdentity-only: organization and group memberships are looked up\non demand via :class:`UserMembership` so listing pages don't pay\nfor an FGA scan that only the detail pane will read.\n\nWhen multiple Auth0 users share one verified email they are collapsed\ninto one row; ``linked_subs`` lists every Auth0 ``user_id`` for that person."},"UserAuth0Roles":{"properties":{"userId":{"type":"string","title":"Userid"},"assigned":{"items":{"$ref":"#/components/schemas/Auth0RoleAssignment"},"type":"array","title":"Assigned"},"catalog":{"items":{"$ref":"#/components/schemas/Auth0Role"},"type":"array","title":"Catalog"},"organizations":{"items":{"$ref":"#/components/schemas/Auth0RoleOrganization"},"type":"array","title":"Organizations"}},"type":"object","required":["userId"],"title":"UserAuth0Roles","description":"Auth0 roles for a single user across the user and organization scopes.\n\n``assigned`` lists every current grant — tenant-wide (user-level) grants\nplus the roles granted to the user within each organization they belong to,\neach annotated with its scope. ``catalog`` is the full tenant role catalog\nthe UI offers in the \"add role\" picker, and ``organizations`` are the orgs\nthe user is a member of (the scopes at which roles can additionally be\ngranted). The UI computes which catalog roles are still assignable per scope\nfrom ``assigned``."},"UserEmailActionResponse":{"properties":{"userId":{"type":"string","title":"Userid"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"message":{"type":"string","title":"Message"}},"type":"object","required":["userId","message"],"title":"UserEmailActionResponse","description":"Result of triggering a native Auth0 account email for a single user.\n\nBoth the \"resend invite\" (email verification) and \"send password reset\"\nactions ask Auth0 to deliver the email through its own standard flow — the\ndock only kicks it off. The response confirms which user was targeted and\ncarries a short human-readable message the UI can surface as a toast/inline\nconfirmation."},"UserFgaCheckRequest":{"properties":{"objectType":{"type":"string","title":"Objecttype"},"objectId":{"type":"string","title":"Objectid"},"relation":{"type":"string","title":"Relation"},"linkedSub":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedsub"}},"type":"object","required":["objectType","objectId","relation"],"title":"UserFgaCheckRequest","description":"FGA check request for a user, optionally pinned to one linked login.\n\nWhen ``linked_sub`` is omitted the check runs person-level: the person's\nanchor sub is resolved and the subject is the bare ``user:<anchor>``, so\nthe result reflects access through any of their Auth0 logins (via\n``equivalent`` and the self-link). Checking the ``#linked`` userset as the\nsubject would miss bare ``*_user`` grants. When the operator picks one of\nthe person's linked logins, ``linked_sub`` carries that Auth0 sub and the\ncheck runs against the bare ``user:<linked_sub>`` subject — exactly what\nruntime authorization evaluates when that credential authenticates."},"UserLinkedSubsResponse":{"properties":{"userId":{"type":"string","title":"Userid"},"linkedSubs":{"items":{"type":"string"},"type":"array","title":"Linkedsubs"}},"type":"object","required":["userId"],"title":"UserLinkedSubsResponse","description":"FGA ``user.linked`` subs for one person after an operator link action."},"UserMembership":{"properties":{"userId":{"type":"string","title":"Userid"},"organizations":{"items":{"$ref":"#/components/schemas/MembershipOrganization"},"type":"array","title":"Organizations"},"groups":{"items":{"$ref":"#/components/schemas/MembershipGroup"},"type":"array","title":"Groups"},"portfolios":{"items":{"$ref":"#/components/schemas/MembershipPortfolio"},"type":"array","title":"Portfolios"},"accounts":{"items":{"$ref":"#/components/schemas/MembershipAccount"},"type":"array","title":"Accounts"},"linkedSubs":{"items":{"type":"string"},"type":"array","title":"Linkedsubs"}},"type":"object","required":["userId"],"title":"UserMembership","description":"FGA-derived organizations and groups for a single user.\n\n``linked_subs`` lists every Auth0 ``user_id`` that shares this person's\nemail — the subs joined under one FGA ``user.linked`` anchor so grants and\nmemberships follow the person across logins. It always contains at least the\nrequested ``user_id``; the detail pane surfaces the link only when there is\nmore than one."},"UsersListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/User"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total","default":0},"page":{"type":"integer","title":"Page","default":0},"perPage":{"type":"integer","title":"Perpage","default":50}},"type":"object","title":"UsersListResponse","description":"Paginated list envelope for :class:`User`."},"UsersLookupRequest":{"properties":{"userIds":{"items":{"type":"string"},"type":"array","maxItems":500,"title":"Userids"}},"type":"object","title":"UsersLookupRequest","description":"Batch identity lookup for Auth0 users referenced by id elsewhere in the UI."},"UsersLookupResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/User"},"type":"array","title":"Items"}},"type":"object","title":"UsersLookupResponse","description":"Resolved Auth0 users for the principal ids in the request.\n\nEach item's ``userId`` matches the requested FGA principal id, which may\ndiffer from Auth0's canonical id when identities were linked or aliased."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"Auth0AuthorizationCode":{"type":"oauth2","flows":{"authorizationCode":{"scopes":{"openid":"OpenID Connect sign-in","profile":"Read the signed-in user's profile","email":"Read the signed-in user's email address"},"authorizationUrl":"https://login.gocrisp.com/authorize","tokenUrl":"https://login.gocrisp.com/oauth/token"}}}}},"tags":[{"name":"health","description":"Liveness / readiness probes"},{"name":"manifest","description":"Application manifest and capabilities"},{"name":"registry","description":"Registered sub-app discovery"},{"name":"svc-registry","description":"Service-managed app registration control plane"},{"name":"dock-registry","description":"Internal registered-app dashboard"},{"name":"platform","description":"Tenant-wide operator surfaces (Auth0 orgs, …)"},{"name":"webhooks","description":"Auth0 Log Stream webhook receivers"}]}