@faable/auth-sdk 2.7.41 → 2.7.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/api-types.d.ts +2 -0
- package/dist/api/generated-client.d.ts +184 -0
- package/dist/api/generated-client.js +82 -0
- package/dist/api/types.d.ts +908 -25
- package/dist/version.js +2 -2
- package/package.json +1 -1
- package/spec/openapi.json +2874 -1185
package/spec/openapi.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "@faablecloud/auth",
|
|
5
5
|
"description": "Auth Platform made by Faable. Manage Users and Roles",
|
|
6
|
-
"version": "2.
|
|
6
|
+
"version": "2.43.0",
|
|
7
7
|
"license": {
|
|
8
8
|
"name": "private",
|
|
9
9
|
"url": "https://faable.com/docs/platform/privacy-policy"
|
|
@@ -6012,6 +6012,155 @@
|
|
|
6012
6012
|
"description": "LogMetadata",
|
|
6013
6013
|
"default": {}
|
|
6014
6014
|
},
|
|
6015
|
+
"Session": {
|
|
6016
|
+
"type": "object",
|
|
6017
|
+
"required": [
|
|
6018
|
+
"id",
|
|
6019
|
+
"user",
|
|
6020
|
+
"sid",
|
|
6021
|
+
"status",
|
|
6022
|
+
"last_seen_at",
|
|
6023
|
+
"expires_at",
|
|
6024
|
+
"account",
|
|
6025
|
+
"createdAt"
|
|
6026
|
+
],
|
|
6027
|
+
"properties": {
|
|
6028
|
+
"id": {
|
|
6029
|
+
"type": "string",
|
|
6030
|
+
"description": "Session ID"
|
|
6031
|
+
},
|
|
6032
|
+
"user": {
|
|
6033
|
+
"anyOf": [
|
|
6034
|
+
{
|
|
6035
|
+
"$ref": "#/components/schemas/User"
|
|
6036
|
+
},
|
|
6037
|
+
{
|
|
6038
|
+
"type": "string"
|
|
6039
|
+
},
|
|
6040
|
+
{}
|
|
6041
|
+
]
|
|
6042
|
+
},
|
|
6043
|
+
"sid": {
|
|
6044
|
+
"type": "string",
|
|
6045
|
+
"description": "OIDC session id. Every id_token minted for this session carries it as the `sid` claim; a back-channel or front-channel logout names the session with it."
|
|
6046
|
+
},
|
|
6047
|
+
"status": {
|
|
6048
|
+
"anyOf": [
|
|
6049
|
+
{
|
|
6050
|
+
"type": "string",
|
|
6051
|
+
"enum": [
|
|
6052
|
+
"active"
|
|
6053
|
+
]
|
|
6054
|
+
},
|
|
6055
|
+
{
|
|
6056
|
+
"type": "string",
|
|
6057
|
+
"enum": [
|
|
6058
|
+
"revoked"
|
|
6059
|
+
]
|
|
6060
|
+
}
|
|
6061
|
+
],
|
|
6062
|
+
"description": "`active` or `revoked`. An active session whose `expires_at` is in the past has expired: nothing can refresh it any more, but the row stays for the history."
|
|
6063
|
+
},
|
|
6064
|
+
"ip": {
|
|
6065
|
+
"type": "string",
|
|
6066
|
+
"description": "Client IP at the last authentication."
|
|
6067
|
+
},
|
|
6068
|
+
"user_agent": {
|
|
6069
|
+
"type": "string",
|
|
6070
|
+
"description": "Raw `User-Agent` header at the last authentication."
|
|
6071
|
+
},
|
|
6072
|
+
"client": {
|
|
6073
|
+
"anyOf": [
|
|
6074
|
+
{
|
|
6075
|
+
"$ref": "#/components/schemas/Client"
|
|
6076
|
+
},
|
|
6077
|
+
{
|
|
6078
|
+
"type": "string"
|
|
6079
|
+
},
|
|
6080
|
+
{}
|
|
6081
|
+
]
|
|
6082
|
+
},
|
|
6083
|
+
"connection": {
|
|
6084
|
+
"anyOf": [
|
|
6085
|
+
{
|
|
6086
|
+
"$ref": "#/components/schemas/Connection"
|
|
6087
|
+
},
|
|
6088
|
+
{
|
|
6089
|
+
"type": "string"
|
|
6090
|
+
},
|
|
6091
|
+
{}
|
|
6092
|
+
]
|
|
6093
|
+
},
|
|
6094
|
+
"issuer": {
|
|
6095
|
+
"type": "string",
|
|
6096
|
+
"description": "Issuer URL the session was minted on."
|
|
6097
|
+
},
|
|
6098
|
+
"last_seen_at": {
|
|
6099
|
+
"type": "string",
|
|
6100
|
+
"format": "date-time",
|
|
6101
|
+
"description": "Last authentication or token refresh through this session. Each refresh slides `expires_at` 30 days from here."
|
|
6102
|
+
},
|
|
6103
|
+
"expires_at": {
|
|
6104
|
+
"type": "string",
|
|
6105
|
+
"format": "date-time",
|
|
6106
|
+
"description": "When the session stops being usable unless something refreshes it first."
|
|
6107
|
+
},
|
|
6108
|
+
"revoked_at": {
|
|
6109
|
+
"type": "string",
|
|
6110
|
+
"format": "date-time"
|
|
6111
|
+
},
|
|
6112
|
+
"revoked_reason": {
|
|
6113
|
+
"anyOf": [
|
|
6114
|
+
{
|
|
6115
|
+
"type": "string",
|
|
6116
|
+
"enum": [
|
|
6117
|
+
"admin"
|
|
6118
|
+
]
|
|
6119
|
+
},
|
|
6120
|
+
{
|
|
6121
|
+
"type": "string",
|
|
6122
|
+
"enum": [
|
|
6123
|
+
"logout"
|
|
6124
|
+
]
|
|
6125
|
+
},
|
|
6126
|
+
{
|
|
6127
|
+
"type": "string",
|
|
6128
|
+
"enum": [
|
|
6129
|
+
"user"
|
|
6130
|
+
]
|
|
6131
|
+
}
|
|
6132
|
+
],
|
|
6133
|
+
"description": "`admin`: revoked through the Management API. `logout`: the user signed out. `user`: the user revoked it from another device."
|
|
6134
|
+
},
|
|
6135
|
+
"account": {
|
|
6136
|
+
"type": "string",
|
|
6137
|
+
"description": "Object is related with this account"
|
|
6138
|
+
},
|
|
6139
|
+
"metadata": {
|
|
6140
|
+
"type": "object",
|
|
6141
|
+
"properties": {},
|
|
6142
|
+
"additionalProperties": true,
|
|
6143
|
+
"description": "SessionMetadata",
|
|
6144
|
+
"default": {}
|
|
6145
|
+
},
|
|
6146
|
+
"createdAt": {
|
|
6147
|
+
"type": "string",
|
|
6148
|
+
"description": "Session creation date"
|
|
6149
|
+
},
|
|
6150
|
+
"updatedAt": {
|
|
6151
|
+
"type": "string",
|
|
6152
|
+
"description": "Session updated date"
|
|
6153
|
+
}
|
|
6154
|
+
},
|
|
6155
|
+
"description": "Session"
|
|
6156
|
+
},
|
|
6157
|
+
"SessionMetadata": {
|
|
6158
|
+
"type": "object",
|
|
6159
|
+
"properties": {},
|
|
6160
|
+
"additionalProperties": true,
|
|
6161
|
+
"description": "SessionMetadata",
|
|
6162
|
+
"default": {}
|
|
6163
|
+
},
|
|
6015
6164
|
"Customdomain": {
|
|
6016
6165
|
"type": "object",
|
|
6017
6166
|
"required": [
|
|
@@ -7242,7 +7391,7 @@
|
|
|
7242
7391
|
},
|
|
7243
7392
|
"ErrorCode": {
|
|
7244
7393
|
"type": "string",
|
|
7245
|
-
"description": "Machine-readable error code. One HTTP status per code.\n\n- `bad_request` (400): The request is malformed. `message` says what is wrong.\n- `validation_error` (400): The body, query or path failed schema validation. `details.issues` lists each failing field.\n- `unauthorized` (401): The request carries no valid credentials.\n- `payment_required` (402): The feature is not included in the current plan.\n- `forbidden` (403): The credentials are valid but do not allow this operation.\n- `not_found` (404): The resource does not exist in this account.\n- `method_not_allowed` (405): The HTTP method is not supported on this path.\n- `conflict` (409): The request conflicts with the current state of the resource.\n- `payload_too_large` (413): The request body exceeds the size limit.\n- `unsupported_media_type` (415): The `Content-Type` is not accepted by this endpoint.\n- `unprocessable_entity` (422): The request is well-formed but cannot be processed.\n- `too_many_requests` (429): Rate limit exceeded. Honour the `Retry-After` header.\n- `internal_error` (500): Unexpected server error. Retry later; the request id is logged.\n- `already_exists` (400): A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.\n- `invalid_id` (400): The id in the path is not a valid id for this resource.\n- `account_not_found` (404): No Auth Account matches the request (domain, header or token).\n- `invalid_query` (400): The `?query=` FaableQL expression could not be parsed.\n- `search_not_supported` (400): This resource does not support `?search=`.\n- `invalid_expand` (400): An `?expand=` path is not allowed on this resource.\n- `access_denied` (401): The caller may not access this row (ownership or machine-to-machine restriction).\n- `insufficient_scope` (403): The token lacks a scope this operation requires. `message` names it.\n- `team_required` (400): An Auth Account must belong to a project (team).\n- `account_limit_reached` (409): The project already has the maximum number of Auth Accounts.\n- `invalid_project_id` (400): The project id is not of the form `project_<hex>` or `team_<hex>`.\n- `account_transfer_refused` (409): The Auth Account cannot be moved to that project. `details.blockers` lists why.\n- `plan_required` (402): The setting requires a higher plan. `message` says which.\n- `not_logged_in` (401): There is no signed-in session for this request.\n- `invalid_token` (401): The bearer token is missing, malformed, expired or has no subject.\n- `not_owner` (403): The caller may only perform this operation on their own user.\n- `user_suspended` (403): The user is suspended and cannot sign in or be modified.\n- `invalid_credentials` (400): The email/username or password is incorrect.\n- `login_denied` (401): A post-login Action denied the sign-in. `message` carries the reason it gave. On token grants it is a 403 with `error: invalid_grant`.\n- `signup_denied` (403): A pre-signup Action or an active block denied the sign-up. `message` carries the reason.\n- `client_credentials_denied` (401): An Action denied the client_credentials grant. `message` carries the reason.\n- `m2m_quota_exceeded` (402): The project used the machine-to-machine tokens its plan includes this month. Free is capped; Hobby and Pro are billed per token instead.\n- `signup_disabled` (403): Self-service sign-up is disabled on this connection.\n- `email_taken` (409): Another user in this account already uses that email.\n- `invalid_email` (400): The email address is not valid.\n- `same_email` (400): The new email is the same as the current one.\n- `user_has_no_email` (400): The operation needs an email but the user has none.\n- `password_too_weak` (400): The password does not meet the connection policy. `message` lists each unmet rule.\n- `invalid_password_hash` (400): The imported password hash cannot be read, or its cost is above what a login can afford. `message` names the field.\n- `weak_password_hash` (400): The imported password hash uses a fast digest (MD5, SHA-1, SHA-2) or a cost below the minimum. `message` says which.\n- `invalid_code` (400): The verification code is wrong, expired or already used.\n- `invalid_phone` (400): The phone number is not E.164 and could not be resolved with the account default country. Include the country code.\n- `phone_changed` (400): The phone on the user changed after the code was sent. Start again.\n- `phone_already_verified` (409): The user already has a verified phone; the number cannot be swapped from the screen.\n- `sms_unavailable` (409): This account cannot send SMS right now. The suffix says why: `sms_unavailable:plan`, `:quota`, `:provider`.\n- `sms_failed` (409): The SMS provider rejected the message.\n- `invalid_state` (400): The `state` is missing, expired, or does not describe a resumable step.\n- `state_mismatch` (401): The `state` belongs to another account, session, client or ceremony.\n- `invalid_ticket` (400): The ticket does not exist or is not the kind this endpoint accepts.\n- `ticket_used` (400): The ticket was already consumed.\n- `ticket_expired` (400): The ticket is past its expiry.\n- `ticket_not_found` (404): No ticket with that id belongs to this user.\n- `credential_not_found` (404): The user has no password credential on this connection.\n- `invalid_link` (400): The magic link is malformed.\n- `expired_link` (400): The magic link token was not found or has expired.\n- `invalid_otp` (401): The one-time password is wrong or expired.\n- `invalid_client` (400): The `client_id` in the request does not name a client of this account.\n- `client_not_found` (404): No client with that `client_id`.\n- `client_mismatch` (401): The client belongs to a different account.\n- `invalid_client_metadata` (400): Dynamic client registration rejected a field (RFC 7591). `message` names it.\n- `invalid_connection` (400): The connection does not exist, is disabled, or is not of the type this flow needs.\n- `connection_required` (400): No connection was given and the client has no `default_connection`.\n- `connection_misconfigured` (400): The connection is missing settings needed to talk to its provider.\n- `passwordless_unavailable` (400): No passwordless connection is configured or enabled for this client.\n- `ambiguous_connection` (400): Several connections match; pass `connection_id`.\n- `invalid_redirect_uri` (400): The redirect URI is not registered for the client.\n- `origin_not_allowed` (403): The request `Origin` is not in the client's Allowed Web Origins.\n- `audience_not_found` (403): The `audience` does not name an API registered in this account.\n- `system_resource` (403): The resource is managed by Faable and cannot be modified or deleted.\n- `invalid_request` (400): A required OAuth parameter is missing or two of them are incompatible. `message` says which.\n- `invalid_device_code` (400): The device or user code is invalid or expired.\n- `provider_error` (400): The upstream identity provider returned an error. The suffix is the provider’s own code, when it sent one: `provider_error:bad_refresh_token` (the user must re-authorize), `provider_error:incorrect_client_credentials` (our configuration, the user can do nothing). `details.provider_error_description` carries the provider’s sentence.\n- `identity_already_linked` (409): That external identity is already linked to another user.\n- `identity_link_denied` (409): That external identity cannot be linked to this user.\n- `identity_conflict` (409): The user already has a linked identity for this connection.\n- `identity_orphaned` (400): The identity pointed at a user that no longer exists; it was removed. Sign in again.\n- `no_provider_token` (400): The identity holds no provider access token.\n- `no_refresh_token` (400): The identity holds no provider refresh token, so it cannot be refreshed.\n- `action_unavailable` (401): The Action that paused this login is disabled or belongs elsewhere.\n- `login_flow_misconfigured` (500): The login flow of this account cannot run. `message` carries the node error.\n- `mfa_required` (403): The login needs a second factor that this flow cannot collect, or one is still pending on the session.\n- `step_up_required` (403): Confirm an existing factor before changing your factors.\n- `interaction_required` (403): An Action asked for a redirect on a non-interactive flow.\n- `passkey_login_disabled` (400): Sign in with a passkey is not enabled for this client.\n- `mfa_pending` (401): A second-factor challenge is pending; answer it before continuing.\n- `mfa_invalid_code` (401): The authenticator code did not verify.\n- `mfa_invalid_recovery_code` (401): The recovery code did not verify.\n- `too_many_attempts` (429): Too many wrong codes. Wait a few minutes and try again.\n- `too_many_login_attempts` (429): Too many failed sign-in attempts for this email or username from this network. Wait a few minutes and try again.\n- `totp_not_allowed` (401): This account does not accept authenticator apps.\n- `no_usable_factor` (400): The user has no confirmed second factor to challenge.\n- `factor_not_found` (400): No factor with that id belongs to this user.\n- `factor_already_confirmed` (400): The factor was already confirmed.\n- `invalid_factor` (400): The factor cannot be verified (no secret material).\n- `session_missing` (401): The session that started this login no longer exists.\n- `passkey_verification_failed` (400): The WebAuthn response could not be verified.\n- `no_passkey_enrolled` (400): The user has no passkey to sign in with.\n- `malformed_credential` (400): The WebAuthn credential is malformed.\n- `unknown_passkey` (401): The passkey is not enrolled for this user.\n- `invalid_passkey` (401): The passkey assertion did not verify.\n- `invite_not_found` (404): No invite with that id in this account.\n- `invite_used` (400): The invite was already accepted.\n- `already_member` (400): The user is already a member of the team.\n- `not_a_member` (404): The user is not a member of the team.\n- `role_not_found` (404): No role with that id in this account.\n- `invalid_role` (400): The role belongs to another account.\n- `flow_not_found` (400): The login flow does not exist in this account.\n- `revision_not_found` (404): The revision is not in the flow history.",
|
|
7394
|
+
"description": "Machine-readable error code. One HTTP status per code.\n\n- `bad_request` (400): The request is malformed. `message` says what is wrong.\n- `validation_error` (400): The body, query or path failed schema validation. `details.issues` lists each failing field.\n- `unauthorized` (401): The request carries no valid credentials.\n- `payment_required` (402): The feature is not included in the current plan.\n- `forbidden` (403): The credentials are valid but do not allow this operation.\n- `not_found` (404): The resource does not exist in this account.\n- `method_not_allowed` (405): The HTTP method is not supported on this path.\n- `conflict` (409): The request conflicts with the current state of the resource.\n- `payload_too_large` (413): The request body exceeds the size limit.\n- `unsupported_media_type` (415): The `Content-Type` is not accepted by this endpoint.\n- `unprocessable_entity` (422): The request is well-formed but cannot be processed.\n- `too_many_requests` (429): Rate limit exceeded. Honour the `Retry-After` header.\n- `internal_error` (500): Unexpected server error. Retry later; the request id is logged.\n- `already_exists` (400): A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.\n- `invalid_id` (400): The id in the path is not a valid id for this resource.\n- `account_not_found` (404): No Auth Account matches the request (domain, header or token).\n- `invalid_query` (400): The `?query=` FaableQL expression could not be parsed.\n- `search_not_supported` (400): This resource does not support `?search=`.\n- `invalid_expand` (400): An `?expand=` path is not allowed on this resource.\n- `access_denied` (401): The caller may not access this row (ownership or machine-to-machine restriction).\n- `insufficient_scope` (403): The token lacks a scope this operation requires. `message` names it.\n- `team_required` (400): An Auth Account must belong to a project (team).\n- `account_limit_reached` (409): The project already has the maximum number of Auth Accounts.\n- `invalid_project_id` (400): The project id is not of the form `project_<hex>` or `team_<hex>`.\n- `account_transfer_refused` (409): The Auth Account cannot be moved to that project. `details.blockers` lists why.\n- `plan_required` (402): The setting requires a higher plan. `message` says which.\n- `not_logged_in` (401): There is no signed-in session for this request.\n- `session_already_revoked` (409): The session was already revoked.\n- `invalid_token` (401): The bearer token is missing, malformed, expired or has no subject.\n- `not_owner` (403): The caller may only perform this operation on their own user.\n- `user_suspended` (403): The user is suspended and cannot sign in or be modified.\n- `invalid_credentials` (400): The email/username or password is incorrect.\n- `login_denied` (401): A post-login Action denied the sign-in. `message` carries the reason it gave. On token grants it is a 403 with `error: invalid_grant`.\n- `signup_denied` (403): A pre-signup Action or an active block denied the sign-up. `message` carries the reason.\n- `client_credentials_denied` (401): An Action denied the client_credentials grant. `message` carries the reason.\n- `m2m_quota_exceeded` (402): The project used the machine-to-machine tokens its plan includes this month. Free is capped; Hobby and Pro are billed per token instead.\n- `signup_disabled` (403): Self-service sign-up is disabled on this connection.\n- `email_taken` (409): Another user in this account already uses that email.\n- `invalid_email` (400): The email address is not valid.\n- `same_email` (400): The new email is the same as the current one.\n- `user_has_no_email` (400): The operation needs an email but the user has none.\n- `password_too_weak` (400): The password does not meet the connection policy. `message` lists each unmet rule.\n- `invalid_password_hash` (400): The imported password hash cannot be read, or its cost is above what a login can afford. `message` names the field.\n- `weak_password_hash` (400): The imported password hash uses a fast digest (MD5, SHA-1, SHA-2) or a cost below the minimum. `message` says which.\n- `invalid_code` (400): The verification code is wrong, expired or already used.\n- `invalid_phone` (400): The phone number is not E.164 and could not be resolved with the account default country. Include the country code.\n- `phone_changed` (400): The phone on the user changed after the code was sent. Start again.\n- `phone_already_verified` (409): The user already has a verified phone; the number cannot be swapped from the screen.\n- `sms_unavailable` (409): This account cannot send SMS right now. The suffix says why: `sms_unavailable:plan`, `:quota`, `:provider`.\n- `sms_failed` (409): The SMS provider rejected the message.\n- `invalid_state` (400): The `state` is missing, expired, or does not describe a resumable step.\n- `state_mismatch` (401): The `state` belongs to another account, session, client or ceremony.\n- `invalid_ticket` (400): The ticket does not exist or is not the kind this endpoint accepts.\n- `ticket_used` (400): The ticket was already consumed.\n- `ticket_expired` (400): The ticket is past its expiry.\n- `ticket_not_found` (404): No ticket with that id belongs to this user.\n- `credential_not_found` (404): The user has no password credential on this connection.\n- `invalid_link` (400): The magic link is malformed.\n- `expired_link` (400): The magic link token was not found or has expired.\n- `invalid_otp` (401): The one-time password is wrong or expired.\n- `invalid_client` (400): The `client_id` in the request does not name a client of this account.\n- `client_not_found` (404): No client with that `client_id`.\n- `client_mismatch` (401): The client belongs to a different account.\n- `invalid_client_metadata` (400): Dynamic client registration rejected a field (RFC 7591). `message` names it.\n- `invalid_connection` (400): The connection does not exist, is disabled, or is not of the type this flow needs.\n- `connection_required` (400): No connection was given and the client has no `default_connection`.\n- `connection_misconfigured` (400): The connection is missing settings needed to talk to its provider.\n- `passwordless_unavailable` (400): No passwordless connection is configured or enabled for this client.\n- `ambiguous_connection` (400): Several connections match; pass `connection_id`.\n- `invalid_redirect_uri` (400): The redirect URI is not registered for the client.\n- `origin_not_allowed` (403): The request `Origin` is not in the client's Allowed Web Origins.\n- `audience_not_found` (403): The `audience` does not name an API registered in this account.\n- `system_resource` (403): The resource is managed by Faable and cannot be modified or deleted.\n- `invalid_request` (400): A required OAuth parameter is missing or two of them are incompatible. `message` says which.\n- `invalid_device_code` (400): The device or user code is invalid or expired.\n- `provider_error` (400): The upstream identity provider returned an error. The suffix is the provider’s own code, when it sent one: `provider_error:bad_refresh_token` (the user must re-authorize), `provider_error:incorrect_client_credentials` (our configuration, the user can do nothing). `details.provider_error_description` carries the provider’s sentence.\n- `identity_already_linked` (409): That external identity is already linked to another user.\n- `identity_link_denied` (409): That external identity cannot be linked to this user.\n- `identity_conflict` (409): The user already has a linked identity for this connection.\n- `identity_orphaned` (400): The identity pointed at a user that no longer exists; it was removed. Sign in again.\n- `no_provider_token` (400): The identity holds no provider access token.\n- `no_refresh_token` (400): The identity holds no provider refresh token, so it cannot be refreshed.\n- `action_unavailable` (401): The Action that paused this login is disabled or belongs elsewhere.\n- `login_flow_misconfigured` (500): The login flow of this account cannot run. `message` carries the node error.\n- `mfa_required` (403): The login needs a second factor that this flow cannot collect, or one is still pending on the session.\n- `step_up_required` (403): Confirm an existing factor before changing your factors.\n- `interaction_required` (403): An Action asked for a redirect on a non-interactive flow.\n- `passkey_login_disabled` (400): Sign in with a passkey is not enabled for this client.\n- `mfa_pending` (401): A second-factor challenge is pending; answer it before continuing.\n- `mfa_invalid_code` (401): The authenticator code did not verify.\n- `mfa_invalid_recovery_code` (401): The recovery code did not verify.\n- `too_many_attempts` (429): Too many wrong codes. Wait a few minutes and try again.\n- `too_many_login_attempts` (429): Too many failed sign-in attempts for this email or username from this network. Wait a few minutes and try again.\n- `totp_not_allowed` (401): This account does not accept authenticator apps.\n- `no_usable_factor` (400): The user has no confirmed second factor to challenge.\n- `factor_not_found` (400): No factor with that id belongs to this user.\n- `factor_already_confirmed` (400): The factor was already confirmed.\n- `invalid_factor` (400): The factor cannot be verified (no secret material).\n- `session_missing` (401): The session that started this login no longer exists.\n- `passkey_verification_failed` (400): The WebAuthn response could not be verified.\n- `no_passkey_enrolled` (400): The user has no passkey to sign in with.\n- `malformed_credential` (400): The WebAuthn credential is malformed.\n- `unknown_passkey` (401): The passkey is not enrolled for this user.\n- `invalid_passkey` (401): The passkey assertion did not verify.\n- `invite_not_found` (404): No invite with that id in this account.\n- `invite_used` (400): The invite was already accepted.\n- `already_member` (400): The user is already a member of the team.\n- `not_a_member` (404): The user is not a member of the team.\n- `role_not_found` (404): No role with that id in this account.\n- `invalid_role` (400): The role belongs to another account.\n- `flow_not_found` (400): The login flow does not exist in this account.\n- `revision_not_found` (404): The revision is not in the flow history.",
|
|
7246
7395
|
"enum": [
|
|
7247
7396
|
"bad_request",
|
|
7248
7397
|
"validation_error",
|
|
@@ -7271,6 +7420,7 @@
|
|
|
7271
7420
|
"account_transfer_refused",
|
|
7272
7421
|
"plan_required",
|
|
7273
7422
|
"not_logged_in",
|
|
7423
|
+
"session_already_revoked",
|
|
7274
7424
|
"invalid_token",
|
|
7275
7425
|
"not_owner",
|
|
7276
7426
|
"user_suspended",
|
|
@@ -12052,233 +12202,14 @@
|
|
|
12052
12202
|
}
|
|
12053
12203
|
}
|
|
12054
12204
|
},
|
|
12055
|
-
"/internal/usage/
|
|
12056
|
-
"get": {
|
|
12057
|
-
"operationId": "internal/m2mUsage",
|
|
12058
|
-
"summary": "M2M tokens served per project in a month (platform)",
|
|
12059
|
-
"tags": [
|
|
12060
|
-
"account"
|
|
12061
|
-
],
|
|
12062
|
-
"description": "Per-project count of successful client_credentials token responses in the given month (cached ones included), read from the monthly counters. Consumed by the billing usage job. Platform token with `read:usage`.",
|
|
12063
|
-
"parameters": [
|
|
12064
|
-
{
|
|
12065
|
-
"schema": {
|
|
12066
|
-
"type": "string",
|
|
12067
|
-
"pattern": "^\\d{4}-\\d{2}$"
|
|
12068
|
-
},
|
|
12069
|
-
"in": "query",
|
|
12070
|
-
"name": "month",
|
|
12071
|
-
"required": true,
|
|
12072
|
-
"description": "YYYY-MM, UTC."
|
|
12073
|
-
}
|
|
12074
|
-
],
|
|
12075
|
-
"security": [
|
|
12076
|
-
{
|
|
12077
|
-
"bearerAuth": []
|
|
12078
|
-
}
|
|
12079
|
-
],
|
|
12080
|
-
"responses": {
|
|
12081
|
-
"200": {
|
|
12082
|
-
"description": "Default Response",
|
|
12083
|
-
"content": {
|
|
12084
|
-
"application/json": {
|
|
12085
|
-
"schema": {
|
|
12086
|
-
"type": "object",
|
|
12087
|
-
"required": [
|
|
12088
|
-
"month",
|
|
12089
|
-
"rows"
|
|
12090
|
-
],
|
|
12091
|
-
"properties": {
|
|
12092
|
-
"month": {
|
|
12093
|
-
"type": "string"
|
|
12094
|
-
},
|
|
12095
|
-
"rows": {
|
|
12096
|
-
"type": "array",
|
|
12097
|
-
"items": {
|
|
12098
|
-
"type": "object",
|
|
12099
|
-
"required": [
|
|
12100
|
-
"team",
|
|
12101
|
-
"tokens"
|
|
12102
|
-
],
|
|
12103
|
-
"properties": {
|
|
12104
|
-
"team": {
|
|
12105
|
-
"type": "string",
|
|
12106
|
-
"description": "The project (`team_<hex>`), or the account id for a legacy account without one."
|
|
12107
|
-
},
|
|
12108
|
-
"tokens": {
|
|
12109
|
-
"type": "integer"
|
|
12110
|
-
}
|
|
12111
|
-
}
|
|
12112
|
-
}
|
|
12113
|
-
}
|
|
12114
|
-
}
|
|
12115
|
-
}
|
|
12116
|
-
}
|
|
12117
|
-
}
|
|
12118
|
-
},
|
|
12119
|
-
"400": {
|
|
12120
|
-
"description": "`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
12121
|
-
"content": {
|
|
12122
|
-
"application/json": {
|
|
12123
|
-
"schema": {
|
|
12124
|
-
"allOf": [
|
|
12125
|
-
{
|
|
12126
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
12127
|
-
},
|
|
12128
|
-
{
|
|
12129
|
-
"type": "object",
|
|
12130
|
-
"properties": {
|
|
12131
|
-
"error_code": {
|
|
12132
|
-
"type": "string",
|
|
12133
|
-
"enum": [
|
|
12134
|
-
"validation_error"
|
|
12135
|
-
]
|
|
12136
|
-
}
|
|
12137
|
-
}
|
|
12138
|
-
}
|
|
12139
|
-
]
|
|
12140
|
-
}
|
|
12141
|
-
}
|
|
12142
|
-
}
|
|
12143
|
-
},
|
|
12144
|
-
"401": {
|
|
12145
|
-
"description": "`unauthorized` — The request carries no valid credentials.",
|
|
12146
|
-
"content": {
|
|
12147
|
-
"application/json": {
|
|
12148
|
-
"schema": {
|
|
12149
|
-
"allOf": [
|
|
12150
|
-
{
|
|
12151
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
12152
|
-
},
|
|
12153
|
-
{
|
|
12154
|
-
"type": "object",
|
|
12155
|
-
"properties": {
|
|
12156
|
-
"error_code": {
|
|
12157
|
-
"type": "string",
|
|
12158
|
-
"enum": [
|
|
12159
|
-
"unauthorized"
|
|
12160
|
-
]
|
|
12161
|
-
}
|
|
12162
|
-
}
|
|
12163
|
-
}
|
|
12164
|
-
]
|
|
12165
|
-
}
|
|
12166
|
-
}
|
|
12167
|
-
}
|
|
12168
|
-
},
|
|
12169
|
-
"403": {
|
|
12170
|
-
"description": "`forbidden` — The credentials are valid but do not allow this operation.\n\n`insufficient_scope` — The token lacks a scope this operation requires. `message` names it.\n\n`user_suspended` — The user is suspended and cannot sign in or be modified.",
|
|
12171
|
-
"content": {
|
|
12172
|
-
"application/json": {
|
|
12173
|
-
"schema": {
|
|
12174
|
-
"allOf": [
|
|
12175
|
-
{
|
|
12176
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
12177
|
-
},
|
|
12178
|
-
{
|
|
12179
|
-
"type": "object",
|
|
12180
|
-
"properties": {
|
|
12181
|
-
"error_code": {
|
|
12182
|
-
"type": "string",
|
|
12183
|
-
"enum": [
|
|
12184
|
-
"forbidden",
|
|
12185
|
-
"insufficient_scope",
|
|
12186
|
-
"user_suspended"
|
|
12187
|
-
]
|
|
12188
|
-
}
|
|
12189
|
-
}
|
|
12190
|
-
}
|
|
12191
|
-
]
|
|
12192
|
-
}
|
|
12193
|
-
}
|
|
12194
|
-
}
|
|
12195
|
-
},
|
|
12196
|
-
"404": {
|
|
12197
|
-
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
12198
|
-
"content": {
|
|
12199
|
-
"application/json": {
|
|
12200
|
-
"schema": {
|
|
12201
|
-
"allOf": [
|
|
12202
|
-
{
|
|
12203
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
12204
|
-
},
|
|
12205
|
-
{
|
|
12206
|
-
"type": "object",
|
|
12207
|
-
"properties": {
|
|
12208
|
-
"error_code": {
|
|
12209
|
-
"type": "string",
|
|
12210
|
-
"enum": [
|
|
12211
|
-
"account_not_found"
|
|
12212
|
-
]
|
|
12213
|
-
}
|
|
12214
|
-
}
|
|
12215
|
-
}
|
|
12216
|
-
]
|
|
12217
|
-
}
|
|
12218
|
-
}
|
|
12219
|
-
}
|
|
12220
|
-
},
|
|
12221
|
-
"429": {
|
|
12222
|
-
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
12223
|
-
"content": {
|
|
12224
|
-
"application/json": {
|
|
12225
|
-
"schema": {
|
|
12226
|
-
"allOf": [
|
|
12227
|
-
{
|
|
12228
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
12229
|
-
},
|
|
12230
|
-
{
|
|
12231
|
-
"type": "object",
|
|
12232
|
-
"properties": {
|
|
12233
|
-
"error_code": {
|
|
12234
|
-
"type": "string",
|
|
12235
|
-
"enum": [
|
|
12236
|
-
"too_many_requests"
|
|
12237
|
-
]
|
|
12238
|
-
}
|
|
12239
|
-
}
|
|
12240
|
-
}
|
|
12241
|
-
]
|
|
12242
|
-
}
|
|
12243
|
-
}
|
|
12244
|
-
}
|
|
12245
|
-
},
|
|
12246
|
-
"500": {
|
|
12247
|
-
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
12248
|
-
"content": {
|
|
12249
|
-
"application/json": {
|
|
12250
|
-
"schema": {
|
|
12251
|
-
"allOf": [
|
|
12252
|
-
{
|
|
12253
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
12254
|
-
},
|
|
12255
|
-
{
|
|
12256
|
-
"type": "object",
|
|
12257
|
-
"properties": {
|
|
12258
|
-
"error_code": {
|
|
12259
|
-
"type": "string",
|
|
12260
|
-
"enum": [
|
|
12261
|
-
"internal_error"
|
|
12262
|
-
]
|
|
12263
|
-
}
|
|
12264
|
-
}
|
|
12265
|
-
}
|
|
12266
|
-
]
|
|
12267
|
-
}
|
|
12268
|
-
}
|
|
12269
|
-
}
|
|
12270
|
-
}
|
|
12271
|
-
}
|
|
12272
|
-
}
|
|
12273
|
-
},
|
|
12274
|
-
"/internal/usage/m2m/range": {
|
|
12205
|
+
"/internal/usage/sms/range": {
|
|
12275
12206
|
"get": {
|
|
12276
|
-
"operationId": "internal/
|
|
12277
|
-
"summary": "
|
|
12207
|
+
"operationId": "internal/smsUsageRange",
|
|
12208
|
+
"summary": "SMS a project sent in a time range (platform)",
|
|
12278
12209
|
"tags": [
|
|
12279
12210
|
"account"
|
|
12280
12211
|
],
|
|
12281
|
-
"description": "Sum of the hourly
|
|
12212
|
+
"description": "Sum of the hourly counters of SMS and WhatsApp messages one project handed to the provider between `from` (first full hour after it) and `to`. At most 40 days back. Platform token with `read:usage`.",
|
|
12282
12213
|
"parameters": [
|
|
12283
12214
|
{
|
|
12284
12215
|
"schema": {
|
|
@@ -12326,7 +12257,7 @@
|
|
|
12326
12257
|
"team",
|
|
12327
12258
|
"from",
|
|
12328
12259
|
"to",
|
|
12329
|
-
"
|
|
12260
|
+
"sent"
|
|
12330
12261
|
],
|
|
12331
12262
|
"properties": {
|
|
12332
12263
|
"team": {
|
|
@@ -12338,7 +12269,7 @@
|
|
|
12338
12269
|
"to": {
|
|
12339
12270
|
"type": "string"
|
|
12340
12271
|
},
|
|
12341
|
-
"
|
|
12272
|
+
"sent": {
|
|
12342
12273
|
"type": "integer"
|
|
12343
12274
|
}
|
|
12344
12275
|
}
|
|
@@ -12501,59 +12432,24 @@
|
|
|
12501
12432
|
}
|
|
12502
12433
|
}
|
|
12503
12434
|
},
|
|
12504
|
-
"/
|
|
12505
|
-
"
|
|
12506
|
-
"operationId": "
|
|
12507
|
-
"summary": "
|
|
12435
|
+
"/internal/usage/m2m": {
|
|
12436
|
+
"get": {
|
|
12437
|
+
"operationId": "internal/m2mUsage",
|
|
12438
|
+
"summary": "M2M tokens served per project in a month (platform)",
|
|
12508
12439
|
"tags": [
|
|
12509
12440
|
"account"
|
|
12510
12441
|
],
|
|
12511
|
-
"description": "
|
|
12512
|
-
"requestBody": {
|
|
12513
|
-
"required": true,
|
|
12514
|
-
"content": {
|
|
12515
|
-
"application/json": {
|
|
12516
|
-
"schema": {
|
|
12517
|
-
"type": "object",
|
|
12518
|
-
"required": [
|
|
12519
|
-
"to_project",
|
|
12520
|
-
"reason"
|
|
12521
|
-
],
|
|
12522
|
-
"properties": {
|
|
12523
|
-
"to_project": {
|
|
12524
|
-
"type": "string",
|
|
12525
|
-
"description": "Destination project (`project_<hex>`) or its team id (`team_<hex>`) — both spellings are accepted."
|
|
12526
|
-
},
|
|
12527
|
-
"reason": {
|
|
12528
|
-
"type": "string",
|
|
12529
|
-
"minLength": 3,
|
|
12530
|
-
"maxLength": 500,
|
|
12531
|
-
"description": "Why the tenant is being moved. Recorded in the tenant's log and in ours."
|
|
12532
|
-
},
|
|
12533
|
-
"dry_run": {
|
|
12534
|
-
"type": "boolean",
|
|
12535
|
-
"default": false,
|
|
12536
|
-
"description": "Return the plan (what rides along + blockers) without writing."
|
|
12537
|
-
},
|
|
12538
|
-
"allow_over_cap": {
|
|
12539
|
-
"type": "boolean",
|
|
12540
|
-
"default": false,
|
|
12541
|
-
"description": "Move even if the destination ends up above the per-project cap on Auth Accounts."
|
|
12542
|
-
}
|
|
12543
|
-
},
|
|
12544
|
-
"additionalProperties": false
|
|
12545
|
-
}
|
|
12546
|
-
}
|
|
12547
|
-
}
|
|
12548
|
-
},
|
|
12442
|
+
"description": "Per-project count of successful client_credentials token responses in the given month (cached ones included), read from the monthly counters. Consumed by the billing usage job. Platform token with `read:usage`.",
|
|
12549
12443
|
"parameters": [
|
|
12550
12444
|
{
|
|
12551
12445
|
"schema": {
|
|
12552
|
-
"type": "string"
|
|
12446
|
+
"type": "string",
|
|
12447
|
+
"pattern": "^\\d{4}-\\d{2}$"
|
|
12553
12448
|
},
|
|
12554
|
-
"in": "
|
|
12555
|
-
"name": "
|
|
12556
|
-
"required": true
|
|
12449
|
+
"in": "query",
|
|
12450
|
+
"name": "month",
|
|
12451
|
+
"required": true,
|
|
12452
|
+
"description": "YYYY-MM, UTC."
|
|
12557
12453
|
}
|
|
12558
12454
|
],
|
|
12559
12455
|
"security": [
|
|
@@ -12569,86 +12465,31 @@
|
|
|
12569
12465
|
"schema": {
|
|
12570
12466
|
"type": "object",
|
|
12571
12467
|
"required": [
|
|
12572
|
-
"
|
|
12573
|
-
"
|
|
12574
|
-
"account_name",
|
|
12575
|
-
"slug",
|
|
12576
|
-
"domain",
|
|
12577
|
-
"from_project",
|
|
12578
|
-
"to_project",
|
|
12579
|
-
"target_tenants_before",
|
|
12580
|
-
"moves_with_it",
|
|
12581
|
-
"blockers"
|
|
12468
|
+
"month",
|
|
12469
|
+
"rows"
|
|
12582
12470
|
],
|
|
12583
12471
|
"properties": {
|
|
12584
|
-
"
|
|
12585
|
-
"type": "boolean"
|
|
12586
|
-
},
|
|
12587
|
-
"account_id": {
|
|
12588
|
-
"type": "string"
|
|
12589
|
-
},
|
|
12590
|
-
"account_name": {
|
|
12591
|
-
"type": "string"
|
|
12592
|
-
},
|
|
12593
|
-
"slug": {
|
|
12594
|
-
"type": "string"
|
|
12595
|
-
},
|
|
12596
|
-
"domain": {
|
|
12597
|
-
"type": "string"
|
|
12598
|
-
},
|
|
12599
|
-
"from_project": {
|
|
12600
|
-
"type": "string"
|
|
12601
|
-
},
|
|
12602
|
-
"to_project": {
|
|
12472
|
+
"month": {
|
|
12603
12473
|
"type": "string"
|
|
12604
12474
|
},
|
|
12605
|
-
"
|
|
12606
|
-
"type": "array",
|
|
12607
|
-
"items": {
|
|
12608
|
-
"type": "object",
|
|
12609
|
-
"required": [
|
|
12610
|
-
"id",
|
|
12611
|
-
"name"
|
|
12612
|
-
],
|
|
12613
|
-
"properties": {
|
|
12614
|
-
"id": {
|
|
12615
|
-
"type": "string"
|
|
12616
|
-
},
|
|
12617
|
-
"name": {
|
|
12618
|
-
"type": "string"
|
|
12619
|
-
}
|
|
12620
|
-
}
|
|
12621
|
-
}
|
|
12622
|
-
},
|
|
12623
|
-
"moves_with_it": {
|
|
12624
|
-
"type": "object",
|
|
12625
|
-
"additionalProperties": {
|
|
12626
|
-
"type": "number"
|
|
12627
|
-
}
|
|
12628
|
-
},
|
|
12629
|
-
"blockers": {
|
|
12475
|
+
"rows": {
|
|
12630
12476
|
"type": "array",
|
|
12631
12477
|
"items": {
|
|
12632
12478
|
"type": "object",
|
|
12633
12479
|
"required": [
|
|
12634
|
-
"
|
|
12635
|
-
"
|
|
12480
|
+
"team",
|
|
12481
|
+
"tokens"
|
|
12636
12482
|
],
|
|
12637
12483
|
"properties": {
|
|
12638
|
-
"
|
|
12639
|
-
"type": "string"
|
|
12484
|
+
"team": {
|
|
12485
|
+
"type": "string",
|
|
12486
|
+
"description": "The project (`team_<hex>`), or the account id for a legacy account without one."
|
|
12640
12487
|
},
|
|
12641
|
-
"
|
|
12642
|
-
"type": "
|
|
12488
|
+
"tokens": {
|
|
12489
|
+
"type": "integer"
|
|
12643
12490
|
}
|
|
12644
12491
|
}
|
|
12645
12492
|
}
|
|
12646
|
-
},
|
|
12647
|
-
"tenants_left_in_source": {
|
|
12648
|
-
"type": "number"
|
|
12649
|
-
},
|
|
12650
|
-
"tenants_in_target": {
|
|
12651
|
-
"type": "number"
|
|
12652
12493
|
}
|
|
12653
12494
|
}
|
|
12654
12495
|
}
|
|
@@ -12656,7 +12497,7 @@
|
|
|
12656
12497
|
}
|
|
12657
12498
|
},
|
|
12658
12499
|
"400": {
|
|
12659
|
-
"description": "`
|
|
12500
|
+
"description": "`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
12660
12501
|
"content": {
|
|
12661
12502
|
"application/json": {
|
|
12662
12503
|
"schema": {
|
|
@@ -12670,7 +12511,6 @@
|
|
|
12670
12511
|
"error_code": {
|
|
12671
12512
|
"type": "string",
|
|
12672
12513
|
"enum": [
|
|
12673
|
-
"invalid_project_id",
|
|
12674
12514
|
"validation_error"
|
|
12675
12515
|
]
|
|
12676
12516
|
}
|
|
@@ -12758,31 +12598,6 @@
|
|
|
12758
12598
|
}
|
|
12759
12599
|
}
|
|
12760
12600
|
},
|
|
12761
|
-
"409": {
|
|
12762
|
-
"description": "`account_transfer_refused` — The Auth Account cannot be moved to that project. `details.blockers` lists why.",
|
|
12763
|
-
"content": {
|
|
12764
|
-
"application/json": {
|
|
12765
|
-
"schema": {
|
|
12766
|
-
"allOf": [
|
|
12767
|
-
{
|
|
12768
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
12769
|
-
},
|
|
12770
|
-
{
|
|
12771
|
-
"type": "object",
|
|
12772
|
-
"properties": {
|
|
12773
|
-
"error_code": {
|
|
12774
|
-
"type": "string",
|
|
12775
|
-
"enum": [
|
|
12776
|
-
"account_transfer_refused"
|
|
12777
|
-
]
|
|
12778
|
-
}
|
|
12779
|
-
}
|
|
12780
|
-
}
|
|
12781
|
-
]
|
|
12782
|
-
}
|
|
12783
|
-
}
|
|
12784
|
-
}
|
|
12785
|
-
},
|
|
12786
12601
|
"429": {
|
|
12787
12602
|
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
12788
12603
|
"content": {
|
|
@@ -12836,90 +12651,43 @@
|
|
|
12836
12651
|
}
|
|
12837
12652
|
}
|
|
12838
12653
|
},
|
|
12839
|
-
"/
|
|
12654
|
+
"/internal/usage/m2m/range": {
|
|
12840
12655
|
"get": {
|
|
12841
|
-
"operationId": "
|
|
12842
|
-
"summary": "
|
|
12656
|
+
"operationId": "internal/m2mUsageRange",
|
|
12657
|
+
"summary": "M2M tokens a project was served in a time range (platform)",
|
|
12843
12658
|
"tags": [
|
|
12844
|
-
"
|
|
12659
|
+
"account"
|
|
12845
12660
|
],
|
|
12846
|
-
"description": "
|
|
12661
|
+
"description": "Sum of the hourly client_credentials counters of one project between `from` (first full hour after it) and `to`. At most 40 days back. Platform token with `read:usage`.",
|
|
12847
12662
|
"parameters": [
|
|
12848
|
-
{
|
|
12849
|
-
"schema": {
|
|
12850
|
-
"type": "number",
|
|
12851
|
-
"minimum": 1,
|
|
12852
|
-
"maximum": 200
|
|
12853
|
-
},
|
|
12854
|
-
"in": "query",
|
|
12855
|
-
"name": "pageSize",
|
|
12856
|
-
"required": false,
|
|
12857
|
-
"description": "Number of items per page (max 200)"
|
|
12858
|
-
},
|
|
12859
|
-
{
|
|
12860
|
-
"schema": {
|
|
12861
|
-
"type": "string"
|
|
12862
|
-
},
|
|
12863
|
-
"in": "query",
|
|
12864
|
-
"name": "cursor",
|
|
12865
|
-
"required": false,
|
|
12866
|
-
"description": "Cursor for next page"
|
|
12867
|
-
},
|
|
12868
|
-
{
|
|
12869
|
-
"schema": {
|
|
12870
|
-
"type": "string"
|
|
12871
|
-
},
|
|
12872
|
-
"in": "query",
|
|
12873
|
-
"name": "next",
|
|
12874
|
-
"required": false,
|
|
12875
|
-
"description": "Cursor returned by the previous page"
|
|
12876
|
-
},
|
|
12877
|
-
{
|
|
12878
|
-
"schema": {
|
|
12879
|
-
"type": "string"
|
|
12880
|
-
},
|
|
12881
|
-
"in": "query",
|
|
12882
|
-
"name": "connection_type",
|
|
12883
|
-
"required": false,
|
|
12884
|
-
"description": "Exact match on `connection_type`. Equivalent to `?query=connection_type:<value>`."
|
|
12885
|
-
},
|
|
12886
|
-
{
|
|
12887
|
-
"schema": {
|
|
12888
|
-
"type": "string"
|
|
12889
|
-
},
|
|
12890
|
-
"in": "query",
|
|
12891
|
-
"name": "enabled",
|
|
12892
|
-
"required": false,
|
|
12893
|
-
"description": "Exact match on `enabled`. Equivalent to `?query=enabled:<value>`."
|
|
12894
|
-
},
|
|
12895
12663
|
{
|
|
12896
12664
|
"schema": {
|
|
12897
12665
|
"type": "string"
|
|
12898
12666
|
},
|
|
12899
12667
|
"in": "query",
|
|
12900
|
-
"name": "
|
|
12901
|
-
"required":
|
|
12902
|
-
"description": "
|
|
12668
|
+
"name": "team",
|
|
12669
|
+
"required": true,
|
|
12670
|
+
"description": "The project to read, as `team_<hex>`."
|
|
12903
12671
|
},
|
|
12904
12672
|
{
|
|
12905
12673
|
"schema": {
|
|
12906
|
-
"type": "string"
|
|
12674
|
+
"type": "string",
|
|
12675
|
+
"format": "date-time"
|
|
12907
12676
|
},
|
|
12908
12677
|
"in": "query",
|
|
12909
|
-
"name": "
|
|
12910
|
-
"required":
|
|
12911
|
-
"description": "
|
|
12678
|
+
"name": "from",
|
|
12679
|
+
"required": true,
|
|
12680
|
+
"description": "Start of the range — the subscription period start. Counted from the first full hour after it."
|
|
12912
12681
|
},
|
|
12913
12682
|
{
|
|
12914
12683
|
"schema": {
|
|
12915
12684
|
"type": "string",
|
|
12916
|
-
"
|
|
12917
|
-
"maxLength": 200
|
|
12685
|
+
"format": "date-time"
|
|
12918
12686
|
},
|
|
12919
12687
|
"in": "query",
|
|
12920
|
-
"name": "
|
|
12688
|
+
"name": "to",
|
|
12921
12689
|
"required": false,
|
|
12922
|
-
"description": "
|
|
12690
|
+
"description": "End of the range. Defaults to now."
|
|
12923
12691
|
}
|
|
12924
12692
|
],
|
|
12925
12693
|
"security": [
|
|
@@ -12935,34 +12703,31 @@
|
|
|
12935
12703
|
"schema": {
|
|
12936
12704
|
"type": "object",
|
|
12937
12705
|
"required": [
|
|
12938
|
-
"
|
|
12939
|
-
"
|
|
12706
|
+
"team",
|
|
12707
|
+
"from",
|
|
12708
|
+
"to",
|
|
12709
|
+
"tokens"
|
|
12940
12710
|
],
|
|
12941
12711
|
"properties": {
|
|
12942
|
-
"
|
|
12943
|
-
"
|
|
12944
|
-
{
|
|
12945
|
-
"type": "string"
|
|
12946
|
-
},
|
|
12947
|
-
{
|
|
12948
|
-
"type": "null"
|
|
12949
|
-
}
|
|
12950
|
-
]
|
|
12712
|
+
"team": {
|
|
12713
|
+
"type": "string"
|
|
12951
12714
|
},
|
|
12952
|
-
"
|
|
12953
|
-
"type": "
|
|
12954
|
-
|
|
12955
|
-
|
|
12956
|
-
|
|
12715
|
+
"from": {
|
|
12716
|
+
"type": "string"
|
|
12717
|
+
},
|
|
12718
|
+
"to": {
|
|
12719
|
+
"type": "string"
|
|
12720
|
+
},
|
|
12721
|
+
"tokens": {
|
|
12722
|
+
"type": "integer"
|
|
12957
12723
|
}
|
|
12958
|
-
}
|
|
12959
|
-
"additionalProperties": false
|
|
12724
|
+
}
|
|
12960
12725
|
}
|
|
12961
12726
|
}
|
|
12962
12727
|
}
|
|
12963
12728
|
},
|
|
12964
12729
|
"400": {
|
|
12965
|
-
"description": "`
|
|
12730
|
+
"description": "`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
12966
12731
|
"content": {
|
|
12967
12732
|
"application/json": {
|
|
12968
12733
|
"schema": {
|
|
@@ -12976,9 +12741,6 @@
|
|
|
12976
12741
|
"error_code": {
|
|
12977
12742
|
"type": "string",
|
|
12978
12743
|
"enum": [
|
|
12979
|
-
"invalid_query",
|
|
12980
|
-
"invalid_expand",
|
|
12981
|
-
"search_not_supported",
|
|
12982
12744
|
"validation_error"
|
|
12983
12745
|
]
|
|
12984
12746
|
}
|
|
@@ -13117,14 +12879,16 @@
|
|
|
13117
12879
|
}
|
|
13118
12880
|
}
|
|
13119
12881
|
}
|
|
13120
|
-
}
|
|
12882
|
+
}
|
|
12883
|
+
},
|
|
12884
|
+
"/account/{account_id}/transfer": {
|
|
13121
12885
|
"post": {
|
|
13122
|
-
"operationId": "
|
|
13123
|
-
"summary": "
|
|
12886
|
+
"operationId": "account/transfer",
|
|
12887
|
+
"summary": "Move an Account to another project",
|
|
13124
12888
|
"tags": [
|
|
13125
|
-
"
|
|
12889
|
+
"account"
|
|
13126
12890
|
],
|
|
13127
|
-
"description": "
|
|
12891
|
+
"description": "Re-parents an Auth Account (tenant) under another Faable project. Only `Account.team` changes: the tenant keeps its id, slug, `*.auth.faable.link` domain, clients and secrets, and end-user logins are unaffected. `dry_run` returns the plan (what rides along + blockers) without writing. Platform credentials only. See arch/auth/tenant-project-transfer.md.",
|
|
13128
12892
|
"requestBody": {
|
|
13129
12893
|
"required": true,
|
|
13130
12894
|
"content": {
|
|
@@ -13132,180 +12896,46 @@
|
|
|
13132
12896
|
"schema": {
|
|
13133
12897
|
"type": "object",
|
|
13134
12898
|
"required": [
|
|
13135
|
-
"
|
|
13136
|
-
"
|
|
12899
|
+
"to_project",
|
|
12900
|
+
"reason"
|
|
13137
12901
|
],
|
|
13138
12902
|
"properties": {
|
|
13139
|
-
"
|
|
13140
|
-
"type": "string"
|
|
13141
|
-
|
|
13142
|
-
"connection_type": {
|
|
13143
|
-
"enum": [
|
|
13144
|
-
"database",
|
|
13145
|
-
"custom",
|
|
13146
|
-
"github",
|
|
13147
|
-
"figma",
|
|
13148
|
-
"google_oauth2",
|
|
13149
|
-
"microsoft",
|
|
13150
|
-
"oidc",
|
|
13151
|
-
"passwordless_email"
|
|
13152
|
-
]
|
|
13153
|
-
},
|
|
13154
|
-
"authorize_url": {
|
|
13155
|
-
"type": "string"
|
|
13156
|
-
},
|
|
13157
|
-
"client_id": {
|
|
13158
|
-
"type": "string"
|
|
13159
|
-
},
|
|
13160
|
-
"client_secret": {
|
|
13161
|
-
"type": "string"
|
|
13162
|
-
},
|
|
13163
|
-
"issuer": {
|
|
13164
|
-
"type": "string"
|
|
13165
|
-
},
|
|
13166
|
-
"jwks_url": {
|
|
13167
|
-
"type": "string"
|
|
13168
|
-
},
|
|
13169
|
-
"scope": {
|
|
13170
|
-
"type": "array",
|
|
13171
|
-
"items": {
|
|
13172
|
-
"type": "string"
|
|
13173
|
-
}
|
|
13174
|
-
},
|
|
13175
|
-
"enabled": {
|
|
13176
|
-
"type": "boolean"
|
|
13177
|
-
},
|
|
13178
|
-
"claims_mapping": {
|
|
13179
|
-
"type": "object",
|
|
13180
|
-
"additionalProperties": {
|
|
13181
|
-
"type": "string"
|
|
13182
|
-
}
|
|
13183
|
-
},
|
|
13184
|
-
"authorize_params": {
|
|
13185
|
-
"type": "object",
|
|
13186
|
-
"description": "Authorize params",
|
|
13187
|
-
"default": {},
|
|
13188
|
-
"additionalProperties": {
|
|
13189
|
-
"type": "string"
|
|
13190
|
-
}
|
|
13191
|
-
},
|
|
13192
|
-
"email_oauth_sync_policy": {
|
|
13193
|
-
"anyOf": [
|
|
13194
|
-
{
|
|
13195
|
-
"type": "string",
|
|
13196
|
-
"enum": [
|
|
13197
|
-
"preserve_manual"
|
|
13198
|
-
]
|
|
13199
|
-
},
|
|
13200
|
-
{
|
|
13201
|
-
"type": "string",
|
|
13202
|
-
"enum": [
|
|
13203
|
-
"always_sync"
|
|
13204
|
-
]
|
|
13205
|
-
}
|
|
13206
|
-
],
|
|
13207
|
-
"description": "Controls what happens to `user.email` on subsequent OAuth/federated logins when the user previously changed their email manually through this auth server (i.e. `user.email_change_locked_at` is set).\n\n- `preserve_manual` (default): the manually-set email wins. The federated provider's email is ignored on re-sync; `email` and `email_verified` are not touched. The identity link stays valid via `provider_user_id`, so the user can still log in with Google/etc.\n- `always_sync`: the federated provider's email is always written back, overwriting any manual change. Useful for tenants whose source of truth for identity is the IdP (corporate SSO, etc.)."
|
|
13208
|
-
},
|
|
13209
|
-
"password_policy": {
|
|
13210
|
-
"type": "object",
|
|
13211
|
-
"required": [
|
|
13212
|
-
"level"
|
|
13213
|
-
],
|
|
13214
|
-
"properties": {
|
|
13215
|
-
"level": {
|
|
13216
|
-
"anyOf": [
|
|
13217
|
-
{
|
|
13218
|
-
"type": "string",
|
|
13219
|
-
"enum": [
|
|
13220
|
-
"none"
|
|
13221
|
-
]
|
|
13222
|
-
},
|
|
13223
|
-
{
|
|
13224
|
-
"type": "string",
|
|
13225
|
-
"enum": [
|
|
13226
|
-
"low"
|
|
13227
|
-
]
|
|
13228
|
-
},
|
|
13229
|
-
{
|
|
13230
|
-
"type": "string",
|
|
13231
|
-
"enum": [
|
|
13232
|
-
"fair"
|
|
13233
|
-
]
|
|
13234
|
-
},
|
|
13235
|
-
{
|
|
13236
|
-
"type": "string",
|
|
13237
|
-
"enum": [
|
|
13238
|
-
"good"
|
|
13239
|
-
]
|
|
13240
|
-
},
|
|
13241
|
-
{
|
|
13242
|
-
"type": "string",
|
|
13243
|
-
"enum": [
|
|
13244
|
-
"excellent"
|
|
13245
|
-
]
|
|
13246
|
-
}
|
|
13247
|
-
]
|
|
13248
|
-
},
|
|
13249
|
-
"min_length": {
|
|
13250
|
-
"type": "integer",
|
|
13251
|
-
"minimum": 1,
|
|
13252
|
-
"maximum": 128
|
|
13253
|
-
},
|
|
13254
|
-
"require_lowercase": {
|
|
13255
|
-
"type": "boolean"
|
|
13256
|
-
},
|
|
13257
|
-
"require_uppercase": {
|
|
13258
|
-
"type": "boolean"
|
|
13259
|
-
},
|
|
13260
|
-
"require_number": {
|
|
13261
|
-
"type": "boolean"
|
|
13262
|
-
},
|
|
13263
|
-
"require_special": {
|
|
13264
|
-
"type": "boolean"
|
|
13265
|
-
}
|
|
13266
|
-
},
|
|
13267
|
-
"description": "Password policy enforced when writing a password through this database connection (password reset and admin set-password). `level` is an Auth0-style preset (none/low/fair/good/excellent); the dashboard expands it into the explicit rule fields when saving. The rule fields override the preset baseline. When unset on the connection, the server applies the `good` default. Does not affect login."
|
|
12903
|
+
"to_project": {
|
|
12904
|
+
"type": "string",
|
|
12905
|
+
"description": "Destination project (`project_<hex>`) or its team id (`team_<hex>`) — both spellings are accepted."
|
|
13268
12906
|
},
|
|
13269
|
-
"
|
|
13270
|
-
"type": "
|
|
12907
|
+
"reason": {
|
|
12908
|
+
"type": "string",
|
|
12909
|
+
"minLength": 3,
|
|
12910
|
+
"maxLength": 500,
|
|
12911
|
+
"description": "Why the tenant is being moved. Recorded in the tenant's log and in ours."
|
|
13271
12912
|
},
|
|
13272
|
-
"
|
|
13273
|
-
"
|
|
13274
|
-
|
|
13275
|
-
|
|
13276
|
-
"enum": [
|
|
13277
|
-
"email"
|
|
13278
|
-
]
|
|
13279
|
-
},
|
|
13280
|
-
{
|
|
13281
|
-
"type": "string",
|
|
13282
|
-
"enum": [
|
|
13283
|
-
"username"
|
|
13284
|
-
]
|
|
13285
|
-
},
|
|
13286
|
-
{
|
|
13287
|
-
"type": "string",
|
|
13288
|
-
"enum": [
|
|
13289
|
-
"email_or_username"
|
|
13290
|
-
]
|
|
13291
|
-
}
|
|
13292
|
-
],
|
|
13293
|
-
"description": "What users of this database connection sign in with: `email`, `username`, or `email_or_username` (email first, then username). The login looks up only the matching field, and the hosted login screen asks for it — validating the address format under `email`. New database connections default to `email`; a connection created before this setting existed behaves as `email_or_username`. Only meaningful on `database` connections."
|
|
12913
|
+
"dry_run": {
|
|
12914
|
+
"type": "boolean",
|
|
12915
|
+
"default": false,
|
|
12916
|
+
"description": "Return the plan (what rides along + blockers) without writing."
|
|
13294
12917
|
},
|
|
13295
|
-
"
|
|
13296
|
-
"type": "
|
|
13297
|
-
"
|
|
13298
|
-
"
|
|
13299
|
-
"description": "Add Metadata"
|
|
12918
|
+
"allow_over_cap": {
|
|
12919
|
+
"type": "boolean",
|
|
12920
|
+
"default": false,
|
|
12921
|
+
"description": "Move even if the destination ends up above the per-project cap on Auth Accounts."
|
|
13300
12922
|
}
|
|
13301
12923
|
},
|
|
13302
|
-
"description": "ConnectionCreate",
|
|
13303
12924
|
"additionalProperties": false
|
|
13304
12925
|
}
|
|
13305
12926
|
}
|
|
13306
|
-
}
|
|
13307
|
-
"description": "ConnectionCreate"
|
|
12927
|
+
}
|
|
13308
12928
|
},
|
|
12929
|
+
"parameters": [
|
|
12930
|
+
{
|
|
12931
|
+
"schema": {
|
|
12932
|
+
"type": "string"
|
|
12933
|
+
},
|
|
12934
|
+
"in": "path",
|
|
12935
|
+
"name": "account_id",
|
|
12936
|
+
"required": true
|
|
12937
|
+
}
|
|
12938
|
+
],
|
|
13309
12939
|
"security": [
|
|
13310
12940
|
{
|
|
13311
12941
|
"bearerAuth": []
|
|
@@ -13313,251 +12943,100 @@
|
|
|
13313
12943
|
],
|
|
13314
12944
|
"responses": {
|
|
13315
12945
|
"200": {
|
|
13316
|
-
"description": "
|
|
12946
|
+
"description": "Default Response",
|
|
13317
12947
|
"content": {
|
|
13318
12948
|
"application/json": {
|
|
13319
12949
|
"schema": {
|
|
13320
12950
|
"type": "object",
|
|
13321
12951
|
"required": [
|
|
13322
|
-
"
|
|
13323
|
-
"
|
|
13324
|
-
"
|
|
13325
|
-
"
|
|
13326
|
-
"
|
|
13327
|
-
"
|
|
13328
|
-
"
|
|
13329
|
-
"
|
|
13330
|
-
"
|
|
13331
|
-
"
|
|
13332
|
-
"response_type",
|
|
13333
|
-
"enabled",
|
|
13334
|
-
"enabled_clients",
|
|
13335
|
-
"scope",
|
|
13336
|
-
"authorize_params",
|
|
13337
|
-
"is_using_default_credentials",
|
|
13338
|
-
"account",
|
|
13339
|
-
"createdAt"
|
|
12952
|
+
"moved",
|
|
12953
|
+
"account_id",
|
|
12954
|
+
"account_name",
|
|
12955
|
+
"slug",
|
|
12956
|
+
"domain",
|
|
12957
|
+
"from_project",
|
|
12958
|
+
"to_project",
|
|
12959
|
+
"target_tenants_before",
|
|
12960
|
+
"moves_with_it",
|
|
12961
|
+
"blockers"
|
|
13340
12962
|
],
|
|
13341
12963
|
"properties": {
|
|
13342
|
-
"
|
|
13343
|
-
"type": "
|
|
13344
|
-
"description": "Connection ID"
|
|
12964
|
+
"moved": {
|
|
12965
|
+
"type": "boolean"
|
|
13345
12966
|
},
|
|
13346
|
-
"
|
|
12967
|
+
"account_id": {
|
|
13347
12968
|
"type": "string"
|
|
13348
12969
|
},
|
|
13349
|
-
"
|
|
13350
|
-
"
|
|
13351
|
-
"database",
|
|
13352
|
-
"custom",
|
|
13353
|
-
"github",
|
|
13354
|
-
"figma",
|
|
13355
|
-
"google_oauth2",
|
|
13356
|
-
"microsoft",
|
|
13357
|
-
"oidc",
|
|
13358
|
-
"passwordless_email"
|
|
13359
|
-
]
|
|
13360
|
-
},
|
|
13361
|
-
"authorize_url": {
|
|
13362
|
-
"type": "string",
|
|
13363
|
-
"default": null
|
|
13364
|
-
},
|
|
13365
|
-
"token_url": {
|
|
13366
|
-
"type": "string",
|
|
13367
|
-
"default": null
|
|
13368
|
-
},
|
|
13369
|
-
"userinfo_url": {
|
|
13370
|
-
"type": "string",
|
|
13371
|
-
"default": null
|
|
13372
|
-
},
|
|
13373
|
-
"client_id": {
|
|
13374
|
-
"type": "string",
|
|
13375
|
-
"default": null
|
|
13376
|
-
},
|
|
13377
|
-
"client_secret": {
|
|
13378
|
-
"type": "string",
|
|
13379
|
-
"default": null
|
|
13380
|
-
},
|
|
13381
|
-
"issuer": {
|
|
13382
|
-
"type": "string",
|
|
13383
|
-
"default": null
|
|
12970
|
+
"account_name": {
|
|
12971
|
+
"type": "string"
|
|
13384
12972
|
},
|
|
13385
|
-
"
|
|
13386
|
-
"type": "string"
|
|
13387
|
-
"default": null
|
|
12973
|
+
"slug": {
|
|
12974
|
+
"type": "string"
|
|
13388
12975
|
},
|
|
13389
|
-
"
|
|
13390
|
-
"type": "string"
|
|
13391
|
-
"default": null
|
|
12976
|
+
"domain": {
|
|
12977
|
+
"type": "string"
|
|
13392
12978
|
},
|
|
13393
|
-
"
|
|
13394
|
-
"type": "
|
|
12979
|
+
"from_project": {
|
|
12980
|
+
"type": "string"
|
|
13395
12981
|
},
|
|
13396
|
-
"
|
|
13397
|
-
"type": "
|
|
13398
|
-
"items": {
|
|
13399
|
-
"type": "string"
|
|
13400
|
-
},
|
|
13401
|
-
"default": null,
|
|
13402
|
-
"nullable": true
|
|
12982
|
+
"to_project": {
|
|
12983
|
+
"type": "string"
|
|
13403
12984
|
},
|
|
13404
|
-
"
|
|
12985
|
+
"target_tenants_before": {
|
|
13405
12986
|
"type": "array",
|
|
13406
12987
|
"items": {
|
|
13407
|
-
"type": "
|
|
13408
|
-
|
|
13409
|
-
|
|
13410
|
-
|
|
13411
|
-
|
|
13412
|
-
|
|
13413
|
-
|
|
13414
|
-
|
|
13415
|
-
|
|
13416
|
-
|
|
12988
|
+
"type": "object",
|
|
12989
|
+
"required": [
|
|
12990
|
+
"id",
|
|
12991
|
+
"name"
|
|
12992
|
+
],
|
|
12993
|
+
"properties": {
|
|
12994
|
+
"id": {
|
|
12995
|
+
"type": "string"
|
|
12996
|
+
},
|
|
12997
|
+
"name": {
|
|
12998
|
+
"type": "string"
|
|
12999
|
+
}
|
|
13000
|
+
}
|
|
13417
13001
|
}
|
|
13418
13002
|
},
|
|
13419
|
-
"
|
|
13003
|
+
"moves_with_it": {
|
|
13420
13004
|
"type": "object",
|
|
13421
13005
|
"additionalProperties": {
|
|
13422
|
-
"type": "
|
|
13006
|
+
"type": "number"
|
|
13423
13007
|
}
|
|
13424
13008
|
},
|
|
13425
|
-
"
|
|
13426
|
-
"type": "
|
|
13427
|
-
"
|
|
13428
|
-
|
|
13429
|
-
|
|
13430
|
-
|
|
13431
|
-
|
|
13432
|
-
|
|
13433
|
-
|
|
13434
|
-
"
|
|
13435
|
-
"
|
|
13436
|
-
|
|
13437
|
-
|
|
13438
|
-
|
|
13439
|
-
|
|
13440
|
-
"enum": [
|
|
13441
|
-
"always_sync"
|
|
13442
|
-
]
|
|
13443
|
-
}
|
|
13444
|
-
],
|
|
13445
|
-
"description": "Per-connection override of `Account.email_oauth_sync_policy`. When set on a Connection, takes precedence over the Account-level setting for logins through this IdP. When unset (default), the Account-level policy applies. Use this to allow `always_sync` for a trusted IdP (e.g. corporate SSO) while keeping `preserve_manual` for others within the same tenant."
|
|
13446
|
-
},
|
|
13447
|
-
"password_policy": {
|
|
13448
|
-
"type": "object",
|
|
13449
|
-
"required": [
|
|
13450
|
-
"level"
|
|
13451
|
-
],
|
|
13452
|
-
"properties": {
|
|
13453
|
-
"level": {
|
|
13454
|
-
"anyOf": [
|
|
13455
|
-
{
|
|
13456
|
-
"type": "string",
|
|
13457
|
-
"enum": [
|
|
13458
|
-
"none"
|
|
13459
|
-
]
|
|
13460
|
-
},
|
|
13461
|
-
{
|
|
13462
|
-
"type": "string",
|
|
13463
|
-
"enum": [
|
|
13464
|
-
"low"
|
|
13465
|
-
]
|
|
13466
|
-
},
|
|
13467
|
-
{
|
|
13468
|
-
"type": "string",
|
|
13469
|
-
"enum": [
|
|
13470
|
-
"fair"
|
|
13471
|
-
]
|
|
13472
|
-
},
|
|
13473
|
-
{
|
|
13474
|
-
"type": "string",
|
|
13475
|
-
"enum": [
|
|
13476
|
-
"good"
|
|
13477
|
-
]
|
|
13478
|
-
},
|
|
13479
|
-
{
|
|
13480
|
-
"type": "string",
|
|
13481
|
-
"enum": [
|
|
13482
|
-
"excellent"
|
|
13483
|
-
]
|
|
13484
|
-
}
|
|
13485
|
-
]
|
|
13486
|
-
},
|
|
13487
|
-
"min_length": {
|
|
13488
|
-
"type": "integer",
|
|
13489
|
-
"minimum": 1,
|
|
13490
|
-
"maximum": 128
|
|
13491
|
-
},
|
|
13492
|
-
"require_lowercase": {
|
|
13493
|
-
"type": "boolean"
|
|
13494
|
-
},
|
|
13495
|
-
"require_uppercase": {
|
|
13496
|
-
"type": "boolean"
|
|
13497
|
-
},
|
|
13498
|
-
"require_number": {
|
|
13499
|
-
"type": "boolean"
|
|
13500
|
-
},
|
|
13501
|
-
"require_special": {
|
|
13502
|
-
"type": "boolean"
|
|
13503
|
-
}
|
|
13504
|
-
},
|
|
13505
|
-
"description": "Password policy enforced when writing a password through this database connection (password reset and admin set-password). `level` is an Auth0-style preset (none/low/fair/good/excellent); the dashboard expands it into the explicit rule fields when saving. The rule fields override the preset baseline. When unset on the connection, the server applies the `good` default. Does not affect login."
|
|
13506
|
-
},
|
|
13507
|
-
"login_identifier": {
|
|
13508
|
-
"anyOf": [
|
|
13509
|
-
{
|
|
13510
|
-
"type": "string",
|
|
13511
|
-
"enum": [
|
|
13512
|
-
"email"
|
|
13513
|
-
]
|
|
13514
|
-
},
|
|
13515
|
-
{
|
|
13516
|
-
"type": "string",
|
|
13517
|
-
"enum": [
|
|
13518
|
-
"username"
|
|
13519
|
-
]
|
|
13520
|
-
},
|
|
13521
|
-
{
|
|
13522
|
-
"type": "string",
|
|
13523
|
-
"enum": [
|
|
13524
|
-
"email_or_username"
|
|
13525
|
-
]
|
|
13009
|
+
"blockers": {
|
|
13010
|
+
"type": "array",
|
|
13011
|
+
"items": {
|
|
13012
|
+
"type": "object",
|
|
13013
|
+
"required": [
|
|
13014
|
+
"code",
|
|
13015
|
+
"detail"
|
|
13016
|
+
],
|
|
13017
|
+
"properties": {
|
|
13018
|
+
"code": {
|
|
13019
|
+
"type": "string"
|
|
13020
|
+
},
|
|
13021
|
+
"detail": {
|
|
13022
|
+
"type": "string"
|
|
13023
|
+
}
|
|
13526
13024
|
}
|
|
13527
|
-
|
|
13528
|
-
"description": "What users of this database connection sign in with: `email`, `username`, or `email_or_username` (email first, then username). The login looks up only the matching field, and the hosted login screen asks for it — validating the address format under `email`. New database connections default to `email`; a connection created before this setting existed behaves as `email_or_username`. Only meaningful on `database` connections."
|
|
13529
|
-
},
|
|
13530
|
-
"disable_signup": {
|
|
13531
|
-
"type": "boolean",
|
|
13532
|
-
"description": "When true, the public self-service signup endpoint (`POST /dbconnections/signup`) rejects new registrations against this database connection with `403 signup_disabled`. Defaults to false (signup allowed). Only meaningful on `database` connections; mirrors Auth0 `disable_signup`."
|
|
13533
|
-
},
|
|
13534
|
-
"account": {
|
|
13535
|
-
"type": "string",
|
|
13536
|
-
"description": "Object is related with this account"
|
|
13537
|
-
},
|
|
13538
|
-
"metadata": {
|
|
13539
|
-
"type": "object",
|
|
13540
|
-
"properties": {},
|
|
13541
|
-
"additionalProperties": true,
|
|
13542
|
-
"description": "ConnectionMetadata",
|
|
13543
|
-
"default": {}
|
|
13025
|
+
}
|
|
13544
13026
|
},
|
|
13545
|
-
"
|
|
13546
|
-
"type": "
|
|
13547
|
-
"description": "Connection creation date"
|
|
13027
|
+
"tenants_left_in_source": {
|
|
13028
|
+
"type": "number"
|
|
13548
13029
|
},
|
|
13549
|
-
"
|
|
13550
|
-
"type": "
|
|
13551
|
-
"description": "Connection updated date"
|
|
13030
|
+
"tenants_in_target": {
|
|
13031
|
+
"type": "number"
|
|
13552
13032
|
}
|
|
13553
|
-
}
|
|
13554
|
-
"description": "Connection"
|
|
13033
|
+
}
|
|
13555
13034
|
}
|
|
13556
13035
|
}
|
|
13557
13036
|
}
|
|
13558
13037
|
},
|
|
13559
13038
|
"400": {
|
|
13560
|
-
"description": "`
|
|
13039
|
+
"description": "`invalid_project_id` — The project id is not of the form `project_<hex>` or `team_<hex>`.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
13561
13040
|
"content": {
|
|
13562
13041
|
"application/json": {
|
|
13563
13042
|
"schema": {
|
|
@@ -13571,7 +13050,7 @@
|
|
|
13571
13050
|
"error_code": {
|
|
13572
13051
|
"type": "string",
|
|
13573
13052
|
"enum": [
|
|
13574
|
-
"
|
|
13053
|
+
"invalid_project_id",
|
|
13575
13054
|
"validation_error"
|
|
13576
13055
|
]
|
|
13577
13056
|
}
|
|
@@ -13659,6 +13138,31 @@
|
|
|
13659
13138
|
}
|
|
13660
13139
|
}
|
|
13661
13140
|
},
|
|
13141
|
+
"409": {
|
|
13142
|
+
"description": "`account_transfer_refused` — The Auth Account cannot be moved to that project. `details.blockers` lists why.",
|
|
13143
|
+
"content": {
|
|
13144
|
+
"application/json": {
|
|
13145
|
+
"schema": {
|
|
13146
|
+
"allOf": [
|
|
13147
|
+
{
|
|
13148
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
13149
|
+
},
|
|
13150
|
+
{
|
|
13151
|
+
"type": "object",
|
|
13152
|
+
"properties": {
|
|
13153
|
+
"error_code": {
|
|
13154
|
+
"type": "string",
|
|
13155
|
+
"enum": [
|
|
13156
|
+
"account_transfer_refused"
|
|
13157
|
+
]
|
|
13158
|
+
}
|
|
13159
|
+
}
|
|
13160
|
+
}
|
|
13161
|
+
]
|
|
13162
|
+
}
|
|
13163
|
+
}
|
|
13164
|
+
}
|
|
13165
|
+
},
|
|
13662
13166
|
"429": {
|
|
13663
13167
|
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
13664
13168
|
"content": {
|
|
@@ -13712,24 +13216,476 @@
|
|
|
13712
13216
|
}
|
|
13713
13217
|
}
|
|
13714
13218
|
},
|
|
13715
|
-
"/connection
|
|
13219
|
+
"/connection": {
|
|
13716
13220
|
"get": {
|
|
13717
|
-
"operationId": "connection/
|
|
13718
|
-
"summary": "
|
|
13221
|
+
"operationId": "connection/list",
|
|
13222
|
+
"summary": "List Connections",
|
|
13719
13223
|
"tags": [
|
|
13720
13224
|
"connection"
|
|
13721
13225
|
],
|
|
13722
|
-
"description": "
|
|
13226
|
+
"description": "List Connections",
|
|
13723
13227
|
"parameters": [
|
|
13228
|
+
{
|
|
13229
|
+
"schema": {
|
|
13230
|
+
"type": "number",
|
|
13231
|
+
"minimum": 1,
|
|
13232
|
+
"maximum": 200
|
|
13233
|
+
},
|
|
13234
|
+
"in": "query",
|
|
13235
|
+
"name": "pageSize",
|
|
13236
|
+
"required": false,
|
|
13237
|
+
"description": "Number of items per page (max 200)"
|
|
13238
|
+
},
|
|
13724
13239
|
{
|
|
13725
13240
|
"schema": {
|
|
13726
13241
|
"type": "string"
|
|
13727
13242
|
},
|
|
13728
|
-
"in": "
|
|
13729
|
-
"name": "
|
|
13730
|
-
"required":
|
|
13243
|
+
"in": "query",
|
|
13244
|
+
"name": "cursor",
|
|
13245
|
+
"required": false,
|
|
13246
|
+
"description": "Cursor for next page"
|
|
13247
|
+
},
|
|
13248
|
+
{
|
|
13249
|
+
"schema": {
|
|
13250
|
+
"type": "string"
|
|
13251
|
+
},
|
|
13252
|
+
"in": "query",
|
|
13253
|
+
"name": "next",
|
|
13254
|
+
"required": false,
|
|
13255
|
+
"description": "Cursor returned by the previous page"
|
|
13256
|
+
},
|
|
13257
|
+
{
|
|
13258
|
+
"schema": {
|
|
13259
|
+
"type": "string"
|
|
13260
|
+
},
|
|
13261
|
+
"in": "query",
|
|
13262
|
+
"name": "connection_type",
|
|
13263
|
+
"required": false,
|
|
13264
|
+
"description": "Exact match on `connection_type`. Equivalent to `?query=connection_type:<value>`."
|
|
13265
|
+
},
|
|
13266
|
+
{
|
|
13267
|
+
"schema": {
|
|
13268
|
+
"type": "string"
|
|
13269
|
+
},
|
|
13270
|
+
"in": "query",
|
|
13271
|
+
"name": "enabled",
|
|
13272
|
+
"required": false,
|
|
13273
|
+
"description": "Exact match on `enabled`. Equivalent to `?query=enabled:<value>`."
|
|
13274
|
+
},
|
|
13275
|
+
{
|
|
13276
|
+
"schema": {
|
|
13277
|
+
"type": "string"
|
|
13278
|
+
},
|
|
13279
|
+
"in": "query",
|
|
13280
|
+
"name": "category",
|
|
13281
|
+
"required": false,
|
|
13282
|
+
"description": "Exact match on `category`. Equivalent to `?query=category:<value>`."
|
|
13283
|
+
},
|
|
13284
|
+
{
|
|
13285
|
+
"schema": {
|
|
13286
|
+
"type": "string"
|
|
13287
|
+
},
|
|
13288
|
+
"in": "query",
|
|
13289
|
+
"name": "query",
|
|
13290
|
+
"required": false,
|
|
13291
|
+
"description": "Filter using a FaableQL query"
|
|
13292
|
+
},
|
|
13293
|
+
{
|
|
13294
|
+
"schema": {
|
|
13295
|
+
"type": "string",
|
|
13296
|
+
"minLength": 1,
|
|
13297
|
+
"maxLength": 200
|
|
13298
|
+
},
|
|
13299
|
+
"in": "query",
|
|
13300
|
+
"name": "q",
|
|
13301
|
+
"required": false,
|
|
13302
|
+
"description": "Full-text search across: `connection_name`, `connection_type`."
|
|
13303
|
+
}
|
|
13304
|
+
],
|
|
13305
|
+
"security": [
|
|
13306
|
+
{
|
|
13307
|
+
"bearerAuth": []
|
|
13308
|
+
}
|
|
13309
|
+
],
|
|
13310
|
+
"responses": {
|
|
13311
|
+
"200": {
|
|
13312
|
+
"description": "Default Response",
|
|
13313
|
+
"content": {
|
|
13314
|
+
"application/json": {
|
|
13315
|
+
"schema": {
|
|
13316
|
+
"type": "object",
|
|
13317
|
+
"required": [
|
|
13318
|
+
"next",
|
|
13319
|
+
"results"
|
|
13320
|
+
],
|
|
13321
|
+
"properties": {
|
|
13322
|
+
"next": {
|
|
13323
|
+
"anyOf": [
|
|
13324
|
+
{
|
|
13325
|
+
"type": "string"
|
|
13326
|
+
},
|
|
13327
|
+
{
|
|
13328
|
+
"type": "null"
|
|
13329
|
+
}
|
|
13330
|
+
]
|
|
13331
|
+
},
|
|
13332
|
+
"results": {
|
|
13333
|
+
"type": "array",
|
|
13334
|
+
"items": {
|
|
13335
|
+
"$ref": "#/components/schemas/Connection"
|
|
13336
|
+
}
|
|
13337
|
+
}
|
|
13338
|
+
},
|
|
13339
|
+
"additionalProperties": false
|
|
13340
|
+
}
|
|
13341
|
+
}
|
|
13342
|
+
}
|
|
13343
|
+
},
|
|
13344
|
+
"400": {
|
|
13345
|
+
"description": "`invalid_query` — The `?query=` FaableQL expression could not be parsed.\n\n`invalid_expand` — An `?expand=` path is not allowed on this resource.\n\n`search_not_supported` — This resource does not support `?search=`.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
13346
|
+
"content": {
|
|
13347
|
+
"application/json": {
|
|
13348
|
+
"schema": {
|
|
13349
|
+
"allOf": [
|
|
13350
|
+
{
|
|
13351
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
13352
|
+
},
|
|
13353
|
+
{
|
|
13354
|
+
"type": "object",
|
|
13355
|
+
"properties": {
|
|
13356
|
+
"error_code": {
|
|
13357
|
+
"type": "string",
|
|
13358
|
+
"enum": [
|
|
13359
|
+
"invalid_query",
|
|
13360
|
+
"invalid_expand",
|
|
13361
|
+
"search_not_supported",
|
|
13362
|
+
"validation_error"
|
|
13363
|
+
]
|
|
13364
|
+
}
|
|
13365
|
+
}
|
|
13366
|
+
}
|
|
13367
|
+
]
|
|
13368
|
+
}
|
|
13369
|
+
}
|
|
13370
|
+
}
|
|
13371
|
+
},
|
|
13372
|
+
"401": {
|
|
13373
|
+
"description": "`unauthorized` — The request carries no valid credentials.",
|
|
13374
|
+
"content": {
|
|
13375
|
+
"application/json": {
|
|
13376
|
+
"schema": {
|
|
13377
|
+
"allOf": [
|
|
13378
|
+
{
|
|
13379
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
13380
|
+
},
|
|
13381
|
+
{
|
|
13382
|
+
"type": "object",
|
|
13383
|
+
"properties": {
|
|
13384
|
+
"error_code": {
|
|
13385
|
+
"type": "string",
|
|
13386
|
+
"enum": [
|
|
13387
|
+
"unauthorized"
|
|
13388
|
+
]
|
|
13389
|
+
}
|
|
13390
|
+
}
|
|
13391
|
+
}
|
|
13392
|
+
]
|
|
13393
|
+
}
|
|
13394
|
+
}
|
|
13395
|
+
}
|
|
13396
|
+
},
|
|
13397
|
+
"403": {
|
|
13398
|
+
"description": "`forbidden` — The credentials are valid but do not allow this operation.\n\n`insufficient_scope` — The token lacks a scope this operation requires. `message` names it.\n\n`user_suspended` — The user is suspended and cannot sign in or be modified.",
|
|
13399
|
+
"content": {
|
|
13400
|
+
"application/json": {
|
|
13401
|
+
"schema": {
|
|
13402
|
+
"allOf": [
|
|
13403
|
+
{
|
|
13404
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
13405
|
+
},
|
|
13406
|
+
{
|
|
13407
|
+
"type": "object",
|
|
13408
|
+
"properties": {
|
|
13409
|
+
"error_code": {
|
|
13410
|
+
"type": "string",
|
|
13411
|
+
"enum": [
|
|
13412
|
+
"forbidden",
|
|
13413
|
+
"insufficient_scope",
|
|
13414
|
+
"user_suspended"
|
|
13415
|
+
]
|
|
13416
|
+
}
|
|
13417
|
+
}
|
|
13418
|
+
}
|
|
13419
|
+
]
|
|
13420
|
+
}
|
|
13421
|
+
}
|
|
13422
|
+
}
|
|
13423
|
+
},
|
|
13424
|
+
"404": {
|
|
13425
|
+
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
13426
|
+
"content": {
|
|
13427
|
+
"application/json": {
|
|
13428
|
+
"schema": {
|
|
13429
|
+
"allOf": [
|
|
13430
|
+
{
|
|
13431
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
13432
|
+
},
|
|
13433
|
+
{
|
|
13434
|
+
"type": "object",
|
|
13435
|
+
"properties": {
|
|
13436
|
+
"error_code": {
|
|
13437
|
+
"type": "string",
|
|
13438
|
+
"enum": [
|
|
13439
|
+
"account_not_found"
|
|
13440
|
+
]
|
|
13441
|
+
}
|
|
13442
|
+
}
|
|
13443
|
+
}
|
|
13444
|
+
]
|
|
13445
|
+
}
|
|
13446
|
+
}
|
|
13447
|
+
}
|
|
13448
|
+
},
|
|
13449
|
+
"429": {
|
|
13450
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
13451
|
+
"content": {
|
|
13452
|
+
"application/json": {
|
|
13453
|
+
"schema": {
|
|
13454
|
+
"allOf": [
|
|
13455
|
+
{
|
|
13456
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
13457
|
+
},
|
|
13458
|
+
{
|
|
13459
|
+
"type": "object",
|
|
13460
|
+
"properties": {
|
|
13461
|
+
"error_code": {
|
|
13462
|
+
"type": "string",
|
|
13463
|
+
"enum": [
|
|
13464
|
+
"too_many_requests"
|
|
13465
|
+
]
|
|
13466
|
+
}
|
|
13467
|
+
}
|
|
13468
|
+
}
|
|
13469
|
+
]
|
|
13470
|
+
}
|
|
13471
|
+
}
|
|
13472
|
+
}
|
|
13473
|
+
},
|
|
13474
|
+
"500": {
|
|
13475
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
13476
|
+
"content": {
|
|
13477
|
+
"application/json": {
|
|
13478
|
+
"schema": {
|
|
13479
|
+
"allOf": [
|
|
13480
|
+
{
|
|
13481
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
13482
|
+
},
|
|
13483
|
+
{
|
|
13484
|
+
"type": "object",
|
|
13485
|
+
"properties": {
|
|
13486
|
+
"error_code": {
|
|
13487
|
+
"type": "string",
|
|
13488
|
+
"enum": [
|
|
13489
|
+
"internal_error"
|
|
13490
|
+
]
|
|
13491
|
+
}
|
|
13492
|
+
}
|
|
13493
|
+
}
|
|
13494
|
+
]
|
|
13495
|
+
}
|
|
13496
|
+
}
|
|
13497
|
+
}
|
|
13731
13498
|
}
|
|
13499
|
+
}
|
|
13500
|
+
},
|
|
13501
|
+
"post": {
|
|
13502
|
+
"operationId": "connection/create",
|
|
13503
|
+
"summary": "Create Connection",
|
|
13504
|
+
"tags": [
|
|
13505
|
+
"connection"
|
|
13732
13506
|
],
|
|
13507
|
+
"description": "Create Connection",
|
|
13508
|
+
"requestBody": {
|
|
13509
|
+
"required": true,
|
|
13510
|
+
"content": {
|
|
13511
|
+
"application/json": {
|
|
13512
|
+
"schema": {
|
|
13513
|
+
"type": "object",
|
|
13514
|
+
"required": [
|
|
13515
|
+
"connection_name",
|
|
13516
|
+
"connection_type"
|
|
13517
|
+
],
|
|
13518
|
+
"properties": {
|
|
13519
|
+
"connection_name": {
|
|
13520
|
+
"type": "string"
|
|
13521
|
+
},
|
|
13522
|
+
"connection_type": {
|
|
13523
|
+
"enum": [
|
|
13524
|
+
"database",
|
|
13525
|
+
"custom",
|
|
13526
|
+
"github",
|
|
13527
|
+
"figma",
|
|
13528
|
+
"google_oauth2",
|
|
13529
|
+
"microsoft",
|
|
13530
|
+
"oidc",
|
|
13531
|
+
"passwordless_email"
|
|
13532
|
+
]
|
|
13533
|
+
},
|
|
13534
|
+
"authorize_url": {
|
|
13535
|
+
"type": "string"
|
|
13536
|
+
},
|
|
13537
|
+
"client_id": {
|
|
13538
|
+
"type": "string"
|
|
13539
|
+
},
|
|
13540
|
+
"client_secret": {
|
|
13541
|
+
"type": "string"
|
|
13542
|
+
},
|
|
13543
|
+
"issuer": {
|
|
13544
|
+
"type": "string"
|
|
13545
|
+
},
|
|
13546
|
+
"jwks_url": {
|
|
13547
|
+
"type": "string"
|
|
13548
|
+
},
|
|
13549
|
+
"scope": {
|
|
13550
|
+
"type": "array",
|
|
13551
|
+
"items": {
|
|
13552
|
+
"type": "string"
|
|
13553
|
+
}
|
|
13554
|
+
},
|
|
13555
|
+
"enabled": {
|
|
13556
|
+
"type": "boolean"
|
|
13557
|
+
},
|
|
13558
|
+
"claims_mapping": {
|
|
13559
|
+
"type": "object",
|
|
13560
|
+
"additionalProperties": {
|
|
13561
|
+
"type": "string"
|
|
13562
|
+
}
|
|
13563
|
+
},
|
|
13564
|
+
"authorize_params": {
|
|
13565
|
+
"type": "object",
|
|
13566
|
+
"description": "Authorize params",
|
|
13567
|
+
"default": {},
|
|
13568
|
+
"additionalProperties": {
|
|
13569
|
+
"type": "string"
|
|
13570
|
+
}
|
|
13571
|
+
},
|
|
13572
|
+
"email_oauth_sync_policy": {
|
|
13573
|
+
"anyOf": [
|
|
13574
|
+
{
|
|
13575
|
+
"type": "string",
|
|
13576
|
+
"enum": [
|
|
13577
|
+
"preserve_manual"
|
|
13578
|
+
]
|
|
13579
|
+
},
|
|
13580
|
+
{
|
|
13581
|
+
"type": "string",
|
|
13582
|
+
"enum": [
|
|
13583
|
+
"always_sync"
|
|
13584
|
+
]
|
|
13585
|
+
}
|
|
13586
|
+
],
|
|
13587
|
+
"description": "Controls what happens to `user.email` on subsequent OAuth/federated logins when the user previously changed their email manually through this auth server (i.e. `user.email_change_locked_at` is set).\n\n- `preserve_manual` (default): the manually-set email wins. The federated provider's email is ignored on re-sync; `email` and `email_verified` are not touched. The identity link stays valid via `provider_user_id`, so the user can still log in with Google/etc.\n- `always_sync`: the federated provider's email is always written back, overwriting any manual change. Useful for tenants whose source of truth for identity is the IdP (corporate SSO, etc.)."
|
|
13588
|
+
},
|
|
13589
|
+
"password_policy": {
|
|
13590
|
+
"type": "object",
|
|
13591
|
+
"required": [
|
|
13592
|
+
"level"
|
|
13593
|
+
],
|
|
13594
|
+
"properties": {
|
|
13595
|
+
"level": {
|
|
13596
|
+
"anyOf": [
|
|
13597
|
+
{
|
|
13598
|
+
"type": "string",
|
|
13599
|
+
"enum": [
|
|
13600
|
+
"none"
|
|
13601
|
+
]
|
|
13602
|
+
},
|
|
13603
|
+
{
|
|
13604
|
+
"type": "string",
|
|
13605
|
+
"enum": [
|
|
13606
|
+
"low"
|
|
13607
|
+
]
|
|
13608
|
+
},
|
|
13609
|
+
{
|
|
13610
|
+
"type": "string",
|
|
13611
|
+
"enum": [
|
|
13612
|
+
"fair"
|
|
13613
|
+
]
|
|
13614
|
+
},
|
|
13615
|
+
{
|
|
13616
|
+
"type": "string",
|
|
13617
|
+
"enum": [
|
|
13618
|
+
"good"
|
|
13619
|
+
]
|
|
13620
|
+
},
|
|
13621
|
+
{
|
|
13622
|
+
"type": "string",
|
|
13623
|
+
"enum": [
|
|
13624
|
+
"excellent"
|
|
13625
|
+
]
|
|
13626
|
+
}
|
|
13627
|
+
]
|
|
13628
|
+
},
|
|
13629
|
+
"min_length": {
|
|
13630
|
+
"type": "integer",
|
|
13631
|
+
"minimum": 1,
|
|
13632
|
+
"maximum": 128
|
|
13633
|
+
},
|
|
13634
|
+
"require_lowercase": {
|
|
13635
|
+
"type": "boolean"
|
|
13636
|
+
},
|
|
13637
|
+
"require_uppercase": {
|
|
13638
|
+
"type": "boolean"
|
|
13639
|
+
},
|
|
13640
|
+
"require_number": {
|
|
13641
|
+
"type": "boolean"
|
|
13642
|
+
},
|
|
13643
|
+
"require_special": {
|
|
13644
|
+
"type": "boolean"
|
|
13645
|
+
}
|
|
13646
|
+
},
|
|
13647
|
+
"description": "Password policy enforced when writing a password through this database connection (password reset and admin set-password). `level` is an Auth0-style preset (none/low/fair/good/excellent); the dashboard expands it into the explicit rule fields when saving. The rule fields override the preset baseline. When unset on the connection, the server applies the `good` default. Does not affect login."
|
|
13648
|
+
},
|
|
13649
|
+
"disable_signup": {
|
|
13650
|
+
"type": "boolean"
|
|
13651
|
+
},
|
|
13652
|
+
"login_identifier": {
|
|
13653
|
+
"anyOf": [
|
|
13654
|
+
{
|
|
13655
|
+
"type": "string",
|
|
13656
|
+
"enum": [
|
|
13657
|
+
"email"
|
|
13658
|
+
]
|
|
13659
|
+
},
|
|
13660
|
+
{
|
|
13661
|
+
"type": "string",
|
|
13662
|
+
"enum": [
|
|
13663
|
+
"username"
|
|
13664
|
+
]
|
|
13665
|
+
},
|
|
13666
|
+
{
|
|
13667
|
+
"type": "string",
|
|
13668
|
+
"enum": [
|
|
13669
|
+
"email_or_username"
|
|
13670
|
+
]
|
|
13671
|
+
}
|
|
13672
|
+
],
|
|
13673
|
+
"description": "What users of this database connection sign in with: `email`, `username`, or `email_or_username` (email first, then username). The login looks up only the matching field, and the hosted login screen asks for it — validating the address format under `email`. New database connections default to `email`; a connection created before this setting existed behaves as `email_or_username`. Only meaningful on `database` connections."
|
|
13674
|
+
},
|
|
13675
|
+
"metadata": {
|
|
13676
|
+
"type": "object",
|
|
13677
|
+
"properties": {},
|
|
13678
|
+
"additionalProperties": true,
|
|
13679
|
+
"description": "Add Metadata"
|
|
13680
|
+
}
|
|
13681
|
+
},
|
|
13682
|
+
"description": "ConnectionCreate",
|
|
13683
|
+
"additionalProperties": false
|
|
13684
|
+
}
|
|
13685
|
+
}
|
|
13686
|
+
},
|
|
13687
|
+
"description": "ConnectionCreate"
|
|
13688
|
+
},
|
|
13733
13689
|
"security": [
|
|
13734
13690
|
{
|
|
13735
13691
|
"bearerAuth": []
|
|
@@ -13981,7 +13937,7 @@
|
|
|
13981
13937
|
}
|
|
13982
13938
|
},
|
|
13983
13939
|
"400": {
|
|
13984
|
-
"description": "`
|
|
13940
|
+
"description": "`already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
13985
13941
|
"content": {
|
|
13986
13942
|
"application/json": {
|
|
13987
13943
|
"schema": {
|
|
@@ -13995,8 +13951,7 @@
|
|
|
13995
13951
|
"error_code": {
|
|
13996
13952
|
"type": "string",
|
|
13997
13953
|
"enum": [
|
|
13998
|
-
"
|
|
13999
|
-
"invalid_expand",
|
|
13954
|
+
"already_exists",
|
|
14000
13955
|
"validation_error"
|
|
14001
13956
|
]
|
|
14002
13957
|
}
|
|
@@ -14060,7 +14015,7 @@
|
|
|
14060
14015
|
}
|
|
14061
14016
|
},
|
|
14062
14017
|
"404": {
|
|
14063
|
-
"description": "`
|
|
14018
|
+
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
14064
14019
|
"content": {
|
|
14065
14020
|
"application/json": {
|
|
14066
14021
|
"schema": {
|
|
@@ -14074,7 +14029,6 @@
|
|
|
14074
14029
|
"error_code": {
|
|
14075
14030
|
"type": "string",
|
|
14076
14031
|
"enum": [
|
|
14077
|
-
"not_found",
|
|
14078
14032
|
"account_not_found"
|
|
14079
14033
|
]
|
|
14080
14034
|
}
|
|
@@ -14136,197 +14090,16 @@
|
|
|
14136
14090
|
}
|
|
14137
14091
|
}
|
|
14138
14092
|
}
|
|
14139
|
-
}
|
|
14140
|
-
|
|
14141
|
-
|
|
14142
|
-
|
|
14093
|
+
}
|
|
14094
|
+
},
|
|
14095
|
+
"/connection/{connection_id}": {
|
|
14096
|
+
"get": {
|
|
14097
|
+
"operationId": "connection/get",
|
|
14098
|
+
"summary": "Get Connection",
|
|
14143
14099
|
"tags": [
|
|
14144
14100
|
"connection"
|
|
14145
14101
|
],
|
|
14146
|
-
"description": "
|
|
14147
|
-
"requestBody": {
|
|
14148
|
-
"required": true,
|
|
14149
|
-
"content": {
|
|
14150
|
-
"application/json": {
|
|
14151
|
-
"schema": {
|
|
14152
|
-
"type": "object",
|
|
14153
|
-
"properties": {
|
|
14154
|
-
"connection_name": {
|
|
14155
|
-
"type": "string"
|
|
14156
|
-
},
|
|
14157
|
-
"enabled": {
|
|
14158
|
-
"type": "boolean"
|
|
14159
|
-
},
|
|
14160
|
-
"enabled_clients": {
|
|
14161
|
-
"type": "array",
|
|
14162
|
-
"items": {
|
|
14163
|
-
"type": "string"
|
|
14164
|
-
}
|
|
14165
|
-
},
|
|
14166
|
-
"scope": {
|
|
14167
|
-
"type": "array",
|
|
14168
|
-
"items": {
|
|
14169
|
-
"type": "string"
|
|
14170
|
-
}
|
|
14171
|
-
},
|
|
14172
|
-
"client_id": {
|
|
14173
|
-
"type": "string"
|
|
14174
|
-
},
|
|
14175
|
-
"client_secret": {
|
|
14176
|
-
"type": "string"
|
|
14177
|
-
},
|
|
14178
|
-
"issuer": {
|
|
14179
|
-
"type": "string"
|
|
14180
|
-
},
|
|
14181
|
-
"authorize_url": {
|
|
14182
|
-
"type": "string"
|
|
14183
|
-
},
|
|
14184
|
-
"token_url": {
|
|
14185
|
-
"type": "string"
|
|
14186
|
-
},
|
|
14187
|
-
"userinfo_url": {
|
|
14188
|
-
"type": "string"
|
|
14189
|
-
},
|
|
14190
|
-
"jwks_url": {
|
|
14191
|
-
"type": "string"
|
|
14192
|
-
},
|
|
14193
|
-
"response_type": {
|
|
14194
|
-
"type": "string"
|
|
14195
|
-
},
|
|
14196
|
-
"authorize_params": {
|
|
14197
|
-
"type": "object",
|
|
14198
|
-
"description": "Authorize params",
|
|
14199
|
-
"default": {},
|
|
14200
|
-
"additionalProperties": {
|
|
14201
|
-
"type": "string"
|
|
14202
|
-
}
|
|
14203
|
-
},
|
|
14204
|
-
"claims_mapping": {
|
|
14205
|
-
"type": "object",
|
|
14206
|
-
"additionalProperties": {
|
|
14207
|
-
"type": "string"
|
|
14208
|
-
}
|
|
14209
|
-
},
|
|
14210
|
-
"email_oauth_sync_policy": {
|
|
14211
|
-
"anyOf": [
|
|
14212
|
-
{
|
|
14213
|
-
"type": "string",
|
|
14214
|
-
"enum": [
|
|
14215
|
-
"preserve_manual"
|
|
14216
|
-
]
|
|
14217
|
-
},
|
|
14218
|
-
{
|
|
14219
|
-
"type": "string",
|
|
14220
|
-
"enum": [
|
|
14221
|
-
"always_sync"
|
|
14222
|
-
]
|
|
14223
|
-
},
|
|
14224
|
-
{
|
|
14225
|
-
"type": "null"
|
|
14226
|
-
}
|
|
14227
|
-
]
|
|
14228
|
-
},
|
|
14229
|
-
"password_policy": {
|
|
14230
|
-
"anyOf": [
|
|
14231
|
-
{
|
|
14232
|
-
"type": "object",
|
|
14233
|
-
"required": [
|
|
14234
|
-
"level"
|
|
14235
|
-
],
|
|
14236
|
-
"properties": {
|
|
14237
|
-
"level": {
|
|
14238
|
-
"anyOf": [
|
|
14239
|
-
{
|
|
14240
|
-
"type": "string",
|
|
14241
|
-
"enum": [
|
|
14242
|
-
"none"
|
|
14243
|
-
]
|
|
14244
|
-
},
|
|
14245
|
-
{
|
|
14246
|
-
"type": "string",
|
|
14247
|
-
"enum": [
|
|
14248
|
-
"low"
|
|
14249
|
-
]
|
|
14250
|
-
},
|
|
14251
|
-
{
|
|
14252
|
-
"type": "string",
|
|
14253
|
-
"enum": [
|
|
14254
|
-
"fair"
|
|
14255
|
-
]
|
|
14256
|
-
},
|
|
14257
|
-
{
|
|
14258
|
-
"type": "string",
|
|
14259
|
-
"enum": [
|
|
14260
|
-
"good"
|
|
14261
|
-
]
|
|
14262
|
-
},
|
|
14263
|
-
{
|
|
14264
|
-
"type": "string",
|
|
14265
|
-
"enum": [
|
|
14266
|
-
"excellent"
|
|
14267
|
-
]
|
|
14268
|
-
}
|
|
14269
|
-
]
|
|
14270
|
-
},
|
|
14271
|
-
"min_length": {
|
|
14272
|
-
"type": "integer",
|
|
14273
|
-
"minimum": 1,
|
|
14274
|
-
"maximum": 128
|
|
14275
|
-
},
|
|
14276
|
-
"require_lowercase": {
|
|
14277
|
-
"type": "boolean"
|
|
14278
|
-
},
|
|
14279
|
-
"require_uppercase": {
|
|
14280
|
-
"type": "boolean"
|
|
14281
|
-
},
|
|
14282
|
-
"require_number": {
|
|
14283
|
-
"type": "boolean"
|
|
14284
|
-
},
|
|
14285
|
-
"require_special": {
|
|
14286
|
-
"type": "boolean"
|
|
14287
|
-
}
|
|
14288
|
-
},
|
|
14289
|
-
"description": "Password policy enforced when writing a password through this database connection (password reset and admin set-password). `level` is an Auth0-style preset (none/low/fair/good/excellent); the dashboard expands it into the explicit rule fields when saving. The rule fields override the preset baseline. When unset on the connection, the server applies the `good` default. Does not affect login."
|
|
14290
|
-
},
|
|
14291
|
-
{
|
|
14292
|
-
"type": "null"
|
|
14293
|
-
}
|
|
14294
|
-
]
|
|
14295
|
-
},
|
|
14296
|
-
"disable_signup": {
|
|
14297
|
-
"type": "boolean"
|
|
14298
|
-
},
|
|
14299
|
-
"login_identifier": {
|
|
14300
|
-
"anyOf": [
|
|
14301
|
-
{
|
|
14302
|
-
"type": "string",
|
|
14303
|
-
"enum": [
|
|
14304
|
-
"email"
|
|
14305
|
-
]
|
|
14306
|
-
},
|
|
14307
|
-
{
|
|
14308
|
-
"type": "string",
|
|
14309
|
-
"enum": [
|
|
14310
|
-
"username"
|
|
14311
|
-
]
|
|
14312
|
-
},
|
|
14313
|
-
{
|
|
14314
|
-
"type": "string",
|
|
14315
|
-
"enum": [
|
|
14316
|
-
"email_or_username"
|
|
14317
|
-
]
|
|
14318
|
-
}
|
|
14319
|
-
],
|
|
14320
|
-
"description": "What users of this database connection sign in with: `email`, `username`, or `email_or_username` (email first, then username). The login looks up only the matching field, and the hosted login screen asks for it — validating the address format under `email`. New database connections default to `email`; a connection created before this setting existed behaves as `email_or_username`. Only meaningful on `database` connections."
|
|
14321
|
-
}
|
|
14322
|
-
},
|
|
14323
|
-
"description": "Partial update for a Connection. Only the supplied fields are modified. `connection_type` is intentionally excluded — changing it would orphan every identity already linked to this connection.",
|
|
14324
|
-
"additionalProperties": false
|
|
14325
|
-
}
|
|
14326
|
-
}
|
|
14327
|
-
},
|
|
14328
|
-
"description": "Partial update for a Connection. Only the supplied fields are modified. `connection_type` is intentionally excluded — changing it would orphan every identity already linked to this connection."
|
|
14329
|
-
},
|
|
14102
|
+
"description": "Get Connection",
|
|
14330
14103
|
"parameters": [
|
|
14331
14104
|
{
|
|
14332
14105
|
"schema": {
|
|
@@ -14588,7 +14361,7 @@
|
|
|
14588
14361
|
}
|
|
14589
14362
|
},
|
|
14590
14363
|
"400": {
|
|
14591
|
-
"description": "`invalid_id` — The id in the path is not a valid id for this resource.\n\n`
|
|
14364
|
+
"description": "`invalid_id` — The id in the path is not a valid id for this resource.\n\n`invalid_expand` — An `?expand=` path is not allowed on this resource.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
14592
14365
|
"content": {
|
|
14593
14366
|
"application/json": {
|
|
14594
14367
|
"schema": {
|
|
@@ -14603,7 +14376,7 @@
|
|
|
14603
14376
|
"type": "string",
|
|
14604
14377
|
"enum": [
|
|
14605
14378
|
"invalid_id",
|
|
14606
|
-
"
|
|
14379
|
+
"invalid_expand",
|
|
14607
14380
|
"validation_error"
|
|
14608
14381
|
]
|
|
14609
14382
|
}
|
|
@@ -14744,13 +14517,620 @@
|
|
|
14744
14517
|
}
|
|
14745
14518
|
}
|
|
14746
14519
|
},
|
|
14747
|
-
"
|
|
14748
|
-
"operationId": "connection/
|
|
14749
|
-
"summary": "
|
|
14520
|
+
"post": {
|
|
14521
|
+
"operationId": "connection/update",
|
|
14522
|
+
"summary": "Update Connection",
|
|
14750
14523
|
"tags": [
|
|
14751
14524
|
"connection"
|
|
14752
14525
|
],
|
|
14753
|
-
"description": "
|
|
14526
|
+
"description": "Update Connection",
|
|
14527
|
+
"requestBody": {
|
|
14528
|
+
"required": true,
|
|
14529
|
+
"content": {
|
|
14530
|
+
"application/json": {
|
|
14531
|
+
"schema": {
|
|
14532
|
+
"type": "object",
|
|
14533
|
+
"properties": {
|
|
14534
|
+
"connection_name": {
|
|
14535
|
+
"type": "string"
|
|
14536
|
+
},
|
|
14537
|
+
"enabled": {
|
|
14538
|
+
"type": "boolean"
|
|
14539
|
+
},
|
|
14540
|
+
"enabled_clients": {
|
|
14541
|
+
"type": "array",
|
|
14542
|
+
"items": {
|
|
14543
|
+
"type": "string"
|
|
14544
|
+
}
|
|
14545
|
+
},
|
|
14546
|
+
"scope": {
|
|
14547
|
+
"type": "array",
|
|
14548
|
+
"items": {
|
|
14549
|
+
"type": "string"
|
|
14550
|
+
}
|
|
14551
|
+
},
|
|
14552
|
+
"client_id": {
|
|
14553
|
+
"type": "string"
|
|
14554
|
+
},
|
|
14555
|
+
"client_secret": {
|
|
14556
|
+
"type": "string"
|
|
14557
|
+
},
|
|
14558
|
+
"issuer": {
|
|
14559
|
+
"type": "string"
|
|
14560
|
+
},
|
|
14561
|
+
"authorize_url": {
|
|
14562
|
+
"type": "string"
|
|
14563
|
+
},
|
|
14564
|
+
"token_url": {
|
|
14565
|
+
"type": "string"
|
|
14566
|
+
},
|
|
14567
|
+
"userinfo_url": {
|
|
14568
|
+
"type": "string"
|
|
14569
|
+
},
|
|
14570
|
+
"jwks_url": {
|
|
14571
|
+
"type": "string"
|
|
14572
|
+
},
|
|
14573
|
+
"response_type": {
|
|
14574
|
+
"type": "string"
|
|
14575
|
+
},
|
|
14576
|
+
"authorize_params": {
|
|
14577
|
+
"type": "object",
|
|
14578
|
+
"description": "Authorize params",
|
|
14579
|
+
"default": {},
|
|
14580
|
+
"additionalProperties": {
|
|
14581
|
+
"type": "string"
|
|
14582
|
+
}
|
|
14583
|
+
},
|
|
14584
|
+
"claims_mapping": {
|
|
14585
|
+
"type": "object",
|
|
14586
|
+
"additionalProperties": {
|
|
14587
|
+
"type": "string"
|
|
14588
|
+
}
|
|
14589
|
+
},
|
|
14590
|
+
"email_oauth_sync_policy": {
|
|
14591
|
+
"anyOf": [
|
|
14592
|
+
{
|
|
14593
|
+
"type": "string",
|
|
14594
|
+
"enum": [
|
|
14595
|
+
"preserve_manual"
|
|
14596
|
+
]
|
|
14597
|
+
},
|
|
14598
|
+
{
|
|
14599
|
+
"type": "string",
|
|
14600
|
+
"enum": [
|
|
14601
|
+
"always_sync"
|
|
14602
|
+
]
|
|
14603
|
+
},
|
|
14604
|
+
{
|
|
14605
|
+
"type": "null"
|
|
14606
|
+
}
|
|
14607
|
+
]
|
|
14608
|
+
},
|
|
14609
|
+
"password_policy": {
|
|
14610
|
+
"anyOf": [
|
|
14611
|
+
{
|
|
14612
|
+
"type": "object",
|
|
14613
|
+
"required": [
|
|
14614
|
+
"level"
|
|
14615
|
+
],
|
|
14616
|
+
"properties": {
|
|
14617
|
+
"level": {
|
|
14618
|
+
"anyOf": [
|
|
14619
|
+
{
|
|
14620
|
+
"type": "string",
|
|
14621
|
+
"enum": [
|
|
14622
|
+
"none"
|
|
14623
|
+
]
|
|
14624
|
+
},
|
|
14625
|
+
{
|
|
14626
|
+
"type": "string",
|
|
14627
|
+
"enum": [
|
|
14628
|
+
"low"
|
|
14629
|
+
]
|
|
14630
|
+
},
|
|
14631
|
+
{
|
|
14632
|
+
"type": "string",
|
|
14633
|
+
"enum": [
|
|
14634
|
+
"fair"
|
|
14635
|
+
]
|
|
14636
|
+
},
|
|
14637
|
+
{
|
|
14638
|
+
"type": "string",
|
|
14639
|
+
"enum": [
|
|
14640
|
+
"good"
|
|
14641
|
+
]
|
|
14642
|
+
},
|
|
14643
|
+
{
|
|
14644
|
+
"type": "string",
|
|
14645
|
+
"enum": [
|
|
14646
|
+
"excellent"
|
|
14647
|
+
]
|
|
14648
|
+
}
|
|
14649
|
+
]
|
|
14650
|
+
},
|
|
14651
|
+
"min_length": {
|
|
14652
|
+
"type": "integer",
|
|
14653
|
+
"minimum": 1,
|
|
14654
|
+
"maximum": 128
|
|
14655
|
+
},
|
|
14656
|
+
"require_lowercase": {
|
|
14657
|
+
"type": "boolean"
|
|
14658
|
+
},
|
|
14659
|
+
"require_uppercase": {
|
|
14660
|
+
"type": "boolean"
|
|
14661
|
+
},
|
|
14662
|
+
"require_number": {
|
|
14663
|
+
"type": "boolean"
|
|
14664
|
+
},
|
|
14665
|
+
"require_special": {
|
|
14666
|
+
"type": "boolean"
|
|
14667
|
+
}
|
|
14668
|
+
},
|
|
14669
|
+
"description": "Password policy enforced when writing a password through this database connection (password reset and admin set-password). `level` is an Auth0-style preset (none/low/fair/good/excellent); the dashboard expands it into the explicit rule fields when saving. The rule fields override the preset baseline. When unset on the connection, the server applies the `good` default. Does not affect login."
|
|
14670
|
+
},
|
|
14671
|
+
{
|
|
14672
|
+
"type": "null"
|
|
14673
|
+
}
|
|
14674
|
+
]
|
|
14675
|
+
},
|
|
14676
|
+
"disable_signup": {
|
|
14677
|
+
"type": "boolean"
|
|
14678
|
+
},
|
|
14679
|
+
"login_identifier": {
|
|
14680
|
+
"anyOf": [
|
|
14681
|
+
{
|
|
14682
|
+
"type": "string",
|
|
14683
|
+
"enum": [
|
|
14684
|
+
"email"
|
|
14685
|
+
]
|
|
14686
|
+
},
|
|
14687
|
+
{
|
|
14688
|
+
"type": "string",
|
|
14689
|
+
"enum": [
|
|
14690
|
+
"username"
|
|
14691
|
+
]
|
|
14692
|
+
},
|
|
14693
|
+
{
|
|
14694
|
+
"type": "string",
|
|
14695
|
+
"enum": [
|
|
14696
|
+
"email_or_username"
|
|
14697
|
+
]
|
|
14698
|
+
}
|
|
14699
|
+
],
|
|
14700
|
+
"description": "What users of this database connection sign in with: `email`, `username`, or `email_or_username` (email first, then username). The login looks up only the matching field, and the hosted login screen asks for it — validating the address format under `email`. New database connections default to `email`; a connection created before this setting existed behaves as `email_or_username`. Only meaningful on `database` connections."
|
|
14701
|
+
}
|
|
14702
|
+
},
|
|
14703
|
+
"description": "Partial update for a Connection. Only the supplied fields are modified. `connection_type` is intentionally excluded — changing it would orphan every identity already linked to this connection.",
|
|
14704
|
+
"additionalProperties": false
|
|
14705
|
+
}
|
|
14706
|
+
}
|
|
14707
|
+
},
|
|
14708
|
+
"description": "Partial update for a Connection. Only the supplied fields are modified. `connection_type` is intentionally excluded — changing it would orphan every identity already linked to this connection."
|
|
14709
|
+
},
|
|
14710
|
+
"parameters": [
|
|
14711
|
+
{
|
|
14712
|
+
"schema": {
|
|
14713
|
+
"type": "string"
|
|
14714
|
+
},
|
|
14715
|
+
"in": "path",
|
|
14716
|
+
"name": "connection_id",
|
|
14717
|
+
"required": true
|
|
14718
|
+
}
|
|
14719
|
+
],
|
|
14720
|
+
"security": [
|
|
14721
|
+
{
|
|
14722
|
+
"bearerAuth": []
|
|
14723
|
+
}
|
|
14724
|
+
],
|
|
14725
|
+
"responses": {
|
|
14726
|
+
"200": {
|
|
14727
|
+
"description": "Connection",
|
|
14728
|
+
"content": {
|
|
14729
|
+
"application/json": {
|
|
14730
|
+
"schema": {
|
|
14731
|
+
"type": "object",
|
|
14732
|
+
"required": [
|
|
14733
|
+
"id",
|
|
14734
|
+
"connection_name",
|
|
14735
|
+
"connection_type",
|
|
14736
|
+
"authorize_url",
|
|
14737
|
+
"token_url",
|
|
14738
|
+
"userinfo_url",
|
|
14739
|
+
"client_id",
|
|
14740
|
+
"client_secret",
|
|
14741
|
+
"issuer",
|
|
14742
|
+
"jwks_url",
|
|
14743
|
+
"response_type",
|
|
14744
|
+
"enabled",
|
|
14745
|
+
"enabled_clients",
|
|
14746
|
+
"scope",
|
|
14747
|
+
"authorize_params",
|
|
14748
|
+
"is_using_default_credentials",
|
|
14749
|
+
"account",
|
|
14750
|
+
"createdAt"
|
|
14751
|
+
],
|
|
14752
|
+
"properties": {
|
|
14753
|
+
"id": {
|
|
14754
|
+
"type": "string",
|
|
14755
|
+
"description": "Connection ID"
|
|
14756
|
+
},
|
|
14757
|
+
"connection_name": {
|
|
14758
|
+
"type": "string"
|
|
14759
|
+
},
|
|
14760
|
+
"connection_type": {
|
|
14761
|
+
"enum": [
|
|
14762
|
+
"database",
|
|
14763
|
+
"custom",
|
|
14764
|
+
"github",
|
|
14765
|
+
"figma",
|
|
14766
|
+
"google_oauth2",
|
|
14767
|
+
"microsoft",
|
|
14768
|
+
"oidc",
|
|
14769
|
+
"passwordless_email"
|
|
14770
|
+
]
|
|
14771
|
+
},
|
|
14772
|
+
"authorize_url": {
|
|
14773
|
+
"type": "string",
|
|
14774
|
+
"default": null
|
|
14775
|
+
},
|
|
14776
|
+
"token_url": {
|
|
14777
|
+
"type": "string",
|
|
14778
|
+
"default": null
|
|
14779
|
+
},
|
|
14780
|
+
"userinfo_url": {
|
|
14781
|
+
"type": "string",
|
|
14782
|
+
"default": null
|
|
14783
|
+
},
|
|
14784
|
+
"client_id": {
|
|
14785
|
+
"type": "string",
|
|
14786
|
+
"default": null
|
|
14787
|
+
},
|
|
14788
|
+
"client_secret": {
|
|
14789
|
+
"type": "string",
|
|
14790
|
+
"default": null
|
|
14791
|
+
},
|
|
14792
|
+
"issuer": {
|
|
14793
|
+
"type": "string",
|
|
14794
|
+
"default": null
|
|
14795
|
+
},
|
|
14796
|
+
"jwks_url": {
|
|
14797
|
+
"type": "string",
|
|
14798
|
+
"default": null
|
|
14799
|
+
},
|
|
14800
|
+
"response_type": {
|
|
14801
|
+
"type": "string",
|
|
14802
|
+
"default": null
|
|
14803
|
+
},
|
|
14804
|
+
"enabled": {
|
|
14805
|
+
"type": "boolean"
|
|
14806
|
+
},
|
|
14807
|
+
"enabled_clients": {
|
|
14808
|
+
"type": "array",
|
|
14809
|
+
"items": {
|
|
14810
|
+
"type": "string"
|
|
14811
|
+
},
|
|
14812
|
+
"default": null,
|
|
14813
|
+
"nullable": true
|
|
14814
|
+
},
|
|
14815
|
+
"scope": {
|
|
14816
|
+
"type": "array",
|
|
14817
|
+
"items": {
|
|
14818
|
+
"type": "string"
|
|
14819
|
+
},
|
|
14820
|
+
"default": []
|
|
14821
|
+
},
|
|
14822
|
+
"authorize_params": {
|
|
14823
|
+
"type": "object",
|
|
14824
|
+
"description": "Authorize params",
|
|
14825
|
+
"default": {},
|
|
14826
|
+
"additionalProperties": {
|
|
14827
|
+
"type": "string"
|
|
14828
|
+
}
|
|
14829
|
+
},
|
|
14830
|
+
"claims_mapping": {
|
|
14831
|
+
"type": "object",
|
|
14832
|
+
"additionalProperties": {
|
|
14833
|
+
"type": "string"
|
|
14834
|
+
}
|
|
14835
|
+
},
|
|
14836
|
+
"is_using_default_credentials": {
|
|
14837
|
+
"type": "boolean",
|
|
14838
|
+
"readOnly": true,
|
|
14839
|
+
"description": "Derived: true when the connection_type has shared Faable defaults AND the tenant has not set its own client_id/client_secret. Read-only — set by the server on every read."
|
|
14840
|
+
},
|
|
14841
|
+
"email_oauth_sync_policy": {
|
|
14842
|
+
"anyOf": [
|
|
14843
|
+
{
|
|
14844
|
+
"type": "string",
|
|
14845
|
+
"enum": [
|
|
14846
|
+
"preserve_manual"
|
|
14847
|
+
]
|
|
14848
|
+
},
|
|
14849
|
+
{
|
|
14850
|
+
"type": "string",
|
|
14851
|
+
"enum": [
|
|
14852
|
+
"always_sync"
|
|
14853
|
+
]
|
|
14854
|
+
}
|
|
14855
|
+
],
|
|
14856
|
+
"description": "Per-connection override of `Account.email_oauth_sync_policy`. When set on a Connection, takes precedence over the Account-level setting for logins through this IdP. When unset (default), the Account-level policy applies. Use this to allow `always_sync` for a trusted IdP (e.g. corporate SSO) while keeping `preserve_manual` for others within the same tenant."
|
|
14857
|
+
},
|
|
14858
|
+
"password_policy": {
|
|
14859
|
+
"type": "object",
|
|
14860
|
+
"required": [
|
|
14861
|
+
"level"
|
|
14862
|
+
],
|
|
14863
|
+
"properties": {
|
|
14864
|
+
"level": {
|
|
14865
|
+
"anyOf": [
|
|
14866
|
+
{
|
|
14867
|
+
"type": "string",
|
|
14868
|
+
"enum": [
|
|
14869
|
+
"none"
|
|
14870
|
+
]
|
|
14871
|
+
},
|
|
14872
|
+
{
|
|
14873
|
+
"type": "string",
|
|
14874
|
+
"enum": [
|
|
14875
|
+
"low"
|
|
14876
|
+
]
|
|
14877
|
+
},
|
|
14878
|
+
{
|
|
14879
|
+
"type": "string",
|
|
14880
|
+
"enum": [
|
|
14881
|
+
"fair"
|
|
14882
|
+
]
|
|
14883
|
+
},
|
|
14884
|
+
{
|
|
14885
|
+
"type": "string",
|
|
14886
|
+
"enum": [
|
|
14887
|
+
"good"
|
|
14888
|
+
]
|
|
14889
|
+
},
|
|
14890
|
+
{
|
|
14891
|
+
"type": "string",
|
|
14892
|
+
"enum": [
|
|
14893
|
+
"excellent"
|
|
14894
|
+
]
|
|
14895
|
+
}
|
|
14896
|
+
]
|
|
14897
|
+
},
|
|
14898
|
+
"min_length": {
|
|
14899
|
+
"type": "integer",
|
|
14900
|
+
"minimum": 1,
|
|
14901
|
+
"maximum": 128
|
|
14902
|
+
},
|
|
14903
|
+
"require_lowercase": {
|
|
14904
|
+
"type": "boolean"
|
|
14905
|
+
},
|
|
14906
|
+
"require_uppercase": {
|
|
14907
|
+
"type": "boolean"
|
|
14908
|
+
},
|
|
14909
|
+
"require_number": {
|
|
14910
|
+
"type": "boolean"
|
|
14911
|
+
},
|
|
14912
|
+
"require_special": {
|
|
14913
|
+
"type": "boolean"
|
|
14914
|
+
}
|
|
14915
|
+
},
|
|
14916
|
+
"description": "Password policy enforced when writing a password through this database connection (password reset and admin set-password). `level` is an Auth0-style preset (none/low/fair/good/excellent); the dashboard expands it into the explicit rule fields when saving. The rule fields override the preset baseline. When unset on the connection, the server applies the `good` default. Does not affect login."
|
|
14917
|
+
},
|
|
14918
|
+
"login_identifier": {
|
|
14919
|
+
"anyOf": [
|
|
14920
|
+
{
|
|
14921
|
+
"type": "string",
|
|
14922
|
+
"enum": [
|
|
14923
|
+
"email"
|
|
14924
|
+
]
|
|
14925
|
+
},
|
|
14926
|
+
{
|
|
14927
|
+
"type": "string",
|
|
14928
|
+
"enum": [
|
|
14929
|
+
"username"
|
|
14930
|
+
]
|
|
14931
|
+
},
|
|
14932
|
+
{
|
|
14933
|
+
"type": "string",
|
|
14934
|
+
"enum": [
|
|
14935
|
+
"email_or_username"
|
|
14936
|
+
]
|
|
14937
|
+
}
|
|
14938
|
+
],
|
|
14939
|
+
"description": "What users of this database connection sign in with: `email`, `username`, or `email_or_username` (email first, then username). The login looks up only the matching field, and the hosted login screen asks for it — validating the address format under `email`. New database connections default to `email`; a connection created before this setting existed behaves as `email_or_username`. Only meaningful on `database` connections."
|
|
14940
|
+
},
|
|
14941
|
+
"disable_signup": {
|
|
14942
|
+
"type": "boolean",
|
|
14943
|
+
"description": "When true, the public self-service signup endpoint (`POST /dbconnections/signup`) rejects new registrations against this database connection with `403 signup_disabled`. Defaults to false (signup allowed). Only meaningful on `database` connections; mirrors Auth0 `disable_signup`."
|
|
14944
|
+
},
|
|
14945
|
+
"account": {
|
|
14946
|
+
"type": "string",
|
|
14947
|
+
"description": "Object is related with this account"
|
|
14948
|
+
},
|
|
14949
|
+
"metadata": {
|
|
14950
|
+
"type": "object",
|
|
14951
|
+
"properties": {},
|
|
14952
|
+
"additionalProperties": true,
|
|
14953
|
+
"description": "ConnectionMetadata",
|
|
14954
|
+
"default": {}
|
|
14955
|
+
},
|
|
14956
|
+
"createdAt": {
|
|
14957
|
+
"type": "string",
|
|
14958
|
+
"description": "Connection creation date"
|
|
14959
|
+
},
|
|
14960
|
+
"updatedAt": {
|
|
14961
|
+
"type": "string",
|
|
14962
|
+
"description": "Connection updated date"
|
|
14963
|
+
}
|
|
14964
|
+
},
|
|
14965
|
+
"description": "Connection"
|
|
14966
|
+
}
|
|
14967
|
+
}
|
|
14968
|
+
}
|
|
14969
|
+
},
|
|
14970
|
+
"400": {
|
|
14971
|
+
"description": "`invalid_id` — The id in the path is not a valid id for this resource.\n\n`already_exists` — A resource with the same unique field already exists (for a user, usually `email`). `details.fields` names the field.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
14972
|
+
"content": {
|
|
14973
|
+
"application/json": {
|
|
14974
|
+
"schema": {
|
|
14975
|
+
"allOf": [
|
|
14976
|
+
{
|
|
14977
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
14978
|
+
},
|
|
14979
|
+
{
|
|
14980
|
+
"type": "object",
|
|
14981
|
+
"properties": {
|
|
14982
|
+
"error_code": {
|
|
14983
|
+
"type": "string",
|
|
14984
|
+
"enum": [
|
|
14985
|
+
"invalid_id",
|
|
14986
|
+
"already_exists",
|
|
14987
|
+
"validation_error"
|
|
14988
|
+
]
|
|
14989
|
+
}
|
|
14990
|
+
}
|
|
14991
|
+
}
|
|
14992
|
+
]
|
|
14993
|
+
}
|
|
14994
|
+
}
|
|
14995
|
+
}
|
|
14996
|
+
},
|
|
14997
|
+
"401": {
|
|
14998
|
+
"description": "`unauthorized` — The request carries no valid credentials.",
|
|
14999
|
+
"content": {
|
|
15000
|
+
"application/json": {
|
|
15001
|
+
"schema": {
|
|
15002
|
+
"allOf": [
|
|
15003
|
+
{
|
|
15004
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15005
|
+
},
|
|
15006
|
+
{
|
|
15007
|
+
"type": "object",
|
|
15008
|
+
"properties": {
|
|
15009
|
+
"error_code": {
|
|
15010
|
+
"type": "string",
|
|
15011
|
+
"enum": [
|
|
15012
|
+
"unauthorized"
|
|
15013
|
+
]
|
|
15014
|
+
}
|
|
15015
|
+
}
|
|
15016
|
+
}
|
|
15017
|
+
]
|
|
15018
|
+
}
|
|
15019
|
+
}
|
|
15020
|
+
}
|
|
15021
|
+
},
|
|
15022
|
+
"403": {
|
|
15023
|
+
"description": "`forbidden` — The credentials are valid but do not allow this operation.\n\n`insufficient_scope` — The token lacks a scope this operation requires. `message` names it.\n\n`user_suspended` — The user is suspended and cannot sign in or be modified.",
|
|
15024
|
+
"content": {
|
|
15025
|
+
"application/json": {
|
|
15026
|
+
"schema": {
|
|
15027
|
+
"allOf": [
|
|
15028
|
+
{
|
|
15029
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15030
|
+
},
|
|
15031
|
+
{
|
|
15032
|
+
"type": "object",
|
|
15033
|
+
"properties": {
|
|
15034
|
+
"error_code": {
|
|
15035
|
+
"type": "string",
|
|
15036
|
+
"enum": [
|
|
15037
|
+
"forbidden",
|
|
15038
|
+
"insufficient_scope",
|
|
15039
|
+
"user_suspended"
|
|
15040
|
+
]
|
|
15041
|
+
}
|
|
15042
|
+
}
|
|
15043
|
+
}
|
|
15044
|
+
]
|
|
15045
|
+
}
|
|
15046
|
+
}
|
|
15047
|
+
}
|
|
15048
|
+
},
|
|
15049
|
+
"404": {
|
|
15050
|
+
"description": "`not_found` — The resource does not exist in this account.\n\n`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
15051
|
+
"content": {
|
|
15052
|
+
"application/json": {
|
|
15053
|
+
"schema": {
|
|
15054
|
+
"allOf": [
|
|
15055
|
+
{
|
|
15056
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15057
|
+
},
|
|
15058
|
+
{
|
|
15059
|
+
"type": "object",
|
|
15060
|
+
"properties": {
|
|
15061
|
+
"error_code": {
|
|
15062
|
+
"type": "string",
|
|
15063
|
+
"enum": [
|
|
15064
|
+
"not_found",
|
|
15065
|
+
"account_not_found"
|
|
15066
|
+
]
|
|
15067
|
+
}
|
|
15068
|
+
}
|
|
15069
|
+
}
|
|
15070
|
+
]
|
|
15071
|
+
}
|
|
15072
|
+
}
|
|
15073
|
+
}
|
|
15074
|
+
},
|
|
15075
|
+
"429": {
|
|
15076
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
15077
|
+
"content": {
|
|
15078
|
+
"application/json": {
|
|
15079
|
+
"schema": {
|
|
15080
|
+
"allOf": [
|
|
15081
|
+
{
|
|
15082
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15083
|
+
},
|
|
15084
|
+
{
|
|
15085
|
+
"type": "object",
|
|
15086
|
+
"properties": {
|
|
15087
|
+
"error_code": {
|
|
15088
|
+
"type": "string",
|
|
15089
|
+
"enum": [
|
|
15090
|
+
"too_many_requests"
|
|
15091
|
+
]
|
|
15092
|
+
}
|
|
15093
|
+
}
|
|
15094
|
+
}
|
|
15095
|
+
]
|
|
15096
|
+
}
|
|
15097
|
+
}
|
|
15098
|
+
}
|
|
15099
|
+
},
|
|
15100
|
+
"500": {
|
|
15101
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
15102
|
+
"content": {
|
|
15103
|
+
"application/json": {
|
|
15104
|
+
"schema": {
|
|
15105
|
+
"allOf": [
|
|
15106
|
+
{
|
|
15107
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15108
|
+
},
|
|
15109
|
+
{
|
|
15110
|
+
"type": "object",
|
|
15111
|
+
"properties": {
|
|
15112
|
+
"error_code": {
|
|
15113
|
+
"type": "string",
|
|
15114
|
+
"enum": [
|
|
15115
|
+
"internal_error"
|
|
15116
|
+
]
|
|
15117
|
+
}
|
|
15118
|
+
}
|
|
15119
|
+
}
|
|
15120
|
+
]
|
|
15121
|
+
}
|
|
15122
|
+
}
|
|
15123
|
+
}
|
|
15124
|
+
}
|
|
15125
|
+
}
|
|
15126
|
+
},
|
|
15127
|
+
"delete": {
|
|
15128
|
+
"operationId": "connection/delete",
|
|
15129
|
+
"summary": "Delete Connection",
|
|
15130
|
+
"tags": [
|
|
15131
|
+
"connection"
|
|
15132
|
+
],
|
|
15133
|
+
"description": "Delete Connection",
|
|
14754
15134
|
"parameters": [
|
|
14755
15135
|
{
|
|
14756
15136
|
"schema": {
|
|
@@ -48290,14 +48670,765 @@
|
|
|
48290
48670
|
},
|
|
48291
48671
|
"description": "NotificationSubscriptionWebhook"
|
|
48292
48672
|
}
|
|
48293
|
-
],
|
|
48294
|
-
"description": "NotificationSubscription"
|
|
48673
|
+
],
|
|
48674
|
+
"description": "NotificationSubscription"
|
|
48675
|
+
}
|
|
48676
|
+
}
|
|
48677
|
+
}
|
|
48678
|
+
},
|
|
48679
|
+
"400": {
|
|
48680
|
+
"description": "`invalid_id` — The id in the path is not a valid id for this resource.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
48681
|
+
"content": {
|
|
48682
|
+
"application/json": {
|
|
48683
|
+
"schema": {
|
|
48684
|
+
"allOf": [
|
|
48685
|
+
{
|
|
48686
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48687
|
+
},
|
|
48688
|
+
{
|
|
48689
|
+
"type": "object",
|
|
48690
|
+
"properties": {
|
|
48691
|
+
"error_code": {
|
|
48692
|
+
"type": "string",
|
|
48693
|
+
"enum": [
|
|
48694
|
+
"invalid_id",
|
|
48695
|
+
"validation_error"
|
|
48696
|
+
]
|
|
48697
|
+
}
|
|
48698
|
+
}
|
|
48699
|
+
}
|
|
48700
|
+
]
|
|
48701
|
+
}
|
|
48702
|
+
}
|
|
48703
|
+
}
|
|
48704
|
+
},
|
|
48705
|
+
"401": {
|
|
48706
|
+
"description": "`unauthorized` — The request carries no valid credentials.",
|
|
48707
|
+
"content": {
|
|
48708
|
+
"application/json": {
|
|
48709
|
+
"schema": {
|
|
48710
|
+
"allOf": [
|
|
48711
|
+
{
|
|
48712
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48713
|
+
},
|
|
48714
|
+
{
|
|
48715
|
+
"type": "object",
|
|
48716
|
+
"properties": {
|
|
48717
|
+
"error_code": {
|
|
48718
|
+
"type": "string",
|
|
48719
|
+
"enum": [
|
|
48720
|
+
"unauthorized"
|
|
48721
|
+
]
|
|
48722
|
+
}
|
|
48723
|
+
}
|
|
48724
|
+
}
|
|
48725
|
+
]
|
|
48726
|
+
}
|
|
48727
|
+
}
|
|
48728
|
+
}
|
|
48729
|
+
},
|
|
48730
|
+
"403": {
|
|
48731
|
+
"description": "`forbidden` — The credentials are valid but do not allow this operation.\n\n`insufficient_scope` — The token lacks a scope this operation requires. `message` names it.\n\n`user_suspended` — The user is suspended and cannot sign in or be modified.",
|
|
48732
|
+
"content": {
|
|
48733
|
+
"application/json": {
|
|
48734
|
+
"schema": {
|
|
48735
|
+
"allOf": [
|
|
48736
|
+
{
|
|
48737
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48738
|
+
},
|
|
48739
|
+
{
|
|
48740
|
+
"type": "object",
|
|
48741
|
+
"properties": {
|
|
48742
|
+
"error_code": {
|
|
48743
|
+
"type": "string",
|
|
48744
|
+
"enum": [
|
|
48745
|
+
"forbidden",
|
|
48746
|
+
"insufficient_scope",
|
|
48747
|
+
"user_suspended"
|
|
48748
|
+
]
|
|
48749
|
+
}
|
|
48750
|
+
}
|
|
48751
|
+
}
|
|
48752
|
+
]
|
|
48753
|
+
}
|
|
48754
|
+
}
|
|
48755
|
+
}
|
|
48756
|
+
},
|
|
48757
|
+
"404": {
|
|
48758
|
+
"description": "`not_found` — The resource does not exist in this account.\n\n`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
48759
|
+
"content": {
|
|
48760
|
+
"application/json": {
|
|
48761
|
+
"schema": {
|
|
48762
|
+
"allOf": [
|
|
48763
|
+
{
|
|
48764
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48765
|
+
},
|
|
48766
|
+
{
|
|
48767
|
+
"type": "object",
|
|
48768
|
+
"properties": {
|
|
48769
|
+
"error_code": {
|
|
48770
|
+
"type": "string",
|
|
48771
|
+
"enum": [
|
|
48772
|
+
"not_found",
|
|
48773
|
+
"account_not_found"
|
|
48774
|
+
]
|
|
48775
|
+
}
|
|
48776
|
+
}
|
|
48777
|
+
}
|
|
48778
|
+
]
|
|
48779
|
+
}
|
|
48780
|
+
}
|
|
48781
|
+
}
|
|
48782
|
+
},
|
|
48783
|
+
"429": {
|
|
48784
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
48785
|
+
"content": {
|
|
48786
|
+
"application/json": {
|
|
48787
|
+
"schema": {
|
|
48788
|
+
"allOf": [
|
|
48789
|
+
{
|
|
48790
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48791
|
+
},
|
|
48792
|
+
{
|
|
48793
|
+
"type": "object",
|
|
48794
|
+
"properties": {
|
|
48795
|
+
"error_code": {
|
|
48796
|
+
"type": "string",
|
|
48797
|
+
"enum": [
|
|
48798
|
+
"too_many_requests"
|
|
48799
|
+
]
|
|
48800
|
+
}
|
|
48801
|
+
}
|
|
48802
|
+
}
|
|
48803
|
+
]
|
|
48804
|
+
}
|
|
48805
|
+
}
|
|
48806
|
+
}
|
|
48807
|
+
},
|
|
48808
|
+
"500": {
|
|
48809
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
48810
|
+
"content": {
|
|
48811
|
+
"application/json": {
|
|
48812
|
+
"schema": {
|
|
48813
|
+
"allOf": [
|
|
48814
|
+
{
|
|
48815
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48816
|
+
},
|
|
48817
|
+
{
|
|
48818
|
+
"type": "object",
|
|
48819
|
+
"properties": {
|
|
48820
|
+
"error_code": {
|
|
48821
|
+
"type": "string",
|
|
48822
|
+
"enum": [
|
|
48823
|
+
"internal_error"
|
|
48824
|
+
]
|
|
48825
|
+
}
|
|
48826
|
+
}
|
|
48827
|
+
}
|
|
48828
|
+
]
|
|
48829
|
+
}
|
|
48830
|
+
}
|
|
48831
|
+
}
|
|
48832
|
+
}
|
|
48833
|
+
}
|
|
48834
|
+
}
|
|
48835
|
+
},
|
|
48836
|
+
"/log": {
|
|
48837
|
+
"get": {
|
|
48838
|
+
"operationId": "log/list",
|
|
48839
|
+
"summary": "List Logs",
|
|
48840
|
+
"tags": [
|
|
48841
|
+
"log"
|
|
48842
|
+
],
|
|
48843
|
+
"description": "List Logs",
|
|
48844
|
+
"parameters": [
|
|
48845
|
+
{
|
|
48846
|
+
"schema": {
|
|
48847
|
+
"type": "number",
|
|
48848
|
+
"minimum": 1,
|
|
48849
|
+
"maximum": 200
|
|
48850
|
+
},
|
|
48851
|
+
"in": "query",
|
|
48852
|
+
"name": "pageSize",
|
|
48853
|
+
"required": false,
|
|
48854
|
+
"description": "Number of items per page (max 200)"
|
|
48855
|
+
},
|
|
48856
|
+
{
|
|
48857
|
+
"schema": {
|
|
48858
|
+
"type": "string"
|
|
48859
|
+
},
|
|
48860
|
+
"in": "query",
|
|
48861
|
+
"name": "cursor",
|
|
48862
|
+
"required": false,
|
|
48863
|
+
"description": "Cursor for next page"
|
|
48864
|
+
},
|
|
48865
|
+
{
|
|
48866
|
+
"schema": {
|
|
48867
|
+
"type": "string"
|
|
48868
|
+
},
|
|
48869
|
+
"in": "query",
|
|
48870
|
+
"name": "next",
|
|
48871
|
+
"required": false,
|
|
48872
|
+
"description": "Cursor returned by the previous page"
|
|
48873
|
+
},
|
|
48874
|
+
{
|
|
48875
|
+
"schema": {
|
|
48876
|
+
"type": "string"
|
|
48877
|
+
},
|
|
48878
|
+
"in": "query",
|
|
48879
|
+
"name": "type",
|
|
48880
|
+
"required": false,
|
|
48881
|
+
"description": "Exact match on `type`. Equivalent to `?query=type:<value>`."
|
|
48882
|
+
},
|
|
48883
|
+
{
|
|
48884
|
+
"schema": {
|
|
48885
|
+
"type": "string"
|
|
48886
|
+
},
|
|
48887
|
+
"in": "query",
|
|
48888
|
+
"name": "status",
|
|
48889
|
+
"required": false,
|
|
48890
|
+
"description": "Exact match on `status`. Equivalent to `?query=status:<value>`."
|
|
48891
|
+
},
|
|
48892
|
+
{
|
|
48893
|
+
"schema": {
|
|
48894
|
+
"type": "string"
|
|
48895
|
+
},
|
|
48896
|
+
"in": "query",
|
|
48897
|
+
"name": "origin",
|
|
48898
|
+
"required": false,
|
|
48899
|
+
"description": "Exact match on `origin`. Equivalent to `?query=origin:<value>`."
|
|
48900
|
+
},
|
|
48901
|
+
{
|
|
48902
|
+
"schema": {
|
|
48903
|
+
"type": "string"
|
|
48904
|
+
},
|
|
48905
|
+
"in": "query",
|
|
48906
|
+
"name": "action",
|
|
48907
|
+
"required": false,
|
|
48908
|
+
"description": "Exact match on `action`. Equivalent to `?query=action:<value>`."
|
|
48909
|
+
},
|
|
48910
|
+
{
|
|
48911
|
+
"schema": {
|
|
48912
|
+
"type": "string"
|
|
48913
|
+
},
|
|
48914
|
+
"in": "query",
|
|
48915
|
+
"name": "user",
|
|
48916
|
+
"required": false,
|
|
48917
|
+
"description": "Exact match on `user`. Equivalent to `?query=user:<value>`."
|
|
48918
|
+
},
|
|
48919
|
+
{
|
|
48920
|
+
"schema": {
|
|
48921
|
+
"type": "string"
|
|
48922
|
+
},
|
|
48923
|
+
"in": "query",
|
|
48924
|
+
"name": "client",
|
|
48925
|
+
"required": false,
|
|
48926
|
+
"description": "Exact match on `client`. Equivalent to `?query=client:<value>`."
|
|
48927
|
+
},
|
|
48928
|
+
{
|
|
48929
|
+
"schema": {
|
|
48930
|
+
"type": "string"
|
|
48931
|
+
},
|
|
48932
|
+
"in": "query",
|
|
48933
|
+
"name": "connection",
|
|
48934
|
+
"required": false,
|
|
48935
|
+
"description": "Exact match on `connection`. Equivalent to `?query=connection:<value>`."
|
|
48936
|
+
},
|
|
48937
|
+
{
|
|
48938
|
+
"schema": {
|
|
48939
|
+
"type": "string"
|
|
48940
|
+
},
|
|
48941
|
+
"in": "query",
|
|
48942
|
+
"name": "team",
|
|
48943
|
+
"required": false,
|
|
48944
|
+
"description": "Exact match on `team`. Equivalent to `?query=team:<value>`."
|
|
48945
|
+
},
|
|
48946
|
+
{
|
|
48947
|
+
"schema": {
|
|
48948
|
+
"type": "string"
|
|
48949
|
+
},
|
|
48950
|
+
"in": "query",
|
|
48951
|
+
"name": "identity",
|
|
48952
|
+
"required": false,
|
|
48953
|
+
"description": "Exact match on `identity`. Equivalent to `?query=identity:<value>`."
|
|
48954
|
+
},
|
|
48955
|
+
{
|
|
48956
|
+
"schema": {
|
|
48957
|
+
"type": "string"
|
|
48958
|
+
},
|
|
48959
|
+
"in": "query",
|
|
48960
|
+
"name": "ticket",
|
|
48961
|
+
"required": false,
|
|
48962
|
+
"description": "Exact match on `ticket`. Equivalent to `?query=ticket:<value>`."
|
|
48963
|
+
},
|
|
48964
|
+
{
|
|
48965
|
+
"schema": {
|
|
48966
|
+
"type": "string"
|
|
48967
|
+
},
|
|
48968
|
+
"in": "query",
|
|
48969
|
+
"name": "since",
|
|
48970
|
+
"required": false,
|
|
48971
|
+
"description": "Exact match on `since`. Equivalent to `?query=since:<value>`."
|
|
48972
|
+
},
|
|
48973
|
+
{
|
|
48974
|
+
"schema": {
|
|
48975
|
+
"type": "string"
|
|
48976
|
+
},
|
|
48977
|
+
"in": "query",
|
|
48978
|
+
"name": "until",
|
|
48979
|
+
"required": false,
|
|
48980
|
+
"description": "Exact match on `until`. Equivalent to `?query=until:<value>`."
|
|
48981
|
+
},
|
|
48982
|
+
{
|
|
48983
|
+
"schema": {
|
|
48984
|
+
"type": "string"
|
|
48985
|
+
},
|
|
48986
|
+
"in": "query",
|
|
48987
|
+
"name": "expires_before",
|
|
48988
|
+
"required": false,
|
|
48989
|
+
"description": "Exact match on `expires_before`. Equivalent to `?query=expires_before:<value>`."
|
|
48990
|
+
},
|
|
48991
|
+
{
|
|
48992
|
+
"schema": {
|
|
48993
|
+
"type": "string"
|
|
48994
|
+
},
|
|
48995
|
+
"in": "query",
|
|
48996
|
+
"name": "expires_after",
|
|
48997
|
+
"required": false,
|
|
48998
|
+
"description": "Exact match on `expires_after`. Equivalent to `?query=expires_after:<value>`."
|
|
48999
|
+
},
|
|
49000
|
+
{
|
|
49001
|
+
"schema": {
|
|
49002
|
+
"type": "string"
|
|
49003
|
+
},
|
|
49004
|
+
"in": "query",
|
|
49005
|
+
"name": "query",
|
|
49006
|
+
"required": false,
|
|
49007
|
+
"description": "Filter using a FaableQL query"
|
|
49008
|
+
},
|
|
49009
|
+
{
|
|
49010
|
+
"schema": {
|
|
49011
|
+
"type": "array",
|
|
49012
|
+
"items": {
|
|
49013
|
+
"type": "string",
|
|
49014
|
+
"enum": [
|
|
49015
|
+
"user",
|
|
49016
|
+
"client",
|
|
49017
|
+
"connection",
|
|
49018
|
+
"team",
|
|
49019
|
+
"identity"
|
|
49020
|
+
],
|
|
49021
|
+
"description": "Allowed expand paths on `log`: `user`, `client`, `connection`, `team`, `identity`."
|
|
49022
|
+
},
|
|
49023
|
+
"maxItems": 5
|
|
49024
|
+
},
|
|
49025
|
+
"in": "query",
|
|
49026
|
+
"name": "expand",
|
|
49027
|
+
"required": false,
|
|
49028
|
+
"description": "Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`)."
|
|
49029
|
+
},
|
|
49030
|
+
{
|
|
49031
|
+
"schema": {
|
|
49032
|
+
"type": "string",
|
|
49033
|
+
"minLength": 1,
|
|
49034
|
+
"maxLength": 200
|
|
49035
|
+
},
|
|
49036
|
+
"in": "query",
|
|
49037
|
+
"name": "q",
|
|
49038
|
+
"required": false,
|
|
49039
|
+
"description": "Full-text search across: `message`."
|
|
49040
|
+
}
|
|
49041
|
+
],
|
|
49042
|
+
"security": [
|
|
49043
|
+
{
|
|
49044
|
+
"bearerAuth": []
|
|
49045
|
+
}
|
|
49046
|
+
],
|
|
49047
|
+
"responses": {
|
|
49048
|
+
"200": {
|
|
49049
|
+
"description": "Default Response",
|
|
49050
|
+
"content": {
|
|
49051
|
+
"application/json": {
|
|
49052
|
+
"schema": {
|
|
49053
|
+
"type": "object",
|
|
49054
|
+
"required": [
|
|
49055
|
+
"next",
|
|
49056
|
+
"results"
|
|
49057
|
+
],
|
|
49058
|
+
"properties": {
|
|
49059
|
+
"next": {
|
|
49060
|
+
"anyOf": [
|
|
49061
|
+
{
|
|
49062
|
+
"type": "string"
|
|
49063
|
+
},
|
|
49064
|
+
{
|
|
49065
|
+
"type": "null"
|
|
49066
|
+
}
|
|
49067
|
+
]
|
|
49068
|
+
},
|
|
49069
|
+
"results": {
|
|
49070
|
+
"type": "array",
|
|
49071
|
+
"items": {
|
|
49072
|
+
"$ref": "#/components/schemas/Log"
|
|
49073
|
+
}
|
|
49074
|
+
}
|
|
49075
|
+
},
|
|
49076
|
+
"additionalProperties": false
|
|
49077
|
+
}
|
|
49078
|
+
}
|
|
49079
|
+
}
|
|
49080
|
+
},
|
|
49081
|
+
"400": {
|
|
49082
|
+
"description": "`invalid_query` — The `?query=` FaableQL expression could not be parsed.\n\n`invalid_expand` — An `?expand=` path is not allowed on this resource.\n\n`search_not_supported` — This resource does not support `?search=`.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
49083
|
+
"content": {
|
|
49084
|
+
"application/json": {
|
|
49085
|
+
"schema": {
|
|
49086
|
+
"allOf": [
|
|
49087
|
+
{
|
|
49088
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
49089
|
+
},
|
|
49090
|
+
{
|
|
49091
|
+
"type": "object",
|
|
49092
|
+
"properties": {
|
|
49093
|
+
"error_code": {
|
|
49094
|
+
"type": "string",
|
|
49095
|
+
"enum": [
|
|
49096
|
+
"invalid_query",
|
|
49097
|
+
"invalid_expand",
|
|
49098
|
+
"search_not_supported",
|
|
49099
|
+
"validation_error"
|
|
49100
|
+
]
|
|
49101
|
+
}
|
|
49102
|
+
}
|
|
49103
|
+
}
|
|
49104
|
+
]
|
|
49105
|
+
}
|
|
49106
|
+
}
|
|
49107
|
+
}
|
|
49108
|
+
},
|
|
49109
|
+
"401": {
|
|
49110
|
+
"description": "`unauthorized` — The request carries no valid credentials.",
|
|
49111
|
+
"content": {
|
|
49112
|
+
"application/json": {
|
|
49113
|
+
"schema": {
|
|
49114
|
+
"allOf": [
|
|
49115
|
+
{
|
|
49116
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
49117
|
+
},
|
|
49118
|
+
{
|
|
49119
|
+
"type": "object",
|
|
49120
|
+
"properties": {
|
|
49121
|
+
"error_code": {
|
|
49122
|
+
"type": "string",
|
|
49123
|
+
"enum": [
|
|
49124
|
+
"unauthorized"
|
|
49125
|
+
]
|
|
49126
|
+
}
|
|
49127
|
+
}
|
|
49128
|
+
}
|
|
49129
|
+
]
|
|
49130
|
+
}
|
|
49131
|
+
}
|
|
49132
|
+
}
|
|
49133
|
+
},
|
|
49134
|
+
"403": {
|
|
49135
|
+
"description": "`forbidden` — The credentials are valid but do not allow this operation.\n\n`insufficient_scope` — The token lacks a scope this operation requires. `message` names it.\n\n`user_suspended` — The user is suspended and cannot sign in or be modified.",
|
|
49136
|
+
"content": {
|
|
49137
|
+
"application/json": {
|
|
49138
|
+
"schema": {
|
|
49139
|
+
"allOf": [
|
|
49140
|
+
{
|
|
49141
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
49142
|
+
},
|
|
49143
|
+
{
|
|
49144
|
+
"type": "object",
|
|
49145
|
+
"properties": {
|
|
49146
|
+
"error_code": {
|
|
49147
|
+
"type": "string",
|
|
49148
|
+
"enum": [
|
|
49149
|
+
"forbidden",
|
|
49150
|
+
"insufficient_scope",
|
|
49151
|
+
"user_suspended"
|
|
49152
|
+
]
|
|
49153
|
+
}
|
|
49154
|
+
}
|
|
49155
|
+
}
|
|
49156
|
+
]
|
|
49157
|
+
}
|
|
49158
|
+
}
|
|
49159
|
+
}
|
|
49160
|
+
},
|
|
49161
|
+
"404": {
|
|
49162
|
+
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
49163
|
+
"content": {
|
|
49164
|
+
"application/json": {
|
|
49165
|
+
"schema": {
|
|
49166
|
+
"allOf": [
|
|
49167
|
+
{
|
|
49168
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
49169
|
+
},
|
|
49170
|
+
{
|
|
49171
|
+
"type": "object",
|
|
49172
|
+
"properties": {
|
|
49173
|
+
"error_code": {
|
|
49174
|
+
"type": "string",
|
|
49175
|
+
"enum": [
|
|
49176
|
+
"account_not_found"
|
|
49177
|
+
]
|
|
49178
|
+
}
|
|
49179
|
+
}
|
|
49180
|
+
}
|
|
49181
|
+
]
|
|
49182
|
+
}
|
|
49183
|
+
}
|
|
49184
|
+
}
|
|
49185
|
+
},
|
|
49186
|
+
"429": {
|
|
49187
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
49188
|
+
"content": {
|
|
49189
|
+
"application/json": {
|
|
49190
|
+
"schema": {
|
|
49191
|
+
"allOf": [
|
|
49192
|
+
{
|
|
49193
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
49194
|
+
},
|
|
49195
|
+
{
|
|
49196
|
+
"type": "object",
|
|
49197
|
+
"properties": {
|
|
49198
|
+
"error_code": {
|
|
49199
|
+
"type": "string",
|
|
49200
|
+
"enum": [
|
|
49201
|
+
"too_many_requests"
|
|
49202
|
+
]
|
|
49203
|
+
}
|
|
49204
|
+
}
|
|
49205
|
+
}
|
|
49206
|
+
]
|
|
49207
|
+
}
|
|
49208
|
+
}
|
|
49209
|
+
}
|
|
49210
|
+
},
|
|
49211
|
+
"500": {
|
|
49212
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
49213
|
+
"content": {
|
|
49214
|
+
"application/json": {
|
|
49215
|
+
"schema": {
|
|
49216
|
+
"allOf": [
|
|
49217
|
+
{
|
|
49218
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
49219
|
+
},
|
|
49220
|
+
{
|
|
49221
|
+
"type": "object",
|
|
49222
|
+
"properties": {
|
|
49223
|
+
"error_code": {
|
|
49224
|
+
"type": "string",
|
|
49225
|
+
"enum": [
|
|
49226
|
+
"internal_error"
|
|
49227
|
+
]
|
|
49228
|
+
}
|
|
49229
|
+
}
|
|
49230
|
+
}
|
|
49231
|
+
]
|
|
49232
|
+
}
|
|
49233
|
+
}
|
|
49234
|
+
}
|
|
49235
|
+
}
|
|
49236
|
+
}
|
|
49237
|
+
}
|
|
49238
|
+
},
|
|
49239
|
+
"/log/{log_id}": {
|
|
49240
|
+
"get": {
|
|
49241
|
+
"operationId": "log/get",
|
|
49242
|
+
"summary": "Get Log",
|
|
49243
|
+
"tags": [
|
|
49244
|
+
"log"
|
|
49245
|
+
],
|
|
49246
|
+
"description": "Get Log",
|
|
49247
|
+
"parameters": [
|
|
49248
|
+
{
|
|
49249
|
+
"schema": {
|
|
49250
|
+
"type": "array",
|
|
49251
|
+
"items": {
|
|
49252
|
+
"type": "string",
|
|
49253
|
+
"enum": [
|
|
49254
|
+
"user",
|
|
49255
|
+
"client",
|
|
49256
|
+
"connection",
|
|
49257
|
+
"team",
|
|
49258
|
+
"identity"
|
|
49259
|
+
],
|
|
49260
|
+
"description": "Allowed expand paths on `log`: `user`, `client`, `connection`, `team`, `identity`."
|
|
49261
|
+
},
|
|
49262
|
+
"maxItems": 5
|
|
49263
|
+
},
|
|
49264
|
+
"in": "query",
|
|
49265
|
+
"name": "expand",
|
|
49266
|
+
"required": false,
|
|
49267
|
+
"description": "Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`)."
|
|
49268
|
+
},
|
|
49269
|
+
{
|
|
49270
|
+
"schema": {
|
|
49271
|
+
"type": "string"
|
|
49272
|
+
},
|
|
49273
|
+
"in": "path",
|
|
49274
|
+
"name": "log_id",
|
|
49275
|
+
"required": true
|
|
49276
|
+
}
|
|
49277
|
+
],
|
|
49278
|
+
"security": [
|
|
49279
|
+
{
|
|
49280
|
+
"bearerAuth": []
|
|
49281
|
+
}
|
|
49282
|
+
],
|
|
49283
|
+
"responses": {
|
|
49284
|
+
"200": {
|
|
49285
|
+
"description": "Log",
|
|
49286
|
+
"content": {
|
|
49287
|
+
"application/json": {
|
|
49288
|
+
"schema": {
|
|
49289
|
+
"type": "object",
|
|
49290
|
+
"required": [
|
|
49291
|
+
"id",
|
|
49292
|
+
"type",
|
|
49293
|
+
"status",
|
|
49294
|
+
"account",
|
|
49295
|
+
"createdAt"
|
|
49296
|
+
],
|
|
49297
|
+
"properties": {
|
|
49298
|
+
"id": {
|
|
49299
|
+
"type": "string",
|
|
49300
|
+
"description": "Log ID"
|
|
49301
|
+
},
|
|
49302
|
+
"type": {
|
|
49303
|
+
"type": "string",
|
|
49304
|
+
"description": "Log type, e.g. email.user.created"
|
|
49305
|
+
},
|
|
49306
|
+
"status": {
|
|
49307
|
+
"anyOf": [
|
|
49308
|
+
{
|
|
49309
|
+
"type": "string",
|
|
49310
|
+
"enum": [
|
|
49311
|
+
"success"
|
|
49312
|
+
]
|
|
49313
|
+
},
|
|
49314
|
+
{
|
|
49315
|
+
"type": "string",
|
|
49316
|
+
"enum": [
|
|
49317
|
+
"failed"
|
|
49318
|
+
]
|
|
49319
|
+
},
|
|
49320
|
+
{
|
|
49321
|
+
"type": "string",
|
|
49322
|
+
"enum": [
|
|
49323
|
+
"skipped"
|
|
49324
|
+
]
|
|
49325
|
+
},
|
|
49326
|
+
{
|
|
49327
|
+
"type": "string",
|
|
49328
|
+
"enum": [
|
|
49329
|
+
"info"
|
|
49330
|
+
]
|
|
49331
|
+
}
|
|
49332
|
+
],
|
|
49333
|
+
"description": "Log status"
|
|
49334
|
+
},
|
|
49335
|
+
"message": {
|
|
49336
|
+
"type": "string",
|
|
49337
|
+
"description": "Optional log message"
|
|
49338
|
+
},
|
|
49339
|
+
"data": {
|
|
49340
|
+
"description": "Type-specific structured payload"
|
|
49341
|
+
},
|
|
49342
|
+
"user": {
|
|
49343
|
+
"anyOf": [
|
|
49344
|
+
{
|
|
49345
|
+
"$ref": "#/components/schemas/User"
|
|
49346
|
+
},
|
|
49347
|
+
{
|
|
49348
|
+
"type": "string"
|
|
49349
|
+
},
|
|
49350
|
+
{}
|
|
49351
|
+
]
|
|
49352
|
+
},
|
|
49353
|
+
"client": {
|
|
49354
|
+
"anyOf": [
|
|
49355
|
+
{
|
|
49356
|
+
"$ref": "#/components/schemas/Client"
|
|
49357
|
+
},
|
|
49358
|
+
{
|
|
49359
|
+
"type": "string"
|
|
49360
|
+
},
|
|
49361
|
+
{}
|
|
49362
|
+
]
|
|
49363
|
+
},
|
|
49364
|
+
"connection": {
|
|
49365
|
+
"anyOf": [
|
|
49366
|
+
{
|
|
49367
|
+
"$ref": "#/components/schemas/Connection"
|
|
49368
|
+
},
|
|
49369
|
+
{
|
|
49370
|
+
"type": "string"
|
|
49371
|
+
},
|
|
49372
|
+
{}
|
|
49373
|
+
]
|
|
49374
|
+
},
|
|
49375
|
+
"team": {
|
|
49376
|
+
"anyOf": [
|
|
49377
|
+
{
|
|
49378
|
+
"$ref": "#/components/schemas/Team"
|
|
49379
|
+
},
|
|
49380
|
+
{
|
|
49381
|
+
"type": "string"
|
|
49382
|
+
},
|
|
49383
|
+
{}
|
|
49384
|
+
]
|
|
49385
|
+
},
|
|
49386
|
+
"identity": {
|
|
49387
|
+
"anyOf": [
|
|
49388
|
+
{
|
|
49389
|
+
"$ref": "#/components/schemas/Identity"
|
|
49390
|
+
},
|
|
49391
|
+
{
|
|
49392
|
+
"type": "string"
|
|
49393
|
+
},
|
|
49394
|
+
{}
|
|
49395
|
+
]
|
|
49396
|
+
},
|
|
49397
|
+
"ticket": {
|
|
49398
|
+
"type": "string"
|
|
49399
|
+
},
|
|
49400
|
+
"expires_at": {
|
|
49401
|
+
"type": "string",
|
|
49402
|
+
"format": "date-time",
|
|
49403
|
+
"description": "When this log row will be auto-deleted by the Mongo TTL monitor. Absent on rows recorded without `ttl_seconds`."
|
|
49404
|
+
},
|
|
49405
|
+
"account": {
|
|
49406
|
+
"type": "string",
|
|
49407
|
+
"description": "Object is related with this account"
|
|
49408
|
+
},
|
|
49409
|
+
"metadata": {
|
|
49410
|
+
"type": "object",
|
|
49411
|
+
"properties": {},
|
|
49412
|
+
"additionalProperties": true,
|
|
49413
|
+
"description": "LogMetadata",
|
|
49414
|
+
"default": {}
|
|
49415
|
+
},
|
|
49416
|
+
"createdAt": {
|
|
49417
|
+
"type": "string",
|
|
49418
|
+
"description": "Log creation date"
|
|
49419
|
+
},
|
|
49420
|
+
"updatedAt": {
|
|
49421
|
+
"type": "string",
|
|
49422
|
+
"description": "Log updated date"
|
|
49423
|
+
}
|
|
49424
|
+
},
|
|
49425
|
+
"description": "Log"
|
|
48295
49426
|
}
|
|
48296
49427
|
}
|
|
48297
49428
|
}
|
|
48298
49429
|
},
|
|
48299
49430
|
"400": {
|
|
48300
|
-
"description": "`invalid_id` — The id in the path is not a valid id for this resource.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
49431
|
+
"description": "`invalid_id` — The id in the path is not a valid id for this resource.\n\n`invalid_expand` — An `?expand=` path is not allowed on this resource.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
48301
49432
|
"content": {
|
|
48302
49433
|
"application/json": {
|
|
48303
49434
|
"schema": {
|
|
@@ -48312,6 +49443,7 @@
|
|
|
48312
49443
|
"type": "string",
|
|
48313
49444
|
"enum": [
|
|
48314
49445
|
"invalid_id",
|
|
49446
|
+
"invalid_expand",
|
|
48315
49447
|
"validation_error"
|
|
48316
49448
|
]
|
|
48317
49449
|
}
|
|
@@ -48453,14 +49585,14 @@
|
|
|
48453
49585
|
}
|
|
48454
49586
|
}
|
|
48455
49587
|
},
|
|
48456
|
-
"/
|
|
49588
|
+
"/session": {
|
|
48457
49589
|
"get": {
|
|
48458
|
-
"operationId": "
|
|
48459
|
-
"summary": "List
|
|
49590
|
+
"operationId": "session/list",
|
|
49591
|
+
"summary": "List Sessions",
|
|
48460
49592
|
"tags": [
|
|
48461
|
-
"
|
|
49593
|
+
"session"
|
|
48462
49594
|
],
|
|
48463
|
-
"description": "List
|
|
49595
|
+
"description": "List Sessions",
|
|
48464
49596
|
"parameters": [
|
|
48465
49597
|
{
|
|
48466
49598
|
"schema": {
|
|
@@ -48491,42 +49623,6 @@
|
|
|
48491
49623
|
"required": false,
|
|
48492
49624
|
"description": "Cursor returned by the previous page"
|
|
48493
49625
|
},
|
|
48494
|
-
{
|
|
48495
|
-
"schema": {
|
|
48496
|
-
"type": "string"
|
|
48497
|
-
},
|
|
48498
|
-
"in": "query",
|
|
48499
|
-
"name": "type",
|
|
48500
|
-
"required": false,
|
|
48501
|
-
"description": "Exact match on `type`. Equivalent to `?query=type:<value>`."
|
|
48502
|
-
},
|
|
48503
|
-
{
|
|
48504
|
-
"schema": {
|
|
48505
|
-
"type": "string"
|
|
48506
|
-
},
|
|
48507
|
-
"in": "query",
|
|
48508
|
-
"name": "status",
|
|
48509
|
-
"required": false,
|
|
48510
|
-
"description": "Exact match on `status`. Equivalent to `?query=status:<value>`."
|
|
48511
|
-
},
|
|
48512
|
-
{
|
|
48513
|
-
"schema": {
|
|
48514
|
-
"type": "string"
|
|
48515
|
-
},
|
|
48516
|
-
"in": "query",
|
|
48517
|
-
"name": "origin",
|
|
48518
|
-
"required": false,
|
|
48519
|
-
"description": "Exact match on `origin`. Equivalent to `?query=origin:<value>`."
|
|
48520
|
-
},
|
|
48521
|
-
{
|
|
48522
|
-
"schema": {
|
|
48523
|
-
"type": "string"
|
|
48524
|
-
},
|
|
48525
|
-
"in": "query",
|
|
48526
|
-
"name": "action",
|
|
48527
|
-
"required": false,
|
|
48528
|
-
"description": "Exact match on `action`. Equivalent to `?query=action:<value>`."
|
|
48529
|
-
},
|
|
48530
49626
|
{
|
|
48531
49627
|
"schema": {
|
|
48532
49628
|
"type": "string"
|
|
@@ -48559,27 +49655,18 @@
|
|
|
48559
49655
|
"type": "string"
|
|
48560
49656
|
},
|
|
48561
49657
|
"in": "query",
|
|
48562
|
-
"name": "
|
|
48563
|
-
"required": false,
|
|
48564
|
-
"description": "Exact match on `team`. Equivalent to `?query=team:<value>`."
|
|
48565
|
-
},
|
|
48566
|
-
{
|
|
48567
|
-
"schema": {
|
|
48568
|
-
"type": "string"
|
|
48569
|
-
},
|
|
48570
|
-
"in": "query",
|
|
48571
|
-
"name": "identity",
|
|
49658
|
+
"name": "status",
|
|
48572
49659
|
"required": false,
|
|
48573
|
-
"description": "Exact match on `
|
|
49660
|
+
"description": "Exact match on `status`. Equivalent to `?query=status:<value>`."
|
|
48574
49661
|
},
|
|
48575
49662
|
{
|
|
48576
49663
|
"schema": {
|
|
48577
49664
|
"type": "string"
|
|
48578
49665
|
},
|
|
48579
49666
|
"in": "query",
|
|
48580
|
-
"name": "
|
|
49667
|
+
"name": "sid",
|
|
48581
49668
|
"required": false,
|
|
48582
|
-
"description": "Exact match on `
|
|
49669
|
+
"description": "Exact match on `sid`. Equivalent to `?query=sid:<value>`."
|
|
48583
49670
|
},
|
|
48584
49671
|
{
|
|
48585
49672
|
"schema": {
|
|
@@ -48599,24 +49686,6 @@
|
|
|
48599
49686
|
"required": false,
|
|
48600
49687
|
"description": "Exact match on `until`. Equivalent to `?query=until:<value>`."
|
|
48601
49688
|
},
|
|
48602
|
-
{
|
|
48603
|
-
"schema": {
|
|
48604
|
-
"type": "string"
|
|
48605
|
-
},
|
|
48606
|
-
"in": "query",
|
|
48607
|
-
"name": "expires_before",
|
|
48608
|
-
"required": false,
|
|
48609
|
-
"description": "Exact match on `expires_before`. Equivalent to `?query=expires_before:<value>`."
|
|
48610
|
-
},
|
|
48611
|
-
{
|
|
48612
|
-
"schema": {
|
|
48613
|
-
"type": "string"
|
|
48614
|
-
},
|
|
48615
|
-
"in": "query",
|
|
48616
|
-
"name": "expires_after",
|
|
48617
|
-
"required": false,
|
|
48618
|
-
"description": "Exact match on `expires_after`. Equivalent to `?query=expires_after:<value>`."
|
|
48619
|
-
},
|
|
48620
49689
|
{
|
|
48621
49690
|
"schema": {
|
|
48622
49691
|
"type": "string"
|
|
@@ -48634,29 +49703,16 @@
|
|
|
48634
49703
|
"enum": [
|
|
48635
49704
|
"user",
|
|
48636
49705
|
"client",
|
|
48637
|
-
"connection"
|
|
48638
|
-
"team",
|
|
48639
|
-
"identity"
|
|
49706
|
+
"connection"
|
|
48640
49707
|
],
|
|
48641
|
-
"description": "Allowed expand paths on `
|
|
49708
|
+
"description": "Allowed expand paths on `session`: `user`, `client`, `connection`."
|
|
48642
49709
|
},
|
|
48643
|
-
"maxItems":
|
|
49710
|
+
"maxItems": 3
|
|
48644
49711
|
},
|
|
48645
49712
|
"in": "query",
|
|
48646
49713
|
"name": "expand",
|
|
48647
49714
|
"required": false,
|
|
48648
49715
|
"description": "Expand id-only fields in the response. Pass one path per entry (e.g. `?expand=user`)."
|
|
48649
|
-
},
|
|
48650
|
-
{
|
|
48651
|
-
"schema": {
|
|
48652
|
-
"type": "string",
|
|
48653
|
-
"minLength": 1,
|
|
48654
|
-
"maxLength": 200
|
|
48655
|
-
},
|
|
48656
|
-
"in": "query",
|
|
48657
|
-
"name": "q",
|
|
48658
|
-
"required": false,
|
|
48659
|
-
"description": "Full-text search across: `message`."
|
|
48660
49716
|
}
|
|
48661
49717
|
],
|
|
48662
49718
|
"security": [
|
|
@@ -48689,7 +49745,7 @@
|
|
|
48689
49745
|
"results": {
|
|
48690
49746
|
"type": "array",
|
|
48691
49747
|
"items": {
|
|
48692
|
-
"$ref": "#/components/schemas/
|
|
49748
|
+
"$ref": "#/components/schemas/Session"
|
|
48693
49749
|
}
|
|
48694
49750
|
}
|
|
48695
49751
|
},
|
|
@@ -48856,14 +49912,14 @@
|
|
|
48856
49912
|
}
|
|
48857
49913
|
}
|
|
48858
49914
|
},
|
|
48859
|
-
"/
|
|
49915
|
+
"/session/{session_id}": {
|
|
48860
49916
|
"get": {
|
|
48861
|
-
"operationId": "
|
|
48862
|
-
"summary": "Get
|
|
49917
|
+
"operationId": "session/get",
|
|
49918
|
+
"summary": "Get Session",
|
|
48863
49919
|
"tags": [
|
|
48864
|
-
"
|
|
49920
|
+
"session"
|
|
48865
49921
|
],
|
|
48866
|
-
"description": "Get
|
|
49922
|
+
"description": "Get Session",
|
|
48867
49923
|
"parameters": [
|
|
48868
49924
|
{
|
|
48869
49925
|
"schema": {
|
|
@@ -48873,13 +49929,11 @@
|
|
|
48873
49929
|
"enum": [
|
|
48874
49930
|
"user",
|
|
48875
49931
|
"client",
|
|
48876
|
-
"connection"
|
|
48877
|
-
"team",
|
|
48878
|
-
"identity"
|
|
49932
|
+
"connection"
|
|
48879
49933
|
],
|
|
48880
|
-
"description": "Allowed expand paths on `
|
|
49934
|
+
"description": "Allowed expand paths on `session`: `user`, `client`, `connection`."
|
|
48881
49935
|
},
|
|
48882
|
-
"maxItems":
|
|
49936
|
+
"maxItems": 3
|
|
48883
49937
|
},
|
|
48884
49938
|
"in": "query",
|
|
48885
49939
|
"name": "expand",
|
|
@@ -48891,7 +49945,7 @@
|
|
|
48891
49945
|
"type": "string"
|
|
48892
49946
|
},
|
|
48893
49947
|
"in": "path",
|
|
48894
|
-
"name": "
|
|
49948
|
+
"name": "session_id",
|
|
48895
49949
|
"required": true
|
|
48896
49950
|
}
|
|
48897
49951
|
],
|
|
@@ -48902,67 +49956,70 @@
|
|
|
48902
49956
|
],
|
|
48903
49957
|
"responses": {
|
|
48904
49958
|
"200": {
|
|
48905
|
-
"description": "
|
|
49959
|
+
"description": "Session",
|
|
48906
49960
|
"content": {
|
|
48907
49961
|
"application/json": {
|
|
48908
49962
|
"schema": {
|
|
48909
49963
|
"type": "object",
|
|
48910
49964
|
"required": [
|
|
48911
49965
|
"id",
|
|
48912
|
-
"
|
|
49966
|
+
"user",
|
|
49967
|
+
"sid",
|
|
48913
49968
|
"status",
|
|
49969
|
+
"last_seen_at",
|
|
49970
|
+
"expires_at",
|
|
48914
49971
|
"account",
|
|
48915
49972
|
"createdAt"
|
|
48916
49973
|
],
|
|
48917
49974
|
"properties": {
|
|
48918
49975
|
"id": {
|
|
48919
49976
|
"type": "string",
|
|
48920
|
-
"description": "
|
|
48921
|
-
},
|
|
48922
|
-
"type": {
|
|
48923
|
-
"type": "string",
|
|
48924
|
-
"description": "Log type, e.g. email.user.created"
|
|
49977
|
+
"description": "Session ID"
|
|
48925
49978
|
},
|
|
48926
|
-
"
|
|
49979
|
+
"user": {
|
|
48927
49980
|
"anyOf": [
|
|
48928
49981
|
{
|
|
48929
|
-
"
|
|
48930
|
-
"enum": [
|
|
48931
|
-
"success"
|
|
48932
|
-
]
|
|
49982
|
+
"$ref": "#/components/schemas/User"
|
|
48933
49983
|
},
|
|
48934
49984
|
{
|
|
48935
|
-
"type": "string"
|
|
48936
|
-
"enum": [
|
|
48937
|
-
"failed"
|
|
48938
|
-
]
|
|
49985
|
+
"type": "string"
|
|
48939
49986
|
},
|
|
49987
|
+
{}
|
|
49988
|
+
]
|
|
49989
|
+
},
|
|
49990
|
+
"sid": {
|
|
49991
|
+
"type": "string",
|
|
49992
|
+
"description": "OIDC session id. Every id_token minted for this session carries it as the `sid` claim; a back-channel or front-channel logout names the session with it."
|
|
49993
|
+
},
|
|
49994
|
+
"status": {
|
|
49995
|
+
"anyOf": [
|
|
48940
49996
|
{
|
|
48941
49997
|
"type": "string",
|
|
48942
49998
|
"enum": [
|
|
48943
|
-
"
|
|
49999
|
+
"active"
|
|
48944
50000
|
]
|
|
48945
50001
|
},
|
|
48946
50002
|
{
|
|
48947
50003
|
"type": "string",
|
|
48948
50004
|
"enum": [
|
|
48949
|
-
"
|
|
50005
|
+
"revoked"
|
|
48950
50006
|
]
|
|
48951
50007
|
}
|
|
48952
50008
|
],
|
|
48953
|
-
"description": "
|
|
50009
|
+
"description": "`active` or `revoked`. An active session whose `expires_at` is in the past has expired: nothing can refresh it any more, but the row stays for the history."
|
|
48954
50010
|
},
|
|
48955
|
-
"
|
|
50011
|
+
"ip": {
|
|
48956
50012
|
"type": "string",
|
|
48957
|
-
"description": "
|
|
50013
|
+
"description": "Client IP at the last authentication."
|
|
48958
50014
|
},
|
|
48959
|
-
"
|
|
48960
|
-
"
|
|
50015
|
+
"user_agent": {
|
|
50016
|
+
"type": "string",
|
|
50017
|
+
"description": "Raw `User-Agent` header at the last authentication."
|
|
48961
50018
|
},
|
|
48962
|
-
"
|
|
50019
|
+
"client": {
|
|
48963
50020
|
"anyOf": [
|
|
48964
50021
|
{
|
|
48965
|
-
"$ref": "#/components/schemas/
|
|
50022
|
+
"$ref": "#/components/schemas/Client"
|
|
48966
50023
|
},
|
|
48967
50024
|
{
|
|
48968
50025
|
"type": "string"
|
|
@@ -48970,10 +50027,10 @@
|
|
|
48970
50027
|
{}
|
|
48971
50028
|
]
|
|
48972
50029
|
},
|
|
48973
|
-
"
|
|
50030
|
+
"connection": {
|
|
48974
50031
|
"anyOf": [
|
|
48975
50032
|
{
|
|
48976
|
-
"$ref": "#/components/schemas/
|
|
50033
|
+
"$ref": "#/components/schemas/Connection"
|
|
48977
50034
|
},
|
|
48978
50035
|
{
|
|
48979
50036
|
"type": "string"
|
|
@@ -48981,10 +50038,279 @@
|
|
|
48981
50038
|
{}
|
|
48982
50039
|
]
|
|
48983
50040
|
},
|
|
48984
|
-
"
|
|
50041
|
+
"issuer": {
|
|
50042
|
+
"type": "string",
|
|
50043
|
+
"description": "Issuer URL the session was minted on."
|
|
50044
|
+
},
|
|
50045
|
+
"last_seen_at": {
|
|
50046
|
+
"type": "string",
|
|
50047
|
+
"format": "date-time",
|
|
50048
|
+
"description": "Last authentication or token refresh through this session. Each refresh slides `expires_at` 30 days from here."
|
|
50049
|
+
},
|
|
50050
|
+
"expires_at": {
|
|
50051
|
+
"type": "string",
|
|
50052
|
+
"format": "date-time",
|
|
50053
|
+
"description": "When the session stops being usable unless something refreshes it first."
|
|
50054
|
+
},
|
|
50055
|
+
"revoked_at": {
|
|
50056
|
+
"type": "string",
|
|
50057
|
+
"format": "date-time"
|
|
50058
|
+
},
|
|
50059
|
+
"revoked_reason": {
|
|
48985
50060
|
"anyOf": [
|
|
48986
50061
|
{
|
|
48987
|
-
"
|
|
50062
|
+
"type": "string",
|
|
50063
|
+
"enum": [
|
|
50064
|
+
"admin"
|
|
50065
|
+
]
|
|
50066
|
+
},
|
|
50067
|
+
{
|
|
50068
|
+
"type": "string",
|
|
50069
|
+
"enum": [
|
|
50070
|
+
"logout"
|
|
50071
|
+
]
|
|
50072
|
+
},
|
|
50073
|
+
{
|
|
50074
|
+
"type": "string",
|
|
50075
|
+
"enum": [
|
|
50076
|
+
"user"
|
|
50077
|
+
]
|
|
50078
|
+
}
|
|
50079
|
+
],
|
|
50080
|
+
"description": "`admin`: revoked through the Management API. `logout`: the user signed out. `user`: the user revoked it from another device."
|
|
50081
|
+
},
|
|
50082
|
+
"account": {
|
|
50083
|
+
"type": "string",
|
|
50084
|
+
"description": "Object is related with this account"
|
|
50085
|
+
},
|
|
50086
|
+
"metadata": {
|
|
50087
|
+
"type": "object",
|
|
50088
|
+
"properties": {},
|
|
50089
|
+
"additionalProperties": true,
|
|
50090
|
+
"description": "SessionMetadata",
|
|
50091
|
+
"default": {}
|
|
50092
|
+
},
|
|
50093
|
+
"createdAt": {
|
|
50094
|
+
"type": "string",
|
|
50095
|
+
"description": "Session creation date"
|
|
50096
|
+
},
|
|
50097
|
+
"updatedAt": {
|
|
50098
|
+
"type": "string",
|
|
50099
|
+
"description": "Session updated date"
|
|
50100
|
+
}
|
|
50101
|
+
},
|
|
50102
|
+
"description": "Session"
|
|
50103
|
+
}
|
|
50104
|
+
}
|
|
50105
|
+
}
|
|
50106
|
+
},
|
|
50107
|
+
"400": {
|
|
50108
|
+
"description": "`invalid_id` — The id in the path is not a valid id for this resource.\n\n`invalid_expand` — An `?expand=` path is not allowed on this resource.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
50109
|
+
"content": {
|
|
50110
|
+
"application/json": {
|
|
50111
|
+
"schema": {
|
|
50112
|
+
"allOf": [
|
|
50113
|
+
{
|
|
50114
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
50115
|
+
},
|
|
50116
|
+
{
|
|
50117
|
+
"type": "object",
|
|
50118
|
+
"properties": {
|
|
50119
|
+
"error_code": {
|
|
50120
|
+
"type": "string",
|
|
50121
|
+
"enum": [
|
|
50122
|
+
"invalid_id",
|
|
50123
|
+
"invalid_expand",
|
|
50124
|
+
"validation_error"
|
|
50125
|
+
]
|
|
50126
|
+
}
|
|
50127
|
+
}
|
|
50128
|
+
}
|
|
50129
|
+
]
|
|
50130
|
+
}
|
|
50131
|
+
}
|
|
50132
|
+
}
|
|
50133
|
+
},
|
|
50134
|
+
"401": {
|
|
50135
|
+
"description": "`unauthorized` — The request carries no valid credentials.",
|
|
50136
|
+
"content": {
|
|
50137
|
+
"application/json": {
|
|
50138
|
+
"schema": {
|
|
50139
|
+
"allOf": [
|
|
50140
|
+
{
|
|
50141
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
50142
|
+
},
|
|
50143
|
+
{
|
|
50144
|
+
"type": "object",
|
|
50145
|
+
"properties": {
|
|
50146
|
+
"error_code": {
|
|
50147
|
+
"type": "string",
|
|
50148
|
+
"enum": [
|
|
50149
|
+
"unauthorized"
|
|
50150
|
+
]
|
|
50151
|
+
}
|
|
50152
|
+
}
|
|
50153
|
+
}
|
|
50154
|
+
]
|
|
50155
|
+
}
|
|
50156
|
+
}
|
|
50157
|
+
}
|
|
50158
|
+
},
|
|
50159
|
+
"403": {
|
|
50160
|
+
"description": "`forbidden` — The credentials are valid but do not allow this operation.\n\n`insufficient_scope` — The token lacks a scope this operation requires. `message` names it.\n\n`user_suspended` — The user is suspended and cannot sign in or be modified.",
|
|
50161
|
+
"content": {
|
|
50162
|
+
"application/json": {
|
|
50163
|
+
"schema": {
|
|
50164
|
+
"allOf": [
|
|
50165
|
+
{
|
|
50166
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
50167
|
+
},
|
|
50168
|
+
{
|
|
50169
|
+
"type": "object",
|
|
50170
|
+
"properties": {
|
|
50171
|
+
"error_code": {
|
|
50172
|
+
"type": "string",
|
|
50173
|
+
"enum": [
|
|
50174
|
+
"forbidden",
|
|
50175
|
+
"insufficient_scope",
|
|
50176
|
+
"user_suspended"
|
|
50177
|
+
]
|
|
50178
|
+
}
|
|
50179
|
+
}
|
|
50180
|
+
}
|
|
50181
|
+
]
|
|
50182
|
+
}
|
|
50183
|
+
}
|
|
50184
|
+
}
|
|
50185
|
+
},
|
|
50186
|
+
"404": {
|
|
50187
|
+
"description": "`not_found` — The resource does not exist in this account.\n\n`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
50188
|
+
"content": {
|
|
50189
|
+
"application/json": {
|
|
50190
|
+
"schema": {
|
|
50191
|
+
"allOf": [
|
|
50192
|
+
{
|
|
50193
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
50194
|
+
},
|
|
50195
|
+
{
|
|
50196
|
+
"type": "object",
|
|
50197
|
+
"properties": {
|
|
50198
|
+
"error_code": {
|
|
50199
|
+
"type": "string",
|
|
50200
|
+
"enum": [
|
|
50201
|
+
"not_found",
|
|
50202
|
+
"account_not_found"
|
|
50203
|
+
]
|
|
50204
|
+
}
|
|
50205
|
+
}
|
|
50206
|
+
}
|
|
50207
|
+
]
|
|
50208
|
+
}
|
|
50209
|
+
}
|
|
50210
|
+
}
|
|
50211
|
+
},
|
|
50212
|
+
"429": {
|
|
50213
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
50214
|
+
"content": {
|
|
50215
|
+
"application/json": {
|
|
50216
|
+
"schema": {
|
|
50217
|
+
"allOf": [
|
|
50218
|
+
{
|
|
50219
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
50220
|
+
},
|
|
50221
|
+
{
|
|
50222
|
+
"type": "object",
|
|
50223
|
+
"properties": {
|
|
50224
|
+
"error_code": {
|
|
50225
|
+
"type": "string",
|
|
50226
|
+
"enum": [
|
|
50227
|
+
"too_many_requests"
|
|
50228
|
+
]
|
|
50229
|
+
}
|
|
50230
|
+
}
|
|
50231
|
+
}
|
|
50232
|
+
]
|
|
50233
|
+
}
|
|
50234
|
+
}
|
|
50235
|
+
}
|
|
50236
|
+
},
|
|
50237
|
+
"500": {
|
|
50238
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
50239
|
+
"content": {
|
|
50240
|
+
"application/json": {
|
|
50241
|
+
"schema": {
|
|
50242
|
+
"allOf": [
|
|
50243
|
+
{
|
|
50244
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
50245
|
+
},
|
|
50246
|
+
{
|
|
50247
|
+
"type": "object",
|
|
50248
|
+
"properties": {
|
|
50249
|
+
"error_code": {
|
|
50250
|
+
"type": "string",
|
|
50251
|
+
"enum": [
|
|
50252
|
+
"internal_error"
|
|
50253
|
+
]
|
|
50254
|
+
}
|
|
50255
|
+
}
|
|
50256
|
+
}
|
|
50257
|
+
]
|
|
50258
|
+
}
|
|
50259
|
+
}
|
|
50260
|
+
}
|
|
50261
|
+
}
|
|
50262
|
+
}
|
|
50263
|
+
}
|
|
50264
|
+
},
|
|
50265
|
+
"/session/{session_id}/revoke": {
|
|
50266
|
+
"post": {
|
|
50267
|
+
"operationId": "session/revoke",
|
|
50268
|
+
"summary": "Revoke a session",
|
|
50269
|
+
"tags": [
|
|
50270
|
+
"session"
|
|
50271
|
+
],
|
|
50272
|
+
"description": "Ends the session for good: the browser cookie behind it stops working, every refresh token issued through it is refused on its next use (`invalid_grant`), and the relying parties that took part in it are notified. Access and id tokens already issued keep working until they expire. The row stays, marked `revoked`, for the device history.",
|
|
50273
|
+
"parameters": [
|
|
50274
|
+
{
|
|
50275
|
+
"schema": {
|
|
50276
|
+
"type": "string"
|
|
50277
|
+
},
|
|
50278
|
+
"in": "path",
|
|
50279
|
+
"name": "session_id",
|
|
50280
|
+
"required": true
|
|
50281
|
+
}
|
|
50282
|
+
],
|
|
50283
|
+
"security": [
|
|
50284
|
+
{
|
|
50285
|
+
"bearerAuth": []
|
|
50286
|
+
}
|
|
50287
|
+
],
|
|
50288
|
+
"responses": {
|
|
50289
|
+
"200": {
|
|
50290
|
+
"description": "Session",
|
|
50291
|
+
"content": {
|
|
50292
|
+
"application/json": {
|
|
50293
|
+
"schema": {
|
|
50294
|
+
"type": "object",
|
|
50295
|
+
"required": [
|
|
50296
|
+
"id",
|
|
50297
|
+
"user",
|
|
50298
|
+
"sid",
|
|
50299
|
+
"status",
|
|
50300
|
+
"last_seen_at",
|
|
50301
|
+
"expires_at",
|
|
50302
|
+
"account",
|
|
50303
|
+
"createdAt"
|
|
50304
|
+
],
|
|
50305
|
+
"properties": {
|
|
50306
|
+
"id": {
|
|
50307
|
+
"type": "string",
|
|
50308
|
+
"description": "Session ID"
|
|
50309
|
+
},
|
|
50310
|
+
"user": {
|
|
50311
|
+
"anyOf": [
|
|
50312
|
+
{
|
|
50313
|
+
"$ref": "#/components/schemas/User"
|
|
48988
50314
|
},
|
|
48989
50315
|
{
|
|
48990
50316
|
"type": "string"
|
|
@@ -48992,10 +50318,39 @@
|
|
|
48992
50318
|
{}
|
|
48993
50319
|
]
|
|
48994
50320
|
},
|
|
48995
|
-
"
|
|
50321
|
+
"sid": {
|
|
50322
|
+
"type": "string",
|
|
50323
|
+
"description": "OIDC session id. Every id_token minted for this session carries it as the `sid` claim; a back-channel or front-channel logout names the session with it."
|
|
50324
|
+
},
|
|
50325
|
+
"status": {
|
|
48996
50326
|
"anyOf": [
|
|
48997
50327
|
{
|
|
48998
|
-
"
|
|
50328
|
+
"type": "string",
|
|
50329
|
+
"enum": [
|
|
50330
|
+
"active"
|
|
50331
|
+
]
|
|
50332
|
+
},
|
|
50333
|
+
{
|
|
50334
|
+
"type": "string",
|
|
50335
|
+
"enum": [
|
|
50336
|
+
"revoked"
|
|
50337
|
+
]
|
|
50338
|
+
}
|
|
50339
|
+
],
|
|
50340
|
+
"description": "`active` or `revoked`. An active session whose `expires_at` is in the past has expired: nothing can refresh it any more, but the row stays for the history."
|
|
50341
|
+
},
|
|
50342
|
+
"ip": {
|
|
50343
|
+
"type": "string",
|
|
50344
|
+
"description": "Client IP at the last authentication."
|
|
50345
|
+
},
|
|
50346
|
+
"user_agent": {
|
|
50347
|
+
"type": "string",
|
|
50348
|
+
"description": "Raw `User-Agent` header at the last authentication."
|
|
50349
|
+
},
|
|
50350
|
+
"client": {
|
|
50351
|
+
"anyOf": [
|
|
50352
|
+
{
|
|
50353
|
+
"$ref": "#/components/schemas/Client"
|
|
48999
50354
|
},
|
|
49000
50355
|
{
|
|
49001
50356
|
"type": "string"
|
|
@@ -49003,10 +50358,10 @@
|
|
|
49003
50358
|
{}
|
|
49004
50359
|
]
|
|
49005
50360
|
},
|
|
49006
|
-
"
|
|
50361
|
+
"connection": {
|
|
49007
50362
|
"anyOf": [
|
|
49008
50363
|
{
|
|
49009
|
-
"$ref": "#/components/schemas/
|
|
50364
|
+
"$ref": "#/components/schemas/Connection"
|
|
49010
50365
|
},
|
|
49011
50366
|
{
|
|
49012
50367
|
"type": "string"
|
|
@@ -49014,13 +50369,46 @@
|
|
|
49014
50369
|
{}
|
|
49015
50370
|
]
|
|
49016
50371
|
},
|
|
49017
|
-
"
|
|
49018
|
-
"type": "string"
|
|
50372
|
+
"issuer": {
|
|
50373
|
+
"type": "string",
|
|
50374
|
+
"description": "Issuer URL the session was minted on."
|
|
50375
|
+
},
|
|
50376
|
+
"last_seen_at": {
|
|
50377
|
+
"type": "string",
|
|
50378
|
+
"format": "date-time",
|
|
50379
|
+
"description": "Last authentication or token refresh through this session. Each refresh slides `expires_at` 30 days from here."
|
|
49019
50380
|
},
|
|
49020
50381
|
"expires_at": {
|
|
49021
50382
|
"type": "string",
|
|
49022
50383
|
"format": "date-time",
|
|
49023
|
-
"description": "When
|
|
50384
|
+
"description": "When the session stops being usable unless something refreshes it first."
|
|
50385
|
+
},
|
|
50386
|
+
"revoked_at": {
|
|
50387
|
+
"type": "string",
|
|
50388
|
+
"format": "date-time"
|
|
50389
|
+
},
|
|
50390
|
+
"revoked_reason": {
|
|
50391
|
+
"anyOf": [
|
|
50392
|
+
{
|
|
50393
|
+
"type": "string",
|
|
50394
|
+
"enum": [
|
|
50395
|
+
"admin"
|
|
50396
|
+
]
|
|
50397
|
+
},
|
|
50398
|
+
{
|
|
50399
|
+
"type": "string",
|
|
50400
|
+
"enum": [
|
|
50401
|
+
"logout"
|
|
50402
|
+
]
|
|
50403
|
+
},
|
|
50404
|
+
{
|
|
50405
|
+
"type": "string",
|
|
50406
|
+
"enum": [
|
|
50407
|
+
"user"
|
|
50408
|
+
]
|
|
50409
|
+
}
|
|
50410
|
+
],
|
|
50411
|
+
"description": "`admin`: revoked through the Management API. `logout`: the user signed out. `user`: the user revoked it from another device."
|
|
49024
50412
|
},
|
|
49025
50413
|
"account": {
|
|
49026
50414
|
"type": "string",
|
|
@@ -49030,25 +50418,25 @@
|
|
|
49030
50418
|
"type": "object",
|
|
49031
50419
|
"properties": {},
|
|
49032
50420
|
"additionalProperties": true,
|
|
49033
|
-
"description": "
|
|
50421
|
+
"description": "SessionMetadata",
|
|
49034
50422
|
"default": {}
|
|
49035
50423
|
},
|
|
49036
50424
|
"createdAt": {
|
|
49037
50425
|
"type": "string",
|
|
49038
|
-
"description": "
|
|
50426
|
+
"description": "Session creation date"
|
|
49039
50427
|
},
|
|
49040
50428
|
"updatedAt": {
|
|
49041
50429
|
"type": "string",
|
|
49042
|
-
"description": "
|
|
50430
|
+
"description": "Session updated date"
|
|
49043
50431
|
}
|
|
49044
50432
|
},
|
|
49045
|
-
"description": "
|
|
50433
|
+
"description": "Session"
|
|
49046
50434
|
}
|
|
49047
50435
|
}
|
|
49048
50436
|
}
|
|
49049
50437
|
},
|
|
49050
50438
|
"400": {
|
|
49051
|
-
"description": "`
|
|
50439
|
+
"description": "`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
49052
50440
|
"content": {
|
|
49053
50441
|
"application/json": {
|
|
49054
50442
|
"schema": {
|
|
@@ -49062,8 +50450,6 @@
|
|
|
49062
50450
|
"error_code": {
|
|
49063
50451
|
"type": "string",
|
|
49064
50452
|
"enum": [
|
|
49065
|
-
"invalid_id",
|
|
49066
|
-
"invalid_expand",
|
|
49067
50453
|
"validation_error"
|
|
49068
50454
|
]
|
|
49069
50455
|
}
|
|
@@ -49152,6 +50538,31 @@
|
|
|
49152
50538
|
}
|
|
49153
50539
|
}
|
|
49154
50540
|
},
|
|
50541
|
+
"409": {
|
|
50542
|
+
"description": "`session_already_revoked` — The session was already revoked.",
|
|
50543
|
+
"content": {
|
|
50544
|
+
"application/json": {
|
|
50545
|
+
"schema": {
|
|
50546
|
+
"allOf": [
|
|
50547
|
+
{
|
|
50548
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
50549
|
+
},
|
|
50550
|
+
{
|
|
50551
|
+
"type": "object",
|
|
50552
|
+
"properties": {
|
|
50553
|
+
"error_code": {
|
|
50554
|
+
"type": "string",
|
|
50555
|
+
"enum": [
|
|
50556
|
+
"session_already_revoked"
|
|
50557
|
+
]
|
|
50558
|
+
}
|
|
50559
|
+
}
|
|
50560
|
+
}
|
|
50561
|
+
]
|
|
50562
|
+
}
|
|
50563
|
+
}
|
|
50564
|
+
}
|
|
50565
|
+
},
|
|
49155
50566
|
"429": {
|
|
49156
50567
|
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
49157
50568
|
"content": {
|
|
@@ -55718,6 +57129,284 @@
|
|
|
55718
57129
|
}
|
|
55719
57130
|
}
|
|
55720
57131
|
},
|
|
57132
|
+
"/me/sessions": {
|
|
57133
|
+
"get": {
|
|
57134
|
+
"operationId": "session/meSessions",
|
|
57135
|
+
"summary": "List the current user's active sessions",
|
|
57136
|
+
"tags": [
|
|
57137
|
+
"session"
|
|
57138
|
+
],
|
|
57139
|
+
"description": "Every active session of the user behind the request (cookie or bearer), newest first; `current_session_id` names the one this request came through.",
|
|
57140
|
+
"responses": {
|
|
57141
|
+
"200": {
|
|
57142
|
+
"description": "Default Response",
|
|
57143
|
+
"content": {
|
|
57144
|
+
"application/json": {
|
|
57145
|
+
"schema": {
|
|
57146
|
+
"type": "object",
|
|
57147
|
+
"required": [
|
|
57148
|
+
"results",
|
|
57149
|
+
"current_session_id"
|
|
57150
|
+
],
|
|
57151
|
+
"properties": {
|
|
57152
|
+
"results": {
|
|
57153
|
+
"type": "array",
|
|
57154
|
+
"items": {
|
|
57155
|
+
"$ref": "#/components/schemas/Session"
|
|
57156
|
+
}
|
|
57157
|
+
},
|
|
57158
|
+
"current_session_id": {
|
|
57159
|
+
"anyOf": [
|
|
57160
|
+
{
|
|
57161
|
+
"type": "string"
|
|
57162
|
+
},
|
|
57163
|
+
{
|
|
57164
|
+
"type": "null"
|
|
57165
|
+
}
|
|
57166
|
+
],
|
|
57167
|
+
"description": "The id of the session this request came through: the cookie, or the session the bearer token was issued in. Null when the token predates session ids."
|
|
57168
|
+
}
|
|
57169
|
+
}
|
|
57170
|
+
}
|
|
57171
|
+
}
|
|
57172
|
+
}
|
|
57173
|
+
},
|
|
57174
|
+
"401": {
|
|
57175
|
+
"description": "`mfa_pending` — A second-factor challenge is pending; answer it before continuing.\n\n`not_logged_in` — There is no signed-in session for this request.",
|
|
57176
|
+
"content": {
|
|
57177
|
+
"application/json": {
|
|
57178
|
+
"schema": {
|
|
57179
|
+
"allOf": [
|
|
57180
|
+
{
|
|
57181
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
57182
|
+
},
|
|
57183
|
+
{
|
|
57184
|
+
"type": "object",
|
|
57185
|
+
"properties": {
|
|
57186
|
+
"error_code": {
|
|
57187
|
+
"type": "string",
|
|
57188
|
+
"enum": [
|
|
57189
|
+
"mfa_pending",
|
|
57190
|
+
"not_logged_in"
|
|
57191
|
+
]
|
|
57192
|
+
}
|
|
57193
|
+
}
|
|
57194
|
+
}
|
|
57195
|
+
]
|
|
57196
|
+
}
|
|
57197
|
+
}
|
|
57198
|
+
}
|
|
57199
|
+
},
|
|
57200
|
+
"404": {
|
|
57201
|
+
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
57202
|
+
"content": {
|
|
57203
|
+
"application/json": {
|
|
57204
|
+
"schema": {
|
|
57205
|
+
"allOf": [
|
|
57206
|
+
{
|
|
57207
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
57208
|
+
},
|
|
57209
|
+
{
|
|
57210
|
+
"type": "object",
|
|
57211
|
+
"properties": {
|
|
57212
|
+
"error_code": {
|
|
57213
|
+
"type": "string",
|
|
57214
|
+
"enum": [
|
|
57215
|
+
"account_not_found"
|
|
57216
|
+
]
|
|
57217
|
+
}
|
|
57218
|
+
}
|
|
57219
|
+
}
|
|
57220
|
+
]
|
|
57221
|
+
}
|
|
57222
|
+
}
|
|
57223
|
+
}
|
|
57224
|
+
},
|
|
57225
|
+
"429": {
|
|
57226
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
57227
|
+
"content": {
|
|
57228
|
+
"application/json": {
|
|
57229
|
+
"schema": {
|
|
57230
|
+
"allOf": [
|
|
57231
|
+
{
|
|
57232
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
57233
|
+
},
|
|
57234
|
+
{
|
|
57235
|
+
"type": "object",
|
|
57236
|
+
"properties": {
|
|
57237
|
+
"error_code": {
|
|
57238
|
+
"type": "string",
|
|
57239
|
+
"enum": [
|
|
57240
|
+
"too_many_requests"
|
|
57241
|
+
]
|
|
57242
|
+
}
|
|
57243
|
+
}
|
|
57244
|
+
}
|
|
57245
|
+
]
|
|
57246
|
+
}
|
|
57247
|
+
}
|
|
57248
|
+
}
|
|
57249
|
+
},
|
|
57250
|
+
"500": {
|
|
57251
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
57252
|
+
"content": {
|
|
57253
|
+
"application/json": {
|
|
57254
|
+
"schema": {
|
|
57255
|
+
"allOf": [
|
|
57256
|
+
{
|
|
57257
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
57258
|
+
},
|
|
57259
|
+
{
|
|
57260
|
+
"type": "object",
|
|
57261
|
+
"properties": {
|
|
57262
|
+
"error_code": {
|
|
57263
|
+
"type": "string",
|
|
57264
|
+
"enum": [
|
|
57265
|
+
"internal_error"
|
|
57266
|
+
]
|
|
57267
|
+
}
|
|
57268
|
+
}
|
|
57269
|
+
}
|
|
57270
|
+
]
|
|
57271
|
+
}
|
|
57272
|
+
}
|
|
57273
|
+
}
|
|
57274
|
+
}
|
|
57275
|
+
}
|
|
57276
|
+
}
|
|
57277
|
+
},
|
|
57278
|
+
"/me/sessions/revoke-others": {
|
|
57279
|
+
"post": {
|
|
57280
|
+
"operationId": "session/meRevokeOtherSessions",
|
|
57281
|
+
"summary": "Sign the current user out everywhere else",
|
|
57282
|
+
"tags": [
|
|
57283
|
+
"session"
|
|
57284
|
+
],
|
|
57285
|
+
"description": "Revokes every active session of the user except the one this request came through. Refresh tokens issued in the revoked sessions are refused on their next use; access and id tokens already issued keep working until they expire.",
|
|
57286
|
+
"responses": {
|
|
57287
|
+
"200": {
|
|
57288
|
+
"description": "Default Response",
|
|
57289
|
+
"content": {
|
|
57290
|
+
"application/json": {
|
|
57291
|
+
"schema": {
|
|
57292
|
+
"type": "object",
|
|
57293
|
+
"required": [
|
|
57294
|
+
"revoked"
|
|
57295
|
+
],
|
|
57296
|
+
"properties": {
|
|
57297
|
+
"revoked": {
|
|
57298
|
+
"type": "number",
|
|
57299
|
+
"description": "How many sessions were ended."
|
|
57300
|
+
}
|
|
57301
|
+
}
|
|
57302
|
+
}
|
|
57303
|
+
}
|
|
57304
|
+
}
|
|
57305
|
+
},
|
|
57306
|
+
"401": {
|
|
57307
|
+
"description": "`mfa_pending` — A second-factor challenge is pending; answer it before continuing.\n\n`not_logged_in` — There is no signed-in session for this request.",
|
|
57308
|
+
"content": {
|
|
57309
|
+
"application/json": {
|
|
57310
|
+
"schema": {
|
|
57311
|
+
"allOf": [
|
|
57312
|
+
{
|
|
57313
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
57314
|
+
},
|
|
57315
|
+
{
|
|
57316
|
+
"type": "object",
|
|
57317
|
+
"properties": {
|
|
57318
|
+
"error_code": {
|
|
57319
|
+
"type": "string",
|
|
57320
|
+
"enum": [
|
|
57321
|
+
"mfa_pending",
|
|
57322
|
+
"not_logged_in"
|
|
57323
|
+
]
|
|
57324
|
+
}
|
|
57325
|
+
}
|
|
57326
|
+
}
|
|
57327
|
+
]
|
|
57328
|
+
}
|
|
57329
|
+
}
|
|
57330
|
+
}
|
|
57331
|
+
},
|
|
57332
|
+
"404": {
|
|
57333
|
+
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
57334
|
+
"content": {
|
|
57335
|
+
"application/json": {
|
|
57336
|
+
"schema": {
|
|
57337
|
+
"allOf": [
|
|
57338
|
+
{
|
|
57339
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
57340
|
+
},
|
|
57341
|
+
{
|
|
57342
|
+
"type": "object",
|
|
57343
|
+
"properties": {
|
|
57344
|
+
"error_code": {
|
|
57345
|
+
"type": "string",
|
|
57346
|
+
"enum": [
|
|
57347
|
+
"account_not_found"
|
|
57348
|
+
]
|
|
57349
|
+
}
|
|
57350
|
+
}
|
|
57351
|
+
}
|
|
57352
|
+
]
|
|
57353
|
+
}
|
|
57354
|
+
}
|
|
57355
|
+
}
|
|
57356
|
+
},
|
|
57357
|
+
"429": {
|
|
57358
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
57359
|
+
"content": {
|
|
57360
|
+
"application/json": {
|
|
57361
|
+
"schema": {
|
|
57362
|
+
"allOf": [
|
|
57363
|
+
{
|
|
57364
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
57365
|
+
},
|
|
57366
|
+
{
|
|
57367
|
+
"type": "object",
|
|
57368
|
+
"properties": {
|
|
57369
|
+
"error_code": {
|
|
57370
|
+
"type": "string",
|
|
57371
|
+
"enum": [
|
|
57372
|
+
"too_many_requests"
|
|
57373
|
+
]
|
|
57374
|
+
}
|
|
57375
|
+
}
|
|
57376
|
+
}
|
|
57377
|
+
]
|
|
57378
|
+
}
|
|
57379
|
+
}
|
|
57380
|
+
}
|
|
57381
|
+
},
|
|
57382
|
+
"500": {
|
|
57383
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
57384
|
+
"content": {
|
|
57385
|
+
"application/json": {
|
|
57386
|
+
"schema": {
|
|
57387
|
+
"allOf": [
|
|
57388
|
+
{
|
|
57389
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
57390
|
+
},
|
|
57391
|
+
{
|
|
57392
|
+
"type": "object",
|
|
57393
|
+
"properties": {
|
|
57394
|
+
"error_code": {
|
|
57395
|
+
"type": "string",
|
|
57396
|
+
"enum": [
|
|
57397
|
+
"internal_error"
|
|
57398
|
+
]
|
|
57399
|
+
}
|
|
57400
|
+
}
|
|
57401
|
+
}
|
|
57402
|
+
]
|
|
57403
|
+
}
|
|
57404
|
+
}
|
|
57405
|
+
}
|
|
57406
|
+
}
|
|
57407
|
+
}
|
|
57408
|
+
}
|
|
57409
|
+
},
|
|
55721
57410
|
"/logout": {
|
|
55722
57411
|
"get": {
|
|
55723
57412
|
"operationId": "session/logout",
|