@faable/auth-sdk 2.7.44 → 2.7.46

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.
@@ -93,6 +93,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
93
93
  } | undefined;
94
94
  default_country_iso?: string | null | undefined;
95
95
  webauthn_rp_id?: string | null | undefined;
96
+ logout_confirm_required?: boolean | undefined;
96
97
  createdAt: string;
97
98
  updatedAt?: string | undefined;
98
99
  }>;
@@ -793,6 +794,8 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
793
794
  software_version?: string | null | undefined;
794
795
  frontchannel_logout_uri?: string | null | undefined;
795
796
  frontchannel_logout_session_required?: boolean | undefined;
797
+ backchannel_logout_uri?: string | null | undefined;
798
+ backchannel_logout_session_required?: boolean | undefined;
796
799
  login_methods?: {
797
800
  order?: string[] | undefined;
798
801
  disabled_connections?: string[] | undefined;
@@ -854,6 +857,8 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
854
857
  software_version?: string | null | undefined;
855
858
  frontchannel_logout_uri?: string | null | undefined;
856
859
  frontchannel_logout_session_required?: boolean | undefined;
860
+ backchannel_logout_uri?: string | null | undefined;
861
+ backchannel_logout_session_required?: boolean | undefined;
857
862
  login_methods?: {
858
863
  order?: string[] | undefined;
859
864
  disabled_connections?: string[] | undefined;
@@ -918,6 +923,8 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
918
923
  software_version?: string | null | undefined;
919
924
  frontchannel_logout_uri?: string | null | undefined;
920
925
  frontchannel_logout_session_required?: boolean | undefined;
926
+ backchannel_logout_uri?: string | null | undefined;
927
+ backchannel_logout_session_required?: boolean | undefined;
921
928
  login_methods?: {
922
929
  order?: string[] | undefined;
923
930
  disabled_connections?: string[] | undefined;
@@ -981,6 +988,8 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
981
988
  software_version?: string | null | undefined;
982
989
  frontchannel_logout_uri?: string | null | undefined;
983
990
  frontchannel_logout_session_required?: boolean | undefined;
991
+ backchannel_logout_uri?: string | null | undefined;
992
+ backchannel_logout_session_required?: boolean | undefined;
984
993
  login_methods?: {
985
994
  order?: string[] | undefined;
986
995
  disabled_connections?: string[] | undefined;
@@ -91,6 +91,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
91
91
  } | undefined;
92
92
  default_country_iso?: string | null | undefined;
93
93
  webauthn_rp_id?: string | null | undefined;
94
+ logout_confirm_required?: boolean | undefined;
94
95
  createdAt: string;
95
96
  updatedAt?: string | undefined;
96
97
  }>;
@@ -164,6 +165,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
164
165
  } | undefined;
165
166
  default_country_iso?: string | null | undefined;
166
167
  webauthn_rp_id?: string | null | undefined;
168
+ logout_confirm_required?: boolean | undefined;
167
169
  createdAt: string;
168
170
  updatedAt?: string | undefined;
169
171
  }>;
@@ -259,6 +261,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
259
261
  } | undefined;
260
262
  default_country_iso?: string | null | undefined;
261
263
  webauthn_rp_id?: string | null | undefined;
264
+ logout_confirm_required?: boolean | undefined;
262
265
  createdAt: string;
263
266
  updatedAt?: string | undefined;
264
267
  }>;
@@ -356,6 +359,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
356
359
  } | undefined;
357
360
  default_country_iso?: string | null | undefined;
358
361
  webauthn_rp_id?: string | null | undefined;
362
+ logout_confirm_required?: boolean | undefined;
359
363
  createdAt: string;
360
364
  updatedAt?: string | undefined;
361
365
  }[]>;
@@ -413,6 +417,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
413
417
  } | undefined;
414
418
  default_country_iso?: string | null | undefined;
415
419
  webauthn_rp_id?: string | null | undefined;
420
+ logout_confirm_required?: boolean | undefined;
416
421
  createdAt: string;
417
422
  updatedAt?: string | undefined;
418
423
  }>>;
@@ -473,6 +478,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
473
478
  } | undefined;
474
479
  default_country_iso?: string | null | undefined;
475
480
  webauthn_rp_id?: string | null | undefined;
481
+ logout_confirm_required?: boolean | undefined;
476
482
  createdAt: string;
477
483
  updatedAt?: string | undefined;
478
484
  }>>;
@@ -702,6 +708,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
702
708
  } | undefined;
703
709
  default_country_iso?: string | null | undefined;
704
710
  webauthn_rp_id?: string | null | undefined;
711
+ logout_confirm_required?: boolean | undefined;
705
712
  createdAt: string;
706
713
  updatedAt?: string | undefined;
707
714
  }>;
@@ -1218,6 +1225,8 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1218
1225
  software_version?: string | null | undefined;
1219
1226
  frontchannel_logout_uri?: string | null | undefined;
1220
1227
  frontchannel_logout_session_required?: boolean | undefined;
1228
+ backchannel_logout_uri?: string | null | undefined;
1229
+ backchannel_logout_session_required?: boolean | undefined;
1221
1230
  login_methods?: {
1222
1231
  order?: string[] | undefined;
1223
1232
  disabled_connections?: string[] | undefined;
@@ -1295,6 +1304,8 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1295
1304
  software_version?: string | null | undefined;
1296
1305
  frontchannel_logout_uri?: string | null | undefined;
1297
1306
  frontchannel_logout_session_required?: boolean | undefined;
1307
+ backchannel_logout_uri?: string | null | undefined;
1308
+ backchannel_logout_session_required?: boolean | undefined;
1298
1309
  login_methods?: {
1299
1310
  order?: string[] | undefined;
1300
1311
  disabled_connections?: string[] | undefined;
@@ -1373,6 +1384,8 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1373
1384
  software_version?: string | null | undefined;
1374
1385
  frontchannel_logout_uri?: string | null | undefined;
1375
1386
  frontchannel_logout_session_required?: boolean | undefined;
1387
+ backchannel_logout_uri?: string | null | undefined;
1388
+ backchannel_logout_session_required?: boolean | undefined;
1376
1389
  login_methods?: {
1377
1390
  order?: string[] | undefined;
1378
1391
  disabled_connections?: string[] | undefined;
@@ -1452,6 +1465,8 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1452
1465
  software_version?: string | null | undefined;
1453
1466
  frontchannel_logout_uri?: string | null | undefined;
1454
1467
  frontchannel_logout_session_required?: boolean | undefined;
1468
+ backchannel_logout_uri?: string | null | undefined;
1469
+ backchannel_logout_session_required?: boolean | undefined;
1455
1470
  login_methods?: {
1456
1471
  order?: string[] | undefined;
1457
1472
  disabled_connections?: string[] | undefined;
@@ -1513,6 +1528,8 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1513
1528
  software_version?: string | null | undefined;
1514
1529
  frontchannel_logout_uri?: string | null | undefined;
1515
1530
  frontchannel_logout_session_required?: boolean | undefined;
1531
+ backchannel_logout_uri?: string | null | undefined;
1532
+ backchannel_logout_session_required?: boolean | undefined;
1516
1533
  login_methods?: {
1517
1534
  order?: string[] | undefined;
1518
1535
  disabled_connections?: string[] | undefined;
@@ -1577,6 +1594,8 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1577
1594
  software_version?: string | null | undefined;
1578
1595
  frontchannel_logout_uri?: string | null | undefined;
1579
1596
  frontchannel_logout_session_required?: boolean | undefined;
1597
+ backchannel_logout_uri?: string | null | undefined;
1598
+ backchannel_logout_session_required?: boolean | undefined;
1580
1599
  login_methods?: {
1581
1600
  order?: string[] | undefined;
1582
1601
  disabled_connections?: string[] | undefined;
@@ -1657,6 +1676,8 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1657
1676
  software_version?: string | null | undefined;
1658
1677
  frontchannel_logout_uri?: string | null | undefined;
1659
1678
  frontchannel_logout_session_required?: boolean | undefined;
1679
+ backchannel_logout_uri?: string | null | undefined;
1680
+ backchannel_logout_session_required?: boolean | undefined;
1660
1681
  login_methods?: {
1661
1682
  order?: string[] | undefined;
1662
1683
  disabled_connections?: string[] | undefined;
@@ -1735,6 +1756,8 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1735
1756
  software_version?: string | null | undefined;
1736
1757
  frontchannel_logout_uri?: string | null | undefined;
1737
1758
  frontchannel_logout_session_required?: boolean | undefined;
1759
+ backchannel_logout_uri?: string | null | undefined;
1760
+ backchannel_logout_session_required?: boolean | undefined;
1738
1761
  login_methods?: {
1739
1762
  order?: string[] | undefined;
1740
1763
  disabled_connections?: string[] | undefined;
@@ -3916,6 +3916,26 @@ export interface paths {
3916
3916
  patch?: never;
3917
3917
  trace?: never;
3918
3918
  };
3919
+ "/logout/confirm": {
3920
+ parameters: {
3921
+ query?: never;
3922
+ header?: never;
3923
+ path?: never;
3924
+ cookie?: never;
3925
+ };
3926
+ get?: never;
3927
+ put?: never;
3928
+ /**
3929
+ * Confirm a parked RP-Initiated Logout
3930
+ * @description Finishes a `/logout` request that was parked pending confirmation (backlog §240) because it carried no verified `id_token_hint`. Single-use: the state cannot be replayed.
3931
+ */
3932
+ post: operations["session/logoutConfirm"];
3933
+ delete?: never;
3934
+ options?: never;
3935
+ head?: never;
3936
+ patch?: never;
3937
+ trace?: never;
3938
+ };
3919
3939
  "/authorize": {
3920
3940
  parameters: {
3921
3941
  query?: never;
@@ -4495,6 +4515,8 @@ export interface components {
4495
4515
  default_country_iso?: string | null;
4496
4516
  /** @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. */
4497
4517
  webauthn_rp_id?: string | null;
4518
+ /** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
4519
+ logout_confirm_required?: boolean;
4498
4520
  /** @description AuthAccount creation date */
4499
4521
  createdAt: string;
4500
4522
  /** @description AuthAccount updated date */
@@ -4759,6 +4781,8 @@ export interface components {
4759
4781
  software_version?: string | null;
4760
4782
  frontchannel_logout_uri?: string | null;
4761
4783
  frontchannel_logout_session_required?: boolean;
4784
+ backchannel_logout_uri?: string | null;
4785
+ backchannel_logout_session_required?: boolean;
4762
4786
  /** @description Which login methods the hosted login screen offers and in what order. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so a client can flip one flag without restating the rest. Absent everywhere = built-in defaults. */
4763
4787
  login_methods?: {
4764
4788
  /** @description Order in which the hosted login screen renders the available methods. Entries are Connection resource ids (`connection_xxx`) or the literal `passkey`. Methods not listed keep the built-in order (passwordless, database, social) after the listed ones; ids that no longer resolve are ignored. Listing an `oidc` connection here is also the only way to surface it on the login screen — see resolveLoginMethods(). */
@@ -4880,6 +4904,8 @@ export interface components {
4880
4904
  software_version?: string | null;
4881
4905
  frontchannel_logout_uri?: string | null;
4882
4906
  frontchannel_logout_session_required?: boolean;
4907
+ backchannel_logout_uri?: string | null;
4908
+ backchannel_logout_session_required?: boolean;
4883
4909
  login_methods?: {
4884
4910
  /** @description Order in which the hosted login screen renders the available methods. Entries are Connection resource ids (`connection_xxx`) or the literal `passkey`. Methods not listed keep the built-in order (passwordless, database, social) after the listed ones; ids that no longer resolve are ignored. Listing an `oidc` connection here is also the only way to surface it on the login screen — see resolveLoginMethods(). */
4885
4911
  order?: string[];
@@ -6300,6 +6326,10 @@ export interface components {
6300
6326
  frontchannel_logout_uri?: string;
6301
6327
  /** @description OIDC Front-Channel Logout 1.0 — when true, the OP MUST include `iss` and `sid` parameters when calling the frontchannel_logout_uri. */
6302
6328
  frontchannel_logout_session_required?: boolean;
6329
+ /** @description OIDC Back-Channel Logout 1.0 — URL the OP POSTs a signed `logout_token` to when a session this client took part in ends. */
6330
+ backchannel_logout_uri?: string;
6331
+ /** @description OIDC Back-Channel Logout 1.0 — when true, the `logout_token` MUST include a `sid` claim. */
6332
+ backchannel_logout_session_required?: boolean;
6303
6333
  /** @description Non-standard (Auth0-compatible) — origins (scheme://host[:port], no path) allowed to make cross-origin (CORS) requests to the token and passwordless endpoints. Empty allows any origin. */
6304
6334
  web_origins?: string[];
6305
6335
  } & {
@@ -6329,6 +6359,8 @@ export interface components {
6329
6359
  software_version?: string;
6330
6360
  frontchannel_logout_uri?: string;
6331
6361
  frontchannel_logout_session_required?: boolean;
6362
+ backchannel_logout_uri?: string;
6363
+ backchannel_logout_session_required?: boolean;
6332
6364
  web_origins?: string[];
6333
6365
  } & {
6334
6366
  [key: string]: unknown;
@@ -6467,6 +6499,7 @@ export interface components {
6467
6499
  } | null;
6468
6500
  default_country_iso?: string | null;
6469
6501
  webauthn_rp_id?: string | null;
6502
+ logout_confirm_required?: boolean | null;
6470
6503
  login_flow?: string | null;
6471
6504
  };
6472
6505
  FactorSummary: {
@@ -6822,6 +6855,8 @@ export interface operations {
6822
6855
  default_country_iso?: string | null;
6823
6856
  /** @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. */
6824
6857
  webauthn_rp_id?: string | null;
6858
+ /** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
6859
+ logout_confirm_required?: boolean;
6825
6860
  /** @description AuthAccount creation date */
6826
6861
  createdAt: string;
6827
6862
  /** @description AuthAccount updated date */
@@ -7167,6 +7202,8 @@ export interface operations {
7167
7202
  default_country_iso?: string | null;
7168
7203
  /** @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. */
7169
7204
  webauthn_rp_id?: string | null;
7205
+ /** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
7206
+ logout_confirm_required?: boolean;
7170
7207
  /** @description AuthAccount creation date */
7171
7208
  createdAt: string;
7172
7209
  /** @description AuthAccount updated date */
@@ -7398,6 +7435,8 @@ export interface operations {
7398
7435
  default_country_iso?: string | null;
7399
7436
  /** @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. */
7400
7437
  webauthn_rp_id?: string | null;
7438
+ /** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
7439
+ logout_confirm_required?: boolean;
7401
7440
  /** @description AuthAccount creation date */
7402
7441
  createdAt: string;
7403
7442
  /** @description AuthAccount updated date */
@@ -7584,6 +7623,7 @@ export interface operations {
7584
7623
  } | null;
7585
7624
  default_country_iso?: string | null;
7586
7625
  webauthn_rp_id?: string | null;
7626
+ logout_confirm_required?: boolean | null;
7587
7627
  login_flow?: string | null;
7588
7628
  };
7589
7629
  };
@@ -7701,6 +7741,8 @@ export interface operations {
7701
7741
  default_country_iso?: string | null;
7702
7742
  /** @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. */
7703
7743
  webauthn_rp_id?: string | null;
7744
+ /** @description When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF). */
7745
+ logout_confirm_required?: boolean;
7704
7746
  /** @description AuthAccount creation date */
7705
7747
  createdAt: string;
7706
7748
  /** @description AuthAccount updated date */
@@ -10167,6 +10209,8 @@ export interface operations {
10167
10209
  software_version?: string | null;
10168
10210
  frontchannel_logout_uri?: string | null;
10169
10211
  frontchannel_logout_session_required?: boolean;
10212
+ backchannel_logout_uri?: string | null;
10213
+ backchannel_logout_session_required?: boolean;
10170
10214
  /** @description Which login methods the hosted login screen offers and in what order. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so a client can flip one flag without restating the rest. Absent everywhere = built-in defaults. */
10171
10215
  login_methods?: {
10172
10216
  /** @description Order in which the hosted login screen renders the available methods. Entries are Connection resource ids (`connection_xxx`) or the literal `passkey`. Methods not listed keep the built-in order (passwordless, database, social) after the listed ones; ids that no longer resolve are ignored. Listing an `oidc` connection here is also the only way to surface it on the login screen — see resolveLoginMethods(). */
@@ -10363,6 +10407,8 @@ export interface operations {
10363
10407
  software_version?: string | null;
10364
10408
  frontchannel_logout_uri?: string | null;
10365
10409
  frontchannel_logout_session_required?: boolean;
10410
+ backchannel_logout_uri?: string | null;
10411
+ backchannel_logout_session_required?: boolean;
10366
10412
  /** @description Which login methods the hosted login screen offers and in what order. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so a client can flip one flag without restating the rest. Absent everywhere = built-in defaults. */
10367
10413
  login_methods?: {
10368
10414
  /** @description Order in which the hosted login screen renders the available methods. Entries are Connection resource ids (`connection_xxx`) or the literal `passkey`. Methods not listed keep the built-in order (passwordless, database, social) after the listed ones; ids that no longer resolve are ignored. Listing an `oidc` connection here is also the only way to surface it on the login screen — see resolveLoginMethods(). */
@@ -10561,6 +10607,8 @@ export interface operations {
10561
10607
  software_version?: string | null;
10562
10608
  frontchannel_logout_uri?: string | null;
10563
10609
  frontchannel_logout_session_required?: boolean;
10610
+ backchannel_logout_uri?: string | null;
10611
+ backchannel_logout_session_required?: boolean;
10564
10612
  login_methods?: {
10565
10613
  /** @description Order in which the hosted login screen renders the available methods. Entries are Connection resource ids (`connection_xxx`) or the literal `passkey`. Methods not listed keep the built-in order (passwordless, database, social) after the listed ones; ids that no longer resolve are ignored. Listing an `oidc` connection here is also the only way to surface it on the login screen — see resolveLoginMethods(). */
10566
10614
  order?: string[];
@@ -10650,6 +10698,8 @@ export interface operations {
10650
10698
  software_version?: string | null;
10651
10699
  frontchannel_logout_uri?: string | null;
10652
10700
  frontchannel_logout_session_required?: boolean;
10701
+ backchannel_logout_uri?: string | null;
10702
+ backchannel_logout_session_required?: boolean;
10653
10703
  /** @description Which login methods the hosted login screen offers and in what order. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so a client can flip one flag without restating the rest. Absent everywhere = built-in defaults. */
10654
10704
  login_methods?: {
10655
10705
  /** @description Order in which the hosted login screen renders the available methods. Entries are Connection resource ids (`connection_xxx`) or the literal `passkey`. Methods not listed keep the built-in order (passwordless, database, social) after the listed ones; ids that no longer resolve are ignored. Listing an `oidc` connection here is also the only way to surface it on the login screen — see resolveLoginMethods(). */
@@ -10852,6 +10902,8 @@ export interface operations {
10852
10902
  software_version?: string | null;
10853
10903
  frontchannel_logout_uri?: string | null;
10854
10904
  frontchannel_logout_session_required?: boolean;
10905
+ backchannel_logout_uri?: string | null;
10906
+ backchannel_logout_session_required?: boolean;
10855
10907
  /** @description Which login methods the hosted login screen offers and in what order. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so a client can flip one flag without restating the rest. Absent everywhere = built-in defaults. */
10856
10908
  login_methods?: {
10857
10909
  /** @description Order in which the hosted login screen renders the available methods. Entries are Connection resource ids (`connection_xxx`) or the literal `passkey`. Methods not listed keep the built-in order (passwordless, database, social) after the listed ones; ids that no longer resolve are ignored. Listing an `oidc` connection here is also the only way to surface it on the login screen — see resolveLoginMethods(). */
@@ -11052,6 +11104,8 @@ export interface operations {
11052
11104
  software_version?: string | null;
11053
11105
  frontchannel_logout_uri?: string | null;
11054
11106
  frontchannel_logout_session_required?: boolean;
11107
+ backchannel_logout_uri?: string | null;
11108
+ backchannel_logout_session_required?: boolean;
11055
11109
  /** @description Which login methods the hosted login screen offers and in what order. Set on the Account as the tenant default; the same object on a Client overrides it **field by field**, so a client can flip one flag without restating the rest. Absent everywhere = built-in defaults. */
11056
11110
  login_methods?: {
11057
11111
  /** @description Order in which the hosted login screen renders the available methods. Entries are Connection resource ids (`connection_xxx`) or the literal `passkey`. Methods not listed keep the built-in order (passwordless, database, social) after the listed ones; ids that no longer resolve are ignored. Listing an `oidc` connection here is also the only way to surface it on the login screen — see resolveLoginMethods(). */
@@ -26194,6 +26248,95 @@ export interface operations {
26194
26248
  };
26195
26249
  };
26196
26250
  };
26251
+ "session/logoutConfirm": {
26252
+ parameters: {
26253
+ query?: never;
26254
+ header?: never;
26255
+ path?: never;
26256
+ cookie?: never;
26257
+ };
26258
+ requestBody: {
26259
+ content: {
26260
+ "application/json": {
26261
+ /** @description The `state` the confirmation screen was opened with. */
26262
+ state: string;
26263
+ };
26264
+ };
26265
+ };
26266
+ responses: {
26267
+ /** @description Default Response */
26268
+ 200: {
26269
+ headers: {
26270
+ [name: string]: unknown;
26271
+ };
26272
+ content?: never;
26273
+ };
26274
+ /**
26275
+ * @description `invalid_state` — The `state` is missing, expired, or does not describe a resumable step.
26276
+ *
26277
+ * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
26278
+ */
26279
+ 400: {
26280
+ headers: {
26281
+ [name: string]: unknown;
26282
+ };
26283
+ content: {
26284
+ "application/json": components["schemas"]["ErrorResponse"] & {
26285
+ /** @enum {string} */
26286
+ error_code?: "invalid_state" | "validation_error";
26287
+ };
26288
+ };
26289
+ };
26290
+ /** @description `state_mismatch` — The `state` belongs to another account, session, client or ceremony. */
26291
+ 401: {
26292
+ headers: {
26293
+ [name: string]: unknown;
26294
+ };
26295
+ content: {
26296
+ "application/json": components["schemas"]["ErrorResponse"] & {
26297
+ /** @enum {string} */
26298
+ error_code?: "state_mismatch";
26299
+ };
26300
+ };
26301
+ };
26302
+ /** @description `account_not_found` — No Auth Account matches the request (domain, header or token). */
26303
+ 404: {
26304
+ headers: {
26305
+ [name: string]: unknown;
26306
+ };
26307
+ content: {
26308
+ "application/json": components["schemas"]["ErrorResponse"] & {
26309
+ /** @enum {string} */
26310
+ error_code?: "account_not_found";
26311
+ };
26312
+ };
26313
+ };
26314
+ /** @description `too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header. */
26315
+ 429: {
26316
+ headers: {
26317
+ [name: string]: unknown;
26318
+ };
26319
+ content: {
26320
+ "application/json": components["schemas"]["ErrorResponse"] & {
26321
+ /** @enum {string} */
26322
+ error_code?: "too_many_requests";
26323
+ };
26324
+ };
26325
+ };
26326
+ /** @description `internal_error` — Unexpected server error. Retry later; the request id is logged. */
26327
+ 500: {
26328
+ headers: {
26329
+ [name: string]: unknown;
26330
+ };
26331
+ content: {
26332
+ "application/json": components["schemas"]["ErrorResponse"] & {
26333
+ /** @enum {string} */
26334
+ error_code?: "internal_error";
26335
+ };
26336
+ };
26337
+ };
26338
+ };
26339
+ };
26197
26340
  authorize: {
26198
26341
  parameters: {
26199
26342
  query: {
@@ -27663,6 +27806,10 @@ export interface operations {
27663
27806
  frontchannel_logout_uri?: string;
27664
27807
  /** @description OIDC Front-Channel Logout 1.0 — when true, the OP MUST include `iss` and `sid` parameters when calling the frontchannel_logout_uri. */
27665
27808
  frontchannel_logout_session_required?: boolean;
27809
+ /** @description OIDC Back-Channel Logout 1.0 — URL the OP POSTs a signed `logout_token` to when a session this client took part in ends. */
27810
+ backchannel_logout_uri?: string;
27811
+ /** @description OIDC Back-Channel Logout 1.0 — when true, the `logout_token` MUST include a `sid` claim. */
27812
+ backchannel_logout_session_required?: boolean;
27666
27813
  /** @description Non-standard (Auth0-compatible) — origins (scheme://host[:port], no path) allowed to make cross-origin (CORS) requests to the token and passwordless endpoints. Empty allows any origin. */
27667
27814
  web_origins?: string[];
27668
27815
  } & {
@@ -27701,6 +27848,8 @@ export interface operations {
27701
27848
  software_version?: string;
27702
27849
  frontchannel_logout_uri?: string;
27703
27850
  frontchannel_logout_session_required?: boolean;
27851
+ backchannel_logout_uri?: string;
27852
+ backchannel_logout_session_required?: boolean;
27704
27853
  web_origins?: string[];
27705
27854
  } & {
27706
27855
  [key: string]: unknown;
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.44";
12
+ export const version = "2.7.46";
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 = "bbde982";
18
+ export const commit = "fec6e7a";
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.44",
3
+ "version": "2.7.46",
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.44.0",
6
+ "version": "2.46.0",
7
7
  "license": {
8
8
  "name": "private",
9
9
  "url": "https://faable.com/docs/platform/privacy-policy"
@@ -494,6 +494,10 @@
494
494
  "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.",
495
495
  "nullable": true
496
496
  },
497
+ "logout_confirm_required": {
498
+ "type": "boolean",
499
+ "description": "When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF)."
500
+ },
497
501
  "createdAt": {
498
502
  "type": "string",
499
503
  "description": "AuthAccount creation date"
@@ -1489,6 +1493,13 @@
1489
1493
  "frontchannel_logout_session_required": {
1490
1494
  "type": "boolean"
1491
1495
  },
1496
+ "backchannel_logout_uri": {
1497
+ "type": "string",
1498
+ "nullable": true
1499
+ },
1500
+ "backchannel_logout_session_required": {
1501
+ "type": "boolean"
1502
+ },
1492
1503
  "login_methods": {
1493
1504
  "type": "object",
1494
1505
  "properties": {
@@ -2128,6 +2139,13 @@
2128
2139
  "frontchannel_logout_session_required": {
2129
2140
  "type": "boolean"
2130
2141
  },
2142
+ "backchannel_logout_uri": {
2143
+ "type": "string",
2144
+ "nullable": true
2145
+ },
2146
+ "backchannel_logout_session_required": {
2147
+ "type": "boolean"
2148
+ },
2131
2149
  "login_methods": {
2132
2150
  "anyOf": [
2133
2151
  {
@@ -6398,6 +6416,14 @@
6398
6416
  "type": "boolean",
6399
6417
  "description": "OIDC Front-Channel Logout 1.0 — when true, the OP MUST include `iss` and `sid` parameters when calling the frontchannel_logout_uri."
6400
6418
  },
6419
+ "backchannel_logout_uri": {
6420
+ "type": "string",
6421
+ "description": "OIDC Back-Channel Logout 1.0 — URL the OP POSTs a signed `logout_token` to when a session this client took part in ends."
6422
+ },
6423
+ "backchannel_logout_session_required": {
6424
+ "type": "boolean",
6425
+ "description": "OIDC Back-Channel Logout 1.0 — when true, the `logout_token` MUST include a `sid` claim."
6426
+ },
6401
6427
  "web_origins": {
6402
6428
  "type": "array",
6403
6429
  "items": {
@@ -6502,6 +6528,12 @@
6502
6528
  "frontchannel_logout_session_required": {
6503
6529
  "type": "boolean"
6504
6530
  },
6531
+ "backchannel_logout_uri": {
6532
+ "type": "string"
6533
+ },
6534
+ "backchannel_logout_session_required": {
6535
+ "type": "boolean"
6536
+ },
6505
6537
  "web_origins": {
6506
6538
  "type": "array",
6507
6539
  "items": {
@@ -7080,6 +7112,16 @@
7080
7112
  "type": "string",
7081
7113
  "nullable": true
7082
7114
  },
7115
+ "logout_confirm_required": {
7116
+ "anyOf": [
7117
+ {
7118
+ "type": "boolean"
7119
+ },
7120
+ {
7121
+ "type": "null"
7122
+ }
7123
+ ]
7124
+ },
7083
7125
  "login_flow": {
7084
7126
  "type": "string",
7085
7127
  "nullable": true
@@ -8135,6 +8177,10 @@
8135
8177
  "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.",
8136
8178
  "nullable": true
8137
8179
  },
8180
+ "logout_confirm_required": {
8181
+ "type": "boolean",
8182
+ "description": "When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF)."
8183
+ },
8138
8184
  "createdAt": {
8139
8185
  "type": "string",
8140
8186
  "description": "AuthAccount creation date"
@@ -8836,6 +8882,10 @@
8836
8882
  "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.",
8837
8883
  "nullable": true
8838
8884
  },
8885
+ "logout_confirm_required": {
8886
+ "type": "boolean",
8887
+ "description": "When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF)."
8888
+ },
8839
8889
  "createdAt": {
8840
8890
  "type": "string",
8841
8891
  "description": "AuthAccount creation date"
@@ -9773,6 +9823,10 @@
9773
9823
  "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.",
9774
9824
  "nullable": true
9775
9825
  },
9826
+ "logout_confirm_required": {
9827
+ "type": "boolean",
9828
+ "description": "When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF)."
9829
+ },
9776
9830
  "createdAt": {
9777
9831
  "type": "string",
9778
9832
  "description": "AuthAccount creation date"
@@ -10354,6 +10408,16 @@
10354
10408
  "type": "string",
10355
10409
  "nullable": true
10356
10410
  },
10411
+ "logout_confirm_required": {
10412
+ "anyOf": [
10413
+ {
10414
+ "type": "boolean"
10415
+ },
10416
+ {
10417
+ "type": "null"
10418
+ }
10419
+ ]
10420
+ },
10357
10421
  "login_flow": {
10358
10422
  "type": "string",
10359
10423
  "nullable": true
@@ -10844,6 +10908,10 @@
10844
10908
  "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.",
10845
10909
  "nullable": true
10846
10910
  },
10911
+ "logout_confirm_required": {
10912
+ "type": "boolean",
10913
+ "description": "When true, `/logout` asks the End-User to confirm before ending the session unless the request carries a verified `id_token_hint`. Off by default — a plain link to `/logout` is otherwise enough to sign anyone out (logout CSRF)."
10914
+ },
10847
10915
  "createdAt": {
10848
10916
  "type": "string",
10849
10917
  "description": "AuthAccount creation date"
@@ -16629,6 +16697,13 @@
16629
16697
  "frontchannel_logout_session_required": {
16630
16698
  "type": "boolean"
16631
16699
  },
16700
+ "backchannel_logout_uri": {
16701
+ "type": "string",
16702
+ "nullable": true
16703
+ },
16704
+ "backchannel_logout_session_required": {
16705
+ "type": "boolean"
16706
+ },
16632
16707
  "login_methods": {
16633
16708
  "type": "object",
16634
16709
  "properties": {
@@ -17241,6 +17316,13 @@
17241
17316
  "frontchannel_logout_session_required": {
17242
17317
  "type": "boolean"
17243
17318
  },
17319
+ "backchannel_logout_uri": {
17320
+ "type": "string",
17321
+ "nullable": true
17322
+ },
17323
+ "backchannel_logout_session_required": {
17324
+ "type": "boolean"
17325
+ },
17244
17326
  "login_methods": {
17245
17327
  "type": "object",
17246
17328
  "properties": {
@@ -17876,6 +17958,13 @@
17876
17958
  "frontchannel_logout_session_required": {
17877
17959
  "type": "boolean"
17878
17960
  },
17961
+ "backchannel_logout_uri": {
17962
+ "type": "string",
17963
+ "nullable": true
17964
+ },
17965
+ "backchannel_logout_session_required": {
17966
+ "type": "boolean"
17967
+ },
17879
17968
  "login_methods": {
17880
17969
  "anyOf": [
17881
17970
  {
@@ -18334,6 +18423,13 @@
18334
18423
  "frontchannel_logout_session_required": {
18335
18424
  "type": "boolean"
18336
18425
  },
18426
+ "backchannel_logout_uri": {
18427
+ "type": "string",
18428
+ "nullable": true
18429
+ },
18430
+ "backchannel_logout_session_required": {
18431
+ "type": "boolean"
18432
+ },
18337
18433
  "login_methods": {
18338
18434
  "type": "object",
18339
18435
  "properties": {
@@ -18946,6 +19042,13 @@
18946
19042
  "frontchannel_logout_session_required": {
18947
19043
  "type": "boolean"
18948
19044
  },
19045
+ "backchannel_logout_uri": {
19046
+ "type": "string",
19047
+ "nullable": true
19048
+ },
19049
+ "backchannel_logout_session_required": {
19050
+ "type": "boolean"
19051
+ },
18949
19052
  "login_methods": {
18950
19053
  "type": "object",
18951
19054
  "properties": {
@@ -19559,6 +19662,13 @@
19559
19662
  "frontchannel_logout_session_required": {
19560
19663
  "type": "boolean"
19561
19664
  },
19665
+ "backchannel_logout_uri": {
19666
+ "type": "string",
19667
+ "nullable": true
19668
+ },
19669
+ "backchannel_logout_session_required": {
19670
+ "type": "boolean"
19671
+ },
19562
19672
  "login_methods": {
19563
19673
  "type": "object",
19564
19674
  "properties": {
@@ -57604,6 +57714,166 @@
57604
57714
  }
57605
57715
  }
57606
57716
  },
57717
+ "/logout/confirm": {
57718
+ "post": {
57719
+ "operationId": "session/logoutConfirm",
57720
+ "summary": "Confirm a parked RP-Initiated Logout",
57721
+ "tags": [
57722
+ "session"
57723
+ ],
57724
+ "description": "Finishes a `/logout` request that was parked pending confirmation (backlog §240) because it carried no verified `id_token_hint`. Single-use: the state cannot be replayed.",
57725
+ "requestBody": {
57726
+ "required": true,
57727
+ "content": {
57728
+ "application/json": {
57729
+ "schema": {
57730
+ "type": "object",
57731
+ "required": [
57732
+ "state"
57733
+ ],
57734
+ "properties": {
57735
+ "state": {
57736
+ "type": "string",
57737
+ "description": "The `state` the confirmation screen was opened with."
57738
+ }
57739
+ }
57740
+ }
57741
+ }
57742
+ }
57743
+ },
57744
+ "responses": {
57745
+ "200": {
57746
+ "description": "Default Response"
57747
+ },
57748
+ "400": {
57749
+ "description": "`invalid_state` — The `state` is missing, expired, or does not describe a resumable step.\n\n`validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.",
57750
+ "content": {
57751
+ "application/json": {
57752
+ "schema": {
57753
+ "allOf": [
57754
+ {
57755
+ "$ref": "#/components/schemas/ErrorResponse"
57756
+ },
57757
+ {
57758
+ "type": "object",
57759
+ "properties": {
57760
+ "error_code": {
57761
+ "type": "string",
57762
+ "enum": [
57763
+ "invalid_state",
57764
+ "validation_error"
57765
+ ]
57766
+ }
57767
+ }
57768
+ }
57769
+ ]
57770
+ }
57771
+ }
57772
+ }
57773
+ },
57774
+ "401": {
57775
+ "description": "`state_mismatch` — The `state` belongs to another account, session, client or ceremony.",
57776
+ "content": {
57777
+ "application/json": {
57778
+ "schema": {
57779
+ "allOf": [
57780
+ {
57781
+ "$ref": "#/components/schemas/ErrorResponse"
57782
+ },
57783
+ {
57784
+ "type": "object",
57785
+ "properties": {
57786
+ "error_code": {
57787
+ "type": "string",
57788
+ "enum": [
57789
+ "state_mismatch"
57790
+ ]
57791
+ }
57792
+ }
57793
+ }
57794
+ ]
57795
+ }
57796
+ }
57797
+ }
57798
+ },
57799
+ "404": {
57800
+ "description": "`account_not_found` — No Auth Account matches the request (domain, header or token).",
57801
+ "content": {
57802
+ "application/json": {
57803
+ "schema": {
57804
+ "allOf": [
57805
+ {
57806
+ "$ref": "#/components/schemas/ErrorResponse"
57807
+ },
57808
+ {
57809
+ "type": "object",
57810
+ "properties": {
57811
+ "error_code": {
57812
+ "type": "string",
57813
+ "enum": [
57814
+ "account_not_found"
57815
+ ]
57816
+ }
57817
+ }
57818
+ }
57819
+ ]
57820
+ }
57821
+ }
57822
+ }
57823
+ },
57824
+ "429": {
57825
+ "description": "`too_many_requests` — Rate limit exceeded. Honour the `Retry-After` header.",
57826
+ "content": {
57827
+ "application/json": {
57828
+ "schema": {
57829
+ "allOf": [
57830
+ {
57831
+ "$ref": "#/components/schemas/ErrorResponse"
57832
+ },
57833
+ {
57834
+ "type": "object",
57835
+ "properties": {
57836
+ "error_code": {
57837
+ "type": "string",
57838
+ "enum": [
57839
+ "too_many_requests"
57840
+ ]
57841
+ }
57842
+ }
57843
+ }
57844
+ ]
57845
+ }
57846
+ }
57847
+ }
57848
+ },
57849
+ "500": {
57850
+ "description": "`internal_error` — Unexpected server error. Retry later; the request id is logged.",
57851
+ "content": {
57852
+ "application/json": {
57853
+ "schema": {
57854
+ "allOf": [
57855
+ {
57856
+ "$ref": "#/components/schemas/ErrorResponse"
57857
+ },
57858
+ {
57859
+ "type": "object",
57860
+ "properties": {
57861
+ "error_code": {
57862
+ "type": "string",
57863
+ "enum": [
57864
+ "internal_error"
57865
+ ]
57866
+ }
57867
+ }
57868
+ }
57869
+ ]
57870
+ }
57871
+ }
57872
+ }
57873
+ }
57874
+ }
57875
+ }
57876
+ },
57607
57877
  "/authorize": {
57608
57878
  "get": {
57609
57879
  "operationId": "authorize",
@@ -60898,6 +61168,14 @@
60898
61168
  "type": "boolean",
60899
61169
  "description": "OIDC Front-Channel Logout 1.0 — when true, the OP MUST include `iss` and `sid` parameters when calling the frontchannel_logout_uri."
60900
61170
  },
61171
+ "backchannel_logout_uri": {
61172
+ "type": "string",
61173
+ "description": "OIDC Back-Channel Logout 1.0 — URL the OP POSTs a signed `logout_token` to when a session this client took part in ends."
61174
+ },
61175
+ "backchannel_logout_session_required": {
61176
+ "type": "boolean",
61177
+ "description": "OIDC Back-Channel Logout 1.0 — when true, the `logout_token` MUST include a `sid` claim."
61178
+ },
60901
61179
  "web_origins": {
60902
61180
  "type": "array",
60903
61181
  "items": {
@@ -61010,6 +61288,12 @@
61010
61288
  "frontchannel_logout_session_required": {
61011
61289
  "type": "boolean"
61012
61290
  },
61291
+ "backchannel_logout_uri": {
61292
+ "type": "string"
61293
+ },
61294
+ "backchannel_logout_session_required": {
61295
+ "type": "boolean"
61296
+ },
61013
61297
  "web_origins": {
61014
61298
  "type": "array",
61015
61299
  "items": {