{"openapi":"3.1.0","info":{"title":"ID","description":"[Source code](https://gitlab.com/aham.ro/iam/id/-/tree/v0.2.38)","license":{"name":"AGPL-3.0-or-later","identifier":"AGPL-3.0-or-later"},"version":"0.2.38"},"paths":{"/accounts/{account}/projects":{"get":{"tags":["tenancy"],"operationId":"list_projects","parameters":[{"name":"account","in":"path","description":"Account UUID","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Projects for the account"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Account access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"security":[{"bearer_auth":[]}]}},"/api-docs/openapi.json":{"get":{"tags":["system"],"summary":"GET /api-docs/openapi.json","operationId":"GET_api_docs_openapi_json","responses":{"default":{"description":"Endpoint response"}}}},"/api-keys":{"get":{"tags":["system"],"summary":"GET /api-keys","operationId":"GET_api_keys","responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"post":{"tags":["system"],"summary":"POST /api-keys","operationId":"POST_api_keys","responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/api-keys/{id}":{"delete":{"tags":["system"],"summary":"DELETE /api-keys/{id}","operationId":"DELETE_api_keys_id","parameters":[{"name":"id","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"patch":{"tags":["system"],"summary":"PATCH /api-keys/{id}","operationId":"PATCH_api_keys_id","parameters":[{"name":"id","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/assets/{path}":{"get":{"tags":["system"],"summary":"GET /assets/{path}","operationId":"GET_assets_path","parameters":[{"name":"path","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}}}},"/auth/forgot-password":{"get":{"tags":["authentication"],"summary":"GET /auth/forgot-password","operationId":"GET_auth_forgot_password","responses":{"default":{"description":"Endpoint response"}}},"post":{"tags":["authentication"],"summary":"POST /auth/forgot-password","operationId":"POST_auth_forgot_password","responses":{"default":{"description":"Endpoint response"}}}},"/auth/info":{"get":{"tags":["authentication"],"operationId":"auth_info","responses":{"200":{"description":"Authenticated subject"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"security":[{"bearer_auth":[]}]}},"/auth/login":{"get":{"tags":["authentication"],"operationId":"login_get","responses":{"200":{"description":"Login page"}}},"post":{"tags":["authentication"],"operationId":"login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthRequest"}}},"required":true},"responses":{"200":{"description":"Authenticated"},"401":{"description":"Authentication failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/logout":{"post":{"tags":["authentication"],"operationId":"logout","parameters":[{"name":"client","in":"query","description":"OAuth client requesting logout","required":false,"schema":{"type":"string"}},{"name":"post_logout_redirect_uri","in":"query","description":"Registered HTTPS URI to redirect to after logout","required":false,"schema":{"type":"string"}}],"responses":{"303":{"description":"Logged out and redirected"},"400":{"description":"Invalid or unregistered post-logout redirect","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/auth/oauth/callback":{"get":{"tags":["authentication"],"summary":"GET /auth/oauth/callback","operationId":"GET_auth_oauth_callback","responses":{"default":{"description":"Endpoint response"}}}},"/auth/oauth/{provider}/authorize":{"get":{"tags":["authentication"],"summary":"GET /auth/oauth/{provider}/authorize","operationId":"GET_auth_oauth_provider_authorize","parameters":[{"name":"provider","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}}}},"/auth/refresh":{"post":{"tags":["authentication"],"summary":"POST /auth/refresh","operationId":"POST_auth_refresh","responses":{"default":{"description":"Endpoint response"}}}},"/auth/reset-password":{"get":{"tags":["authentication"],"summary":"GET /auth/reset-password","operationId":"GET_auth_reset_password","responses":{"default":{"description":"Endpoint response"}}},"post":{"tags":["authentication"],"summary":"POST /auth/reset-password","operationId":"POST_auth_reset_password","responses":{"default":{"description":"Endpoint response"}}}},"/clients":{"post":{"tags":["applications"],"summary":"POST /clients","operationId":"POST_clients","responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/clients/{client}/access":{"get":{"tags":["authorization"],"summary":"GET /clients/{client}/access","operationId":"GET_clients_client_access","parameters":[{"name":"client","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/debug":{"get":{"tags":["system"],"summary":"GET /debug","operationId":"GET_debug","responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/docs/":{"get":{"tags":["system"],"summary":"GET /docs/","operationId":"GET_docs","responses":{"default":{"description":"Endpoint response"}}}},"/groups":{"get":{"tags":["tenancy"],"summary":"GET /groups","operationId":"GET_groups","responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"post":{"tags":["tenancy"],"summary":"POST /groups","operationId":"POST_groups","responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/groups/{group}":{"delete":{"tags":["tenancy"],"summary":"DELETE /groups/{group}","operationId":"DELETE_groups_group","parameters":[{"name":"group","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"patch":{"tags":["tenancy"],"summary":"PATCH /groups/{group}","operationId":"PATCH_groups_group","parameters":[{"name":"group","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/health":{"get":{"tags":["system"],"operationId":"health","responses":{"200":{"description":"Service is healthy"},"503":{"description":"Database is unavailable"}}}},"/metrics":{"get":{"tags":["system"],"summary":"GET /metrics","operationId":"GET_metrics","responses":{"default":{"description":"Endpoint response"}}}},"/notifications":{"get":{"tags":["system"],"summary":"GET /notifications","operationId":"GET_notifications","responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/notifications/read":{"post":{"tags":["system"],"summary":"POST /notifications/read","operationId":"POST_notifications_read","responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/notifications/state":{"get":{"tags":["system"],"summary":"GET /notifications/state","operationId":"GET_notifications_state","responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/notifications/{notification}/read":{"post":{"tags":["system"],"summary":"POST /notifications/{notification}/read","operationId":"POST_notifications_notification_read","parameters":[{"name":"notification","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/oauth/consent":{"get":{"tags":["applications"],"summary":"GET /oauth/consent","operationId":"GET_oauth_consent","responses":{"default":{"description":"Endpoint response"}}}},"/oauth/token":{"post":{"tags":["applications"],"summary":"POST /oauth/token","operationId":"POST_oauth_token","responses":{"default":{"description":"Endpoint response"}}}},"/projects":{"post":{"tags":["tenancy"],"operationId":"create_project","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectInput"}}},"required":true},"responses":{"200":{"description":"Project created"},"403":{"description":"Insufficient project permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"security":[{"bearer_auth":[]}]}},"/projects/{id}":{"get":{"tags":["tenancy"],"summary":"GET /projects/{id}","operationId":"GET_projects_id","parameters":[{"name":"id","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"put":{"tags":["tenancy"],"summary":"PUT /projects/{id}","operationId":"PUT_projects_id","parameters":[{"name":"id","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"delete":{"tags":["tenancy"],"operationId":"delete_project","parameters":[{"name":"id","in":"path","description":"Project UUID","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Project deleted"},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"security":[{"bearer_auth":[]}]}},"/projects/{id}/access-policies":{"get":{"tags":["authorization"],"summary":"GET /projects/{id}/access-policies","operationId":"GET_projects_id_access_policies","parameters":[{"name":"id","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"post":{"tags":["authorization"],"summary":"POST /projects/{id}/access-policies","operationId":"POST_projects_id_access_policies","parameters":[{"name":"id","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/projects/{project}/access-policies/{id}":{"delete":{"tags":["authorization"],"summary":"DELETE /projects/{project}/access-policies/{id}","operationId":"DELETE_projects_project_access_policies_id","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"patch":{"tags":["authorization"],"summary":"PATCH /projects/{project}/access-policies/{id}","operationId":"PATCH_projects_project_access_policies_id","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/register":{"get":{"tags":["identity"],"summary":"GET /register","operationId":"GET_register","responses":{"default":{"description":"Endpoint response"}}},"post":{"tags":["identity"],"operationId":"register","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterUserRequest"}}},"required":true},"responses":{"201":{"description":"User registered"},"400":{"description":"Invalid registration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/register/activate":{"get":{"tags":["identity"],"operationId":"activate_registration","parameters":[{"name":"s","in":"query","description":"Email verification secret","required":true,"schema":{"type":"string"}},{"name":"e","in":"query","description":"Email UUID","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"307":{"description":"Email verified"},"400":{"description":"Invalid verification request"}}}},"/users":{"get":{"tags":["identity"],"summary":"GET /users","operationId":"GET_users","responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/users/{user}":{"delete":{"tags":["identity"],"summary":"DELETE /users/{user}","operationId":"DELETE_users_user","parameters":[{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"patch":{"tags":["identity"],"summary":"PATCH /users/{user}","operationId":"PATCH_users_user","parameters":[{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/version":{"get":{"tags":["system"],"operationId":"version","responses":{"200":{"description":"Application version"}}}},"/{project}/.well-known/jwks.json":{"get":{"tags":["applications"],"operationId":"jwks","parameters":[{"name":"project","in":"path","description":"Encoded project sequence","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"JSON Web Key Set"},"404":{"description":"Project or signing key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/{project}/.well-known/openid-configuration":{"get":{"tags":["applications"],"operationId":"openid_configuration","parameters":[{"name":"project","in":"path","description":"Encoded project sequence","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OpenID Connect discovery document"},"404":{"description":"Project or signing key not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/{project}/access-policies":{"get":{"tags":["authorization"],"summary":"GET /{project}/access-policies","operationId":"GET_project_access_policies","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"post":{"tags":["authorization"],"summary":"POST /{project}/access-policies","operationId":"POST_project_access_policies","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/access-policies/{id}":{"delete":{"tags":["authorization"],"summary":"DELETE /{project}/access-policies/{id}","operationId":"DELETE_project_access_policies_id","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"patch":{"tags":["authorization"],"summary":"PATCH /{project}/access-policies/{id}","operationId":"PATCH_project_access_policies_id","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/alerts":{"get":{"tags":["identity"],"summary":"GET /{project}/alerts","operationId":"GET_project_alerts","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/audit-log":{"get":{"tags":["identity"],"summary":"GET /{project}/audit-log","operationId":"GET_project_audit_log","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/branding/sets":{"get":{"tags":["branding"],"summary":"GET /{project}/branding/sets","operationId":"GET_project_branding_sets","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"post":{"tags":["branding"],"summary":"POST /{project}/branding/sets","operationId":"POST_project_branding_sets","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/branding/sets/{set}":{"put":{"tags":["branding"],"summary":"PUT /{project}/branding/sets/{set}","operationId":"PUT_project_branding_sets_set","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"set","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"post":{"tags":["branding"],"summary":"POST /{project}/branding/sets/{set}","operationId":"POST_project_branding_sets_set","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"set","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"delete":{"tags":["branding"],"summary":"DELETE /{project}/branding/sets/{set}","operationId":"DELETE_project_branding_sets_set","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"set","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"patch":{"tags":["branding"],"summary":"PATCH /{project}/branding/sets/{set}","operationId":"PATCH_project_branding_sets_set","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"set","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/branding/sets/{set}/clone":{"post":{"tags":["branding"],"summary":"POST /{project}/branding/sets/{set}/clone","operationId":"POST_project_branding_sets_set_clone","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"set","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/branding/sets/{set}/templates":{"get":{"tags":["branding"],"summary":"GET /{project}/branding/sets/{set}/templates","operationId":"GET_project_branding_sets_set_templates","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"set","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/branding/templates/{template}/versions":{"post":{"tags":["branding"],"summary":"POST /{project}/branding/templates/{template}/versions","operationId":"POST_project_branding_templates_template_versions","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"template","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/branding/templates/{template}/versions/{version}/publish":{"post":{"tags":["branding"],"summary":"POST /{project}/branding/templates/{template}/versions/{version}/publish","operationId":"POST_project_branding_templates_template_versions_version_publish","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"template","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/branding/templates/{type}/render":{"get":{"tags":["branding"],"summary":"GET /{project}/branding/templates/{type}/render","operationId":"GET_project_branding_templates_type_render","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"type","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/clients":{"get":{"tags":["applications"],"summary":"List OAuth clients registered for a project.","operationId":"list_clients","parameters":[{"name":"project","in":"path","description":"Encoded project sequence","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Clients","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClientResponse"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Insufficient project role","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"security":[{"bearer_auth":[]}]},"post":{"tags":["applications"],"summary":"Register an OAuth client for a project.","operationId":"create_client","parameters":[{"name":"project","in":"path","description":"Encoded project sequence","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateClientRequest"}}},"required":true},"responses":{"200":{"description":"Client created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientResponse"}}}},"400":{"description":"Invalid client configuration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Insufficient project role","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Duplicate client ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"security":[{"bearer_auth":[]}]}},"/{project}/clients/{client}":{"delete":{"tags":["applications"],"summary":"Delete an OAuth client from a project.","operationId":"delete_client","parameters":[{"name":"project","in":"path","description":"Encoded project sequence","required":true,"schema":{"type":"string"}},{"name":"client","in":"path","description":"Client UUID","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Client deleted"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"Insufficient project role","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Client or project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"security":[{"bearer_auth":[]}]},"patch":{"tags":["applications"],"summary":"PATCH /{project}/clients/{client}","operationId":"PATCH_project_clients_client","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"client","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/dashboard":{"get":{"tags":["identity"],"summary":"GET /{project}/dashboard","operationId":"GET_project_dashboard","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/groups":{"get":{"tags":["tenancy"],"summary":"GET /{project}/groups","operationId":"GET_project_groups","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"post":{"tags":["tenancy"],"summary":"POST /{project}/groups","operationId":"POST_project_groups","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/groups/{group}":{"delete":{"tags":["tenancy"],"summary":"DELETE /{project}/groups/{group}","operationId":"DELETE_project_groups_group","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"group","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"patch":{"tags":["tenancy"],"summary":"PATCH /{project}/groups/{group}","operationId":"PATCH_project_groups_group","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"group","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/oauth/authorize":{"get":{"tags":["applications"],"summary":"Begin the OAuth authorization-code flow.","operationId":"authorize","parameters":[{"name":"project","in":"path","description":"Encoded project sequence","required":true,"schema":{"type":"string"}},{"name":"response_type","in":"query","description":"Must be code","required":true,"schema":{"type":"string"}},{"name":"client","in":"query","required":true,"schema":{"type":"string"}},{"name":"redirect_uri","in":"query","required":true,"schema":{"type":"string"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string"}},{"name":"state","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"307":{"description":"Redirect to login"},"400":{"description":"Invalid OAuth request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"tags":["applications"],"summary":"POST /{project}/oauth/authorize","operationId":"POST_project_oauth_authorize","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}}}},"/{project}/oauth/token":{"post":{"tags":["applications"],"summary":"POST /{project}/oauth/token","operationId":"POST_project_oauth_token","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}}}},"/{project}/oauth/userinfo":{"get":{"tags":["applications"],"operationId":"userinfo","parameters":[{"name":"project","in":"path","description":"Encoded project sequence","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OpenID Connect user information"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"security":[{"bearer_auth":[]}]}},"/{project}/permissions":{"get":{"tags":["identity"],"summary":"GET /{project}/permissions","operationId":"GET_project_permissions","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"post":{"tags":["identity"],"summary":"POST /{project}/permissions","operationId":"POST_project_permissions","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/permissions/{permission}":{"put":{"tags":["identity"],"summary":"PUT /{project}/permissions/{permission}","operationId":"PUT_project_permissions_permission","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"permission","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"delete":{"tags":["identity"],"summary":"DELETE /{project}/permissions/{permission}","operationId":"DELETE_project_permissions_permission","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"permission","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/providers":{"get":{"tags":["applications"],"summary":"GET /{project}/providers","operationId":"GET_project_providers","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"post":{"tags":["applications"],"summary":"POST /{project}/providers","operationId":"POST_project_providers","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/providers/{provider}":{"delete":{"tags":["applications"],"summary":"DELETE /{project}/providers/{provider}","operationId":"DELETE_project_providers_provider","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"provider","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"patch":{"tags":["applications"],"summary":"PATCH /{project}/providers/{provider}","operationId":"PATCH_project_providers_provider","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"provider","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/register":{"post":{"tags":["identity"],"summary":"POST /{project}/register","operationId":"POST_project_register","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}}}},"/{project}/roles":{"get":{"tags":["tenancy"],"summary":"GET /{project}/roles","operationId":"GET_project_roles","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"post":{"tags":["tenancy"],"summary":"POST /{project}/roles","operationId":"POST_project_roles","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/roles/{role}":{"delete":{"tags":["tenancy"],"summary":"DELETE /{project}/roles/{role}","operationId":"DELETE_project_roles_role","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"role","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"patch":{"tags":["tenancy"],"summary":"PATCH /{project}/roles/{role}","operationId":"PATCH_project_roles_role","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"role","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/scopes":{"get":{"tags":["applications"],"summary":"GET /{project}/scopes","operationId":"GET_project_scopes","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"post":{"tags":["applications"],"summary":"POST /{project}/scopes","operationId":"POST_project_scopes","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/scopes/{scope}":{"delete":{"tags":["applications"],"summary":"DELETE /{project}/scopes/{scope}","operationId":"DELETE_project_scopes_scope","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"scope","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/sessions":{"get":{"tags":["identity"],"summary":"GET /{project}/sessions","operationId":"GET_project_sessions","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/sessions/{session}":{"delete":{"tags":["identity"],"summary":"DELETE /{project}/sessions/{session}","operationId":"DELETE_project_sessions_session","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"session","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/users":{"get":{"tags":["identity"],"summary":"GET /{project}/users","operationId":"GET_project_users","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/users/{user}":{"delete":{"tags":["identity"],"summary":"DELETE /{project}/users/{user}","operationId":"DELETE_project_users_user","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"patch":{"tags":["identity"],"summary":"PATCH /{project}/users/{user}","operationId":"PATCH_project_users_user","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/users/{user}/groups":{"get":{"tags":["identity"],"summary":"GET /{project}/users/{user}/groups","operationId":"GET_project_users_user_groups","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"put":{"tags":["identity"],"summary":"PUT /{project}/users/{user}/groups","operationId":"PUT_project_users_user_groups","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/users/{user}/management-role":{"get":{"tags":["identity"],"summary":"GET /{project}/users/{user}/management-role","operationId":"GET_project_users_user_management_role","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"put":{"tags":["identity"],"summary":"PUT /{project}/users/{user}/management-role","operationId":"PUT_project_users_user_management_role","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/users/{user}/permissions":{"get":{"tags":["identity"],"summary":"GET /{project}/users/{user}/permissions","operationId":"GET_project_users_user_permissions","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"post":{"tags":["identity"],"summary":"POST /{project}/users/{user}/permissions","operationId":"POST_project_users_user_permissions","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/users/{user}/permissions/{grant}":{"delete":{"tags":["identity"],"summary":"DELETE /{project}/users/{user}/permissions/{grant}","operationId":"DELETE_project_users_user_permissions_grant","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"grant","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/users/{user}/projects":{"get":{"tags":["identity"],"summary":"GET /{project}/users/{user}/projects","operationId":"GET_project_users_user_projects","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"put":{"tags":["identity"],"summary":"PUT /{project}/users/{user}/projects","operationId":"PUT_project_users_user_projects","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/users/{user}/roles":{"get":{"tags":["identity"],"summary":"GET /{project}/users/{user}/roles","operationId":"GET_project_users_user_roles","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"put":{"tags":["identity"],"summary":"PUT /{project}/users/{user}/roles","operationId":"PUT_project_users_user_roles","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/users/{user}/token":{"post":{"tags":["identity"],"summary":"POST /{project}/users/{user}/token","operationId":"POST_project_users_user_token","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/webhooks":{"get":{"tags":["system"],"summary":"GET /{project}/webhooks","operationId":"GET_project_webhooks","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"post":{"tags":["system"],"summary":"POST /{project}/webhooks","operationId":"POST_project_webhooks","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/webhooks/{id}":{"put":{"tags":["system"],"summary":"PUT /{project}/webhooks/{id}","operationId":"PUT_project_webhooks_id","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]},"delete":{"tags":["system"],"summary":"DELETE /{project}/webhooks/{id}","operationId":"DELETE_project_webhooks_id","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}},"/{project}/webhooks/{id}/deliveries":{"get":{"tags":["system"],"summary":"GET /{project}/webhooks/{id}/deliveries","operationId":"GET_project_webhooks_id_deliveries","parameters":[{"name":"project","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"Path parameter","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Endpoint response"}},"security":[{"bearer_auth":[]}]}}},"components":{"schemas":{"ApiError":{"type":"object","required":["kind","message"],"properties":{"kind":{"type":"string"},"message":{"type":"string"}}},"AuthRequest":{"type":"object","required":["email"],"properties":{"email":{"type":"string"},"password":{"type":["string","null"]},"remember":{"type":["boolean","null"]}}},"ClientResponse":{"type":"object","required":["id","project_id","name","client_id","client_type","redirect_uris","grant_types","scopes","settings","is_active","created_at","updated_at"],"properties":{"client_id":{"type":"string"},"client_type":{"$ref":"#/components/schemas/ClientType"},"created_at":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"grant_types":{"type":"array","items":{"type":"string"}},"id":{"type":"string","format":"uuid"},"is_active":{"type":"boolean"},"name":{"type":"string"},"project_id":{"type":"string","format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"}},"scopes":{"type":"array","items":{"type":"string"}},"settings":{},"updated_at":{"type":"string","format":"date-time"}}},"ClientSettings":{"type":"object","properties":{"access_token_expiration_seconds":{"type":["integer","null"],"format":"int64"},"maintenance_mode":{"type":["boolean","null"]},"refresh_token_expiration_seconds":{"type":["integer","null"],"format":"int64"},"remember_me_duration_seconds":{"type":["integer","null"],"format":"int64"}}},"ClientType":{"type":"string","enum":["confidential","public"]},"CreateClientRequest":{"type":"object","required":["name","client_type"],"properties":{"client_id":{"type":["string","null"]},"client_secret_hash":{"type":["string","null"]},"client_type":{"$ref":"#/components/schemas/ClientType"},"description":{"type":["string","null"]},"grant_types":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"project_id":{"type":["string","null"],"format":"uuid"},"redirect_uris":{"type":"array","items":{"type":"string"}},"scopes":{"type":"array","items":{"type":"string"}},"settings":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/ClientSettings"}]}}},"CreateProjectInput":{"type":"object","required":["name"],"properties":{"account":{"type":["string","null"],"format":"uuid"},"description":{"type":["string","null"]},"icon":{"type":["string","null"]},"name":{"type":"string"}}},"RegisterUserRequest":{"type":"object","required":["email"],"properties":{"attributes":{},"avatar":{"type":["string","null"]},"email":{"type":"string"},"family_name":{"type":["string","null"]},"given_name":{"type":["string","null"]},"notify_user":{"type":"boolean"},"password":{"type":["string","null"]},"preserve_existing_avatar":{"type":"boolean"},"project_attributes":{},"request_password_change":{"type":"boolean"}},"additionalProperties":{}}},"securitySchemes":{"bearer_auth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"tags":[{"name":"system","description":"Health, version, and operational endpoints"},{"name":"identity","description":"User registration and identity lifecycle"},{"name":"authentication","description":"Login, logout, sessions, and claims"},{"name":"tenancy","description":"Project and account tenancy management"},{"name":"applications","description":"OAuth clients and OpenID Connect endpoints"},{"name":"authorization","description":"Access maps and policy management"},{"name":"branding","description":"Branding sets, templates, and publishing"}]}