@faable/auth-sdk 2.7.83 → 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 +58 -51
- package/dist/api/types.d.ts +320 -1
- package/dist/version.js +2 -2
- package/package.json +1 -1
- package/spec/openapi.json +747 -2
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.",
|
|
@@ -3674,6 +3693,7 @@
|
|
|
3674
3693
|
"description",
|
|
3675
3694
|
"logo_url",
|
|
3676
3695
|
"domains",
|
|
3696
|
+
"auto_join",
|
|
3677
3697
|
"admins",
|
|
3678
3698
|
"account",
|
|
3679
3699
|
"createdAt"
|
|
@@ -3731,6 +3751,30 @@
|
|
|
3731
3751
|
},
|
|
3732
3752
|
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
3733
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
|
+
},
|
|
3734
3778
|
"admins": {
|
|
3735
3779
|
"type": "array",
|
|
3736
3780
|
"items": {
|
|
@@ -7809,7 +7853,7 @@
|
|
|
7809
7853
|
},
|
|
7810
7854
|
"ErrorCode": {
|
|
7811
7855
|
"type": "string",
|
|
7812
|
-
"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_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.",
|
|
7813
7857
|
"enum": [
|
|
7814
7858
|
"bad_request",
|
|
7815
7859
|
"validation_error",
|
|
@@ -7936,6 +7980,8 @@
|
|
|
7936
7980
|
"organization_domain_taken",
|
|
7937
7981
|
"organization_domain_unverified",
|
|
7938
7982
|
"plan_unavailable",
|
|
7983
|
+
"organization_domain_mismatch",
|
|
7984
|
+
"team_not_in_organization",
|
|
7939
7985
|
"organization_not_found",
|
|
7940
7986
|
"invalid_user",
|
|
7941
7987
|
"not_an_organization_admin",
|
|
@@ -14956,6 +15002,16 @@
|
|
|
14956
15002
|
"jwks_url": {
|
|
14957
15003
|
"type": "string"
|
|
14958
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
|
+
},
|
|
14959
15015
|
"scope": {
|
|
14960
15016
|
"type": "array",
|
|
14961
15017
|
"items": {
|
|
@@ -15183,6 +15239,11 @@
|
|
|
15183
15239
|
"enabled": {
|
|
15184
15240
|
"type": "boolean"
|
|
15185
15241
|
},
|
|
15242
|
+
"organization": {
|
|
15243
|
+
"type": "string",
|
|
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
|
|
15246
|
+
},
|
|
15186
15247
|
"enabled_clients": {
|
|
15187
15248
|
"type": "array",
|
|
15188
15249
|
"items": {
|
|
@@ -15607,6 +15668,11 @@
|
|
|
15607
15668
|
"enabled": {
|
|
15608
15669
|
"type": "boolean"
|
|
15609
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
|
+
},
|
|
15610
15676
|
"enabled_clients": {
|
|
15611
15677
|
"type": "array",
|
|
15612
15678
|
"items": {
|
|
@@ -16108,6 +16174,10 @@
|
|
|
16108
16174
|
}
|
|
16109
16175
|
],
|
|
16110
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
|
|
16111
16181
|
}
|
|
16112
16182
|
},
|
|
16113
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.",
|
|
@@ -16214,6 +16284,11 @@
|
|
|
16214
16284
|
"enabled": {
|
|
16215
16285
|
"type": "boolean"
|
|
16216
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
|
+
},
|
|
16217
16292
|
"enabled_clients": {
|
|
16218
16293
|
"type": "array",
|
|
16219
16294
|
"items": {
|
|
@@ -16638,6 +16713,11 @@
|
|
|
16638
16713
|
"enabled": {
|
|
16639
16714
|
"type": "boolean"
|
|
16640
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
|
+
},
|
|
16641
16721
|
"enabled_clients": {
|
|
16642
16722
|
"type": "array",
|
|
16643
16723
|
"items": {
|
|
@@ -17374,6 +17454,45 @@
|
|
|
17374
17454
|
"properties": {
|
|
17375
17455
|
"ok": {
|
|
17376
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)."
|
|
17377
17496
|
}
|
|
17378
17497
|
}
|
|
17379
17498
|
}
|
|
@@ -35811,6 +35930,7 @@
|
|
|
35811
35930
|
"description",
|
|
35812
35931
|
"logo_url",
|
|
35813
35932
|
"domains",
|
|
35933
|
+
"auto_join",
|
|
35814
35934
|
"admins",
|
|
35815
35935
|
"account",
|
|
35816
35936
|
"createdAt"
|
|
@@ -35868,6 +35988,30 @@
|
|
|
35868
35988
|
},
|
|
35869
35989
|
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
35870
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
|
+
},
|
|
35871
36015
|
"admins": {
|
|
35872
36016
|
"type": "array",
|
|
35873
36017
|
"items": {
|
|
@@ -36093,6 +36237,7 @@
|
|
|
36093
36237
|
"description",
|
|
36094
36238
|
"logo_url",
|
|
36095
36239
|
"domains",
|
|
36240
|
+
"auto_join",
|
|
36096
36241
|
"admins",
|
|
36097
36242
|
"account",
|
|
36098
36243
|
"createdAt"
|
|
@@ -36150,6 +36295,30 @@
|
|
|
36150
36295
|
},
|
|
36151
36296
|
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
36152
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
|
+
},
|
|
36153
36322
|
"admins": {
|
|
36154
36323
|
"type": "array",
|
|
36155
36324
|
"items": {
|
|
@@ -36410,6 +36579,7 @@
|
|
|
36410
36579
|
"description",
|
|
36411
36580
|
"logo_url",
|
|
36412
36581
|
"domains",
|
|
36582
|
+
"auto_join",
|
|
36413
36583
|
"admins",
|
|
36414
36584
|
"account",
|
|
36415
36585
|
"createdAt"
|
|
@@ -36467,6 +36637,30 @@
|
|
|
36467
36637
|
},
|
|
36468
36638
|
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
36469
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
|
+
},
|
|
36470
36664
|
"admins": {
|
|
36471
36665
|
"type": "array",
|
|
36472
36666
|
"items": {
|
|
@@ -36692,6 +36886,7 @@
|
|
|
36692
36886
|
"description",
|
|
36693
36887
|
"logo_url",
|
|
36694
36888
|
"domains",
|
|
36889
|
+
"auto_join",
|
|
36695
36890
|
"admins",
|
|
36696
36891
|
"account",
|
|
36697
36892
|
"createdAt"
|
|
@@ -36749,6 +36944,30 @@
|
|
|
36749
36944
|
},
|
|
36750
36945
|
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
36751
36946
|
},
|
|
36947
|
+
"auto_join": {
|
|
36948
|
+
"type": "array",
|
|
36949
|
+
"items": {
|
|
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
|
+
},
|
|
36752
36971
|
"admins": {
|
|
36753
36972
|
"type": "array",
|
|
36754
36973
|
"items": {
|
|
@@ -36996,6 +37215,7 @@
|
|
|
36996
37215
|
"description",
|
|
36997
37216
|
"logo_url",
|
|
36998
37217
|
"domains",
|
|
37218
|
+
"auto_join",
|
|
36999
37219
|
"admins",
|
|
37000
37220
|
"account",
|
|
37001
37221
|
"createdAt"
|
|
@@ -37053,6 +37273,30 @@
|
|
|
37053
37273
|
},
|
|
37054
37274
|
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
37055
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
|
+
},
|
|
37056
37300
|
"admins": {
|
|
37057
37301
|
"type": "array",
|
|
37058
37302
|
"items": {
|
|
@@ -37287,6 +37531,7 @@
|
|
|
37287
37531
|
"description",
|
|
37288
37532
|
"logo_url",
|
|
37289
37533
|
"domains",
|
|
37534
|
+
"auto_join",
|
|
37290
37535
|
"admins",
|
|
37291
37536
|
"account",
|
|
37292
37537
|
"createdAt"
|
|
@@ -37344,6 +37589,30 @@
|
|
|
37344
37589
|
},
|
|
37345
37590
|
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
37346
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
|
+
},
|
|
37347
37616
|
"admins": {
|
|
37348
37617
|
"type": "array",
|
|
37349
37618
|
"items": {
|
|
@@ -37616,6 +37885,7 @@
|
|
|
37616
37885
|
"description",
|
|
37617
37886
|
"logo_url",
|
|
37618
37887
|
"domains",
|
|
37888
|
+
"auto_join",
|
|
37619
37889
|
"admins",
|
|
37620
37890
|
"account",
|
|
37621
37891
|
"createdAt"
|
|
@@ -37673,6 +37943,30 @@
|
|
|
37673
37943
|
},
|
|
37674
37944
|
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
37675
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
|
+
},
|
|
37676
37970
|
"admins": {
|
|
37677
37971
|
"type": "array",
|
|
37678
37972
|
"items": {
|
|
@@ -37915,6 +38209,7 @@
|
|
|
37915
38209
|
"description",
|
|
37916
38210
|
"logo_url",
|
|
37917
38211
|
"domains",
|
|
38212
|
+
"auto_join",
|
|
37918
38213
|
"admins",
|
|
37919
38214
|
"account",
|
|
37920
38215
|
"createdAt"
|
|
@@ -37972,6 +38267,30 @@
|
|
|
37972
38267
|
},
|
|
37973
38268
|
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
37974
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
|
+
},
|
|
37975
38294
|
"admins": {
|
|
37976
38295
|
"type": "array",
|
|
37977
38296
|
"items": {
|
|
@@ -38327,6 +38646,7 @@
|
|
|
38327
38646
|
"description",
|
|
38328
38647
|
"logo_url",
|
|
38329
38648
|
"domains",
|
|
38649
|
+
"auto_join",
|
|
38330
38650
|
"admins",
|
|
38331
38651
|
"account",
|
|
38332
38652
|
"createdAt"
|
|
@@ -38384,6 +38704,30 @@
|
|
|
38384
38704
|
},
|
|
38385
38705
|
"description": "Email domains the organization claims. Only a verified one counts: it is how the organization's people are recognized."
|
|
38386
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
|
+
},
|
|
38387
38731
|
"admins": {
|
|
38388
38732
|
"type": "array",
|
|
38389
38733
|
"items": {
|
|
@@ -38573,6 +38917,407 @@
|
|
|
38573
38917
|
}
|
|
38574
38918
|
}
|
|
38575
38919
|
},
|
|
38920
|
+
"/organization/{organization_id}/auto-join": {
|
|
38921
|
+
"put": {
|
|
38922
|
+
"operationId": "organization/setAutoJoin",
|
|
38923
|
+
"summary": "Set an Organization's auto-join rules",
|
|
38924
|
+
"tags": [
|
|
38925
|
+
"organization"
|
|
38926
|
+
],
|
|
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
|
+
},
|
|
38969
|
+
"parameters": [
|
|
38970
|
+
{
|
|
38971
|
+
"schema": {
|
|
38972
|
+
"type": "string"
|
|
38973
|
+
},
|
|
38974
|
+
"in": "path",
|
|
38975
|
+
"name": "organization_id",
|
|
38976
|
+
"required": true
|
|
38977
|
+
}
|
|
38978
|
+
],
|
|
38979
|
+
"security": [
|
|
38980
|
+
{
|
|
38981
|
+
"bearerAuth": []
|
|
38982
|
+
}
|
|
38983
|
+
],
|
|
38984
|
+
"responses": {
|
|
38985
|
+
"200": {
|
|
38986
|
+
"description": "Organization",
|
|
38987
|
+
"content": {
|
|
38988
|
+
"application/json": {
|
|
38989
|
+
"schema": {
|
|
38990
|
+
"type": "object",
|
|
38991
|
+
"required": [
|
|
38992
|
+
"id",
|
|
38993
|
+
"name",
|
|
38994
|
+
"slug",
|
|
38995
|
+
"description",
|
|
38996
|
+
"logo_url",
|
|
38997
|
+
"domains",
|
|
38998
|
+
"auto_join",
|
|
38999
|
+
"admins",
|
|
39000
|
+
"account",
|
|
39001
|
+
"createdAt"
|
|
39002
|
+
],
|
|
39003
|
+
"properties": {
|
|
39004
|
+
"id": {
|
|
39005
|
+
"type": "string",
|
|
39006
|
+
"description": "Organization ID"
|
|
39007
|
+
},
|
|
39008
|
+
"name": {
|
|
39009
|
+
"type": "string",
|
|
39010
|
+
"description": "Human-readable name of the organization.",
|
|
39011
|
+
"example": "Acme Inc."
|
|
39012
|
+
},
|
|
39013
|
+
"slug": {
|
|
39014
|
+
"type": "string",
|
|
39015
|
+
"description": "URL-safe identifier derived from `name`. Unique within the tenant.",
|
|
39016
|
+
"example": "acme-inc"
|
|
39017
|
+
},
|
|
39018
|
+
"description": {
|
|
39019
|
+
"type": "string",
|
|
39020
|
+
"description": "Optional free-form description.",
|
|
39021
|
+
"nullable": true
|
|
39022
|
+
},
|
|
39023
|
+
"logo_url": {
|
|
39024
|
+
"type": "string",
|
|
39025
|
+
"description": "Optional URL of the organization logo.",
|
|
39026
|
+
"nullable": true
|
|
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
|
+
},
|
|
39080
|
+
"admins": {
|
|
39081
|
+
"type": "array",
|
|
39082
|
+
"items": {
|
|
39083
|
+
"type": "string"
|
|
39084
|
+
},
|
|
39085
|
+
"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."
|
|
39086
|
+
},
|
|
39087
|
+
"account": {
|
|
39088
|
+
"type": "string",
|
|
39089
|
+
"description": "Object is related with this account"
|
|
39090
|
+
},
|
|
39091
|
+
"metadata": {
|
|
39092
|
+
"type": "object",
|
|
39093
|
+
"properties": {},
|
|
39094
|
+
"additionalProperties": true,
|
|
39095
|
+
"description": "OrganizationMetadata",
|
|
39096
|
+
"default": {}
|
|
39097
|
+
},
|
|
39098
|
+
"createdAt": {
|
|
39099
|
+
"type": "string",
|
|
39100
|
+
"description": "Organization creation date"
|
|
39101
|
+
},
|
|
39102
|
+
"updatedAt": {
|
|
39103
|
+
"type": "string",
|
|
39104
|
+
"description": "Organization updated date"
|
|
39105
|
+
}
|
|
39106
|
+
},
|
|
39107
|
+
"description": "Organization"
|
|
39108
|
+
}
|
|
39109
|
+
}
|
|
39110
|
+
}
|
|
39111
|
+
},
|
|
39112
|
+
"400": {
|
|
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.",
|
|
39114
|
+
"content": {
|
|
39115
|
+
"application/json": {
|
|
39116
|
+
"schema": {
|
|
39117
|
+
"allOf": [
|
|
39118
|
+
{
|
|
39119
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
39120
|
+
},
|
|
39121
|
+
{
|
|
39122
|
+
"type": "object",
|
|
39123
|
+
"properties": {
|
|
39124
|
+
"error_code": {
|
|
39125
|
+
"type": "string",
|
|
39126
|
+
"enum": [
|
|
39127
|
+
"team_not_in_organization",
|
|
39128
|
+
"invalid_role",
|
|
39129
|
+
"validation_error"
|
|
39130
|
+
]
|
|
39131
|
+
}
|
|
39132
|
+
}
|
|
39133
|
+
}
|
|
39134
|
+
]
|
|
39135
|
+
}
|
|
39136
|
+
}
|
|
39137
|
+
}
|
|
39138
|
+
},
|
|
39139
|
+
"401": {
|
|
39140
|
+
"description": "`unauthorized` — The request carries no valid credentials.",
|
|
39141
|
+
"content": {
|
|
39142
|
+
"application/json": {
|
|
39143
|
+
"schema": {
|
|
39144
|
+
"allOf": [
|
|
39145
|
+
{
|
|
39146
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
39147
|
+
},
|
|
39148
|
+
{
|
|
39149
|
+
"type": "object",
|
|
39150
|
+
"properties": {
|
|
39151
|
+
"error_code": {
|
|
39152
|
+
"type": "string",
|
|
39153
|
+
"enum": [
|
|
39154
|
+
"unauthorized"
|
|
39155
|
+
]
|
|
39156
|
+
}
|
|
39157
|
+
}
|
|
39158
|
+
}
|
|
39159
|
+
]
|
|
39160
|
+
}
|
|
39161
|
+
}
|
|
39162
|
+
}
|
|
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
|
+
},
|
|
39189
|
+
"403": {
|
|
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.",
|
|
39191
|
+
"content": {
|
|
39192
|
+
"application/json": {
|
|
39193
|
+
"schema": {
|
|
39194
|
+
"allOf": [
|
|
39195
|
+
{
|
|
39196
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
39197
|
+
},
|
|
39198
|
+
{
|
|
39199
|
+
"type": "object",
|
|
39200
|
+
"properties": {
|
|
39201
|
+
"error_code": {
|
|
39202
|
+
"type": "string",
|
|
39203
|
+
"enum": [
|
|
39204
|
+
"forbidden",
|
|
39205
|
+
"insufficient_scope",
|
|
39206
|
+
"user_suspended"
|
|
39207
|
+
]
|
|
39208
|
+
}
|
|
39209
|
+
}
|
|
39210
|
+
}
|
|
39211
|
+
]
|
|
39212
|
+
}
|
|
39213
|
+
}
|
|
39214
|
+
}
|
|
39215
|
+
},
|
|
39216
|
+
"404": {
|
|
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).",
|
|
39218
|
+
"content": {
|
|
39219
|
+
"application/json": {
|
|
39220
|
+
"schema": {
|
|
39221
|
+
"allOf": [
|
|
39222
|
+
{
|
|
39223
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
39224
|
+
},
|
|
39225
|
+
{
|
|
39226
|
+
"type": "object",
|
|
39227
|
+
"properties": {
|
|
39228
|
+
"error_code": {
|
|
39229
|
+
"type": "string",
|
|
39230
|
+
"enum": [
|
|
39231
|
+
"organization_not_found",
|
|
39232
|
+
"role_not_found",
|
|
39233
|
+
"account_not_found"
|
|
39234
|
+
]
|
|
39235
|
+
}
|
|
39236
|
+
}
|
|
39237
|
+
}
|
|
39238
|
+
]
|
|
39239
|
+
}
|
|
39240
|
+
}
|
|
39241
|
+
}
|
|
39242
|
+
},
|
|
39243
|
+
"429": {
|
|
39244
|
+
"description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
|
|
39245
|
+
"content": {
|
|
39246
|
+
"application/json": {
|
|
39247
|
+
"schema": {
|
|
39248
|
+
"allOf": [
|
|
39249
|
+
{
|
|
39250
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
39251
|
+
},
|
|
39252
|
+
{
|
|
39253
|
+
"type": "object",
|
|
39254
|
+
"properties": {
|
|
39255
|
+
"error_code": {
|
|
39256
|
+
"type": "string",
|
|
39257
|
+
"enum": [
|
|
39258
|
+
"too_many_requests"
|
|
39259
|
+
]
|
|
39260
|
+
}
|
|
39261
|
+
}
|
|
39262
|
+
}
|
|
39263
|
+
]
|
|
39264
|
+
}
|
|
39265
|
+
}
|
|
39266
|
+
}
|
|
39267
|
+
},
|
|
39268
|
+
"500": {
|
|
39269
|
+
"description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
|
|
39270
|
+
"content": {
|
|
39271
|
+
"application/json": {
|
|
39272
|
+
"schema": {
|
|
39273
|
+
"allOf": [
|
|
39274
|
+
{
|
|
39275
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
39276
|
+
},
|
|
39277
|
+
{
|
|
39278
|
+
"type": "object",
|
|
39279
|
+
"properties": {
|
|
39280
|
+
"error_code": {
|
|
39281
|
+
"type": "string",
|
|
39282
|
+
"enum": [
|
|
39283
|
+
"internal_error"
|
|
39284
|
+
]
|
|
39285
|
+
}
|
|
39286
|
+
}
|
|
39287
|
+
}
|
|
39288
|
+
]
|
|
39289
|
+
}
|
|
39290
|
+
}
|
|
39291
|
+
}
|
|
39292
|
+
},
|
|
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.",
|
|
39295
|
+
"content": {
|
|
39296
|
+
"application/json": {
|
|
39297
|
+
"schema": {
|
|
39298
|
+
"allOf": [
|
|
39299
|
+
{
|
|
39300
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
39301
|
+
},
|
|
39302
|
+
{
|
|
39303
|
+
"type": "object",
|
|
39304
|
+
"properties": {
|
|
39305
|
+
"error_code": {
|
|
39306
|
+
"type": "string",
|
|
39307
|
+
"enum": [
|
|
39308
|
+
"plan_unavailable"
|
|
39309
|
+
]
|
|
39310
|
+
}
|
|
39311
|
+
}
|
|
39312
|
+
}
|
|
39313
|
+
]
|
|
39314
|
+
}
|
|
39315
|
+
}
|
|
39316
|
+
}
|
|
39317
|
+
}
|
|
39318
|
+
}
|
|
39319
|
+
}
|
|
39320
|
+
},
|
|
38576
39321
|
"/teammember": {
|
|
38577
39322
|
"get": {
|
|
38578
39323
|
"operationId": "teammember/list",
|