@faable/auth-sdk 2.6.14 → 2.6.15

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.
@@ -128,6 +128,26 @@ export interface paths {
128
128
  patch?: never;
129
129
  trace?: never;
130
130
  };
131
+ "/recovery-channels/capabilities": {
132
+ parameters: {
133
+ query?: never;
134
+ header?: never;
135
+ path?: never;
136
+ cookie?: never;
137
+ };
138
+ /**
139
+ * Recovery channel capabilities for this tenant
140
+ * @description Which recovery channels the platform can send, whether the plan allows the paid ones, this month's SMS usage against the included amount, and the tenant configuration as resolved. Drives the "Recovery channels" editor in the dashboard.
141
+ */
142
+ get: operations["account/recoveryChannelsCapabilities"];
143
+ put?: never;
144
+ post?: never;
145
+ delete?: never;
146
+ options?: never;
147
+ head?: never;
148
+ patch?: never;
149
+ trace?: never;
150
+ };
131
151
  "/connection": {
132
152
  parameters: {
133
153
  query?: never;
@@ -2851,6 +2871,15 @@ export interface components {
2851
2871
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
2852
2872
  remember_device_days?: number;
2853
2873
  };
2874
+ /** @description Password-recovery delivery channels. Set on the Account as the tenant default; the same object on a Client overrides it field by field, like `login_methods` and `mfa_policy`. */
2875
+ recovery_channels?: {
2876
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
2877
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
2878
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
2879
+ default?: "email" | "sms" | "whatsapp" | "factor";
2880
+ /** @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
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
2882
+ };
2854
2883
  /** @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. */
2855
2884
  webauthn_rp_id?: string | null;
2856
2885
  /** @description AuthAccount creation date */
@@ -3141,6 +3170,15 @@ export interface components {
3141
3170
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
3142
3171
  remember_device_days?: number;
3143
3172
  };
3173
+ /** @description Password-recovery delivery channels. Set on the Account as the tenant default; the same object on a Client overrides it field by field, like `login_methods` and `mfa_policy`. */
3174
+ recovery_channels?: {
3175
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
3176
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
3177
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
3178
+ default?: "email" | "sms" | "whatsapp" | "factor";
3179
+ /** @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. */
3180
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
3181
+ };
3144
3182
  /** @description A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit. */
3145
3183
  login_flow?: string | null;
3146
3184
  /** @description Object is related with this account */
@@ -3245,6 +3283,14 @@ export interface components {
3245
3283
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
3246
3284
  remember_device_days?: number;
3247
3285
  } | null;
3286
+ recovery_channels?: {
3287
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
3288
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
3289
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
3290
+ default?: "email" | "sms" | "whatsapp" | "factor";
3291
+ /** @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. */
3292
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
3293
+ } | null;
3248
3294
  login_flow?: string | null;
3249
3295
  /**
3250
3296
  * @description Free-form client metadata. Replaces the whole object — send the full merged value, not a partial delta.
@@ -4694,6 +4740,14 @@ export interface components {
4694
4740
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
4695
4741
  remember_device_days?: number;
4696
4742
  } | null;
4743
+ recovery_channels?: {
4744
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
4745
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
4746
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
4747
+ default?: "email" | "sms" | "whatsapp" | "factor";
4748
+ /** @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
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
4750
+ } | null;
4697
4751
  webauthn_rp_id?: string | null;
4698
4752
  login_flow?: string | null;
4699
4753
  };
@@ -4890,6 +4944,15 @@ export interface operations {
4890
4944
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
4891
4945
  remember_device_days?: number;
4892
4946
  };
4947
+ /** @description Password-recovery delivery channels. Set on the Account as the tenant default; the same object on a Client overrides it field by field, like `login_methods` and `mfa_policy`. */
4948
+ recovery_channels?: {
4949
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
4950
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
4951
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
4952
+ default?: "email" | "sms" | "whatsapp" | "factor";
4953
+ /** @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
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
4955
+ };
4893
4956
  /** @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. */
4894
4957
  webauthn_rp_id?: string | null;
4895
4958
  /** @description AuthAccount creation date */
@@ -5060,6 +5123,15 @@ export interface operations {
5060
5123
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
5061
5124
  remember_device_days?: number;
5062
5125
  };
5126
+ /** @description Password-recovery delivery channels. Set on the Account as the tenant default; the same object on a Client overrides it field by field, like `login_methods` and `mfa_policy`. */
5127
+ recovery_channels?: {
5128
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
5129
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
5130
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
5131
+ default?: "email" | "sms" | "whatsapp" | "factor";
5132
+ /** @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
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
5134
+ };
5063
5135
  /** @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. */
5064
5136
  webauthn_rp_id?: string | null;
5065
5137
  /** @description AuthAccount creation date */
@@ -5184,6 +5256,15 @@ export interface operations {
5184
5256
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
5185
5257
  remember_device_days?: number;
5186
5258
  };
5259
+ /** @description Password-recovery delivery channels. Set on the Account as the tenant default; the same object on a Client overrides it field by field, like `login_methods` and `mfa_policy`. */
5260
+ recovery_channels?: {
5261
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
5262
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
5263
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
5264
+ default?: "email" | "sms" | "whatsapp" | "factor";
5265
+ /** @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
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
5267
+ };
5187
5268
  /** @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. */
5188
5269
  webauthn_rp_id?: string | null;
5189
5270
  /** @description AuthAccount creation date */
@@ -5274,6 +5355,14 @@ export interface operations {
5274
5355
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
5275
5356
  remember_device_days?: number;
5276
5357
  } | null;
5358
+ recovery_channels?: {
5359
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
5360
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
5361
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
5362
+ default?: "email" | "sms" | "whatsapp" | "factor";
5363
+ /** @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
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
5365
+ } | null;
5277
5366
  webauthn_rp_id?: string | null;
5278
5367
  login_flow?: string | null;
5279
5368
  };
@@ -5379,6 +5468,15 @@ export interface operations {
5379
5468
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
5380
5469
  remember_device_days?: number;
5381
5470
  };
5471
+ /** @description Password-recovery delivery channels. Set on the Account as the tenant default; the same object on a Client overrides it field by field, like `login_methods` and `mfa_policy`. */
5472
+ recovery_channels?: {
5473
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
5474
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
5475
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
5476
+ default?: "email" | "sms" | "whatsapp" | "factor";
5477
+ /** @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
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
5479
+ };
5382
5480
  /** @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. */
5383
5481
  webauthn_rp_id?: string | null;
5384
5482
  /** @description AuthAccount creation date */
@@ -5512,6 +5610,15 @@ export interface operations {
5512
5610
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
5513
5611
  remember_device_days?: number;
5514
5612
  };
5613
+ /** @description Password-recovery delivery channels. Set on the Account as the tenant default; the same object on a Client overrides it field by field, like `login_methods` and `mfa_policy`. */
5614
+ recovery_channels?: {
5615
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
5616
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
5617
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
5618
+ default?: "email" | "sms" | "whatsapp" | "factor";
5619
+ /** @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
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
5621
+ };
5515
5622
  /** @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. */
5516
5623
  webauthn_rp_id?: string | null;
5517
5624
  /** @description AuthAccount creation date */
@@ -5523,6 +5630,57 @@ export interface operations {
5523
5630
  };
5524
5631
  };
5525
5632
  };
5633
+ "account/recoveryChannelsCapabilities": {
5634
+ parameters: {
5635
+ query?: never;
5636
+ header?: never;
5637
+ path?: never;
5638
+ cookie?: never;
5639
+ };
5640
+ requestBody?: never;
5641
+ responses: {
5642
+ /** @description Default Response */
5643
+ 200: {
5644
+ headers: {
5645
+ [name: string]: unknown;
5646
+ };
5647
+ content: {
5648
+ "application/json": {
5649
+ /** @description Whether the platform can send on each channel right now. */
5650
+ provider: {
5651
+ sms: boolean;
5652
+ whatsapp: boolean;
5653
+ };
5654
+ plan: {
5655
+ /** @description False when billing did not answer. Messaging channels are then treated as not allowed — the failure mode for a paid-per-message channel is "do not send", not "allow". */
5656
+ known: boolean;
5657
+ tier?: string;
5658
+ allows_messaging: boolean;
5659
+ };
5660
+ usage: {
5661
+ /** @description YYYY-MM, UTC. */
5662
+ month: string;
5663
+ sent: number;
5664
+ included: number;
5665
+ metered: boolean;
5666
+ hard_ceiling: number;
5667
+ };
5668
+ resolved: {
5669
+ enabled: ("email" | "sms" | "whatsapp" | "factor")[];
5670
+ default: "email" | "sms" | "whatsapp" | "factor";
5671
+ visible: ("email" | "sms" | "whatsapp" | "factor")[];
5672
+ };
5673
+ /** @description Tenant-level availability (configuration × platform × plan). The per-user step — verified phone, enrolled factor — is not applied here. */
5674
+ channels: {
5675
+ channel: "email" | "sms" | "whatsapp" | "factor";
5676
+ available: boolean;
5677
+ reason?: string;
5678
+ }[];
5679
+ };
5680
+ };
5681
+ };
5682
+ };
5683
+ };
5526
5684
  "connection/list": {
5527
5685
  parameters: {
5528
5686
  query?: {
@@ -6222,6 +6380,15 @@ export interface operations {
6222
6380
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
6223
6381
  remember_device_days?: number;
6224
6382
  };
6383
+ /** @description Password-recovery delivery channels. Set on the Account as the tenant default; the same object on a Client overrides it field by field, like `login_methods` and `mfa_policy`. */
6384
+ recovery_channels?: {
6385
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
6386
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
6387
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
6388
+ default?: "email" | "sms" | "whatsapp" | "factor";
6389
+ /** @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. */
6390
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
6391
+ };
6225
6392
  /** @description A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit. */
6226
6393
  login_flow?: string | null;
6227
6394
  /** @description Object is related with this account */
@@ -6325,6 +6492,15 @@ export interface operations {
6325
6492
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
6326
6493
  remember_device_days?: number;
6327
6494
  };
6495
+ /** @description Password-recovery delivery channels. Set on the Account as the tenant default; the same object on a Client overrides it field by field, like `login_methods` and `mfa_policy`. */
6496
+ recovery_channels?: {
6497
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
6498
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
6499
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
6500
+ default?: "email" | "sms" | "whatsapp" | "factor";
6501
+ /** @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. */
6502
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
6503
+ };
6328
6504
  /** @description A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit. */
6329
6505
  login_flow?: string | null;
6330
6506
  /** @description Object is related with this account */
@@ -6421,6 +6597,14 @@ export interface operations {
6421
6597
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
6422
6598
  remember_device_days?: number;
6423
6599
  } | null;
6600
+ recovery_channels?: {
6601
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
6602
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
6603
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
6604
+ default?: "email" | "sms" | "whatsapp" | "factor";
6605
+ /** @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. */
6606
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
6607
+ } | null;
6424
6608
  login_flow?: string | null;
6425
6609
  /**
6426
6610
  * @description Free-form client metadata. Replaces the whole object — send the full merged value, not a partial delta.
@@ -6505,6 +6689,15 @@ export interface operations {
6505
6689
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
6506
6690
  remember_device_days?: number;
6507
6691
  };
6692
+ /** @description Password-recovery delivery channels. Set on the Account as the tenant default; the same object on a Client overrides it field by field, like `login_methods` and `mfa_policy`. */
6693
+ recovery_channels?: {
6694
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
6695
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
6696
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
6697
+ default?: "email" | "sms" | "whatsapp" | "factor";
6698
+ /** @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. */
6699
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
6700
+ };
6508
6701
  /** @description A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit. */
6509
6702
  login_flow?: string | null;
6510
6703
  /** @description Object is related with this account */
@@ -6608,6 +6801,15 @@ export interface operations {
6608
6801
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
6609
6802
  remember_device_days?: number;
6610
6803
  };
6804
+ /** @description Password-recovery delivery channels. Set on the Account as the tenant default; the same object on a Client overrides it field by field, like `login_methods` and `mfa_policy`. */
6805
+ recovery_channels?: {
6806
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
6807
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
6808
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
6809
+ default?: "email" | "sms" | "whatsapp" | "factor";
6810
+ /** @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. */
6811
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
6812
+ };
6611
6813
  /** @description A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit. */
6612
6814
  login_flow?: string | null;
6613
6815
  /** @description Object is related with this account */
@@ -6711,6 +6913,15 @@ export interface operations {
6711
6913
  /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
6712
6914
  remember_device_days?: number;
6713
6915
  };
6916
+ /** @description Password-recovery delivery channels. Set on the Account as the tenant default; the same object on a Client overrides it field by field, like `login_methods` and `mfa_policy`. */
6917
+ recovery_channels?: {
6918
+ /** @description Channels the tenant has turned on. `email` is always on regardless of this list: it is what every other channel falls back to. A channel listed here is still offered only if the platform can send it, the plan allows it and the user has a verified destination for it. */
6919
+ enabled?: ("email" | "sms" | "whatsapp" | "factor")[];
6920
+ /** @description The channel used when the user is not asked to choose. Falls back to `email` when it is not available for that user. */
6921
+ default?: "email" | "sms" | "whatsapp" | "factor";
6922
+ /** @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. */
6923
+ visible?: ("email" | "sms" | "whatsapp" | "factor")[];
6924
+ };
6714
6925
  /** @description A login flow bound to this client (`loginflow_xxx`), overriding the account's. Absent = inherit. */
6715
6926
  login_flow?: string | null;
6716
6927
  /** @description Object is related with this account */
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.14";
12
+ export const version = "2.6.15";
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 = "0acc568";
18
+ export const commit = "1f0c0e0";
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.6.14",
3
+ "version": "2.6.15",
4
4
  "author": "Marc Pomar <marc@faable.com>",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",