@faable/auth-sdk 2.7.82 → 2.7.84
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/FaableAuthApi.d.ts +4 -0
- package/dist/api/generated-client.d.ts +227 -0
- package/dist/api/generated-client.js +75 -0
- package/dist/api/types.d.ts +992 -1
- package/dist/version.js +2 -2
- package/package.json +1 -1
- package/spec/openapi.json +2863 -894
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.67.0",
|
|
7
7
|
"license": {
|
|
8
8
|
"name": "private",
|
|
9
9
|
"url": "https://faable.com/docs/platform/privacy-policy"
|
|
@@ -677,6 +677,11 @@
|
|
|
677
677
|
"enabled": {
|
|
678
678
|
"type": "boolean"
|
|
679
679
|
},
|
|
680
|
+
"organization": {
|
|
681
|
+
"type": "string",
|
|
682
|
+
"description": "The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan.",
|
|
683
|
+
"nullable": true
|
|
684
|
+
},
|
|
680
685
|
"enabled_clients": {
|
|
681
686
|
"type": "array",
|
|
682
687
|
"items": {
|
|
@@ -881,6 +886,16 @@
|
|
|
881
886
|
"jwks_url": {
|
|
882
887
|
"type": "string"
|
|
883
888
|
},
|
|
889
|
+
"token_url": {
|
|
890
|
+
"type": "string"
|
|
891
|
+
},
|
|
892
|
+
"userinfo_url": {
|
|
893
|
+
"type": "string"
|
|
894
|
+
},
|
|
895
|
+
"organization": {
|
|
896
|
+
"type": "string",
|
|
897
|
+
"description": "The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan."
|
|
898
|
+
},
|
|
884
899
|
"scope": {
|
|
885
900
|
"type": "array",
|
|
886
901
|
"items": {
|
|
@@ -1193,6 +1208,10 @@
|
|
|
1193
1208
|
}
|
|
1194
1209
|
],
|
|
1195
1210
|
"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."
|
|
1211
|
+
},
|
|
1212
|
+
"organization": {
|
|
1213
|
+
"type": "string",
|
|
1214
|
+
"nullable": true
|
|
1196
1215
|
}
|
|
1197
1216
|
},
|
|
1198
1217
|
"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.",
|
|
@@ -3673,6 +3692,8 @@
|
|
|
3673
3692
|
"slug",
|
|
3674
3693
|
"description",
|
|
3675
3694
|
"logo_url",
|
|
3695
|
+
"domains",
|
|
3696
|
+
"auto_join",
|
|
3676
3697
|
"admins",
|
|
3677
3698
|
"account",
|
|
3678
3699
|
"createdAt"
|
|
@@ -3702,6 +3723,58 @@
|
|
|
3702
3723
|
"description": "Optional URL of the organization logo.",
|
|
3703
3724
|
"nullable": true
|
|
3704
3725
|
},
|
|
3726
|
+
"domains": {
|
|
3727
|
+
"type": "array",
|
|
3728
|
+
"items": {
|
|
3729
|
+
"type": "object",
|
|
3730
|
+
"required": [
|
|
3731
|
+
"domain",
|
|
3732
|
+
"verification_token",
|
|
3733
|
+
"verified_at"
|
|
3734
|
+
],
|
|
3735
|
+
"properties": {
|
|
3736
|
+
"domain": {
|
|
3737
|
+
"type": "string",
|
|
3738
|
+
"example": "acme.com"
|
|
3739
|
+
},
|
|
3740
|
+
"verification_token": {
|
|
3741
|
+
"type": "string",
|
|
3742
|
+
"description": "Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`."
|
|
3743
|
+
},
|
|
3744
|
+
"verified_at": {
|
|
3745
|
+
"type": "string",
|
|
3746
|
+
"format": "date-time",
|
|
3747
|
+
"description": "When the TXT record was found. `null` = not verified.",
|
|
3748
|
+
"nullable": true
|
|
3749
|
+
}
|
|
3750
|
+
}
|
|
3751
|
+
},
|
|
3752
|
+
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
3753
|
+
},
|
|
3754
|
+
"auto_join": {
|
|
3755
|
+
"type": "array",
|
|
3756
|
+
"items": {
|
|
3757
|
+
"type": "object",
|
|
3758
|
+
"required": [
|
|
3759
|
+
"team",
|
|
3760
|
+
"roles"
|
|
3761
|
+
],
|
|
3762
|
+
"properties": {
|
|
3763
|
+
"team": {
|
|
3764
|
+
"type": "string",
|
|
3765
|
+
"description": "A team of this organization."
|
|
3766
|
+
},
|
|
3767
|
+
"roles": {
|
|
3768
|
+
"type": "array",
|
|
3769
|
+
"items": {
|
|
3770
|
+
"type": "string"
|
|
3771
|
+
},
|
|
3772
|
+
"description": "Role ids the member gets in that team."
|
|
3773
|
+
}
|
|
3774
|
+
}
|
|
3775
|
+
},
|
|
3776
|
+
"description": "Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain."
|
|
3777
|
+
},
|
|
3705
3778
|
"admins": {
|
|
3706
3779
|
"type": "array",
|
|
3707
3780
|
"items": {
|
|
@@ -7780,7 +7853,7 @@
|
|
|
7780
7853
|
},
|
|
7781
7854
|
"ErrorCode": {
|
|
7782
7855
|
"type": "string",
|
|
7783
|
-
"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- `email_sender_domain_not_allowed` (400): The sender address is not in a domain this platform signs email for (AUTH_EMAIL_SENDER_DOMAINS).\n- `plan_required` (402): The setting requires a higher plan. `message` says which.\n- `invalid_canonical_host` (400): `canonical_host` must be this account's own platform host or one of its verified custom domains.\n- `canonical_host_breaks_passkeys` (400): `canonical_host` is outside the account's current WebAuthn RP ID — every passkey already enrolled would stop working. Set `webauthn_rp_id` in the same request to a suffix that covers both.\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- `username_taken` (409): Another user of this database connection already uses that username.\n- `invalid_username` (400): The username is empty, or contains an `@` or whitespace. `message` says which.\n- `invalid_email` (400): The email address is not valid.\n- `invalid_name` (400): The name contains a link. `message` says which field.\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- `no_database_connection` (400): The tenant has no database connection, so there is nowhere to store a password. Create one and retry.\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- `invalid_invite_url` (400): An invite's `accept_url` or `redirect_uri` is not an http(s) URL at an origin of this tenant's client callbacks or `callback_hostnames`, or it carries a fragment.\n- `invite_email_mismatch` (403): The invite is for another email address than the accepting user's. `details.invited_email` shows it masked.\n- `invite_email_unverified` (403): The accepting user's email matches the invite but is not verified yet.\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- `registration_disabled` (403): Dynamic client registration is turned off for this tenant. Create the client from the dashboard or the Management API, or turn on `dynamic_client_registration_enabled`.\n- `organization_not_found` (404): No organization with that id in this account.\n- `invalid_user` (400): The user does not exist in this account.\n- `not_an_organization_admin` (404): The user is not an admin of the organization.\n- `last_organization_admin` (409): An organization keeps at least one admin. Add another admin before removing this one.\n- `team_id_unavailable` (409): The team id cannot be used in this tenant. Pick another id or let the API generate one.\n- `use_team_member_route` (400): This generic route cannot create memberships. Use `POST /team/{team_id}/member` for team members or `POST /role/{role_id}/users` for role grants.\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.\n- `invalid_webhook_event` (400): An event is not in the webhook event catalog. `message` and `details.valid_events` list the valid ones.\n- `invalid_webhook_url` (400): The webhook URL must be an absolute `https` URL.\n- `not_a_webhook` (400): The operation only applies to `webhook` subscriptions.\n- `delivery_not_found` (404): No webhook delivery with that id for this subscription.\n- `delivery_in_progress` (409): The delivery is being attempted right now; retry the redeliver in a minute.",
|
|
7856
|
+
"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- `email_sender_domain_not_allowed` (400): The sender address is not in a domain this platform signs email for (AUTH_EMAIL_SENDER_DOMAINS).\n- `plan_required` (402): The setting requires a higher plan. `message` says which.\n- `invalid_canonical_host` (400): `canonical_host` must be this account's own platform host or one of its verified custom domains.\n- `canonical_host_breaks_passkeys` (400): `canonical_host` is outside the account's current WebAuthn RP ID — every passkey already enrolled would stop working. Set `webauthn_rp_id` in the same request to a suffix that covers both.\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- `username_taken` (409): Another user of this database connection already uses that username.\n- `invalid_username` (400): The username is empty, or contains an `@` or whitespace. `message` says which.\n- `invalid_email` (400): The email address is not valid.\n- `invalid_name` (400): The name contains a link. `message` says which field.\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- `no_database_connection` (400): The tenant has no database connection, so there is nowhere to store a password. Create one and retry.\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- `invalid_invite_url` (400): An invite's `accept_url` or `redirect_uri` is not an http(s) URL at an origin of this tenant's client callbacks or `callback_hostnames`, or it carries a fragment.\n- `invite_email_mismatch` (403): The invite is for another email address than the accepting user's. `details.invited_email` shows it masked.\n- `invite_email_unverified` (403): The accepting user's email matches the invite but is not verified yet.\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- `registration_disabled` (403): Dynamic client registration is turned off for this tenant. Create the client from the dashboard or the Management API, or turn on `dynamic_client_registration_enabled`.\n- `invalid_email_domain` (400): Not an email domain this organization can claim: it must be a plain domain name (`acme.com`), lowercase, without scheme, path or wildcard.\n- `public_email_domain` (400): A public email provider (gmail.com, outlook.com…) cannot belong to an organization: anyone can have an address there.\n- `organization_domain_not_found` (404): The organization has no such domain.\n- `organization_domain_taken` (409): Another organization of this tenant already verified this domain. A domain belongs to one organization.\n- `organization_domain_unverified` (400): The TXT record was not found or does not hold the expected value yet. `details.record` says what was expected and what resolves now; DNS can take a few minutes to propagate.\n- `plan_unavailable` (503): The plan could not be checked right now, and this setting is only for paid plans. Try again in a minute.\n- `organization_domain_mismatch` (403): This organization's identity provider can only sign in addresses of the organization's verified email domains.\n- `team_not_in_organization` (400): Auto-join can only put people in teams of the same organization. `details.teams` lists the others.\n- `organization_not_found` (404): No organization with that id in this account.\n- `invalid_user` (400): The user does not exist in this account.\n- `not_an_organization_admin` (404): The user is not an admin of the organization.\n- `last_organization_admin` (409): An organization keeps at least one admin. Add another admin before removing this one.\n- `team_id_unavailable` (409): The team id cannot be used in this tenant. Pick another id or let the API generate one.\n- `use_team_member_route` (400): This generic route cannot create memberships. Use `POST /team/{team_id}/member` for team members or `POST /role/{role_id}/users` for role grants.\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.\n- `invalid_webhook_event` (400): An event is not in the webhook event catalog. `message` and `details.valid_events` list the valid ones.\n- `invalid_webhook_url` (400): The webhook URL must be an absolute `https` URL.\n- `not_a_webhook` (400): The operation only applies to `webhook` subscriptions.\n- `delivery_not_found` (404): No webhook delivery with that id for this subscription.\n- `delivery_in_progress` (409): The delivery is being attempted right now; retry the redeliver in a minute.",
|
|
7784
7857
|
"enum": [
|
|
7785
7858
|
"bad_request",
|
|
7786
7859
|
"validation_error",
|
|
@@ -7901,6 +7974,14 @@
|
|
|
7901
7974
|
"already_member",
|
|
7902
7975
|
"not_a_member",
|
|
7903
7976
|
"registration_disabled",
|
|
7977
|
+
"invalid_email_domain",
|
|
7978
|
+
"public_email_domain",
|
|
7979
|
+
"organization_domain_not_found",
|
|
7980
|
+
"organization_domain_taken",
|
|
7981
|
+
"organization_domain_unverified",
|
|
7982
|
+
"plan_unavailable",
|
|
7983
|
+
"organization_domain_mismatch",
|
|
7984
|
+
"team_not_in_organization",
|
|
7904
7985
|
"organization_not_found",
|
|
7905
7986
|
"invalid_user",
|
|
7906
7987
|
"not_an_organization_admin",
|
|
@@ -14921,6 +15002,16 @@
|
|
|
14921
15002
|
"jwks_url": {
|
|
14922
15003
|
"type": "string"
|
|
14923
15004
|
},
|
|
15005
|
+
"token_url": {
|
|
15006
|
+
"type": "string"
|
|
15007
|
+
},
|
|
15008
|
+
"userinfo_url": {
|
|
15009
|
+
"type": "string"
|
|
15010
|
+
},
|
|
15011
|
+
"organization": {
|
|
15012
|
+
"type": "string",
|
|
15013
|
+
"description": "The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan."
|
|
15014
|
+
},
|
|
14924
15015
|
"scope": {
|
|
14925
15016
|
"type": "array",
|
|
14926
15017
|
"items": {
|
|
@@ -15148,429 +15239,10 @@
|
|
|
15148
15239
|
"enabled": {
|
|
15149
15240
|
"type": "boolean"
|
|
15150
15241
|
},
|
|
15151
|
-
"
|
|
15152
|
-
"type": "array",
|
|
15153
|
-
"items": {
|
|
15154
|
-
"type": "string"
|
|
15155
|
-
},
|
|
15156
|
-
"default": null,
|
|
15157
|
-
"nullable": true
|
|
15158
|
-
},
|
|
15159
|
-
"scope": {
|
|
15160
|
-
"type": "array",
|
|
15161
|
-
"items": {
|
|
15162
|
-
"type": "string"
|
|
15163
|
-
},
|
|
15164
|
-
"default": []
|
|
15165
|
-
},
|
|
15166
|
-
"authorize_params": {
|
|
15167
|
-
"type": "object",
|
|
15168
|
-
"description": "Authorize params",
|
|
15169
|
-
"default": {},
|
|
15170
|
-
"additionalProperties": {
|
|
15171
|
-
"type": "string"
|
|
15172
|
-
}
|
|
15173
|
-
},
|
|
15174
|
-
"claims_mapping": {
|
|
15175
|
-
"type": "object",
|
|
15176
|
-
"additionalProperties": {
|
|
15177
|
-
"type": "string"
|
|
15178
|
-
}
|
|
15179
|
-
},
|
|
15180
|
-
"is_using_default_credentials": {
|
|
15181
|
-
"type": "boolean",
|
|
15182
|
-
"readOnly": true,
|
|
15183
|
-
"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."
|
|
15184
|
-
},
|
|
15185
|
-
"email_oauth_sync_policy": {
|
|
15186
|
-
"anyOf": [
|
|
15187
|
-
{
|
|
15188
|
-
"type": "string",
|
|
15189
|
-
"enum": [
|
|
15190
|
-
"preserve_manual"
|
|
15191
|
-
]
|
|
15192
|
-
},
|
|
15193
|
-
{
|
|
15194
|
-
"type": "string",
|
|
15195
|
-
"enum": [
|
|
15196
|
-
"always_sync"
|
|
15197
|
-
]
|
|
15198
|
-
}
|
|
15199
|
-
],
|
|
15200
|
-
"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."
|
|
15201
|
-
},
|
|
15202
|
-
"password_policy": {
|
|
15203
|
-
"type": "object",
|
|
15204
|
-
"required": [
|
|
15205
|
-
"level"
|
|
15206
|
-
],
|
|
15207
|
-
"properties": {
|
|
15208
|
-
"level": {
|
|
15209
|
-
"anyOf": [
|
|
15210
|
-
{
|
|
15211
|
-
"type": "string",
|
|
15212
|
-
"enum": [
|
|
15213
|
-
"none"
|
|
15214
|
-
]
|
|
15215
|
-
},
|
|
15216
|
-
{
|
|
15217
|
-
"type": "string",
|
|
15218
|
-
"enum": [
|
|
15219
|
-
"low"
|
|
15220
|
-
]
|
|
15221
|
-
},
|
|
15222
|
-
{
|
|
15223
|
-
"type": "string",
|
|
15224
|
-
"enum": [
|
|
15225
|
-
"fair"
|
|
15226
|
-
]
|
|
15227
|
-
},
|
|
15228
|
-
{
|
|
15229
|
-
"type": "string",
|
|
15230
|
-
"enum": [
|
|
15231
|
-
"good"
|
|
15232
|
-
]
|
|
15233
|
-
},
|
|
15234
|
-
{
|
|
15235
|
-
"type": "string",
|
|
15236
|
-
"enum": [
|
|
15237
|
-
"excellent"
|
|
15238
|
-
]
|
|
15239
|
-
}
|
|
15240
|
-
]
|
|
15241
|
-
},
|
|
15242
|
-
"min_length": {
|
|
15243
|
-
"type": "integer",
|
|
15244
|
-
"minimum": 1,
|
|
15245
|
-
"maximum": 128
|
|
15246
|
-
},
|
|
15247
|
-
"require_lowercase": {
|
|
15248
|
-
"type": "boolean"
|
|
15249
|
-
},
|
|
15250
|
-
"require_uppercase": {
|
|
15251
|
-
"type": "boolean"
|
|
15252
|
-
},
|
|
15253
|
-
"require_number": {
|
|
15254
|
-
"type": "boolean"
|
|
15255
|
-
},
|
|
15256
|
-
"require_special": {
|
|
15257
|
-
"type": "boolean"
|
|
15258
|
-
}
|
|
15259
|
-
},
|
|
15260
|
-
"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."
|
|
15261
|
-
},
|
|
15262
|
-
"login_identifier": {
|
|
15263
|
-
"anyOf": [
|
|
15264
|
-
{
|
|
15265
|
-
"type": "string",
|
|
15266
|
-
"enum": [
|
|
15267
|
-
"email"
|
|
15268
|
-
]
|
|
15269
|
-
},
|
|
15270
|
-
{
|
|
15271
|
-
"type": "string",
|
|
15272
|
-
"enum": [
|
|
15273
|
-
"username"
|
|
15274
|
-
]
|
|
15275
|
-
},
|
|
15276
|
-
{
|
|
15277
|
-
"type": "string",
|
|
15278
|
-
"enum": [
|
|
15279
|
-
"email_or_username"
|
|
15280
|
-
]
|
|
15281
|
-
}
|
|
15282
|
-
],
|
|
15283
|
-
"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."
|
|
15284
|
-
},
|
|
15285
|
-
"disable_signup": {
|
|
15286
|
-
"type": "boolean",
|
|
15287
|
-
"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`."
|
|
15288
|
-
},
|
|
15289
|
-
"account": {
|
|
15290
|
-
"type": "string",
|
|
15291
|
-
"description": "Object is related with this account"
|
|
15292
|
-
},
|
|
15293
|
-
"metadata": {
|
|
15294
|
-
"type": "object",
|
|
15295
|
-
"properties": {},
|
|
15296
|
-
"additionalProperties": true,
|
|
15297
|
-
"description": "ConnectionMetadata",
|
|
15298
|
-
"default": {}
|
|
15299
|
-
},
|
|
15300
|
-
"createdAt": {
|
|
15301
|
-
"type": "string",
|
|
15302
|
-
"description": "Connection creation date"
|
|
15303
|
-
},
|
|
15304
|
-
"updatedAt": {
|
|
15305
|
-
"type": "string",
|
|
15306
|
-
"description": "Connection updated date"
|
|
15307
|
-
}
|
|
15308
|
-
},
|
|
15309
|
-
"description": "Connection"
|
|
15310
|
-
}
|
|
15311
|
-
}
|
|
15312
|
-
}
|
|
15313
|
-
},
|
|
15314
|
-
"400": {
|
|
15315
|
-
"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.",
|
|
15316
|
-
"content": {
|
|
15317
|
-
"application/json": {
|
|
15318
|
-
"schema": {
|
|
15319
|
-
"allOf": [
|
|
15320
|
-
{
|
|
15321
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
15322
|
-
},
|
|
15323
|
-
{
|
|
15324
|
-
"type": "object",
|
|
15325
|
-
"properties": {
|
|
15326
|
-
"error_code": {
|
|
15327
|
-
"type": "string",
|
|
15328
|
-
"enum": [
|
|
15329
|
-
"already_exists",
|
|
15330
|
-
"validation_error"
|
|
15331
|
-
]
|
|
15332
|
-
}
|
|
15333
|
-
}
|
|
15334
|
-
}
|
|
15335
|
-
]
|
|
15336
|
-
}
|
|
15337
|
-
}
|
|
15338
|
-
}
|
|
15339
|
-
},
|
|
15340
|
-
"401": {
|
|
15341
|
-
"description": "`unauthorized` — The request carries no valid credentials.",
|
|
15342
|
-
"content": {
|
|
15343
|
-
"application/json": {
|
|
15344
|
-
"schema": {
|
|
15345
|
-
"allOf": [
|
|
15346
|
-
{
|
|
15347
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
15348
|
-
},
|
|
15349
|
-
{
|
|
15350
|
-
"type": "object",
|
|
15351
|
-
"properties": {
|
|
15352
|
-
"error_code": {
|
|
15353
|
-
"type": "string",
|
|
15354
|
-
"enum": [
|
|
15355
|
-
"unauthorized"
|
|
15356
|
-
]
|
|
15357
|
-
}
|
|
15358
|
-
}
|
|
15359
|
-
}
|
|
15360
|
-
]
|
|
15361
|
-
}
|
|
15362
|
-
}
|
|
15363
|
-
}
|
|
15364
|
-
},
|
|
15365
|
-
"403": {
|
|
15366
|
-
"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.",
|
|
15367
|
-
"content": {
|
|
15368
|
-
"application/json": {
|
|
15369
|
-
"schema": {
|
|
15370
|
-
"allOf": [
|
|
15371
|
-
{
|
|
15372
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
15373
|
-
},
|
|
15374
|
-
{
|
|
15375
|
-
"type": "object",
|
|
15376
|
-
"properties": {
|
|
15377
|
-
"error_code": {
|
|
15378
|
-
"type": "string",
|
|
15379
|
-
"enum": [
|
|
15380
|
-
"forbidden",
|
|
15381
|
-
"insufficient_scope",
|
|
15382
|
-
"user_suspended"
|
|
15383
|
-
]
|
|
15384
|
-
}
|
|
15385
|
-
}
|
|
15386
|
-
}
|
|
15387
|
-
]
|
|
15388
|
-
}
|
|
15389
|
-
}
|
|
15390
|
-
}
|
|
15391
|
-
},
|
|
15392
|
-
"404": {
|
|
15393
|
-
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
15394
|
-
"content": {
|
|
15395
|
-
"application/json": {
|
|
15396
|
-
"schema": {
|
|
15397
|
-
"allOf": [
|
|
15398
|
-
{
|
|
15399
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
15400
|
-
},
|
|
15401
|
-
{
|
|
15402
|
-
"type": "object",
|
|
15403
|
-
"properties": {
|
|
15404
|
-
"error_code": {
|
|
15405
|
-
"type": "string",
|
|
15406
|
-
"enum": [
|
|
15407
|
-
"account_not_found"
|
|
15408
|
-
]
|
|
15409
|
-
}
|
|
15410
|
-
}
|
|
15411
|
-
}
|
|
15412
|
-
]
|
|
15413
|
-
}
|
|
15414
|
-
}
|
|
15415
|
-
}
|
|
15416
|
-
},
|
|
15417
|
-
"429": {
|
|
15418
|
-
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
15419
|
-
"content": {
|
|
15420
|
-
"application/json": {
|
|
15421
|
-
"schema": {
|
|
15422
|
-
"allOf": [
|
|
15423
|
-
{
|
|
15424
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
15425
|
-
},
|
|
15426
|
-
{
|
|
15427
|
-
"type": "object",
|
|
15428
|
-
"properties": {
|
|
15429
|
-
"error_code": {
|
|
15430
|
-
"type": "string",
|
|
15431
|
-
"enum": [
|
|
15432
|
-
"too_many_requests"
|
|
15433
|
-
]
|
|
15434
|
-
}
|
|
15435
|
-
}
|
|
15436
|
-
}
|
|
15437
|
-
]
|
|
15438
|
-
}
|
|
15439
|
-
}
|
|
15440
|
-
}
|
|
15441
|
-
},
|
|
15442
|
-
"500": {
|
|
15443
|
-
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
15444
|
-
"content": {
|
|
15445
|
-
"application/json": {
|
|
15446
|
-
"schema": {
|
|
15447
|
-
"allOf": [
|
|
15448
|
-
{
|
|
15449
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
15450
|
-
},
|
|
15451
|
-
{
|
|
15452
|
-
"type": "object",
|
|
15453
|
-
"properties": {
|
|
15454
|
-
"error_code": {
|
|
15455
|
-
"type": "string",
|
|
15456
|
-
"enum": [
|
|
15457
|
-
"internal_error"
|
|
15458
|
-
]
|
|
15459
|
-
}
|
|
15460
|
-
}
|
|
15461
|
-
}
|
|
15462
|
-
]
|
|
15463
|
-
}
|
|
15464
|
-
}
|
|
15465
|
-
}
|
|
15466
|
-
}
|
|
15467
|
-
}
|
|
15468
|
-
}
|
|
15469
|
-
},
|
|
15470
|
-
"/connection/{connection_id}": {
|
|
15471
|
-
"get": {
|
|
15472
|
-
"operationId": "connection/get",
|
|
15473
|
-
"summary": "Get Connection",
|
|
15474
|
-
"tags": [
|
|
15475
|
-
"connection"
|
|
15476
|
-
],
|
|
15477
|
-
"description": "Get Connection",
|
|
15478
|
-
"parameters": [
|
|
15479
|
-
{
|
|
15480
|
-
"schema": {
|
|
15481
|
-
"type": "string"
|
|
15482
|
-
},
|
|
15483
|
-
"in": "path",
|
|
15484
|
-
"name": "connection_id",
|
|
15485
|
-
"required": true
|
|
15486
|
-
}
|
|
15487
|
-
],
|
|
15488
|
-
"security": [
|
|
15489
|
-
{
|
|
15490
|
-
"bearerAuth": []
|
|
15491
|
-
}
|
|
15492
|
-
],
|
|
15493
|
-
"responses": {
|
|
15494
|
-
"200": {
|
|
15495
|
-
"description": "Connection",
|
|
15496
|
-
"content": {
|
|
15497
|
-
"application/json": {
|
|
15498
|
-
"schema": {
|
|
15499
|
-
"type": "object",
|
|
15500
|
-
"required": [
|
|
15501
|
-
"id",
|
|
15502
|
-
"connection_name",
|
|
15503
|
-
"connection_type",
|
|
15504
|
-
"authorize_url",
|
|
15505
|
-
"token_url",
|
|
15506
|
-
"userinfo_url",
|
|
15507
|
-
"client_id",
|
|
15508
|
-
"client_secret",
|
|
15509
|
-
"issuer",
|
|
15510
|
-
"jwks_url",
|
|
15511
|
-
"response_type",
|
|
15512
|
-
"enabled",
|
|
15513
|
-
"enabled_clients",
|
|
15514
|
-
"scope",
|
|
15515
|
-
"authorize_params",
|
|
15516
|
-
"is_using_default_credentials",
|
|
15517
|
-
"account",
|
|
15518
|
-
"createdAt"
|
|
15519
|
-
],
|
|
15520
|
-
"properties": {
|
|
15521
|
-
"id": {
|
|
15522
|
-
"type": "string",
|
|
15523
|
-
"description": "Connection ID"
|
|
15524
|
-
},
|
|
15525
|
-
"connection_name": {
|
|
15526
|
-
"type": "string"
|
|
15527
|
-
},
|
|
15528
|
-
"connection_type": {
|
|
15529
|
-
"enum": [
|
|
15530
|
-
"database",
|
|
15531
|
-
"custom",
|
|
15532
|
-
"github",
|
|
15533
|
-
"figma",
|
|
15534
|
-
"google_oauth2",
|
|
15535
|
-
"microsoft",
|
|
15536
|
-
"oidc",
|
|
15537
|
-
"passwordless_email"
|
|
15538
|
-
]
|
|
15539
|
-
},
|
|
15540
|
-
"authorize_url": {
|
|
15541
|
-
"type": "string",
|
|
15542
|
-
"default": null
|
|
15543
|
-
},
|
|
15544
|
-
"token_url": {
|
|
15545
|
-
"type": "string",
|
|
15546
|
-
"default": null
|
|
15547
|
-
},
|
|
15548
|
-
"userinfo_url": {
|
|
15549
|
-
"type": "string",
|
|
15550
|
-
"default": null
|
|
15551
|
-
},
|
|
15552
|
-
"client_id": {
|
|
15553
|
-
"type": "string",
|
|
15554
|
-
"default": null
|
|
15555
|
-
},
|
|
15556
|
-
"client_secret": {
|
|
15557
|
-
"type": "string",
|
|
15558
|
-
"default": null
|
|
15559
|
-
},
|
|
15560
|
-
"issuer": {
|
|
15561
|
-
"type": "string",
|
|
15562
|
-
"default": null
|
|
15563
|
-
},
|
|
15564
|
-
"jwks_url": {
|
|
15565
|
-
"type": "string",
|
|
15566
|
-
"default": null
|
|
15567
|
-
},
|
|
15568
|
-
"response_type": {
|
|
15242
|
+
"organization": {
|
|
15569
15243
|
"type": "string",
|
|
15570
|
-
"
|
|
15571
|
-
|
|
15572
|
-
"enabled": {
|
|
15573
|
-
"type": "boolean"
|
|
15244
|
+
"description": "The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan.",
|
|
15245
|
+
"nullable": true
|
|
15574
15246
|
},
|
|
15575
15247
|
"enabled_clients": {
|
|
15576
15248
|
"type": "array",
|
|
@@ -15736,7 +15408,7 @@
|
|
|
15736
15408
|
}
|
|
15737
15409
|
},
|
|
15738
15410
|
"400": {
|
|
15739
|
-
"description": "`
|
|
15411
|
+
"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.",
|
|
15740
15412
|
"content": {
|
|
15741
15413
|
"application/json": {
|
|
15742
15414
|
"schema": {
|
|
@@ -15750,8 +15422,7 @@
|
|
|
15750
15422
|
"error_code": {
|
|
15751
15423
|
"type": "string",
|
|
15752
15424
|
"enum": [
|
|
15753
|
-
"
|
|
15754
|
-
"invalid_expand",
|
|
15425
|
+
"already_exists",
|
|
15755
15426
|
"validation_error"
|
|
15756
15427
|
]
|
|
15757
15428
|
}
|
|
@@ -15815,7 +15486,7 @@
|
|
|
15815
15486
|
}
|
|
15816
15487
|
},
|
|
15817
15488
|
"404": {
|
|
15818
|
-
"description": "`
|
|
15489
|
+
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
15819
15490
|
"content": {
|
|
15820
15491
|
"application/json": {
|
|
15821
15492
|
"schema": {
|
|
@@ -15829,7 +15500,6 @@
|
|
|
15829
15500
|
"error_code": {
|
|
15830
15501
|
"type": "string",
|
|
15831
15502
|
"enum": [
|
|
15832
|
-
"not_found",
|
|
15833
15503
|
"account_not_found"
|
|
15834
15504
|
]
|
|
15835
15505
|
}
|
|
@@ -15891,197 +15561,16 @@
|
|
|
15891
15561
|
}
|
|
15892
15562
|
}
|
|
15893
15563
|
}
|
|
15894
|
-
}
|
|
15895
|
-
|
|
15896
|
-
|
|
15897
|
-
|
|
15564
|
+
}
|
|
15565
|
+
},
|
|
15566
|
+
"/connection/{connection_id}": {
|
|
15567
|
+
"get": {
|
|
15568
|
+
"operationId": "connection/get",
|
|
15569
|
+
"summary": "Get Connection",
|
|
15898
15570
|
"tags": [
|
|
15899
15571
|
"connection"
|
|
15900
15572
|
],
|
|
15901
|
-
"description": "
|
|
15902
|
-
"requestBody": {
|
|
15903
|
-
"required": true,
|
|
15904
|
-
"content": {
|
|
15905
|
-
"application/json": {
|
|
15906
|
-
"schema": {
|
|
15907
|
-
"type": "object",
|
|
15908
|
-
"properties": {
|
|
15909
|
-
"connection_name": {
|
|
15910
|
-
"type": "string"
|
|
15911
|
-
},
|
|
15912
|
-
"enabled": {
|
|
15913
|
-
"type": "boolean"
|
|
15914
|
-
},
|
|
15915
|
-
"enabled_clients": {
|
|
15916
|
-
"type": "array",
|
|
15917
|
-
"items": {
|
|
15918
|
-
"type": "string"
|
|
15919
|
-
}
|
|
15920
|
-
},
|
|
15921
|
-
"scope": {
|
|
15922
|
-
"type": "array",
|
|
15923
|
-
"items": {
|
|
15924
|
-
"type": "string"
|
|
15925
|
-
}
|
|
15926
|
-
},
|
|
15927
|
-
"client_id": {
|
|
15928
|
-
"type": "string"
|
|
15929
|
-
},
|
|
15930
|
-
"client_secret": {
|
|
15931
|
-
"type": "string"
|
|
15932
|
-
},
|
|
15933
|
-
"issuer": {
|
|
15934
|
-
"type": "string"
|
|
15935
|
-
},
|
|
15936
|
-
"authorize_url": {
|
|
15937
|
-
"type": "string"
|
|
15938
|
-
},
|
|
15939
|
-
"token_url": {
|
|
15940
|
-
"type": "string"
|
|
15941
|
-
},
|
|
15942
|
-
"userinfo_url": {
|
|
15943
|
-
"type": "string"
|
|
15944
|
-
},
|
|
15945
|
-
"jwks_url": {
|
|
15946
|
-
"type": "string"
|
|
15947
|
-
},
|
|
15948
|
-
"response_type": {
|
|
15949
|
-
"type": "string"
|
|
15950
|
-
},
|
|
15951
|
-
"authorize_params": {
|
|
15952
|
-
"type": "object",
|
|
15953
|
-
"description": "Authorize params",
|
|
15954
|
-
"default": {},
|
|
15955
|
-
"additionalProperties": {
|
|
15956
|
-
"type": "string"
|
|
15957
|
-
}
|
|
15958
|
-
},
|
|
15959
|
-
"claims_mapping": {
|
|
15960
|
-
"type": "object",
|
|
15961
|
-
"additionalProperties": {
|
|
15962
|
-
"type": "string"
|
|
15963
|
-
}
|
|
15964
|
-
},
|
|
15965
|
-
"email_oauth_sync_policy": {
|
|
15966
|
-
"anyOf": [
|
|
15967
|
-
{
|
|
15968
|
-
"type": "string",
|
|
15969
|
-
"enum": [
|
|
15970
|
-
"preserve_manual"
|
|
15971
|
-
]
|
|
15972
|
-
},
|
|
15973
|
-
{
|
|
15974
|
-
"type": "string",
|
|
15975
|
-
"enum": [
|
|
15976
|
-
"always_sync"
|
|
15977
|
-
]
|
|
15978
|
-
},
|
|
15979
|
-
{
|
|
15980
|
-
"type": "null"
|
|
15981
|
-
}
|
|
15982
|
-
]
|
|
15983
|
-
},
|
|
15984
|
-
"password_policy": {
|
|
15985
|
-
"anyOf": [
|
|
15986
|
-
{
|
|
15987
|
-
"type": "object",
|
|
15988
|
-
"required": [
|
|
15989
|
-
"level"
|
|
15990
|
-
],
|
|
15991
|
-
"properties": {
|
|
15992
|
-
"level": {
|
|
15993
|
-
"anyOf": [
|
|
15994
|
-
{
|
|
15995
|
-
"type": "string",
|
|
15996
|
-
"enum": [
|
|
15997
|
-
"none"
|
|
15998
|
-
]
|
|
15999
|
-
},
|
|
16000
|
-
{
|
|
16001
|
-
"type": "string",
|
|
16002
|
-
"enum": [
|
|
16003
|
-
"low"
|
|
16004
|
-
]
|
|
16005
|
-
},
|
|
16006
|
-
{
|
|
16007
|
-
"type": "string",
|
|
16008
|
-
"enum": [
|
|
16009
|
-
"fair"
|
|
16010
|
-
]
|
|
16011
|
-
},
|
|
16012
|
-
{
|
|
16013
|
-
"type": "string",
|
|
16014
|
-
"enum": [
|
|
16015
|
-
"good"
|
|
16016
|
-
]
|
|
16017
|
-
},
|
|
16018
|
-
{
|
|
16019
|
-
"type": "string",
|
|
16020
|
-
"enum": [
|
|
16021
|
-
"excellent"
|
|
16022
|
-
]
|
|
16023
|
-
}
|
|
16024
|
-
]
|
|
16025
|
-
},
|
|
16026
|
-
"min_length": {
|
|
16027
|
-
"type": "integer",
|
|
16028
|
-
"minimum": 1,
|
|
16029
|
-
"maximum": 128
|
|
16030
|
-
},
|
|
16031
|
-
"require_lowercase": {
|
|
16032
|
-
"type": "boolean"
|
|
16033
|
-
},
|
|
16034
|
-
"require_uppercase": {
|
|
16035
|
-
"type": "boolean"
|
|
16036
|
-
},
|
|
16037
|
-
"require_number": {
|
|
16038
|
-
"type": "boolean"
|
|
16039
|
-
},
|
|
16040
|
-
"require_special": {
|
|
16041
|
-
"type": "boolean"
|
|
16042
|
-
}
|
|
16043
|
-
},
|
|
16044
|
-
"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."
|
|
16045
|
-
},
|
|
16046
|
-
{
|
|
16047
|
-
"type": "null"
|
|
16048
|
-
}
|
|
16049
|
-
]
|
|
16050
|
-
},
|
|
16051
|
-
"disable_signup": {
|
|
16052
|
-
"type": "boolean"
|
|
16053
|
-
},
|
|
16054
|
-
"login_identifier": {
|
|
16055
|
-
"anyOf": [
|
|
16056
|
-
{
|
|
16057
|
-
"type": "string",
|
|
16058
|
-
"enum": [
|
|
16059
|
-
"email"
|
|
16060
|
-
]
|
|
16061
|
-
},
|
|
16062
|
-
{
|
|
16063
|
-
"type": "string",
|
|
16064
|
-
"enum": [
|
|
16065
|
-
"username"
|
|
16066
|
-
]
|
|
16067
|
-
},
|
|
16068
|
-
{
|
|
16069
|
-
"type": "string",
|
|
16070
|
-
"enum": [
|
|
16071
|
-
"email_or_username"
|
|
16072
|
-
]
|
|
16073
|
-
}
|
|
16074
|
-
],
|
|
16075
|
-
"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."
|
|
16076
|
-
}
|
|
16077
|
-
},
|
|
16078
|
-
"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.",
|
|
16079
|
-
"additionalProperties": false
|
|
16080
|
-
}
|
|
16081
|
-
}
|
|
16082
|
-
},
|
|
16083
|
-
"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."
|
|
16084
|
-
},
|
|
15573
|
+
"description": "Get Connection",
|
|
16085
15574
|
"parameters": [
|
|
16086
15575
|
{
|
|
16087
15576
|
"schema": {
|
|
@@ -16179,6 +15668,11 @@
|
|
|
16179
15668
|
"enabled": {
|
|
16180
15669
|
"type": "boolean"
|
|
16181
15670
|
},
|
|
15671
|
+
"organization": {
|
|
15672
|
+
"type": "string",
|
|
15673
|
+
"description": "The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan.",
|
|
15674
|
+
"nullable": true
|
|
15675
|
+
},
|
|
16182
15676
|
"enabled_clients": {
|
|
16183
15677
|
"type": "array",
|
|
16184
15678
|
"items": {
|
|
@@ -16343,7 +15837,7 @@
|
|
|
16343
15837
|
}
|
|
16344
15838
|
},
|
|
16345
15839
|
"400": {
|
|
16346
|
-
"description": "`invalid_id` — The id in the path is not a valid id for this resource.\n\n`
|
|
15840
|
+
"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.",
|
|
16347
15841
|
"content": {
|
|
16348
15842
|
"application/json": {
|
|
16349
15843
|
"schema": {
|
|
@@ -16358,7 +15852,7 @@
|
|
|
16358
15852
|
"type": "string",
|
|
16359
15853
|
"enum": [
|
|
16360
15854
|
"invalid_id",
|
|
16361
|
-
"
|
|
15855
|
+
"invalid_expand",
|
|
16362
15856
|
"validation_error"
|
|
16363
15857
|
]
|
|
16364
15858
|
}
|
|
@@ -16499,13 +15993,200 @@
|
|
|
16499
15993
|
}
|
|
16500
15994
|
}
|
|
16501
15995
|
},
|
|
16502
|
-
"
|
|
16503
|
-
"operationId": "connection/
|
|
16504
|
-
"summary": "
|
|
15996
|
+
"post": {
|
|
15997
|
+
"operationId": "connection/update",
|
|
15998
|
+
"summary": "Update Connection",
|
|
16505
15999
|
"tags": [
|
|
16506
16000
|
"connection"
|
|
16507
16001
|
],
|
|
16508
|
-
"description": "
|
|
16002
|
+
"description": "Update Connection",
|
|
16003
|
+
"requestBody": {
|
|
16004
|
+
"required": true,
|
|
16005
|
+
"content": {
|
|
16006
|
+
"application/json": {
|
|
16007
|
+
"schema": {
|
|
16008
|
+
"type": "object",
|
|
16009
|
+
"properties": {
|
|
16010
|
+
"connection_name": {
|
|
16011
|
+
"type": "string"
|
|
16012
|
+
},
|
|
16013
|
+
"enabled": {
|
|
16014
|
+
"type": "boolean"
|
|
16015
|
+
},
|
|
16016
|
+
"enabled_clients": {
|
|
16017
|
+
"type": "array",
|
|
16018
|
+
"items": {
|
|
16019
|
+
"type": "string"
|
|
16020
|
+
}
|
|
16021
|
+
},
|
|
16022
|
+
"scope": {
|
|
16023
|
+
"type": "array",
|
|
16024
|
+
"items": {
|
|
16025
|
+
"type": "string"
|
|
16026
|
+
}
|
|
16027
|
+
},
|
|
16028
|
+
"client_id": {
|
|
16029
|
+
"type": "string"
|
|
16030
|
+
},
|
|
16031
|
+
"client_secret": {
|
|
16032
|
+
"type": "string"
|
|
16033
|
+
},
|
|
16034
|
+
"issuer": {
|
|
16035
|
+
"type": "string"
|
|
16036
|
+
},
|
|
16037
|
+
"authorize_url": {
|
|
16038
|
+
"type": "string"
|
|
16039
|
+
},
|
|
16040
|
+
"token_url": {
|
|
16041
|
+
"type": "string"
|
|
16042
|
+
},
|
|
16043
|
+
"userinfo_url": {
|
|
16044
|
+
"type": "string"
|
|
16045
|
+
},
|
|
16046
|
+
"jwks_url": {
|
|
16047
|
+
"type": "string"
|
|
16048
|
+
},
|
|
16049
|
+
"response_type": {
|
|
16050
|
+
"type": "string"
|
|
16051
|
+
},
|
|
16052
|
+
"authorize_params": {
|
|
16053
|
+
"type": "object",
|
|
16054
|
+
"description": "Authorize params",
|
|
16055
|
+
"default": {},
|
|
16056
|
+
"additionalProperties": {
|
|
16057
|
+
"type": "string"
|
|
16058
|
+
}
|
|
16059
|
+
},
|
|
16060
|
+
"claims_mapping": {
|
|
16061
|
+
"type": "object",
|
|
16062
|
+
"additionalProperties": {
|
|
16063
|
+
"type": "string"
|
|
16064
|
+
}
|
|
16065
|
+
},
|
|
16066
|
+
"email_oauth_sync_policy": {
|
|
16067
|
+
"anyOf": [
|
|
16068
|
+
{
|
|
16069
|
+
"type": "string",
|
|
16070
|
+
"enum": [
|
|
16071
|
+
"preserve_manual"
|
|
16072
|
+
]
|
|
16073
|
+
},
|
|
16074
|
+
{
|
|
16075
|
+
"type": "string",
|
|
16076
|
+
"enum": [
|
|
16077
|
+
"always_sync"
|
|
16078
|
+
]
|
|
16079
|
+
},
|
|
16080
|
+
{
|
|
16081
|
+
"type": "null"
|
|
16082
|
+
}
|
|
16083
|
+
]
|
|
16084
|
+
},
|
|
16085
|
+
"password_policy": {
|
|
16086
|
+
"anyOf": [
|
|
16087
|
+
{
|
|
16088
|
+
"type": "object",
|
|
16089
|
+
"required": [
|
|
16090
|
+
"level"
|
|
16091
|
+
],
|
|
16092
|
+
"properties": {
|
|
16093
|
+
"level": {
|
|
16094
|
+
"anyOf": [
|
|
16095
|
+
{
|
|
16096
|
+
"type": "string",
|
|
16097
|
+
"enum": [
|
|
16098
|
+
"none"
|
|
16099
|
+
]
|
|
16100
|
+
},
|
|
16101
|
+
{
|
|
16102
|
+
"type": "string",
|
|
16103
|
+
"enum": [
|
|
16104
|
+
"low"
|
|
16105
|
+
]
|
|
16106
|
+
},
|
|
16107
|
+
{
|
|
16108
|
+
"type": "string",
|
|
16109
|
+
"enum": [
|
|
16110
|
+
"fair"
|
|
16111
|
+
]
|
|
16112
|
+
},
|
|
16113
|
+
{
|
|
16114
|
+
"type": "string",
|
|
16115
|
+
"enum": [
|
|
16116
|
+
"good"
|
|
16117
|
+
]
|
|
16118
|
+
},
|
|
16119
|
+
{
|
|
16120
|
+
"type": "string",
|
|
16121
|
+
"enum": [
|
|
16122
|
+
"excellent"
|
|
16123
|
+
]
|
|
16124
|
+
}
|
|
16125
|
+
]
|
|
16126
|
+
},
|
|
16127
|
+
"min_length": {
|
|
16128
|
+
"type": "integer",
|
|
16129
|
+
"minimum": 1,
|
|
16130
|
+
"maximum": 128
|
|
16131
|
+
},
|
|
16132
|
+
"require_lowercase": {
|
|
16133
|
+
"type": "boolean"
|
|
16134
|
+
},
|
|
16135
|
+
"require_uppercase": {
|
|
16136
|
+
"type": "boolean"
|
|
16137
|
+
},
|
|
16138
|
+
"require_number": {
|
|
16139
|
+
"type": "boolean"
|
|
16140
|
+
},
|
|
16141
|
+
"require_special": {
|
|
16142
|
+
"type": "boolean"
|
|
16143
|
+
}
|
|
16144
|
+
},
|
|
16145
|
+
"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."
|
|
16146
|
+
},
|
|
16147
|
+
{
|
|
16148
|
+
"type": "null"
|
|
16149
|
+
}
|
|
16150
|
+
]
|
|
16151
|
+
},
|
|
16152
|
+
"disable_signup": {
|
|
16153
|
+
"type": "boolean"
|
|
16154
|
+
},
|
|
16155
|
+
"login_identifier": {
|
|
16156
|
+
"anyOf": [
|
|
16157
|
+
{
|
|
16158
|
+
"type": "string",
|
|
16159
|
+
"enum": [
|
|
16160
|
+
"email"
|
|
16161
|
+
]
|
|
16162
|
+
},
|
|
16163
|
+
{
|
|
16164
|
+
"type": "string",
|
|
16165
|
+
"enum": [
|
|
16166
|
+
"username"
|
|
16167
|
+
]
|
|
16168
|
+
},
|
|
16169
|
+
{
|
|
16170
|
+
"type": "string",
|
|
16171
|
+
"enum": [
|
|
16172
|
+
"email_or_username"
|
|
16173
|
+
]
|
|
16174
|
+
}
|
|
16175
|
+
],
|
|
16176
|
+
"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."
|
|
16177
|
+
},
|
|
16178
|
+
"organization": {
|
|
16179
|
+
"type": "string",
|
|
16180
|
+
"nullable": true
|
|
16181
|
+
}
|
|
16182
|
+
},
|
|
16183
|
+
"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.",
|
|
16184
|
+
"additionalProperties": false
|
|
16185
|
+
}
|
|
16186
|
+
}
|
|
16187
|
+
},
|
|
16188
|
+
"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."
|
|
16189
|
+
},
|
|
16509
16190
|
"parameters": [
|
|
16510
16191
|
{
|
|
16511
16192
|
"schema": {
|
|
@@ -16603,6 +16284,440 @@
|
|
|
16603
16284
|
"enabled": {
|
|
16604
16285
|
"type": "boolean"
|
|
16605
16286
|
},
|
|
16287
|
+
"organization": {
|
|
16288
|
+
"type": "string",
|
|
16289
|
+
"description": "The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan.",
|
|
16290
|
+
"nullable": true
|
|
16291
|
+
},
|
|
16292
|
+
"enabled_clients": {
|
|
16293
|
+
"type": "array",
|
|
16294
|
+
"items": {
|
|
16295
|
+
"type": "string"
|
|
16296
|
+
},
|
|
16297
|
+
"default": null,
|
|
16298
|
+
"nullable": true
|
|
16299
|
+
},
|
|
16300
|
+
"scope": {
|
|
16301
|
+
"type": "array",
|
|
16302
|
+
"items": {
|
|
16303
|
+
"type": "string"
|
|
16304
|
+
},
|
|
16305
|
+
"default": []
|
|
16306
|
+
},
|
|
16307
|
+
"authorize_params": {
|
|
16308
|
+
"type": "object",
|
|
16309
|
+
"description": "Authorize params",
|
|
16310
|
+
"default": {},
|
|
16311
|
+
"additionalProperties": {
|
|
16312
|
+
"type": "string"
|
|
16313
|
+
}
|
|
16314
|
+
},
|
|
16315
|
+
"claims_mapping": {
|
|
16316
|
+
"type": "object",
|
|
16317
|
+
"additionalProperties": {
|
|
16318
|
+
"type": "string"
|
|
16319
|
+
}
|
|
16320
|
+
},
|
|
16321
|
+
"is_using_default_credentials": {
|
|
16322
|
+
"type": "boolean",
|
|
16323
|
+
"readOnly": true,
|
|
16324
|
+
"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."
|
|
16325
|
+
},
|
|
16326
|
+
"email_oauth_sync_policy": {
|
|
16327
|
+
"anyOf": [
|
|
16328
|
+
{
|
|
16329
|
+
"type": "string",
|
|
16330
|
+
"enum": [
|
|
16331
|
+
"preserve_manual"
|
|
16332
|
+
]
|
|
16333
|
+
},
|
|
16334
|
+
{
|
|
16335
|
+
"type": "string",
|
|
16336
|
+
"enum": [
|
|
16337
|
+
"always_sync"
|
|
16338
|
+
]
|
|
16339
|
+
}
|
|
16340
|
+
],
|
|
16341
|
+
"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."
|
|
16342
|
+
},
|
|
16343
|
+
"password_policy": {
|
|
16344
|
+
"type": "object",
|
|
16345
|
+
"required": [
|
|
16346
|
+
"level"
|
|
16347
|
+
],
|
|
16348
|
+
"properties": {
|
|
16349
|
+
"level": {
|
|
16350
|
+
"anyOf": [
|
|
16351
|
+
{
|
|
16352
|
+
"type": "string",
|
|
16353
|
+
"enum": [
|
|
16354
|
+
"none"
|
|
16355
|
+
]
|
|
16356
|
+
},
|
|
16357
|
+
{
|
|
16358
|
+
"type": "string",
|
|
16359
|
+
"enum": [
|
|
16360
|
+
"low"
|
|
16361
|
+
]
|
|
16362
|
+
},
|
|
16363
|
+
{
|
|
16364
|
+
"type": "string",
|
|
16365
|
+
"enum": [
|
|
16366
|
+
"fair"
|
|
16367
|
+
]
|
|
16368
|
+
},
|
|
16369
|
+
{
|
|
16370
|
+
"type": "string",
|
|
16371
|
+
"enum": [
|
|
16372
|
+
"good"
|
|
16373
|
+
]
|
|
16374
|
+
},
|
|
16375
|
+
{
|
|
16376
|
+
"type": "string",
|
|
16377
|
+
"enum": [
|
|
16378
|
+
"excellent"
|
|
16379
|
+
]
|
|
16380
|
+
}
|
|
16381
|
+
]
|
|
16382
|
+
},
|
|
16383
|
+
"min_length": {
|
|
16384
|
+
"type": "integer",
|
|
16385
|
+
"minimum": 1,
|
|
16386
|
+
"maximum": 128
|
|
16387
|
+
},
|
|
16388
|
+
"require_lowercase": {
|
|
16389
|
+
"type": "boolean"
|
|
16390
|
+
},
|
|
16391
|
+
"require_uppercase": {
|
|
16392
|
+
"type": "boolean"
|
|
16393
|
+
},
|
|
16394
|
+
"require_number": {
|
|
16395
|
+
"type": "boolean"
|
|
16396
|
+
},
|
|
16397
|
+
"require_special": {
|
|
16398
|
+
"type": "boolean"
|
|
16399
|
+
}
|
|
16400
|
+
},
|
|
16401
|
+
"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."
|
|
16402
|
+
},
|
|
16403
|
+
"login_identifier": {
|
|
16404
|
+
"anyOf": [
|
|
16405
|
+
{
|
|
16406
|
+
"type": "string",
|
|
16407
|
+
"enum": [
|
|
16408
|
+
"email"
|
|
16409
|
+
]
|
|
16410
|
+
},
|
|
16411
|
+
{
|
|
16412
|
+
"type": "string",
|
|
16413
|
+
"enum": [
|
|
16414
|
+
"username"
|
|
16415
|
+
]
|
|
16416
|
+
},
|
|
16417
|
+
{
|
|
16418
|
+
"type": "string",
|
|
16419
|
+
"enum": [
|
|
16420
|
+
"email_or_username"
|
|
16421
|
+
]
|
|
16422
|
+
}
|
|
16423
|
+
],
|
|
16424
|
+
"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."
|
|
16425
|
+
},
|
|
16426
|
+
"disable_signup": {
|
|
16427
|
+
"type": "boolean",
|
|
16428
|
+
"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`."
|
|
16429
|
+
},
|
|
16430
|
+
"account": {
|
|
16431
|
+
"type": "string",
|
|
16432
|
+
"description": "Object is related with this account"
|
|
16433
|
+
},
|
|
16434
|
+
"metadata": {
|
|
16435
|
+
"type": "object",
|
|
16436
|
+
"properties": {},
|
|
16437
|
+
"additionalProperties": true,
|
|
16438
|
+
"description": "ConnectionMetadata",
|
|
16439
|
+
"default": {}
|
|
16440
|
+
},
|
|
16441
|
+
"createdAt": {
|
|
16442
|
+
"type": "string",
|
|
16443
|
+
"description": "Connection creation date"
|
|
16444
|
+
},
|
|
16445
|
+
"updatedAt": {
|
|
16446
|
+
"type": "string",
|
|
16447
|
+
"description": "Connection updated date"
|
|
16448
|
+
}
|
|
16449
|
+
},
|
|
16450
|
+
"description": "Connection"
|
|
16451
|
+
}
|
|
16452
|
+
}
|
|
16453
|
+
}
|
|
16454
|
+
},
|
|
16455
|
+
"400": {
|
|
16456
|
+
"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.",
|
|
16457
|
+
"content": {
|
|
16458
|
+
"application/json": {
|
|
16459
|
+
"schema": {
|
|
16460
|
+
"allOf": [
|
|
16461
|
+
{
|
|
16462
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
16463
|
+
},
|
|
16464
|
+
{
|
|
16465
|
+
"type": "object",
|
|
16466
|
+
"properties": {
|
|
16467
|
+
"error_code": {
|
|
16468
|
+
"type": "string",
|
|
16469
|
+
"enum": [
|
|
16470
|
+
"invalid_id",
|
|
16471
|
+
"already_exists",
|
|
16472
|
+
"validation_error"
|
|
16473
|
+
]
|
|
16474
|
+
}
|
|
16475
|
+
}
|
|
16476
|
+
}
|
|
16477
|
+
]
|
|
16478
|
+
}
|
|
16479
|
+
}
|
|
16480
|
+
}
|
|
16481
|
+
},
|
|
16482
|
+
"401": {
|
|
16483
|
+
"description": "`unauthorized` — The request carries no valid credentials.",
|
|
16484
|
+
"content": {
|
|
16485
|
+
"application/json": {
|
|
16486
|
+
"schema": {
|
|
16487
|
+
"allOf": [
|
|
16488
|
+
{
|
|
16489
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
16490
|
+
},
|
|
16491
|
+
{
|
|
16492
|
+
"type": "object",
|
|
16493
|
+
"properties": {
|
|
16494
|
+
"error_code": {
|
|
16495
|
+
"type": "string",
|
|
16496
|
+
"enum": [
|
|
16497
|
+
"unauthorized"
|
|
16498
|
+
]
|
|
16499
|
+
}
|
|
16500
|
+
}
|
|
16501
|
+
}
|
|
16502
|
+
]
|
|
16503
|
+
}
|
|
16504
|
+
}
|
|
16505
|
+
}
|
|
16506
|
+
},
|
|
16507
|
+
"403": {
|
|
16508
|
+
"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.",
|
|
16509
|
+
"content": {
|
|
16510
|
+
"application/json": {
|
|
16511
|
+
"schema": {
|
|
16512
|
+
"allOf": [
|
|
16513
|
+
{
|
|
16514
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
16515
|
+
},
|
|
16516
|
+
{
|
|
16517
|
+
"type": "object",
|
|
16518
|
+
"properties": {
|
|
16519
|
+
"error_code": {
|
|
16520
|
+
"type": "string",
|
|
16521
|
+
"enum": [
|
|
16522
|
+
"forbidden",
|
|
16523
|
+
"insufficient_scope",
|
|
16524
|
+
"user_suspended"
|
|
16525
|
+
]
|
|
16526
|
+
}
|
|
16527
|
+
}
|
|
16528
|
+
}
|
|
16529
|
+
]
|
|
16530
|
+
}
|
|
16531
|
+
}
|
|
16532
|
+
}
|
|
16533
|
+
},
|
|
16534
|
+
"404": {
|
|
16535
|
+
"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).",
|
|
16536
|
+
"content": {
|
|
16537
|
+
"application/json": {
|
|
16538
|
+
"schema": {
|
|
16539
|
+
"allOf": [
|
|
16540
|
+
{
|
|
16541
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
16542
|
+
},
|
|
16543
|
+
{
|
|
16544
|
+
"type": "object",
|
|
16545
|
+
"properties": {
|
|
16546
|
+
"error_code": {
|
|
16547
|
+
"type": "string",
|
|
16548
|
+
"enum": [
|
|
16549
|
+
"not_found",
|
|
16550
|
+
"account_not_found"
|
|
16551
|
+
]
|
|
16552
|
+
}
|
|
16553
|
+
}
|
|
16554
|
+
}
|
|
16555
|
+
]
|
|
16556
|
+
}
|
|
16557
|
+
}
|
|
16558
|
+
}
|
|
16559
|
+
},
|
|
16560
|
+
"429": {
|
|
16561
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
16562
|
+
"content": {
|
|
16563
|
+
"application/json": {
|
|
16564
|
+
"schema": {
|
|
16565
|
+
"allOf": [
|
|
16566
|
+
{
|
|
16567
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
16568
|
+
},
|
|
16569
|
+
{
|
|
16570
|
+
"type": "object",
|
|
16571
|
+
"properties": {
|
|
16572
|
+
"error_code": {
|
|
16573
|
+
"type": "string",
|
|
16574
|
+
"enum": [
|
|
16575
|
+
"too_many_requests"
|
|
16576
|
+
]
|
|
16577
|
+
}
|
|
16578
|
+
}
|
|
16579
|
+
}
|
|
16580
|
+
]
|
|
16581
|
+
}
|
|
16582
|
+
}
|
|
16583
|
+
}
|
|
16584
|
+
},
|
|
16585
|
+
"500": {
|
|
16586
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
16587
|
+
"content": {
|
|
16588
|
+
"application/json": {
|
|
16589
|
+
"schema": {
|
|
16590
|
+
"allOf": [
|
|
16591
|
+
{
|
|
16592
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
16593
|
+
},
|
|
16594
|
+
{
|
|
16595
|
+
"type": "object",
|
|
16596
|
+
"properties": {
|
|
16597
|
+
"error_code": {
|
|
16598
|
+
"type": "string",
|
|
16599
|
+
"enum": [
|
|
16600
|
+
"internal_error"
|
|
16601
|
+
]
|
|
16602
|
+
}
|
|
16603
|
+
}
|
|
16604
|
+
}
|
|
16605
|
+
]
|
|
16606
|
+
}
|
|
16607
|
+
}
|
|
16608
|
+
}
|
|
16609
|
+
}
|
|
16610
|
+
}
|
|
16611
|
+
},
|
|
16612
|
+
"delete": {
|
|
16613
|
+
"operationId": "connection/delete",
|
|
16614
|
+
"summary": "Delete Connection",
|
|
16615
|
+
"tags": [
|
|
16616
|
+
"connection"
|
|
16617
|
+
],
|
|
16618
|
+
"description": "Delete Connection",
|
|
16619
|
+
"parameters": [
|
|
16620
|
+
{
|
|
16621
|
+
"schema": {
|
|
16622
|
+
"type": "string"
|
|
16623
|
+
},
|
|
16624
|
+
"in": "path",
|
|
16625
|
+
"name": "connection_id",
|
|
16626
|
+
"required": true
|
|
16627
|
+
}
|
|
16628
|
+
],
|
|
16629
|
+
"security": [
|
|
16630
|
+
{
|
|
16631
|
+
"bearerAuth": []
|
|
16632
|
+
}
|
|
16633
|
+
],
|
|
16634
|
+
"responses": {
|
|
16635
|
+
"200": {
|
|
16636
|
+
"description": "Connection",
|
|
16637
|
+
"content": {
|
|
16638
|
+
"application/json": {
|
|
16639
|
+
"schema": {
|
|
16640
|
+
"type": "object",
|
|
16641
|
+
"required": [
|
|
16642
|
+
"id",
|
|
16643
|
+
"connection_name",
|
|
16644
|
+
"connection_type",
|
|
16645
|
+
"authorize_url",
|
|
16646
|
+
"token_url",
|
|
16647
|
+
"userinfo_url",
|
|
16648
|
+
"client_id",
|
|
16649
|
+
"client_secret",
|
|
16650
|
+
"issuer",
|
|
16651
|
+
"jwks_url",
|
|
16652
|
+
"response_type",
|
|
16653
|
+
"enabled",
|
|
16654
|
+
"enabled_clients",
|
|
16655
|
+
"scope",
|
|
16656
|
+
"authorize_params",
|
|
16657
|
+
"is_using_default_credentials",
|
|
16658
|
+
"account",
|
|
16659
|
+
"createdAt"
|
|
16660
|
+
],
|
|
16661
|
+
"properties": {
|
|
16662
|
+
"id": {
|
|
16663
|
+
"type": "string",
|
|
16664
|
+
"description": "Connection ID"
|
|
16665
|
+
},
|
|
16666
|
+
"connection_name": {
|
|
16667
|
+
"type": "string"
|
|
16668
|
+
},
|
|
16669
|
+
"connection_type": {
|
|
16670
|
+
"enum": [
|
|
16671
|
+
"database",
|
|
16672
|
+
"custom",
|
|
16673
|
+
"github",
|
|
16674
|
+
"figma",
|
|
16675
|
+
"google_oauth2",
|
|
16676
|
+
"microsoft",
|
|
16677
|
+
"oidc",
|
|
16678
|
+
"passwordless_email"
|
|
16679
|
+
]
|
|
16680
|
+
},
|
|
16681
|
+
"authorize_url": {
|
|
16682
|
+
"type": "string",
|
|
16683
|
+
"default": null
|
|
16684
|
+
},
|
|
16685
|
+
"token_url": {
|
|
16686
|
+
"type": "string",
|
|
16687
|
+
"default": null
|
|
16688
|
+
},
|
|
16689
|
+
"userinfo_url": {
|
|
16690
|
+
"type": "string",
|
|
16691
|
+
"default": null
|
|
16692
|
+
},
|
|
16693
|
+
"client_id": {
|
|
16694
|
+
"type": "string",
|
|
16695
|
+
"default": null
|
|
16696
|
+
},
|
|
16697
|
+
"client_secret": {
|
|
16698
|
+
"type": "string",
|
|
16699
|
+
"default": null
|
|
16700
|
+
},
|
|
16701
|
+
"issuer": {
|
|
16702
|
+
"type": "string",
|
|
16703
|
+
"default": null
|
|
16704
|
+
},
|
|
16705
|
+
"jwks_url": {
|
|
16706
|
+
"type": "string",
|
|
16707
|
+
"default": null
|
|
16708
|
+
},
|
|
16709
|
+
"response_type": {
|
|
16710
|
+
"type": "string",
|
|
16711
|
+
"default": null
|
|
16712
|
+
},
|
|
16713
|
+
"enabled": {
|
|
16714
|
+
"type": "boolean"
|
|
16715
|
+
},
|
|
16716
|
+
"organization": {
|
|
16717
|
+
"type": "string",
|
|
16718
|
+
"description": "The Organization whose identity provider this is (`organization_…`), or `null`. Only `oidc` connections. Reached by home realm discovery from the organization's verified email domains, and only accepts emails of those domains. Pro plan.",
|
|
16719
|
+
"nullable": true
|
|
16720
|
+
},
|
|
16606
16721
|
"enabled_clients": {
|
|
16607
16722
|
"type": "array",
|
|
16608
16723
|
"items": {
|
|
@@ -17339,6 +17454,45 @@
|
|
|
17339
17454
|
"properties": {
|
|
17340
17455
|
"ok": {
|
|
17341
17456
|
"type": "boolean"
|
|
17457
|
+
},
|
|
17458
|
+
"home_realm": {
|
|
17459
|
+
"type": "object",
|
|
17460
|
+
"required": [
|
|
17461
|
+
"connection_id",
|
|
17462
|
+
"organization"
|
|
17463
|
+
],
|
|
17464
|
+
"properties": {
|
|
17465
|
+
"connection_id": {
|
|
17466
|
+
"type": "string"
|
|
17467
|
+
},
|
|
17468
|
+
"organization": {
|
|
17469
|
+
"type": "object",
|
|
17470
|
+
"required": [
|
|
17471
|
+
"id",
|
|
17472
|
+
"name",
|
|
17473
|
+
"logo_url"
|
|
17474
|
+
],
|
|
17475
|
+
"properties": {
|
|
17476
|
+
"id": {
|
|
17477
|
+
"type": "string"
|
|
17478
|
+
},
|
|
17479
|
+
"name": {
|
|
17480
|
+
"type": "string"
|
|
17481
|
+
},
|
|
17482
|
+
"logo_url": {
|
|
17483
|
+
"anyOf": [
|
|
17484
|
+
{
|
|
17485
|
+
"type": "string"
|
|
17486
|
+
},
|
|
17487
|
+
{
|
|
17488
|
+
"type": "null"
|
|
17489
|
+
}
|
|
17490
|
+
]
|
|
17491
|
+
}
|
|
17492
|
+
}
|
|
17493
|
+
}
|
|
17494
|
+
},
|
|
17495
|
+
"description": "The identifier is an email of an organization's verified domain, and that organization has its own identity provider: continue with `/authorize?resume_state=<state>&connection=<connection_id>` instead of the method chooser (arch/auth/sso.md F3)."
|
|
17342
17496
|
}
|
|
17343
17497
|
}
|
|
17344
17498
|
}
|
|
@@ -35445,65 +35599,1272 @@
|
|
|
35445
35599
|
}
|
|
35446
35600
|
}
|
|
35447
35601
|
}
|
|
35448
|
-
}
|
|
35449
|
-
},
|
|
35450
|
-
"/organization": {
|
|
35451
|
-
"get": {
|
|
35452
|
-
"operationId": "organization/list",
|
|
35453
|
-
"summary": "List Organizations",
|
|
35602
|
+
}
|
|
35603
|
+
},
|
|
35604
|
+
"/organization": {
|
|
35605
|
+
"get": {
|
|
35606
|
+
"operationId": "organization/list",
|
|
35607
|
+
"summary": "List Organizations",
|
|
35608
|
+
"tags": [
|
|
35609
|
+
"organization"
|
|
35610
|
+
],
|
|
35611
|
+
"description": "List Organizations",
|
|
35612
|
+
"parameters": [
|
|
35613
|
+
{
|
|
35614
|
+
"schema": {
|
|
35615
|
+
"type": "number",
|
|
35616
|
+
"minimum": 1,
|
|
35617
|
+
"maximum": 200
|
|
35618
|
+
},
|
|
35619
|
+
"in": "query",
|
|
35620
|
+
"name": "pageSize",
|
|
35621
|
+
"required": false,
|
|
35622
|
+
"description": "Number of items per page (max 200)"
|
|
35623
|
+
},
|
|
35624
|
+
{
|
|
35625
|
+
"schema": {
|
|
35626
|
+
"type": "string"
|
|
35627
|
+
},
|
|
35628
|
+
"in": "query",
|
|
35629
|
+
"name": "cursor",
|
|
35630
|
+
"required": false,
|
|
35631
|
+
"description": "Cursor for next page"
|
|
35632
|
+
},
|
|
35633
|
+
{
|
|
35634
|
+
"schema": {
|
|
35635
|
+
"type": "string"
|
|
35636
|
+
},
|
|
35637
|
+
"in": "query",
|
|
35638
|
+
"name": "next",
|
|
35639
|
+
"required": false,
|
|
35640
|
+
"description": "Cursor returned by the previous page"
|
|
35641
|
+
},
|
|
35642
|
+
{
|
|
35643
|
+
"schema": {
|
|
35644
|
+
"type": "string"
|
|
35645
|
+
},
|
|
35646
|
+
"in": "query",
|
|
35647
|
+
"name": "query",
|
|
35648
|
+
"required": false,
|
|
35649
|
+
"description": "Filter using a FaableQL query"
|
|
35650
|
+
},
|
|
35651
|
+
{
|
|
35652
|
+
"schema": {
|
|
35653
|
+
"type": "string",
|
|
35654
|
+
"minLength": 1,
|
|
35655
|
+
"maxLength": 200
|
|
35656
|
+
},
|
|
35657
|
+
"in": "query",
|
|
35658
|
+
"name": "q",
|
|
35659
|
+
"required": false,
|
|
35660
|
+
"description": "Full-text search across: `name`, `slug`."
|
|
35661
|
+
}
|
|
35662
|
+
],
|
|
35663
|
+
"security": [
|
|
35664
|
+
{
|
|
35665
|
+
"bearerAuth": []
|
|
35666
|
+
}
|
|
35667
|
+
],
|
|
35668
|
+
"responses": {
|
|
35669
|
+
"200": {
|
|
35670
|
+
"description": "Default Response",
|
|
35671
|
+
"content": {
|
|
35672
|
+
"application/json": {
|
|
35673
|
+
"schema": {
|
|
35674
|
+
"type": "object",
|
|
35675
|
+
"required": [
|
|
35676
|
+
"next",
|
|
35677
|
+
"results"
|
|
35678
|
+
],
|
|
35679
|
+
"properties": {
|
|
35680
|
+
"next": {
|
|
35681
|
+
"anyOf": [
|
|
35682
|
+
{
|
|
35683
|
+
"type": "string"
|
|
35684
|
+
},
|
|
35685
|
+
{
|
|
35686
|
+
"type": "null"
|
|
35687
|
+
}
|
|
35688
|
+
]
|
|
35689
|
+
},
|
|
35690
|
+
"results": {
|
|
35691
|
+
"type": "array",
|
|
35692
|
+
"items": {
|
|
35693
|
+
"$ref": "#/components/schemas/Organization"
|
|
35694
|
+
}
|
|
35695
|
+
}
|
|
35696
|
+
},
|
|
35697
|
+
"additionalProperties": false
|
|
35698
|
+
}
|
|
35699
|
+
}
|
|
35700
|
+
}
|
|
35701
|
+
},
|
|
35702
|
+
"400": {
|
|
35703
|
+
"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.",
|
|
35704
|
+
"content": {
|
|
35705
|
+
"application/json": {
|
|
35706
|
+
"schema": {
|
|
35707
|
+
"allOf": [
|
|
35708
|
+
{
|
|
35709
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
35710
|
+
},
|
|
35711
|
+
{
|
|
35712
|
+
"type": "object",
|
|
35713
|
+
"properties": {
|
|
35714
|
+
"error_code": {
|
|
35715
|
+
"type": "string",
|
|
35716
|
+
"enum": [
|
|
35717
|
+
"invalid_query",
|
|
35718
|
+
"invalid_expand",
|
|
35719
|
+
"search_not_supported",
|
|
35720
|
+
"validation_error"
|
|
35721
|
+
]
|
|
35722
|
+
}
|
|
35723
|
+
}
|
|
35724
|
+
}
|
|
35725
|
+
]
|
|
35726
|
+
}
|
|
35727
|
+
}
|
|
35728
|
+
}
|
|
35729
|
+
},
|
|
35730
|
+
"401": {
|
|
35731
|
+
"description": "`unauthorized` — The request carries no valid credentials.",
|
|
35732
|
+
"content": {
|
|
35733
|
+
"application/json": {
|
|
35734
|
+
"schema": {
|
|
35735
|
+
"allOf": [
|
|
35736
|
+
{
|
|
35737
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
35738
|
+
},
|
|
35739
|
+
{
|
|
35740
|
+
"type": "object",
|
|
35741
|
+
"properties": {
|
|
35742
|
+
"error_code": {
|
|
35743
|
+
"type": "string",
|
|
35744
|
+
"enum": [
|
|
35745
|
+
"unauthorized"
|
|
35746
|
+
]
|
|
35747
|
+
}
|
|
35748
|
+
}
|
|
35749
|
+
}
|
|
35750
|
+
]
|
|
35751
|
+
}
|
|
35752
|
+
}
|
|
35753
|
+
}
|
|
35754
|
+
},
|
|
35755
|
+
"403": {
|
|
35756
|
+
"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.",
|
|
35757
|
+
"content": {
|
|
35758
|
+
"application/json": {
|
|
35759
|
+
"schema": {
|
|
35760
|
+
"allOf": [
|
|
35761
|
+
{
|
|
35762
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
35763
|
+
},
|
|
35764
|
+
{
|
|
35765
|
+
"type": "object",
|
|
35766
|
+
"properties": {
|
|
35767
|
+
"error_code": {
|
|
35768
|
+
"type": "string",
|
|
35769
|
+
"enum": [
|
|
35770
|
+
"forbidden",
|
|
35771
|
+
"insufficient_scope",
|
|
35772
|
+
"user_suspended"
|
|
35773
|
+
]
|
|
35774
|
+
}
|
|
35775
|
+
}
|
|
35776
|
+
}
|
|
35777
|
+
]
|
|
35778
|
+
}
|
|
35779
|
+
}
|
|
35780
|
+
}
|
|
35781
|
+
},
|
|
35782
|
+
"404": {
|
|
35783
|
+
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
35784
|
+
"content": {
|
|
35785
|
+
"application/json": {
|
|
35786
|
+
"schema": {
|
|
35787
|
+
"allOf": [
|
|
35788
|
+
{
|
|
35789
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
35790
|
+
},
|
|
35791
|
+
{
|
|
35792
|
+
"type": "object",
|
|
35793
|
+
"properties": {
|
|
35794
|
+
"error_code": {
|
|
35795
|
+
"type": "string",
|
|
35796
|
+
"enum": [
|
|
35797
|
+
"account_not_found"
|
|
35798
|
+
]
|
|
35799
|
+
}
|
|
35800
|
+
}
|
|
35801
|
+
}
|
|
35802
|
+
]
|
|
35803
|
+
}
|
|
35804
|
+
}
|
|
35805
|
+
}
|
|
35806
|
+
},
|
|
35807
|
+
"429": {
|
|
35808
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
35809
|
+
"content": {
|
|
35810
|
+
"application/json": {
|
|
35811
|
+
"schema": {
|
|
35812
|
+
"allOf": [
|
|
35813
|
+
{
|
|
35814
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
35815
|
+
},
|
|
35816
|
+
{
|
|
35817
|
+
"type": "object",
|
|
35818
|
+
"properties": {
|
|
35819
|
+
"error_code": {
|
|
35820
|
+
"type": "string",
|
|
35821
|
+
"enum": [
|
|
35822
|
+
"too_many_requests"
|
|
35823
|
+
]
|
|
35824
|
+
}
|
|
35825
|
+
}
|
|
35826
|
+
}
|
|
35827
|
+
]
|
|
35828
|
+
}
|
|
35829
|
+
}
|
|
35830
|
+
}
|
|
35831
|
+
},
|
|
35832
|
+
"500": {
|
|
35833
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
35834
|
+
"content": {
|
|
35835
|
+
"application/json": {
|
|
35836
|
+
"schema": {
|
|
35837
|
+
"allOf": [
|
|
35838
|
+
{
|
|
35839
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
35840
|
+
},
|
|
35841
|
+
{
|
|
35842
|
+
"type": "object",
|
|
35843
|
+
"properties": {
|
|
35844
|
+
"error_code": {
|
|
35845
|
+
"type": "string",
|
|
35846
|
+
"enum": [
|
|
35847
|
+
"internal_error"
|
|
35848
|
+
]
|
|
35849
|
+
}
|
|
35850
|
+
}
|
|
35851
|
+
}
|
|
35852
|
+
]
|
|
35853
|
+
}
|
|
35854
|
+
}
|
|
35855
|
+
}
|
|
35856
|
+
}
|
|
35857
|
+
}
|
|
35858
|
+
},
|
|
35859
|
+
"post": {
|
|
35860
|
+
"operationId": "organization/create",
|
|
35861
|
+
"summary": "Create Organization",
|
|
35862
|
+
"tags": [
|
|
35863
|
+
"organization"
|
|
35864
|
+
],
|
|
35865
|
+
"description": "Create Organization",
|
|
35866
|
+
"requestBody": {
|
|
35867
|
+
"required": true,
|
|
35868
|
+
"content": {
|
|
35869
|
+
"application/json": {
|
|
35870
|
+
"schema": {
|
|
35871
|
+
"type": "object",
|
|
35872
|
+
"required": [
|
|
35873
|
+
"name"
|
|
35874
|
+
],
|
|
35875
|
+
"properties": {
|
|
35876
|
+
"name": {
|
|
35877
|
+
"type": "string",
|
|
35878
|
+
"minLength": 1,
|
|
35879
|
+
"description": "Human-readable name of the organization.",
|
|
35880
|
+
"example": "Acme Inc."
|
|
35881
|
+
},
|
|
35882
|
+
"description": {
|
|
35883
|
+
"type": "string",
|
|
35884
|
+
"description": "Optional free-form description."
|
|
35885
|
+
},
|
|
35886
|
+
"logo_url": {
|
|
35887
|
+
"type": "string",
|
|
35888
|
+
"format": "uri",
|
|
35889
|
+
"description": "Optional URL of the organization logo."
|
|
35890
|
+
},
|
|
35891
|
+
"admins": {
|
|
35892
|
+
"type": "array",
|
|
35893
|
+
"items": {
|
|
35894
|
+
"type": "string",
|
|
35895
|
+
"pattern": "^user_[0-9a-f]{24}$"
|
|
35896
|
+
},
|
|
35897
|
+
"uniqueItems": true,
|
|
35898
|
+
"description": "Initial admins (user ids of this tenant). Can be empty and filled later with `POST /organization/{organization_id}/admin`."
|
|
35899
|
+
},
|
|
35900
|
+
"metadata": {
|
|
35901
|
+
"type": "object",
|
|
35902
|
+
"properties": {},
|
|
35903
|
+
"additionalProperties": true,
|
|
35904
|
+
"description": "Add Metadata"
|
|
35905
|
+
}
|
|
35906
|
+
},
|
|
35907
|
+
"description": "OrganizationCreate",
|
|
35908
|
+
"additionalProperties": false
|
|
35909
|
+
}
|
|
35910
|
+
}
|
|
35911
|
+
},
|
|
35912
|
+
"description": "OrganizationCreate"
|
|
35913
|
+
},
|
|
35914
|
+
"security": [
|
|
35915
|
+
{
|
|
35916
|
+
"bearerAuth": []
|
|
35917
|
+
}
|
|
35918
|
+
],
|
|
35919
|
+
"responses": {
|
|
35920
|
+
"200": {
|
|
35921
|
+
"description": "Organization",
|
|
35922
|
+
"content": {
|
|
35923
|
+
"application/json": {
|
|
35924
|
+
"schema": {
|
|
35925
|
+
"type": "object",
|
|
35926
|
+
"required": [
|
|
35927
|
+
"id",
|
|
35928
|
+
"name",
|
|
35929
|
+
"slug",
|
|
35930
|
+
"description",
|
|
35931
|
+
"logo_url",
|
|
35932
|
+
"domains",
|
|
35933
|
+
"auto_join",
|
|
35934
|
+
"admins",
|
|
35935
|
+
"account",
|
|
35936
|
+
"createdAt"
|
|
35937
|
+
],
|
|
35938
|
+
"properties": {
|
|
35939
|
+
"id": {
|
|
35940
|
+
"type": "string",
|
|
35941
|
+
"description": "Organization ID"
|
|
35942
|
+
},
|
|
35943
|
+
"name": {
|
|
35944
|
+
"type": "string",
|
|
35945
|
+
"description": "Human-readable name of the organization.",
|
|
35946
|
+
"example": "Acme Inc."
|
|
35947
|
+
},
|
|
35948
|
+
"slug": {
|
|
35949
|
+
"type": "string",
|
|
35950
|
+
"description": "URL-safe identifier derived from `name`. Unique within the tenant.",
|
|
35951
|
+
"example": "acme-inc"
|
|
35952
|
+
},
|
|
35953
|
+
"description": {
|
|
35954
|
+
"type": "string",
|
|
35955
|
+
"description": "Optional free-form description.",
|
|
35956
|
+
"nullable": true
|
|
35957
|
+
},
|
|
35958
|
+
"logo_url": {
|
|
35959
|
+
"type": "string",
|
|
35960
|
+
"description": "Optional URL of the organization logo.",
|
|
35961
|
+
"nullable": true
|
|
35962
|
+
},
|
|
35963
|
+
"domains": {
|
|
35964
|
+
"type": "array",
|
|
35965
|
+
"items": {
|
|
35966
|
+
"type": "object",
|
|
35967
|
+
"required": [
|
|
35968
|
+
"domain",
|
|
35969
|
+
"verification_token",
|
|
35970
|
+
"verified_at"
|
|
35971
|
+
],
|
|
35972
|
+
"properties": {
|
|
35973
|
+
"domain": {
|
|
35974
|
+
"type": "string",
|
|
35975
|
+
"example": "acme.com"
|
|
35976
|
+
},
|
|
35977
|
+
"verification_token": {
|
|
35978
|
+
"type": "string",
|
|
35979
|
+
"description": "Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`."
|
|
35980
|
+
},
|
|
35981
|
+
"verified_at": {
|
|
35982
|
+
"type": "string",
|
|
35983
|
+
"format": "date-time",
|
|
35984
|
+
"description": "When the TXT record was found. `null` = not verified.",
|
|
35985
|
+
"nullable": true
|
|
35986
|
+
}
|
|
35987
|
+
}
|
|
35988
|
+
},
|
|
35989
|
+
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
35990
|
+
},
|
|
35991
|
+
"auto_join": {
|
|
35992
|
+
"type": "array",
|
|
35993
|
+
"items": {
|
|
35994
|
+
"type": "object",
|
|
35995
|
+
"required": [
|
|
35996
|
+
"team",
|
|
35997
|
+
"roles"
|
|
35998
|
+
],
|
|
35999
|
+
"properties": {
|
|
36000
|
+
"team": {
|
|
36001
|
+
"type": "string",
|
|
36002
|
+
"description": "A team of this organization."
|
|
36003
|
+
},
|
|
36004
|
+
"roles": {
|
|
36005
|
+
"type": "array",
|
|
36006
|
+
"items": {
|
|
36007
|
+
"type": "string"
|
|
36008
|
+
},
|
|
36009
|
+
"description": "Role ids the member gets in that team."
|
|
36010
|
+
}
|
|
36011
|
+
}
|
|
36012
|
+
},
|
|
36013
|
+
"description": "Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain."
|
|
36014
|
+
},
|
|
36015
|
+
"admins": {
|
|
36016
|
+
"type": "array",
|
|
36017
|
+
"items": {
|
|
36018
|
+
"type": "string"
|
|
36019
|
+
},
|
|
36020
|
+
"description": "Ids of the users who manage the organization: its teams and its identity settings. Being an admin does not grant access to any team; team access is team membership."
|
|
36021
|
+
},
|
|
36022
|
+
"account": {
|
|
36023
|
+
"type": "string",
|
|
36024
|
+
"description": "Object is related with this account"
|
|
36025
|
+
},
|
|
36026
|
+
"metadata": {
|
|
36027
|
+
"type": "object",
|
|
36028
|
+
"properties": {},
|
|
36029
|
+
"additionalProperties": true,
|
|
36030
|
+
"description": "OrganizationMetadata",
|
|
36031
|
+
"default": {}
|
|
36032
|
+
},
|
|
36033
|
+
"createdAt": {
|
|
36034
|
+
"type": "string",
|
|
36035
|
+
"description": "Organization creation date"
|
|
36036
|
+
},
|
|
36037
|
+
"updatedAt": {
|
|
36038
|
+
"type": "string",
|
|
36039
|
+
"description": "Organization updated date"
|
|
36040
|
+
}
|
|
36041
|
+
},
|
|
36042
|
+
"description": "Organization"
|
|
36043
|
+
}
|
|
36044
|
+
}
|
|
36045
|
+
}
|
|
36046
|
+
},
|
|
36047
|
+
"400": {
|
|
36048
|
+
"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.",
|
|
36049
|
+
"content": {
|
|
36050
|
+
"application/json": {
|
|
36051
|
+
"schema": {
|
|
36052
|
+
"allOf": [
|
|
36053
|
+
{
|
|
36054
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36055
|
+
},
|
|
36056
|
+
{
|
|
36057
|
+
"type": "object",
|
|
36058
|
+
"properties": {
|
|
36059
|
+
"error_code": {
|
|
36060
|
+
"type": "string",
|
|
36061
|
+
"enum": [
|
|
36062
|
+
"already_exists",
|
|
36063
|
+
"validation_error"
|
|
36064
|
+
]
|
|
36065
|
+
}
|
|
36066
|
+
}
|
|
36067
|
+
}
|
|
36068
|
+
]
|
|
36069
|
+
}
|
|
36070
|
+
}
|
|
36071
|
+
}
|
|
36072
|
+
},
|
|
36073
|
+
"401": {
|
|
36074
|
+
"description": "`unauthorized` — The request carries no valid credentials.",
|
|
36075
|
+
"content": {
|
|
36076
|
+
"application/json": {
|
|
36077
|
+
"schema": {
|
|
36078
|
+
"allOf": [
|
|
36079
|
+
{
|
|
36080
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36081
|
+
},
|
|
36082
|
+
{
|
|
36083
|
+
"type": "object",
|
|
36084
|
+
"properties": {
|
|
36085
|
+
"error_code": {
|
|
36086
|
+
"type": "string",
|
|
36087
|
+
"enum": [
|
|
36088
|
+
"unauthorized"
|
|
36089
|
+
]
|
|
36090
|
+
}
|
|
36091
|
+
}
|
|
36092
|
+
}
|
|
36093
|
+
]
|
|
36094
|
+
}
|
|
36095
|
+
}
|
|
36096
|
+
}
|
|
36097
|
+
},
|
|
36098
|
+
"403": {
|
|
36099
|
+
"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.",
|
|
36100
|
+
"content": {
|
|
36101
|
+
"application/json": {
|
|
36102
|
+
"schema": {
|
|
36103
|
+
"allOf": [
|
|
36104
|
+
{
|
|
36105
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36106
|
+
},
|
|
36107
|
+
{
|
|
36108
|
+
"type": "object",
|
|
36109
|
+
"properties": {
|
|
36110
|
+
"error_code": {
|
|
36111
|
+
"type": "string",
|
|
36112
|
+
"enum": [
|
|
36113
|
+
"forbidden",
|
|
36114
|
+
"insufficient_scope",
|
|
36115
|
+
"user_suspended"
|
|
36116
|
+
]
|
|
36117
|
+
}
|
|
36118
|
+
}
|
|
36119
|
+
}
|
|
36120
|
+
]
|
|
36121
|
+
}
|
|
36122
|
+
}
|
|
36123
|
+
}
|
|
36124
|
+
},
|
|
36125
|
+
"404": {
|
|
36126
|
+
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
36127
|
+
"content": {
|
|
36128
|
+
"application/json": {
|
|
36129
|
+
"schema": {
|
|
36130
|
+
"allOf": [
|
|
36131
|
+
{
|
|
36132
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36133
|
+
},
|
|
36134
|
+
{
|
|
36135
|
+
"type": "object",
|
|
36136
|
+
"properties": {
|
|
36137
|
+
"error_code": {
|
|
36138
|
+
"type": "string",
|
|
36139
|
+
"enum": [
|
|
36140
|
+
"account_not_found"
|
|
36141
|
+
]
|
|
36142
|
+
}
|
|
36143
|
+
}
|
|
36144
|
+
}
|
|
36145
|
+
]
|
|
36146
|
+
}
|
|
36147
|
+
}
|
|
36148
|
+
}
|
|
36149
|
+
},
|
|
36150
|
+
"429": {
|
|
36151
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
36152
|
+
"content": {
|
|
36153
|
+
"application/json": {
|
|
36154
|
+
"schema": {
|
|
36155
|
+
"allOf": [
|
|
36156
|
+
{
|
|
36157
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36158
|
+
},
|
|
36159
|
+
{
|
|
36160
|
+
"type": "object",
|
|
36161
|
+
"properties": {
|
|
36162
|
+
"error_code": {
|
|
36163
|
+
"type": "string",
|
|
36164
|
+
"enum": [
|
|
36165
|
+
"too_many_requests"
|
|
36166
|
+
]
|
|
36167
|
+
}
|
|
36168
|
+
}
|
|
36169
|
+
}
|
|
36170
|
+
]
|
|
36171
|
+
}
|
|
36172
|
+
}
|
|
36173
|
+
}
|
|
36174
|
+
},
|
|
36175
|
+
"500": {
|
|
36176
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
36177
|
+
"content": {
|
|
36178
|
+
"application/json": {
|
|
36179
|
+
"schema": {
|
|
36180
|
+
"allOf": [
|
|
36181
|
+
{
|
|
36182
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36183
|
+
},
|
|
36184
|
+
{
|
|
36185
|
+
"type": "object",
|
|
36186
|
+
"properties": {
|
|
36187
|
+
"error_code": {
|
|
36188
|
+
"type": "string",
|
|
36189
|
+
"enum": [
|
|
36190
|
+
"internal_error"
|
|
36191
|
+
]
|
|
36192
|
+
}
|
|
36193
|
+
}
|
|
36194
|
+
}
|
|
36195
|
+
]
|
|
36196
|
+
}
|
|
36197
|
+
}
|
|
36198
|
+
}
|
|
36199
|
+
}
|
|
36200
|
+
}
|
|
36201
|
+
}
|
|
36202
|
+
},
|
|
36203
|
+
"/organization/{organization_id}": {
|
|
36204
|
+
"get": {
|
|
36205
|
+
"operationId": "organization/get",
|
|
36206
|
+
"summary": "Get Organization",
|
|
36207
|
+
"tags": [
|
|
36208
|
+
"organization"
|
|
36209
|
+
],
|
|
36210
|
+
"description": "Get Organization",
|
|
36211
|
+
"parameters": [
|
|
36212
|
+
{
|
|
36213
|
+
"schema": {
|
|
36214
|
+
"type": "string"
|
|
36215
|
+
},
|
|
36216
|
+
"in": "path",
|
|
36217
|
+
"name": "organization_id",
|
|
36218
|
+
"required": true
|
|
36219
|
+
}
|
|
36220
|
+
],
|
|
36221
|
+
"security": [
|
|
36222
|
+
{
|
|
36223
|
+
"bearerAuth": []
|
|
36224
|
+
}
|
|
36225
|
+
],
|
|
36226
|
+
"responses": {
|
|
36227
|
+
"200": {
|
|
36228
|
+
"description": "Organization",
|
|
36229
|
+
"content": {
|
|
36230
|
+
"application/json": {
|
|
36231
|
+
"schema": {
|
|
36232
|
+
"type": "object",
|
|
36233
|
+
"required": [
|
|
36234
|
+
"id",
|
|
36235
|
+
"name",
|
|
36236
|
+
"slug",
|
|
36237
|
+
"description",
|
|
36238
|
+
"logo_url",
|
|
36239
|
+
"domains",
|
|
36240
|
+
"auto_join",
|
|
36241
|
+
"admins",
|
|
36242
|
+
"account",
|
|
36243
|
+
"createdAt"
|
|
36244
|
+
],
|
|
36245
|
+
"properties": {
|
|
36246
|
+
"id": {
|
|
36247
|
+
"type": "string",
|
|
36248
|
+
"description": "Organization ID"
|
|
36249
|
+
},
|
|
36250
|
+
"name": {
|
|
36251
|
+
"type": "string",
|
|
36252
|
+
"description": "Human-readable name of the organization.",
|
|
36253
|
+
"example": "Acme Inc."
|
|
36254
|
+
},
|
|
36255
|
+
"slug": {
|
|
36256
|
+
"type": "string",
|
|
36257
|
+
"description": "URL-safe identifier derived from `name`. Unique within the tenant.",
|
|
36258
|
+
"example": "acme-inc"
|
|
36259
|
+
},
|
|
36260
|
+
"description": {
|
|
36261
|
+
"type": "string",
|
|
36262
|
+
"description": "Optional free-form description.",
|
|
36263
|
+
"nullable": true
|
|
36264
|
+
},
|
|
36265
|
+
"logo_url": {
|
|
36266
|
+
"type": "string",
|
|
36267
|
+
"description": "Optional URL of the organization logo.",
|
|
36268
|
+
"nullable": true
|
|
36269
|
+
},
|
|
36270
|
+
"domains": {
|
|
36271
|
+
"type": "array",
|
|
36272
|
+
"items": {
|
|
36273
|
+
"type": "object",
|
|
36274
|
+
"required": [
|
|
36275
|
+
"domain",
|
|
36276
|
+
"verification_token",
|
|
36277
|
+
"verified_at"
|
|
36278
|
+
],
|
|
36279
|
+
"properties": {
|
|
36280
|
+
"domain": {
|
|
36281
|
+
"type": "string",
|
|
36282
|
+
"example": "acme.com"
|
|
36283
|
+
},
|
|
36284
|
+
"verification_token": {
|
|
36285
|
+
"type": "string",
|
|
36286
|
+
"description": "Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`."
|
|
36287
|
+
},
|
|
36288
|
+
"verified_at": {
|
|
36289
|
+
"type": "string",
|
|
36290
|
+
"format": "date-time",
|
|
36291
|
+
"description": "When the TXT record was found. `null` = not verified.",
|
|
36292
|
+
"nullable": true
|
|
36293
|
+
}
|
|
36294
|
+
}
|
|
36295
|
+
},
|
|
36296
|
+
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
36297
|
+
},
|
|
36298
|
+
"auto_join": {
|
|
36299
|
+
"type": "array",
|
|
36300
|
+
"items": {
|
|
36301
|
+
"type": "object",
|
|
36302
|
+
"required": [
|
|
36303
|
+
"team",
|
|
36304
|
+
"roles"
|
|
36305
|
+
],
|
|
36306
|
+
"properties": {
|
|
36307
|
+
"team": {
|
|
36308
|
+
"type": "string",
|
|
36309
|
+
"description": "A team of this organization."
|
|
36310
|
+
},
|
|
36311
|
+
"roles": {
|
|
36312
|
+
"type": "array",
|
|
36313
|
+
"items": {
|
|
36314
|
+
"type": "string"
|
|
36315
|
+
},
|
|
36316
|
+
"description": "Role ids the member gets in that team."
|
|
36317
|
+
}
|
|
36318
|
+
}
|
|
36319
|
+
},
|
|
36320
|
+
"description": "Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain."
|
|
36321
|
+
},
|
|
36322
|
+
"admins": {
|
|
36323
|
+
"type": "array",
|
|
36324
|
+
"items": {
|
|
36325
|
+
"type": "string"
|
|
36326
|
+
},
|
|
36327
|
+
"description": "Ids of the users who manage the organization: its teams and its identity settings. Being an admin does not grant access to any team; team access is team membership."
|
|
36328
|
+
},
|
|
36329
|
+
"account": {
|
|
36330
|
+
"type": "string",
|
|
36331
|
+
"description": "Object is related with this account"
|
|
36332
|
+
},
|
|
36333
|
+
"metadata": {
|
|
36334
|
+
"type": "object",
|
|
36335
|
+
"properties": {},
|
|
36336
|
+
"additionalProperties": true,
|
|
36337
|
+
"description": "OrganizationMetadata",
|
|
36338
|
+
"default": {}
|
|
36339
|
+
},
|
|
36340
|
+
"createdAt": {
|
|
36341
|
+
"type": "string",
|
|
36342
|
+
"description": "Organization creation date"
|
|
36343
|
+
},
|
|
36344
|
+
"updatedAt": {
|
|
36345
|
+
"type": "string",
|
|
36346
|
+
"description": "Organization updated date"
|
|
36347
|
+
}
|
|
36348
|
+
},
|
|
36349
|
+
"description": "Organization"
|
|
36350
|
+
}
|
|
36351
|
+
}
|
|
36352
|
+
}
|
|
36353
|
+
},
|
|
36354
|
+
"400": {
|
|
36355
|
+
"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.",
|
|
36356
|
+
"content": {
|
|
36357
|
+
"application/json": {
|
|
36358
|
+
"schema": {
|
|
36359
|
+
"allOf": [
|
|
36360
|
+
{
|
|
36361
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36362
|
+
},
|
|
36363
|
+
{
|
|
36364
|
+
"type": "object",
|
|
36365
|
+
"properties": {
|
|
36366
|
+
"error_code": {
|
|
36367
|
+
"type": "string",
|
|
36368
|
+
"enum": [
|
|
36369
|
+
"invalid_id",
|
|
36370
|
+
"invalid_expand",
|
|
36371
|
+
"validation_error"
|
|
36372
|
+
]
|
|
36373
|
+
}
|
|
36374
|
+
}
|
|
36375
|
+
}
|
|
36376
|
+
]
|
|
36377
|
+
}
|
|
36378
|
+
}
|
|
36379
|
+
}
|
|
36380
|
+
},
|
|
36381
|
+
"401": {
|
|
36382
|
+
"description": "`unauthorized` — The request carries no valid credentials.",
|
|
36383
|
+
"content": {
|
|
36384
|
+
"application/json": {
|
|
36385
|
+
"schema": {
|
|
36386
|
+
"allOf": [
|
|
36387
|
+
{
|
|
36388
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36389
|
+
},
|
|
36390
|
+
{
|
|
36391
|
+
"type": "object",
|
|
36392
|
+
"properties": {
|
|
36393
|
+
"error_code": {
|
|
36394
|
+
"type": "string",
|
|
36395
|
+
"enum": [
|
|
36396
|
+
"unauthorized"
|
|
36397
|
+
]
|
|
36398
|
+
}
|
|
36399
|
+
}
|
|
36400
|
+
}
|
|
36401
|
+
]
|
|
36402
|
+
}
|
|
36403
|
+
}
|
|
36404
|
+
}
|
|
36405
|
+
},
|
|
36406
|
+
"403": {
|
|
36407
|
+
"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.",
|
|
36408
|
+
"content": {
|
|
36409
|
+
"application/json": {
|
|
36410
|
+
"schema": {
|
|
36411
|
+
"allOf": [
|
|
36412
|
+
{
|
|
36413
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36414
|
+
},
|
|
36415
|
+
{
|
|
36416
|
+
"type": "object",
|
|
36417
|
+
"properties": {
|
|
36418
|
+
"error_code": {
|
|
36419
|
+
"type": "string",
|
|
36420
|
+
"enum": [
|
|
36421
|
+
"forbidden",
|
|
36422
|
+
"insufficient_scope",
|
|
36423
|
+
"user_suspended"
|
|
36424
|
+
]
|
|
36425
|
+
}
|
|
36426
|
+
}
|
|
36427
|
+
}
|
|
36428
|
+
]
|
|
36429
|
+
}
|
|
36430
|
+
}
|
|
36431
|
+
}
|
|
36432
|
+
},
|
|
36433
|
+
"404": {
|
|
36434
|
+
"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).",
|
|
36435
|
+
"content": {
|
|
36436
|
+
"application/json": {
|
|
36437
|
+
"schema": {
|
|
36438
|
+
"allOf": [
|
|
36439
|
+
{
|
|
36440
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36441
|
+
},
|
|
36442
|
+
{
|
|
36443
|
+
"type": "object",
|
|
36444
|
+
"properties": {
|
|
36445
|
+
"error_code": {
|
|
36446
|
+
"type": "string",
|
|
36447
|
+
"enum": [
|
|
36448
|
+
"not_found",
|
|
36449
|
+
"account_not_found"
|
|
36450
|
+
]
|
|
36451
|
+
}
|
|
36452
|
+
}
|
|
36453
|
+
}
|
|
36454
|
+
]
|
|
36455
|
+
}
|
|
36456
|
+
}
|
|
36457
|
+
}
|
|
36458
|
+
},
|
|
36459
|
+
"429": {
|
|
36460
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
36461
|
+
"content": {
|
|
36462
|
+
"application/json": {
|
|
36463
|
+
"schema": {
|
|
36464
|
+
"allOf": [
|
|
36465
|
+
{
|
|
36466
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36467
|
+
},
|
|
36468
|
+
{
|
|
36469
|
+
"type": "object",
|
|
36470
|
+
"properties": {
|
|
36471
|
+
"error_code": {
|
|
36472
|
+
"type": "string",
|
|
36473
|
+
"enum": [
|
|
36474
|
+
"too_many_requests"
|
|
36475
|
+
]
|
|
36476
|
+
}
|
|
36477
|
+
}
|
|
36478
|
+
}
|
|
36479
|
+
]
|
|
36480
|
+
}
|
|
36481
|
+
}
|
|
36482
|
+
}
|
|
36483
|
+
},
|
|
36484
|
+
"500": {
|
|
36485
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
36486
|
+
"content": {
|
|
36487
|
+
"application/json": {
|
|
36488
|
+
"schema": {
|
|
36489
|
+
"allOf": [
|
|
36490
|
+
{
|
|
36491
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36492
|
+
},
|
|
36493
|
+
{
|
|
36494
|
+
"type": "object",
|
|
36495
|
+
"properties": {
|
|
36496
|
+
"error_code": {
|
|
36497
|
+
"type": "string",
|
|
36498
|
+
"enum": [
|
|
36499
|
+
"internal_error"
|
|
36500
|
+
]
|
|
36501
|
+
}
|
|
36502
|
+
}
|
|
36503
|
+
}
|
|
36504
|
+
]
|
|
36505
|
+
}
|
|
36506
|
+
}
|
|
36507
|
+
}
|
|
36508
|
+
}
|
|
36509
|
+
}
|
|
36510
|
+
},
|
|
36511
|
+
"post": {
|
|
36512
|
+
"operationId": "organization/update",
|
|
36513
|
+
"summary": "Update Organization",
|
|
36514
|
+
"tags": [
|
|
36515
|
+
"organization"
|
|
36516
|
+
],
|
|
36517
|
+
"description": "Update Organization",
|
|
36518
|
+
"requestBody": {
|
|
36519
|
+
"required": true,
|
|
36520
|
+
"content": {
|
|
36521
|
+
"application/json": {
|
|
36522
|
+
"schema": {
|
|
36523
|
+
"type": "object",
|
|
36524
|
+
"properties": {
|
|
36525
|
+
"name": {
|
|
36526
|
+
"type": "string",
|
|
36527
|
+
"minLength": 1,
|
|
36528
|
+
"description": "New human-readable name."
|
|
36529
|
+
},
|
|
36530
|
+
"description": {
|
|
36531
|
+
"type": "string",
|
|
36532
|
+
"description": "New free-form description."
|
|
36533
|
+
},
|
|
36534
|
+
"logo_url": {
|
|
36535
|
+
"type": "string",
|
|
36536
|
+
"format": "uri",
|
|
36537
|
+
"description": "New URL of the organization logo."
|
|
36538
|
+
},
|
|
36539
|
+
"metadata": {
|
|
36540
|
+
"type": "object",
|
|
36541
|
+
"properties": {},
|
|
36542
|
+
"additionalProperties": true,
|
|
36543
|
+
"description": "Arbitrary key/value pairs. Replaces the previous metadata entirely."
|
|
36544
|
+
}
|
|
36545
|
+
},
|
|
36546
|
+
"description": "Partial update for an Organization. `slug` is derived from `name` on creation and is not editable; admins change through `/organization/{organization_id}/admin`.",
|
|
36547
|
+
"additionalProperties": false
|
|
36548
|
+
}
|
|
36549
|
+
}
|
|
36550
|
+
},
|
|
36551
|
+
"description": "Partial update for an Organization. `slug` is derived from `name` on creation and is not editable; admins change through `/organization/{organization_id}/admin`."
|
|
36552
|
+
},
|
|
36553
|
+
"parameters": [
|
|
36554
|
+
{
|
|
36555
|
+
"schema": {
|
|
36556
|
+
"type": "string"
|
|
36557
|
+
},
|
|
36558
|
+
"in": "path",
|
|
36559
|
+
"name": "organization_id",
|
|
36560
|
+
"required": true
|
|
36561
|
+
}
|
|
36562
|
+
],
|
|
36563
|
+
"security": [
|
|
36564
|
+
{
|
|
36565
|
+
"bearerAuth": []
|
|
36566
|
+
}
|
|
36567
|
+
],
|
|
36568
|
+
"responses": {
|
|
36569
|
+
"200": {
|
|
36570
|
+
"description": "Organization",
|
|
36571
|
+
"content": {
|
|
36572
|
+
"application/json": {
|
|
36573
|
+
"schema": {
|
|
36574
|
+
"type": "object",
|
|
36575
|
+
"required": [
|
|
36576
|
+
"id",
|
|
36577
|
+
"name",
|
|
36578
|
+
"slug",
|
|
36579
|
+
"description",
|
|
36580
|
+
"logo_url",
|
|
36581
|
+
"domains",
|
|
36582
|
+
"auto_join",
|
|
36583
|
+
"admins",
|
|
36584
|
+
"account",
|
|
36585
|
+
"createdAt"
|
|
36586
|
+
],
|
|
36587
|
+
"properties": {
|
|
36588
|
+
"id": {
|
|
36589
|
+
"type": "string",
|
|
36590
|
+
"description": "Organization ID"
|
|
36591
|
+
},
|
|
36592
|
+
"name": {
|
|
36593
|
+
"type": "string",
|
|
36594
|
+
"description": "Human-readable name of the organization.",
|
|
36595
|
+
"example": "Acme Inc."
|
|
36596
|
+
},
|
|
36597
|
+
"slug": {
|
|
36598
|
+
"type": "string",
|
|
36599
|
+
"description": "URL-safe identifier derived from `name`. Unique within the tenant.",
|
|
36600
|
+
"example": "acme-inc"
|
|
36601
|
+
},
|
|
36602
|
+
"description": {
|
|
36603
|
+
"type": "string",
|
|
36604
|
+
"description": "Optional free-form description.",
|
|
36605
|
+
"nullable": true
|
|
36606
|
+
},
|
|
36607
|
+
"logo_url": {
|
|
36608
|
+
"type": "string",
|
|
36609
|
+
"description": "Optional URL of the organization logo.",
|
|
36610
|
+
"nullable": true
|
|
36611
|
+
},
|
|
36612
|
+
"domains": {
|
|
36613
|
+
"type": "array",
|
|
36614
|
+
"items": {
|
|
36615
|
+
"type": "object",
|
|
36616
|
+
"required": [
|
|
36617
|
+
"domain",
|
|
36618
|
+
"verification_token",
|
|
36619
|
+
"verified_at"
|
|
36620
|
+
],
|
|
36621
|
+
"properties": {
|
|
36622
|
+
"domain": {
|
|
36623
|
+
"type": "string",
|
|
36624
|
+
"example": "acme.com"
|
|
36625
|
+
},
|
|
36626
|
+
"verification_token": {
|
|
36627
|
+
"type": "string",
|
|
36628
|
+
"description": "Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`."
|
|
36629
|
+
},
|
|
36630
|
+
"verified_at": {
|
|
36631
|
+
"type": "string",
|
|
36632
|
+
"format": "date-time",
|
|
36633
|
+
"description": "When the TXT record was found. `null` = not verified.",
|
|
36634
|
+
"nullable": true
|
|
36635
|
+
}
|
|
36636
|
+
}
|
|
36637
|
+
},
|
|
36638
|
+
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
36639
|
+
},
|
|
36640
|
+
"auto_join": {
|
|
36641
|
+
"type": "array",
|
|
36642
|
+
"items": {
|
|
36643
|
+
"type": "object",
|
|
36644
|
+
"required": [
|
|
36645
|
+
"team",
|
|
36646
|
+
"roles"
|
|
36647
|
+
],
|
|
36648
|
+
"properties": {
|
|
36649
|
+
"team": {
|
|
36650
|
+
"type": "string",
|
|
36651
|
+
"description": "A team of this organization."
|
|
36652
|
+
},
|
|
36653
|
+
"roles": {
|
|
36654
|
+
"type": "array",
|
|
36655
|
+
"items": {
|
|
36656
|
+
"type": "string"
|
|
36657
|
+
},
|
|
36658
|
+
"description": "Role ids the member gets in that team."
|
|
36659
|
+
}
|
|
36660
|
+
}
|
|
36661
|
+
},
|
|
36662
|
+
"description": "Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain."
|
|
36663
|
+
},
|
|
36664
|
+
"admins": {
|
|
36665
|
+
"type": "array",
|
|
36666
|
+
"items": {
|
|
36667
|
+
"type": "string"
|
|
36668
|
+
},
|
|
36669
|
+
"description": "Ids of the users who manage the organization: its teams and its identity settings. Being an admin does not grant access to any team; team access is team membership."
|
|
36670
|
+
},
|
|
36671
|
+
"account": {
|
|
36672
|
+
"type": "string",
|
|
36673
|
+
"description": "Object is related with this account"
|
|
36674
|
+
},
|
|
36675
|
+
"metadata": {
|
|
36676
|
+
"type": "object",
|
|
36677
|
+
"properties": {},
|
|
36678
|
+
"additionalProperties": true,
|
|
36679
|
+
"description": "OrganizationMetadata",
|
|
36680
|
+
"default": {}
|
|
36681
|
+
},
|
|
36682
|
+
"createdAt": {
|
|
36683
|
+
"type": "string",
|
|
36684
|
+
"description": "Organization creation date"
|
|
36685
|
+
},
|
|
36686
|
+
"updatedAt": {
|
|
36687
|
+
"type": "string",
|
|
36688
|
+
"description": "Organization updated date"
|
|
36689
|
+
}
|
|
36690
|
+
},
|
|
36691
|
+
"description": "Organization"
|
|
36692
|
+
}
|
|
36693
|
+
}
|
|
36694
|
+
}
|
|
36695
|
+
},
|
|
36696
|
+
"400": {
|
|
36697
|
+
"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.",
|
|
36698
|
+
"content": {
|
|
36699
|
+
"application/json": {
|
|
36700
|
+
"schema": {
|
|
36701
|
+
"allOf": [
|
|
36702
|
+
{
|
|
36703
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36704
|
+
},
|
|
36705
|
+
{
|
|
36706
|
+
"type": "object",
|
|
36707
|
+
"properties": {
|
|
36708
|
+
"error_code": {
|
|
36709
|
+
"type": "string",
|
|
36710
|
+
"enum": [
|
|
36711
|
+
"invalid_id",
|
|
36712
|
+
"already_exists",
|
|
36713
|
+
"validation_error"
|
|
36714
|
+
]
|
|
36715
|
+
}
|
|
36716
|
+
}
|
|
36717
|
+
}
|
|
36718
|
+
]
|
|
36719
|
+
}
|
|
36720
|
+
}
|
|
36721
|
+
}
|
|
36722
|
+
},
|
|
36723
|
+
"401": {
|
|
36724
|
+
"description": "`unauthorized` — The request carries no valid credentials.",
|
|
36725
|
+
"content": {
|
|
36726
|
+
"application/json": {
|
|
36727
|
+
"schema": {
|
|
36728
|
+
"allOf": [
|
|
36729
|
+
{
|
|
36730
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36731
|
+
},
|
|
36732
|
+
{
|
|
36733
|
+
"type": "object",
|
|
36734
|
+
"properties": {
|
|
36735
|
+
"error_code": {
|
|
36736
|
+
"type": "string",
|
|
36737
|
+
"enum": [
|
|
36738
|
+
"unauthorized"
|
|
36739
|
+
]
|
|
36740
|
+
}
|
|
36741
|
+
}
|
|
36742
|
+
}
|
|
36743
|
+
]
|
|
36744
|
+
}
|
|
36745
|
+
}
|
|
36746
|
+
}
|
|
36747
|
+
},
|
|
36748
|
+
"403": {
|
|
36749
|
+
"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.",
|
|
36750
|
+
"content": {
|
|
36751
|
+
"application/json": {
|
|
36752
|
+
"schema": {
|
|
36753
|
+
"allOf": [
|
|
36754
|
+
{
|
|
36755
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36756
|
+
},
|
|
36757
|
+
{
|
|
36758
|
+
"type": "object",
|
|
36759
|
+
"properties": {
|
|
36760
|
+
"error_code": {
|
|
36761
|
+
"type": "string",
|
|
36762
|
+
"enum": [
|
|
36763
|
+
"forbidden",
|
|
36764
|
+
"insufficient_scope",
|
|
36765
|
+
"user_suspended"
|
|
36766
|
+
]
|
|
36767
|
+
}
|
|
36768
|
+
}
|
|
36769
|
+
}
|
|
36770
|
+
]
|
|
36771
|
+
}
|
|
36772
|
+
}
|
|
36773
|
+
}
|
|
36774
|
+
},
|
|
36775
|
+
"404": {
|
|
36776
|
+
"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).",
|
|
36777
|
+
"content": {
|
|
36778
|
+
"application/json": {
|
|
36779
|
+
"schema": {
|
|
36780
|
+
"allOf": [
|
|
36781
|
+
{
|
|
36782
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36783
|
+
},
|
|
36784
|
+
{
|
|
36785
|
+
"type": "object",
|
|
36786
|
+
"properties": {
|
|
36787
|
+
"error_code": {
|
|
36788
|
+
"type": "string",
|
|
36789
|
+
"enum": [
|
|
36790
|
+
"not_found",
|
|
36791
|
+
"account_not_found"
|
|
36792
|
+
]
|
|
36793
|
+
}
|
|
36794
|
+
}
|
|
36795
|
+
}
|
|
36796
|
+
]
|
|
36797
|
+
}
|
|
36798
|
+
}
|
|
36799
|
+
}
|
|
36800
|
+
},
|
|
36801
|
+
"429": {
|
|
36802
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
36803
|
+
"content": {
|
|
36804
|
+
"application/json": {
|
|
36805
|
+
"schema": {
|
|
36806
|
+
"allOf": [
|
|
36807
|
+
{
|
|
36808
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36809
|
+
},
|
|
36810
|
+
{
|
|
36811
|
+
"type": "object",
|
|
36812
|
+
"properties": {
|
|
36813
|
+
"error_code": {
|
|
36814
|
+
"type": "string",
|
|
36815
|
+
"enum": [
|
|
36816
|
+
"too_many_requests"
|
|
36817
|
+
]
|
|
36818
|
+
}
|
|
36819
|
+
}
|
|
36820
|
+
}
|
|
36821
|
+
]
|
|
36822
|
+
}
|
|
36823
|
+
}
|
|
36824
|
+
}
|
|
36825
|
+
},
|
|
36826
|
+
"500": {
|
|
36827
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
36828
|
+
"content": {
|
|
36829
|
+
"application/json": {
|
|
36830
|
+
"schema": {
|
|
36831
|
+
"allOf": [
|
|
36832
|
+
{
|
|
36833
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
36834
|
+
},
|
|
36835
|
+
{
|
|
36836
|
+
"type": "object",
|
|
36837
|
+
"properties": {
|
|
36838
|
+
"error_code": {
|
|
36839
|
+
"type": "string",
|
|
36840
|
+
"enum": [
|
|
36841
|
+
"internal_error"
|
|
36842
|
+
]
|
|
36843
|
+
}
|
|
36844
|
+
}
|
|
36845
|
+
}
|
|
36846
|
+
]
|
|
36847
|
+
}
|
|
36848
|
+
}
|
|
36849
|
+
}
|
|
36850
|
+
}
|
|
36851
|
+
}
|
|
36852
|
+
},
|
|
36853
|
+
"delete": {
|
|
36854
|
+
"operationId": "organization/delete",
|
|
36855
|
+
"summary": "Delete Organization",
|
|
35454
36856
|
"tags": [
|
|
35455
36857
|
"organization"
|
|
35456
36858
|
],
|
|
35457
|
-
"description": "
|
|
36859
|
+
"description": "Delete Organization",
|
|
35458
36860
|
"parameters": [
|
|
35459
|
-
{
|
|
35460
|
-
"schema": {
|
|
35461
|
-
"type": "number",
|
|
35462
|
-
"minimum": 1,
|
|
35463
|
-
"maximum": 200
|
|
35464
|
-
},
|
|
35465
|
-
"in": "query",
|
|
35466
|
-
"name": "pageSize",
|
|
35467
|
-
"required": false,
|
|
35468
|
-
"description": "Number of items per page (max 200)"
|
|
35469
|
-
},
|
|
35470
|
-
{
|
|
35471
|
-
"schema": {
|
|
35472
|
-
"type": "string"
|
|
35473
|
-
},
|
|
35474
|
-
"in": "query",
|
|
35475
|
-
"name": "cursor",
|
|
35476
|
-
"required": false,
|
|
35477
|
-
"description": "Cursor for next page"
|
|
35478
|
-
},
|
|
35479
|
-
{
|
|
35480
|
-
"schema": {
|
|
35481
|
-
"type": "string"
|
|
35482
|
-
},
|
|
35483
|
-
"in": "query",
|
|
35484
|
-
"name": "next",
|
|
35485
|
-
"required": false,
|
|
35486
|
-
"description": "Cursor returned by the previous page"
|
|
35487
|
-
},
|
|
35488
36861
|
{
|
|
35489
36862
|
"schema": {
|
|
35490
36863
|
"type": "string"
|
|
35491
36864
|
},
|
|
35492
|
-
"in": "
|
|
35493
|
-
"name": "
|
|
35494
|
-
"required":
|
|
35495
|
-
"description": "Filter using a FaableQL query"
|
|
35496
|
-
},
|
|
35497
|
-
{
|
|
35498
|
-
"schema": {
|
|
35499
|
-
"type": "string",
|
|
35500
|
-
"minLength": 1,
|
|
35501
|
-
"maxLength": 200
|
|
35502
|
-
},
|
|
35503
|
-
"in": "query",
|
|
35504
|
-
"name": "q",
|
|
35505
|
-
"required": false,
|
|
35506
|
-
"description": "Full-text search across: `name`, `slug`."
|
|
36865
|
+
"in": "path",
|
|
36866
|
+
"name": "organization_id",
|
|
36867
|
+
"required": true
|
|
35507
36868
|
}
|
|
35508
36869
|
],
|
|
35509
36870
|
"security": [
|
|
@@ -35513,40 +36874,134 @@
|
|
|
35513
36874
|
],
|
|
35514
36875
|
"responses": {
|
|
35515
36876
|
"200": {
|
|
35516
|
-
"description": "
|
|
36877
|
+
"description": "Organization",
|
|
35517
36878
|
"content": {
|
|
35518
36879
|
"application/json": {
|
|
35519
36880
|
"schema": {
|
|
35520
36881
|
"type": "object",
|
|
35521
36882
|
"required": [
|
|
35522
|
-
"
|
|
35523
|
-
"
|
|
36883
|
+
"id",
|
|
36884
|
+
"name",
|
|
36885
|
+
"slug",
|
|
36886
|
+
"description",
|
|
36887
|
+
"logo_url",
|
|
36888
|
+
"domains",
|
|
36889
|
+
"auto_join",
|
|
36890
|
+
"admins",
|
|
36891
|
+
"account",
|
|
36892
|
+
"createdAt"
|
|
35524
36893
|
],
|
|
35525
36894
|
"properties": {
|
|
35526
|
-
"
|
|
35527
|
-
"
|
|
35528
|
-
|
|
35529
|
-
|
|
35530
|
-
|
|
35531
|
-
|
|
35532
|
-
|
|
36895
|
+
"id": {
|
|
36896
|
+
"type": "string",
|
|
36897
|
+
"description": "Organization ID"
|
|
36898
|
+
},
|
|
36899
|
+
"name": {
|
|
36900
|
+
"type": "string",
|
|
36901
|
+
"description": "Human-readable name of the organization.",
|
|
36902
|
+
"example": "Acme Inc."
|
|
36903
|
+
},
|
|
36904
|
+
"slug": {
|
|
36905
|
+
"type": "string",
|
|
36906
|
+
"description": "URL-safe identifier derived from `name`. Unique within the tenant.",
|
|
36907
|
+
"example": "acme-inc"
|
|
36908
|
+
},
|
|
36909
|
+
"description": {
|
|
36910
|
+
"type": "string",
|
|
36911
|
+
"description": "Optional free-form description.",
|
|
36912
|
+
"nullable": true
|
|
36913
|
+
},
|
|
36914
|
+
"logo_url": {
|
|
36915
|
+
"type": "string",
|
|
36916
|
+
"description": "Optional URL of the organization logo.",
|
|
36917
|
+
"nullable": true
|
|
36918
|
+
},
|
|
36919
|
+
"domains": {
|
|
36920
|
+
"type": "array",
|
|
36921
|
+
"items": {
|
|
36922
|
+
"type": "object",
|
|
36923
|
+
"required": [
|
|
36924
|
+
"domain",
|
|
36925
|
+
"verification_token",
|
|
36926
|
+
"verified_at"
|
|
36927
|
+
],
|
|
36928
|
+
"properties": {
|
|
36929
|
+
"domain": {
|
|
36930
|
+
"type": "string",
|
|
36931
|
+
"example": "acme.com"
|
|
36932
|
+
},
|
|
36933
|
+
"verification_token": {
|
|
36934
|
+
"type": "string",
|
|
36935
|
+
"description": "Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`."
|
|
36936
|
+
},
|
|
36937
|
+
"verified_at": {
|
|
36938
|
+
"type": "string",
|
|
36939
|
+
"format": "date-time",
|
|
36940
|
+
"description": "When the TXT record was found. `null` = not verified.",
|
|
36941
|
+
"nullable": true
|
|
36942
|
+
}
|
|
35533
36943
|
}
|
|
35534
|
-
|
|
36944
|
+
},
|
|
36945
|
+
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
35535
36946
|
},
|
|
35536
|
-
"
|
|
36947
|
+
"auto_join": {
|
|
35537
36948
|
"type": "array",
|
|
35538
36949
|
"items": {
|
|
35539
|
-
"
|
|
35540
|
-
|
|
36950
|
+
"type": "object",
|
|
36951
|
+
"required": [
|
|
36952
|
+
"team",
|
|
36953
|
+
"roles"
|
|
36954
|
+
],
|
|
36955
|
+
"properties": {
|
|
36956
|
+
"team": {
|
|
36957
|
+
"type": "string",
|
|
36958
|
+
"description": "A team of this organization."
|
|
36959
|
+
},
|
|
36960
|
+
"roles": {
|
|
36961
|
+
"type": "array",
|
|
36962
|
+
"items": {
|
|
36963
|
+
"type": "string"
|
|
36964
|
+
},
|
|
36965
|
+
"description": "Role ids the member gets in that team."
|
|
36966
|
+
}
|
|
36967
|
+
}
|
|
36968
|
+
},
|
|
36969
|
+
"description": "Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain."
|
|
36970
|
+
},
|
|
36971
|
+
"admins": {
|
|
36972
|
+
"type": "array",
|
|
36973
|
+
"items": {
|
|
36974
|
+
"type": "string"
|
|
36975
|
+
},
|
|
36976
|
+
"description": "Ids of the users who manage the organization: its teams and its identity settings. Being an admin does not grant access to any team; team access is team membership."
|
|
36977
|
+
},
|
|
36978
|
+
"account": {
|
|
36979
|
+
"type": "string",
|
|
36980
|
+
"description": "Object is related with this account"
|
|
36981
|
+
},
|
|
36982
|
+
"metadata": {
|
|
36983
|
+
"type": "object",
|
|
36984
|
+
"properties": {},
|
|
36985
|
+
"additionalProperties": true,
|
|
36986
|
+
"description": "OrganizationMetadata",
|
|
36987
|
+
"default": {}
|
|
36988
|
+
},
|
|
36989
|
+
"createdAt": {
|
|
36990
|
+
"type": "string",
|
|
36991
|
+
"description": "Organization creation date"
|
|
36992
|
+
},
|
|
36993
|
+
"updatedAt": {
|
|
36994
|
+
"type": "string",
|
|
36995
|
+
"description": "Organization updated date"
|
|
35541
36996
|
}
|
|
35542
36997
|
},
|
|
35543
|
-
"
|
|
36998
|
+
"description": "Organization"
|
|
35544
36999
|
}
|
|
35545
37000
|
}
|
|
35546
37001
|
}
|
|
35547
37002
|
},
|
|
35548
37003
|
"400": {
|
|
35549
|
-
"description": "`
|
|
37004
|
+
"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.",
|
|
35550
37005
|
"content": {
|
|
35551
37006
|
"application/json": {
|
|
35552
37007
|
"schema": {
|
|
@@ -35560,9 +37015,7 @@
|
|
|
35560
37015
|
"error_code": {
|
|
35561
37016
|
"type": "string",
|
|
35562
37017
|
"enum": [
|
|
35563
|
-
"
|
|
35564
|
-
"invalid_expand",
|
|
35565
|
-
"search_not_supported",
|
|
37018
|
+
"invalid_id",
|
|
35566
37019
|
"validation_error"
|
|
35567
37020
|
]
|
|
35568
37021
|
}
|
|
@@ -35626,7 +37079,7 @@
|
|
|
35626
37079
|
}
|
|
35627
37080
|
},
|
|
35628
37081
|
"404": {
|
|
35629
|
-
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
37082
|
+
"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).",
|
|
35630
37083
|
"content": {
|
|
35631
37084
|
"application/json": {
|
|
35632
37085
|
"schema": {
|
|
@@ -35640,6 +37093,7 @@
|
|
|
35640
37093
|
"error_code": {
|
|
35641
37094
|
"type": "string",
|
|
35642
37095
|
"enum": [
|
|
37096
|
+
"not_found",
|
|
35643
37097
|
"account_not_found"
|
|
35644
37098
|
]
|
|
35645
37099
|
}
|
|
@@ -35701,14 +37155,16 @@
|
|
|
35701
37155
|
}
|
|
35702
37156
|
}
|
|
35703
37157
|
}
|
|
35704
|
-
}
|
|
37158
|
+
}
|
|
37159
|
+
},
|
|
37160
|
+
"/organization/{organization_id}/admin": {
|
|
35705
37161
|
"post": {
|
|
35706
|
-
"operationId": "organization/
|
|
35707
|
-
"summary": "
|
|
37162
|
+
"operationId": "organization/addAdmin",
|
|
37163
|
+
"summary": "Add an admin to an Organization",
|
|
35708
37164
|
"tags": [
|
|
35709
37165
|
"organization"
|
|
35710
37166
|
],
|
|
35711
|
-
"description": "
|
|
37167
|
+
"description": "Makes a user of this tenant an admin of the Organization. Idempotent. Being an admin does not grant access to any team of the organization. Emits `organization.updated`.",
|
|
35712
37168
|
"requestBody": {
|
|
35713
37169
|
"required": true,
|
|
35714
37170
|
"content": {
|
|
@@ -35716,47 +37172,30 @@
|
|
|
35716
37172
|
"schema": {
|
|
35717
37173
|
"type": "object",
|
|
35718
37174
|
"required": [
|
|
35719
|
-
"
|
|
37175
|
+
"user_id"
|
|
35720
37176
|
],
|
|
35721
37177
|
"properties": {
|
|
35722
|
-
"
|
|
35723
|
-
"type": "string",
|
|
35724
|
-
"minLength": 1,
|
|
35725
|
-
"description": "Human-readable name of the organization.",
|
|
35726
|
-
"example": "Acme Inc."
|
|
35727
|
-
},
|
|
35728
|
-
"description": {
|
|
35729
|
-
"type": "string",
|
|
35730
|
-
"description": "Optional free-form description."
|
|
35731
|
-
},
|
|
35732
|
-
"logo_url": {
|
|
37178
|
+
"user_id": {
|
|
35733
37179
|
"type": "string",
|
|
35734
|
-
"
|
|
35735
|
-
"
|
|
35736
|
-
},
|
|
35737
|
-
"admins": {
|
|
35738
|
-
"type": "array",
|
|
35739
|
-
"items": {
|
|
35740
|
-
"type": "string",
|
|
35741
|
-
"pattern": "^user_[0-9a-f]{24}$"
|
|
35742
|
-
},
|
|
35743
|
-
"uniqueItems": true,
|
|
35744
|
-
"description": "Initial admins (user ids of this tenant). Can be empty and filled later with `POST /organization/{organization_id}/admin`."
|
|
35745
|
-
},
|
|
35746
|
-
"metadata": {
|
|
35747
|
-
"type": "object",
|
|
35748
|
-
"properties": {},
|
|
35749
|
-
"additionalProperties": true,
|
|
35750
|
-
"description": "Add Metadata"
|
|
37180
|
+
"description": "Id of a user of this tenant.",
|
|
37181
|
+
"example": "user_6555fd29a1b2c3d4e5f60718"
|
|
35751
37182
|
}
|
|
35752
37183
|
},
|
|
35753
|
-
"description": "OrganizationCreate",
|
|
35754
37184
|
"additionalProperties": false
|
|
35755
37185
|
}
|
|
35756
37186
|
}
|
|
35757
|
-
}
|
|
35758
|
-
"description": "OrganizationCreate"
|
|
37187
|
+
}
|
|
35759
37188
|
},
|
|
37189
|
+
"parameters": [
|
|
37190
|
+
{
|
|
37191
|
+
"schema": {
|
|
37192
|
+
"type": "string"
|
|
37193
|
+
},
|
|
37194
|
+
"in": "path",
|
|
37195
|
+
"name": "organization_id",
|
|
37196
|
+
"required": true
|
|
37197
|
+
}
|
|
37198
|
+
],
|
|
35760
37199
|
"security": [
|
|
35761
37200
|
{
|
|
35762
37201
|
"bearerAuth": []
|
|
@@ -35775,6 +37214,8 @@
|
|
|
35775
37214
|
"slug",
|
|
35776
37215
|
"description",
|
|
35777
37216
|
"logo_url",
|
|
37217
|
+
"domains",
|
|
37218
|
+
"auto_join",
|
|
35778
37219
|
"admins",
|
|
35779
37220
|
"account",
|
|
35780
37221
|
"createdAt"
|
|
@@ -35804,6 +37245,58 @@
|
|
|
35804
37245
|
"description": "Optional URL of the organization logo.",
|
|
35805
37246
|
"nullable": true
|
|
35806
37247
|
},
|
|
37248
|
+
"domains": {
|
|
37249
|
+
"type": "array",
|
|
37250
|
+
"items": {
|
|
37251
|
+
"type": "object",
|
|
37252
|
+
"required": [
|
|
37253
|
+
"domain",
|
|
37254
|
+
"verification_token",
|
|
37255
|
+
"verified_at"
|
|
37256
|
+
],
|
|
37257
|
+
"properties": {
|
|
37258
|
+
"domain": {
|
|
37259
|
+
"type": "string",
|
|
37260
|
+
"example": "acme.com"
|
|
37261
|
+
},
|
|
37262
|
+
"verification_token": {
|
|
37263
|
+
"type": "string",
|
|
37264
|
+
"description": "Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`."
|
|
37265
|
+
},
|
|
37266
|
+
"verified_at": {
|
|
37267
|
+
"type": "string",
|
|
37268
|
+
"format": "date-time",
|
|
37269
|
+
"description": "When the TXT record was found. `null` = not verified.",
|
|
37270
|
+
"nullable": true
|
|
37271
|
+
}
|
|
37272
|
+
}
|
|
37273
|
+
},
|
|
37274
|
+
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
37275
|
+
},
|
|
37276
|
+
"auto_join": {
|
|
37277
|
+
"type": "array",
|
|
37278
|
+
"items": {
|
|
37279
|
+
"type": "object",
|
|
37280
|
+
"required": [
|
|
37281
|
+
"team",
|
|
37282
|
+
"roles"
|
|
37283
|
+
],
|
|
37284
|
+
"properties": {
|
|
37285
|
+
"team": {
|
|
37286
|
+
"type": "string",
|
|
37287
|
+
"description": "A team of this organization."
|
|
37288
|
+
},
|
|
37289
|
+
"roles": {
|
|
37290
|
+
"type": "array",
|
|
37291
|
+
"items": {
|
|
37292
|
+
"type": "string"
|
|
37293
|
+
},
|
|
37294
|
+
"description": "Role ids the member gets in that team."
|
|
37295
|
+
}
|
|
37296
|
+
}
|
|
37297
|
+
},
|
|
37298
|
+
"description": "Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain."
|
|
37299
|
+
},
|
|
35807
37300
|
"admins": {
|
|
35808
37301
|
"type": "array",
|
|
35809
37302
|
"items": {
|
|
@@ -35837,7 +37330,7 @@
|
|
|
35837
37330
|
}
|
|
35838
37331
|
},
|
|
35839
37332
|
"400": {
|
|
35840
|
-
"description": "`
|
|
37333
|
+
"description": "`invalid_user` — The user does not exist in this account.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
35841
37334
|
"content": {
|
|
35842
37335
|
"application/json": {
|
|
35843
37336
|
"schema": {
|
|
@@ -35851,7 +37344,7 @@
|
|
|
35851
37344
|
"error_code": {
|
|
35852
37345
|
"type": "string",
|
|
35853
37346
|
"enum": [
|
|
35854
|
-
"
|
|
37347
|
+
"invalid_user",
|
|
35855
37348
|
"validation_error"
|
|
35856
37349
|
]
|
|
35857
37350
|
}
|
|
@@ -35915,7 +37408,7 @@
|
|
|
35915
37408
|
}
|
|
35916
37409
|
},
|
|
35917
37410
|
"404": {
|
|
35918
|
-
"description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
37411
|
+
"description": "`organization_not_found` — No organization with that id in this account.\n\n`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
35919
37412
|
"content": {
|
|
35920
37413
|
"application/json": {
|
|
35921
37414
|
"schema": {
|
|
@@ -35929,6 +37422,7 @@
|
|
|
35929
37422
|
"error_code": {
|
|
35930
37423
|
"type": "string",
|
|
35931
37424
|
"enum": [
|
|
37425
|
+
"organization_not_found",
|
|
35932
37426
|
"account_not_found"
|
|
35933
37427
|
]
|
|
35934
37428
|
}
|
|
@@ -35992,14 +37486,14 @@
|
|
|
35992
37486
|
}
|
|
35993
37487
|
}
|
|
35994
37488
|
},
|
|
35995
|
-
"/organization/{organization_id}": {
|
|
35996
|
-
"
|
|
35997
|
-
"operationId": "organization/
|
|
35998
|
-
"summary": "
|
|
37489
|
+
"/organization/{organization_id}/admin/{user_id}": {
|
|
37490
|
+
"delete": {
|
|
37491
|
+
"operationId": "organization/removeAdmin",
|
|
37492
|
+
"summary": "Remove an admin from an Organization",
|
|
35999
37493
|
"tags": [
|
|
36000
37494
|
"organization"
|
|
36001
37495
|
],
|
|
36002
|
-
"description": "
|
|
37496
|
+
"description": "Removes the user from the admins of the Organization (the user is not deleted). An organization keeps at least one admin: removing the last one is `last_organization_admin`. Emits `organization.updated`.",
|
|
36003
37497
|
"parameters": [
|
|
36004
37498
|
{
|
|
36005
37499
|
"schema": {
|
|
@@ -36008,6 +37502,14 @@
|
|
|
36008
37502
|
"in": "path",
|
|
36009
37503
|
"name": "organization_id",
|
|
36010
37504
|
"required": true
|
|
37505
|
+
},
|
|
37506
|
+
{
|
|
37507
|
+
"schema": {
|
|
37508
|
+
"type": "string"
|
|
37509
|
+
},
|
|
37510
|
+
"in": "path",
|
|
37511
|
+
"name": "user_id",
|
|
37512
|
+
"required": true
|
|
36011
37513
|
}
|
|
36012
37514
|
],
|
|
36013
37515
|
"security": [
|
|
@@ -36028,6 +37530,8 @@
|
|
|
36028
37530
|
"slug",
|
|
36029
37531
|
"description",
|
|
36030
37532
|
"logo_url",
|
|
37533
|
+
"domains",
|
|
37534
|
+
"auto_join",
|
|
36031
37535
|
"admins",
|
|
36032
37536
|
"account",
|
|
36033
37537
|
"createdAt"
|
|
@@ -36057,6 +37561,58 @@
|
|
|
36057
37561
|
"description": "Optional URL of the organization logo.",
|
|
36058
37562
|
"nullable": true
|
|
36059
37563
|
},
|
|
37564
|
+
"domains": {
|
|
37565
|
+
"type": "array",
|
|
37566
|
+
"items": {
|
|
37567
|
+
"type": "object",
|
|
37568
|
+
"required": [
|
|
37569
|
+
"domain",
|
|
37570
|
+
"verification_token",
|
|
37571
|
+
"verified_at"
|
|
37572
|
+
],
|
|
37573
|
+
"properties": {
|
|
37574
|
+
"domain": {
|
|
37575
|
+
"type": "string",
|
|
37576
|
+
"example": "acme.com"
|
|
37577
|
+
},
|
|
37578
|
+
"verification_token": {
|
|
37579
|
+
"type": "string",
|
|
37580
|
+
"description": "Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`."
|
|
37581
|
+
},
|
|
37582
|
+
"verified_at": {
|
|
37583
|
+
"type": "string",
|
|
37584
|
+
"format": "date-time",
|
|
37585
|
+
"description": "When the TXT record was found. `null` = not verified.",
|
|
37586
|
+
"nullable": true
|
|
37587
|
+
}
|
|
37588
|
+
}
|
|
37589
|
+
},
|
|
37590
|
+
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
37591
|
+
},
|
|
37592
|
+
"auto_join": {
|
|
37593
|
+
"type": "array",
|
|
37594
|
+
"items": {
|
|
37595
|
+
"type": "object",
|
|
37596
|
+
"required": [
|
|
37597
|
+
"team",
|
|
37598
|
+
"roles"
|
|
37599
|
+
],
|
|
37600
|
+
"properties": {
|
|
37601
|
+
"team": {
|
|
37602
|
+
"type": "string",
|
|
37603
|
+
"description": "A team of this organization."
|
|
37604
|
+
},
|
|
37605
|
+
"roles": {
|
|
37606
|
+
"type": "array",
|
|
37607
|
+
"items": {
|
|
37608
|
+
"type": "string"
|
|
37609
|
+
},
|
|
37610
|
+
"description": "Role ids the member gets in that team."
|
|
37611
|
+
}
|
|
37612
|
+
}
|
|
37613
|
+
},
|
|
37614
|
+
"description": "Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain."
|
|
37615
|
+
},
|
|
36060
37616
|
"admins": {
|
|
36061
37617
|
"type": "array",
|
|
36062
37618
|
"items": {
|
|
@@ -36090,7 +37646,7 @@
|
|
|
36090
37646
|
}
|
|
36091
37647
|
},
|
|
36092
37648
|
"400": {
|
|
36093
|
-
"description": "`
|
|
37649
|
+
"description": "`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
36094
37650
|
"content": {
|
|
36095
37651
|
"application/json": {
|
|
36096
37652
|
"schema": {
|
|
@@ -36104,8 +37660,6 @@
|
|
|
36104
37660
|
"error_code": {
|
|
36105
37661
|
"type": "string",
|
|
36106
37662
|
"enum": [
|
|
36107
|
-
"invalid_id",
|
|
36108
|
-
"invalid_expand",
|
|
36109
37663
|
"validation_error"
|
|
36110
37664
|
]
|
|
36111
37665
|
}
|
|
@@ -36169,7 +37723,7 @@
|
|
|
36169
37723
|
}
|
|
36170
37724
|
},
|
|
36171
37725
|
"404": {
|
|
36172
|
-
"description": "`
|
|
37726
|
+
"description": "`organization_not_found` — No organization with that id in this account.\n\n`not_an_organization_admin` — The user is not an admin of the organization.\n\n`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
36173
37727
|
"content": {
|
|
36174
37728
|
"application/json": {
|
|
36175
37729
|
"schema": {
|
|
@@ -36183,7 +37737,8 @@
|
|
|
36183
37737
|
"error_code": {
|
|
36184
37738
|
"type": "string",
|
|
36185
37739
|
"enum": [
|
|
36186
|
-
"
|
|
37740
|
+
"organization_not_found",
|
|
37741
|
+
"not_an_organization_admin",
|
|
36187
37742
|
"account_not_found"
|
|
36188
37743
|
]
|
|
36189
37744
|
}
|
|
@@ -36194,6 +37749,31 @@
|
|
|
36194
37749
|
}
|
|
36195
37750
|
}
|
|
36196
37751
|
},
|
|
37752
|
+
"409": {
|
|
37753
|
+
"description": "`last_organization_admin` — An organization keeps at least one admin. Add another admin before removing this one.",
|
|
37754
|
+
"content": {
|
|
37755
|
+
"application/json": {
|
|
37756
|
+
"schema": {
|
|
37757
|
+
"allOf": [
|
|
37758
|
+
{
|
|
37759
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
37760
|
+
},
|
|
37761
|
+
{
|
|
37762
|
+
"type": "object",
|
|
37763
|
+
"properties": {
|
|
37764
|
+
"error_code": {
|
|
37765
|
+
"type": "string",
|
|
37766
|
+
"enum": [
|
|
37767
|
+
"last_organization_admin"
|
|
37768
|
+
]
|
|
37769
|
+
}
|
|
37770
|
+
}
|
|
37771
|
+
}
|
|
37772
|
+
]
|
|
37773
|
+
}
|
|
37774
|
+
}
|
|
37775
|
+
}
|
|
37776
|
+
},
|
|
36197
37777
|
"429": {
|
|
36198
37778
|
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
36199
37779
|
"content": {
|
|
@@ -36245,48 +37825,36 @@
|
|
|
36245
37825
|
}
|
|
36246
37826
|
}
|
|
36247
37827
|
}
|
|
36248
|
-
}
|
|
37828
|
+
}
|
|
37829
|
+
},
|
|
37830
|
+
"/organization/{organization_id}/domain": {
|
|
36249
37831
|
"post": {
|
|
36250
|
-
"operationId": "organization/
|
|
36251
|
-
"summary": "
|
|
37832
|
+
"operationId": "organization/addDomain",
|
|
37833
|
+
"summary": "Claim an email domain for an Organization",
|
|
36252
37834
|
"tags": [
|
|
36253
37835
|
"organization"
|
|
36254
37836
|
],
|
|
36255
|
-
"description": "
|
|
37837
|
+
"description": "Adds the domain unverified, with the `verification_token` its TXT record must hold. Idempotent. Nothing changes for anyone until the domain is verified.",
|
|
36256
37838
|
"requestBody": {
|
|
36257
37839
|
"required": true,
|
|
36258
37840
|
"content": {
|
|
36259
37841
|
"application/json": {
|
|
36260
37842
|
"schema": {
|
|
36261
37843
|
"type": "object",
|
|
37844
|
+
"required": [
|
|
37845
|
+
"domain"
|
|
37846
|
+
],
|
|
36262
37847
|
"properties": {
|
|
36263
|
-
"
|
|
36264
|
-
"type": "string",
|
|
36265
|
-
"minLength": 1,
|
|
36266
|
-
"description": "New human-readable name."
|
|
36267
|
-
},
|
|
36268
|
-
"description": {
|
|
36269
|
-
"type": "string",
|
|
36270
|
-
"description": "New free-form description."
|
|
36271
|
-
},
|
|
36272
|
-
"logo_url": {
|
|
37848
|
+
"domain": {
|
|
36273
37849
|
"type": "string",
|
|
36274
|
-
"
|
|
36275
|
-
"
|
|
36276
|
-
},
|
|
36277
|
-
"metadata": {
|
|
36278
|
-
"type": "object",
|
|
36279
|
-
"properties": {},
|
|
36280
|
-
"additionalProperties": true,
|
|
36281
|
-
"description": "Arbitrary key/value pairs. Replaces the previous metadata entirely."
|
|
37850
|
+
"description": "The email domain, as in `alice@<domain>`.",
|
|
37851
|
+
"example": "acme.com"
|
|
36282
37852
|
}
|
|
36283
37853
|
},
|
|
36284
|
-
"description": "Partial update for an Organization. `slug` is derived from `name` on creation and is not editable; admins change through `/organization/{organization_id}/admin`.",
|
|
36285
37854
|
"additionalProperties": false
|
|
36286
37855
|
}
|
|
36287
37856
|
}
|
|
36288
|
-
}
|
|
36289
|
-
"description": "Partial update for an Organization. `slug` is derived from `name` on creation and is not editable; admins change through `/organization/{organization_id}/admin`."
|
|
37857
|
+
}
|
|
36290
37858
|
},
|
|
36291
37859
|
"parameters": [
|
|
36292
37860
|
{
|
|
@@ -36316,6 +37884,8 @@
|
|
|
36316
37884
|
"slug",
|
|
36317
37885
|
"description",
|
|
36318
37886
|
"logo_url",
|
|
37887
|
+
"domains",
|
|
37888
|
+
"auto_join",
|
|
36319
37889
|
"admins",
|
|
36320
37890
|
"account",
|
|
36321
37891
|
"createdAt"
|
|
@@ -36345,6 +37915,58 @@
|
|
|
36345
37915
|
"description": "Optional URL of the organization logo.",
|
|
36346
37916
|
"nullable": true
|
|
36347
37917
|
},
|
|
37918
|
+
"domains": {
|
|
37919
|
+
"type": "array",
|
|
37920
|
+
"items": {
|
|
37921
|
+
"type": "object",
|
|
37922
|
+
"required": [
|
|
37923
|
+
"domain",
|
|
37924
|
+
"verification_token",
|
|
37925
|
+
"verified_at"
|
|
37926
|
+
],
|
|
37927
|
+
"properties": {
|
|
37928
|
+
"domain": {
|
|
37929
|
+
"type": "string",
|
|
37930
|
+
"example": "acme.com"
|
|
37931
|
+
},
|
|
37932
|
+
"verification_token": {
|
|
37933
|
+
"type": "string",
|
|
37934
|
+
"description": "Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`."
|
|
37935
|
+
},
|
|
37936
|
+
"verified_at": {
|
|
37937
|
+
"type": "string",
|
|
37938
|
+
"format": "date-time",
|
|
37939
|
+
"description": "When the TXT record was found. `null` = not verified.",
|
|
37940
|
+
"nullable": true
|
|
37941
|
+
}
|
|
37942
|
+
}
|
|
37943
|
+
},
|
|
37944
|
+
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
37945
|
+
},
|
|
37946
|
+
"auto_join": {
|
|
37947
|
+
"type": "array",
|
|
37948
|
+
"items": {
|
|
37949
|
+
"type": "object",
|
|
37950
|
+
"required": [
|
|
37951
|
+
"team",
|
|
37952
|
+
"roles"
|
|
37953
|
+
],
|
|
37954
|
+
"properties": {
|
|
37955
|
+
"team": {
|
|
37956
|
+
"type": "string",
|
|
37957
|
+
"description": "A team of this organization."
|
|
37958
|
+
},
|
|
37959
|
+
"roles": {
|
|
37960
|
+
"type": "array",
|
|
37961
|
+
"items": {
|
|
37962
|
+
"type": "string"
|
|
37963
|
+
},
|
|
37964
|
+
"description": "Role ids the member gets in that team."
|
|
37965
|
+
}
|
|
37966
|
+
}
|
|
37967
|
+
},
|
|
37968
|
+
"description": "Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain."
|
|
37969
|
+
},
|
|
36348
37970
|
"admins": {
|
|
36349
37971
|
"type": "array",
|
|
36350
37972
|
"items": {
|
|
@@ -36378,7 +38000,7 @@
|
|
|
36378
38000
|
}
|
|
36379
38001
|
},
|
|
36380
38002
|
"400": {
|
|
36381
|
-
"description": "`
|
|
38003
|
+
"description": "`invalid_email_domain` — Not an email domain this organization can claim: it must be a plain domain name (`acme.com`), lowercase, without scheme, path or wildcard.\n\n`public_email_domain` — A public email provider (gmail.com, outlook.com…) cannot belong to an organization: anyone can have an address there.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
36382
38004
|
"content": {
|
|
36383
38005
|
"application/json": {
|
|
36384
38006
|
"schema": {
|
|
@@ -36392,8 +38014,8 @@
|
|
|
36392
38014
|
"error_code": {
|
|
36393
38015
|
"type": "string",
|
|
36394
38016
|
"enum": [
|
|
36395
|
-
"
|
|
36396
|
-
"
|
|
38017
|
+
"invalid_email_domain",
|
|
38018
|
+
"public_email_domain",
|
|
36397
38019
|
"validation_error"
|
|
36398
38020
|
]
|
|
36399
38021
|
}
|
|
@@ -36457,7 +38079,7 @@
|
|
|
36457
38079
|
}
|
|
36458
38080
|
},
|
|
36459
38081
|
"404": {
|
|
36460
|
-
"description": "`
|
|
38082
|
+
"description": "`organization_not_found` — No organization with that id in this account.\n\n`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
36461
38083
|
"content": {
|
|
36462
38084
|
"application/json": {
|
|
36463
38085
|
"schema": {
|
|
@@ -36471,7 +38093,7 @@
|
|
|
36471
38093
|
"error_code": {
|
|
36472
38094
|
"type": "string",
|
|
36473
38095
|
"enum": [
|
|
36474
|
-
"
|
|
38096
|
+
"organization_not_found",
|
|
36475
38097
|
"account_not_found"
|
|
36476
38098
|
]
|
|
36477
38099
|
}
|
|
@@ -36533,14 +38155,16 @@
|
|
|
36533
38155
|
}
|
|
36534
38156
|
}
|
|
36535
38157
|
}
|
|
36536
|
-
}
|
|
36537
|
-
|
|
36538
|
-
|
|
36539
|
-
|
|
38158
|
+
}
|
|
38159
|
+
},
|
|
38160
|
+
"/organization/{organization_id}/domain/{domain}/verify": {
|
|
38161
|
+
"post": {
|
|
38162
|
+
"operationId": "organization/verifyDomain",
|
|
38163
|
+
"summary": "Verify an Organization's email domain",
|
|
36540
38164
|
"tags": [
|
|
36541
38165
|
"organization"
|
|
36542
38166
|
],
|
|
36543
|
-
"description": "
|
|
38167
|
+
"description": "Looks up the TXT record `_faable-challenge.<domain>` and, when it holds `faable-verification=<verification_token>`, marks the domain verified. Pro plan (`plan_required`; `plan_unavailable` when the plan cannot be checked). A domain is verified by one organization of the tenant at most (`organization_domain_taken`).",
|
|
36544
38168
|
"parameters": [
|
|
36545
38169
|
{
|
|
36546
38170
|
"schema": {
|
|
@@ -36549,6 +38173,14 @@
|
|
|
36549
38173
|
"in": "path",
|
|
36550
38174
|
"name": "organization_id",
|
|
36551
38175
|
"required": true
|
|
38176
|
+
},
|
|
38177
|
+
{
|
|
38178
|
+
"schema": {
|
|
38179
|
+
"type": "string"
|
|
38180
|
+
},
|
|
38181
|
+
"in": "path",
|
|
38182
|
+
"name": "domain",
|
|
38183
|
+
"required": true
|
|
36552
38184
|
}
|
|
36553
38185
|
],
|
|
36554
38186
|
"security": [
|
|
@@ -36558,80 +38190,184 @@
|
|
|
36558
38190
|
],
|
|
36559
38191
|
"responses": {
|
|
36560
38192
|
"200": {
|
|
36561
|
-
"description": "
|
|
38193
|
+
"description": "Default Response",
|
|
36562
38194
|
"content": {
|
|
36563
38195
|
"application/json": {
|
|
36564
38196
|
"schema": {
|
|
36565
38197
|
"type": "object",
|
|
36566
38198
|
"required": [
|
|
36567
|
-
"
|
|
36568
|
-
"
|
|
36569
|
-
"slug",
|
|
36570
|
-
"description",
|
|
36571
|
-
"logo_url",
|
|
36572
|
-
"admins",
|
|
36573
|
-
"account",
|
|
36574
|
-
"createdAt"
|
|
38199
|
+
"organization",
|
|
38200
|
+
"record"
|
|
36575
38201
|
],
|
|
36576
38202
|
"properties": {
|
|
36577
|
-
"
|
|
36578
|
-
"type": "string",
|
|
36579
|
-
"description": "Organization ID"
|
|
36580
|
-
},
|
|
36581
|
-
"name": {
|
|
36582
|
-
"type": "string",
|
|
36583
|
-
"description": "Human-readable name of the organization.",
|
|
36584
|
-
"example": "Acme Inc."
|
|
36585
|
-
},
|
|
36586
|
-
"slug": {
|
|
36587
|
-
"type": "string",
|
|
36588
|
-
"description": "URL-safe identifier derived from `name`. Unique within the tenant.",
|
|
36589
|
-
"example": "acme-inc"
|
|
36590
|
-
},
|
|
36591
|
-
"description": {
|
|
36592
|
-
"type": "string",
|
|
36593
|
-
"description": "Optional free-form description.",
|
|
36594
|
-
"nullable": true
|
|
36595
|
-
},
|
|
36596
|
-
"logo_url": {
|
|
36597
|
-
"type": "string",
|
|
36598
|
-
"description": "Optional URL of the organization logo.",
|
|
36599
|
-
"nullable": true
|
|
36600
|
-
},
|
|
36601
|
-
"admins": {
|
|
36602
|
-
"type": "array",
|
|
36603
|
-
"items": {
|
|
36604
|
-
"type": "string"
|
|
36605
|
-
},
|
|
36606
|
-
"description": "Ids of the users who manage the organization: its teams and its identity settings. Being an admin does not grant access to any team; team access is team membership."
|
|
36607
|
-
},
|
|
36608
|
-
"account": {
|
|
36609
|
-
"type": "string",
|
|
36610
|
-
"description": "Object is related with this account"
|
|
36611
|
-
},
|
|
36612
|
-
"metadata": {
|
|
38203
|
+
"organization": {
|
|
36613
38204
|
"type": "object",
|
|
36614
|
-
"
|
|
36615
|
-
|
|
36616
|
-
|
|
36617
|
-
|
|
36618
|
-
|
|
36619
|
-
|
|
36620
|
-
|
|
36621
|
-
|
|
38205
|
+
"required": [
|
|
38206
|
+
"id",
|
|
38207
|
+
"name",
|
|
38208
|
+
"slug",
|
|
38209
|
+
"description",
|
|
38210
|
+
"logo_url",
|
|
38211
|
+
"domains",
|
|
38212
|
+
"auto_join",
|
|
38213
|
+
"admins",
|
|
38214
|
+
"account",
|
|
38215
|
+
"createdAt"
|
|
38216
|
+
],
|
|
38217
|
+
"properties": {
|
|
38218
|
+
"id": {
|
|
38219
|
+
"type": "string",
|
|
38220
|
+
"description": "Organization ID"
|
|
38221
|
+
},
|
|
38222
|
+
"name": {
|
|
38223
|
+
"type": "string",
|
|
38224
|
+
"description": "Human-readable name of the organization.",
|
|
38225
|
+
"example": "Acme Inc."
|
|
38226
|
+
},
|
|
38227
|
+
"slug": {
|
|
38228
|
+
"type": "string",
|
|
38229
|
+
"description": "URL-safe identifier derived from `name`. Unique within the tenant.",
|
|
38230
|
+
"example": "acme-inc"
|
|
38231
|
+
},
|
|
38232
|
+
"description": {
|
|
38233
|
+
"type": "string",
|
|
38234
|
+
"description": "Optional free-form description.",
|
|
38235
|
+
"nullable": true
|
|
38236
|
+
},
|
|
38237
|
+
"logo_url": {
|
|
38238
|
+
"type": "string",
|
|
38239
|
+
"description": "Optional URL of the organization logo.",
|
|
38240
|
+
"nullable": true
|
|
38241
|
+
},
|
|
38242
|
+
"domains": {
|
|
38243
|
+
"type": "array",
|
|
38244
|
+
"items": {
|
|
38245
|
+
"type": "object",
|
|
38246
|
+
"required": [
|
|
38247
|
+
"domain",
|
|
38248
|
+
"verification_token",
|
|
38249
|
+
"verified_at"
|
|
38250
|
+
],
|
|
38251
|
+
"properties": {
|
|
38252
|
+
"domain": {
|
|
38253
|
+
"type": "string",
|
|
38254
|
+
"example": "acme.com"
|
|
38255
|
+
},
|
|
38256
|
+
"verification_token": {
|
|
38257
|
+
"type": "string",
|
|
38258
|
+
"description": "Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`."
|
|
38259
|
+
},
|
|
38260
|
+
"verified_at": {
|
|
38261
|
+
"type": "string",
|
|
38262
|
+
"format": "date-time",
|
|
38263
|
+
"description": "When the TXT record was found. `null` = not verified.",
|
|
38264
|
+
"nullable": true
|
|
38265
|
+
}
|
|
38266
|
+
}
|
|
38267
|
+
},
|
|
38268
|
+
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
38269
|
+
},
|
|
38270
|
+
"auto_join": {
|
|
38271
|
+
"type": "array",
|
|
38272
|
+
"items": {
|
|
38273
|
+
"type": "object",
|
|
38274
|
+
"required": [
|
|
38275
|
+
"team",
|
|
38276
|
+
"roles"
|
|
38277
|
+
],
|
|
38278
|
+
"properties": {
|
|
38279
|
+
"team": {
|
|
38280
|
+
"type": "string",
|
|
38281
|
+
"description": "A team of this organization."
|
|
38282
|
+
},
|
|
38283
|
+
"roles": {
|
|
38284
|
+
"type": "array",
|
|
38285
|
+
"items": {
|
|
38286
|
+
"type": "string"
|
|
38287
|
+
},
|
|
38288
|
+
"description": "Role ids the member gets in that team."
|
|
38289
|
+
}
|
|
38290
|
+
}
|
|
38291
|
+
},
|
|
38292
|
+
"description": "Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain."
|
|
38293
|
+
},
|
|
38294
|
+
"admins": {
|
|
38295
|
+
"type": "array",
|
|
38296
|
+
"items": {
|
|
38297
|
+
"type": "string"
|
|
38298
|
+
},
|
|
38299
|
+
"description": "Ids of the users who manage the organization: its teams and its identity settings. Being an admin does not grant access to any team; team access is team membership."
|
|
38300
|
+
},
|
|
38301
|
+
"account": {
|
|
38302
|
+
"type": "string",
|
|
38303
|
+
"description": "Object is related with this account"
|
|
38304
|
+
},
|
|
38305
|
+
"metadata": {
|
|
38306
|
+
"type": "object",
|
|
38307
|
+
"properties": {},
|
|
38308
|
+
"additionalProperties": true,
|
|
38309
|
+
"description": "OrganizationMetadata",
|
|
38310
|
+
"default": {}
|
|
38311
|
+
},
|
|
38312
|
+
"createdAt": {
|
|
38313
|
+
"type": "string",
|
|
38314
|
+
"description": "Organization creation date"
|
|
38315
|
+
},
|
|
38316
|
+
"updatedAt": {
|
|
38317
|
+
"type": "string",
|
|
38318
|
+
"description": "Organization updated date"
|
|
38319
|
+
}
|
|
38320
|
+
},
|
|
38321
|
+
"description": "Organization"
|
|
36622
38322
|
},
|
|
36623
|
-
"
|
|
36624
|
-
"
|
|
36625
|
-
|
|
38323
|
+
"record": {
|
|
38324
|
+
"anyOf": [
|
|
38325
|
+
{
|
|
38326
|
+
"type": "object",
|
|
38327
|
+
"required": [
|
|
38328
|
+
"type",
|
|
38329
|
+
"host",
|
|
38330
|
+
"expected",
|
|
38331
|
+
"observed",
|
|
38332
|
+
"ok"
|
|
38333
|
+
],
|
|
38334
|
+
"properties": {
|
|
38335
|
+
"type": {
|
|
38336
|
+
"type": "string",
|
|
38337
|
+
"enum": [
|
|
38338
|
+
"TXT"
|
|
38339
|
+
]
|
|
38340
|
+
},
|
|
38341
|
+
"host": {
|
|
38342
|
+
"type": "string"
|
|
38343
|
+
},
|
|
38344
|
+
"expected": {
|
|
38345
|
+
"type": "string"
|
|
38346
|
+
},
|
|
38347
|
+
"observed": {
|
|
38348
|
+
"type": "array",
|
|
38349
|
+
"items": {
|
|
38350
|
+
"type": "string"
|
|
38351
|
+
}
|
|
38352
|
+
},
|
|
38353
|
+
"ok": {
|
|
38354
|
+
"type": "boolean"
|
|
38355
|
+
}
|
|
38356
|
+
}
|
|
38357
|
+
},
|
|
38358
|
+
{
|
|
38359
|
+
"type": "null"
|
|
38360
|
+
}
|
|
38361
|
+
],
|
|
38362
|
+
"description": "`null` when the domain was already verified."
|
|
36626
38363
|
}
|
|
36627
|
-
}
|
|
36628
|
-
"description": "Organization"
|
|
38364
|
+
}
|
|
36629
38365
|
}
|
|
36630
38366
|
}
|
|
36631
38367
|
}
|
|
36632
38368
|
},
|
|
36633
38369
|
"400": {
|
|
36634
|
-
"description": "`
|
|
38370
|
+
"description": "`organization_domain_unverified` — The TXT record was not found or does not hold the expected value yet. `details.record` says what was expected and what resolves now; DNS can take a few minutes to propagate.\n\n`invalid_email_domain` — Not an email domain this organization can claim: it must be a plain domain name (`acme.com`), lowercase, without scheme, path or wildcard.\n\n`public_email_domain` — A public email provider (gmail.com, outlook.com…) cannot belong to an organization: anyone can have an address there.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
36635
38371
|
"content": {
|
|
36636
38372
|
"application/json": {
|
|
36637
38373
|
"schema": {
|
|
@@ -36645,7 +38381,9 @@
|
|
|
36645
38381
|
"error_code": {
|
|
36646
38382
|
"type": "string",
|
|
36647
38383
|
"enum": [
|
|
36648
|
-
"
|
|
38384
|
+
"organization_domain_unverified",
|
|
38385
|
+
"invalid_email_domain",
|
|
38386
|
+
"public_email_domain",
|
|
36649
38387
|
"validation_error"
|
|
36650
38388
|
]
|
|
36651
38389
|
}
|
|
@@ -36681,6 +38419,31 @@
|
|
|
36681
38419
|
}
|
|
36682
38420
|
}
|
|
36683
38421
|
},
|
|
38422
|
+
"402": {
|
|
38423
|
+
"description": "`plan_required` — The setting requires a higher plan. `message` says which.",
|
|
38424
|
+
"content": {
|
|
38425
|
+
"application/json": {
|
|
38426
|
+
"schema": {
|
|
38427
|
+
"allOf": [
|
|
38428
|
+
{
|
|
38429
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
38430
|
+
},
|
|
38431
|
+
{
|
|
38432
|
+
"type": "object",
|
|
38433
|
+
"properties": {
|
|
38434
|
+
"error_code": {
|
|
38435
|
+
"type": "string",
|
|
38436
|
+
"enum": [
|
|
38437
|
+
"plan_required"
|
|
38438
|
+
]
|
|
38439
|
+
}
|
|
38440
|
+
}
|
|
38441
|
+
}
|
|
38442
|
+
]
|
|
38443
|
+
}
|
|
38444
|
+
}
|
|
38445
|
+
}
|
|
38446
|
+
},
|
|
36684
38447
|
"403": {
|
|
36685
38448
|
"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.",
|
|
36686
38449
|
"content": {
|
|
@@ -36709,7 +38472,7 @@
|
|
|
36709
38472
|
}
|
|
36710
38473
|
},
|
|
36711
38474
|
"404": {
|
|
36712
|
-
"description": "`
|
|
38475
|
+
"description": "`organization_not_found` — No organization with that id in this account.\n\n`organization_domain_not_found` — The organization has no such domain.\n\n`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
36713
38476
|
"content": {
|
|
36714
38477
|
"application/json": {
|
|
36715
38478
|
"schema": {
|
|
@@ -36723,7 +38486,8 @@
|
|
|
36723
38486
|
"error_code": {
|
|
36724
38487
|
"type": "string",
|
|
36725
38488
|
"enum": [
|
|
36726
|
-
"
|
|
38489
|
+
"organization_not_found",
|
|
38490
|
+
"organization_domain_not_found",
|
|
36727
38491
|
"account_not_found"
|
|
36728
38492
|
]
|
|
36729
38493
|
}
|
|
@@ -36734,6 +38498,31 @@
|
|
|
36734
38498
|
}
|
|
36735
38499
|
}
|
|
36736
38500
|
},
|
|
38501
|
+
"409": {
|
|
38502
|
+
"description": "`organization_domain_taken` — Another organization of this tenant already verified this domain. A domain belongs to one organization.",
|
|
38503
|
+
"content": {
|
|
38504
|
+
"application/json": {
|
|
38505
|
+
"schema": {
|
|
38506
|
+
"allOf": [
|
|
38507
|
+
{
|
|
38508
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
38509
|
+
},
|
|
38510
|
+
{
|
|
38511
|
+
"type": "object",
|
|
38512
|
+
"properties": {
|
|
38513
|
+
"error_code": {
|
|
38514
|
+
"type": "string",
|
|
38515
|
+
"enum": [
|
|
38516
|
+
"organization_domain_taken"
|
|
38517
|
+
]
|
|
38518
|
+
}
|
|
38519
|
+
}
|
|
38520
|
+
}
|
|
38521
|
+
]
|
|
38522
|
+
}
|
|
38523
|
+
}
|
|
38524
|
+
}
|
|
38525
|
+
},
|
|
36737
38526
|
"429": {
|
|
36738
38527
|
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
36739
38528
|
"content": {
|
|
@@ -36783,39 +38572,43 @@
|
|
|
36783
38572
|
}
|
|
36784
38573
|
}
|
|
36785
38574
|
}
|
|
38575
|
+
},
|
|
38576
|
+
"503": {
|
|
38577
|
+
"description": "`plan_unavailable` — The plan could not be checked right now, and this setting is only for paid plans. Try again in a minute.",
|
|
38578
|
+
"content": {
|
|
38579
|
+
"application/json": {
|
|
38580
|
+
"schema": {
|
|
38581
|
+
"allOf": [
|
|
38582
|
+
{
|
|
38583
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
38584
|
+
},
|
|
38585
|
+
{
|
|
38586
|
+
"type": "object",
|
|
38587
|
+
"properties": {
|
|
38588
|
+
"error_code": {
|
|
38589
|
+
"type": "string",
|
|
38590
|
+
"enum": [
|
|
38591
|
+
"plan_unavailable"
|
|
38592
|
+
]
|
|
38593
|
+
}
|
|
38594
|
+
}
|
|
38595
|
+
}
|
|
38596
|
+
]
|
|
38597
|
+
}
|
|
38598
|
+
}
|
|
38599
|
+
}
|
|
36786
38600
|
}
|
|
36787
38601
|
}
|
|
36788
38602
|
}
|
|
36789
38603
|
},
|
|
36790
|
-
"/organization/{organization_id}/
|
|
36791
|
-
"
|
|
36792
|
-
"operationId": "organization/
|
|
36793
|
-
"summary": "
|
|
38604
|
+
"/organization/{organization_id}/domain/{domain}": {
|
|
38605
|
+
"delete": {
|
|
38606
|
+
"operationId": "organization/removeDomain",
|
|
38607
|
+
"summary": "Remove an email domain from an Organization",
|
|
36794
38608
|
"tags": [
|
|
36795
38609
|
"organization"
|
|
36796
38610
|
],
|
|
36797
|
-
"description": "
|
|
36798
|
-
"requestBody": {
|
|
36799
|
-
"required": true,
|
|
36800
|
-
"content": {
|
|
36801
|
-
"application/json": {
|
|
36802
|
-
"schema": {
|
|
36803
|
-
"type": "object",
|
|
36804
|
-
"required": [
|
|
36805
|
-
"user_id"
|
|
36806
|
-
],
|
|
36807
|
-
"properties": {
|
|
36808
|
-
"user_id": {
|
|
36809
|
-
"type": "string",
|
|
36810
|
-
"description": "Id of a user of this tenant.",
|
|
36811
|
-
"example": "user_6555fd29a1b2c3d4e5f60718"
|
|
36812
|
-
}
|
|
36813
|
-
},
|
|
36814
|
-
"additionalProperties": false
|
|
36815
|
-
}
|
|
36816
|
-
}
|
|
36817
|
-
}
|
|
36818
|
-
},
|
|
38611
|
+
"description": "Removes the domain, verified or not. Logins of people already in the organization are unaffected.",
|
|
36819
38612
|
"parameters": [
|
|
36820
38613
|
{
|
|
36821
38614
|
"schema": {
|
|
@@ -36824,6 +38617,14 @@
|
|
|
36824
38617
|
"in": "path",
|
|
36825
38618
|
"name": "organization_id",
|
|
36826
38619
|
"required": true
|
|
38620
|
+
},
|
|
38621
|
+
{
|
|
38622
|
+
"schema": {
|
|
38623
|
+
"type": "string"
|
|
38624
|
+
},
|
|
38625
|
+
"in": "path",
|
|
38626
|
+
"name": "domain",
|
|
38627
|
+
"required": true
|
|
36827
38628
|
}
|
|
36828
38629
|
],
|
|
36829
38630
|
"security": [
|
|
@@ -36844,6 +38645,8 @@
|
|
|
36844
38645
|
"slug",
|
|
36845
38646
|
"description",
|
|
36846
38647
|
"logo_url",
|
|
38648
|
+
"domains",
|
|
38649
|
+
"auto_join",
|
|
36847
38650
|
"admins",
|
|
36848
38651
|
"account",
|
|
36849
38652
|
"createdAt"
|
|
@@ -36873,6 +38676,58 @@
|
|
|
36873
38676
|
"description": "Optional URL of the organization logo.",
|
|
36874
38677
|
"nullable": true
|
|
36875
38678
|
},
|
|
38679
|
+
"domains": {
|
|
38680
|
+
"type": "array",
|
|
38681
|
+
"items": {
|
|
38682
|
+
"type": "object",
|
|
38683
|
+
"required": [
|
|
38684
|
+
"domain",
|
|
38685
|
+
"verification_token",
|
|
38686
|
+
"verified_at"
|
|
38687
|
+
],
|
|
38688
|
+
"properties": {
|
|
38689
|
+
"domain": {
|
|
38690
|
+
"type": "string",
|
|
38691
|
+
"example": "acme.com"
|
|
38692
|
+
},
|
|
38693
|
+
"verification_token": {
|
|
38694
|
+
"type": "string",
|
|
38695
|
+
"description": "Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`."
|
|
38696
|
+
},
|
|
38697
|
+
"verified_at": {
|
|
38698
|
+
"type": "string",
|
|
38699
|
+
"format": "date-time",
|
|
38700
|
+
"description": "When the TXT record was found. `null` = not verified.",
|
|
38701
|
+
"nullable": true
|
|
38702
|
+
}
|
|
38703
|
+
}
|
|
38704
|
+
},
|
|
38705
|
+
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
38706
|
+
},
|
|
38707
|
+
"auto_join": {
|
|
38708
|
+
"type": "array",
|
|
38709
|
+
"items": {
|
|
38710
|
+
"type": "object",
|
|
38711
|
+
"required": [
|
|
38712
|
+
"team",
|
|
38713
|
+
"roles"
|
|
38714
|
+
],
|
|
38715
|
+
"properties": {
|
|
38716
|
+
"team": {
|
|
38717
|
+
"type": "string",
|
|
38718
|
+
"description": "A team of this organization."
|
|
38719
|
+
},
|
|
38720
|
+
"roles": {
|
|
38721
|
+
"type": "array",
|
|
38722
|
+
"items": {
|
|
38723
|
+
"type": "string"
|
|
38724
|
+
},
|
|
38725
|
+
"description": "Role ids the member gets in that team."
|
|
38726
|
+
}
|
|
38727
|
+
}
|
|
38728
|
+
},
|
|
38729
|
+
"description": "Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain."
|
|
38730
|
+
},
|
|
36876
38731
|
"admins": {
|
|
36877
38732
|
"type": "array",
|
|
36878
38733
|
"items": {
|
|
@@ -36906,7 +38761,7 @@
|
|
|
36906
38761
|
}
|
|
36907
38762
|
},
|
|
36908
38763
|
"400": {
|
|
36909
|
-
"description": "`
|
|
38764
|
+
"description": "`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
36910
38765
|
"content": {
|
|
36911
38766
|
"application/json": {
|
|
36912
38767
|
"schema": {
|
|
@@ -36920,7 +38775,6 @@
|
|
|
36920
38775
|
"error_code": {
|
|
36921
38776
|
"type": "string",
|
|
36922
38777
|
"enum": [
|
|
36923
|
-
"invalid_user",
|
|
36924
38778
|
"validation_error"
|
|
36925
38779
|
]
|
|
36926
38780
|
}
|
|
@@ -36984,7 +38838,7 @@
|
|
|
36984
38838
|
}
|
|
36985
38839
|
},
|
|
36986
38840
|
"404": {
|
|
36987
|
-
"description": "`organization_not_found` — No organization with that id in this account.\n\n`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
38841
|
+
"description": "`organization_not_found` — No organization with that id in this account.\n\n`organization_domain_not_found` — The organization has no such domain.\n\n`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
36988
38842
|
"content": {
|
|
36989
38843
|
"application/json": {
|
|
36990
38844
|
"schema": {
|
|
@@ -36999,6 +38853,7 @@
|
|
|
36999
38853
|
"type": "string",
|
|
37000
38854
|
"enum": [
|
|
37001
38855
|
"organization_not_found",
|
|
38856
|
+
"organization_domain_not_found",
|
|
37002
38857
|
"account_not_found"
|
|
37003
38858
|
]
|
|
37004
38859
|
}
|
|
@@ -37062,14 +38917,55 @@
|
|
|
37062
38917
|
}
|
|
37063
38918
|
}
|
|
37064
38919
|
},
|
|
37065
|
-
"/organization/{organization_id}/
|
|
37066
|
-
"
|
|
37067
|
-
"operationId": "organization/
|
|
37068
|
-
"summary": "
|
|
38920
|
+
"/organization/{organization_id}/auto-join": {
|
|
38921
|
+
"put": {
|
|
38922
|
+
"operationId": "organization/setAutoJoin",
|
|
38923
|
+
"summary": "Set an Organization's auto-join rules",
|
|
37069
38924
|
"tags": [
|
|
37070
38925
|
"organization"
|
|
37071
38926
|
],
|
|
37072
|
-
"description": "
|
|
38927
|
+
"description": "Replaces the auto-join rules: whoever signs in with a verified email of one of the verified domains joins these teams (of this organization) with these roles. Nobody already a member is changed. Pro plan to turn it on; an empty list turns it off and is always allowed.",
|
|
38928
|
+
"requestBody": {
|
|
38929
|
+
"required": true,
|
|
38930
|
+
"content": {
|
|
38931
|
+
"application/json": {
|
|
38932
|
+
"schema": {
|
|
38933
|
+
"type": "object",
|
|
38934
|
+
"required": [
|
|
38935
|
+
"auto_join"
|
|
38936
|
+
],
|
|
38937
|
+
"properties": {
|
|
38938
|
+
"auto_join": {
|
|
38939
|
+
"type": "array",
|
|
38940
|
+
"items": {
|
|
38941
|
+
"type": "object",
|
|
38942
|
+
"required": [
|
|
38943
|
+
"team",
|
|
38944
|
+
"roles"
|
|
38945
|
+
],
|
|
38946
|
+
"properties": {
|
|
38947
|
+
"team": {
|
|
38948
|
+
"type": "string",
|
|
38949
|
+
"description": "A team of this organization."
|
|
38950
|
+
},
|
|
38951
|
+
"roles": {
|
|
38952
|
+
"type": "array",
|
|
38953
|
+
"items": {
|
|
38954
|
+
"type": "string"
|
|
38955
|
+
},
|
|
38956
|
+
"description": "Role ids of this tenant."
|
|
38957
|
+
}
|
|
38958
|
+
},
|
|
38959
|
+
"additionalProperties": false
|
|
38960
|
+
},
|
|
38961
|
+
"maxItems": 50
|
|
38962
|
+
}
|
|
38963
|
+
},
|
|
38964
|
+
"additionalProperties": false
|
|
38965
|
+
}
|
|
38966
|
+
}
|
|
38967
|
+
}
|
|
38968
|
+
},
|
|
37073
38969
|
"parameters": [
|
|
37074
38970
|
{
|
|
37075
38971
|
"schema": {
|
|
@@ -37078,14 +38974,6 @@
|
|
|
37078
38974
|
"in": "path",
|
|
37079
38975
|
"name": "organization_id",
|
|
37080
38976
|
"required": true
|
|
37081
|
-
},
|
|
37082
|
-
{
|
|
37083
|
-
"schema": {
|
|
37084
|
-
"type": "string"
|
|
37085
|
-
},
|
|
37086
|
-
"in": "path",
|
|
37087
|
-
"name": "user_id",
|
|
37088
|
-
"required": true
|
|
37089
38977
|
}
|
|
37090
38978
|
],
|
|
37091
38979
|
"security": [
|
|
@@ -37106,6 +38994,8 @@
|
|
|
37106
38994
|
"slug",
|
|
37107
38995
|
"description",
|
|
37108
38996
|
"logo_url",
|
|
38997
|
+
"domains",
|
|
38998
|
+
"auto_join",
|
|
37109
38999
|
"admins",
|
|
37110
39000
|
"account",
|
|
37111
39001
|
"createdAt"
|
|
@@ -37135,6 +39025,58 @@
|
|
|
37135
39025
|
"description": "Optional URL of the organization logo.",
|
|
37136
39026
|
"nullable": true
|
|
37137
39027
|
},
|
|
39028
|
+
"domains": {
|
|
39029
|
+
"type": "array",
|
|
39030
|
+
"items": {
|
|
39031
|
+
"type": "object",
|
|
39032
|
+
"required": [
|
|
39033
|
+
"domain",
|
|
39034
|
+
"verification_token",
|
|
39035
|
+
"verified_at"
|
|
39036
|
+
],
|
|
39037
|
+
"properties": {
|
|
39038
|
+
"domain": {
|
|
39039
|
+
"type": "string",
|
|
39040
|
+
"example": "acme.com"
|
|
39041
|
+
},
|
|
39042
|
+
"verification_token": {
|
|
39043
|
+
"type": "string",
|
|
39044
|
+
"description": "Put `faable-verification=<verification_token>` in a TXT record at `_faable-challenge.<domain>`, then call `POST /organization/{organization_id}/domain/{domain}/verify`."
|
|
39045
|
+
},
|
|
39046
|
+
"verified_at": {
|
|
39047
|
+
"type": "string",
|
|
39048
|
+
"format": "date-time",
|
|
39049
|
+
"description": "When the TXT record was found. `null` = not verified.",
|
|
39050
|
+
"nullable": true
|
|
39051
|
+
}
|
|
39052
|
+
}
|
|
39053
|
+
},
|
|
39054
|
+
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
39055
|
+
},
|
|
39056
|
+
"auto_join": {
|
|
39057
|
+
"type": "array",
|
|
39058
|
+
"items": {
|
|
39059
|
+
"type": "object",
|
|
39060
|
+
"required": [
|
|
39061
|
+
"team",
|
|
39062
|
+
"roles"
|
|
39063
|
+
],
|
|
39064
|
+
"properties": {
|
|
39065
|
+
"team": {
|
|
39066
|
+
"type": "string",
|
|
39067
|
+
"description": "A team of this organization."
|
|
39068
|
+
},
|
|
39069
|
+
"roles": {
|
|
39070
|
+
"type": "array",
|
|
39071
|
+
"items": {
|
|
39072
|
+
"type": "string"
|
|
39073
|
+
},
|
|
39074
|
+
"description": "Role ids the member gets in that team."
|
|
39075
|
+
}
|
|
39076
|
+
}
|
|
39077
|
+
},
|
|
39078
|
+
"description": "Whoever signs in with a verified email of one of the verified domains joins these teams. Empty = nobody joins by domain."
|
|
39079
|
+
},
|
|
37138
39080
|
"admins": {
|
|
37139
39081
|
"type": "array",
|
|
37140
39082
|
"items": {
|
|
@@ -37168,7 +39110,7 @@
|
|
|
37168
39110
|
}
|
|
37169
39111
|
},
|
|
37170
39112
|
"400": {
|
|
37171
|
-
"description": "`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
39113
|
+
"description": "`team_not_in_organization` — Auto-join can only put people in teams of the same organization. `details.teams` lists the others.\n\n`invalid_role` — The role belongs to another account.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
|
|
37172
39114
|
"content": {
|
|
37173
39115
|
"application/json": {
|
|
37174
39116
|
"schema": {
|
|
@@ -37182,6 +39124,8 @@
|
|
|
37182
39124
|
"error_code": {
|
|
37183
39125
|
"type": "string",
|
|
37184
39126
|
"enum": [
|
|
39127
|
+
"team_not_in_organization",
|
|
39128
|
+
"invalid_role",
|
|
37185
39129
|
"validation_error"
|
|
37186
39130
|
]
|
|
37187
39131
|
}
|
|
@@ -37217,6 +39161,31 @@
|
|
|
37217
39161
|
}
|
|
37218
39162
|
}
|
|
37219
39163
|
},
|
|
39164
|
+
"402": {
|
|
39165
|
+
"description": "`plan_required` — The setting requires a higher plan. `message` says which.",
|
|
39166
|
+
"content": {
|
|
39167
|
+
"application/json": {
|
|
39168
|
+
"schema": {
|
|
39169
|
+
"allOf": [
|
|
39170
|
+
{
|
|
39171
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
39172
|
+
},
|
|
39173
|
+
{
|
|
39174
|
+
"type": "object",
|
|
39175
|
+
"properties": {
|
|
39176
|
+
"error_code": {
|
|
39177
|
+
"type": "string",
|
|
39178
|
+
"enum": [
|
|
39179
|
+
"plan_required"
|
|
39180
|
+
]
|
|
39181
|
+
}
|
|
39182
|
+
}
|
|
39183
|
+
}
|
|
39184
|
+
]
|
|
39185
|
+
}
|
|
39186
|
+
}
|
|
39187
|
+
}
|
|
39188
|
+
},
|
|
37220
39189
|
"403": {
|
|
37221
39190
|
"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.",
|
|
37222
39191
|
"content": {
|
|
@@ -37245,7 +39214,7 @@
|
|
|
37245
39214
|
}
|
|
37246
39215
|
},
|
|
37247
39216
|
"404": {
|
|
37248
|
-
"description": "`organization_not_found` — No organization with that id in this account.\n\n`
|
|
39217
|
+
"description": "`organization_not_found` — No organization with that id in this account.\n\n`role_not_found` — No role with that id in this account.\n\n`account_not_found` — No Auth Account matches the request (domain, header or token).",
|
|
37249
39218
|
"content": {
|
|
37250
39219
|
"application/json": {
|
|
37251
39220
|
"schema": {
|
|
@@ -37260,7 +39229,7 @@
|
|
|
37260
39229
|
"type": "string",
|
|
37261
39230
|
"enum": [
|
|
37262
39231
|
"organization_not_found",
|
|
37263
|
-
"
|
|
39232
|
+
"role_not_found",
|
|
37264
39233
|
"account_not_found"
|
|
37265
39234
|
]
|
|
37266
39235
|
}
|
|
@@ -37271,8 +39240,8 @@
|
|
|
37271
39240
|
}
|
|
37272
39241
|
}
|
|
37273
39242
|
},
|
|
37274
|
-
"
|
|
37275
|
-
"description": "`
|
|
39243
|
+
"429": {
|
|
39244
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
37276
39245
|
"content": {
|
|
37277
39246
|
"application/json": {
|
|
37278
39247
|
"schema": {
|
|
@@ -37286,7 +39255,7 @@
|
|
|
37286
39255
|
"error_code": {
|
|
37287
39256
|
"type": "string",
|
|
37288
39257
|
"enum": [
|
|
37289
|
-
"
|
|
39258
|
+
"too_many_requests"
|
|
37290
39259
|
]
|
|
37291
39260
|
}
|
|
37292
39261
|
}
|
|
@@ -37296,8 +39265,8 @@
|
|
|
37296
39265
|
}
|
|
37297
39266
|
}
|
|
37298
39267
|
},
|
|
37299
|
-
"
|
|
37300
|
-
"description": "`
|
|
39268
|
+
"500": {
|
|
39269
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
37301
39270
|
"content": {
|
|
37302
39271
|
"application/json": {
|
|
37303
39272
|
"schema": {
|
|
@@ -37311,7 +39280,7 @@
|
|
|
37311
39280
|
"error_code": {
|
|
37312
39281
|
"type": "string",
|
|
37313
39282
|
"enum": [
|
|
37314
|
-
"
|
|
39283
|
+
"internal_error"
|
|
37315
39284
|
]
|
|
37316
39285
|
}
|
|
37317
39286
|
}
|
|
@@ -37321,8 +39290,8 @@
|
|
|
37321
39290
|
}
|
|
37322
39291
|
}
|
|
37323
39292
|
},
|
|
37324
|
-
"
|
|
37325
|
-
"description": "`
|
|
39293
|
+
"503": {
|
|
39294
|
+
"description": "`plan_unavailable` — The plan could not be checked right now, and this setting is only for paid plans. Try again in a minute.",
|
|
37326
39295
|
"content": {
|
|
37327
39296
|
"application/json": {
|
|
37328
39297
|
"schema": {
|
|
@@ -37336,7 +39305,7 @@
|
|
|
37336
39305
|
"error_code": {
|
|
37337
39306
|
"type": "string",
|
|
37338
39307
|
"enum": [
|
|
37339
|
-
"
|
|
39308
|
+
"plan_unavailable"
|
|
37340
39309
|
]
|
|
37341
39310
|
}
|
|
37342
39311
|
}
|