@faable/auth-sdk 2.7.9 → 2.7.11

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.
@@ -2625,7 +2625,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
2625
2625
  * @throws {FaableApiError} `connection_misconfigured` (400) — The connection is missing settings needed to talk to its provider.
2626
2626
  * @throws {FaableApiError} `no_provider_token` (400) — The identity holds no provider access token.
2627
2627
  * @throws {FaableApiError} `no_refresh_token` (400) — The identity holds no provider refresh token, so it cannot be refreshed.
2628
- * @throws {FaableApiError} `provider_error` (400) — The upstream identity provider returned an error. `message` carries it.
2628
+ * @throws {FaableApiError} `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.
2629
2629
  * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2630
2630
  * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2631
2631
  * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
@@ -926,7 +926,7 @@ export class GeneratedFaableAuthApi extends FaableApi {
926
926
  * @throws {FaableApiError} `connection_misconfigured` (400) — The connection is missing settings needed to talk to its provider.
927
927
  * @throws {FaableApiError} `no_provider_token` (400) — The identity holds no provider access token.
928
928
  * @throws {FaableApiError} `no_refresh_token` (400) — The identity holds no provider refresh token, so it cannot be refreshed.
929
- * @throws {FaableApiError} `provider_error` (400) — The upstream identity provider returned an error. `message` carries it.
929
+ * @throws {FaableApiError} `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.
930
930
  * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
931
931
  * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
932
932
  * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
@@ -6244,7 +6244,7 @@ export interface components {
6244
6244
  * - `system_resource` (403): The resource is managed by Faable and cannot be modified or deleted.
6245
6245
  * - `invalid_request` (400): A required OAuth parameter is missing or two of them are incompatible. `message` says which.
6246
6246
  * - `invalid_device_code` (400): The device or user code is invalid or expired.
6247
- * - `provider_error` (400): The upstream identity provider returned an error. `message` carries it.
6247
+ * - `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.
6248
6248
  * - `identity_already_linked` (409): That external identity is already linked to another user.
6249
6249
  * - `identity_link_denied` (409): That external identity cannot be linked to this user.
6250
6250
  * - `identity_conflict` (409): The user already has a linked identity for this connection.
@@ -13317,7 +13317,7 @@ export interface operations {
13317
13317
  *
13318
13318
  * `no_refresh_token` — The identity holds no provider refresh token, so it cannot be refreshed.
13319
13319
  *
13320
- * `provider_error` — The upstream identity provider returned an error. `message` carries it.
13320
+ * `provider_error` — 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.
13321
13321
  *
13322
13322
  * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
13323
13323
  */
@@ -23936,6 +23936,8 @@ export interface operations {
23936
23936
  link?: boolean;
23937
23937
  /** @description Preview token from `POST /loginflow/:id/preview-token`. This login runs the DRAFT of that flow, for this browser only; nothing is published. Invalid or expired tokens are ignored. */
23938
23938
  flow_preview?: string;
23939
+ /** @description Resume the login transaction the hosted screen has parked, instead of starting a new one. Used by the screen itself when the person picks a method: everything that belongs to the Relying Party — `code_challenge`, `state`, `redirect_uri`, `nonce`, `scope`, `audience` — is taken from the parked transaction and CANNOT be overridden by the query. Only `connection` is read from the caller. */
23940
+ resume_state?: string;
23939
23941
  /** @description Single-use ticket from `POST /oauth/link_ticket`. With `link=true`, establishes the cookie session for the ticket’s user before linking — for Relying Parties that hold tokens but no cookie session (direct grants such as passwordless OTP). Invalid or expired tickets are ignored. */
23940
23942
  link_ticket?: string;
23941
23943
  client_id: string;
@@ -23976,6 +23978,8 @@ export interface operations {
23976
23978
  *
23977
23979
  * `invalid_redirect_uri` — The redirect URI is not registered for the client.
23978
23980
  *
23981
+ * `invalid_state` — The `state` is missing, expired, or does not describe a resumable step.
23982
+ *
23979
23983
  * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
23980
23984
  */
23981
23985
  400: {
@@ -23985,7 +23989,19 @@ export interface operations {
23985
23989
  content: {
23986
23990
  "application/json": components["schemas"]["ErrorResponse"] & {
23987
23991
  /** @enum {string} */
23988
- error_code?: "invalid_client" | "invalid_redirect_uri" | "validation_error";
23992
+ error_code?: "invalid_client" | "invalid_redirect_uri" | "invalid_state" | "validation_error";
23993
+ };
23994
+ };
23995
+ };
23996
+ /** @description `state_mismatch` — The `state` belongs to another account, session, client or ceremony. */
23997
+ 401: {
23998
+ headers: {
23999
+ [name: string]: unknown;
24000
+ };
24001
+ content: {
24002
+ "application/json": components["schemas"]["ErrorResponse"] & {
24003
+ /** @enum {string} */
24004
+ error_code?: "state_mismatch";
23989
24005
  };
23990
24006
  };
23991
24007
  };
@@ -24781,7 +24797,7 @@ export interface operations {
24781
24797
  *
24782
24798
  * `invalid_state` — The `state` is missing, expired, or does not describe a resumable step.
24783
24799
  *
24784
- * `provider_error` — The upstream identity provider returned an error. `message` carries it.
24800
+ * `provider_error` — 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.
24785
24801
  *
24786
24802
  * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
24787
24803
  */
package/dist/version.js CHANGED
@@ -9,13 +9,13 @@
9
9
  // login pages could not import the SDK at all. Same pattern as auth-js.
10
10
  //
11
11
  // The sentinels MUST stay byte-identical to the `from` values in `.releaserc`.
12
- export const version = "2.7.9";
12
+ export const version = "2.7.11";
13
13
  // Short git SHA of the released commit. The version dates a build; this names
14
14
  // the exact tree, so a canonical log line or an audit entry leads straight to
15
15
  // `git show <sha>`. Deliberately NOT hex: an unreleased build (dev, a local
16
16
  // link) cannot be mistaken for a real commit — auth only records values that
17
17
  // look like a SHA, and this one never will.
18
- export const commit = "ffe5415";
18
+ export const commit = "a931167";
19
19
  // What this SDK writes in `x-faable-client`. Exported for a consumer that
20
20
  // builds a strategy on its own (outside `FaableAuthApi`) and still wants the
21
21
  // token request attributed — a bare `authClientCredentials` stamps only what
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faable/auth-sdk",
3
- "version": "2.7.9",
3
+ "version": "2.7.11",
4
4
  "author": "Marc Pomar <marc@faable.com>",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
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.25.4",
6
+ "version": "2.25.6",
7
7
  "license": {
8
8
  "name": "private",
9
9
  "url": "https://faable.com/docs/platform/privacy-policy"
@@ -6820,7 +6820,7 @@
6820
6820
  },
6821
6821
  "ErrorCode": {
6822
6822
  "type": "string",
6823
- "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- `plan_required` (402): The setting requires a higher plan. `message` says which.\n- `not_logged_in` (401): There is no signed-in session for this request.\n- `invalid_token` (401): The bearer token is missing, malformed, expired or has no subject.\n- `not_owner` (403): The caller may only perform this operation on their own user.\n- `user_suspended` (403): The user is suspended and cannot sign in or be modified.\n- `invalid_credentials` (400): The email/username or password is incorrect.\n- `login_denied` (401): A post-login Action denied the sign-in. `message` carries the reason it gave. On token grants it is a 403 with `error: invalid_grant`.\n- `signup_denied` (403): A pre-signup Action or an active block denied the sign-up. `message` carries the reason.\n- `client_credentials_denied` (401): An Action denied the client_credentials grant. `message` carries the reason.\n- `signup_disabled` (403): Self-service sign-up is disabled on this connection.\n- `email_taken` (409): Another user in this account already uses that email.\n- `invalid_email` (400): The email address is not valid.\n- `same_email` (400): The new email is the same as the current one.\n- `user_has_no_email` (400): The operation needs an email but the user has none.\n- `password_too_weak` (400): The password does not meet the connection policy. `message` lists each unmet rule.\n- `invalid_code` (400): The verification code is wrong, expired or already used.\n- `invalid_phone` (400): The phone number is not E.164 and could not be resolved with the account default country. Include the country code.\n- `phone_changed` (400): The phone on the user changed after the code was sent. Start again.\n- `phone_already_verified` (409): The user already has a verified phone; the number cannot be swapped from the screen.\n- `sms_unavailable` (409): This account cannot send SMS right now. The suffix says why: `sms_unavailable:plan`, `:quota`, `:provider`.\n- `sms_failed` (409): The SMS provider rejected the message.\n- `invalid_state` (400): The `state` is missing, expired, or does not describe a resumable step.\n- `state_mismatch` (401): The `state` belongs to another account, session, client or ceremony.\n- `invalid_ticket` (400): The ticket does not exist or is not the kind this endpoint accepts.\n- `ticket_used` (400): The ticket was already consumed.\n- `ticket_expired` (400): The ticket is past its expiry.\n- `ticket_not_found` (404): No ticket with that id belongs to this user.\n- `credential_not_found` (404): The user has no password credential on this connection.\n- `invalid_link` (400): The magic link is malformed.\n- `expired_link` (400): The magic link token was not found or has expired.\n- `invalid_otp` (401): The one-time password is wrong or expired.\n- `invalid_client` (400): The `client_id` in the request does not name a client of this account.\n- `client_not_found` (404): No client with that `client_id`.\n- `client_mismatch` (401): The client belongs to a different account.\n- `invalid_client_metadata` (400): Dynamic client registration rejected a field (RFC 7591). `message` names it.\n- `invalid_connection` (400): The connection does not exist, is disabled, or is not of the type this flow needs.\n- `connection_required` (400): No connection was given and the client has no `default_connection`.\n- `connection_misconfigured` (400): The connection is missing settings needed to talk to its provider.\n- `passwordless_unavailable` (400): No passwordless connection is configured or enabled for this client.\n- `ambiguous_connection` (400): Several connections match; pass `connection_id`.\n- `invalid_redirect_uri` (400): The redirect URI is not registered for the client.\n- `origin_not_allowed` (403): The request `Origin` is not in the client's Allowed Web Origins.\n- `audience_not_found` (403): The `audience` does not name an API registered in this account.\n- `system_resource` (403): The resource is managed by Faable and cannot be modified or deleted.\n- `invalid_request` (400): A required OAuth parameter is missing or two of them are incompatible. `message` says which.\n- `invalid_device_code` (400): The device or user code is invalid or expired.\n- `provider_error` (400): The upstream identity provider returned an error. `message` carries it.\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- `totp_not_allowed` (401): This account does not accept authenticator apps.\n- `no_usable_factor` (400): The user has no confirmed second factor to challenge.\n- `factor_not_found` (400): No factor with that id belongs to this user.\n- `factor_already_confirmed` (400): The factor was already confirmed.\n- `invalid_factor` (400): The factor cannot be verified (no secret material).\n- `session_missing` (401): The session that started this login no longer exists.\n- `passkey_verification_failed` (400): The WebAuthn response could not be verified.\n- `no_passkey_enrolled` (400): The user has no passkey to sign in with.\n- `malformed_credential` (400): The WebAuthn credential is malformed.\n- `unknown_passkey` (401): The passkey is not enrolled for this user.\n- `invalid_passkey` (401): The passkey assertion did not verify.\n- `invite_not_found` (404): No invite with that id in this account.\n- `invite_used` (400): The invite was already accepted.\n- `already_member` (400): The user is already a member of the team.\n- `not_a_member` (404): The user is not a member of the team.\n- `role_not_found` (404): No role with that id in this account.\n- `invalid_role` (400): The role belongs to another account.\n- `flow_not_found` (400): The login flow does not exist in this account.\n- `revision_not_found` (404): The revision is not in the flow history.",
6823
+ "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- `plan_required` (402): The setting requires a higher plan. `message` says which.\n- `not_logged_in` (401): There is no signed-in session for this request.\n- `invalid_token` (401): The bearer token is missing, malformed, expired or has no subject.\n- `not_owner` (403): The caller may only perform this operation on their own user.\n- `user_suspended` (403): The user is suspended and cannot sign in or be modified.\n- `invalid_credentials` (400): The email/username or password is incorrect.\n- `login_denied` (401): A post-login Action denied the sign-in. `message` carries the reason it gave. On token grants it is a 403 with `error: invalid_grant`.\n- `signup_denied` (403): A pre-signup Action or an active block denied the sign-up. `message` carries the reason.\n- `client_credentials_denied` (401): An Action denied the client_credentials grant. `message` carries the reason.\n- `signup_disabled` (403): Self-service sign-up is disabled on this connection.\n- `email_taken` (409): Another user in this account already uses that email.\n- `invalid_email` (400): The email address is not valid.\n- `same_email` (400): The new email is the same as the current one.\n- `user_has_no_email` (400): The operation needs an email but the user has none.\n- `password_too_weak` (400): The password does not meet the connection policy. `message` lists each unmet rule.\n- `invalid_code` (400): The verification code is wrong, expired or already used.\n- `invalid_phone` (400): The phone number is not E.164 and could not be resolved with the account default country. Include the country code.\n- `phone_changed` (400): The phone on the user changed after the code was sent. Start again.\n- `phone_already_verified` (409): The user already has a verified phone; the number cannot be swapped from the screen.\n- `sms_unavailable` (409): This account cannot send SMS right now. The suffix says why: `sms_unavailable:plan`, `:quota`, `:provider`.\n- `sms_failed` (409): The SMS provider rejected the message.\n- `invalid_state` (400): The `state` is missing, expired, or does not describe a resumable step.\n- `state_mismatch` (401): The `state` belongs to another account, session, client or ceremony.\n- `invalid_ticket` (400): The ticket does not exist or is not the kind this endpoint accepts.\n- `ticket_used` (400): The ticket was already consumed.\n- `ticket_expired` (400): The ticket is past its expiry.\n- `ticket_not_found` (404): No ticket with that id belongs to this user.\n- `credential_not_found` (404): The user has no password credential on this connection.\n- `invalid_link` (400): The magic link is malformed.\n- `expired_link` (400): The magic link token was not found or has expired.\n- `invalid_otp` (401): The one-time password is wrong or expired.\n- `invalid_client` (400): The `client_id` in the request does not name a client of this account.\n- `client_not_found` (404): No client with that `client_id`.\n- `client_mismatch` (401): The client belongs to a different account.\n- `invalid_client_metadata` (400): Dynamic client registration rejected a field (RFC 7591). `message` names it.\n- `invalid_connection` (400): The connection does not exist, is disabled, or is not of the type this flow needs.\n- `connection_required` (400): No connection was given and the client has no `default_connection`.\n- `connection_misconfigured` (400): The connection is missing settings needed to talk to its provider.\n- `passwordless_unavailable` (400): No passwordless connection is configured or enabled for this client.\n- `ambiguous_connection` (400): Several connections match; pass `connection_id`.\n- `invalid_redirect_uri` (400): The redirect URI is not registered for the client.\n- `origin_not_allowed` (403): The request `Origin` is not in the client's Allowed Web Origins.\n- `audience_not_found` (403): The `audience` does not name an API registered in this account.\n- `system_resource` (403): The resource is managed by Faable and cannot be modified or deleted.\n- `invalid_request` (400): A required OAuth parameter is missing or two of them are incompatible. `message` says which.\n- `invalid_device_code` (400): The device or user code is invalid or expired.\n- `provider_error` (400): The upstream identity provider returned an error. The suffix is the provider’s own code, when it sent one: `provider_error:bad_refresh_token` (the user must re-authorize), `provider_error:incorrect_client_credentials` (our configuration, the user can do nothing). `details.provider_error_description` carries the provider’s sentence.\n- `identity_already_linked` (409): That external identity is already linked to another user.\n- `identity_link_denied` (409): That external identity cannot be linked to this user.\n- `identity_conflict` (409): The user already has a linked identity for this connection.\n- `identity_orphaned` (400): The identity pointed at a user that no longer exists; it was removed. Sign in again.\n- `no_provider_token` (400): The identity holds no provider access token.\n- `no_refresh_token` (400): The identity holds no provider refresh token, so it cannot be refreshed.\n- `action_unavailable` (401): The Action that paused this login is disabled or belongs elsewhere.\n- `login_flow_misconfigured` (500): The login flow of this account cannot run. `message` carries the node error.\n- `mfa_required` (403): The login needs a second factor that this flow cannot collect, or one is still pending on the session.\n- `step_up_required` (403): Confirm an existing factor before changing your factors.\n- `interaction_required` (403): An Action asked for a redirect on a non-interactive flow.\n- `passkey_login_disabled` (400): Sign in with a passkey is not enabled for this client.\n- `mfa_pending` (401): A second-factor challenge is pending; answer it before continuing.\n- `mfa_invalid_code` (401): The authenticator code did not verify.\n- `mfa_invalid_recovery_code` (401): The recovery code did not verify.\n- `too_many_attempts` (429): Too many wrong codes. Wait a few minutes and try again.\n- `totp_not_allowed` (401): This account does not accept authenticator apps.\n- `no_usable_factor` (400): The user has no confirmed second factor to challenge.\n- `factor_not_found` (400): No factor with that id belongs to this user.\n- `factor_already_confirmed` (400): The factor was already confirmed.\n- `invalid_factor` (400): The factor cannot be verified (no secret material).\n- `session_missing` (401): The session that started this login no longer exists.\n- `passkey_verification_failed` (400): The WebAuthn response could not be verified.\n- `no_passkey_enrolled` (400): The user has no passkey to sign in with.\n- `malformed_credential` (400): The WebAuthn credential is malformed.\n- `unknown_passkey` (401): The passkey is not enrolled for this user.\n- `invalid_passkey` (401): The passkey assertion did not verify.\n- `invite_not_found` (404): No invite with that id in this account.\n- `invite_used` (400): The invite was already accepted.\n- `already_member` (400): The user is already a member of the team.\n- `not_a_member` (404): The user is not a member of the team.\n- `role_not_found` (404): No role with that id in this account.\n- `invalid_role` (400): The role belongs to another account.\n- `flow_not_found` (400): The login flow does not exist in this account.\n- `revision_not_found` (404): The revision is not in the flow history.",
6824
6824
  "enum": [
6825
6825
  "bad_request",
6826
6826
  "validation_error",
@@ -24860,7 +24860,7 @@
24860
24860
  }
24861
24861
  },
24862
24862
  "400": {
24863
- "description": "`connection_misconfigured` — The connection is missing settings needed to talk to its provider.\n\n`no_provider_token` — The identity holds no provider access token.\n\n`no_refresh_token` — The identity holds no provider refresh token, so it cannot be refreshed.\n\n`provider_error` — The upstream identity provider returned an error. `message` carries it.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
24863
+ "description": "`connection_misconfigured` — The connection is missing settings needed to talk to its provider.\n\n`no_provider_token` — The identity holds no provider access token.\n\n`no_refresh_token` — The identity holds no provider refresh token, so it cannot be refreshed.\n\n`provider_error` — 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\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
24864
24864
  "content": {
24865
24865
  "application/json": {
24866
24866
  "schema": {
@@ -52824,6 +52824,15 @@
52824
52824
  "required": false,
52825
52825
  "description": "Preview token from `POST /loginflow/:id/preview-token`. This login runs the DRAFT of that flow, for this browser only; nothing is published. Invalid or expired tokens are ignored."
52826
52826
  },
52827
+ {
52828
+ "schema": {
52829
+ "type": "string"
52830
+ },
52831
+ "in": "query",
52832
+ "name": "resume_state",
52833
+ "required": false,
52834
+ "description": "Resume the login transaction the hosted screen has parked, instead of starting a new one. Used by the screen itself when the person picks a method: everything that belongs to the Relying Party — `code_challenge`, `state`, `redirect_uri`, `nonce`, `scope`, `audience` — is taken from the parked transaction and CANNOT be overridden by the query. Only `connection` is read from the caller."
52835
+ },
52827
52836
  {
52828
52837
  "schema": {
52829
52838
  "type": "string"
@@ -52936,7 +52945,7 @@
52936
52945
  "description": "Default Response"
52937
52946
  },
52938
52947
  "400": {
52939
- "description": "`invalid_client` — The `client_id` in the request does not name a client of this account.\n\n`invalid_redirect_uri` — The redirect URI is not registered for the client.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
52948
+ "description": "`invalid_client` — The `client_id` in the request does not name a client of this account.\n\n`invalid_redirect_uri` — The redirect URI is not registered for the client.\n\n`invalid_state` — The `state` is missing, expired, or does not describe a resumable step.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
52940
52949
  "content": {
52941
52950
  "application/json": {
52942
52951
  "schema": {
@@ -52952,6 +52961,7 @@
52952
52961
  "enum": [
52953
52962
  "invalid_client",
52954
52963
  "invalid_redirect_uri",
52964
+ "invalid_state",
52955
52965
  "validation_error"
52956
52966
  ]
52957
52967
  }
@@ -52962,6 +52972,31 @@
52962
52972
  }
52963
52973
  }
52964
52974
  },
52975
+ "401": {
52976
+ "description": "`state_mismatch` — The `state` belongs to another account, session, client or ceremony.",
52977
+ "content": {
52978
+ "application/json": {
52979
+ "schema": {
52980
+ "allOf": [
52981
+ {
52982
+ "$ref": "#/components/schemas/ErrorResponse"
52983
+ },
52984
+ {
52985
+ "type": "object",
52986
+ "properties": {
52987
+ "error_code": {
52988
+ "type": "string",
52989
+ "enum": [
52990
+ "state_mismatch"
52991
+ ]
52992
+ }
52993
+ }
52994
+ }
52995
+ ]
52996
+ }
52997
+ }
52998
+ }
52999
+ },
52965
53000
  "403": {
52966
53001
  "description": "`origin_not_allowed` — The request `Origin` is not in the client's Allowed Web Origins.",
52967
53002
  "content": {
@@ -54825,7 +54860,7 @@
54825
54860
  "description": "Default Response"
54826
54861
  },
54827
54862
  "400": {
54828
- "description": "`connection_required` — No connection was given and the client has no `default_connection`.\n\n`identity_orphaned` — The identity pointed at a user that no longer exists; it was removed. Sign in again.\n\n`invalid_request` — A required OAuth parameter is missing or two of them are incompatible. `message` says which.\n\n`invalid_state` — The `state` is missing, expired, or does not describe a resumable step.\n\n`provider_error` — The upstream identity provider returned an error. `message` carries it.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
54863
+ "description": "`connection_required` — No connection was given and the client has no `default_connection`.\n\n`identity_orphaned` — The identity pointed at a user that no longer exists; it was removed. Sign in again.\n\n`invalid_request` — A required OAuth parameter is missing or two of them are incompatible. `message` says which.\n\n`invalid_state` — The `state` is missing, expired, or does not describe a resumable step.\n\n`provider_error` — 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\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
54829
54864
  "content": {
54830
54865
  "application/json": {
54831
54866
  "schema": {