@faable/auth-sdk 2.7.79 → 2.7.80

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.
@@ -81,6 +81,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
81
81
  passkey_promotion_max_prompts?: number | undefined;
82
82
  remember_me?: "optional" | "off" | undefined;
83
83
  remember_me_days?: number | undefined;
84
+ theme?: "system" | "light" | "dark" | undefined;
84
85
  } | undefined;
85
86
  login_flow?: string | null | undefined;
86
87
  mfa_policy?: {
@@ -810,6 +811,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
810
811
  passkey_promotion_max_prompts?: number | undefined;
811
812
  remember_me?: "optional" | "off" | undefined;
812
813
  remember_me_days?: number | undefined;
814
+ theme?: "system" | "light" | "dark" | undefined;
813
815
  } | undefined;
814
816
  mfa_policy?: {
815
817
  mode?: "required" | "optional" | "off" | undefined;
@@ -873,6 +875,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
873
875
  passkey_promotion_max_prompts?: number | undefined;
874
876
  remember_me?: "optional" | "off" | undefined;
875
877
  remember_me_days?: number | undefined;
878
+ theme?: "system" | "light" | "dark" | undefined;
876
879
  } | undefined;
877
880
  mfa_policy?: {
878
881
  mode?: "required" | "optional" | "off" | undefined;
@@ -939,6 +942,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
939
942
  passkey_promotion_max_prompts?: number | undefined;
940
943
  remember_me?: "optional" | "off" | undefined;
941
944
  remember_me_days?: number | undefined;
945
+ theme?: "system" | "light" | "dark" | undefined;
942
946
  } | undefined;
943
947
  mfa_policy?: {
944
948
  mode?: "required" | "optional" | "off" | undefined;
@@ -1004,6 +1008,7 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
1004
1008
  passkey_promotion_max_prompts?: number | undefined;
1005
1009
  remember_me?: "optional" | "off" | undefined;
1006
1010
  remember_me_days?: number | undefined;
1011
+ theme?: "system" | "light" | "dark" | undefined;
1007
1012
  } | undefined;
1008
1013
  mfa_policy?: {
1009
1014
  mode?: "required" | "optional" | "off" | undefined;
@@ -80,6 +80,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
80
80
  passkey_promotion_max_prompts?: number | undefined;
81
81
  remember_me?: "optional" | "off" | undefined;
82
82
  remember_me_days?: number | undefined;
83
+ theme?: "system" | "light" | "dark" | undefined;
83
84
  } | undefined;
84
85
  login_flow?: string | null | undefined;
85
86
  mfa_policy?: {
@@ -157,6 +158,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
157
158
  passkey_promotion_max_prompts?: number | undefined;
158
159
  remember_me?: "optional" | "off" | undefined;
159
160
  remember_me_days?: number | undefined;
161
+ theme?: "system" | "light" | "dark" | undefined;
160
162
  } | undefined;
161
163
  login_flow?: string | null | undefined;
162
164
  mfa_policy?: {
@@ -254,6 +256,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
254
256
  passkey_promotion_max_prompts?: number | undefined;
255
257
  remember_me?: "optional" | "off" | undefined;
256
258
  remember_me_days?: number | undefined;
259
+ theme?: "system" | "light" | "dark" | undefined;
257
260
  } | undefined;
258
261
  login_flow?: string | null | undefined;
259
262
  mfa_policy?: {
@@ -334,6 +337,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
334
337
  passkey_promotion_max_prompts?: number | undefined;
335
338
  remember_me?: "optional" | "off" | undefined;
336
339
  remember_me_days?: number | undefined;
340
+ theme?: "system" | "light" | "dark" | undefined;
337
341
  } | undefined;
338
342
  login_flow?: string | null | undefined;
339
343
  mfa_policy?: {
@@ -435,6 +439,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
435
439
  passkey_promotion_max_prompts?: number | undefined;
436
440
  remember_me?: "optional" | "off" | undefined;
437
441
  remember_me_days?: number | undefined;
442
+ theme?: "system" | "light" | "dark" | undefined;
438
443
  } | undefined;
439
444
  login_flow?: string | null | undefined;
440
445
  mfa_policy?: {
@@ -447,23 +452,6 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
447
452
  default?: "email" | "sms" | "whatsapp" | "factor" | undefined;
448
453
  visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
449
454
  } | undefined;
450
- /**
451
- * `GET /user/export` — operationId: `user/export`
452
- *
453
- * Export users, optionally with their password hashes
454
- *
455
- * Pages through every user of the tenant, 500 at a time, in the row shape `POST /user/import` takes. With `include_hashes` each row carries its `password_hash` (needs the `read:password_hashes` scope, is audited as `credentials.exported` and notifies its subscribers). Provider access and refresh tokens of linked identities are never exported. Available on every plan.
456
- *
457
- * @throws {FaableApiError} `invalid_connection` (400) — The connection does not exist, is disabled, or is not of the type this flow needs.
458
- * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
459
- * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
460
- * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
461
- * @throws {FaableApiError} `insufficient_scope` (403) — The token lacks a scope this operation requires. `message` names it.
462
- * @throws {FaableApiError} `user_suspended` (403) — The user is suspended and cannot sign in or be modified.
463
- * @throws {FaableApiError} `account_not_found` (404) — No Auth Account matches the request (domain, header or token).
464
- * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
465
- * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
466
- */
467
455
  default_country_iso?: string | null | undefined;
468
456
  webauthn_rp_id?: string | null | undefined;
469
457
  logout_confirm_required?: boolean | undefined;
@@ -513,6 +501,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
513
501
  passkey_promotion_max_prompts?: number | undefined;
514
502
  remember_me?: "optional" | "off" | undefined;
515
503
  remember_me_days?: number | undefined;
504
+ theme?: "system" | "light" | "dark" | undefined;
516
505
  } | undefined;
517
506
  login_flow?: string | null | undefined;
518
507
  mfa_policy?: {
@@ -525,23 +514,6 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
525
514
  default?: "email" | "sms" | "whatsapp" | "factor" | undefined;
526
515
  visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
527
516
  } | undefined;
528
- /**
529
- * `GET /user/export` — operationId: `user/export`
530
- *
531
- * Export users, optionally with their password hashes
532
- *
533
- * Pages through every user of the tenant, 500 at a time, in the row shape `POST /user/import` takes. With `include_hashes` each row carries its `password_hash` (needs the `read:password_hashes` scope, is audited as `credentials.exported` and notifies its subscribers). Provider access and refresh tokens of linked identities are never exported. Available on every plan.
534
- *
535
- * @throws {FaableApiError} `invalid_connection` (400) — The connection does not exist, is disabled, or is not of the type this flow needs.
536
- * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
537
- * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
538
- * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
539
- * @throws {FaableApiError} `insufficient_scope` (403) — The token lacks a scope this operation requires. `message` names it.
540
- * @throws {FaableApiError} `user_suspended` (403) — The user is suspended and cannot sign in or be modified.
541
- * @throws {FaableApiError} `account_not_found` (404) — No Auth Account matches the request (domain, header or token).
542
- * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
543
- * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
544
- */
545
517
  default_country_iso?: string | null | undefined;
546
518
  webauthn_rp_id?: string | null | undefined;
547
519
  logout_confirm_required?: boolean | undefined;
@@ -594,6 +566,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
594
566
  passkey_promotion_max_prompts?: number | undefined;
595
567
  remember_me?: "optional" | "off" | undefined;
596
568
  remember_me_days?: number | undefined;
569
+ theme?: "system" | "light" | "dark" | undefined;
597
570
  } | undefined;
598
571
  login_flow?: string | null | undefined;
599
572
  mfa_policy?: {
@@ -606,23 +579,6 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
606
579
  default?: "email" | "sms" | "whatsapp" | "factor" | undefined;
607
580
  visible?: ("email" | "sms" | "whatsapp" | "factor")[] | undefined;
608
581
  } | undefined;
609
- /**
610
- * `GET /user/export` — operationId: `user/export`
611
- *
612
- * Export users, optionally with their password hashes
613
- *
614
- * Pages through every user of the tenant, 500 at a time, in the row shape `POST /user/import` takes. With `include_hashes` each row carries its `password_hash` (needs the `read:password_hashes` scope, is audited as `credentials.exported` and notifies its subscribers). Provider access and refresh tokens of linked identities are never exported. Available on every plan.
615
- *
616
- * @throws {FaableApiError} `invalid_connection` (400) — The connection does not exist, is disabled, or is not of the type this flow needs.
617
- * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
618
- * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
619
- * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
620
- * @throws {FaableApiError} `insufficient_scope` (403) — The token lacks a scope this operation requires. `message` names it.
621
- * @throws {FaableApiError} `user_suspended` (403) — The user is suspended and cannot sign in or be modified.
622
- * @throws {FaableApiError} `account_not_found` (404) — No Auth Account matches the request (domain, header or token).
623
- * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
624
- * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
625
- */
626
582
  default_country_iso?: string | null | undefined;
627
583
  webauthn_rp_id?: string | null | undefined;
628
584
  logout_confirm_required?: boolean | undefined;
@@ -847,6 +803,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
847
803
  passkey_promotion_max_prompts?: number | undefined;
848
804
  remember_me?: "optional" | "off" | undefined;
849
805
  remember_me_days?: number | undefined;
806
+ theme?: "system" | "light" | "dark" | undefined;
850
807
  } | undefined;
851
808
  login_flow?: string | null | undefined;
852
809
  mfa_policy?: {
@@ -1392,6 +1349,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1392
1349
  passkey_promotion_max_prompts?: number | undefined;
1393
1350
  remember_me?: "optional" | "off" | undefined;
1394
1351
  remember_me_days?: number | undefined;
1352
+ theme?: "system" | "light" | "dark" | undefined;
1395
1353
  } | undefined;
1396
1354
  mfa_policy?: {
1397
1355
  mode?: "required" | "optional" | "off" | undefined;
@@ -1471,6 +1429,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1471
1429
  passkey_promotion_max_prompts?: number | undefined;
1472
1430
  remember_me?: "optional" | "off" | undefined;
1473
1431
  remember_me_days?: number | undefined;
1432
+ theme?: "system" | "light" | "dark" | undefined;
1474
1433
  } | undefined;
1475
1434
  mfa_policy?: {
1476
1435
  mode?: "required" | "optional" | "off" | undefined;
@@ -1551,6 +1510,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1551
1510
  passkey_promotion_max_prompts?: number | undefined;
1552
1511
  remember_me?: "optional" | "off" | undefined;
1553
1512
  remember_me_days?: number | undefined;
1513
+ theme?: "system" | "light" | "dark" | undefined;
1554
1514
  } | undefined;
1555
1515
  mfa_policy?: {
1556
1516
  mode?: "required" | "optional" | "off" | undefined;
@@ -1632,6 +1592,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1632
1592
  passkey_promotion_max_prompts?: number | undefined;
1633
1593
  remember_me?: "optional" | "off" | undefined;
1634
1594
  remember_me_days?: number | undefined;
1595
+ theme?: "system" | "light" | "dark" | undefined;
1635
1596
  } | undefined;
1636
1597
  mfa_policy?: {
1637
1598
  mode?: "required" | "optional" | "off" | undefined;
@@ -1695,6 +1656,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1695
1656
  passkey_promotion_max_prompts?: number | undefined;
1696
1657
  remember_me?: "optional" | "off" | undefined;
1697
1658
  remember_me_days?: number | undefined;
1659
+ theme?: "system" | "light" | "dark" | undefined;
1698
1660
  } | undefined;
1699
1661
  mfa_policy?: {
1700
1662
  mode?: "required" | "optional" | "off" | undefined;
@@ -1761,6 +1723,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1761
1723
  passkey_promotion_max_prompts?: number | undefined;
1762
1724
  remember_me?: "optional" | "off" | undefined;
1763
1725
  remember_me_days?: number | undefined;
1726
+ theme?: "system" | "light" | "dark" | undefined;
1764
1727
  } | undefined;
1765
1728
  mfa_policy?: {
1766
1729
  mode?: "required" | "optional" | "off" | undefined;
@@ -1843,6 +1806,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1843
1806
  passkey_promotion_max_prompts?: number | undefined;
1844
1807
  remember_me?: "optional" | "off" | undefined;
1845
1808
  remember_me_days?: number | undefined;
1809
+ theme?: "system" | "light" | "dark" | undefined;
1846
1810
  } | undefined;
1847
1811
  mfa_policy?: {
1848
1812
  mode?: "required" | "optional" | "off" | undefined;
@@ -1923,6 +1887,7 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
1923
1887
  passkey_promotion_max_prompts?: number | undefined;
1924
1888
  remember_me?: "optional" | "off" | undefined;
1925
1889
  remember_me_days?: number | undefined;
1890
+ theme?: "system" | "light" | "dark" | undefined;
1926
1891
  } | undefined;
1927
1892
  mfa_policy?: {
1928
1893
  mode?: "required" | "optional" | "off" | undefined;
@@ -4696,6 +4696,8 @@ export interface components {
4696
4696
  remember_me?: "off" | "optional";
4697
4697
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
4698
4698
  remember_me_days?: number;
4699
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
4700
+ theme?: "system" | "light" | "dark";
4699
4701
  };
4700
4702
  /** @description The login flow bound to this account (`loginflow_xxx`). Absent = the flow compiled from the settings. A Client may bind its own. */
4701
4703
  login_flow?: string | null;
@@ -5013,6 +5015,8 @@ export interface components {
5013
5015
  remember_me?: "off" | "optional";
5014
5016
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
5015
5017
  remember_me_days?: number;
5018
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
5019
+ theme?: "system" | "light" | "dark";
5016
5020
  };
5017
5021
  /** @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. */
5018
5022
  mfa_policy?: {
@@ -5135,6 +5139,8 @@ export interface components {
5135
5139
  remember_me?: "off" | "optional";
5136
5140
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
5137
5141
  remember_me_days?: number;
5142
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
5143
+ theme?: "system" | "light" | "dark";
5138
5144
  } | null;
5139
5145
  mfa_policy?: {
5140
5146
  /** @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. */
@@ -6799,6 +6805,8 @@ export interface components {
6799
6805
  remember_me?: "off" | "optional";
6800
6806
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
6801
6807
  remember_me_days?: number;
6808
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
6809
+ theme?: "system" | "light" | "dark";
6802
6810
  } | null;
6803
6811
  mfa_policy?: {
6804
6812
  /** @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. */
@@ -7171,6 +7179,8 @@ export interface operations {
7171
7179
  remember_me?: "off" | "optional";
7172
7180
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
7173
7181
  remember_me_days?: number;
7182
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
7183
+ theme?: "system" | "light" | "dark";
7174
7184
  };
7175
7185
  /** @description The login flow bound to this account (`loginflow_xxx`). Absent = the flow compiled from the settings. A Client may bind its own. */
7176
7186
  login_flow?: string | null;
@@ -7524,6 +7534,8 @@ export interface operations {
7524
7534
  remember_me?: "off" | "optional";
7525
7535
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
7526
7536
  remember_me_days?: number;
7537
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
7538
+ theme?: "system" | "light" | "dark";
7527
7539
  };
7528
7540
  /** @description The login flow bound to this account (`loginflow_xxx`). Absent = the flow compiled from the settings. A Client may bind its own. */
7529
7541
  login_flow?: string | null;
@@ -7765,6 +7777,8 @@ export interface operations {
7765
7777
  remember_me?: "off" | "optional";
7766
7778
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
7767
7779
  remember_me_days?: number;
7780
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
7781
+ theme?: "system" | "light" | "dark";
7768
7782
  };
7769
7783
  /** @description The login flow bound to this account (`loginflow_xxx`). Absent = the flow compiled from the settings. A Client may bind its own. */
7770
7784
  login_flow?: string | null;
@@ -7962,6 +7976,8 @@ export interface operations {
7962
7976
  remember_me?: "off" | "optional";
7963
7977
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
7964
7978
  remember_me_days?: number;
7979
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
7980
+ theme?: "system" | "light" | "dark";
7965
7981
  } | null;
7966
7982
  mfa_policy?: {
7967
7983
  /** @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. */
@@ -8079,6 +8095,8 @@ export interface operations {
8079
8095
  remember_me?: "off" | "optional";
8080
8096
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
8081
8097
  remember_me_days?: number;
8098
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
8099
+ theme?: "system" | "light" | "dark";
8082
8100
  };
8083
8101
  /** @description The login flow bound to this account (`loginflow_xxx`). Absent = the flow compiled from the settings. A Client may bind its own. */
8084
8102
  login_flow?: string | null;
@@ -9339,6 +9357,8 @@ export interface operations {
9339
9357
  remember_me?: "off" | "optional";
9340
9358
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
9341
9359
  remember_me_days?: number;
9360
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
9361
+ theme?: "system" | "light" | "dark";
9342
9362
  };
9343
9363
  /** @description The login flow bound to this account (`loginflow_xxx`). Absent = the flow compiled from the settings. A Client may bind its own. */
9344
9364
  login_flow?: string | null;
@@ -10474,6 +10494,11 @@ export interface operations {
10474
10494
  identifier?: string;
10475
10495
  /** @description The method key that was moved first because this browser used it last time (`remember_last_method`). Absent otherwise. */
10476
10496
  last_used?: string;
10497
+ /**
10498
+ * @description The colour theme the screens are forced to, and the visitor's switch hidden: `theme` on this login's /authorize, else the tenant/client `login_methods.theme`. Absent when nothing forces it — the visitor's own choice, or the OS, decides.
10499
+ * @enum {string}
10500
+ */
10501
+ theme?: "light" | "dark";
10477
10502
  /** @description Already filtered and ordered. Render them in this order; do not re-sort or re-filter client-side. */
10478
10503
  methods: components["schemas"]["LoginOptionMethod"][];
10479
10504
  };
@@ -10833,6 +10858,8 @@ export interface operations {
10833
10858
  remember_me?: "off" | "optional";
10834
10859
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
10835
10860
  remember_me_days?: number;
10861
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
10862
+ theme?: "system" | "light" | "dark";
10836
10863
  };
10837
10864
  /** @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. */
10838
10865
  mfa_policy?: {
@@ -11031,6 +11058,8 @@ export interface operations {
11031
11058
  remember_me?: "off" | "optional";
11032
11059
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
11033
11060
  remember_me_days?: number;
11061
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
11062
+ theme?: "system" | "light" | "dark";
11034
11063
  };
11035
11064
  /** @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. */
11036
11065
  mfa_policy?: {
@@ -11230,6 +11259,8 @@ export interface operations {
11230
11259
  remember_me?: "off" | "optional";
11231
11260
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
11232
11261
  remember_me_days?: number;
11262
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
11263
+ theme?: "system" | "light" | "dark";
11233
11264
  } | null;
11234
11265
  mfa_policy?: {
11235
11266
  /** @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. */
@@ -11322,6 +11353,8 @@ export interface operations {
11322
11353
  remember_me?: "off" | "optional";
11323
11354
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
11324
11355
  remember_me_days?: number;
11356
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
11357
+ theme?: "system" | "light" | "dark";
11325
11358
  };
11326
11359
  /** @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. */
11327
11360
  mfa_policy?: {
@@ -11526,6 +11559,8 @@ export interface operations {
11526
11559
  remember_me?: "off" | "optional";
11527
11560
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
11528
11561
  remember_me_days?: number;
11562
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
11563
+ theme?: "system" | "light" | "dark";
11529
11564
  };
11530
11565
  /** @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. */
11531
11566
  mfa_policy?: {
@@ -11728,6 +11763,8 @@ export interface operations {
11728
11763
  remember_me?: "off" | "optional";
11729
11764
  /** @description How long a session lasts when the user ticked "Remember me". Defaults to 30. */
11730
11765
  remember_me_days?: number;
11766
+ /** @description Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login. */
11767
+ theme?: "system" | "light" | "dark";
11731
11768
  };
11732
11769
  /** @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. */
11733
11770
  mfa_policy?: {
@@ -28192,6 +28229,11 @@ export interface operations {
28192
28229
  link?: boolean;
28193
28230
  /** @description Comma-separated methods the hosted login screen shows for this login: connection ids or connection names, and `passkey`. Each must be one the client already offers; the screen keeps the order configured for the client. Filters the screen only — it does not restrict which method the credential endpoints accept. Not combinable with `connection`, which skips the screen instead of narrowing it. */
28194
28231
  login_methods?: string;
28232
+ /**
28233
+ * @description Force the colour theme of the hosted login screens for this login — for an application whose own pages are only light or only dark. Overrides the tenant's `login_methods.theme` and hides the visitor's theme switch on those screens. Omit it to keep the tenant setting.
28234
+ * @example dark
28235
+ */
28236
+ theme?: "light" | "dark";
28195
28237
  /** @description Preview token from `POST /loginflow/:id/preview-token`. This login runs the DRAFT of that flow, for this browser only; nothing is published. Invalid or expired tokens are ignored. */
28196
28238
  flow_preview?: string;
28197
28239
  /** @description Resume the login transaction the hosted screen has parked, instead of starting a new one. Used by the screen itself when the person picks a method: everything that belongs to the Relying Party — `code_challenge`, `state`, `redirect_uri`, `nonce`, `scope`, `audience` — is taken from the parked transaction and CANNOT be overridden by the query. Only `connection` is read from the caller. */
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.79";
12
+ export const version = "2.7.80";
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 = "a0f8317";
18
+ export const commit = "2ff32e2";
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.79",
3
+ "version": "2.7.80",
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.62.2",
6
+ "version": "2.63.0",
7
7
  "license": {
8
8
  "name": "private",
9
9
  "url": "https://faable.com/docs/platform/privacy-policy"
@@ -319,6 +319,29 @@
319
319
  "minimum": 1,
320
320
  "maximum": 365,
321
321
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
322
+ },
323
+ "theme": {
324
+ "anyOf": [
325
+ {
326
+ "type": "string",
327
+ "enum": [
328
+ "system"
329
+ ]
330
+ },
331
+ {
332
+ "type": "string",
333
+ "enum": [
334
+ "light"
335
+ ]
336
+ },
337
+ {
338
+ "type": "string",
339
+ "enum": [
340
+ "dark"
341
+ ]
342
+ }
343
+ ],
344
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
322
345
  }
323
346
  },
324
347
  "additionalProperties": false,
@@ -1596,6 +1619,29 @@
1596
1619
  "minimum": 1,
1597
1620
  "maximum": 365,
1598
1621
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
1622
+ },
1623
+ "theme": {
1624
+ "anyOf": [
1625
+ {
1626
+ "type": "string",
1627
+ "enum": [
1628
+ "system"
1629
+ ]
1630
+ },
1631
+ {
1632
+ "type": "string",
1633
+ "enum": [
1634
+ "light"
1635
+ ]
1636
+ },
1637
+ {
1638
+ "type": "string",
1639
+ "enum": [
1640
+ "dark"
1641
+ ]
1642
+ }
1643
+ ],
1644
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
1599
1645
  }
1600
1646
  },
1601
1647
  "additionalProperties": false,
@@ -2244,6 +2290,29 @@
2244
2290
  "minimum": 1,
2245
2291
  "maximum": 365,
2246
2292
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
2293
+ },
2294
+ "theme": {
2295
+ "anyOf": [
2296
+ {
2297
+ "type": "string",
2298
+ "enum": [
2299
+ "system"
2300
+ ]
2301
+ },
2302
+ {
2303
+ "type": "string",
2304
+ "enum": [
2305
+ "light"
2306
+ ]
2307
+ },
2308
+ {
2309
+ "type": "string",
2310
+ "enum": [
2311
+ "dark"
2312
+ ]
2313
+ }
2314
+ ],
2315
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
2247
2316
  }
2248
2317
  },
2249
2318
  "additionalProperties": false,
@@ -6974,6 +7043,29 @@
6974
7043
  "minimum": 1,
6975
7044
  "maximum": 365,
6976
7045
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
7046
+ },
7047
+ "theme": {
7048
+ "anyOf": [
7049
+ {
7050
+ "type": "string",
7051
+ "enum": [
7052
+ "system"
7053
+ ]
7054
+ },
7055
+ {
7056
+ "type": "string",
7057
+ "enum": [
7058
+ "light"
7059
+ ]
7060
+ },
7061
+ {
7062
+ "type": "string",
7063
+ "enum": [
7064
+ "dark"
7065
+ ]
7066
+ }
7067
+ ],
7068
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
6977
7069
  }
6978
7070
  },
6979
7071
  "additionalProperties": false,
@@ -8089,6 +8181,29 @@
8089
8181
  "minimum": 1,
8090
8182
  "maximum": 365,
8091
8183
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
8184
+ },
8185
+ "theme": {
8186
+ "anyOf": [
8187
+ {
8188
+ "type": "string",
8189
+ "enum": [
8190
+ "system"
8191
+ ]
8192
+ },
8193
+ {
8194
+ "type": "string",
8195
+ "enum": [
8196
+ "light"
8197
+ ]
8198
+ },
8199
+ {
8200
+ "type": "string",
8201
+ "enum": [
8202
+ "dark"
8203
+ ]
8204
+ }
8205
+ ],
8206
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
8092
8207
  }
8093
8208
  },
8094
8209
  "additionalProperties": false,
@@ -8810,6 +8925,29 @@
8810
8925
  "minimum": 1,
8811
8926
  "maximum": 365,
8812
8927
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
8928
+ },
8929
+ "theme": {
8930
+ "anyOf": [
8931
+ {
8932
+ "type": "string",
8933
+ "enum": [
8934
+ "system"
8935
+ ]
8936
+ },
8937
+ {
8938
+ "type": "string",
8939
+ "enum": [
8940
+ "light"
8941
+ ]
8942
+ },
8943
+ {
8944
+ "type": "string",
8945
+ "enum": [
8946
+ "dark"
8947
+ ]
8948
+ }
8949
+ ],
8950
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
8813
8951
  }
8814
8952
  },
8815
8953
  "additionalProperties": false,
@@ -9768,6 +9906,29 @@
9768
9906
  "minimum": 1,
9769
9907
  "maximum": 365,
9770
9908
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
9909
+ },
9910
+ "theme": {
9911
+ "anyOf": [
9912
+ {
9913
+ "type": "string",
9914
+ "enum": [
9915
+ "system"
9916
+ ]
9917
+ },
9918
+ {
9919
+ "type": "string",
9920
+ "enum": [
9921
+ "light"
9922
+ ]
9923
+ },
9924
+ {
9925
+ "type": "string",
9926
+ "enum": [
9927
+ "dark"
9928
+ ]
9929
+ }
9930
+ ],
9931
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
9771
9932
  }
9772
9933
  },
9773
9934
  "additionalProperties": false,
@@ -10346,6 +10507,29 @@
10346
10507
  "minimum": 1,
10347
10508
  "maximum": 365,
10348
10509
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
10510
+ },
10511
+ "theme": {
10512
+ "anyOf": [
10513
+ {
10514
+ "type": "string",
10515
+ "enum": [
10516
+ "system"
10517
+ ]
10518
+ },
10519
+ {
10520
+ "type": "string",
10521
+ "enum": [
10522
+ "light"
10523
+ ]
10524
+ },
10525
+ {
10526
+ "type": "string",
10527
+ "enum": [
10528
+ "dark"
10529
+ ]
10530
+ }
10531
+ ],
10532
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
10349
10533
  }
10350
10534
  },
10351
10535
  "additionalProperties": false,
@@ -10879,6 +11063,29 @@
10879
11063
  "minimum": 1,
10880
11064
  "maximum": 365,
10881
11065
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
11066
+ },
11067
+ "theme": {
11068
+ "anyOf": [
11069
+ {
11070
+ "type": "string",
11071
+ "enum": [
11072
+ "system"
11073
+ ]
11074
+ },
11075
+ {
11076
+ "type": "string",
11077
+ "enum": [
11078
+ "light"
11079
+ ]
11080
+ },
11081
+ {
11082
+ "type": "string",
11083
+ "enum": [
11084
+ "dark"
11085
+ ]
11086
+ }
11087
+ ],
11088
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
10882
11089
  }
10883
11090
  },
10884
11091
  "additionalProperties": false,
@@ -13798,6 +14005,29 @@
13798
14005
  "minimum": 1,
13799
14006
  "maximum": 365,
13800
14007
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
14008
+ },
14009
+ "theme": {
14010
+ "anyOf": [
14011
+ {
14012
+ "type": "string",
14013
+ "enum": [
14014
+ "system"
14015
+ ]
14016
+ },
14017
+ {
14018
+ "type": "string",
14019
+ "enum": [
14020
+ "light"
14021
+ ]
14022
+ },
14023
+ {
14024
+ "type": "string",
14025
+ "enum": [
14026
+ "dark"
14027
+ ]
14028
+ }
14029
+ ],
14030
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
13801
14031
  }
13802
14032
  },
13803
14033
  "additionalProperties": false,
@@ -16742,6 +16972,14 @@
16742
16972
  "type": "string",
16743
16973
  "description": "The method key that was moved first because this browser used it last time (`remember_last_method`). Absent otherwise."
16744
16974
  },
16975
+ "theme": {
16976
+ "type": "string",
16977
+ "enum": [
16978
+ "light",
16979
+ "dark"
16980
+ ],
16981
+ "description": "The colour theme the screens are forced to, and the visitor's switch hidden: `theme` on this login's /authorize, else the tenant/client `login_methods.theme`. Absent when nothing forces it — the visitor's own choice, or the OS, decides."
16982
+ },
16745
16983
  "methods": {
16746
16984
  "type": "array",
16747
16985
  "items": {
@@ -17647,6 +17885,29 @@
17647
17885
  "minimum": 1,
17648
17886
  "maximum": 365,
17649
17887
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
17888
+ },
17889
+ "theme": {
17890
+ "anyOf": [
17891
+ {
17892
+ "type": "string",
17893
+ "enum": [
17894
+ "system"
17895
+ ]
17896
+ },
17897
+ {
17898
+ "type": "string",
17899
+ "enum": [
17900
+ "light"
17901
+ ]
17902
+ },
17903
+ {
17904
+ "type": "string",
17905
+ "enum": [
17906
+ "dark"
17907
+ ]
17908
+ }
17909
+ ],
17910
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
17650
17911
  }
17651
17912
  },
17652
17913
  "additionalProperties": false,
@@ -18266,6 +18527,29 @@
18266
18527
  "minimum": 1,
18267
18528
  "maximum": 365,
18268
18529
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
18530
+ },
18531
+ "theme": {
18532
+ "anyOf": [
18533
+ {
18534
+ "type": "string",
18535
+ "enum": [
18536
+ "system"
18537
+ ]
18538
+ },
18539
+ {
18540
+ "type": "string",
18541
+ "enum": [
18542
+ "light"
18543
+ ]
18544
+ },
18545
+ {
18546
+ "type": "string",
18547
+ "enum": [
18548
+ "dark"
18549
+ ]
18550
+ }
18551
+ ],
18552
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
18269
18553
  }
18270
18554
  },
18271
18555
  "additionalProperties": false,
@@ -18910,6 +19194,29 @@
18910
19194
  "minimum": 1,
18911
19195
  "maximum": 365,
18912
19196
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
19197
+ },
19198
+ "theme": {
19199
+ "anyOf": [
19200
+ {
19201
+ "type": "string",
19202
+ "enum": [
19203
+ "system"
19204
+ ]
19205
+ },
19206
+ {
19207
+ "type": "string",
19208
+ "enum": [
19209
+ "light"
19210
+ ]
19211
+ },
19212
+ {
19213
+ "type": "string",
19214
+ "enum": [
19215
+ "dark"
19216
+ ]
19217
+ }
19218
+ ],
19219
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
18913
19220
  }
18914
19221
  },
18915
19222
  "additionalProperties": false,
@@ -19373,6 +19680,29 @@
19373
19680
  "minimum": 1,
19374
19681
  "maximum": 365,
19375
19682
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
19683
+ },
19684
+ "theme": {
19685
+ "anyOf": [
19686
+ {
19687
+ "type": "string",
19688
+ "enum": [
19689
+ "system"
19690
+ ]
19691
+ },
19692
+ {
19693
+ "type": "string",
19694
+ "enum": [
19695
+ "light"
19696
+ ]
19697
+ },
19698
+ {
19699
+ "type": "string",
19700
+ "enum": [
19701
+ "dark"
19702
+ ]
19703
+ }
19704
+ ],
19705
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
19376
19706
  }
19377
19707
  },
19378
19708
  "additionalProperties": false,
@@ -19992,6 +20322,29 @@
19992
20322
  "minimum": 1,
19993
20323
  "maximum": 365,
19994
20324
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
20325
+ },
20326
+ "theme": {
20327
+ "anyOf": [
20328
+ {
20329
+ "type": "string",
20330
+ "enum": [
20331
+ "system"
20332
+ ]
20333
+ },
20334
+ {
20335
+ "type": "string",
20336
+ "enum": [
20337
+ "light"
20338
+ ]
20339
+ },
20340
+ {
20341
+ "type": "string",
20342
+ "enum": [
20343
+ "dark"
20344
+ ]
20345
+ }
20346
+ ],
20347
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
19995
20348
  }
19996
20349
  },
19997
20350
  "additionalProperties": false,
@@ -20612,6 +20965,29 @@
20612
20965
  "minimum": 1,
20613
20966
  "maximum": 365,
20614
20967
  "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
20968
+ },
20969
+ "theme": {
20970
+ "anyOf": [
20971
+ {
20972
+ "type": "string",
20973
+ "enum": [
20974
+ "system"
20975
+ ]
20976
+ },
20977
+ {
20978
+ "type": "string",
20979
+ "enum": [
20980
+ "light"
20981
+ ]
20982
+ },
20983
+ {
20984
+ "type": "string",
20985
+ "enum": [
20986
+ "dark"
20987
+ ]
20988
+ }
20989
+ ],
20990
+ "description": "Colour theme of the hosted login screens. `system` (the default): the visitor's OS decides, and the visitor can switch it from the screen. `light` / `dark`: forced, and the switch is hidden — for applications whose own pages are only one of the two. A `theme` query parameter on `/authorize` overrides this for that login."
20615
20991
  }
20616
20992
  },
20617
20993
  "additionalProperties": false,
@@ -60961,6 +61337,29 @@
60961
61337
  "required": false,
60962
61338
  "description": "Comma-separated methods the hosted login screen shows for this login: connection ids or connection names, and `passkey`. Each must be one the client already offers; the screen keeps the order configured for the client. Filters the screen only — it does not restrict which method the credential endpoints accept. Not combinable with `connection`, which skips the screen instead of narrowing it."
60963
61339
  },
61340
+ {
61341
+ "schema": {
61342
+ "anyOf": [
61343
+ {
61344
+ "type": "string",
61345
+ "enum": [
61346
+ "light"
61347
+ ]
61348
+ },
61349
+ {
61350
+ "type": "string",
61351
+ "enum": [
61352
+ "dark"
61353
+ ]
61354
+ }
61355
+ ]
61356
+ },
61357
+ "example": "dark",
61358
+ "in": "query",
61359
+ "name": "theme",
61360
+ "required": false,
61361
+ "description": "Force the colour theme of the hosted login screens for this login — for an application whose own pages are only light or only dark. Overrides the tenant's `login_methods.theme` and hides the visitor's theme switch on those screens. Omit it to keep the tenant setting."
61362
+ },
60964
61363
  {
60965
61364
  "schema": {
60966
61365
  "type": "string"