@faable/auth-sdk 2.6.15 → 2.6.17
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 +13 -12
- package/dist/api/generated-client.d.ts +23 -14
- package/dist/api/types.d.ts +249 -18
- package/dist/version.js +2 -2
- package/package.json +1 -1
- package/spec/openapi.json +559 -9
package/dist/api/types.d.ts
CHANGED
|
@@ -524,6 +524,46 @@ export interface paths {
|
|
|
524
524
|
patch?: never;
|
|
525
525
|
trace?: never;
|
|
526
526
|
};
|
|
527
|
+
"/user/{user_id}/verify-phone/start": {
|
|
528
|
+
parameters: {
|
|
529
|
+
query?: never;
|
|
530
|
+
header?: never;
|
|
531
|
+
path?: never;
|
|
532
|
+
cookie?: never;
|
|
533
|
+
};
|
|
534
|
+
get?: never;
|
|
535
|
+
put?: never;
|
|
536
|
+
/**
|
|
537
|
+
* Send a verification code to the user's phone
|
|
538
|
+
* @description Sends a 6-digit code by SMS to the user's phone (optionally setting a new phone first) and returns an opaque `state` to confirm it with. Same authorization as `verify-email/start`: the user themself (session or bearer), an admin of another tenant, or a machine token. Counts against the tenant's monthly SMS allowance. Fails with 409 `sms_unavailable` when no SMS can go out (no provider, plan does not allow it, allowance exhausted).
|
|
539
|
+
*/
|
|
540
|
+
post: operations["user/verifyPhoneStart"];
|
|
541
|
+
delete?: never;
|
|
542
|
+
options?: never;
|
|
543
|
+
head?: never;
|
|
544
|
+
patch?: never;
|
|
545
|
+
trace?: never;
|
|
546
|
+
};
|
|
547
|
+
"/verify-phone/confirm": {
|
|
548
|
+
parameters: {
|
|
549
|
+
query?: never;
|
|
550
|
+
header?: never;
|
|
551
|
+
path?: never;
|
|
552
|
+
cookie?: never;
|
|
553
|
+
};
|
|
554
|
+
get?: never;
|
|
555
|
+
put?: never;
|
|
556
|
+
/**
|
|
557
|
+
* Confirm a phone verification code
|
|
558
|
+
* @description Marks the phone verified (`phone_verified_method: sms_otp`) when the code matches the pending verification identified by `state`. Five wrong codes burn the `state`; start again. No session needed: the `state` plus the code are the proof.
|
|
559
|
+
*/
|
|
560
|
+
post: operations["user/verifyPhoneConfirm"];
|
|
561
|
+
delete?: never;
|
|
562
|
+
options?: never;
|
|
563
|
+
head?: never;
|
|
564
|
+
patch?: never;
|
|
565
|
+
trace?: never;
|
|
566
|
+
};
|
|
527
567
|
"/user/{user_id}/factors": {
|
|
528
568
|
parameters: {
|
|
529
569
|
query?: never;
|
|
@@ -2753,6 +2793,46 @@ export interface paths {
|
|
|
2753
2793
|
patch?: never;
|
|
2754
2794
|
trace?: never;
|
|
2755
2795
|
};
|
|
2796
|
+
"/reset-code/verify": {
|
|
2797
|
+
parameters: {
|
|
2798
|
+
query?: never;
|
|
2799
|
+
header?: never;
|
|
2800
|
+
path?: never;
|
|
2801
|
+
cookie?: never;
|
|
2802
|
+
};
|
|
2803
|
+
get?: never;
|
|
2804
|
+
put?: never;
|
|
2805
|
+
/**
|
|
2806
|
+
* Redeem a password-reset code sent by SMS/WhatsApp
|
|
2807
|
+
* @description Second entry point to the new-password screen, for a reset delivered as a 6-digit code instead of a link. Answers the same `redirect_url` that the emailed link would land on. Five wrong codes consume the ticket; the error is always `invalid_code` and reveals nothing about the account.
|
|
2808
|
+
*/
|
|
2809
|
+
post: operations["reset_code_verify"];
|
|
2810
|
+
delete?: never;
|
|
2811
|
+
options?: never;
|
|
2812
|
+
head?: never;
|
|
2813
|
+
patch?: never;
|
|
2814
|
+
trace?: never;
|
|
2815
|
+
};
|
|
2816
|
+
"/dbconnections/recovery_options": {
|
|
2817
|
+
parameters: {
|
|
2818
|
+
query?: never;
|
|
2819
|
+
header?: never;
|
|
2820
|
+
path?: never;
|
|
2821
|
+
cookie?: never;
|
|
2822
|
+
};
|
|
2823
|
+
get?: never;
|
|
2824
|
+
put?: never;
|
|
2825
|
+
/**
|
|
2826
|
+
* Recovery channels to offer for an identifier
|
|
2827
|
+
* @description For the forgot-password screen. With the tenant's `visible` list empty (the default) it answers from configuration alone and never looks the account up. Otherwise it returns the channels the user can pick, with masked destinations.
|
|
2828
|
+
*/
|
|
2829
|
+
post: operations["recovery_options"];
|
|
2830
|
+
delete?: never;
|
|
2831
|
+
options?: never;
|
|
2832
|
+
head?: never;
|
|
2833
|
+
patch?: never;
|
|
2834
|
+
trace?: never;
|
|
2835
|
+
};
|
|
2756
2836
|
"/dbconnections/signup": {
|
|
2757
2837
|
parameters: {
|
|
2758
2838
|
query?: never;
|
|
@@ -2880,6 +2960,8 @@ export interface components {
|
|
|
2880
2960
|
/** @description Channels the recovery screen offers the user to pick from, after they enter their identifier. Empty (the default) keeps today's behaviour: the default channel is used silently and the response never reveals whether the account exists. A non-empty list shows a picker with masked destinations — which does reveal that the account exists and which channels it has, the same trade-off Google and Microsoft make. A tenant decision. */
|
|
2881
2961
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[];
|
|
2882
2962
|
};
|
|
2963
|
+
/** @description ISO 3166-1 alpha-2 country assumed for phone numbers written without an international prefix (`636647460` → `+34…` with `ES`). Needed before SMS can reach anyone: most people type their number without a prefix. */
|
|
2964
|
+
default_country_iso?: string | null;
|
|
2883
2965
|
/** @description WebAuthn Relying Party ID for this tenant's passkeys. Defaults to the account domain. Set it to a registrable suffix you own (e.g. `acme.com`) when the login screen is served from more than one host — the RP ID is frozen into every credential at registration, so changing it afterwards invalidates every passkey already enrolled. */
|
|
2884
2966
|
webauthn_rp_id?: string | null;
|
|
2885
2967
|
/** @description AuthAccount creation date */
|
|
@@ -3331,7 +3413,7 @@ export interface components {
|
|
|
3331
3413
|
*/
|
|
3332
3414
|
email_verified: boolean;
|
|
3333
3415
|
/** @description How `email_verified` was last set. `manual` — admin flipped the flag via `POST /user/:id`. `verification_flow` — user clicked the verification link. `passwordless_otp` — user completed passwordless OTP login. `team_invite` — user clicked a team invitation link. `email_change` — user confirmed a self-service email change. `federated` — verified by the external IdP on OAuth callback. `null` — the field was cleared (admin un-verified the email). */
|
|
3334
|
-
email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
|
|
3416
|
+
email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | null;
|
|
3335
3417
|
/** @description ISO 8601 timestamp of when `email_verified` was last flipped to true. */
|
|
3336
3418
|
email_verified_at?: string | null;
|
|
3337
3419
|
/** @description ISO 8601 timestamp of the user's last verified email change. When set, OAuth callbacks will not overwrite `email`/`email_verified` from the federated provider — the manually-chosen email wins. */
|
|
@@ -3350,8 +3432,8 @@ export interface components {
|
|
|
3350
3432
|
phone?: string | null;
|
|
3351
3433
|
/** @description phone is verified */
|
|
3352
3434
|
phone_verified: boolean;
|
|
3353
|
-
/** @description How `phone_verified` was last set. Same enum as `email_verified_method
|
|
3354
|
-
phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
|
|
3435
|
+
/** @description How `phone_verified` was last set. Same enum as `email_verified_method`, plus `sms_otp` — the user typed a code sent by SMS (`POST /user/:id/verify-phone/start`). */
|
|
3436
|
+
phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | null;
|
|
3355
3437
|
/** @description ISO 8601 timestamp of when `phone_verified` was last flipped to true. */
|
|
3356
3438
|
phone_verified_at?: string | null;
|
|
3357
3439
|
/** @description country iso code */
|
|
@@ -4748,6 +4830,7 @@ export interface components {
|
|
|
4748
4830
|
/** @description Channels the recovery screen offers the user to pick from, after they enter their identifier. Empty (the default) keeps today's behaviour: the default channel is used silently and the response never reveals whether the account exists. A non-empty list shows a picker with masked destinations — which does reveal that the account exists and which channels it has, the same trade-off Google and Microsoft make. A tenant decision. */
|
|
4749
4831
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[];
|
|
4750
4832
|
} | null;
|
|
4833
|
+
default_country_iso?: string | null;
|
|
4751
4834
|
webauthn_rp_id?: string | null;
|
|
4752
4835
|
login_flow?: string | null;
|
|
4753
4836
|
};
|
|
@@ -4953,6 +5036,8 @@ export interface operations {
|
|
|
4953
5036
|
/** @description Channels the recovery screen offers the user to pick from, after they enter their identifier. Empty (the default) keeps today's behaviour: the default channel is used silently and the response never reveals whether the account exists. A non-empty list shows a picker with masked destinations — which does reveal that the account exists and which channels it has, the same trade-off Google and Microsoft make. A tenant decision. */
|
|
4954
5037
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[];
|
|
4955
5038
|
};
|
|
5039
|
+
/** @description ISO 3166-1 alpha-2 country assumed for phone numbers written without an international prefix (`636647460` → `+34…` with `ES`). Needed before SMS can reach anyone: most people type their number without a prefix. */
|
|
5040
|
+
default_country_iso?: string | null;
|
|
4956
5041
|
/** @description WebAuthn Relying Party ID for this tenant's passkeys. Defaults to the account domain. Set it to a registrable suffix you own (e.g. `acme.com`) when the login screen is served from more than one host — the RP ID is frozen into every credential at registration, so changing it afterwards invalidates every passkey already enrolled. */
|
|
4957
5042
|
webauthn_rp_id?: string | null;
|
|
4958
5043
|
/** @description AuthAccount creation date */
|
|
@@ -5132,6 +5217,8 @@ export interface operations {
|
|
|
5132
5217
|
/** @description Channels the recovery screen offers the user to pick from, after they enter their identifier. Empty (the default) keeps today's behaviour: the default channel is used silently and the response never reveals whether the account exists. A non-empty list shows a picker with masked destinations — which does reveal that the account exists and which channels it has, the same trade-off Google and Microsoft make. A tenant decision. */
|
|
5133
5218
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[];
|
|
5134
5219
|
};
|
|
5220
|
+
/** @description ISO 3166-1 alpha-2 country assumed for phone numbers written without an international prefix (`636647460` → `+34…` with `ES`). Needed before SMS can reach anyone: most people type their number without a prefix. */
|
|
5221
|
+
default_country_iso?: string | null;
|
|
5135
5222
|
/** @description WebAuthn Relying Party ID for this tenant's passkeys. Defaults to the account domain. Set it to a registrable suffix you own (e.g. `acme.com`) when the login screen is served from more than one host — the RP ID is frozen into every credential at registration, so changing it afterwards invalidates every passkey already enrolled. */
|
|
5136
5223
|
webauthn_rp_id?: string | null;
|
|
5137
5224
|
/** @description AuthAccount creation date */
|
|
@@ -5265,6 +5352,8 @@ export interface operations {
|
|
|
5265
5352
|
/** @description Channels the recovery screen offers the user to pick from, after they enter their identifier. Empty (the default) keeps today's behaviour: the default channel is used silently and the response never reveals whether the account exists. A non-empty list shows a picker with masked destinations — which does reveal that the account exists and which channels it has, the same trade-off Google and Microsoft make. A tenant decision. */
|
|
5266
5353
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[];
|
|
5267
5354
|
};
|
|
5355
|
+
/** @description ISO 3166-1 alpha-2 country assumed for phone numbers written without an international prefix (`636647460` → `+34…` with `ES`). Needed before SMS can reach anyone: most people type their number without a prefix. */
|
|
5356
|
+
default_country_iso?: string | null;
|
|
5268
5357
|
/** @description WebAuthn Relying Party ID for this tenant's passkeys. Defaults to the account domain. Set it to a registrable suffix you own (e.g. `acme.com`) when the login screen is served from more than one host — the RP ID is frozen into every credential at registration, so changing it afterwards invalidates every passkey already enrolled. */
|
|
5269
5358
|
webauthn_rp_id?: string | null;
|
|
5270
5359
|
/** @description AuthAccount creation date */
|
|
@@ -5363,6 +5452,7 @@ export interface operations {
|
|
|
5363
5452
|
/** @description Channels the recovery screen offers the user to pick from, after they enter their identifier. Empty (the default) keeps today's behaviour: the default channel is used silently and the response never reveals whether the account exists. A non-empty list shows a picker with masked destinations — which does reveal that the account exists and which channels it has, the same trade-off Google and Microsoft make. A tenant decision. */
|
|
5364
5453
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[];
|
|
5365
5454
|
} | null;
|
|
5455
|
+
default_country_iso?: string | null;
|
|
5366
5456
|
webauthn_rp_id?: string | null;
|
|
5367
5457
|
login_flow?: string | null;
|
|
5368
5458
|
};
|
|
@@ -5477,6 +5567,8 @@ export interface operations {
|
|
|
5477
5567
|
/** @description Channels the recovery screen offers the user to pick from, after they enter their identifier. Empty (the default) keeps today's behaviour: the default channel is used silently and the response never reveals whether the account exists. A non-empty list shows a picker with masked destinations — which does reveal that the account exists and which channels it has, the same trade-off Google and Microsoft make. A tenant decision. */
|
|
5478
5568
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[];
|
|
5479
5569
|
};
|
|
5570
|
+
/** @description ISO 3166-1 alpha-2 country assumed for phone numbers written without an international prefix (`636647460` → `+34…` with `ES`). Needed before SMS can reach anyone: most people type their number without a prefix. */
|
|
5571
|
+
default_country_iso?: string | null;
|
|
5480
5572
|
/** @description WebAuthn Relying Party ID for this tenant's passkeys. Defaults to the account domain. Set it to a registrable suffix you own (e.g. `acme.com`) when the login screen is served from more than one host — the RP ID is frozen into every credential at registration, so changing it afterwards invalidates every passkey already enrolled. */
|
|
5481
5573
|
webauthn_rp_id?: string | null;
|
|
5482
5574
|
/** @description AuthAccount creation date */
|
|
@@ -5619,6 +5711,8 @@ export interface operations {
|
|
|
5619
5711
|
/** @description Channels the recovery screen offers the user to pick from, after they enter their identifier. Empty (the default) keeps today's behaviour: the default channel is used silently and the response never reveals whether the account exists. A non-empty list shows a picker with masked destinations — which does reveal that the account exists and which channels it has, the same trade-off Google and Microsoft make. A tenant decision. */
|
|
5620
5712
|
visible?: ("email" | "sms" | "whatsapp" | "factor")[];
|
|
5621
5713
|
};
|
|
5714
|
+
/** @description ISO 3166-1 alpha-2 country assumed for phone numbers written without an international prefix (`636647460` → `+34…` with `ES`). Needed before SMS can reach anyone: most people type their number without a prefix. */
|
|
5715
|
+
default_country_iso?: string | null;
|
|
5622
5716
|
/** @description WebAuthn Relying Party ID for this tenant's passkeys. Defaults to the account domain. Set it to a registrable suffix you own (e.g. `acme.com`) when the login screen is served from more than one host — the RP ID is frozen into every credential at registration, so changing it afterwards invalidates every passkey already enrolled. */
|
|
5623
5717
|
webauthn_rp_id?: string | null;
|
|
5624
5718
|
/** @description AuthAccount creation date */
|
|
@@ -7060,7 +7154,7 @@ export interface operations {
|
|
|
7060
7154
|
*/
|
|
7061
7155
|
email_verified: boolean;
|
|
7062
7156
|
/** @description How `email_verified` was last set. `manual` — admin flipped the flag via `POST /user/:id`. `verification_flow` — user clicked the verification link. `passwordless_otp` — user completed passwordless OTP login. `team_invite` — user clicked a team invitation link. `email_change` — user confirmed a self-service email change. `federated` — verified by the external IdP on OAuth callback. `null` — the field was cleared (admin un-verified the email). */
|
|
7063
|
-
email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
|
|
7157
|
+
email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | null;
|
|
7064
7158
|
/** @description ISO 8601 timestamp of when `email_verified` was last flipped to true. */
|
|
7065
7159
|
email_verified_at?: string | null;
|
|
7066
7160
|
/** @description ISO 8601 timestamp of the user's last verified email change. When set, OAuth callbacks will not overwrite `email`/`email_verified` from the federated provider — the manually-chosen email wins. */
|
|
@@ -7079,8 +7173,8 @@ export interface operations {
|
|
|
7079
7173
|
phone?: string | null;
|
|
7080
7174
|
/** @description phone is verified */
|
|
7081
7175
|
phone_verified: boolean;
|
|
7082
|
-
/** @description How `phone_verified` was last set. Same enum as `email_verified_method
|
|
7083
|
-
phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
|
|
7176
|
+
/** @description How `phone_verified` was last set. Same enum as `email_verified_method`, plus `sms_otp` — the user typed a code sent by SMS (`POST /user/:id/verify-phone/start`). */
|
|
7177
|
+
phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | null;
|
|
7084
7178
|
/** @description ISO 8601 timestamp of when `phone_verified` was last flipped to true. */
|
|
7085
7179
|
phone_verified_at?: string | null;
|
|
7086
7180
|
/** @description country iso code */
|
|
@@ -7200,7 +7294,7 @@ export interface operations {
|
|
|
7200
7294
|
*/
|
|
7201
7295
|
email_verified: boolean;
|
|
7202
7296
|
/** @description How `email_verified` was last set. `manual` — admin flipped the flag via `POST /user/:id`. `verification_flow` — user clicked the verification link. `passwordless_otp` — user completed passwordless OTP login. `team_invite` — user clicked a team invitation link. `email_change` — user confirmed a self-service email change. `federated` — verified by the external IdP on OAuth callback. `null` — the field was cleared (admin un-verified the email). */
|
|
7203
|
-
email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
|
|
7297
|
+
email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | null;
|
|
7204
7298
|
/** @description ISO 8601 timestamp of when `email_verified` was last flipped to true. */
|
|
7205
7299
|
email_verified_at?: string | null;
|
|
7206
7300
|
/** @description ISO 8601 timestamp of the user's last verified email change. When set, OAuth callbacks will not overwrite `email`/`email_verified` from the federated provider — the manually-chosen email wins. */
|
|
@@ -7219,8 +7313,8 @@ export interface operations {
|
|
|
7219
7313
|
phone?: string | null;
|
|
7220
7314
|
/** @description phone is verified */
|
|
7221
7315
|
phone_verified: boolean;
|
|
7222
|
-
/** @description How `phone_verified` was last set. Same enum as `email_verified_method
|
|
7223
|
-
phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
|
|
7316
|
+
/** @description How `phone_verified` was last set. Same enum as `email_verified_method`, plus `sms_otp` — the user typed a code sent by SMS (`POST /user/:id/verify-phone/start`). */
|
|
7317
|
+
phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | null;
|
|
7224
7318
|
/** @description ISO 8601 timestamp of when `phone_verified` was last flipped to true. */
|
|
7225
7319
|
phone_verified_at?: string | null;
|
|
7226
7320
|
/** @description country iso code */
|
|
@@ -7380,7 +7474,7 @@ export interface operations {
|
|
|
7380
7474
|
*/
|
|
7381
7475
|
email_verified: boolean;
|
|
7382
7476
|
/** @description How `email_verified` was last set. `manual` — admin flipped the flag via `POST /user/:id`. `verification_flow` — user clicked the verification link. `passwordless_otp` — user completed passwordless OTP login. `team_invite` — user clicked a team invitation link. `email_change` — user confirmed a self-service email change. `federated` — verified by the external IdP on OAuth callback. `null` — the field was cleared (admin un-verified the email). */
|
|
7383
|
-
email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
|
|
7477
|
+
email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | null;
|
|
7384
7478
|
/** @description ISO 8601 timestamp of when `email_verified` was last flipped to true. */
|
|
7385
7479
|
email_verified_at?: string | null;
|
|
7386
7480
|
/** @description ISO 8601 timestamp of the user's last verified email change. When set, OAuth callbacks will not overwrite `email`/`email_verified` from the federated provider — the manually-chosen email wins. */
|
|
@@ -7399,8 +7493,8 @@ export interface operations {
|
|
|
7399
7493
|
phone?: string | null;
|
|
7400
7494
|
/** @description phone is verified */
|
|
7401
7495
|
phone_verified: boolean;
|
|
7402
|
-
/** @description How `phone_verified` was last set. Same enum as `email_verified_method
|
|
7403
|
-
phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
|
|
7496
|
+
/** @description How `phone_verified` was last set. Same enum as `email_verified_method`, plus `sms_otp` — the user typed a code sent by SMS (`POST /user/:id/verify-phone/start`). */
|
|
7497
|
+
phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | null;
|
|
7404
7498
|
/** @description ISO 8601 timestamp of when `phone_verified` was last flipped to true. */
|
|
7405
7499
|
phone_verified_at?: string | null;
|
|
7406
7500
|
/** @description country iso code */
|
|
@@ -7520,7 +7614,7 @@ export interface operations {
|
|
|
7520
7614
|
*/
|
|
7521
7615
|
email_verified: boolean;
|
|
7522
7616
|
/** @description How `email_verified` was last set. `manual` — admin flipped the flag via `POST /user/:id`. `verification_flow` — user clicked the verification link. `passwordless_otp` — user completed passwordless OTP login. `team_invite` — user clicked a team invitation link. `email_change` — user confirmed a self-service email change. `federated` — verified by the external IdP on OAuth callback. `null` — the field was cleared (admin un-verified the email). */
|
|
7523
|
-
email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
|
|
7617
|
+
email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | null;
|
|
7524
7618
|
/** @description ISO 8601 timestamp of when `email_verified` was last flipped to true. */
|
|
7525
7619
|
email_verified_at?: string | null;
|
|
7526
7620
|
/** @description ISO 8601 timestamp of the user's last verified email change. When set, OAuth callbacks will not overwrite `email`/`email_verified` from the federated provider — the manually-chosen email wins. */
|
|
@@ -7539,8 +7633,8 @@ export interface operations {
|
|
|
7539
7633
|
phone?: string | null;
|
|
7540
7634
|
/** @description phone is verified */
|
|
7541
7635
|
phone_verified: boolean;
|
|
7542
|
-
/** @description How `phone_verified` was last set. Same enum as `email_verified_method
|
|
7543
|
-
phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
|
|
7636
|
+
/** @description How `phone_verified` was last set. Same enum as `email_verified_method`, plus `sms_otp` — the user typed a code sent by SMS (`POST /user/:id/verify-phone/start`). */
|
|
7637
|
+
phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | null;
|
|
7544
7638
|
/** @description ISO 8601 timestamp of when `phone_verified` was last flipped to true. */
|
|
7545
7639
|
phone_verified_at?: string | null;
|
|
7546
7640
|
/** @description country iso code */
|
|
@@ -7746,6 +7840,8 @@ export interface operations {
|
|
|
7746
7840
|
"application/json": {
|
|
7747
7841
|
/** @description Optional connection_name to disambiguate when the tenant has more than one database connection. Defaults to the tenant database connection. */
|
|
7748
7842
|
connection?: string;
|
|
7843
|
+
/** @description How to deliver it: `email` (the link) or `sms` / `whatsapp` (a 6-digit code to the verified phone on file). Falls back to the tenant default when not available for this user; the response says which channel was used. */
|
|
7844
|
+
channel?: "email" | "sms" | "whatsapp" | "factor";
|
|
7749
7845
|
};
|
|
7750
7846
|
};
|
|
7751
7847
|
};
|
|
@@ -7761,6 +7857,7 @@ export interface operations {
|
|
|
7761
7857
|
status: "sent";
|
|
7762
7858
|
credential_id: string;
|
|
7763
7859
|
ticket_id: string;
|
|
7860
|
+
channel: "email" | "sms" | "whatsapp" | "factor";
|
|
7764
7861
|
};
|
|
7765
7862
|
};
|
|
7766
7863
|
};
|
|
@@ -7792,6 +7889,8 @@ export interface operations {
|
|
|
7792
7889
|
createdAt: string;
|
|
7793
7890
|
expires_at: string;
|
|
7794
7891
|
ttl: number;
|
|
7892
|
+
/** @description How this ticket reaches the person: `email` (the link), `sms` / `whatsapp` (a code), `factor`. Older tickets are `email`. */
|
|
7893
|
+
channel: string;
|
|
7795
7894
|
/** @description The link from the ticket email. Present only while the ticket is usable — a dead link is noise, not a recovery path. */
|
|
7796
7895
|
link?: string;
|
|
7797
7896
|
}[];
|
|
@@ -7826,6 +7925,73 @@ export interface operations {
|
|
|
7826
7925
|
};
|
|
7827
7926
|
};
|
|
7828
7927
|
};
|
|
7928
|
+
"user/verifyPhoneStart": {
|
|
7929
|
+
parameters: {
|
|
7930
|
+
query?: never;
|
|
7931
|
+
header?: never;
|
|
7932
|
+
path: {
|
|
7933
|
+
user_id: string;
|
|
7934
|
+
};
|
|
7935
|
+
cookie?: never;
|
|
7936
|
+
};
|
|
7937
|
+
requestBody: {
|
|
7938
|
+
content: {
|
|
7939
|
+
"application/json": {
|
|
7940
|
+
/** @description Phone to verify. When given, it replaces the user's phone (normalised to E.164 with the account's `default_country_iso` as fallback) before the code is sent. When omitted, the code goes to the phone already on the user. */
|
|
7941
|
+
phone?: string;
|
|
7942
|
+
};
|
|
7943
|
+
};
|
|
7944
|
+
};
|
|
7945
|
+
responses: {
|
|
7946
|
+
/** @description Default Response */
|
|
7947
|
+
200: {
|
|
7948
|
+
headers: {
|
|
7949
|
+
[name: string]: unknown;
|
|
7950
|
+
};
|
|
7951
|
+
content: {
|
|
7952
|
+
"application/json": {
|
|
7953
|
+
/** @enum {string} */
|
|
7954
|
+
status: "sent";
|
|
7955
|
+
destination_masked: string;
|
|
7956
|
+
/** @description Opaque handle to confirm with. It is what lets a tenant backend start the verification (M2M) and send the person to `/flow/verify-phone?state=…` without a session. */
|
|
7957
|
+
state: string;
|
|
7958
|
+
expires_in: number;
|
|
7959
|
+
};
|
|
7960
|
+
};
|
|
7961
|
+
};
|
|
7962
|
+
};
|
|
7963
|
+
};
|
|
7964
|
+
"user/verifyPhoneConfirm": {
|
|
7965
|
+
parameters: {
|
|
7966
|
+
query?: never;
|
|
7967
|
+
header?: never;
|
|
7968
|
+
path?: never;
|
|
7969
|
+
cookie?: never;
|
|
7970
|
+
};
|
|
7971
|
+
requestBody: {
|
|
7972
|
+
content: {
|
|
7973
|
+
"application/json": {
|
|
7974
|
+
state: string;
|
|
7975
|
+
code: string;
|
|
7976
|
+
};
|
|
7977
|
+
};
|
|
7978
|
+
};
|
|
7979
|
+
responses: {
|
|
7980
|
+
/** @description Default Response */
|
|
7981
|
+
200: {
|
|
7982
|
+
headers: {
|
|
7983
|
+
[name: string]: unknown;
|
|
7984
|
+
};
|
|
7985
|
+
content: {
|
|
7986
|
+
"application/json": {
|
|
7987
|
+
/** @enum {string} */
|
|
7988
|
+
status: "verified";
|
|
7989
|
+
user_id: string;
|
|
7990
|
+
};
|
|
7991
|
+
};
|
|
7992
|
+
};
|
|
7993
|
+
};
|
|
7994
|
+
};
|
|
7829
7995
|
"user/factors": {
|
|
7830
7996
|
parameters: {
|
|
7831
7997
|
query?: never;
|
|
@@ -12393,7 +12559,7 @@ export interface operations {
|
|
|
12393
12559
|
*/
|
|
12394
12560
|
email_verified: boolean;
|
|
12395
12561
|
/** @description How `email_verified` was last set. `manual` — admin flipped the flag via `POST /user/:id`. `verification_flow` — user clicked the verification link. `passwordless_otp` — user completed passwordless OTP login. `team_invite` — user clicked a team invitation link. `email_change` — user confirmed a self-service email change. `federated` — verified by the external IdP on OAuth callback. `null` — the field was cleared (admin un-verified the email). */
|
|
12396
|
-
email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
|
|
12562
|
+
email_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | null;
|
|
12397
12563
|
/** @description ISO 8601 timestamp of when `email_verified` was last flipped to true. */
|
|
12398
12564
|
email_verified_at?: string | null;
|
|
12399
12565
|
/** @description ISO 8601 timestamp of the user's last verified email change. When set, OAuth callbacks will not overwrite `email`/`email_verified` from the federated provider — the manually-chosen email wins. */
|
|
@@ -12412,8 +12578,8 @@ export interface operations {
|
|
|
12412
12578
|
phone?: string | null;
|
|
12413
12579
|
/** @description phone is verified */
|
|
12414
12580
|
phone_verified: boolean;
|
|
12415
|
-
/** @description How `phone_verified` was last set. Same enum as `email_verified_method
|
|
12416
|
-
phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | null;
|
|
12581
|
+
/** @description How `phone_verified` was last set. Same enum as `email_verified_method`, plus `sms_otp` — the user typed a code sent by SMS (`POST /user/:id/verify-phone/start`). */
|
|
12582
|
+
phone_verified_method?: "manual" | "verification_flow" | "passwordless_otp" | "team_invite" | "email_change" | "federated" | "sms_otp" | null;
|
|
12417
12583
|
/** @description ISO 8601 timestamp of when `phone_verified` was last flipped to true. */
|
|
12418
12584
|
phone_verified_at?: string | null;
|
|
12419
12585
|
/** @description country iso code */
|
|
@@ -13207,6 +13373,8 @@ export interface operations {
|
|
|
13207
13373
|
content: {
|
|
13208
13374
|
"application/json": {
|
|
13209
13375
|
email: string;
|
|
13376
|
+
/** @description How to deliver the reset: `email` (link), `sms` / `whatsapp` (a 6-digit code to the verified phone on file). Silently falls back to the tenant default when the channel is not available for this user — the response never says which channels an account has. */
|
|
13377
|
+
channel?: "email" | "sms" | "whatsapp" | "factor";
|
|
13210
13378
|
};
|
|
13211
13379
|
};
|
|
13212
13380
|
};
|
|
@@ -13270,6 +13438,69 @@ export interface operations {
|
|
|
13270
13438
|
};
|
|
13271
13439
|
};
|
|
13272
13440
|
};
|
|
13441
|
+
reset_code_verify: {
|
|
13442
|
+
parameters: {
|
|
13443
|
+
query?: never;
|
|
13444
|
+
header?: never;
|
|
13445
|
+
path?: never;
|
|
13446
|
+
cookie?: never;
|
|
13447
|
+
};
|
|
13448
|
+
requestBody: {
|
|
13449
|
+
content: {
|
|
13450
|
+
"application/json": {
|
|
13451
|
+
email: string;
|
|
13452
|
+
code: string;
|
|
13453
|
+
};
|
|
13454
|
+
};
|
|
13455
|
+
};
|
|
13456
|
+
responses: {
|
|
13457
|
+
/** @description Default Response */
|
|
13458
|
+
200: {
|
|
13459
|
+
headers: {
|
|
13460
|
+
[name: string]: unknown;
|
|
13461
|
+
};
|
|
13462
|
+
content: {
|
|
13463
|
+
"application/json": {
|
|
13464
|
+
redirect_url: string;
|
|
13465
|
+
};
|
|
13466
|
+
};
|
|
13467
|
+
};
|
|
13468
|
+
};
|
|
13469
|
+
};
|
|
13470
|
+
recovery_options: {
|
|
13471
|
+
parameters: {
|
|
13472
|
+
query?: never;
|
|
13473
|
+
header?: never;
|
|
13474
|
+
path?: never;
|
|
13475
|
+
cookie?: never;
|
|
13476
|
+
};
|
|
13477
|
+
requestBody: {
|
|
13478
|
+
content: {
|
|
13479
|
+
"application/json": {
|
|
13480
|
+
email: string;
|
|
13481
|
+
};
|
|
13482
|
+
};
|
|
13483
|
+
};
|
|
13484
|
+
responses: {
|
|
13485
|
+
/** @description Default Response */
|
|
13486
|
+
200: {
|
|
13487
|
+
headers: {
|
|
13488
|
+
[name: string]: unknown;
|
|
13489
|
+
};
|
|
13490
|
+
content: {
|
|
13491
|
+
"application/json": {
|
|
13492
|
+
/** @description Whether the screen should offer a choice. False when the tenant keeps `visible` empty — then nothing here depends on the account existing. */
|
|
13493
|
+
picker: boolean;
|
|
13494
|
+
default: "email" | "sms" | "whatsapp" | "factor";
|
|
13495
|
+
channels: {
|
|
13496
|
+
channel: "email" | "sms" | "whatsapp" | "factor";
|
|
13497
|
+
destination_masked?: string;
|
|
13498
|
+
}[];
|
|
13499
|
+
};
|
|
13500
|
+
};
|
|
13501
|
+
};
|
|
13502
|
+
};
|
|
13503
|
+
};
|
|
13273
13504
|
signup: {
|
|
13274
13505
|
parameters: {
|
|
13275
13506
|
query?: never;
|
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.6.
|
|
12
|
+
export const version = "2.6.17";
|
|
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 = "
|
|
18
|
+
export const commit = "bcc574e";
|
|
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
|