components:
schemas:
AccessGrantItem:
properties:
created_at:
title: Created At
type: string
granted_by:
anyOf:
- format: uuid
type: string
- type: 'null'
title: Granted By
identity_id:
format: uuid
title: Identity Id
type: string
required:
- identity_id
- granted_by
- created_at
title: AccessGrantItem
type: object
AccessGrantList:
properties:
items:
items:
$ref: '#/components/schemas/AccessGrantItem'
title: Items
type: array
next_cursor:
anyOf:
- type: string
- type: 'null'
title: Next Cursor
required:
- items
title: AccessGrantList
type: object
AddMemberRequest:
properties:
identity_id:
format: uuid
title: Identity Id
type: string
required:
- identity_id
title: AddMemberRequest
type: object
AdminKeyCreate:
properties:
name:
title: Name
type: string
scopes:
items:
type: string
title: Scopes
type: array
required:
- name
title: AdminKeyCreate
type: object
AdminKeyResponse:
properties:
id:
format: uuid
title: Id
type: string
key:
anyOf:
- type: string
- type: 'null'
title: Key
key_prefix:
title: Key Prefix
type: string
revoked_at:
anyOf:
- type: string
- type: 'null'
title: Revoked At
scopes:
items:
type: string
title: Scopes
type: array
required:
- id
- key_prefix
- scopes
title: AdminKeyResponse
type: object
AdministeredApplicationItem:
properties:
application_id:
format: uuid
title: Application Id
type: string
client_id:
title: Client Id
type: string
name:
title: Name
type: string
required:
- application_id
- client_id
- name
title: AdministeredApplicationItem
type: object
AdministeredApplicationsList:
properties:
items:
items:
$ref: '#/components/schemas/AdministeredApplicationItem'
title: Items
type: array
required:
- items
title: AdministeredApplicationsList
type: object
AdministratorOut:
properties:
email:
anyOf:
- type: string
- type: 'null'
title: Email
identity_id:
format: uuid
title: Identity Id
type: string
status:
title: Status
type: string
required:
- identity_id
- email
- status
title: AdministratorOut
type: object
AdministratorSummary:
properties:
email:
anyOf:
- type: string
- type: 'null'
title: Email
identity_id:
format: uuid
title: Identity Id
type: string
status:
title: Status
type: string
required:
- identity_id
- email
- status
title: AdministratorSummary
type: object
AliasResponse:
properties:
alias_email:
title: Alias Email
type: string
alias_id:
format: uuid
title: Alias Id
type: string
verified_at:
format: date-time
title: Verified At
type: string
required:
- alias_id
- alias_email
- verified_at
title: AliasResponse
type: object
ApplicationAdminItem:
properties:
created_at:
format: date-time
title: Created At
type: string
email:
anyOf:
- type: string
- type: 'null'
title: Email
granted_by:
anyOf:
- format: uuid
type: string
- type: 'null'
title: Granted By
identity_id:
format: uuid
title: Identity Id
type: string
required:
- identity_id
- created_at
title: ApplicationAdminItem
type: object
ApplicationAdminList:
properties:
items:
items:
$ref: '#/components/schemas/ApplicationAdminItem'
title: Items
type: array
required:
- items
title: ApplicationAdminList
type: object
ApplicationCreate:
properties:
access_decision_cache_ttl_seconds:
default: 0
title: Access Decision Cache Ttl Seconds
type: integer
access_decision_endpoint:
anyOf:
- type: string
- type: 'null'
title: Access Decision Endpoint
access_decision_fail_open:
default: false
title: Access Decision Fail Open
type: boolean
access_decision_timeout_ms:
default: 3000
title: Access Decision Timeout Ms
type: integer
access_mode:
default: open
title: Access Mode
type: string
application_type:
default: spa
title: Application Type
type: string
client_id:
anyOf:
- type: string
- type: 'null'
description: Optional. The client identifier to register this application under, unique among
live applications in this tenant and permanent once set. Letters, digits, hyphen, period,
underscore and tilde only, 8-128 characters; may not begin 'hap_', which is reserved for identifiers
the platform issues. Omit it and one is generated. The same identifier may be used in other
tenants and in other installations.
title: Client Id
confidential:
default: false
title: Confidential
type: boolean
description:
anyOf:
- type: string
- type: 'null'
title: Description
home_url:
anyOf:
- type: string
- type: 'null'
title: Home Url
icon_url:
anyOf:
- type: string
- type: 'null'
title: Icon Url
invitation_return_url:
anyOf:
- type: string
- type: 'null'
title: Invitation Return Url
label:
anyOf:
- type: string
- type: 'null'
title: Label
name:
title: Name
type: string
redirect_uris:
items:
type: string
title: Redirect Uris
type: array
scopes:
items:
type: string
title: Scopes
type: array
self_enrollment_enabled:
default: false
title: Self Enrollment Enabled
type: boolean
show_in_menu:
anyOf:
- type: boolean
- type: 'null'
description: Whether this application appears on the application menu people see at /t/{slug}
and in GET /v1/me/applications. Omit it and a registration whose redirect URIs are all loopback
addresses - a command-line or machine client - is registered unlisted, and everything else
is registered listed. This setting never affects who may sign in or what they may do; it decides
only whether the application is offered as a destination.
title: Show In Menu
required:
- name
title: ApplicationCreate
type: object
ApplicationListItem:
properties:
access_mode:
title: Access Mode
type: string
application_type:
title: Application Type
type: string
client_id:
title: Client Id
type: string
confidential:
title: Confidential
type: boolean
description:
anyOf:
- type: string
- type: 'null'
description: One line saying what this application is for, shown on the menu; null when unset.
title: Description
disabled_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Disabled At
enabled:
default: true
title: Enabled
type: boolean
home_url:
anyOf:
- type: string
- type: 'null'
title: Home Url
icon_url:
anyOf:
- type: string
- type: 'null'
description: Absolute http(s) address of the image shown beside it on the menu; null when unset.
title: Icon Url
id:
format: uuid
title: Id
type: string
is_builtin:
default: false
title: Is Builtin
type: boolean
label:
anyOf:
- type: string
- type: 'null'
description: 'The administrator-set display label, or null when none is set. This is the stored
value, not the resolved one: an application with no label is shown to people under its `name`.
Contrast GET /v1/me/applications, whose `label` is already resolved.'
title: Label
name:
title: Name
type: string
post_logout_redirect_uris:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Post Logout Redirect Uris
redirect_uris:
items:
type: string
title: Redirect Uris
type: array
scopes:
items:
type: string
title: Scopes
type: array
secret_rotated_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Secret Rotated At
self_enrollment_enabled:
default: false
title: Self Enrollment Enabled
type: boolean
show_in_menu:
default: true
description: Whether this application appears on the application menu people see at /t/{slug}.
The built-in CLI client is registered unlisted in every tenant; a command-line or machine
client registered with only loopback redirect URIs is too, unless its registrar said otherwise.
title: Show In Menu
type: boolean
required:
- id
- client_id
- name
- application_type
- redirect_uris
- confidential
- access_mode
- scopes
title: ApplicationListItem
type: object
ApplicationResponse:
properties:
access_decision_secret:
anyOf:
- type: string
- type: 'null'
title: Access Decision Secret
access_mode:
default: open
title: Access Mode
type: string
client_id:
title: Client Id
type: string
client_secret:
anyOf:
- type: string
- type: 'null'
title: Client Secret
id:
format: uuid
title: Id
type: string
required:
- id
- client_id
title: ApplicationResponse
type: object
ApplicationStateResponse:
properties:
client_id:
title: Client Id
type: string
deleted_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Deleted At
disabled_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Disabled At
enabled:
title: Enabled
type: boolean
id:
format: uuid
title: Id
type: string
required:
- id
- client_id
- enabled
title: ApplicationStateResponse
type: object
ApplicationUpdate:
properties:
access_decision_cache_ttl_seconds:
anyOf:
- type: integer
- type: 'null'
title: Access Decision Cache Ttl Seconds
access_decision_endpoint:
anyOf:
- type: string
- type: 'null'
title: Access Decision Endpoint
access_decision_fail_open:
anyOf:
- type: boolean
- type: 'null'
title: Access Decision Fail Open
access_decision_timeout_ms:
anyOf:
- type: integer
- type: 'null'
title: Access Decision Timeout Ms
access_mode:
anyOf:
- type: string
- type: 'null'
title: Access Mode
description:
anyOf:
- type: string
- type: 'null'
title: Description
home_url:
anyOf:
- type: string
- type: 'null'
title: Home Url
icon_url:
anyOf:
- type: string
- type: 'null'
title: Icon Url
invitation_return_url:
anyOf:
- type: string
- type: 'null'
title: Invitation Return Url
label:
anyOf:
- type: string
- type: 'null'
title: Label
post_logout_redirect_uris:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Post Logout Redirect Uris
redirect_uris:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Redirect Uris
self_enrollment_enabled:
anyOf:
- type: boolean
- type: 'null'
title: Self Enrollment Enabled
show_in_menu:
anyOf:
- type: boolean
- type: 'null'
description: Whether this application appears on the application menu. Omit it, or send null,
and the stored value is left unchanged.
title: Show In Menu
title: ApplicationUpdate
type: object
AssignRequest:
properties:
expires_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Expires At
role_id:
format: uuid
title: Role Id
type: string
required:
- role_id
title: AssignRequest
type: object
AssignedRole:
properties:
expires_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Expires At
id:
format: uuid
title: Id
type: string
is_builtin:
default: false
title: Is Builtin
type: boolean
is_default:
title: Is Default
type: boolean
name:
title: Name
type: string
permissions:
items:
type: string
title: Permissions
type: array
required:
- id
- name
- permissions
- is_default
title: AssignedRole
type: object
AssignedRoleList:
properties:
items:
items:
$ref: '#/components/schemas/AssignedRole'
title: Items
type: array
required:
- items
title: AssignedRoleList
type: object
BackupCreate:
properties:
fidelity:
default: full
enum:
- full
- redacted
title: Fidelity
type: string
passphrase:
minLength: 1
title: Passphrase
type: string
scope:
enum:
- full
- tenant
title: Scope
type: string
tenant_id:
anyOf:
- format: uuid
type: string
- type: 'null'
title: Tenant Id
required:
- scope
- passphrase
title: BackupCreate
type: object
BackupResponse:
properties:
checksum:
anyOf:
- type: string
- type: 'null'
title: Checksum
completed_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Completed At
created_at:
format: date-time
title: Created At
type: string
error_code:
anyOf:
- type: string
- type: 'null'
title: Error Code
fidelity:
title: Fidelity
type: string
id:
format: uuid
title: Id
type: string
progress:
additionalProperties: true
title: Progress
type: object
restorable:
title: Restorable
type: boolean
row_counts:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Row Counts
schema_version:
anyOf:
- type: string
- type: 'null'
title: Schema Version
scope:
title: Scope
type: string
size_bytes:
anyOf:
- type: integer
- type: 'null'
title: Size Bytes
status:
title: Status
type: string
tenant_id:
anyOf:
- format: uuid
type: string
- type: 'null'
title: Tenant Id
required:
- id
- scope
- tenant_id
- fidelity
- restorable
- status
- schema_version
- size_bytes
- checksum
- row_counts
- progress
- error_code
- created_at
- completed_at
title: BackupResponse
type: object
Body_admin_add_user_t__slug__hosted_admin_users_add_post:
properties:
email:
title: Email
type: string
invitation_application_id:
default: ''
title: Invitation Application Id
type: string
send_invitation:
default: ''
title: Send Invitation
type: string
required:
- email
title: Body_admin_add_user_t__slug__hosted_admin_users_add_post
type: object
Body_admin_reassign_owner_t__slug__hosted_admin_groups__group_id__reassign_owner_post:
properties:
new_owner:
title: New Owner
type: string
required:
- new_owner
title: Body_admin_reassign_owner_t__slug__hosted_admin_groups__group_id__reassign_owner_post
type: object
Body_admin_set_status_t__slug__hosted_admin_users__identity_id__status_post:
properties:
status:
title: Status
type: string
required:
- status
title: Body_admin_set_status_t__slug__hosted_admin_users__identity_id__status_post
type: object
Body_admin_set_tenant_admin_t__slug__hosted_admin_users__identity_id__tenant_admin_post:
properties:
value:
title: Value
type: integer
required:
- value
title: Body_admin_set_tenant_admin_t__slug__hosted_admin_users__identity_id__tenant_admin_post
type: object
Body_admin_set_username_t__slug__hosted_admin_users__identity_id__username_post:
properties:
clear:
default: ''
title: Clear
type: string
username:
default: ''
title: Username
type: string
title: Body_admin_set_username_t__slug__hosted_admin_users__identity_id__username_post
type: object
Body_app_access_grant_user_t__slug__hosted_admin_applications__application_id__access_add_post:
properties:
email:
title: Email
type: string
required:
- email
title: Body_app_access_grant_user_t__slug__hosted_admin_applications__application_id__access_add_post
type: object
Body_app_admin_add_t__slug__hosted_admin_applications__application_id__admins_add_post:
properties:
email:
title: Email
type: string
required:
- email
title: Body_app_admin_add_t__slug__hosted_admin_applications__application_id__admins_add_post
type: object
Body_app_group_grant_t__slug__hosted_admin_applications__application_id__groups_add_post:
properties:
group_id:
format: uuid
title: Group Id
type: string
required:
- group_id
title: Body_app_group_grant_t__slug__hosted_admin_applications__application_id__groups_add_post
type: object
Body_application_edit_submit_t__slug__hosted_admin_applications__application_id__edit_post:
properties:
access_mode:
default: open
title: Access Mode
type: string
description:
default: ''
title: Description
type: string
home_url:
default: ''
title: Home Url
type: string
icon_url:
default: ''
title: Icon Url
type: string
label:
default: ''
title: Label
type: string
redirect_uris:
default: ''
title: Redirect Uris
type: string
scopes:
default: ''
title: Scopes
type: string
self_enrollment_enabled:
default: ''
title: Self Enrollment Enabled
type: string
show_in_menu:
default: ''
title: Show In Menu
type: string
title: Body_application_edit_submit_t__slug__hosted_admin_applications__application_id__edit_post
type: object
Body_application_rotate_secret_t__slug__hosted_admin_applications__application_id__rotate_secret_post:
properties:
overlap_seconds:
default: 0
title: Overlap Seconds
type: integer
title: Body_application_rotate_secret_t__slug__hosted_admin_applications__application_id__rotate_secret_post
type: object
Body_authorize_post_t__tenant_slug__oauth2_authorize_post:
properties:
acr_values:
anyOf:
- type: string
- type: 'null'
title: Acr Values
client_id:
title: Client Id
type: string
code_challenge:
anyOf:
- type: string
- type: 'null'
title: Code Challenge
code_challenge_method:
anyOf:
- type: string
- type: 'null'
title: Code Challenge Method
consent:
anyOf:
- type: string
- type: 'null'
title: Consent
login_token:
anyOf:
- type: string
- type: 'null'
title: Login Token
nonce:
anyOf:
- type: string
- type: 'null'
title: Nonce
prompt:
anyOf:
- type: string
- type: 'null'
title: Prompt
redirect_uri:
title: Redirect Uri
type: string
response_type:
default: code
title: Response Type
type: string
scope:
default: openid
title: Scope
type: string
state:
anyOf:
- type: string
- type: 'null'
title: State
required:
- client_id
- redirect_uri
title: Body_authorize_post_t__tenant_slug__oauth2_authorize_post
type: object
Body_backups_create_t__slug__hosted_admin_backups_post:
properties:
fidelity:
default: full
title: Fidelity
type: string
passphrase:
title: Passphrase
type: string
required:
- passphrase
title: Body_backups_create_t__slug__hosted_admin_backups_post
type: object
Body_branding_save_t__slug__hosted_admin_branding_post:
properties:
accent_color:
default: ''
title: Accent Color
type: string
background_color:
default: ''
title: Background Color
type: string
error_color:
default: ''
title: Error Color
type: string
favicon_url:
default: ''
title: Favicon Url
type: string
font_family:
default: ''
title: Font Family
type: string
logo_url:
default: ''
title: Logo Url
type: string
product_name:
default: ''
title: Product Name
type: string
surround_color:
default: ''
title: Surround Color
type: string
text_color:
default: ''
title: Text Color
type: string
title: Body_branding_save_t__slug__hosted_admin_branding_post
type: object
Body_create_application_submit_t__slug__hosted_admin_applications_new_post:
properties:
access_mode:
default: open
title: Access Mode
type: string
client_id:
default: ''
title: Client Id
type: string
client_type:
default: confidential
title: Client Type
type: string
description:
default: ''
title: Description
type: string
home_url:
default: ''
title: Home Url
type: string
icon_url:
default: ''
title: Icon Url
type: string
label:
default: ''
title: Label
type: string
name:
title: Name
type: string
redirect_uris:
default: ''
title: Redirect Uris
type: string
scopes:
default: ''
title: Scopes
type: string
self_enrollment_enabled:
default: ''
title: Self Enrollment Enabled
type: string
show_in_menu:
default: ''
title: Show In Menu
type: string
required:
- name
title: Body_create_application_submit_t__slug__hosted_admin_applications_new_post
type: object
Body_create_group_admin_submit_t__slug__hosted_admin_groups_new_post:
properties:
name:
title: Name
type: string
owner_email:
title: Owner Email
type: string
required:
- name
- owner_email
title: Body_create_group_admin_submit_t__slug__hosted_admin_groups_new_post
type: object
Body_create_group_page_t__slug__hosted_groups_create_post:
properties:
name:
title: Name
type: string
required:
- name
title: Body_create_group_page_t__slug__hosted_groups_create_post
type: object
Body_group_add_member_t__slug__hosted_groups__group_id__members_add_post:
properties:
email:
title: Email
type: string
required:
- email
title: Body_group_add_member_t__slug__hosted_groups__group_id__members_add_post
type: object
Body_group_grant_application_t__slug__hosted_groups__group_id__applications_add_post:
properties:
application_id:
format: uuid
title: Application Id
type: string
required:
- application_id
title: Body_group_grant_application_t__slug__hosted_groups__group_id__applications_add_post
type: object
Body_group_set_admin_t__slug__hosted_groups__group_id__members__identity_id__admin_post:
properties:
value:
title: Value
type: integer
required:
- value
title: Body_group_set_admin_t__slug__hosted_groups__group_id__members__identity_id__admin_post
type: object
Body_group_transfer_t__slug__hosted_groups__group_id__transfer_post:
properties:
new_owner:
format: uuid
title: New Owner
type: string
required:
- new_owner
title: Body_group_transfer_t__slug__hosted_groups__group_id__transfer_post
type: object
Body_hosted_consent_submit_t__tenant_slug__hosted_consent_post:
properties:
decision:
title: Decision
type: string
return_to:
title: Return To
type: string
token:
title: Token
type: string
required:
- token
- decision
- return_to
title: Body_hosted_consent_submit_t__tenant_slug__hosted_consent_post
type: object
Body_hosted_login_request_t__tenant_slug__hosted_login_request_post:
properties:
email:
title: Email
type: string
return_to:
title: Return To
type: string
required:
- return_to
- email
title: Body_hosted_login_request_t__tenant_slug__hosted_login_request_post
type: object
Body_hosted_login_verify_t__tenant_slug__hosted_login_verify_post:
properties:
code:
title: Code
type: string
email:
title: Email
type: string
return_to:
title: Return To
type: string
required:
- return_to
- email
- code
title: Body_hosted_login_verify_t__tenant_slug__hosted_login_verify_post
type: object
Body_introspect_t__tenant_slug__oauth2_introspect_post:
properties:
client_id:
anyOf:
- type: string
- type: 'null'
title: Client Id
client_secret:
anyOf:
- type: string
- type: 'null'
title: Client Secret
token:
title: Token
type: string
required:
- token
title: Body_introspect_t__tenant_slug__oauth2_introspect_post
type: object
Body_introspect_token_v1_tokens_introspect_post:
properties:
token:
title: Token
type: string
required:
- token
title: Body_introspect_token_v1_tokens_introspect_post
type: object
Body_registration_save_t__slug__hosted_admin_registration_post:
properties:
allowlist_domains:
default: ''
title: Allowlist Domains
type: string
allowlist_enabled:
default: ''
title: Allowlist Enabled
type: string
denylist_domains:
default: ''
title: Denylist Domains
type: string
denylist_enabled:
default: ''
title: Denylist Enabled
type: string
invitation_only:
default: ''
title: Invitation Only
type: string
version:
default: ''
title: Version
type: string
title: Body_registration_save_t__slug__hosted_admin_registration_post
type: object
Body_restores_run_t__slug__hosted_admin_restores_post:
properties:
backup_id:
format: uuid
title: Backup Id
type: string
confirmation_token:
default: ''
title: Confirmation Token
type: string
mode:
title: Mode
type: string
passphrase:
title: Passphrase
type: string
required:
- backup_id
- mode
- passphrase
title: Body_restores_run_t__slug__hosted_admin_restores_post
type: object
Body_revoke_t__tenant_slug__oauth2_revoke_post:
properties:
client_id:
anyOf:
- type: string
- type: 'null'
title: Client Id
client_secret:
anyOf:
- type: string
- type: 'null'
title: Client Secret
token:
title: Token
type: string
required:
- token
title: Body_revoke_t__tenant_slug__oauth2_revoke_post
type: object
Body_saml_acs_v1_saml__provider_id__acs_post:
properties:
SAMLResponse:
title: Samlresponse
type: string
required:
- SAMLResponse
title: Body_saml_acs_v1_saml__provider_id__acs_post
type: object
Body_token_t__tenant_slug__oauth2_token_post:
properties:
client_id:
anyOf:
- type: string
- type: 'null'
title: Client Id
client_secret:
anyOf:
- type: string
- type: 'null'
title: Client Secret
code:
anyOf:
- type: string
- type: 'null'
title: Code
code_verifier:
anyOf:
- type: string
- type: 'null'
title: Code Verifier
grant_type:
title: Grant Type
type: string
redirect_uri:
anyOf:
- type: string
- type: 'null'
title: Redirect Uri
refresh_token:
anyOf:
- type: string
- type: 'null'
title: Refresh Token
required:
- grant_type
title: Body_token_t__tenant_slug__oauth2_token_post
type: object
Body_user_access_add_t__slug__hosted_admin_users__identity_id__access_add_post:
properties:
application_id:
format: uuid
title: Application Id
type: string
required:
- application_id
title: Body_user_access_add_t__slug__hosted_admin_users__identity_id__access_add_post
type: object
Body_user_roles_add_t__slug__hosted_admin_users__identity_id__roles_add_post:
properties:
role_id:
format: uuid
title: Role Id
type: string
required:
- role_id
title: Body_user_roles_add_t__slug__hosted_admin_users__identity_id__roles_add_post
type: object
CodeRequest:
properties:
code:
minLength: 1
title: Code
type: string
login_token:
minLength: 1
title: Login Token
type: string
required:
- login_token
- code
title: CodeRequest
type: object
CreateTokenRequest:
properties:
audience:
anyOf:
- type: string
- type: 'null'
title: Audience
expires_in_days:
anyOf:
- type: integer
- type: 'null'
title: Expires In Days
label:
anyOf:
- type: string
- type: 'null'
title: Label
scope:
default: ''
title: Scope
type: string
title: CreateTokenRequest
type: object
CreatedToken:
properties:
audience:
anyOf:
- type: string
- type: 'null'
title: Audience
created_at:
format: date-time
title: Created At
type: string
expires_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Expires At
label:
anyOf:
- type: string
- type: 'null'
title: Label
scope:
title: Scope
type: string
token:
title: Token
type: string
token_id:
format: uuid
title: Token Id
type: string
required:
- token_id
- token
- scope
- created_at
title: CreatedToken
type: object
DomainListModel:
description: 'One domain list: whether it is enforced, and the bare domains in it.'
properties:
domains:
items:
type: string
title: Domains
type: array
enabled:
default: false
title: Enabled
type: boolean
title: DomainListModel
type: object
EffectiveValue:
description: A setting's in-force value, plus whether this tenant chose it (FR-011).
properties:
explicitly_set:
title: Explicitly Set
type: boolean
value:
title: Value
required:
- explicitly_set
title: EffectiveValue
type: object
EmailRequest:
properties:
email:
format: email
title: Email
type: string
required:
- email
title: EmailRequest
type: object
GroupApplicationGrantResponse:
properties:
application_id:
format: uuid
title: Application Id
type: string
created_at:
format: date-time
title: Created At
type: string
required:
- application_id
- created_at
title: GroupApplicationGrantResponse
type: object
GroupCreate:
properties:
description:
anyOf:
- type: string
- type: 'null'
title: Description
name:
maxLength: 200
minLength: 1
title: Name
type: string
owner_identity_id:
anyOf:
- format: uuid
type: string
- type: 'null'
title: Owner Identity Id
required:
- name
title: GroupCreate
type: object
GroupDetailResponse:
properties:
admin_count:
title: Admin Count
type: integer
created_at:
format: date-time
title: Created At
type: string
description:
anyOf:
- type: string
- type: 'null'
title: Description
id:
format: uuid
title: Id
type: string
member_count:
title: Member Count
type: integer
members:
items:
$ref: '#/components/schemas/GroupMemberResponse'
title: Members
type: array
name:
title: Name
type: string
owner_identity_id:
anyOf:
- format: uuid
type: string
- type: 'null'
title: Owner Identity Id
required:
- id
- name
- owner_identity_id
- admin_count
- member_count
- created_at
- members
title: GroupDetailResponse
type: object
GroupList:
properties:
items:
items:
$ref: '#/components/schemas/GroupResponse'
title: Items
type: array
next_cursor:
anyOf:
- type: string
- type: 'null'
title: Next Cursor
required:
- items
title: GroupList
type: object
GroupMemberResponse:
properties:
created_at:
format: date-time
title: Created At
type: string
email:
anyOf:
- type: string
- type: 'null'
title: Email
identity_id:
format: uuid
title: Identity Id
type: string
role:
title: Role
type: string
status:
title: Status
type: string
required:
- identity_id
- role
- status
- created_at
title: GroupMemberResponse
type: object
GroupResponse:
properties:
admin_count:
title: Admin Count
type: integer
created_at:
format: date-time
title: Created At
type: string
description:
anyOf:
- type: string
- type: 'null'
title: Description
id:
format: uuid
title: Id
type: string
member_count:
title: Member Count
type: integer
name:
title: Name
type: string
owner_identity_id:
anyOf:
- format: uuid
type: string
- type: 'null'
title: Owner Identity Id
required:
- id
- name
- owner_identity_id
- admin_count
- member_count
- created_at
title: GroupResponse
type: object
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
title: Detail
type: array
title: HTTPValidationError
type: object
HandoverAcceptResponse:
properties:
administrators_after:
title: Administrators After
type: integer
administrators_removed:
default: 0
title: Administrators Removed
type: integer
identity_id:
format: uuid
title: Identity Id
type: string
status:
title: Status
type: string
tenant:
additionalProperties:
type: string
title: Tenant
type: object
required:
- status
- tenant
- identity_id
- administrators_after
title: HandoverAcceptResponse
type: object
HandoverCreateRequest:
properties:
confirmation_token:
title: Confirmation Token
type: string
incoming_email:
format: email
title: Incoming Email
type: string
required:
- incoming_email
- confirmation_token
title: HandoverCreateRequest
type: object
HandoverPreviewRequest:
properties:
incoming_email:
format: email
title: Incoming Email
type: string
required:
- incoming_email
title: HandoverPreviewRequest
type: object
HandoverPreviewResponse:
properties:
confirmation_token:
title: Confirmation Token
type: string
confirmation_token_expires_at:
title: Confirmation Token Expires At
type: string
current_administrators:
items:
$ref: '#/components/schemas/AdministratorOut'
title: Current Administrators
type: array
effect:
default: grant_only
title: Effect
type: string
incoming_email:
title: Incoming Email
type: string
incoming_identity_exists:
title: Incoming Identity Exists
type: boolean
note:
title: Note
type: string
tenant:
additionalProperties:
type: string
title: Tenant
type: object
required:
- tenant
- current_administrators
- incoming_email
- incoming_identity_exists
- note
- confirmation_token
- confirmation_token_expires_at
title: HandoverPreviewResponse
type: object
HandoverResponse:
properties:
administrators_notified:
anyOf:
- type: integer
- type: 'null'
title: Administrators Notified
effect:
default: grant_only
title: Effect
type: string
expires_at:
title: Expires At
type: string
handover_id:
format: uuid
title: Handover Id
type: string
incoming_email:
title: Incoming Email
type: string
proof_email:
anyOf:
- type: string
- type: 'null'
title: Proof Email
status:
title: Status
type: string
required:
- handover_id
- status
- incoming_email
- expires_at
title: HandoverResponse
type: object
IdentityApplicationItem:
properties:
access_mode:
title: Access Mode
type: string
application_id:
format: uuid
title: Application Id
type: string
client_id:
title: Client Id
type: string
required:
- application_id
- client_id
- access_mode
title: IdentityApplicationItem
type: object
IdentityApplicationsList:
properties:
items:
items:
$ref: '#/components/schemas/IdentityApplicationItem'
title: Items
type: array
required:
- items
title: IdentityApplicationsList
type: object
IdentityCreate:
properties:
custom_claims:
additionalProperties: true
title: Custom Claims
type: object
email:
format: email
title: Email
type: string
email_verified:
default: false
title: Email Verified
type: boolean
family_name:
anyOf:
- type: string
- type: 'null'
title: Family Name
given_name:
anyOf:
- type: string
- type: 'null'
title: Given Name
name:
anyOf:
- type: string
- type: 'null'
title: Name
password:
anyOf:
- minLength: 1
type: string
- type: 'null'
title: Password
username:
anyOf:
- type: string
- type: 'null'
title: Username
required:
- email
title: IdentityCreate
type: object
IdentityList:
properties:
items:
items:
$ref: '#/components/schemas/IdentityResponse'
title: Items
type: array
next_cursor:
anyOf:
- type: string
- type: 'null'
title: Next Cursor
required:
- items
title: IdentityList
type: object
IdentityResponse:
properties:
created_at:
format: date-time
title: Created At
type: string
custom_claims:
additionalProperties: true
title: Custom Claims
type: object
email:
anyOf:
- type: string
- type: 'null'
title: Email
email_verified:
title: Email Verified
type: boolean
family_name:
anyOf:
- type: string
- type: 'null'
title: Family Name
given_name:
anyOf:
- type: string
- type: 'null'
title: Given Name
id:
format: uuid
title: Id
type: string
is_tenant_admin:
description: The tenant-administrator designation AS STORED, not the authority as effective.
The is_tenant_admin CLAIM in an issued token is `status == "active" AND is_tenant_admin`,
because a relying party must not treat a suspended administrator as an administrator. This
field is the flag alone, so a caller asking "did my grant land?" still reads true for someone
granted the designation and later suspended. `GET /v1/identities?tenant_admin=true` filters
on this flag and NOT on status, so a suspended administrator is listed. Read `status` from
the same object for the effective form.
title: Is Tenant Admin
type: boolean
mfa_enabled:
title: Mfa Enabled
type: boolean
name:
anyOf:
- type: string
- type: 'null'
title: Name
status:
title: Status
type: string
username:
anyOf:
- type: string
- type: 'null'
title: Username
required:
- id
- email
- email_verified
- name
- given_name
- family_name
- username
- status
- is_tenant_admin
- mfa_enabled
- custom_claims
- created_at
title: IdentityResponse
type: object
IdentityUpdate:
properties:
custom_claims:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Custom Claims
email:
anyOf:
- format: email
type: string
- type: 'null'
title: Email
email_verified:
anyOf:
- type: boolean
- type: 'null'
title: Email Verified
family_name:
anyOf:
- type: string
- type: 'null'
title: Family Name
given_name:
anyOf:
- type: string
- type: 'null'
title: Given Name
name:
anyOf:
- type: string
- type: 'null'
title: Name
status:
anyOf:
- type: string
- type: 'null'
title: Status
username:
anyOf:
- type: string
- type: 'null'
title: Username
title: IdentityUpdate
type: object
InvitationCreateRequest:
properties:
application_id:
anyOf:
- format: uuid
type: string
- type: 'null'
title: Application Id
email:
title: Email
type: string
email_html_body:
anyOf:
- type: string
- type: 'null'
title: Email Html Body
email_text_body:
anyOf:
- type: string
- type: 'null'
title: Email Text Body
send_email:
default: false
title: Send Email
type: boolean
welcome_message:
default: ''
title: Welcome Message
type: string
required:
- email
title: InvitationCreateRequest
type: object
InvitationCreateResponse:
properties:
already_registered:
title: Already Registered
type: boolean
email_delivery:
description: not_sent | sent | failed
title: Email Delivery
type: string
expires_at:
format: date-time
title: Expires At
type: string
invitation_url:
title: Invitation Url
type: string
required:
- invitation_url
- already_registered
- expires_at
- email_delivery
title: InvitationCreateResponse
type: object
KeyMetadata:
properties:
audience:
anyOf:
- type: string
- type: 'null'
title: Audience
comment:
anyOf:
- type: string
- type: 'null'
title: Comment
created_at:
format: date-time
title: Created At
type: string
expires_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Expires At
fingerprint:
title: Fingerprint
type: string
key_id:
format: uuid
title: Key Id
type: string
key_type:
title: Key Type
type: string
label:
anyOf:
- type: string
- type: 'null'
title: Label
last_used_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Last Used At
revoked:
title: Revoked
type: boolean
scope:
title: Scope
type: string
required:
- key_id
- key_type
- fingerprint
- scope
- created_at
- revoked
title: KeyMetadata
type: object
LoginBegin:
properties:
email:
anyOf:
- type: string
- type: 'null'
title: Email
title: LoginBegin
type: object
LoginBeginResponse:
properties:
handle:
title: Handle
type: string
options:
additionalProperties: true
title: Options
type: object
required:
- options
- handle
title: LoginBeginResponse
type: object
LoginFinish:
properties:
credential:
additionalProperties: true
title: Credential
type: object
handle:
minLength: 1
title: Handle
type: string
required:
- handle
- credential
title: LoginFinish
type: object
LoginFinishResponse:
properties:
aal:
title: Aal
type: integer
login_token:
title: Login Token
type: string
session_id:
title: Session Id
type: string
required:
- login_token
- session_id
- aal
title: LoginFinishResponse
type: object
LoginRequest:
description: 'Primary-credential login (feature 013): identify by email OR username, plus password.'
properties:
email:
anyOf:
- format: email
type: string
- type: 'null'
title: Email
password:
minLength: 1
title: Password
type: string
username:
anyOf:
- type: string
- type: 'null'
title: Username
required:
- password
title: LoginRequest
type: object
MagicLinkRequest:
properties:
client_id:
minLength: 1
title: Client Id
type: string
email:
anyOf:
- format: email
type: string
- type: 'null'
title: Email
redirect_uri:
minLength: 1
title: Redirect Uri
type: string
username:
anyOf:
- type: string
- type: 'null'
title: Username
required:
- client_id
- redirect_uri
title: MagicLinkRequest
type: object
MagicLinkVerify:
properties:
token:
minLength: 1
title: Token
type: string
required:
- token
title: MagicLinkVerify
type: object
MfaResult:
properties:
aal:
anyOf:
- type: integer
- type: 'null'
title: Aal
ok:
title: Ok
type: boolean
required:
- ok
title: MfaResult
type: object
MyApplicationsResponse:
properties:
applications:
items:
$ref: '#/components/schemas/SelectableApplicationItem'
title: Applications
type: array
destinations:
items:
type: string
title: Destinations
type: array
selector_relevant:
title: Selector Relevant
type: boolean
required:
- applications
- selector_relevant
- destinations
title: MyApplicationsResponse
type: object
MyGroupEntry:
properties:
group:
$ref: '#/components/schemas/GroupResponse'
role:
title: Role
type: string
required:
- group
- role
title: MyGroupEntry
type: object
OkResult:
properties:
ok:
title: Ok
type: boolean
required:
- ok
title: OkResult
type: object
OtpLoginRequest:
properties:
channel:
enum:
- email
- sms
title: Channel
type: string
email:
anyOf:
- format: email
type: string
- type: 'null'
title: Email
phone:
anyOf:
- type: string
- type: 'null'
title: Phone
username:
anyOf:
- type: string
- type: 'null'
title: Username
required:
- channel
title: OtpLoginRequest
type: object
OtpLoginVerify:
properties:
channel:
enum:
- email
- sms
title: Channel
type: string
code:
minLength: 1
title: Code
type: string
email:
anyOf:
- format: email
type: string
- type: 'null'
title: Email
phone:
anyOf:
- type: string
- type: 'null'
title: Phone
username:
anyOf:
- type: string
- type: 'null'
title: Username
required:
- channel
- code
title: OtpLoginVerify
type: object
OtpSendRequest:
properties:
channel:
pattern: ^(email|sms)$
title: Channel
type: string
login_token:
minLength: 1
title: Login Token
type: string
required:
- login_token
- channel
title: OtpSendRequest
type: object
OtpVerifyRequest:
properties:
channel:
pattern: ^(email|sms)$
title: Channel
type: string
code:
minLength: 1
title: Code
type: string
login_token:
minLength: 1
title: Login Token
type: string
required:
- login_token
- channel
- code
title: OtpVerifyRequest
type: object
PasswordResetConfirm:
properties:
new_password:
minLength: 1
title: New Password
type: string
token:
minLength: 1
title: Token
type: string
required:
- token
- new_password
title: PasswordResetConfirm
type: object
PlatformAdminKeyCreate:
properties:
caller_id:
anyOf:
- type: string
- type: 'null'
title: Caller Id
name:
title: Name
type: string
scopes:
items:
type: string
title: Scopes
type: array
required:
- name
title: PlatformAdminKeyCreate
type: object
PlatformAdminKeyResponse:
properties:
caller_id:
anyOf:
- type: string
- type: 'null'
title: Caller Id
id:
format: uuid
title: Id
type: string
key:
anyOf:
- type: string
- type: 'null'
title: Key
key_prefix:
title: Key Prefix
type: string
scopes:
items:
type: string
title: Scopes
type: array
tenant_id:
anyOf:
- format: uuid
type: string
- type: 'null'
title: Tenant Id
required:
- id
- key_prefix
- scopes
title: PlatformAdminKeyResponse
type: object
PlatformOperatorList:
properties:
items:
items:
$ref: '#/components/schemas/PlatformOperatorSummary'
title: Items
type: array
next_cursor:
anyOf:
- type: string
- type: 'null'
title: Next Cursor
required:
- items
title: PlatformOperatorList
type: object
PlatformOperatorSummary:
properties:
email:
anyOf:
- type: string
- type: 'null'
title: Email
identity_id:
format: uuid
title: Identity Id
type: string
status:
title: Status
type: string
tenant_id:
format: uuid
title: Tenant Id
type: string
tenant_slug:
title: Tenant Slug
type: string
required:
- identity_id
- tenant_id
- tenant_slug
- email
- status
title: PlatformOperatorSummary
type: object
PreservedRulesModel:
description: 'Read-only view of the settings this surface preserves but does not manage.
Presence only — the decision service''s endpoint secret is never exposed in any form.'
properties:
block_disposable:
default: false
title: Block Disposable
type: boolean
decision_service_configured:
default: false
title: Decision Service Configured
type: boolean
window_end:
anyOf:
- type: string
- type: 'null'
title: Window End
window_start:
anyOf:
- type: string
- type: 'null'
title: Window Start
title: PreservedRulesModel
type: object
ProviderCreate:
properties:
authorization_url:
anyOf:
- type: string
- type: 'null'
title: Authorization Url
client_id:
anyOf:
- type: string
- type: 'null'
title: Client Id
client_secret:
anyOf:
- type: string
- type: 'null'
title: Client Secret
jit_provisioning:
default: false
title: Jit Provisioning
type: boolean
name:
title: Name
type: string
provider_type:
title: Provider Type
type: string
saml_certificate:
anyOf:
- type: string
- type: 'null'
title: Saml Certificate
scim_enabled:
default: false
title: Scim Enabled
type: boolean
token_url:
anyOf:
- type: string
- type: 'null'
title: Token Url
userinfo_url:
anyOf:
- type: string
- type: 'null'
title: Userinfo Url
verified_domains:
items:
type: string
title: Verified Domains
type: array
required:
- name
- provider_type
title: ProviderCreate
type: object
ProviderResponse:
properties:
id:
format: uuid
title: Id
type: string
name:
title: Name
type: string
provider_type:
title: Provider Type
type: string
scim_bearer_token:
anyOf:
- type: string
- type: 'null'
title: Scim Bearer Token
required:
- id
- name
- provider_type
title: ProviderResponse
type: object
ReassignOwnerRequest:
properties:
new_owner_identity_id:
format: uuid
title: New Owner Identity Id
type: string
required:
- new_owner_identity_id
title: ReassignOwnerRequest
type: object
RegisterAliasRequest:
properties:
alias_email:
title: Alias Email
type: string
required:
- alias_email
title: RegisterAliasRequest
type: object
RegisterBegin:
properties:
login_token:
minLength: 1
title: Login Token
type: string
required:
- login_token
title: RegisterBegin
type: object
RegisterFinish:
properties:
credential:
additionalProperties: true
title: Credential
type: object
login_token:
minLength: 1
title: Login Token
type: string
required:
- login_token
- credential
title: RegisterFinish
type: object
RegisterKeyRequest:
properties:
audience:
anyOf:
- type: string
- type: 'null'
title: Audience
expires_in_days:
anyOf:
- type: integer
- type: 'null'
title: Expires In Days
label:
anyOf:
- type: string
- type: 'null'
title: Label
public_key:
title: Public Key
type: string
scope:
default: ''
title: Scope
type: string
required:
- public_key
title: RegisterKeyRequest
type: object
RegisterRequest:
properties:
email:
format: email
title: Email
type: string
password:
minLength: 1
title: Password
type: string
required:
- email
- password
title: RegisterRequest
type: object
RegisteredKey:
properties:
audience:
anyOf:
- type: string
- type: 'null'
title: Audience
comment:
anyOf:
- type: string
- type: 'null'
title: Comment
created_at:
format: date-time
title: Created At
type: string
expires_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Expires At
fingerprint:
title: Fingerprint
type: string
key_id:
format: uuid
title: Key Id
type: string
key_type:
title: Key Type
type: string
label:
anyOf:
- type: string
- type: 'null'
title: Label
public_key:
title: Public Key
type: string
scope:
title: Scope
type: string
required:
- key_id
- key_type
- fingerprint
- public_key
- scope
- created_at
title: RegisteredKey
type: object
RegistrationPolicyResponse:
properties:
allowlist:
$ref: '#/components/schemas/DomainListModel'
denylist:
$ref: '#/components/schemas/DomainListModel'
invitation_only:
title: Invitation Only
type: boolean
other_rules:
$ref: '#/components/schemas/PreservedRulesModel'
version:
title: Version
type: string
required:
- invitation_only
- allowlist
- denylist
- other_rules
- version
title: RegistrationPolicyResponse
type: object
RegistrationPolicyUpdate:
properties:
allowlist:
$ref: '#/components/schemas/DomainListModel'
denylist:
$ref: '#/components/schemas/DomainListModel'
invitation_only:
title: Invitation Only
type: boolean
version:
anyOf:
- type: string
- type: 'null'
title: Version
required:
- invitation_only
- allowlist
- denylist
title: RegistrationPolicyUpdate
type: object
RestoreResponse:
properties:
completed_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Completed At
confirmation_token:
anyOf:
- type: string
- type: 'null'
title: Confirmation Token
conflicts:
anyOf:
- items: {}
type: array
- type: 'null'
title: Conflicts
created_at:
format: date-time
title: Created At
type: string
error_code:
anyOf:
- type: string
- type: 'null'
title: Error Code
id:
format: uuid
title: Id
type: string
mode:
title: Mode
type: string
phase:
anyOf:
- type: string
- type: 'null'
title: Phase
preview:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Preview
scope:
anyOf:
- type: string
- type: 'null'
title: Scope
status:
title: Status
type: string
tenant_id:
anyOf:
- format: uuid
type: string
- type: 'null'
title: Tenant Id
required:
- id
- scope
- tenant_id
- mode
- status
- phase
- preview
- conflicts
- confirmation_token
- error_code
- created_at
- completed_at
title: RestoreResponse
type: object
RoleCreate:
properties:
is_default:
default: false
title: Is Default
type: boolean
name:
title: Name
type: string
permissions:
items:
type: string
title: Permissions
type: array
required:
- name
title: RoleCreate
type: object
RoleList:
properties:
items:
items:
$ref: '#/components/schemas/RoleResponse'
title: Items
type: array
required:
- items
title: RoleList
type: object
RoleResponse:
properties:
id:
format: uuid
title: Id
type: string
is_builtin:
default: false
title: Is Builtin
type: boolean
is_default:
title: Is Default
type: boolean
name:
title: Name
type: string
permissions:
items:
type: string
title: Permissions
type: array
required:
- id
- name
- permissions
- is_default
title: RoleResponse
type: object
RotateSecretRequest:
properties:
overlap_seconds:
anyOf:
- type: integer
- type: 'null'
title: Overlap Seconds
title: RotateSecretRequest
type: object
RotatedSecretResponse:
properties:
client_id:
title: Client Id
type: string
client_secret:
title: Client Secret
type: string
id:
format: uuid
title: Id
type: string
mode:
title: Mode
type: string
overlap_expires_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Overlap Expires At
secret_rotated_at:
format: date-time
title: Secret Rotated At
type: string
required:
- id
- client_id
- client_secret
- mode
- secret_rotated_at
title: RotatedSecretResponse
type: object
SamlIssueRequest:
properties:
client_id:
minLength: 1
title: Client Id
type: string
login_token:
minLength: 1
title: Login Token
type: string
required:
- login_token
- client_id
title: SamlIssueRequest
type: object
SelectableApplicationItem:
properties:
application_id:
format: uuid
title: Application Id
type: string
client_id:
title: Client Id
type: string
description:
anyOf:
- type: string
- type: 'null'
description: One line saying what this application is for; null when none is set.
title: Description
home_url:
anyOf:
- type: string
- type: 'null'
title: Home Url
icon_url:
anyOf:
- type: string
- type: 'null'
description: Absolute http(s) address of an image to show beside it; null when none is set.
The platform never fetches this address — render it, or show a placeholder.
title: Icon Url
label:
description: 'The name to show a person for this application: the administrator-set label when
there is one, otherwise `name`. Always present. Entries are ordered by this field, case-insensitively
— the same order the hosted menu uses.'
title: Label
type: string
launchable:
title: Launchable
type: boolean
name:
title: Name
type: string
source:
title: Source
type: string
required:
- application_id
- client_id
- name
- label
- home_url
- launchable
- source
title: SelectableApplicationItem
type: object
SessionList:
properties:
items:
items:
$ref: '#/components/schemas/SessionResponse'
title: Items
type: array
required:
- items
title: SessionList
type: object
SessionResponse:
properties:
aal:
title: Aal
type: integer
auth_method:
title: Auth Method
type: string
created_at:
format: date-time
title: Created At
type: string
geo_city:
anyOf:
- type: string
- type: 'null'
title: Geo City
geo_country:
anyOf:
- type: string
- type: 'null'
title: Geo Country
id:
format: uuid
title: Id
type: string
ip_address:
anyOf:
- type: string
- type: 'null'
title: Ip Address
last_activity_at:
format: date-time
title: Last Activity At
type: string
mfa_completed:
title: Mfa Completed
type: boolean
status:
title: Status
type: string
user_agent:
anyOf:
- type: string
- type: 'null'
title: User Agent
required:
- id
- auth_method
- aal
- mfa_completed
- ip_address
- user_agent
- geo_country
- geo_city
- status
- last_activity_at
- created_at
title: SessionResponse
type: object
StartAliasRequest:
properties:
alias_email:
format: email
title: Alias Email
type: string
required:
- alias_email
title: StartAliasRequest
type: object
SuggestionList:
properties:
items:
items:
$ref: '#/components/schemas/SuggestionResponse'
title: Items
type: array
required:
- items
title: SuggestionList
type: object
SuggestionResponse:
properties:
confidence:
title: Confidence
type: number
created_at:
format: date-time
title: Created At
type: string
description:
title: Description
type: string
entity_id:
format: uuid
title: Entity Id
type: string
entity_type:
title: Entity Type
type: string
id:
format: uuid
title: Id
type: string
resolved_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Resolved At
status:
title: Status
type: string
suggestion_type:
title: Suggestion Type
type: string
title:
title: Title
type: string
required:
- id
- suggestion_type
- title
- description
- confidence
- entity_type
- entity_id
- status
- created_at
- resolved_at
title: SuggestionResponse
type: object
TenantConfiguration:
description: One tenant's effective, secret-free configuration.
properties:
administrators:
items:
$ref: '#/components/schemas/AdministratorSummary'
title: Administrators
type: array
audit_retention_days:
$ref: '#/components/schemas/EffectiveValue'
branding:
additionalProperties: true
title: Branding
type: object
created_at:
format: date-time
title: Created At
type: string
group_creation_policy:
additionalProperties: true
title: Group Creation Policy
type: object
hosted_login_enabled:
title: Hosted Login Enabled
type: boolean
id:
format: uuid
title: Id
type: string
issuer:
title: Issuer
type: string
jwks_algorithm:
title: Jwks Algorithm
type: string
jwks_uri:
title: Jwks Uri
type: string
lockout_duration_seconds:
title: Lockout Duration Seconds
type: integer
max_failed_login_attempts:
title: Max Failed Login Attempts
type: integer
mfa_policy:
title: Mfa Policy
type: string
name:
title: Name
type: string
password_policy:
$ref: '#/components/schemas/EffectiveValue'
passwordless_jit_provisioning:
title: Passwordless Jit Provisioning
type: boolean
provisioned_by_caller:
anyOf:
- type: string
- type: 'null'
title: Provisioned By Caller
rate_limit_policy:
$ref: '#/components/schemas/EffectiveValue'
refresh_token_lifetime_seconds:
title: Refresh Token Lifetime Seconds
type: integer
refresh_token_rotation:
title: Refresh Token Rotation
type: boolean
registration_policy:
additionalProperties: true
title: Registration Policy
type: object
revoke_tokens_on_identity_suspend:
title: Revoke Tokens On Identity Suspend
type: boolean
session_lifetime_seconds:
title: Session Lifetime Seconds
type: integer
signing_key_configured:
title: Signing Key Configured
type: boolean
slug:
title: Slug
type: string
status:
title: Status
type: string
updated_at:
format: date-time
title: Updated At
type: string
username_quarantine_days:
$ref: '#/components/schemas/EffectiveValue'
required:
- id
- name
- slug
- status
- provisioned_by_caller
- created_at
- updated_at
- mfa_policy
- password_policy
- session_lifetime_seconds
- refresh_token_lifetime_seconds
- refresh_token_rotation
- max_failed_login_attempts
- lockout_duration_seconds
- registration_policy
- passwordless_jit_provisioning
- hosted_login_enabled
- group_creation_policy
- revoke_tokens_on_identity_suspend
- audit_retention_days
- username_quarantine_days
- rate_limit_policy
- branding
- issuer
- jwks_uri
- jwks_algorithm
- signing_key_configured
title: TenantConfiguration
type: object
TenantCreate:
properties:
admin_email:
anyOf:
- format: email
type: string
- type: 'null'
title: Admin Email
name:
title: Name
type: string
password_policy:
additionalProperties: true
title: Password Policy
type: object
send_welcome_email:
default: false
title: Send Welcome Email
type: boolean
slug:
title: Slug
type: string
required:
- name
- slug
title: TenantCreate
type: object
TenantList:
properties:
items:
items:
$ref: '#/components/schemas/TenantSummary'
title: Items
type: array
next_cursor:
anyOf:
- type: string
- type: 'null'
title: Next Cursor
required:
- items
title: TenantList
type: object
TenantResponse:
properties:
admin_email:
anyOf:
- type: string
- type: 'null'
title: Admin Email
admin_identity_id:
anyOf:
- format: uuid
type: string
- type: 'null'
title: Admin Identity Id
branding_warnings:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Branding Warnings
hosted_login_enabled:
anyOf:
- type: boolean
- type: 'null'
title: Hosted Login Enabled
id:
format: uuid
title: Id
type: string
jwks_algorithm:
title: Jwks Algorithm
type: string
provisioned_by_caller:
anyOf:
- type: string
- type: 'null'
title: Provisioned By Caller
registration_webhook_secret:
anyOf:
- type: string
- type: 'null'
title: Registration Webhook Secret
slug:
title: Slug
type: string
welcome_email:
anyOf:
- type: string
- type: 'null'
title: Welcome Email
required:
- id
- slug
- jwks_algorithm
title: TenantResponse
type: object
TenantSummary:
description: One row of the tenant inventory.
properties:
application_count:
title: Application Count
type: integer
created_at:
format: date-time
title: Created At
type: string
hosted_login_enabled:
title: Hosted Login Enabled
type: boolean
id:
format: uuid
title: Id
type: string
name:
title: Name
type: string
provisioned_by_caller:
anyOf:
- type: string
- type: 'null'
title: Provisioned By Caller
slug:
title: Slug
type: string
status:
title: Status
type: string
user_count:
title: User Count
type: integer
required:
- id
- name
- slug
- status
- hosted_login_enabled
- provisioned_by_caller
- user_count
- application_count
- created_at
title: TenantSummary
type: object
TenantUpdate:
properties:
branding:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Branding
group_creation_policy:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Group Creation Policy
hosted_login_enabled:
anyOf:
- type: boolean
- type: 'null'
title: Hosted Login Enabled
passwordless_jit_provisioning:
anyOf:
- type: boolean
- type: 'null'
title: Passwordless Jit Provisioning
registration_policy:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Registration Policy
revoke_tokens_on_identity_suspend:
anyOf:
- type: boolean
- type: 'null'
title: Revoke Tokens On Identity Suspend
title: TenantUpdate
type: object
TokenConfirm:
properties:
token:
minLength: 1
title: Token
type: string
required:
- token
title: TokenConfirm
type: object
TokenMetadata:
properties:
audience:
anyOf:
- type: string
- type: 'null'
title: Audience
created_at:
format: date-time
title: Created At
type: string
expires_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Expires At
label:
anyOf:
- type: string
- type: 'null'
title: Label
last_used_at:
anyOf:
- format: date-time
type: string
- type: 'null'
title: Last Used At
revoked:
title: Revoked
type: boolean
scope:
title: Scope
type: string
token_id:
format: uuid
title: Token Id
type: string
required:
- token_id
- scope
- created_at
- revoked
title: TokenMetadata
type: object
TotpEnrollRequest:
properties:
login_token:
minLength: 1
title: Login Token
type: string
required:
- login_token
title: TotpEnrollRequest
type: object
TotpEnrollResponse:
properties:
otpauth_uri:
title: Otpauth Uri
type: string
secret:
title: Secret
type: string
required:
- secret
- otpauth_uri
title: TotpEnrollResponse
type: object
TransferOwnershipRequest:
properties:
new_owner_identity_id:
format: uuid
title: New Owner Identity Id
type: string
required:
- new_owner_identity_id
title: TransferOwnershipRequest
type: object
UsernameBody:
properties:
username:
title: Username
type: string
required:
- username
title: UsernameBody
type: object
UsernameResponse:
properties:
username:
anyOf:
- type: string
- type: 'null'
title: Username
required:
- username
title: UsernameResponse
type: object
ValidationError:
properties:
ctx:
title: Context
type: object
input:
title: Input
loc:
items:
anyOf:
- type: string
- type: integer
title: Location
type: array
msg:
title: Message
type: string
type:
title: Error Type
type: string
required:
- loc
- msg
- type
title: ValidationError
type: object
VerifyAliasRequest:
properties:
alias_email:
format: email
title: Alias Email
type: string
code:
title: Code
type: string
required:
- alias_email
- code
title: VerifyAliasRequest
type: object
WebhookCreate:
properties:
event_types:
items:
type: string
title: Event Types
type: array
url:
title: Url
type: string
required:
- url
- event_types
title: WebhookCreate
type: object
WebhookCreated:
properties:
created_at:
format: date-time
title: Created At
type: string
event_types:
items:
type: string
title: Event Types
type: array
failure_count:
title: Failure Count
type: integer
id:
format: uuid
title: Id
type: string
is_active:
title: Is Active
type: boolean
signing_secret:
title: Signing Secret
type: string
url:
title: Url
type: string
required:
- id
- url
- event_types
- is_active
- failure_count
- created_at
- signing_secret
title: WebhookCreated
type: object
WebhookList:
properties:
items:
items:
$ref: '#/components/schemas/WebhookResponse'
title: Items
type: array
required:
- items
title: WebhookList
type: object
WebhookResponse:
properties:
created_at:
format: date-time
title: Created At
type: string
event_types:
items:
type: string
title: Event Types
type: array
failure_count:
title: Failure Count
type: integer
id:
format: uuid
title: Id
type: string
is_active:
title: Is Active
type: boolean
url:
title: Url
type: string
required:
- id
- url
- event_types
- is_active
- failure_count
- created_at
title: WebhookResponse
type: object
hap__api__v1__email_aliases__LookupRequest:
properties:
email:
title: Email
type: string
required:
- email
title: LookupRequest
type: object
hap__api__v1__ssh_keys__LookupRequest:
properties:
fingerprint:
anyOf:
- type: string
- type: 'null'
title: Fingerprint
public_key:
anyOf:
- type: string
- type: 'null'
title: Public Key
title: LookupRequest
type: object
info:
description: API-first, headless, multi-tenant identity engine. OAuth 2.0 / OpenID Connect authorization
server with identities and password credentials (MVP).
title: Headless Auth Platform
version: 0.1.0
openapi: 3.1.0
paths:
/healthz:
get:
operationId: healthz_healthz_get
responses:
'200':
content:
application/json:
schema:
additionalProperties:
type: string
title: Response Healthz Healthz Get
type: object
description: Successful Response
summary: Healthz
tags:
- health
/invitations/{token}:
get:
operationId: open_invitation_invitations__token__get
parameters:
- in: path
name: token
required: true
schema:
title: Token
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Open Invitation
tags:
- invitations
/invitations/{token}/accept:
post:
operationId: accept_invitation_invitations__token__accept_post
parameters:
- in: path
name: token
required: true
schema:
title: Token
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Accept Invitation
tags:
- invitations
/invitations/{token}/reject:
post:
operationId: reject_invitation_invitations__token__reject_post
parameters:
- in: path
name: token
required: true
schema:
title: Token
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Reject Invitation
tags:
- invitations
/menu/{tenant_slug}:
get:
description: Short alias reached from OUTSIDE the tenant, where the session cookie does not travel.
operationId: hosted_menu_shortcut_menu__tenant_slug__get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Hosted Menu Shortcut
tags:
- hosted-login
/platform:
get:
operationId: platform_root_platform_get
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
summary: Platform Root
tags:
- hosted-platform
/platform/tenants:
get:
operationId: platform_tenants_platform_tenants_get
parameters:
- in: query
name: cursor
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Cursor
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Platform Tenants
tags:
- hosted-platform
/platform/tenants/{tenant_id}:
get:
operationId: platform_tenant_detail_platform_tenants__tenant_id__get
parameters:
- in: path
name: tenant_id
required: true
schema:
format: uuid
title: Tenant Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Platform Tenant Detail
tags:
- hosted-platform
/readyz:
get:
operationId: readyz_readyz_get
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
summary: Readyz
tags:
- health
/scim/v2/ServiceProviderConfig:
get:
operationId: service_provider_config_scim_v2_ServiceProviderConfig_get
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Service Provider Config Scim V2 Serviceproviderconfig Get
type: object
description: Successful Response
summary: Service Provider Config
tags:
- scim
/scim/v2/Users:
post:
operationId: create_user_scim_v2_Users_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
additionalProperties: true
title: Body
type: object
required: true
responses:
'201':
content:
application/json:
schema:
additionalProperties: true
title: Response Create User Scim V2 Users Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create User
tags:
- scim
/scim/v2/Users/{user_id}:
delete:
operationId: delete_user_scim_v2_Users__user_id__delete
parameters:
- in: path
name: user_id
required: true
schema:
format: uuid
title: User Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Delete User
tags:
- scim
get:
operationId: get_user_scim_v2_Users__user_id__get
parameters:
- in: path
name: user_id
required: true
schema:
format: uuid
title: User Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Get User Scim V2 Users User Id Get
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Get User
tags:
- scim
patch:
operationId: patch_user_scim_v2_Users__user_id__patch
parameters:
- in: path
name: user_id
required: true
schema:
format: uuid
title: User Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
additionalProperties: true
title: Body
type: object
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Patch User Scim V2 Users User Id Patch
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Patch User
tags:
- scim
/t/{slug}/hosted/admin:
get:
operationId: admin_console_t__slug__hosted_admin_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Admin Console
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications:
get:
operationId: applications_page_t__slug__hosted_admin_applications_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Applications Page
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications/new:
get:
operationId: create_application_page_t__slug__hosted_admin_applications_new_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Application Page
tags:
- hosted-admin
post:
operationId: create_application_submit_t__slug__hosted_admin_applications_new_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_create_application_submit_t__slug__hosted_admin_applications_new_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Application Submit
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications/{application_id}:
get:
operationId: application_detail_t__slug__hosted_admin_applications__application_id__get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Application Detail
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications/{application_id}/access/add:
post:
operationId: app_access_grant_user_t__slug__hosted_admin_applications__application_id__access_add_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_app_access_grant_user_t__slug__hosted_admin_applications__application_id__access_add_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: App Access Grant User
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications/{application_id}/access/{identity_id}/remove:
post:
operationId: app_access_revoke_user_t__slug__hosted_admin_applications__application_id__access__identity_id__remove_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: App Access Revoke User
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications/{application_id}/admins/add:
post:
operationId: app_admin_add_t__slug__hosted_admin_applications__application_id__admins_add_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_app_admin_add_t__slug__hosted_admin_applications__application_id__admins_add_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: App Admin Add
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications/{application_id}/admins/{identity_id}/remove:
post:
operationId: app_admin_remove_t__slug__hosted_admin_applications__application_id__admins__identity_id__remove_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: App Admin Remove
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications/{application_id}/delete:
post:
operationId: application_delete_t__slug__hosted_admin_applications__application_id__delete_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Application Delete
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications/{application_id}/disable:
post:
operationId: application_disable_t__slug__hosted_admin_applications__application_id__disable_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Application Disable
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications/{application_id}/edit:
get:
operationId: application_edit_page_t__slug__hosted_admin_applications__application_id__edit_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Application Edit Page
tags:
- hosted-admin
post:
operationId: application_edit_submit_t__slug__hosted_admin_applications__application_id__edit_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_application_edit_submit_t__slug__hosted_admin_applications__application_id__edit_post'
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Application Edit Submit
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications/{application_id}/enable:
post:
operationId: application_enable_t__slug__hosted_admin_applications__application_id__enable_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Application Enable
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications/{application_id}/groups/add:
post:
operationId: app_group_grant_t__slug__hosted_admin_applications__application_id__groups_add_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_app_group_grant_t__slug__hosted_admin_applications__application_id__groups_add_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: App Group Grant
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications/{application_id}/groups/{group_id}/remove:
post:
operationId: app_group_revoke_t__slug__hosted_admin_applications__application_id__groups__group_id__remove_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: App Group Revoke
tags:
- hosted-admin
/t/{slug}/hosted/admin/applications/{application_id}/rotate-secret:
post:
operationId: application_rotate_secret_t__slug__hosted_admin_applications__application_id__rotate_secret_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_application_rotate_secret_t__slug__hosted_admin_applications__application_id__rotate_secret_post'
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Application Rotate Secret
tags:
- hosted-admin
/t/{slug}/hosted/admin/backups:
get:
operationId: backups_page_t__slug__hosted_admin_backups_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Backups Page
tags:
- hosted-admin
post:
operationId: backups_create_t__slug__hosted_admin_backups_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_backups_create_t__slug__hosted_admin_backups_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Backups Create
tags:
- hosted-admin
/t/{slug}/hosted/admin/backups/{backup_id}/delete:
post:
operationId: backups_delete_t__slug__hosted_admin_backups__backup_id__delete_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: backup_id
required: true
schema:
format: uuid
title: Backup Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Backups Delete
tags:
- hosted-admin
/t/{slug}/hosted/admin/backups/{backup_id}/download:
get:
operationId: backups_download_t__slug__hosted_admin_backups__backup_id__download_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: backup_id
required: true
schema:
format: uuid
title: Backup Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Backups Download
tags:
- hosted-admin
/t/{slug}/hosted/admin/branding:
get:
operationId: branding_page_t__slug__hosted_admin_branding_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Branding Page
tags:
- hosted-admin
post:
operationId: branding_save_t__slug__hosted_admin_branding_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_branding_save_t__slug__hosted_admin_branding_post'
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Branding Save
tags:
- hosted-admin
/t/{slug}/hosted/admin/groups:
get:
description: Group administration (feature 028 FR-006) — moved off the console, otherwise unchanged.
operationId: admin_groups_page_t__slug__hosted_admin_groups_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Admin Groups Page
tags:
- hosted-admin
/t/{slug}/hosted/admin/groups/new:
get:
operationId: create_group_admin_page_t__slug__hosted_admin_groups_new_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Group Admin Page
tags:
- hosted-admin
post:
operationId: create_group_admin_submit_t__slug__hosted_admin_groups_new_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_create_group_admin_submit_t__slug__hosted_admin_groups_new_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Group Admin Submit
tags:
- hosted-admin
/t/{slug}/hosted/admin/groups/{group_id}/reassign-owner:
post:
operationId: admin_reassign_owner_t__slug__hosted_admin_groups__group_id__reassign_owner_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_admin_reassign_owner_t__slug__hosted_admin_groups__group_id__reassign_owner_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Admin Reassign Owner
tags:
- hosted-admin
/t/{slug}/hosted/admin/platform:
get:
description: 'Hand a designated operator across to the platform view (feature 022, research R5).
This route exists because of a collision between two shipped decisions: the operator view must
live outside any tenant''s URL space (022 FR-018), and since feature 023 the session cookie is
scoped to ``Path=/t/{slug}`` — so the browser sends nothing to ``/platform/…``. Here, inside the
cookie''s path, the ordinary tenant session still authenticates; we re-present that **same**
token under ``/platform`` and redirect.
A non-operator gets **404**, not 403: a tenant administrator who lacks the designation should
not learn that a platform surface exists behind this path.'
operationId: platform_handoff_t__slug__hosted_admin_platform_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Platform Handoff
tags:
- hosted-admin
/t/{slug}/hosted/admin/registration:
get:
operationId: registration_page_t__slug__hosted_admin_registration_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Registration Page
tags:
- hosted-admin
post:
operationId: registration_save_t__slug__hosted_admin_registration_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_registration_save_t__slug__hosted_admin_registration_post'
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Registration Save
tags:
- hosted-admin
/t/{slug}/hosted/admin/restores:
post:
operationId: restores_run_t__slug__hosted_admin_restores_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_restores_run_t__slug__hosted_admin_restores_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Restores Run
tags:
- hosted-admin
/t/{slug}/hosted/admin/search-users:
get:
description: 'Tenant-wide email autocomplete for the emergency owner-reassign field; tenant admins
only.
When ``group`` is given, the group''s current owner is excluded (reassigning to them is a no-op).'
operationId: admin_search_users_t__slug__hosted_admin_search_users_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: query
name: q
required: false
schema:
default: ''
title: Q
type: string
- in: query
name: group
required: false
schema:
anyOf:
- format: uuid
type: string
- type: 'null'
title: Group
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Admin Search Users
tags:
- hosted-admin
/t/{slug}/hosted/admin/users:
get:
description: User administration (feature 028 FR-005) — moved off the console, otherwise unchanged.
operationId: admin_users_page_t__slug__hosted_admin_users_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Admin Users Page
tags:
- hosted-admin
/t/{slug}/hosted/admin/users/add:
post:
operationId: admin_add_user_t__slug__hosted_admin_users_add_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_admin_add_user_t__slug__hosted_admin_users_add_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Admin Add User
tags:
- hosted-admin
/t/{slug}/hosted/admin/users/{identity_id}:
get:
operationId: user_detail_t__slug__hosted_admin_users__identity_id__get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: User Detail
tags:
- hosted-admin
/t/{slug}/hosted/admin/users/{identity_id}/access:
get:
operationId: user_access_page_t__slug__hosted_admin_users__identity_id__access_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: User Access Page
tags:
- hosted-admin
/t/{slug}/hosted/admin/users/{identity_id}/access/add:
post:
operationId: user_access_add_t__slug__hosted_admin_users__identity_id__access_add_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_user_access_add_t__slug__hosted_admin_users__identity_id__access_add_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: User Access Add
tags:
- hosted-admin
/t/{slug}/hosted/admin/users/{identity_id}/access/{application_id}/remove:
post:
operationId: user_access_remove_t__slug__hosted_admin_users__identity_id__access__application_id__remove_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: User Access Remove
tags:
- hosted-admin
/t/{slug}/hosted/admin/users/{identity_id}/roles:
get:
operationId: user_roles_page_t__slug__hosted_admin_users__identity_id__roles_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: User Roles Page
tags:
- hosted-admin
/t/{slug}/hosted/admin/users/{identity_id}/roles/add:
post:
operationId: user_roles_add_t__slug__hosted_admin_users__identity_id__roles_add_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_user_roles_add_t__slug__hosted_admin_users__identity_id__roles_add_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: User Roles Add
tags:
- hosted-admin
/t/{slug}/hosted/admin/users/{identity_id}/roles/{role_id}/remove:
post:
operationId: user_roles_remove_t__slug__hosted_admin_users__identity_id__roles__role_id__remove_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: path
name: role_id
required: true
schema:
format: uuid
title: Role Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: User Roles Remove
tags:
- hosted-admin
/t/{slug}/hosted/admin/users/{identity_id}/status:
post:
operationId: admin_set_status_t__slug__hosted_admin_users__identity_id__status_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_admin_set_status_t__slug__hosted_admin_users__identity_id__status_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Admin Set Status
tags:
- hosted-admin
/t/{slug}/hosted/admin/users/{identity_id}/tenant-admin:
post:
operationId: admin_set_tenant_admin_t__slug__hosted_admin_users__identity_id__tenant_admin_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_admin_set_tenant_admin_t__slug__hosted_admin_users__identity_id__tenant_admin_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Admin Set Tenant Admin
tags:
- hosted-admin
/t/{slug}/hosted/admin/users/{identity_id}/username:
post:
description: 'Set or remove a person''s username (feature 013) from the console.
``self_service=False`` deliberately: the 24-hour change cooldown is an anti-abuse rule aimed at
people churning their own handle (013 FR-020), and an administrator correcting someone''s
username should not be held off by it. The released handle still enters quarantine either way.
Both halves have REST equivalents already — ``PATCH /v1/identities/{id}`` carries ``username``
and ``DELETE /v1/identities/{id}/username`` clears it — so this adds no UI-only capability
(constitution Principle II).'
operationId: admin_set_username_t__slug__hosted_admin_users__identity_id__username_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_admin_set_username_t__slug__hosted_admin_users__identity_id__username_post'
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Admin Set Username
tags:
- hosted-admin
/t/{slug}/hosted/groups:
get:
operationId: my_groups_page_t__slug__hosted_groups_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: My Groups Page
tags:
- hosted-admin
/t/{slug}/hosted/groups/create:
post:
operationId: create_group_page_t__slug__hosted_groups_create_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_create_group_page_t__slug__hosted_groups_create_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Group Page
tags:
- hosted-admin
/t/{slug}/hosted/groups/{group_id}:
get:
operationId: group_page_t__slug__hosted_groups__group_id__get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Group Page
tags:
- hosted-admin
/t/{slug}/hosted/groups/{group_id}/applications/add:
post:
operationId: group_grant_application_t__slug__hosted_groups__group_id__applications_add_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_group_grant_application_t__slug__hosted_groups__group_id__applications_add_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Group Grant Application
tags:
- hosted-admin
/t/{slug}/hosted/groups/{group_id}/applications/{application_id}/remove:
post:
operationId: group_revoke_application_t__slug__hosted_groups__group_id__applications__application_id__remove_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Group Revoke Application
tags:
- hosted-admin
/t/{slug}/hosted/groups/{group_id}/leave:
post:
operationId: group_leave_t__slug__hosted_groups__group_id__leave_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Group Leave
tags:
- hosted-admin
/t/{slug}/hosted/groups/{group_id}/members/add:
post:
operationId: group_add_member_t__slug__hosted_groups__group_id__members_add_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_group_add_member_t__slug__hosted_groups__group_id__members_add_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Group Add Member
tags:
- hosted-admin
/t/{slug}/hosted/groups/{group_id}/members/{identity_id}/admin:
post:
operationId: group_set_admin_t__slug__hosted_groups__group_id__members__identity_id__admin_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_group_set_admin_t__slug__hosted_groups__group_id__members__identity_id__admin_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Group Set Admin
tags:
- hosted-admin
/t/{slug}/hosted/groups/{group_id}/members/{identity_id}/remove:
post:
operationId: group_remove_member_t__slug__hosted_groups__group_id__members__identity_id__remove_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Group Remove Member
tags:
- hosted-admin
/t/{slug}/hosted/groups/{group_id}/search-users:
get:
description: Email-autocomplete for the add-member field; group/tenant admins only.
operationId: group_search_users_t__slug__hosted_groups__group_id__search_users_get
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: query
name: q
required: false
schema:
default: ''
title: Q
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Group Search Users
tags:
- hosted-admin
/t/{slug}/hosted/groups/{group_id}/transfer:
post:
operationId: group_transfer_t__slug__hosted_groups__group_id__transfer_post
parameters:
- in: path
name: slug
required: true
schema:
title: Slug
type: string
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_group_transfer_t__slug__hosted_groups__group_id__transfer_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Group Transfer
tags:
- hosted-admin
/t/{tenant_slug}:
get:
description: 'The application selector (FR-020). Parameter-free, so any application can link to
it.
Served at TWO addresses, by this one handler: the tenant root ``/t/{slug}`` and the original
``/t/{slug}/hosted/apps``. The root is where this is going — ``…/hosted/apps`` is to be retired
— so the two are the same function and the same session cookie, never a redirect between them
and never a second implementation. See the migration note below the ``…/go`` handler.'
operationId: hosted_application_selector_t__tenant_slug__get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Hosted Application Selector
tags:
- hosted-login
/t/{tenant_slug}/.well-known/oauth-authorization-server:
get:
operationId: discovery_t__tenant_slug___well_known_oauth_authorization_server_get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Discovery T Tenant Slug Well Known Oauth Authorization Server Get
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Discovery
tags:
- oauth
/t/{tenant_slug}/.well-known/openid-configuration:
get:
operationId: discovery_t__tenant_slug___well_known_openid_configuration_get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Discovery T Tenant Slug Well Known Openid Configuration Get
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Discovery
tags:
- oauth
/t/{tenant_slug}/exit:
get:
description: 'Leave an application: to the selector when there is a choice, otherwise out (FR-018/019/020).
"Otherwise" means the person has at most one application and no administrative reach. Sending
them to the selector would show a page with one button back into the application they just
left; sending them to that application would be a loop. Exit means exit.
A missing, expired or unusable session takes the same branch (FR-021). `hosted_logout` is
already best-effort about the cookie — it clears and renders the signed-out page with no error
— so there is nothing to special-case, and demanding a sign-in from someone trying to leave
would be the wrong direction entirely.'
operationId: hosted_exit_t__tenant_slug__exit_get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Hosted Exit
tags:
- hosted-login
/t/{tenant_slug}/hosted/apps:
get:
description: 'The application selector (FR-020). Parameter-free, so any application can link to
it.
Served at TWO addresses, by this one handler: the tenant root ``/t/{slug}`` and the original
``/t/{slug}/hosted/apps``. The root is where this is going — ``…/hosted/apps`` is to be retired
— so the two are the same function and the same session cookie, never a redirect between them
and never a second implementation. See the migration note below the ``…/go`` handler.'
operationId: hosted_application_selector_t__tenant_slug__hosted_apps_get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Hosted Application Selector
tags:
- hosted-login
/t/{tenant_slug}/hosted/apps/{application_id}/go:
post:
description: 'Choose an application: register if needed, then forward (FR-022).
A POST because it writes an entitlement. The application id comes from the URL, and is
therefore caller-supplied — so it is checked against a list rebuilt here, not against anything
the page said (FR-019).'
operationId: hosted_application_go_t__tenant_slug__hosted_apps__application_id__go_post
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Hosted Application Go
tags:
- hosted-login
/t/{tenant_slug}/hosted/consent:
get:
description: Ask the person whether this application may act for them (FR-001/002).
operationId: hosted_consent_page_t__tenant_slug__hosted_consent_get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
- in: query
name: return_to
required: false
schema:
default: ''
title: Return To
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Hosted Consent Page
tags:
- hosted-login
post:
description: Record the answer and resume (FR-003/004).
operationId: hosted_consent_submit_t__tenant_slug__hosted_consent_post
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_hosted_consent_submit_t__tenant_slug__hosted_consent_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Hosted Consent Submit
tags:
- hosted-login
/t/{tenant_slug}/hosted/exit:
get:
description: 'The pre-2026-09-02 spelling. Kept working, as a redirect, for applications already
shipped.
A 307 rather than a 301: a permanent redirect is cached by browsers and proxies and would make
the old path effectively un-retirable later, which is the opposite of the point.'
operationId: hosted_exit_legacy_t__tenant_slug__hosted_exit_get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Hosted Exit Legacy
tags:
- hosted-login
/t/{tenant_slug}/hosted/login:
get:
operationId: hosted_login_page_t__tenant_slug__hosted_login_get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
- in: query
name: return_to
required: false
schema:
default: ''
title: Return To
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Hosted Login Page
tags:
- hosted-login
/t/{tenant_slug}/hosted/login/request:
post:
operationId: hosted_login_request_t__tenant_slug__hosted_login_request_post
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_hosted_login_request_t__tenant_slug__hosted_login_request_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Hosted Login Request
tags:
- hosted-login
/t/{tenant_slug}/hosted/login/verify:
post:
operationId: hosted_login_verify_t__tenant_slug__hosted_login_verify_post
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_hosted_login_verify_t__tenant_slug__hosted_login_verify_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Hosted Login Verify
tags:
- hosted-login
/t/{tenant_slug}/hosted/logout:
get:
description: 'RP-initiated logout: revoke the hosted session, clear the cookie, then return the
browser.
Mirrors the OIDC ``end_session_endpoint``. ``post_logout_redirect_uri`` is honoured only when
it is registered for the named ``client_id`` (never an open redirect); otherwise a plain
signed-out page is shown.'
operationId: hosted_logout_t__tenant_slug__hosted_logout_get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
- in: query
name: client_id
required: false
schema:
default: ''
title: Client Id
type: string
- in: query
name: post_logout_redirect_uri
required: false
schema:
default: ''
title: Post Logout Redirect Uri
type: string
- in: query
name: state
required: false
schema:
default: ''
title: State
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Hosted Logout
tags:
- hosted-login
/t/{tenant_slug}/menu:
get:
description: 'Short in-tenant alias: redirect to the tenant root, which serves the selector.'
operationId: hosted_menu_alias_t__tenant_slug__menu_get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Hosted Menu Alias
tags:
- hosted-login
/t/{tenant_slug}/oauth2/authorize:
get:
operationId: authorize_get_t__tenant_slug__oauth2_authorize_get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
- in: query
name: client_id
required: true
schema:
title: Client Id
type: string
- in: query
name: response_type
required: false
schema:
default: code
title: Response Type
type: string
- in: query
name: redirect_uri
required: true
schema:
title: Redirect Uri
type: string
- in: query
name: scope
required: false
schema:
default: openid
title: Scope
type: string
- in: query
name: state
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: State
- in: query
name: code_challenge
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Code Challenge
- in: query
name: code_challenge_method
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Code Challenge Method
- in: query
name: nonce
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Nonce
- in: query
name: login_token
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Login Token
- in: query
name: consent
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Consent
- in: query
name: acr_values
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Acr Values
- in: query
name: prompt
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Prompt
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Authorize Get
tags:
- oauth
post:
operationId: authorize_post_t__tenant_slug__oauth2_authorize_post
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_authorize_post_t__tenant_slug__oauth2_authorize_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Authorize Post
tags:
- oauth
/t/{tenant_slug}/oauth2/introspect:
post:
operationId: introspect_t__tenant_slug__oauth2_introspect_post
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_introspect_t__tenant_slug__oauth2_introspect_post'
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Introspect T Tenant Slug Oauth2 Introspect Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Introspect
tags:
- oauth
/t/{tenant_slug}/oauth2/jwks:
get:
operationId: jwks_t__tenant_slug__oauth2_jwks_get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Jwks T Tenant Slug Oauth2 Jwks Get
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Jwks
tags:
- oauth
/t/{tenant_slug}/oauth2/revoke:
post:
operationId: revoke_t__tenant_slug__oauth2_revoke_post
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_revoke_t__tenant_slug__oauth2_revoke_post'
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Revoke T Tenant Slug Oauth2 Revoke Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Revoke
tags:
- oauth
/t/{tenant_slug}/oauth2/token:
post:
operationId: token_t__tenant_slug__oauth2_token_post
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_token_t__tenant_slug__oauth2_token_post'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Token
tags:
- oauth
/t/{tenant_slug}/oauth2/userinfo:
get:
operationId: userinfo_t__tenant_slug__oauth2_userinfo_get
parameters:
- in: path
name: tenant_slug
required: true
schema:
title: Tenant Slug
type: string
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Userinfo T Tenant Slug Oauth2 Userinfo Get
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Userinfo
tags:
- oauth
/tenant-handovers/{token}:
get:
description: 'A thin browser page over the real POST below (Principle II: no UI-only capability).'
operationId: handover_page_tenant_handovers__token__get
parameters:
- in: path
name: token
required: true
schema:
title: Token
type: string
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Handover Page
tags:
- tenant-handover
/tenant-handovers/{token}/accept:
post:
operationId: accept_handover_tenant_handovers__token__accept_post
parameters:
- in: path
name: token
required: true
schema:
title: Token
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/HandoverAcceptResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Accept Handover
tags:
- tenant-handover
/tenant-handovers/{token}/decline:
post:
operationId: decline_handover_tenant_handovers__token__decline_post
parameters:
- in: path
name: token
required: true
schema:
title: Token
type: string
responses:
'200':
content:
application/json:
schema:
additionalProperties:
type: string
title: Response Decline Handover Tenant Handovers Token Decline Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Decline Handover
tags:
- tenant-handover
/v1/admin-keys:
get:
operationId: list_admin_keys_v1_admin_keys_get
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/AdminKeyResponse'
title: Response List Admin Keys V1 Admin Keys Get
type: array
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Admin Keys
tags:
- admin
post:
operationId: create_admin_key_v1_admin_keys_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AdminKeyCreate'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/AdminKeyResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Admin Key
tags:
- admin
/v1/admin-keys/{key_id}:
delete:
operationId: revoke_admin_key_v1_admin_keys__key_id__delete
parameters:
- in: path
name: key_id
required: true
schema:
format: uuid
title: Key Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Revoke Admin Key
tags:
- admin
/v1/ai/suggestions:
get:
operationId: list_suggestions_v1_ai_suggestions_get
parameters:
- in: query
name: status
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Status
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SuggestionList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Suggestions
tags:
- ai
/v1/ai/suggestions/{suggestion_id}:accept:
post:
operationId: accept_suggestion_v1_ai_suggestions__suggestion_id__accept_post
parameters:
- in: path
name: suggestion_id
required: true
schema:
format: uuid
title: Suggestion Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SuggestionResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Accept Suggestion
tags:
- ai
/v1/ai/suggestions/{suggestion_id}:dismiss:
post:
operationId: dismiss_suggestion_v1_ai_suggestions__suggestion_id__dismiss_post
parameters:
- in: path
name: suggestion_id
required: true
schema:
format: uuid
title: Suggestion Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SuggestionResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Dismiss Suggestion
tags:
- ai
/v1/applications:
get:
description: 'List this tenant''s live applications: ids, URIs, registered scopes, lifecycle state.
Read-only; lets operators find an application''s `id` to manage it (PATCH/disable/rotate/delete)
without a DB query. Deleted applications are excluded. Never returns secrets.'
operationId: list_applications_v1_applications_get
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ApplicationListItem'
title: Response List Applications V1 Applications Get
type: array
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Applications
tags:
- admin
post:
operationId: create_application_v1_applications_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationCreate'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Application
tags:
- admin
/v1/applications/{application_id}:
delete:
description: Permanently retire an application (terminal soft-delete) + cascade (feature 016).
operationId: delete_application_v1_applications__application_id__delete
parameters:
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Delete Application
tags:
- admin
patch:
description: Update access mode and decision-hook config (005; manageable by an app admin, 018).
operationId: update_application_v1_applications__application_id__patch
parameters:
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationUpdate'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Update Application
tags:
- admin
/v1/applications/{application_id}/access:
get:
operationId: list_application_access_v1_applications__application_id__access_get
parameters:
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: query
name: cursor
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Cursor
- in: query
name: limit
required: false
schema:
default: 50
maximum: 200
minimum: 1
title: Limit
type: integer
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AccessGrantList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Application Access
tags:
- access-control
/v1/applications/{application_id}/access/{identity_id}:
delete:
description: Revoke an identity's access (tenant admin or an app admin of this app, feature 018).
operationId: revoke_access_v1_applications__application_id__access__identity_id__delete
parameters:
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Revoke Access
tags:
- access-control
put:
description: Grant an identity access to the application (tenant admin or an app admin, feature
018).
operationId: grant_access_v1_applications__application_id__access__identity_id__put
parameters:
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Grant Access
tags:
- access-control
/v1/applications/{application_id}/admins:
get:
description: List this application's administrators (tenant admin or an app admin of it).
operationId: list_application_admins_v1_applications__application_id__admins_get
parameters:
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationAdminList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Application Admins
tags:
- admin
/v1/applications/{application_id}/admins/{identity_id}:
delete:
description: Remove an administrator designation (idempotent; no last-admin lockout).
operationId: remove_application_admin_v1_applications__application_id__admins__identity_id__delete
parameters:
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Remove Application Admin
tags:
- admin
put:
description: Designate an identity as an admin of this application (tenant admin or an app admin).
operationId: assign_application_admin_v1_applications__application_id__admins__identity_id__put
parameters:
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Assign Application Admin
tags:
- admin
/v1/applications/{application_id}/disable:
post:
description: Reversibly disable an application; revokes its tokens/sessions/grants (feature 016).
operationId: disable_application_v1_applications__application_id__disable_post
parameters:
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationStateResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Disable Application
tags:
- admin
/v1/applications/{application_id}/enable:
post:
description: Re-enable a disabled application (deleted apps are terminal → 404) (feature 016).
operationId: enable_application_v1_applications__application_id__enable_post
parameters:
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationStateResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Enable Application
tags:
- admin
/v1/applications/{application_id}/rotate-secret:
post:
description: Rotate a confidential application's client secret; return it once (feature 016).
operationId: rotate_application_secret_v1_applications__application_id__rotate_secret_post
parameters:
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/RotateSecretRequest'
- type: 'null'
title: Body
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RotatedSecretResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Rotate Application Secret
tags:
- admin
/v1/auth/login:
post:
description: 'Verify primary credentials; return a short-lived login token for /authorize.
Feature 013: the user may identify by email OR username. A username is resolved to its
identity''s email before verification; an unresolved identifier still runs verification (against
a non-existent address) so failures stay non-enumerating.'
operationId: login_v1_auth_login_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LoginRequest'
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Login V1 Auth Login Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Login
tags:
- auth
/v1/auth/magic-link/request:
post:
description: Email a one-click sign-in link (redeemed by the integrating app). Always 202.
operationId: magic_link_request_v1_auth_magic_link_request_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MagicLinkRequest'
required: true
responses:
'202':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Magic Link Request
tags:
- auth
/v1/auth/magic-link/verify:
post:
description: Redeem a magic-link token and return a login token.
operationId: magic_link_verify_v1_auth_magic_link_verify_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MagicLinkVerify'
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties:
type: string
title: Response Magic Link Verify V1 Auth Magic Link Verify Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Magic Link Verify
tags:
- auth
/v1/auth/otp/request:
post:
description: Send a passwordless one-time code (email or SMS). Always 202 (no enumeration).
operationId: otp_login_request_v1_auth_otp_request_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OtpLoginRequest'
required: true
responses:
'202':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Otp Login Request
tags:
- auth
/v1/auth/otp/verify:
post:
description: Verify a passwordless code and return a login token.
operationId: otp_login_verify_v1_auth_otp_verify_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OtpLoginVerify'
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties:
type: string
title: Response Otp Login Verify V1 Auth Otp Verify Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Otp Login Verify
tags:
- auth
/v1/auth/password-reset/confirm:
post:
operationId: password_reset_confirm_v1_auth_password_reset_confirm_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PasswordResetConfirm'
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties:
type: string
title: Response Password Reset Confirm V1 Auth Password Reset Confirm Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Password Reset Confirm
tags:
- auth
/v1/auth/password-reset/request:
post:
operationId: password_reset_request_v1_auth_password_reset_request_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EmailRequest'
required: true
responses:
'202':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Password Reset Request
tags:
- auth
/v1/auth/register:
post:
operationId: register_v1_auth_register_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterRequest'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/IdentityResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Register
tags:
- auth
/v1/auth/verify-email/confirm:
post:
operationId: verify_email_confirm_v1_auth_verify_email_confirm_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TokenConfirm'
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties:
type: string
title: Response Verify Email Confirm V1 Auth Verify Email Confirm Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Verify Email Confirm
tags:
- auth
/v1/auth/verify-email/request:
post:
operationId: verify_email_request_v1_auth_verify_email_request_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EmailRequest'
required: true
responses:
'202':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Verify Email Request
tags:
- auth
/v1/backups:
get:
operationId: list_backups_v1_backups_get
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/BackupResponse'
title: Response List Backups V1 Backups Get
type: array
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Backups
tags:
- backups
post:
operationId: create_backup_v1_backups_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BackupCreate'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/BackupResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Backup
tags:
- backups
/v1/backups/{backup_id}:
delete:
operationId: delete_backup_v1_backups__backup_id__delete
parameters:
- in: path
name: backup_id
required: true
schema:
format: uuid
title: Backup Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Delete Backup
tags:
- backups
get:
operationId: get_backup_v1_backups__backup_id__get
parameters:
- in: path
name: backup_id
required: true
schema:
format: uuid
title: Backup Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BackupResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Get Backup
tags:
- backups
/v1/backups/{backup_id}/download:
get:
operationId: download_backup_v1_backups__backup_id__download_get
parameters:
- in: path
name: backup_id
required: true
schema:
format: uuid
title: Backup Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Download Backup
tags:
- backups
/v1/email-aliases/lookup:
post:
description: Resolve a commit-author address → owning identity (the git-push hot path).
operationId: lookup_alias_v1_email_aliases_lookup_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/hap__api__v1__email_aliases__LookupRequest'
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Lookup Alias V1 Email Aliases Lookup Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Lookup Alias
tags:
- email-aliases
/v1/groups:
get:
operationId: list_groups_v1_groups_get
parameters:
- in: query
name: cursor
required: false
schema:
anyOf:
- format: uuid
type: string
- type: 'null'
title: Cursor
- in: query
name: limit
required: false
schema:
default: 50
maximum: 200
minimum: 1
title: Limit
type: integer
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GroupList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Groups
tags:
- groups
post:
operationId: create_group_v1_groups_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GroupCreate'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/GroupResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Group
tags:
- groups
/v1/groups/{group_id}:
get:
operationId: get_group_v1_groups__group_id__get
parameters:
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GroupDetailResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Get Group
tags:
- groups
/v1/groups/{group_id}/applications:
get:
operationId: list_group_applications_v1_groups__group_id__applications_get
parameters:
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/GroupApplicationGrantResponse'
title: Response List Group Applications V1 Groups Group Id Applications Get
type: array
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Group Applications
tags:
- groups
/v1/groups/{group_id}/applications/{application_id}:
delete:
operationId: revoke_application_v1_groups__group_id__applications__application_id__delete
parameters:
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Revoke Application
tags:
- groups
put:
operationId: grant_application_v1_groups__group_id__applications__application_id__put
parameters:
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: path
name: application_id
required: true
schema:
format: uuid
title: Application Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Grant Application
tags:
- groups
/v1/groups/{group_id}/leave:
post:
operationId: leave_group_v1_groups__group_id__leave_post
parameters:
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Leave Group
tags:
- groups
/v1/groups/{group_id}/members:
post:
operationId: add_member_v1_groups__group_id__members_post
parameters:
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddMemberRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GroupDetailResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Add Member
tags:
- groups
/v1/groups/{group_id}/members/{identity_id}:
delete:
operationId: remove_member_v1_groups__group_id__members__identity_id__delete
parameters:
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Remove Member
tags:
- groups
/v1/groups/{group_id}/members/{identity_id}/admin:
delete:
operationId: revoke_admin_v1_groups__group_id__members__identity_id__admin_delete
parameters:
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Revoke Admin
tags:
- groups
put:
operationId: grant_admin_v1_groups__group_id__members__identity_id__admin_put
parameters:
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Grant Admin
tags:
- groups
/v1/groups/{group_id}/reassign-owner:
post:
operationId: reassign_owner_v1_groups__group_id__reassign_owner_post
parameters:
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ReassignOwnerRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GroupResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Reassign Owner
tags:
- groups
/v1/groups/{group_id}/transfer-ownership:
post:
operationId: transfer_ownership_v1_groups__group_id__transfer_ownership_post
parameters:
- in: path
name: group_id
required: true
schema:
format: uuid
title: Group Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TransferOwnershipRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GroupResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Transfer Ownership
tags:
- groups
/v1/identities:
get:
operationId: list_identities_v1_identities_get
parameters:
- in: query
name: email
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Email
- in: query
name: status
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Status
- description: 'Filter on the tenant-administrator designation: omit for all identities, true for
administrators only, false for everyone else. Reports the stored designation, not the active-and-designated
form asserted in tokens — it filters on the flag and NOT on status, so a SUSPENDED administrator
is listed with is_tenant_admin true. Read each item''s status for the effective form.'
in: query
name: tenant_admin
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
description: 'Filter on the tenant-administrator designation: omit for all identities, true
for administrators only, false for everyone else. Reports the stored designation, not the
active-and-designated form asserted in tokens — it filters on the flag and NOT on status,
so a SUSPENDED administrator is listed with is_tenant_admin true. Read each item''s status
for the effective form.'
title: Tenant Admin
- in: query
name: cursor
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Cursor
- in: query
name: limit
required: false
schema:
default: 50
maximum: 200
minimum: 1
title: Limit
type: integer
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/IdentityList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Identities
tags:
- identities
post:
operationId: create_identity_v1_identities_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IdentityCreate'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/IdentityResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Identity
tags:
- identities
/v1/identities/{identity_id}:
delete:
operationId: delete_identity_v1_identities__identity_id__delete
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Delete Identity
tags:
- identities
get:
operationId: get_identity_v1_identities__identity_id__get
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/IdentityResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Get Identity
tags:
- identities
patch:
operationId: update_identity_v1_identities__identity_id__patch
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IdentityUpdate'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/IdentityResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Update Identity
tags:
- identities
/v1/identities/{identity_id}/administered-applications:
get:
description: List the applications an identity administers (feature 018).
operationId: list_administered_applications_v1_identities__identity_id__administered_applications_get
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AdministeredApplicationsList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Administered Applications
tags:
- access-control
/v1/identities/{identity_id}/applications:
get:
operationId: list_identity_applications_v1_identities__identity_id__applications_get
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/IdentityApplicationsList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Identity Applications
tags:
- access-control
/v1/identities/{identity_id}/email-aliases:
get:
operationId: list_aliases_v1_identities__identity_id__email_aliases_get
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/AliasResponse'
title: Response List Aliases V1 Identities Identity Id Email Aliases Get
type: array
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Aliases
tags:
- email-aliases
post:
description: 'Start verification: 202 pending (code emailed to the alias) / 200 already_verified.'
operationId: start_alias_verification_v1_identities__identity_id__email_aliases_post
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StartAliasRequest'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Start Alias Verification
tags:
- email-aliases
/v1/identities/{identity_id}/email-aliases/register:
post:
description: 'Operator-asserted pre-verified alias — 201 created / 200 already_verified. NO email
sent.
Behind the dedicated ``email_aliases:register`` scope (not ``:write``), so the member
self-service key cannot mint a verified alias without the emailed-code proof. Because no email
is sent, validation is syntactic only — reserved/non-routable domains (``user@host.local``) are
accepted; the emailed-code start/verify paths keep full ``EmailStr`` validation.'
operationId: register_alias_v1_identities__identity_id__email_aliases_register_post
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterAliasRequest'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Register Alias
tags:
- email-aliases
/v1/identities/{identity_id}/email-aliases/verify:
post:
operationId: verify_alias_v1_identities__identity_id__email_aliases_verify_post
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyAliasRequest'
required: true
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Verify Alias
tags:
- email-aliases
/v1/identities/{identity_id}/email-aliases/{alias_id}:
delete:
operationId: remove_alias_v1_identities__identity_id__email_aliases__alias_id__delete
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: path
name: alias_id
required: true
schema:
format: uuid
title: Alias Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Remove Alias
tags:
- email-aliases
/v1/identities/{identity_id}/group-create-grant:
delete:
operationId: revoke_group_create_v1_identities__identity_id__group_create_grant_delete
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Revoke Group Create
tags:
- identities
put:
operationId: grant_group_create_v1_identities__identity_id__group_create_grant_put
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Grant Group Create
tags:
- identities
/v1/identities/{identity_id}/roles:
get:
description: 'Read back the roles an identity holds (feature 029, FR-018).
The headless half of the console''s roles page. Without it a tenant administrator could grant
a
role through the API but never confirm what somebody currently holds.'
operationId: list_identity_roles_v1_identities__identity_id__roles_get
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AssignedRoleList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Identity Roles
tags:
- rbac
post:
operationId: assign_role_v1_identities__identity_id__roles_post
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AssignRequest'
required: true
responses:
'201':
content:
application/json:
schema:
additionalProperties:
type: string
title: Response Assign Role V1 Identities Identity Id Roles Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Assign Role
tags:
- rbac
/v1/identities/{identity_id}/roles/{role_id}:
delete:
operationId: revoke_role_v1_identities__identity_id__roles__role_id__delete
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: path
name: role_id
required: true
schema:
format: uuid
title: Role Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Revoke Role
tags:
- rbac
/v1/identities/{identity_id}/sessions:
get:
operationId: admin_list_sessions_v1_identities__identity_id__sessions_get
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SessionList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Admin List Sessions
tags:
- sessions
/v1/identities/{identity_id}/sessions:revoke-all:
post:
operationId: admin_revoke_all_v1_identities__identity_id__sessions_revoke_all_post
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
additionalProperties:
type: integer
title: Response Admin Revoke All V1 Identities Identity Id Sessions Revoke All Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Admin Revoke All
tags:
- sessions
/v1/identities/{identity_id}/ssh-keys:
get:
operationId: list_keys_v1_identities__identity_id__ssh_keys_get
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/KeyMetadata'
title: Response List Keys V1 Identities Identity Id Ssh Keys Get
type: array
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Keys
tags:
- ssh-keys
post:
operationId: register_key_v1_identities__identity_id__ssh_keys_post
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterKeyRequest'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/RegisteredKey'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Register Key
tags:
- ssh-keys
/v1/identities/{identity_id}/ssh-keys/{key_id}:
delete:
operationId: remove_key_v1_identities__identity_id__ssh_keys__key_id__delete
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: path
name: key_id
required: true
schema:
format: uuid
title: Key Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Remove Key
tags:
- ssh-keys
/v1/identities/{identity_id}/tenant-admin:
delete:
operationId: revoke_tenant_admin_v1_identities__identity_id__tenant_admin_delete
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Revoke Tenant Admin
tags:
- identities
put:
operationId: grant_tenant_admin_v1_identities__identity_id__tenant_admin_put
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Grant Tenant Admin
tags:
- identities
/v1/identities/{identity_id}/tokens:
get:
operationId: list_tokens_v1_identities__identity_id__tokens_get
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/TokenMetadata'
title: Response List Tokens V1 Identities Identity Id Tokens Get
type: array
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Tokens
tags:
- personal-tokens
post:
operationId: create_token_v1_identities__identity_id__tokens_post
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTokenRequest'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/CreatedToken'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Token
tags:
- personal-tokens
/v1/identities/{identity_id}/tokens/{token_id}:
delete:
operationId: revoke_token_v1_identities__identity_id__tokens__token_id__delete
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: path
name: token_id
required: true
schema:
format: uuid
title: Token Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Revoke Token
tags:
- personal-tokens
/v1/identities/{identity_id}/username:
delete:
description: Remove a user's username (admin); the released handle enters quarantine (feature 013).
operationId: clear_username_v1_identities__identity_id__username_delete
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Clear Username
tags:
- identities
/v1/invitations:
post:
operationId: create_invitation_v1_invitations_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/InvitationCreateRequest'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/InvitationCreateResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Invitation
tags:
- invitations
/v1/me/applications:
get:
description: 'The applications this person may use — the typed twin of the hosted selector (FR-029).
Same list, same order, same ``launchable`` flags as the page, because both call
``app_selector.list_available``. An entry with ``launchable: false`` has no home page recorded
and MUST NOT be forwarded to; it is returned rather than hidden so a caller can show the same
"ask an administrator" message the page shows.
Feature 028 adds ``selector_relevant`` and ``destinations`` (FR-028): the hosted exit page
branches on exactly this answer, and a capability the Hosted UI has must be reachable through
the typed API (constitution Principle II). Both come from ``resolve_selector_context``, which
the exit page also calls, so the two cannot disagree.'
operationId: list_my_applications_v1_me_applications_get
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MyApplicationsResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List My Applications
tags:
- account
/v1/me/groups:
get:
operationId: my_groups_v1_me_groups_get
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/MyGroupEntry'
title: Response My Groups V1 Me Groups Get
type: array
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: My Groups
tags:
- groups
/v1/me/ssh-keys:
get:
operationId: list_my_keys_v1_me_ssh_keys_get
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/KeyMetadata'
title: Response List My Keys V1 Me Ssh Keys Get
type: array
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List My Keys
tags:
- ssh-keys
post:
operationId: register_my_key_v1_me_ssh_keys_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterKeyRequest'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/RegisteredKey'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Register My Key
tags:
- ssh-keys
/v1/me/ssh-keys/{key_id}:
delete:
operationId: remove_my_key_v1_me_ssh_keys__key_id__delete
parameters:
- in: path
name: key_id
required: true
schema:
format: uuid
title: Key Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Remove My Key
tags:
- ssh-keys
/v1/me/username:
get:
operationId: get_my_username_v1_me_username_get
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UsernameResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Get My Username
tags:
- account
put:
operationId: set_my_username_v1_me_username_put
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UsernameBody'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UsernameResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Set My Username
tags:
- account
/v1/mfa/otp/send:
post:
operationId: otp_send_v1_mfa_otp_send_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OtpSendRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MfaResult'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Otp Send
tags:
- mfa
/v1/mfa/otp/verify:
post:
operationId: otp_verify_v1_mfa_otp_verify_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OtpVerifyRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MfaResult'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Otp Verify
tags:
- mfa
/v1/mfa/totp/confirm:
post:
operationId: totp_confirm_v1_mfa_totp_confirm_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CodeRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MfaResult'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Totp Confirm
tags:
- mfa
/v1/mfa/totp/enroll:
post:
operationId: totp_enroll_v1_mfa_totp_enroll_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TotpEnrollRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TotpEnrollResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Totp Enroll
tags:
- mfa
/v1/mfa/totp/verify:
post:
operationId: totp_verify_v1_mfa_totp_verify_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CodeRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MfaResult'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Totp Verify
tags:
- mfa
/v1/platform/admin-keys:
post:
description: Issue a tenant-unbound admin key, optionally carrying a provisioning caller label.
operationId: create_platform_admin_key_v1_platform_admin_keys_post
parameters:
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PlatformAdminKeyCreate'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/PlatformAdminKeyResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Platform Admin Key
tags:
- admin
/v1/platform/operators:
get:
operationId: list_platform_operators_v1_platform_operators_get
parameters:
- in: query
name: cursor
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Cursor
- in: query
name: limit
required: false
schema:
default: 50
maximum: 200
minimum: 1
title: Limit
type: integer
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PlatformOperatorList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Platform Operators
tags:
- platform
/v1/platform/operators/{identity_id}:
delete:
description: Remove the designation. Idempotent, and permitted even for the last operator.
operationId: revoke_platform_operator_v1_platform_operators__identity_id__delete
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Revoke Platform Operator
tags:
- platform
put:
description: Designate an identity a platform operator. Idempotent.
operationId: grant_platform_operator_v1_platform_operators__identity_id__put
parameters:
- in: path
name: identity_id
required: true
schema:
format: uuid
title: Identity Id
type: string
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Grant Platform Operator
tags:
- platform
/v1/providers:
post:
operationId: create_provider_v1_providers_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderCreate'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Provider
tags:
- admin
/v1/providers/{provider_id}/callback:
get:
operationId: provider_callback_v1_providers__provider_id__callback_get
parameters:
- in: path
name: provider_id
required: true
schema:
format: uuid
title: Provider Id
type: string
- in: query
name: code
required: true
schema:
title: Code
type: string
- in: query
name: state
required: true
schema:
title: State
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
responses:
'200':
content:
application/json:
schema:
additionalProperties:
type: string
title: Response Provider Callback V1 Providers Provider Id Callback Get
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Provider Callback
tags:
- federation
/v1/providers/{provider_id}/login:
get:
operationId: provider_login_v1_providers__provider_id__login_get
parameters:
- in: path
name: provider_id
required: true
schema:
format: uuid
title: Provider Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
responses:
'200':
content:
application/json:
schema:
additionalProperties:
type: string
title: Response Provider Login V1 Providers Provider Id Login Get
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Provider Login
tags:
- federation
/v1/rbac/roles:
get:
operationId: list_roles_v1_rbac_roles_get
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RoleList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Roles
tags:
- rbac
post:
operationId: create_role_v1_rbac_roles_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RoleCreate'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/RoleResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Role
tags:
- rbac
/v1/registration-policy:
get:
description: Read who may self-register in this tenant.
operationId: read_registration_policy_v1_registration_policy_get
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RegistrationPolicyResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Read Registration Policy
tags:
- registration-policy
put:
description: Replace the managed sign-up settings, preserving every setting this surface does not
show.
operationId: update_registration_policy_v1_registration_policy_put
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RegistrationPolicyUpdate'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RegistrationPolicyResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Update Registration Policy
tags:
- registration-policy
/v1/restores:
post:
operationId: create_restore_v1_restores_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RestoreResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Restore
tags:
- backups
/v1/restores/{restore_id}:
get:
operationId: get_restore_v1_restores__restore_id__get
parameters:
- in: path
name: restore_id
required: true
schema:
format: uuid
title: Restore Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RestoreResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Get Restore
tags:
- backups
/v1/saml/issue:
post:
description: Issue a signed SAML assertion for a saml_sp application (SP-initiated, headless).
operationId: saml_issue_v1_saml_issue_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SamlIssueRequest'
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties:
type: string
title: Response Saml Issue V1 Saml Issue Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Saml Issue
tags:
- federation
/v1/saml/{provider_id}/acs:
post:
operationId: saml_acs_v1_saml__provider_id__acs_post
parameters:
- in: path
name: provider_id
required: true
schema:
format: uuid
title: Provider Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_saml_acs_v1_saml__provider_id__acs_post'
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties:
type: string
title: Response Saml Acs V1 Saml Provider Id Acs Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Saml Acs
tags:
- federation
/v1/saml/{provider_id}/metadata:
get:
operationId: saml_metadata_v1_saml__provider_id__metadata_get
parameters:
- in: path
name: provider_id
required: true
schema:
format: uuid
title: Provider Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
responses:
'200':
content:
application/json:
schema: {}
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Saml Metadata
tags:
- federation
/v1/sessions:
delete:
operationId: logout_everywhere_v1_sessions_delete
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Logout Everywhere
tags:
- sessions
get:
operationId: list_my_sessions_v1_sessions_get
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SessionList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List My Sessions
tags:
- sessions
/v1/sessions/{session_id}:
delete:
operationId: revoke_my_session_v1_sessions__session_id__delete
parameters:
- in: path
name: session_id
required: true
schema:
format: uuid
title: Session Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Revoke My Session
tags:
- sessions
/v1/ssh-keys/lookup:
post:
operationId: lookup_key_v1_ssh_keys_lookup_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/hap__api__v1__ssh_keys__LookupRequest'
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Lookup Key V1 Ssh Keys Lookup Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Lookup Key
tags:
- ssh-keys
/v1/tenants:
get:
description: 'The tenant inventory — every tenant, every lifecycle status, in stable pages.
Not audited: FR-023 asks for an audit entry when a tenant''s *configuration* is read, and a row
per tenant per page view would bury the trail it exists to strengthen.'
operationId: list_tenants_v1_tenants_get
parameters:
- in: query
name: cursor
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Cursor
- in: query
name: limit
required: false
schema:
default: 50
maximum: 200
minimum: 1
title: Limit
type: integer
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TenantList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Tenants
tags:
- platform
post:
description: 'Create a tenant — with its first administrator when ``admin_email`` is supplied.
Authority moved from the root bootstrap credential (``require_platform_admin``) to the narrow
``tenants:provision`` scope on a platform-scoped key, so the caller that creates tenants no
longer needs authority over everything else (feature 023, FR-009). The bootstrap key still
works: it holds every scope.'
operationId: create_tenant_v1_tenants_post
parameters:
- in: header
name: Idempotency-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Idempotency-Key
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TenantCreate'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/TenantResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Tenant
tags:
- admin
/v1/tenants/{tenant_id}:
get:
description: One tenant's effective, secret-free configuration, whatever its lifecycle status.
operationId: read_tenant_v1_tenants__tenant_id__get
parameters:
- in: path
name: tenant_id
required: true
schema:
format: uuid
title: Tenant Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
- in: header
name: Authorization
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TenantConfiguration'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Read Tenant
tags:
- platform
patch:
description: 'Toggle opt-in tenant surfaces (Hosted Login / passwordless JIT) on an existing tenant.
Lets operators enable Hosted Login without a raw DB write (the only prior path). Platform-admin
scoped, like tenant creation.'
operationId: update_tenant_v1_tenants__tenant_id__patch
parameters:
- in: path
name: tenant_id
required: true
schema:
format: uuid
title: Tenant Id
type: string
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TenantUpdate'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TenantResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Update Tenant
tags:
- admin
/v1/tenants/{tenant_id}/admin-handovers:
get:
operationId: list_handovers_v1_tenants__tenant_id__admin_handovers_get
parameters:
- in: path
name: tenant_id
required: true
schema:
format: uuid
title: Tenant Id
type: string
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/HandoverResponse'
title: Response List Handovers V1 Tenants Tenant Id Admin Handovers Get
type: array
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Handovers
tags:
- tenant-handover
post:
description: 'Confirm a previewed handover: create it, email the proof, notify current administrators.'
operationId: create_handover_v1_tenants__tenant_id__admin_handovers_post
parameters:
- in: path
name: tenant_id
required: true
schema:
format: uuid
title: Tenant Id
type: string
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/HandoverCreateRequest'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/HandoverResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Handover
tags:
- tenant-handover
/v1/tenants/{tenant_id}/admin-handovers/preview:
post:
description: Describe the change and issue a confirmation token. Persists nothing.
operationId: preview_handover_v1_tenants__tenant_id__admin_handovers_preview_post
parameters:
- in: path
name: tenant_id
required: true
schema:
format: uuid
title: Tenant Id
type: string
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/HandoverPreviewRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/HandoverPreviewResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Preview Handover
tags:
- tenant-handover
/v1/tenants/{tenant_id}/admin-handovers/{handover_id}:
get:
operationId: get_handover_v1_tenants__tenant_id__admin_handovers__handover_id__get
parameters:
- in: path
name: tenant_id
required: true
schema:
format: uuid
title: Tenant Id
type: string
- in: path
name: handover_id
required: true
schema:
format: uuid
title: Handover Id
type: string
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/HandoverResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Get Handover
tags:
- tenant-handover
/v1/tokens/introspect:
post:
operationId: introspect_token_v1_tokens_introspect_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Body_introspect_token_v1_tokens_introspect_post'
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Introspect Token V1 Tokens Introspect Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Introspect Token
tags:
- personal-tokens
/v1/webauthn/login/begin:
post:
operationId: login_begin_v1_webauthn_login_begin_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LoginBegin'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/LoginBeginResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Login Begin
tags:
- webauthn
/v1/webauthn/login/finish:
post:
operationId: login_finish_v1_webauthn_login_finish_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LoginFinish'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/LoginFinishResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Login Finish
tags:
- webauthn
/v1/webauthn/register/begin:
post:
operationId: register_begin_v1_webauthn_register_begin_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterBegin'
required: true
responses:
'200':
content:
application/json:
schema:
additionalProperties: true
title: Response Register Begin V1 Webauthn Register Begin Post
type: object
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Register Begin
tags:
- webauthn
/v1/webauthn/register/finish:
post:
operationId: register_finish_v1_webauthn_register_finish_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterFinish'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/OkResult'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Register Finish
tags:
- webauthn
/v1/webhooks:
get:
operationId: list_webhooks_v1_webhooks_get
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: List Webhooks
tags:
- webhooks
post:
operationId: create_webhook_v1_webhooks_post
parameters:
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookCreate'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookCreated'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Create Webhook
tags:
- webhooks
/v1/webhooks/{webhook_id}:
delete:
operationId: delete_webhook_v1_webhooks__webhook_id__delete
parameters:
- in: path
name: webhook_id
required: true
schema:
format: uuid
title: Webhook Id
type: string
- in: header
name: X-Tenant-Id
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Tenant-Id
- in: header
name: X-Admin-Key
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Admin-Key
responses:
'204':
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Delete Webhook
tags:
- webhooks