@faable/auth-sdk 2.7.105 → 2.7.107

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.
@@ -88,7 +88,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
88
88
  type: "string" | "enum";
89
89
  options?: string[] | undefined;
90
90
  max_length?: number | undefined;
91
- }[] | undefined;
91
+ }[] | null | undefined;
92
92
  login_flow?: string | null | undefined;
93
93
  mfa_policy?: {
94
94
  mode?: "required" | "optional" | "off" | undefined;
@@ -839,7 +839,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
839
839
  type: "string" | "enum";
840
840
  options?: string[] | undefined;
841
841
  max_length?: number | undefined;
842
- }[] | undefined;
842
+ }[] | null | undefined;
843
843
  mfa_policy?: {
844
844
  mode?: "required" | "optional" | "off" | undefined;
845
845
  allowed_factors?: ("webauthn" | "totp")[] | undefined;
@@ -922,7 +922,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
922
922
  type: "string" | "enum";
923
923
  options?: string[] | undefined;
924
924
  max_length?: number | undefined;
925
- }[] | undefined;
925
+ }[] | null | undefined;
926
926
  mfa_policy?: {
927
927
  mode?: "required" | "optional" | "off" | undefined;
928
928
  allowed_factors?: ("webauthn" | "totp")[] | undefined;
@@ -1008,7 +1008,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
1008
1008
  type: "string" | "enum";
1009
1009
  options?: string[] | undefined;
1010
1010
  max_length?: number | undefined;
1011
- }[] | undefined;
1011
+ }[] | null | undefined;
1012
1012
  mfa_policy?: {
1013
1013
  mode?: "required" | "optional" | "off" | undefined;
1014
1014
  allowed_factors?: ("webauthn" | "totp")[] | undefined;
@@ -1093,7 +1093,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
1093
1093
  type: "string" | "enum";
1094
1094
  options?: string[] | undefined;
1095
1095
  max_length?: number | undefined;
1096
- }[] | undefined;
1096
+ }[] | null | undefined;
1097
1097
  mfa_policy?: {
1098
1098
  mode?: "required" | "optional" | "off" | undefined;
1099
1099
  allowed_factors?: ("webauthn" | "totp")[] | undefined;
@@ -87,7 +87,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
87
87
  type: "string" | "enum";
88
88
  options?: string[] | undefined;
89
89
  max_length?: number | undefined;
90
- }[] | undefined;
90
+ }[] | null | undefined;
91
91
  login_flow?: string | null | undefined;
92
92
  mfa_policy?: {
93
93
  mode?: "required" | "optional" | "off" | undefined;
@@ -173,7 +173,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
173
173
  type: "string" | "enum";
174
174
  options?: string[] | undefined;
175
175
  max_length?: number | undefined;
176
- }[] | undefined;
176
+ }[] | null | undefined;
177
177
  login_flow?: string | null | undefined;
178
178
  mfa_policy?: {
179
179
  mode?: "required" | "optional" | "off" | undefined;
@@ -279,7 +279,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
279
279
  type: "string" | "enum";
280
280
  options?: string[] | undefined;
281
281
  max_length?: number | undefined;
282
- }[] | undefined;
282
+ }[] | null | undefined;
283
283
  login_flow?: string | null | undefined;
284
284
  mfa_policy?: {
285
285
  mode?: "required" | "optional" | "off" | undefined;
@@ -368,7 +368,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
368
368
  type: "string" | "enum";
369
369
  options?: string[] | undefined;
370
370
  max_length?: number | undefined;
371
- }[] | undefined;
371
+ }[] | null | undefined;
372
372
  login_flow?: string | null | undefined;
373
373
  mfa_policy?: {
374
374
  mode?: "required" | "optional" | "off" | undefined;
@@ -502,25 +502,10 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
502
502
  } | undefined;
503
503
  profile_fields?: {
504
504
  key: string;
505
- type: "string" | "enum"; /**
506
- * `POST /user/{user_id}/passkey-prompt/reset` — operationId: `user/resetPasskeyPrompt`
507
- *
508
- * Reset a user's passkey offer counter
509
- *
510
- * The post-login "create a passkey" offer stops after `login_methods.passkey_promotion_max_prompts` times and snoozes between them. This clears both, so the user is offered a passkey again on their next login — for "why does it keep asking" and "please ask me again" alike.
511
- *
512
- * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
513
- * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
514
- * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
515
- * @throws {FaableApiError} `insufficient_scope` (403) — The token lacks a scope this operation requires. `message` names it.
516
- * @throws {FaableApiError} `user_suspended` (403) — The user is suspended and cannot sign in or be modified.
517
- * @throws {FaableApiError} `account_not_found` (404) — No Auth Account matches the request (domain, header or token).
518
- * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
519
- * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
520
- */
505
+ type: "string" | "enum";
521
506
  options?: string[] | undefined;
522
507
  max_length?: number | undefined;
523
- }[] | undefined;
508
+ }[] | null | undefined;
524
509
  login_flow?: string | null | undefined;
525
510
  mfa_policy?: {
526
511
  mode?: "required" | "optional" | "off" | undefined;
@@ -587,25 +572,10 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
587
572
  } | undefined;
588
573
  profile_fields?: {
589
574
  key: string;
590
- type: "string" | "enum"; /**
591
- * `POST /user/{user_id}/passkey-prompt/reset` — operationId: `user/resetPasskeyPrompt`
592
- *
593
- * Reset a user's passkey offer counter
594
- *
595
- * The post-login "create a passkey" offer stops after `login_methods.passkey_promotion_max_prompts` times and snoozes between them. This clears both, so the user is offered a passkey again on their next login — for "why does it keep asking" and "please ask me again" alike.
596
- *
597
- * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
598
- * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
599
- * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
600
- * @throws {FaableApiError} `insufficient_scope` (403) — The token lacks a scope this operation requires. `message` names it.
601
- * @throws {FaableApiError} `user_suspended` (403) — The user is suspended and cannot sign in or be modified.
602
- * @throws {FaableApiError} `account_not_found` (404) — No Auth Account matches the request (domain, header or token).
603
- * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
604
- * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
605
- */
575
+ type: "string" | "enum";
606
576
  options?: string[] | undefined;
607
577
  max_length?: number | undefined;
608
- }[] | undefined;
578
+ }[] | null | undefined;
609
579
  login_flow?: string | null | undefined;
610
580
  mfa_policy?: {
611
581
  mode?: "required" | "optional" | "off" | undefined;
@@ -675,25 +645,10 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
675
645
  } | undefined;
676
646
  profile_fields?: {
677
647
  key: string;
678
- type: "string" | "enum"; /**
679
- * `POST /user/{user_id}/passkey-prompt/reset` — operationId: `user/resetPasskeyPrompt`
680
- *
681
- * Reset a user's passkey offer counter
682
- *
683
- * The post-login "create a passkey" offer stops after `login_methods.passkey_promotion_max_prompts` times and snoozes between them. This clears both, so the user is offered a passkey again on their next login — for "why does it keep asking" and "please ask me again" alike.
684
- *
685
- * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
686
- * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
687
- * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
688
- * @throws {FaableApiError} `insufficient_scope` (403) — The token lacks a scope this operation requires. `message` names it.
689
- * @throws {FaableApiError} `user_suspended` (403) — The user is suspended and cannot sign in or be modified.
690
- * @throws {FaableApiError} `account_not_found` (404) — No Auth Account matches the request (domain, header or token).
691
- * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
692
- * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
693
- */
648
+ type: "string" | "enum";
694
649
  options?: string[] | undefined;
695
650
  max_length?: number | undefined;
696
- }[] | undefined;
651
+ }[] | null | undefined;
697
652
  login_flow?: string | null | undefined;
698
653
  mfa_policy?: {
699
654
  mode?: "required" | "optional" | "off" | undefined;
@@ -958,7 +913,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
958
913
  type: "string" | "enum";
959
914
  options?: string[] | undefined;
960
915
  max_length?: number | undefined;
961
- }[] | undefined;
916
+ }[] | null | undefined;
962
917
  login_flow?: string | null | undefined;
963
918
  mfa_policy?: {
964
919
  mode?: "required" | "optional" | "off" | undefined;
@@ -1592,7 +1547,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1592
1547
  type: "string" | "enum";
1593
1548
  options?: string[] | undefined;
1594
1549
  max_length?: number | undefined;
1595
- }[] | undefined;
1550
+ }[] | null | undefined;
1596
1551
  mfa_policy?: {
1597
1552
  mode?: "required" | "optional" | "off" | undefined;
1598
1553
  allowed_factors?: ("webauthn" | "totp")[] | undefined;
@@ -1691,7 +1646,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1691
1646
  type: "string" | "enum";
1692
1647
  options?: string[] | undefined;
1693
1648
  max_length?: number | undefined;
1694
- }[] | undefined;
1649
+ }[] | null | undefined;
1695
1650
  mfa_policy?: {
1696
1651
  mode?: "required" | "optional" | "off" | undefined;
1697
1652
  allowed_factors?: ("webauthn" | "totp")[] | undefined;
@@ -1791,7 +1746,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1791
1746
  type: "string" | "enum";
1792
1747
  options?: string[] | undefined;
1793
1748
  max_length?: number | undefined;
1794
- }[] | undefined;
1749
+ }[] | null | undefined;
1795
1750
  mfa_policy?: {
1796
1751
  mode?: "required" | "optional" | "off" | undefined;
1797
1752
  allowed_factors?: ("webauthn" | "totp")[] | undefined;
@@ -1892,7 +1847,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1892
1847
  type: "string" | "enum";
1893
1848
  options?: string[] | undefined;
1894
1849
  max_length?: number | undefined;
1895
- }[] | undefined;
1850
+ }[] | null | undefined;
1896
1851
  mfa_policy?: {
1897
1852
  mode?: "required" | "optional" | "off" | undefined;
1898
1853
  allowed_factors?: ("webauthn" | "totp")[] | undefined;
@@ -1975,7 +1930,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1975
1930
  type: "string" | "enum";
1976
1931
  options?: string[] | undefined;
1977
1932
  max_length?: number | undefined;
1978
- }[] | undefined;
1933
+ }[] | null | undefined;
1979
1934
  mfa_policy?: {
1980
1935
  mode?: "required" | "optional" | "off" | undefined;
1981
1936
  allowed_factors?: ("webauthn" | "totp")[] | undefined;
@@ -2061,7 +2016,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
2061
2016
  type: "string" | "enum";
2062
2017
  options?: string[] | undefined;
2063
2018
  max_length?: number | undefined;
2064
- }[] | undefined;
2019
+ }[] | null | undefined;
2065
2020
  mfa_policy?: {
2066
2021
  mode?: "required" | "optional" | "off" | undefined;
2067
2022
  allowed_factors?: ("webauthn" | "totp")[] | undefined;
@@ -2163,7 +2118,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
2163
2118
  type: "string" | "enum";
2164
2119
  options?: string[] | undefined;
2165
2120
  max_length?: number | undefined;
2166
- }[] | undefined;
2121
+ }[] | null | undefined;
2167
2122
  mfa_policy?: {
2168
2123
  mode?: "required" | "optional" | "off" | undefined;
2169
2124
  allowed_factors?: ("webauthn" | "totp")[] | undefined;
@@ -2263,7 +2218,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
2263
2218
  type: "string" | "enum";
2264
2219
  options?: string[] | undefined;
2265
2220
  max_length?: number | undefined;
2266
- }[] | undefined;
2221
+ }[] | null | undefined;
2267
2222
  mfa_policy?: {
2268
2223
  mode?: "required" | "optional" | "off" | undefined;
2269
2224
  allowed_factors?: ("webauthn" | "totp")[] | undefined;
@@ -2820,9 +2775,10 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
2820
2775
  *
2821
2776
  * Set a credential's password
2822
2777
  *
2823
- * Sets or rotates the password for a database credential. Send exactly one of `password` (plaintext, hashed with argon2id) or `password_hash` (a hash exported from another provider: bcrypt, scrypt, Firebase scrypt, PBKDF2 or argon2 — verified on the first login and upgraded to argon2id). The previous password is invalidated immediately. A plaintext password records a `credential.password_changed` audit entry (initiated_by=admin); the confirmation email is only sent when an EXISTING password is rotated. An imported hash records `credential.password_imported` with its algorithm and sends no email. Neither the password nor the hash is ever returned or logged.
2778
+ * Sets or rotates the password for a database credential. Send exactly one of `password` (plaintext, hashed with argon2id) or `password_hash` (a hash exported from another provider: bcrypt, scrypt, Firebase scrypt, PBKDF2 or argon2 — verified on the first login and upgraded to argon2id). A plaintext password must meet the password policy of the connection the credential belongs to (`password_too_weak` lists what is missing); an imported hash cannot be checked and is not. The previous password is invalidated immediately. A plaintext password records a `credential.password_changed` audit entry (initiated_by=admin); the confirmation email is only sent when an EXISTING password is rotated. An imported hash records `credential.password_imported` with its algorithm and sends no email. Neither the password nor the hash is ever returned or logged.
2824
2779
  *
2825
2780
  * @throws {FaableApiError} `bad_request` (400) — The request is malformed. `message` says what is wrong.
2781
+ * @throws {FaableApiError} `password_too_weak` (400) — The password does not meet the connection policy. `message` lists each unmet rule.
2826
2782
  * @throws {FaableApiError} `invalid_password_hash` (400) — The imported password hash cannot be read, or its cost is above what a login can afford. `message` names the field.
2827
2783
  * @throws {FaableApiError} `weak_password_hash` (400) — The imported password hash uses a fast digest (MD5, SHA-1, SHA-2) or a cost below the minimum. `message` says which.
2828
2784
  * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
@@ -805,9 +805,10 @@ export class GeneratedFaableAuthApi extends FaableApi {
805
805
  *
806
806
  * Set a credential's password
807
807
  *
808
- * Sets or rotates the password for a database credential. Send exactly one of `password` (plaintext, hashed with argon2id) or `password_hash` (a hash exported from another provider: bcrypt, scrypt, Firebase scrypt, PBKDF2 or argon2 — verified on the first login and upgraded to argon2id). The previous password is invalidated immediately. A plaintext password records a `credential.password_changed` audit entry (initiated_by=admin); the confirmation email is only sent when an EXISTING password is rotated. An imported hash records `credential.password_imported` with its algorithm and sends no email. Neither the password nor the hash is ever returned or logged.
808
+ * Sets or rotates the password for a database credential. Send exactly one of `password` (plaintext, hashed with argon2id) or `password_hash` (a hash exported from another provider: bcrypt, scrypt, Firebase scrypt, PBKDF2 or argon2 — verified on the first login and upgraded to argon2id). A plaintext password must meet the password policy of the connection the credential belongs to (`password_too_weak` lists what is missing); an imported hash cannot be checked and is not. The previous password is invalidated immediately. A plaintext password records a `credential.password_changed` audit entry (initiated_by=admin); the confirmation email is only sent when an EXISTING password is rotated. An imported hash records `credential.password_imported` with its algorithm and sends no email. Neither the password nor the hash is ever returned or logged.
809
809
  *
810
810
  * @throws {FaableApiError} `bad_request` (400) — The request is malformed. `message` says what is wrong.
811
+ * @throws {FaableApiError} `password_too_weak` (400) — The password does not meet the connection policy. `message` lists each unmet rule.
811
812
  * @throws {FaableApiError} `invalid_password_hash` (400) — The imported password hash cannot be read, or its cost is above what a login can afford. `message` names the field.
812
813
  * @throws {FaableApiError} `weak_password_hash` (400) — The imported password hash uses a fast digest (MD5, SHA-1, SHA-2) or a cost below the minimum. `message` says which.
813
814
  * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
@@ -1051,7 +1051,7 @@ export interface paths {
1051
1051
  put?: never;
1052
1052
  /**
1053
1053
  * Set a credential's password
1054
- * @description Sets or rotates the password for a database credential. Send exactly one of `password` (plaintext, hashed with argon2id) or `password_hash` (a hash exported from another provider: bcrypt, scrypt, Firebase scrypt, PBKDF2 or argon2 — verified on the first login and upgraded to argon2id). The previous password is invalidated immediately. A plaintext password records a `credential.password_changed` audit entry (initiated_by=admin); the confirmation email is only sent when an EXISTING password is rotated. An imported hash records `credential.password_imported` with its algorithm and sends no email. Neither the password nor the hash is ever returned or logged.
1054
+ * @description Sets or rotates the password for a database credential. Send exactly one of `password` (plaintext, hashed with argon2id) or `password_hash` (a hash exported from another provider: bcrypt, scrypt, Firebase scrypt, PBKDF2 or argon2 — verified on the first login and upgraded to argon2id). A plaintext password must meet the password policy of the connection the credential belongs to (`password_too_weak` lists what is missing); an imported hash cannot be checked and is not. The previous password is invalidated immediately. A plaintext password records a `credential.password_changed` audit entry (initiated_by=admin); the confirmation email is only sent when an EXISTING password is rotated. An imported hash records `credential.password_imported` with its algorithm and sends no email. Neither the password nor the hash is ever returned or logged.
1055
1055
  */
1056
1056
  post: operations["credentials/setPassword"];
1057
1057
  delete?: never;
@@ -5635,7 +5635,7 @@ export interface components {
5635
5635
  options?: string[];
5636
5636
  /** @description Longest accepted value for a `string` field. Default 200. */
5637
5637
  max_length?: number;
5638
- }[];
5638
+ }[] | null;
5639
5639
  /** @description The login flow bound to this account (`loginflow_xxx`). Absent = the flow compiled from the settings. A Client may bind its own. */
5640
5640
  login_flow?: string | null;
5641
5641
  /** @description Second-factor policy. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so one app can require MFA without changing the rest. */
@@ -5981,7 +5981,7 @@ export interface components {
5981
5981
  options?: string[];
5982
5982
  /** @description Longest accepted value for a `string` field. Default 200. */
5983
5983
  max_length?: number;
5984
- }[];
5984
+ }[] | null;
5985
5985
  /** @description Second-factor policy. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so one app can require MFA without changing the rest. */
5986
5986
  mfa_policy?: {
5987
5987
  /** @description `off` (default) never challenges. `optional` challenges a user who has enrolled a factor, and lets everyone else in. `required` challenges everyone and sends users with no factor through enrolment during login — it never locks anyone out in place. */
@@ -8422,7 +8422,7 @@ export interface operations {
8422
8422
  options?: string[];
8423
8423
  /** @description Longest accepted value for a `string` field. Default 200. */
8424
8424
  max_length?: number;
8425
- }[];
8425
+ }[] | null;
8426
8426
  /** @description The login flow bound to this account (`loginflow_xxx`). Absent = the flow compiled from the settings. A Client may bind its own. */
8427
8427
  login_flow?: string | null;
8428
8428
  /** @description Second-factor policy. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so one app can require MFA without changing the rest. */
@@ -8792,7 +8792,7 @@ export interface operations {
8792
8792
  options?: string[];
8793
8793
  /** @description Longest accepted value for a `string` field. Default 200. */
8794
8794
  max_length?: number;
8795
- }[];
8795
+ }[] | null;
8796
8796
  /** @description The login flow bound to this account (`loginflow_xxx`). Absent = the flow compiled from the settings. A Client may bind its own. */
8797
8797
  login_flow?: string | null;
8798
8798
  /** @description Second-factor policy. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so one app can require MFA without changing the rest. */
@@ -9050,7 +9050,7 @@ export interface operations {
9050
9050
  options?: string[];
9051
9051
  /** @description Longest accepted value for a `string` field. Default 200. */
9052
9052
  max_length?: number;
9053
- }[];
9053
+ }[] | null;
9054
9054
  /** @description The login flow bound to this account (`loginflow_xxx`). Absent = the flow compiled from the settings. A Client may bind its own. */
9055
9055
  login_flow?: string | null;
9056
9056
  /** @description Second-factor policy. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so one app can require MFA without changing the rest. */
@@ -9396,7 +9396,7 @@ export interface operations {
9396
9396
  options?: string[];
9397
9397
  /** @description Longest accepted value for a `string` field. Default 200. */
9398
9398
  max_length?: number;
9399
- }[];
9399
+ }[] | null;
9400
9400
  /** @description The login flow bound to this account (`loginflow_xxx`). Absent = the flow compiled from the settings. A Client may bind its own. */
9401
9401
  login_flow?: string | null;
9402
9402
  /** @description Second-factor policy. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so one app can require MFA without changing the rest. */
@@ -10777,7 +10777,7 @@ export interface operations {
10777
10777
  options?: string[];
10778
10778
  /** @description Longest accepted value for a `string` field. Default 200. */
10779
10779
  max_length?: number;
10780
- }[];
10780
+ }[] | null;
10781
10781
  /** @description The login flow bound to this account (`loginflow_xxx`). Absent = the flow compiled from the settings. A Client may bind its own. */
10782
10782
  login_flow?: string | null;
10783
10783
  /** @description Second-factor policy. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so one app can require MFA without changing the rest. */
@@ -12408,7 +12408,7 @@ export interface operations {
12408
12408
  options?: string[];
12409
12409
  /** @description Longest accepted value for a `string` field. Default 200. */
12410
12410
  max_length?: number;
12411
- }[];
12411
+ }[] | null;
12412
12412
  /** @description Second-factor policy. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so one app can require MFA without changing the rest. */
12413
12413
  mfa_policy?: {
12414
12414
  /** @description `off` (default) never challenges. `optional` challenges a user who has enrolled a factor, and lets everyone else in. `required` challenges everyone and sends users with no factor through enrolment during login — it never locks anyone out in place. */
@@ -12643,7 +12643,7 @@ export interface operations {
12643
12643
  options?: string[];
12644
12644
  /** @description Longest accepted value for a `string` field. Default 200. */
12645
12645
  max_length?: number;
12646
- }[];
12646
+ }[] | null;
12647
12647
  /** @description Second-factor policy. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so one app can require MFA without changing the rest. */
12648
12648
  mfa_policy?: {
12649
12649
  /** @description `off` (default) never challenges. `optional` challenges a user who has enrolled a factor, and lets everyone else in. `required` challenges everyone and sends users with no factor through enrolment during login — it never locks anyone out in place. */
@@ -13003,7 +13003,7 @@ export interface operations {
13003
13003
  options?: string[];
13004
13004
  /** @description Longest accepted value for a `string` field. Default 200. */
13005
13005
  max_length?: number;
13006
- }[];
13006
+ }[] | null;
13007
13007
  /** @description Second-factor policy. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so one app can require MFA without changing the rest. */
13008
13008
  mfa_policy?: {
13009
13009
  /** @description `off` (default) never challenges. `optional` challenges a user who has enrolled a factor, and lets everyone else in. `required` challenges everyone and sends users with no factor through enrolment during login — it never locks anyone out in place. */
@@ -13244,7 +13244,7 @@ export interface operations {
13244
13244
  options?: string[];
13245
13245
  /** @description Longest accepted value for a `string` field. Default 200. */
13246
13246
  max_length?: number;
13247
- }[];
13247
+ }[] | null;
13248
13248
  /** @description Second-factor policy. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so one app can require MFA without changing the rest. */
13249
13249
  mfa_policy?: {
13250
13250
  /** @description `off` (default) never challenges. `optional` challenges a user who has enrolled a factor, and lets everyone else in. `required` challenges everyone and sends users with no factor through enrolment during login — it never locks anyone out in place. */
@@ -13483,7 +13483,7 @@ export interface operations {
13483
13483
  options?: string[];
13484
13484
  /** @description Longest accepted value for a `string` field. Default 200. */
13485
13485
  max_length?: number;
13486
- }[];
13486
+ }[] | null;
13487
13487
  /** @description Second-factor policy. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so one app can require MFA without changing the rest. */
13488
13488
  mfa_policy?: {
13489
13489
  /** @description `off` (default) never challenges. `optional` challenges a user who has enrolled a factor, and lets everyone else in. `required` challenges everyone and sends users with no factor through enrolment during login — it never locks anyone out in place. */
@@ -17926,6 +17926,8 @@ export interface operations {
17926
17926
  /**
17927
17927
  * @description `bad_request` — The request is malformed. `message` says what is wrong.
17928
17928
  *
17929
+ * `password_too_weak` — The password does not meet the connection policy. `message` lists each unmet rule.
17930
+ *
17929
17931
  * `invalid_password_hash` — The imported password hash cannot be read, or its cost is above what a login can afford. `message` names the field.
17930
17932
  *
17931
17933
  * `weak_password_hash` — The imported password hash uses a fast digest (MD5, SHA-1, SHA-2) or a cost below the minimum. `message` says which.
@@ -17939,7 +17941,7 @@ export interface operations {
17939
17941
  content: {
17940
17942
  "application/json": components["schemas"]["ErrorResponse"] & {
17941
17943
  /** @enum {string} */
17942
- error_code?: "bad_request" | "invalid_password_hash" | "weak_password_hash" | "validation_error";
17944
+ error_code?: "bad_request" | "password_too_weak" | "invalid_password_hash" | "weak_password_hash" | "validation_error";
17943
17945
  };
17944
17946
  };
17945
17947
  };
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.105";
12
+ export const version = "2.7.107";
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 = "8329c0e";
18
+ export const commit = "720cd27";
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.105",
3
+ "version": "2.7.107",
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.78.0",
6
+ "version": "2.78.2",
7
7
  "license": {
8
8
  "name": "private",
9
9
  "url": "https://faable.com/docs/platform/privacy-policy"
@@ -399,7 +399,8 @@
399
399
  "additionalProperties": false
400
400
  },
401
401
  "maxItems": 20,
402
- "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit."
402
+ "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit.",
403
+ "nullable": true
403
404
  },
404
405
  "login_flow": {
405
406
  "type": "string",
@@ -1791,7 +1792,8 @@
1791
1792
  "additionalProperties": false
1792
1793
  },
1793
1794
  "maxItems": 20,
1794
- "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit."
1795
+ "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit.",
1796
+ "nullable": true
1795
1797
  },
1796
1798
  "mfa_policy": {
1797
1799
  "type": "object",
@@ -9141,7 +9143,8 @@
9141
9143
  "additionalProperties": false
9142
9144
  },
9143
9145
  "maxItems": 20,
9144
- "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit."
9146
+ "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit.",
9147
+ "nullable": true
9145
9148
  },
9146
9149
  "login_flow": {
9147
9150
  "type": "string",
@@ -9947,7 +9950,8 @@
9947
9950
  "additionalProperties": false
9948
9951
  },
9949
9952
  "maxItems": 20,
9950
- "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit."
9953
+ "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit.",
9954
+ "nullable": true
9951
9955
  },
9952
9956
  "login_flow": {
9953
9957
  "type": "string",
@@ -10990,7 +10994,8 @@
10990
10994
  "additionalProperties": false
10991
10995
  },
10992
10996
  "maxItems": 20,
10993
- "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit."
10997
+ "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit.",
10998
+ "nullable": true
10994
10999
  },
10995
11000
  "login_flow": {
10996
11001
  "type": "string",
@@ -12272,7 +12277,8 @@
12272
12277
  "additionalProperties": false
12273
12278
  },
12274
12279
  "maxItems": 20,
12275
- "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit."
12280
+ "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit.",
12281
+ "nullable": true
12276
12282
  },
12277
12283
  "login_flow": {
12278
12284
  "type": "string",
@@ -15532,7 +15538,8 @@
15532
15538
  "additionalProperties": false
15533
15539
  },
15534
15540
  "maxItems": 20,
15535
- "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit."
15541
+ "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit.",
15542
+ "nullable": true
15536
15543
  },
15537
15544
  "login_flow": {
15538
15545
  "type": "string",
@@ -19777,7 +19784,8 @@
19777
19784
  "additionalProperties": false
19778
19785
  },
19779
19786
  "maxItems": 20,
19780
- "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit."
19787
+ "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit.",
19788
+ "nullable": true
19781
19789
  },
19782
19790
  "mfa_policy": {
19783
19791
  "type": "object",
@@ -20586,7 +20594,8 @@
20586
20594
  "additionalProperties": false
20587
20595
  },
20588
20596
  "maxItems": 20,
20589
- "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit."
20597
+ "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit.",
20598
+ "nullable": true
20590
20599
  },
20591
20600
  "mfa_policy": {
20592
20601
  "type": "object",
@@ -22069,7 +22078,8 @@
22069
22078
  "additionalProperties": false
22070
22079
  },
22071
22080
  "maxItems": 20,
22072
- "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit."
22081
+ "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit.",
22082
+ "nullable": true
22073
22083
  },
22074
22084
  "mfa_policy": {
22075
22085
  "type": "object",
@@ -22878,7 +22888,8 @@
22878
22888
  "additionalProperties": false
22879
22889
  },
22880
22890
  "maxItems": 20,
22881
- "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit."
22891
+ "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit.",
22892
+ "nullable": true
22882
22893
  },
22883
22894
  "mfa_policy": {
22884
22895
  "type": "object",
@@ -23688,7 +23699,8 @@
23688
23699
  "additionalProperties": false
23689
23700
  },
23690
23701
  "maxItems": 20,
23691
- "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit."
23702
+ "description": "Profile fields the user may write on themselves with `PATCH /me` (`fields`), stored in `user_metadata[\"faable.com/fields\"]`. On a Client it replaces the account's list entirely; absent = inherit.",
23703
+ "nullable": true
23692
23704
  },
23693
23705
  "mfa_policy": {
23694
23706
  "type": "object",
@@ -33399,7 +33411,7 @@
33399
33411
  "tags": [
33400
33412
  "credentials"
33401
33413
  ],
33402
- "description": "Sets or rotates the password for a database credential. Send exactly one of `password` (plaintext, hashed with argon2id) or `password_hash` (a hash exported from another provider: bcrypt, scrypt, Firebase scrypt, PBKDF2 or argon2 — verified on the first login and upgraded to argon2id). The previous password is invalidated immediately. A plaintext password records a `credential.password_changed` audit entry (initiated_by=admin); the confirmation email is only sent when an EXISTING password is rotated. An imported hash records `credential.password_imported` with its algorithm and sends no email. Neither the password nor the hash is ever returned or logged.",
33414
+ "description": "Sets or rotates the password for a database credential. Send exactly one of `password` (plaintext, hashed with argon2id) or `password_hash` (a hash exported from another provider: bcrypt, scrypt, Firebase scrypt, PBKDF2 or argon2 — verified on the first login and upgraded to argon2id). A plaintext password must meet the password policy of the connection the credential belongs to (`password_too_weak` lists what is missing); an imported hash cannot be checked and is not. The previous password is invalidated immediately. A plaintext password records a `credential.password_changed` audit entry (initiated_by=admin); the confirmation email is only sent when an EXISTING password is rotated. An imported hash records `credential.password_imported` with its algorithm and sends no email. Neither the password nor the hash is ever returned or logged.",
33403
33415
  "requestBody": {
33404
33416
  "required": true,
33405
33417
  "content": {
@@ -33558,7 +33570,7 @@
33558
33570
  }
33559
33571
  },
33560
33572
  "400": {
33561
- "description": "`bad_request` — The request is malformed. `message` says what is wrong.\n\n`invalid_password_hash` — The imported password hash cannot be read, or its cost is above what a login can afford. `message` names the field.\n\n`weak_password_hash` — The imported password hash uses a fast digest (MD5, SHA-1, SHA-2) or a cost below the minimum. `message` says which.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
33573
+ "description": "`bad_request` — The request is malformed. `message` says what is wrong.\n\n`password_too_weak` — The password does not meet the connection policy. `message` lists each unmet rule.\n\n`invalid_password_hash` — The imported password hash cannot be read, or its cost is above what a login can afford. `message` names the field.\n\n`weak_password_hash` — The imported password hash uses a fast digest (MD5, SHA-1, SHA-2) or a cost below the minimum. `message` says which.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
33562
33574
  "content": {
33563
33575
  "application/json": {
33564
33576
  "schema": {
@@ -33573,6 +33585,7 @@
33573
33585
  "type": "string",
33574
33586
  "enum": [
33575
33587
  "bad_request",
33588
+ "password_too_weak",
33576
33589
  "invalid_password_hash",
33577
33590
  "weak_password_hash",
33578
33591
  "validation_error"