@faable/auth-sdk 2.5.78 → 2.5.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.
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.4.0",
6
+ "version": "2.6.0",
7
7
  "license": {
8
8
  "name": "private",
9
9
  "url": "https://faable.com/docs/platform/privacy-policy"
@@ -141,6 +141,52 @@
141
141
  },
142
142
  "additionalProperties": false
143
143
  },
144
+ "welcome_email": {
145
+ "type": "object",
146
+ "properties": {
147
+ "cta_url": {
148
+ "type": "string",
149
+ "format": "uri",
150
+ "maxLength": 500,
151
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
152
+ "nullable": true
153
+ },
154
+ "body": {
155
+ "type": "string",
156
+ "maxLength": 600,
157
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
158
+ "nullable": true
159
+ },
160
+ "social_links": {
161
+ "type": "array",
162
+ "items": {
163
+ "type": "object",
164
+ "required": [
165
+ "label",
166
+ "url"
167
+ ],
168
+ "properties": {
169
+ "label": {
170
+ "type": "string",
171
+ "minLength": 1,
172
+ "maxLength": 40
173
+ },
174
+ "url": {
175
+ "type": "string",
176
+ "format": "uri",
177
+ "maxLength": 500
178
+ }
179
+ },
180
+ "additionalProperties": false
181
+ },
182
+ "maxItems": 6,
183
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
184
+ "nullable": true
185
+ }
186
+ },
187
+ "additionalProperties": false,
188
+ "nullable": true
189
+ },
144
190
  "email_change_verification_mode": {
145
191
  "anyOf": [
146
192
  {
@@ -232,6 +278,29 @@
232
278
  "minimum": 0,
233
279
  "maximum": 10,
234
280
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
281
+ },
282
+ "remember_me": {
283
+ "anyOf": [
284
+ {
285
+ "type": "string",
286
+ "enum": [
287
+ "off"
288
+ ]
289
+ },
290
+ {
291
+ "type": "string",
292
+ "enum": [
293
+ "optional"
294
+ ]
295
+ }
296
+ ],
297
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
298
+ },
299
+ "remember_me_days": {
300
+ "type": "integer",
301
+ "minimum": 1,
302
+ "maximum": 365,
303
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
235
304
  }
236
305
  },
237
306
  "additionalProperties": false,
@@ -1267,6 +1336,29 @@
1267
1336
  "minimum": 0,
1268
1337
  "maximum": 10,
1269
1338
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
1339
+ },
1340
+ "remember_me": {
1341
+ "anyOf": [
1342
+ {
1343
+ "type": "string",
1344
+ "enum": [
1345
+ "off"
1346
+ ]
1347
+ },
1348
+ {
1349
+ "type": "string",
1350
+ "enum": [
1351
+ "optional"
1352
+ ]
1353
+ }
1354
+ ],
1355
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
1356
+ },
1357
+ "remember_me_days": {
1358
+ "type": "integer",
1359
+ "minimum": 1,
1360
+ "maximum": 365,
1361
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
1270
1362
  }
1271
1363
  },
1272
1364
  "additionalProperties": false,
@@ -1596,6 +1688,29 @@
1596
1688
  "minimum": 0,
1597
1689
  "maximum": 10,
1598
1690
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
1691
+ },
1692
+ "remember_me": {
1693
+ "anyOf": [
1694
+ {
1695
+ "type": "string",
1696
+ "enum": [
1697
+ "off"
1698
+ ]
1699
+ },
1700
+ {
1701
+ "type": "string",
1702
+ "enum": [
1703
+ "optional"
1704
+ ]
1705
+ }
1706
+ ],
1707
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
1708
+ },
1709
+ "remember_me_days": {
1710
+ "type": "integer",
1711
+ "minimum": 1,
1712
+ "maximum": 365,
1713
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
1599
1714
  }
1600
1715
  },
1601
1716
  "additionalProperties": false,
@@ -5696,6 +5811,58 @@
5696
5811
  }
5697
5812
  }
5698
5813
  },
5814
+ "welcome_email": {
5815
+ "anyOf": [
5816
+ {
5817
+ "type": "object",
5818
+ "properties": {
5819
+ "cta_url": {
5820
+ "type": "string",
5821
+ "format": "uri",
5822
+ "maxLength": 500,
5823
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
5824
+ "nullable": true
5825
+ },
5826
+ "body": {
5827
+ "type": "string",
5828
+ "maxLength": 600,
5829
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
5830
+ "nullable": true
5831
+ },
5832
+ "social_links": {
5833
+ "type": "array",
5834
+ "items": {
5835
+ "type": "object",
5836
+ "required": [
5837
+ "label",
5838
+ "url"
5839
+ ],
5840
+ "properties": {
5841
+ "label": {
5842
+ "type": "string",
5843
+ "minLength": 1,
5844
+ "maxLength": 40
5845
+ },
5846
+ "url": {
5847
+ "type": "string",
5848
+ "format": "uri",
5849
+ "maxLength": 500
5850
+ }
5851
+ },
5852
+ "additionalProperties": false
5853
+ },
5854
+ "maxItems": 6,
5855
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
5856
+ "nullable": true
5857
+ }
5858
+ },
5859
+ "additionalProperties": false
5860
+ },
5861
+ {
5862
+ "type": "null"
5863
+ }
5864
+ ]
5865
+ },
5699
5866
  "login_methods": {
5700
5867
  "anyOf": [
5701
5868
  {
@@ -5755,6 +5922,29 @@
5755
5922
  "minimum": 0,
5756
5923
  "maximum": 10,
5757
5924
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
5925
+ },
5926
+ "remember_me": {
5927
+ "anyOf": [
5928
+ {
5929
+ "type": "string",
5930
+ "enum": [
5931
+ "off"
5932
+ ]
5933
+ },
5934
+ {
5935
+ "type": "string",
5936
+ "enum": [
5937
+ "optional"
5938
+ ]
5939
+ }
5940
+ ],
5941
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
5942
+ },
5943
+ "remember_me_days": {
5944
+ "type": "integer",
5945
+ "minimum": 1,
5946
+ "maximum": 365,
5947
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
5758
5948
  }
5759
5949
  },
5760
5950
  "additionalProperties": false,
@@ -6070,6 +6260,10 @@
6070
6260
  "type": "string",
6071
6261
  "description": "Same-origin path to return the user to after authentication, instead of the OAuth client redirect. Used by first-party interactive flows (e.g. device-code confirm). Non same-origin values are ignored."
6072
6262
  },
6263
+ "remember_me": {
6264
+ "type": "boolean",
6265
+ "description": "The \"Remember me on this device\" checkbox. Honoured only when the tenant shows one (`login_methods.remember_me: \"optional\"`): `true` keeps the session for `remember_me_days`, `false` ends it when the browser closes."
6266
+ },
6073
6267
  "client_id": {
6074
6268
  "type": "string"
6075
6269
  },
@@ -6284,6 +6478,52 @@
6284
6478
  },
6285
6479
  "additionalProperties": false
6286
6480
  },
6481
+ "welcome_email": {
6482
+ "type": "object",
6483
+ "properties": {
6484
+ "cta_url": {
6485
+ "type": "string",
6486
+ "format": "uri",
6487
+ "maxLength": 500,
6488
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
6489
+ "nullable": true
6490
+ },
6491
+ "body": {
6492
+ "type": "string",
6493
+ "maxLength": 600,
6494
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
6495
+ "nullable": true
6496
+ },
6497
+ "social_links": {
6498
+ "type": "array",
6499
+ "items": {
6500
+ "type": "object",
6501
+ "required": [
6502
+ "label",
6503
+ "url"
6504
+ ],
6505
+ "properties": {
6506
+ "label": {
6507
+ "type": "string",
6508
+ "minLength": 1,
6509
+ "maxLength": 40
6510
+ },
6511
+ "url": {
6512
+ "type": "string",
6513
+ "format": "uri",
6514
+ "maxLength": 500
6515
+ }
6516
+ },
6517
+ "additionalProperties": false
6518
+ },
6519
+ "maxItems": 6,
6520
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
6521
+ "nullable": true
6522
+ }
6523
+ },
6524
+ "additionalProperties": false,
6525
+ "nullable": true
6526
+ },
6287
6527
  "email_change_verification_mode": {
6288
6528
  "anyOf": [
6289
6529
  {
@@ -6375,6 +6615,29 @@
6375
6615
  "minimum": 0,
6376
6616
  "maximum": 10,
6377
6617
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
6618
+ },
6619
+ "remember_me": {
6620
+ "anyOf": [
6621
+ {
6622
+ "type": "string",
6623
+ "enum": [
6624
+ "off"
6625
+ ]
6626
+ },
6627
+ {
6628
+ "type": "string",
6629
+ "enum": [
6630
+ "optional"
6631
+ ]
6632
+ }
6633
+ ],
6634
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
6635
+ },
6636
+ "remember_me_days": {
6637
+ "type": "integer",
6638
+ "minimum": 1,
6639
+ "maximum": 365,
6640
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
6378
6641
  }
6379
6642
  },
6380
6643
  "additionalProperties": false,
@@ -6646,6 +6909,52 @@
6646
6909
  },
6647
6910
  "additionalProperties": false
6648
6911
  },
6912
+ "welcome_email": {
6913
+ "type": "object",
6914
+ "properties": {
6915
+ "cta_url": {
6916
+ "type": "string",
6917
+ "format": "uri",
6918
+ "maxLength": 500,
6919
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
6920
+ "nullable": true
6921
+ },
6922
+ "body": {
6923
+ "type": "string",
6924
+ "maxLength": 600,
6925
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
6926
+ "nullable": true
6927
+ },
6928
+ "social_links": {
6929
+ "type": "array",
6930
+ "items": {
6931
+ "type": "object",
6932
+ "required": [
6933
+ "label",
6934
+ "url"
6935
+ ],
6936
+ "properties": {
6937
+ "label": {
6938
+ "type": "string",
6939
+ "minLength": 1,
6940
+ "maxLength": 40
6941
+ },
6942
+ "url": {
6943
+ "type": "string",
6944
+ "format": "uri",
6945
+ "maxLength": 500
6946
+ }
6947
+ },
6948
+ "additionalProperties": false
6949
+ },
6950
+ "maxItems": 6,
6951
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
6952
+ "nullable": true
6953
+ }
6954
+ },
6955
+ "additionalProperties": false,
6956
+ "nullable": true
6957
+ },
6649
6958
  "email_change_verification_mode": {
6650
6959
  "anyOf": [
6651
6960
  {
@@ -6737,6 +7046,29 @@
6737
7046
  "minimum": 0,
6738
7047
  "maximum": 10,
6739
7048
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
7049
+ },
7050
+ "remember_me": {
7051
+ "anyOf": [
7052
+ {
7053
+ "type": "string",
7054
+ "enum": [
7055
+ "off"
7056
+ ]
7057
+ },
7058
+ {
7059
+ "type": "string",
7060
+ "enum": [
7061
+ "optional"
7062
+ ]
7063
+ }
7064
+ ],
7065
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
7066
+ },
7067
+ "remember_me_days": {
7068
+ "type": "integer",
7069
+ "minimum": 1,
7070
+ "maximum": 365,
7071
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
6740
7072
  }
6741
7073
  },
6742
7074
  "additionalProperties": false,
@@ -7062,6 +7394,52 @@
7062
7394
  },
7063
7395
  "additionalProperties": false
7064
7396
  },
7397
+ "welcome_email": {
7398
+ "type": "object",
7399
+ "properties": {
7400
+ "cta_url": {
7401
+ "type": "string",
7402
+ "format": "uri",
7403
+ "maxLength": 500,
7404
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
7405
+ "nullable": true
7406
+ },
7407
+ "body": {
7408
+ "type": "string",
7409
+ "maxLength": 600,
7410
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
7411
+ "nullable": true
7412
+ },
7413
+ "social_links": {
7414
+ "type": "array",
7415
+ "items": {
7416
+ "type": "object",
7417
+ "required": [
7418
+ "label",
7419
+ "url"
7420
+ ],
7421
+ "properties": {
7422
+ "label": {
7423
+ "type": "string",
7424
+ "minLength": 1,
7425
+ "maxLength": 40
7426
+ },
7427
+ "url": {
7428
+ "type": "string",
7429
+ "format": "uri",
7430
+ "maxLength": 500
7431
+ }
7432
+ },
7433
+ "additionalProperties": false
7434
+ },
7435
+ "maxItems": 6,
7436
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
7437
+ "nullable": true
7438
+ }
7439
+ },
7440
+ "additionalProperties": false,
7441
+ "nullable": true
7442
+ },
7065
7443
  "email_change_verification_mode": {
7066
7444
  "anyOf": [
7067
7445
  {
@@ -7153,6 +7531,29 @@
7153
7531
  "minimum": 0,
7154
7532
  "maximum": 10,
7155
7533
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
7534
+ },
7535
+ "remember_me": {
7536
+ "anyOf": [
7537
+ {
7538
+ "type": "string",
7539
+ "enum": [
7540
+ "off"
7541
+ ]
7542
+ },
7543
+ {
7544
+ "type": "string",
7545
+ "enum": [
7546
+ "optional"
7547
+ ]
7548
+ }
7549
+ ],
7550
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
7551
+ },
7552
+ "remember_me_days": {
7553
+ "type": "integer",
7554
+ "minimum": 1,
7555
+ "maximum": 365,
7556
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
7156
7557
  }
7157
7558
  },
7158
7559
  "additionalProperties": false,
@@ -7310,6 +7711,58 @@
7310
7711
  }
7311
7712
  }
7312
7713
  },
7714
+ "welcome_email": {
7715
+ "anyOf": [
7716
+ {
7717
+ "type": "object",
7718
+ "properties": {
7719
+ "cta_url": {
7720
+ "type": "string",
7721
+ "format": "uri",
7722
+ "maxLength": 500,
7723
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
7724
+ "nullable": true
7725
+ },
7726
+ "body": {
7727
+ "type": "string",
7728
+ "maxLength": 600,
7729
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
7730
+ "nullable": true
7731
+ },
7732
+ "social_links": {
7733
+ "type": "array",
7734
+ "items": {
7735
+ "type": "object",
7736
+ "required": [
7737
+ "label",
7738
+ "url"
7739
+ ],
7740
+ "properties": {
7741
+ "label": {
7742
+ "type": "string",
7743
+ "minLength": 1,
7744
+ "maxLength": 40
7745
+ },
7746
+ "url": {
7747
+ "type": "string",
7748
+ "format": "uri",
7749
+ "maxLength": 500
7750
+ }
7751
+ },
7752
+ "additionalProperties": false
7753
+ },
7754
+ "maxItems": 6,
7755
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
7756
+ "nullable": true
7757
+ }
7758
+ },
7759
+ "additionalProperties": false
7760
+ },
7761
+ {
7762
+ "type": "null"
7763
+ }
7764
+ ]
7765
+ },
7313
7766
  "login_methods": {
7314
7767
  "anyOf": [
7315
7768
  {
@@ -7369,6 +7822,29 @@
7369
7822
  "minimum": 0,
7370
7823
  "maximum": 10,
7371
7824
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
7825
+ },
7826
+ "remember_me": {
7827
+ "anyOf": [
7828
+ {
7829
+ "type": "string",
7830
+ "enum": [
7831
+ "off"
7832
+ ]
7833
+ },
7834
+ {
7835
+ "type": "string",
7836
+ "enum": [
7837
+ "optional"
7838
+ ]
7839
+ }
7840
+ ],
7841
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
7842
+ },
7843
+ "remember_me_days": {
7844
+ "type": "integer",
7845
+ "minimum": 1,
7846
+ "maximum": 365,
7847
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
7372
7848
  }
7373
7849
  },
7374
7850
  "additionalProperties": false,
@@ -7585,7 +8061,53 @@
7585
8061
  "default": false
7586
8062
  }
7587
8063
  },
7588
- "additionalProperties": false
8064
+ "additionalProperties": false
8065
+ },
8066
+ "welcome_email": {
8067
+ "type": "object",
8068
+ "properties": {
8069
+ "cta_url": {
8070
+ "type": "string",
8071
+ "format": "uri",
8072
+ "maxLength": 500,
8073
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
8074
+ "nullable": true
8075
+ },
8076
+ "body": {
8077
+ "type": "string",
8078
+ "maxLength": 600,
8079
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
8080
+ "nullable": true
8081
+ },
8082
+ "social_links": {
8083
+ "type": "array",
8084
+ "items": {
8085
+ "type": "object",
8086
+ "required": [
8087
+ "label",
8088
+ "url"
8089
+ ],
8090
+ "properties": {
8091
+ "label": {
8092
+ "type": "string",
8093
+ "minLength": 1,
8094
+ "maxLength": 40
8095
+ },
8096
+ "url": {
8097
+ "type": "string",
8098
+ "format": "uri",
8099
+ "maxLength": 500
8100
+ }
8101
+ },
8102
+ "additionalProperties": false
8103
+ },
8104
+ "maxItems": 6,
8105
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
8106
+ "nullable": true
8107
+ }
8108
+ },
8109
+ "additionalProperties": false,
8110
+ "nullable": true
7589
8111
  },
7590
8112
  "email_change_verification_mode": {
7591
8113
  "anyOf": [
@@ -7678,6 +8200,29 @@
7678
8200
  "minimum": 0,
7679
8201
  "maximum": 10,
7680
8202
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
8203
+ },
8204
+ "remember_me": {
8205
+ "anyOf": [
8206
+ {
8207
+ "type": "string",
8208
+ "enum": [
8209
+ "off"
8210
+ ]
8211
+ },
8212
+ {
8213
+ "type": "string",
8214
+ "enum": [
8215
+ "optional"
8216
+ ]
8217
+ }
8218
+ ],
8219
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
8220
+ },
8221
+ "remember_me_days": {
8222
+ "type": "integer",
8223
+ "minimum": 1,
8224
+ "maximum": 365,
8225
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
7681
8226
  }
7682
8227
  },
7683
8228
  "additionalProperties": false,
@@ -7922,6 +8467,52 @@
7922
8467
  },
7923
8468
  "additionalProperties": false
7924
8469
  },
8470
+ "welcome_email": {
8471
+ "type": "object",
8472
+ "properties": {
8473
+ "cta_url": {
8474
+ "type": "string",
8475
+ "format": "uri",
8476
+ "maxLength": 500,
8477
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
8478
+ "nullable": true
8479
+ },
8480
+ "body": {
8481
+ "type": "string",
8482
+ "maxLength": 600,
8483
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
8484
+ "nullable": true
8485
+ },
8486
+ "social_links": {
8487
+ "type": "array",
8488
+ "items": {
8489
+ "type": "object",
8490
+ "required": [
8491
+ "label",
8492
+ "url"
8493
+ ],
8494
+ "properties": {
8495
+ "label": {
8496
+ "type": "string",
8497
+ "minLength": 1,
8498
+ "maxLength": 40
8499
+ },
8500
+ "url": {
8501
+ "type": "string",
8502
+ "format": "uri",
8503
+ "maxLength": 500
8504
+ }
8505
+ },
8506
+ "additionalProperties": false
8507
+ },
8508
+ "maxItems": 6,
8509
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
8510
+ "nullable": true
8511
+ }
8512
+ },
8513
+ "additionalProperties": false,
8514
+ "nullable": true
8515
+ },
7925
8516
  "email_change_verification_mode": {
7926
8517
  "anyOf": [
7927
8518
  {
@@ -8013,6 +8604,29 @@
8013
8604
  "minimum": 0,
8014
8605
  "maximum": 10,
8015
8606
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
8607
+ },
8608
+ "remember_me": {
8609
+ "anyOf": [
8610
+ {
8611
+ "type": "string",
8612
+ "enum": [
8613
+ "off"
8614
+ ]
8615
+ },
8616
+ {
8617
+ "type": "string",
8618
+ "enum": [
8619
+ "optional"
8620
+ ]
8621
+ }
8622
+ ],
8623
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
8624
+ },
8625
+ "remember_me_days": {
8626
+ "type": "integer",
8627
+ "minimum": 1,
8628
+ "maximum": 365,
8629
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
8016
8630
  }
8017
8631
  },
8018
8632
  "additionalProperties": false,
@@ -9600,6 +10214,7 @@
9600
10214
  "client",
9601
10215
  "identifier_first",
9602
10216
  "remember_last_method",
10217
+ "remember_me",
9603
10218
  "methods"
9604
10219
  ],
9605
10220
  "properties": {
@@ -9673,6 +10288,10 @@
9673
10288
  "remember_last_method": {
9674
10289
  "type": "boolean"
9675
10290
  },
10291
+ "remember_me": {
10292
+ "type": "boolean",
10293
+ "description": "Render a \"Remember me on this device\" checkbox on the password and email-code forms, and send its value as `remember_me` when posting the credential."
10294
+ },
9676
10295
  "identifier": {
9677
10296
  "type": "string",
9678
10297
  "description": "What the user typed on the identifier-first screen, when the flow has one. Prefill the email field with it."
@@ -9697,9 +10316,9 @@
9697
10316
  }
9698
10317
  }
9699
10318
  },
9700
- "/flow/identify": {
10319
+ "/login/identify": {
9701
10320
  "post": {
9702
- "operationId": "flow/identify",
10321
+ "operationId": "login/identify",
9703
10322
  "summary": "Leave the identifier-first screen",
9704
10323
  "tags": [
9705
10324
  "connection"
@@ -10111,6 +10730,29 @@
10111
10730
  "minimum": 0,
10112
10731
  "maximum": 10,
10113
10732
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
10733
+ },
10734
+ "remember_me": {
10735
+ "anyOf": [
10736
+ {
10737
+ "type": "string",
10738
+ "enum": [
10739
+ "off"
10740
+ ]
10741
+ },
10742
+ {
10743
+ "type": "string",
10744
+ "enum": [
10745
+ "optional"
10746
+ ]
10747
+ }
10748
+ ],
10749
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
10750
+ },
10751
+ "remember_me_days": {
10752
+ "type": "integer",
10753
+ "minimum": 1,
10754
+ "maximum": 365,
10755
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
10114
10756
  }
10115
10757
  },
10116
10758
  "additionalProperties": false,
@@ -10438,6 +11080,29 @@
10438
11080
  "minimum": 0,
10439
11081
  "maximum": 10,
10440
11082
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
11083
+ },
11084
+ "remember_me": {
11085
+ "anyOf": [
11086
+ {
11087
+ "type": "string",
11088
+ "enum": [
11089
+ "off"
11090
+ ]
11091
+ },
11092
+ {
11093
+ "type": "string",
11094
+ "enum": [
11095
+ "optional"
11096
+ ]
11097
+ }
11098
+ ],
11099
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
11100
+ },
11101
+ "remember_me_days": {
11102
+ "type": "integer",
11103
+ "minimum": 1,
11104
+ "maximum": 365,
11105
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
10441
11106
  }
10442
11107
  },
10443
11108
  "additionalProperties": false,
@@ -10730,6 +11395,29 @@
10730
11395
  "minimum": 0,
10731
11396
  "maximum": 10,
10732
11397
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
11398
+ },
11399
+ "remember_me": {
11400
+ "anyOf": [
11401
+ {
11402
+ "type": "string",
11403
+ "enum": [
11404
+ "off"
11405
+ ]
11406
+ },
11407
+ {
11408
+ "type": "string",
11409
+ "enum": [
11410
+ "optional"
11411
+ ]
11412
+ }
11413
+ ],
11414
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
11415
+ },
11416
+ "remember_me_days": {
11417
+ "type": "integer",
11418
+ "minimum": 1,
11419
+ "maximum": 365,
11420
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
10733
11421
  }
10734
11422
  },
10735
11423
  "additionalProperties": false,
@@ -11047,6 +11735,29 @@
11047
11735
  "minimum": 0,
11048
11736
  "maximum": 10,
11049
11737
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
11738
+ },
11739
+ "remember_me": {
11740
+ "anyOf": [
11741
+ {
11742
+ "type": "string",
11743
+ "enum": [
11744
+ "off"
11745
+ ]
11746
+ },
11747
+ {
11748
+ "type": "string",
11749
+ "enum": [
11750
+ "optional"
11751
+ ]
11752
+ }
11753
+ ],
11754
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
11755
+ },
11756
+ "remember_me_days": {
11757
+ "type": "integer",
11758
+ "minimum": 1,
11759
+ "maximum": 365,
11760
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
11050
11761
  }
11051
11762
  },
11052
11763
  "additionalProperties": false,
@@ -11372,6 +12083,29 @@
11372
12083
  "minimum": 0,
11373
12084
  "maximum": 10,
11374
12085
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
12086
+ },
12087
+ "remember_me": {
12088
+ "anyOf": [
12089
+ {
12090
+ "type": "string",
12091
+ "enum": [
12092
+ "off"
12093
+ ]
12094
+ },
12095
+ {
12096
+ "type": "string",
12097
+ "enum": [
12098
+ "optional"
12099
+ ]
12100
+ }
12101
+ ],
12102
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
12103
+ },
12104
+ "remember_me_days": {
12105
+ "type": "integer",
12106
+ "minimum": 1,
12107
+ "maximum": 365,
12108
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
11375
12109
  }
11376
12110
  },
11377
12111
  "additionalProperties": false,
@@ -11699,6 +12433,29 @@
11699
12433
  "minimum": 0,
11700
12434
  "maximum": 10,
11701
12435
  "description": "How many times a user is offered a passkey over their lifetime. `0` switches the offer off for this tenant without changing `passkey_promotion`. Defaults to 3."
12436
+ },
12437
+ "remember_me": {
12438
+ "anyOf": [
12439
+ {
12440
+ "type": "string",
12441
+ "enum": [
12442
+ "off"
12443
+ ]
12444
+ },
12445
+ {
12446
+ "type": "string",
12447
+ "enum": [
12448
+ "optional"
12449
+ ]
12450
+ }
12451
+ ],
12452
+ "description": "Show a \"Remember me on this device\" checkbox on the password and email-code forms. `optional`: unchecked, the session ends when the browser closes; checked, it lasts `remember_me_days`. `off` (the default): no checkbox, every session lasts the built-in 30 days."
12453
+ },
12454
+ "remember_me_days": {
12455
+ "type": "integer",
12456
+ "minimum": 1,
12457
+ "maximum": 365,
12458
+ "description": "How long a session lasts when the user ticked \"Remember me\". Defaults to 30."
11702
12459
  }
11703
12460
  },
11704
12461
  "additionalProperties": false,
@@ -27383,6 +28140,10 @@
27383
28140
  "redirect_to": {
27384
28141
  "type": "string",
27385
28142
  "description": "Same-origin path to return the user to after authentication, instead of the OAuth client redirect. Used by first-party interactive flows (e.g. device-code confirm). Non same-origin values are ignored."
28143
+ },
28144
+ "remember_me": {
28145
+ "type": "boolean",
28146
+ "description": "The \"Remember me on this device\" checkbox. Honoured only when the tenant shows one (`login_methods.remember_me: \"optional\"`)."
27386
28147
  }
27387
28148
  }
27388
28149
  }
@@ -27462,6 +28223,85 @@
27462
28223
  }
27463
28224
  }
27464
28225
  },
28226
+ "/mfa/challenge/options": {
28227
+ "get": {
28228
+ "summary": "What the second-factor screen should offer",
28229
+ "tags": [
28230
+ "mfa"
28231
+ ],
28232
+ "description": "For a login parked on the hosted challenge screen: which factors the user can answer with, in the order and with the default the login flow chose, and whether recovery codes are an option. Reads the state without consuming it.",
28233
+ "parameters": [
28234
+ {
28235
+ "schema": {
28236
+ "type": "string"
28237
+ },
28238
+ "in": "query",
28239
+ "name": "state",
28240
+ "required": true
28241
+ }
28242
+ ],
28243
+ "responses": {
28244
+ "200": {
28245
+ "description": "Default Response",
28246
+ "content": {
28247
+ "application/json": {
28248
+ "schema": {
28249
+ "type": "object",
28250
+ "required": [
28251
+ "factors",
28252
+ "recovery"
28253
+ ],
28254
+ "properties": {
28255
+ "factors": {
28256
+ "type": "array",
28257
+ "items": {
28258
+ "anyOf": [
28259
+ {
28260
+ "type": "string",
28261
+ "enum": [
28262
+ "totp"
28263
+ ]
28264
+ },
28265
+ {
28266
+ "type": "string",
28267
+ "enum": [
28268
+ "webauthn"
28269
+ ]
28270
+ }
28271
+ ]
28272
+ },
28273
+ "description": "The ways this user can answer, in the order the screen should offer them. Only factors the user actually has and the policy accepts."
28274
+ },
28275
+ "preferred": {
28276
+ "anyOf": [
28277
+ {
28278
+ "type": "string",
28279
+ "enum": [
28280
+ "totp"
28281
+ ]
28282
+ },
28283
+ {
28284
+ "type": "string",
28285
+ "enum": [
28286
+ "webauthn"
28287
+ ]
28288
+ }
28289
+ ],
28290
+ "description": "The one to mark as the default, when there are several."
28291
+ },
28292
+ "recovery": {
28293
+ "type": "boolean",
28294
+ "description": "Whether to offer the recovery-code way in: the flow allows it and the user has codes."
28295
+ }
28296
+ },
28297
+ "additionalProperties": false
28298
+ }
28299
+ }
28300
+ }
28301
+ }
28302
+ }
28303
+ }
28304
+ },
27465
28305
  "/mfa/verify": {
27466
28306
  "post": {
27467
28307
  "summary": "Answer an MFA challenge with a TOTP code",
@@ -28116,6 +28956,10 @@
28116
28956
  },
28117
28957
  "state": {
28118
28958
  "type": "string"
28959
+ },
28960
+ "remember_me": {
28961
+ "type": "boolean",
28962
+ "description": "The \"Remember me on this device\" checkbox. Honoured only when the tenant shows one (`login_methods.remember_me: \"optional\"`)."
28119
28963
  }
28120
28964
  }
28121
28965
  }
@@ -30221,6 +31065,10 @@
30221
31065
  "type": "string",
30222
31066
  "description": "Same-origin path to return the user to after authentication, instead of the OAuth client redirect. Used by first-party interactive flows (e.g. device-code confirm). Non same-origin values are ignored."
30223
31067
  },
31068
+ "remember_me": {
31069
+ "type": "boolean",
31070
+ "description": "The \"Remember me on this device\" checkbox. Honoured only when the tenant shows one (`login_methods.remember_me: \"optional\"`): `true` keeps the session for `remember_me_days`, `false` ends it when the browser closes."
31071
+ },
30224
31072
  "client_id": {
30225
31073
  "type": "string"
30226
31074
  },