@faable/auth-sdk 2.5.69 → 2.5.71

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.
@@ -200,6 +200,26 @@ export interface paths {
200
200
  patch?: never;
201
201
  trace?: never;
202
202
  };
203
+ "/login-options": {
204
+ parameters: {
205
+ query?: never;
206
+ header?: never;
207
+ path?: never;
208
+ cookie?: never;
209
+ };
210
+ /**
211
+ * Resolve the login methods for a client
212
+ * @description Returns the ordered list of login methods the hosted login screen should offer for this client, already filtered by `connection.enabled` and `connection.enabled_clients`. `client_id` is the OAuth client_id; when omitted it falls back to the account's single client if it has exactly one, otherwise no client context is assumed and only unrestricted connections are returned.
213
+ */
214
+ get: operations["connection/loginOptions"];
215
+ put?: never;
216
+ post?: never;
217
+ delete?: never;
218
+ options?: never;
219
+ head?: never;
220
+ patch?: never;
221
+ trace?: never;
222
+ };
203
223
  "/client": {
204
224
  parameters: {
205
225
  query?: never;
@@ -424,6 +444,46 @@ export interface paths {
424
444
  patch?: never;
425
445
  trace?: never;
426
446
  };
447
+ "/user/{user_id}/factors": {
448
+ parameters: {
449
+ query?: never;
450
+ header?: never;
451
+ path?: never;
452
+ cookie?: never;
453
+ };
454
+ /**
455
+ * List a user's second factors
456
+ * @description Management view of the security methods a user has enrolled. Carries no secret material — TOTP seeds and recovery-code hashes are redacted by the store, so this endpoint cannot be used to impersonate the user.
457
+ */
458
+ get: operations["user/factors"];
459
+ put?: never;
460
+ post?: never;
461
+ delete?: never;
462
+ options?: never;
463
+ head?: never;
464
+ patch?: never;
465
+ trace?: never;
466
+ };
467
+ "/user/{user_id}/factors/{factor_id}": {
468
+ parameters: {
469
+ query?: never;
470
+ header?: never;
471
+ path?: never;
472
+ cookie?: never;
473
+ };
474
+ get?: never;
475
+ put?: never;
476
+ post?: never;
477
+ /**
478
+ * Remove one of a user's second factors
479
+ * @description The support path out of a lockout: with the factor gone, a `required` policy sends the user through enrolment on their next login instead of refusing it.
480
+ */
481
+ delete: operations["user/deleteFactor"];
482
+ options?: never;
483
+ head?: never;
484
+ patch?: never;
485
+ trace?: never;
486
+ };
427
487
  "/identity": {
428
488
  parameters: {
429
489
  query?: never;
@@ -1159,68 +1219,577 @@ export interface paths {
1159
1219
  path?: never;
1160
1220
  cookie?: never;
1161
1221
  };
1162
- /**
1163
- * List Customdomains
1164
- * @description List Customdomains
1165
- */
1166
- get: operations["customdomain/list"];
1167
- put?: never;
1168
- /**
1169
- * Create Customdomain
1170
- * @description Create Customdomain
1171
- */
1172
- post: operations["customdomain/create"];
1222
+ /**
1223
+ * List Customdomains
1224
+ * @description List Customdomains
1225
+ */
1226
+ get: operations["customdomain/list"];
1227
+ put?: never;
1228
+ /**
1229
+ * Create Customdomain
1230
+ * @description Create Customdomain
1231
+ */
1232
+ post: operations["customdomain/create"];
1233
+ delete?: never;
1234
+ options?: never;
1235
+ head?: never;
1236
+ patch?: never;
1237
+ trace?: never;
1238
+ };
1239
+ "/customdomain/{customdomain_id}": {
1240
+ parameters: {
1241
+ query?: never;
1242
+ header?: never;
1243
+ path?: never;
1244
+ cookie?: never;
1245
+ };
1246
+ /**
1247
+ * Get Customdomain
1248
+ * @description Get Customdomain
1249
+ */
1250
+ get: operations["customdomain/get"];
1251
+ put?: never;
1252
+ post?: never;
1253
+ /**
1254
+ * Delete Customdomain
1255
+ * @description Delete Customdomain
1256
+ */
1257
+ delete: operations["customdomain/delete"];
1258
+ options?: never;
1259
+ head?: never;
1260
+ patch?: never;
1261
+ trace?: never;
1262
+ };
1263
+ "/passwordless/verify_redirect": {
1264
+ parameters: {
1265
+ query?: never;
1266
+ header?: never;
1267
+ path?: never;
1268
+ cookie?: never;
1269
+ };
1270
+ /**
1271
+ * Receive a passwordless token via email link and convert it to a valid session
1272
+ * @description Receive a passwordless token and convert it to a valid session
1273
+ */
1274
+ get: operations["passwordless/verify_redirect"];
1275
+ put?: never;
1276
+ post?: never;
1277
+ delete?: never;
1278
+ options?: never;
1279
+ head?: never;
1280
+ patch?: never;
1281
+ trace?: never;
1282
+ };
1283
+ "/passwordless/verify_code": {
1284
+ parameters: {
1285
+ query?: never;
1286
+ header?: never;
1287
+ path?: never;
1288
+ cookie?: never;
1289
+ };
1290
+ get?: never;
1291
+ put?: never;
1292
+ /**
1293
+ * Verify a passwordless code and establish a session
1294
+ * @description Verifies an emailed passwordless code and establishes the browser `faable_sess` session, returning where to send the user next. Called by the first-party hosted login UI; SPAs on other origins use the `passwordless/otp` grant at `/oauth/token` instead, which returns tokens and no cookie.
1295
+ */
1296
+ post: operations["passwordless/verifyCode"];
1297
+ delete?: never;
1298
+ options?: never;
1299
+ head?: never;
1300
+ patch?: never;
1301
+ trace?: never;
1302
+ };
1303
+ "/passwordless/start": {
1304
+ parameters: {
1305
+ query?: never;
1306
+ header?: never;
1307
+ path?: never;
1308
+ cookie?: never;
1309
+ };
1310
+ get?: never;
1311
+ put?: never;
1312
+ /**
1313
+ * Start Passwordless authentication flow
1314
+ * @description Start Passwordless authentication flow
1315
+ */
1316
+ post: operations["passwordless/start"];
1317
+ delete?: never;
1318
+ options?: never;
1319
+ head?: never;
1320
+ patch?: never;
1321
+ trace?: never;
1322
+ };
1323
+ "/mfa/verify": {
1324
+ parameters: {
1325
+ query?: never;
1326
+ header?: never;
1327
+ path?: never;
1328
+ cookie?: never;
1329
+ };
1330
+ get?: never;
1331
+ put?: never;
1332
+ /**
1333
+ * Answer an MFA challenge with a TOTP code
1334
+ * @description Verifies a time-based code against the factors enrolled by the user the challenge belongs to, and resumes the parked login. The state is consumed only on success, so a mistyped code does not destroy the flow.
1335
+ */
1336
+ post: {
1337
+ parameters: {
1338
+ query?: never;
1339
+ header?: never;
1340
+ path?: never;
1341
+ cookie?: never;
1342
+ };
1343
+ requestBody: {
1344
+ content: {
1345
+ "application/json": {
1346
+ state: string;
1347
+ code: string;
1348
+ };
1349
+ };
1350
+ };
1351
+ responses: {
1352
+ /** @description Default Response */
1353
+ 200: {
1354
+ headers: {
1355
+ [name: string]: unknown;
1356
+ };
1357
+ content: {
1358
+ "application/json": {
1359
+ redirect_url: string;
1360
+ };
1361
+ };
1362
+ };
1363
+ };
1364
+ };
1365
+ delete?: never;
1366
+ options?: never;
1367
+ head?: never;
1368
+ patch?: never;
1369
+ trace?: never;
1370
+ };
1371
+ "/mfa/recovery": {
1372
+ parameters: {
1373
+ query?: never;
1374
+ header?: never;
1375
+ path?: never;
1376
+ cookie?: never;
1377
+ };
1378
+ get?: never;
1379
+ put?: never;
1380
+ /**
1381
+ * Answer an MFA challenge with a recovery code
1382
+ * @description Consumes one of the one-time recovery codes issued when the user enrolled their first factor.
1383
+ */
1384
+ post: {
1385
+ parameters: {
1386
+ query?: never;
1387
+ header?: never;
1388
+ path?: never;
1389
+ cookie?: never;
1390
+ };
1391
+ requestBody: {
1392
+ content: {
1393
+ "application/json": {
1394
+ state: string;
1395
+ code: string;
1396
+ };
1397
+ };
1398
+ };
1399
+ responses: {
1400
+ /** @description Default Response */
1401
+ 200: {
1402
+ headers: {
1403
+ [name: string]: unknown;
1404
+ };
1405
+ content: {
1406
+ "application/json": {
1407
+ redirect_url: string;
1408
+ };
1409
+ };
1410
+ };
1411
+ };
1412
+ };
1413
+ delete?: never;
1414
+ options?: never;
1415
+ head?: never;
1416
+ patch?: never;
1417
+ trace?: never;
1418
+ };
1419
+ "/me/factors": {
1420
+ parameters: {
1421
+ query?: never;
1422
+ header?: never;
1423
+ path?: never;
1424
+ cookie?: never;
1425
+ };
1426
+ /**
1427
+ * List my second factors
1428
+ * @description The security methods enrolled by the current session's user. Never returns secret material: TOTP seeds and recovery-code hashes are redacted by the store.
1429
+ */
1430
+ get: {
1431
+ parameters: {
1432
+ query?: never;
1433
+ header?: never;
1434
+ path?: never;
1435
+ cookie?: never;
1436
+ };
1437
+ requestBody?: never;
1438
+ responses: {
1439
+ /** @description Default Response */
1440
+ 200: {
1441
+ headers: {
1442
+ [name: string]: unknown;
1443
+ };
1444
+ content: {
1445
+ "application/json": components["schemas"]["FactorSummary"][];
1446
+ };
1447
+ };
1448
+ };
1449
+ };
1450
+ put?: never;
1451
+ post?: never;
1452
+ delete?: never;
1453
+ options?: never;
1454
+ head?: never;
1455
+ patch?: never;
1456
+ trace?: never;
1457
+ };
1458
+ "/me/factors/totp": {
1459
+ parameters: {
1460
+ query?: never;
1461
+ header?: never;
1462
+ path?: never;
1463
+ cookie?: never;
1464
+ };
1465
+ get?: never;
1466
+ put?: never;
1467
+ /**
1468
+ * Start enrolling an authenticator app
1469
+ * @description Creates an UNCONFIRMED TOTP factor and returns its `otpauth://` URI and secret — the only time either is ever readable. The factor does not satisfy any policy until `POST /me/factors/:id/verify` proves the user can produce a code from it.
1470
+ */
1471
+ post: {
1472
+ parameters: {
1473
+ query?: never;
1474
+ header?: never;
1475
+ path?: never;
1476
+ cookie?: never;
1477
+ };
1478
+ requestBody: {
1479
+ content: {
1480
+ "application/json": {
1481
+ name?: string;
1482
+ state?: string;
1483
+ };
1484
+ };
1485
+ };
1486
+ responses: {
1487
+ /** @description Default Response */
1488
+ 200: {
1489
+ headers: {
1490
+ [name: string]: unknown;
1491
+ };
1492
+ content: {
1493
+ "application/json": {
1494
+ id: string;
1495
+ secret: string;
1496
+ otpauth_uri: string;
1497
+ };
1498
+ };
1499
+ };
1500
+ };
1501
+ };
1502
+ delete?: never;
1503
+ options?: never;
1504
+ head?: never;
1505
+ patch?: never;
1506
+ trace?: never;
1507
+ };
1508
+ "/me/factors/{factor_id}/verify": {
1509
+ parameters: {
1510
+ query?: never;
1511
+ header?: never;
1512
+ path?: never;
1513
+ cookie?: never;
1514
+ };
1515
+ get?: never;
1516
+ put?: never;
1517
+ /**
1518
+ * Confirm an enrolment
1519
+ * @description Proves the user can produce a code from the seed, which is what makes the factor count. Confirming the first factor also mints the recovery codes — returned once and never again.
1520
+ */
1521
+ post: {
1522
+ parameters: {
1523
+ query?: never;
1524
+ header?: never;
1525
+ path: {
1526
+ factor_id: string;
1527
+ };
1528
+ cookie?: never;
1529
+ };
1530
+ requestBody: {
1531
+ content: {
1532
+ "application/json": {
1533
+ code: string;
1534
+ state?: string;
1535
+ };
1536
+ };
1537
+ };
1538
+ responses: {
1539
+ /** @description Default Response */
1540
+ 200: {
1541
+ headers: {
1542
+ [name: string]: unknown;
1543
+ };
1544
+ content: {
1545
+ "application/json": {
1546
+ id: string;
1547
+ confirmed_at: string;
1548
+ recovery_codes?: string[];
1549
+ redirect_url?: string;
1550
+ };
1551
+ };
1552
+ };
1553
+ };
1554
+ };
1555
+ delete?: never;
1556
+ options?: never;
1557
+ head?: never;
1558
+ patch?: never;
1559
+ trace?: never;
1560
+ };
1561
+ "/me/factors/{factor_id}": {
1562
+ parameters: {
1563
+ query?: never;
1564
+ header?: never;
1565
+ path?: never;
1566
+ cookie?: never;
1567
+ };
1568
+ get?: never;
1569
+ put?: never;
1570
+ post?: never;
1571
+ /** Remove one of my second factors */
1572
+ delete: {
1573
+ parameters: {
1574
+ query?: never;
1575
+ header?: never;
1576
+ path: {
1577
+ factor_id: string;
1578
+ };
1579
+ cookie?: never;
1580
+ };
1581
+ requestBody?: never;
1582
+ responses: {
1583
+ /** @description Default Response */
1584
+ 200: {
1585
+ headers: {
1586
+ [name: string]: unknown;
1587
+ };
1588
+ content: {
1589
+ "application/json": {
1590
+ deleted: boolean;
1591
+ };
1592
+ };
1593
+ };
1594
+ };
1595
+ };
1596
+ options?: never;
1597
+ head?: never;
1598
+ patch?: never;
1599
+ trace?: never;
1600
+ };
1601
+ "/me/passkeys/options": {
1602
+ parameters: {
1603
+ query?: never;
1604
+ header?: never;
1605
+ path?: never;
1606
+ cookie?: never;
1607
+ };
1608
+ get?: never;
1609
+ put?: never;
1610
+ /**
1611
+ * Start registering a passkey
1612
+ * @description Returns the WebAuthn creation options for `navigator.credentials.create()`. Existing credentials are excluded so the authenticator refuses to enrol the same key twice. Pass the `state` of a forced enrolment so the guard knows this is the way through, not a bypass.
1613
+ */
1614
+ post: {
1615
+ parameters: {
1616
+ query?: never;
1617
+ header?: never;
1618
+ path?: never;
1619
+ cookie?: never;
1620
+ };
1621
+ requestBody: {
1622
+ content: {
1623
+ "application/json": {
1624
+ state?: string;
1625
+ };
1626
+ };
1627
+ };
1628
+ responses: {
1629
+ /** @description Default Response */
1630
+ 200: {
1631
+ headers: {
1632
+ [name: string]: unknown;
1633
+ };
1634
+ content: {
1635
+ "application/json": {
1636
+ ceremony_id: string;
1637
+ options: unknown;
1638
+ };
1639
+ };
1640
+ };
1641
+ };
1642
+ };
1643
+ delete?: never;
1644
+ options?: never;
1645
+ head?: never;
1646
+ patch?: never;
1647
+ trace?: never;
1648
+ };
1649
+ "/me/passkeys": {
1650
+ parameters: {
1651
+ query?: never;
1652
+ header?: never;
1653
+ path?: never;
1654
+ cookie?: never;
1655
+ };
1656
+ get?: never;
1657
+ put?: never;
1658
+ /**
1659
+ * Finish registering a passkey
1660
+ * @description Verifies the attestation and stores the credential as a confirmed second factor. Pass the `state` of a pending challenge to also resume the login it parked.
1661
+ */
1662
+ post: {
1663
+ parameters: {
1664
+ query?: never;
1665
+ header?: never;
1666
+ path?: never;
1667
+ cookie?: never;
1668
+ };
1669
+ requestBody: {
1670
+ content: {
1671
+ "application/json": {
1672
+ ceremony_id: string;
1673
+ credential: unknown;
1674
+ name?: string;
1675
+ state?: string;
1676
+ };
1677
+ };
1678
+ };
1679
+ responses: {
1680
+ /** @description Default Response */
1681
+ 200: {
1682
+ headers: {
1683
+ [name: string]: unknown;
1684
+ };
1685
+ content: {
1686
+ "application/json": {
1687
+ id: string;
1688
+ redirect_url?: string;
1689
+ };
1690
+ };
1691
+ };
1692
+ };
1693
+ };
1173
1694
  delete?: never;
1174
1695
  options?: never;
1175
1696
  head?: never;
1176
1697
  patch?: never;
1177
1698
  trace?: never;
1178
1699
  };
1179
- "/customdomain/{customdomain_id}": {
1700
+ "/mfa/webauthn/options": {
1180
1701
  parameters: {
1181
1702
  query?: never;
1182
1703
  header?: never;
1183
1704
  path?: never;
1184
1705
  cookie?: never;
1185
1706
  };
1186
- /**
1187
- * Get Customdomain
1188
- * @description Get Customdomain
1189
- */
1190
- get: operations["customdomain/get"];
1707
+ get?: never;
1191
1708
  put?: never;
1192
- post?: never;
1193
- /**
1194
- * Delete Customdomain
1195
- * @description Delete Customdomain
1196
- */
1197
- delete: operations["customdomain/delete"];
1709
+ /** Start answering a challenge with a passkey */
1710
+ post: {
1711
+ parameters: {
1712
+ query?: never;
1713
+ header?: never;
1714
+ path?: never;
1715
+ cookie?: never;
1716
+ };
1717
+ requestBody: {
1718
+ content: {
1719
+ "application/json": {
1720
+ state: string;
1721
+ };
1722
+ };
1723
+ };
1724
+ responses: {
1725
+ /** @description Default Response */
1726
+ 200: {
1727
+ headers: {
1728
+ [name: string]: unknown;
1729
+ };
1730
+ content: {
1731
+ "application/json": {
1732
+ ceremony_id: string;
1733
+ options: unknown;
1734
+ };
1735
+ };
1736
+ };
1737
+ };
1738
+ };
1739
+ delete?: never;
1198
1740
  options?: never;
1199
1741
  head?: never;
1200
1742
  patch?: never;
1201
1743
  trace?: never;
1202
1744
  };
1203
- "/passwordless/verify_redirect": {
1745
+ "/mfa/webauthn/verify": {
1204
1746
  parameters: {
1205
1747
  query?: never;
1206
1748
  header?: never;
1207
1749
  path?: never;
1208
1750
  cookie?: never;
1209
1751
  };
1210
- /**
1211
- * Receive a passwordless token via email link and convert it to a valid session
1212
- * @description Receive a passwordless token and convert it to a valid session
1213
- */
1214
- get: operations["passwordless/verify_redirect"];
1752
+ get?: never;
1215
1753
  put?: never;
1216
- post?: never;
1754
+ /** Answer a challenge with a passkey */
1755
+ post: {
1756
+ parameters: {
1757
+ query?: never;
1758
+ header?: never;
1759
+ path?: never;
1760
+ cookie?: never;
1761
+ };
1762
+ requestBody: {
1763
+ content: {
1764
+ "application/json": {
1765
+ ceremony_id: string;
1766
+ credential: unknown;
1767
+ name?: string;
1768
+ state?: string;
1769
+ };
1770
+ };
1771
+ };
1772
+ responses: {
1773
+ /** @description Default Response */
1774
+ 200: {
1775
+ headers: {
1776
+ [name: string]: unknown;
1777
+ };
1778
+ content: {
1779
+ "application/json": {
1780
+ redirect_url: string;
1781
+ };
1782
+ };
1783
+ };
1784
+ };
1785
+ };
1217
1786
  delete?: never;
1218
1787
  options?: never;
1219
1788
  head?: never;
1220
1789
  patch?: never;
1221
1790
  trace?: never;
1222
1791
  };
1223
- "/passwordless/verify_code": {
1792
+ "/passkey/login/options": {
1224
1793
  parameters: {
1225
1794
  query?: never;
1226
1795
  header?: never;
@@ -1230,17 +1799,46 @@ export interface paths {
1230
1799
  get?: never;
1231
1800
  put?: never;
1232
1801
  /**
1233
- * Verify a passwordless code and establish a session
1234
- * @description Verifies an emailed passwordless code and establishes the browser `faable_sess` session, returning where to send the user next. Called by the first-party hosted login UI; SPAs on other origins use the `passwordless/otp` grant at `/oauth/token` instead, which returns tokens and no cookie.
1802
+ * Start a passwordless passkey login
1803
+ * @description Returns authentication options with an EMPTY allowCredentials, so the browser offers whichever discoverable passkey it holds for this Relying Party the usernameless flow behind conditional autofill.
1235
1804
  */
1236
- post: operations["passwordless/verifyCode"];
1805
+ post: {
1806
+ parameters: {
1807
+ query?: never;
1808
+ header?: never;
1809
+ path?: never;
1810
+ cookie?: never;
1811
+ };
1812
+ requestBody: {
1813
+ content: {
1814
+ "application/json": {
1815
+ client_id: string;
1816
+ redirect_to?: string;
1817
+ };
1818
+ };
1819
+ };
1820
+ responses: {
1821
+ /** @description Default Response */
1822
+ 200: {
1823
+ headers: {
1824
+ [name: string]: unknown;
1825
+ };
1826
+ content: {
1827
+ "application/json": {
1828
+ ceremony_id: string;
1829
+ options: unknown;
1830
+ };
1831
+ };
1832
+ };
1833
+ };
1834
+ };
1237
1835
  delete?: never;
1238
1836
  options?: never;
1239
1837
  head?: never;
1240
1838
  patch?: never;
1241
1839
  trace?: never;
1242
1840
  };
1243
- "/passwordless/start": {
1841
+ "/passkey/login/verify": {
1244
1842
  parameters: {
1245
1843
  query?: never;
1246
1844
  header?: never;
@@ -1250,10 +1848,41 @@ export interface paths {
1250
1848
  get?: never;
1251
1849
  put?: never;
1252
1850
  /**
1253
- * Start Passwordless authentication flow
1254
- * @description Start Passwordless authentication flow
1851
+ * Finish a passwordless passkey login
1852
+ * @description Verifies the assertion, establishes the session and answers with where to send the browser. A passkey that verified the user (biometric or PIN) is already two factors, so no second-factor challenge follows.
1255
1853
  */
1256
- post: operations["passwordless/start"];
1854
+ post: {
1855
+ parameters: {
1856
+ query?: never;
1857
+ header?: never;
1858
+ path?: never;
1859
+ cookie?: never;
1860
+ };
1861
+ requestBody: {
1862
+ content: {
1863
+ "application/json": {
1864
+ ceremony_id: string;
1865
+ credential: unknown;
1866
+ client_id: string;
1867
+ redirect_to?: string;
1868
+ state?: string;
1869
+ };
1870
+ };
1871
+ };
1872
+ responses: {
1873
+ /** @description Default Response */
1874
+ 200: {
1875
+ headers: {
1876
+ [name: string]: unknown;
1877
+ };
1878
+ content: {
1879
+ "application/json": {
1880
+ redirect_url: string;
1881
+ };
1882
+ };
1883
+ };
1884
+ };
1885
+ };
1257
1886
  delete?: never;
1258
1887
  options?: never;
1259
1888
  head?: never;
@@ -1752,6 +2381,28 @@ export interface components {
1752
2381
  * - `always_sync`: the federated provider's email is always written back, overwriting any manual change. Useful for tenants whose source of truth for identity is the IdP (corporate SSO, etc.).
1753
2382
  */
1754
2383
  email_oauth_sync_policy?: "preserve_manual" | "always_sync";
2384
+ /** @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. */
2385
+ login_methods?: {
2386
+ /** @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(). */
2387
+ order?: string[];
2388
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
2389
+ passkey_login_enabled?: boolean;
2390
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
2391
+ identifier_first?: boolean;
2392
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
2393
+ remember_last_method?: boolean;
2394
+ };
2395
+ /** @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. */
2396
+ mfa_policy?: {
2397
+ /** @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. */
2398
+ mode?: "off" | "optional" | "required";
2399
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
2400
+ allowed_factors?: ("totp" | "webauthn")[];
2401
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
2402
+ remember_device_days?: number;
2403
+ };
2404
+ /** @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. */
2405
+ webauthn_rp_id?: string | null;
1755
2406
  /** @description AuthAccount creation date */
1756
2407
  createdAt: string;
1757
2408
  /** @description AuthAccount updated date */
@@ -1953,6 +2604,26 @@ export interface components {
1953
2604
  url: string;
1954
2605
  };
1955
2606
  };
2607
+ /** @description One method the login screen should offer. Discriminated by `kind`. Connection methods carry only what a login screen needs — never credentials, endpoints or the rest of the Connection document. */
2608
+ LoginOptionMethod: {
2609
+ /** @enum {string} */
2610
+ kind: "passkey";
2611
+ } | {
2612
+ /** @enum {string} */
2613
+ kind: "connection";
2614
+ id: string;
2615
+ connection_type: string;
2616
+ connection_name: string;
2617
+ /** @description Password policy enforced when writing a password through this database connection (password reset and admin set-password). `level` is an Auth0-style preset (none/low/fair/good/excellent); the dashboard expands it into the explicit rule fields when saving. The rule fields override the preset baseline. When unset on the connection, the server applies the `good` default. Does not affect login. */
2618
+ password_policy: {
2619
+ level: "none" | "low" | "fair" | "good" | "excellent";
2620
+ min_length?: number;
2621
+ require_lowercase?: boolean;
2622
+ require_uppercase?: boolean;
2623
+ require_number?: boolean;
2624
+ require_special?: boolean;
2625
+ };
2626
+ };
1956
2627
  /** @description Client */
1957
2628
  Client: {
1958
2629
  /** @description Client ID */
@@ -1988,6 +2659,26 @@ export interface components {
1988
2659
  software_version?: string | null;
1989
2660
  frontchannel_logout_uri?: string | null;
1990
2661
  frontchannel_logout_session_required?: boolean;
2662
+ /** @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. */
2663
+ login_methods?: {
2664
+ /** @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(). */
2665
+ order?: string[];
2666
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
2667
+ passkey_login_enabled?: boolean;
2668
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
2669
+ identifier_first?: boolean;
2670
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
2671
+ remember_last_method?: boolean;
2672
+ };
2673
+ /** @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. */
2674
+ mfa_policy?: {
2675
+ /** @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. */
2676
+ mode?: "off" | "optional" | "required";
2677
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
2678
+ allowed_factors?: ("totp" | "webauthn")[];
2679
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
2680
+ remember_device_days?: number;
2681
+ };
1991
2682
  /** @description Object is related with this account */
1992
2683
  account: string;
1993
2684
  /**
@@ -2060,6 +2751,24 @@ export interface components {
2060
2751
  software_version?: string | null;
2061
2752
  frontchannel_logout_uri?: string | null;
2062
2753
  frontchannel_logout_session_required?: boolean;
2754
+ login_methods?: {
2755
+ /** @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(). */
2756
+ order?: string[];
2757
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
2758
+ passkey_login_enabled?: boolean;
2759
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
2760
+ identifier_first?: boolean;
2761
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
2762
+ remember_last_method?: boolean;
2763
+ } | null;
2764
+ mfa_policy?: {
2765
+ /** @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. */
2766
+ mode?: "off" | "optional" | "required";
2767
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
2768
+ allowed_factors?: ("totp" | "webauthn")[];
2769
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
2770
+ remember_device_days?: number;
2771
+ } | null;
2063
2772
  /**
2064
2773
  * @description Free-form client metadata. Replaces the whole object — send the full merged value, not a partial delta.
2065
2774
  * @default {}
@@ -2302,6 +3011,14 @@ export interface components {
2302
3011
  UserAppMetadataUpdate: {
2303
3012
  [key: string]: unknown;
2304
3013
  };
3014
+ AdminFactor: {
3015
+ id: string;
3016
+ type: string;
3017
+ name?: string;
3018
+ confirmed_at?: string;
3019
+ last_used_at?: string;
3020
+ remaining?: number;
3021
+ };
2305
3022
  /** @description Identity */
2306
3023
  Identity: {
2307
3024
  /** @description Identity ID */
@@ -3306,10 +4023,37 @@ export interface components {
3306
4023
  */
3307
4024
  verify_email_auto_send: boolean;
3308
4025
  };
4026
+ login_methods?: {
4027
+ /** @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(). */
4028
+ order?: string[];
4029
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
4030
+ passkey_login_enabled?: boolean;
4031
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
4032
+ identifier_first?: boolean;
4033
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
4034
+ remember_last_method?: boolean;
4035
+ } | null;
4036
+ mfa_policy?: {
4037
+ /** @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. */
4038
+ mode?: "off" | "optional" | "required";
4039
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
4040
+ allowed_factors?: ("totp" | "webauthn")[];
4041
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
4042
+ remember_device_days?: number;
4043
+ } | null;
4044
+ webauthn_rp_id?: string | null;
4045
+ };
4046
+ FactorSummary: {
4047
+ id: string;
4048
+ type: string;
4049
+ name?: string;
4050
+ confirmed_at?: string;
4051
+ last_used_at?: string;
4052
+ remaining?: number;
3309
4053
  };
3310
4054
  OAuthTokenParams: {
3311
4055
  /** @description Grant Type. https://oauth.net/2/grant-types/ */
3312
- grant_type?: "authorization_code" | "client_credentials" | "refresh_token" | "password" | "http://auth0.com/oauth/grant-type/passwordless/otp" | "urn:ietf:params:oauth:grant-type:token-exchange" | "urn:ietf:params:oauth:grant-type:device_code";
4056
+ grant_type?: "authorization_code" | "client_credentials" | "refresh_token" | "password" | "http://auth0.com/oauth/grant-type/mfa-otp" | "http://auth0.com/oauth/grant-type/mfa-recovery-code" | "http://auth0.com/oauth/grant-type/passwordless/otp" | "urn:ietf:params:oauth:grant-type:token-exchange" | "urn:ietf:params:oauth:grant-type:device_code";
3313
4057
  client_id?: string;
3314
4058
  client_secret?: string;
3315
4059
  scope?: string;
@@ -3318,6 +4062,10 @@ export interface components {
3318
4062
  username?: string;
3319
4063
  otp?: string;
3320
4064
  refresh_token?: string;
4065
+ /** @description Opaque token returned with a `403 mfa_required` response. Present it here with `grant_type=http://auth0.com/oauth/grant-type/mfa-otp` (or `…/mfa-recovery-code`) and the code, to finish a grant a second-factor policy interrupted. */
4066
+ mfa_token?: string;
4067
+ /** @description One of the user's one-time recovery codes, for `grant_type=http://auth0.com/oauth/grant-type/mfa-recovery-code`. */
4068
+ recovery_code?: string;
3321
4069
  subject_token?: string;
3322
4070
  subject_token_type?: string;
3323
4071
  /** @description The device code returned by the authorization server. */
@@ -3330,7 +4078,7 @@ export interface components {
3330
4078
  [key: string]: unknown;
3331
4079
  };
3332
4080
  /** @description Grant Type. https://oauth.net/2/grant-types/ */
3333
- OAuthGrantType: "authorization_code" | "client_credentials" | "refresh_token" | "password" | "http://auth0.com/oauth/grant-type/passwordless/otp" | "urn:ietf:params:oauth:grant-type:token-exchange" | "urn:ietf:params:oauth:grant-type:device_code";
4081
+ OAuthGrantType: "authorization_code" | "client_credentials" | "refresh_token" | "password" | "http://auth0.com/oauth/grant-type/mfa-otp" | "http://auth0.com/oauth/grant-type/mfa-recovery-code" | "http://auth0.com/oauth/grant-type/passwordless/otp" | "urn:ietf:params:oauth:grant-type:token-exchange" | "urn:ietf:params:oauth:grant-type:device_code";
3334
4082
  /** @description UsernamepasswordLoginBody */
3335
4083
  UsernamepasswordLoginBody: {
3336
4084
  username: string;
@@ -3432,6 +4180,28 @@ export interface operations {
3432
4180
  * - `always_sync`: the federated provider's email is always written back, overwriting any manual change. Useful for tenants whose source of truth for identity is the IdP (corporate SSO, etc.).
3433
4181
  */
3434
4182
  email_oauth_sync_policy?: "preserve_manual" | "always_sync";
4183
+ /** @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. */
4184
+ login_methods?: {
4185
+ /** @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(). */
4186
+ order?: string[];
4187
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
4188
+ passkey_login_enabled?: boolean;
4189
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
4190
+ identifier_first?: boolean;
4191
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
4192
+ remember_last_method?: boolean;
4193
+ };
4194
+ /** @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. */
4195
+ mfa_policy?: {
4196
+ /** @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. */
4197
+ mode?: "off" | "optional" | "required";
4198
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
4199
+ allowed_factors?: ("totp" | "webauthn")[];
4200
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
4201
+ remember_device_days?: number;
4202
+ };
4203
+ /** @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. */
4204
+ webauthn_rp_id?: string | null;
3435
4205
  /** @description AuthAccount creation date */
3436
4206
  createdAt: string;
3437
4207
  /** @description AuthAccount updated date */
@@ -3546,6 +4316,28 @@ export interface operations {
3546
4316
  * - `always_sync`: the federated provider's email is always written back, overwriting any manual change. Useful for tenants whose source of truth for identity is the IdP (corporate SSO, etc.).
3547
4317
  */
3548
4318
  email_oauth_sync_policy?: "preserve_manual" | "always_sync";
4319
+ /** @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. */
4320
+ login_methods?: {
4321
+ /** @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(). */
4322
+ order?: string[];
4323
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
4324
+ passkey_login_enabled?: boolean;
4325
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
4326
+ identifier_first?: boolean;
4327
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
4328
+ remember_last_method?: boolean;
4329
+ };
4330
+ /** @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. */
4331
+ mfa_policy?: {
4332
+ /** @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. */
4333
+ mode?: "off" | "optional" | "required";
4334
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
4335
+ allowed_factors?: ("totp" | "webauthn")[];
4336
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
4337
+ remember_device_days?: number;
4338
+ };
4339
+ /** @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. */
4340
+ webauthn_rp_id?: string | null;
3549
4341
  /** @description AuthAccount creation date */
3550
4342
  createdAt: string;
3551
4343
  /** @description AuthAccount updated date */
@@ -3614,6 +4406,28 @@ export interface operations {
3614
4406
  * - `always_sync`: the federated provider's email is always written back, overwriting any manual change. Useful for tenants whose source of truth for identity is the IdP (corporate SSO, etc.).
3615
4407
  */
3616
4408
  email_oauth_sync_policy?: "preserve_manual" | "always_sync";
4409
+ /** @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. */
4410
+ login_methods?: {
4411
+ /** @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(). */
4412
+ order?: string[];
4413
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
4414
+ passkey_login_enabled?: boolean;
4415
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
4416
+ identifier_first?: boolean;
4417
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
4418
+ remember_last_method?: boolean;
4419
+ };
4420
+ /** @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. */
4421
+ mfa_policy?: {
4422
+ /** @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. */
4423
+ mode?: "off" | "optional" | "required";
4424
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
4425
+ allowed_factors?: ("totp" | "webauthn")[];
4426
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
4427
+ remember_device_days?: number;
4428
+ };
4429
+ /** @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. */
4430
+ webauthn_rp_id?: string | null;
3617
4431
  /** @description AuthAccount creation date */
3618
4432
  createdAt: string;
3619
4433
  /** @description AuthAccount updated date */
@@ -3655,6 +4469,25 @@ export interface operations {
3655
4469
  */
3656
4470
  verify_email_auto_send?: boolean;
3657
4471
  };
4472
+ login_methods?: {
4473
+ /** @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(). */
4474
+ order?: string[];
4475
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
4476
+ passkey_login_enabled?: boolean;
4477
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
4478
+ identifier_first?: boolean;
4479
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
4480
+ remember_last_method?: boolean;
4481
+ } | null;
4482
+ mfa_policy?: {
4483
+ /** @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. */
4484
+ mode?: "off" | "optional" | "required";
4485
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
4486
+ allowed_factors?: ("totp" | "webauthn")[];
4487
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
4488
+ remember_device_days?: number;
4489
+ } | null;
4490
+ webauthn_rp_id?: string | null;
3658
4491
  };
3659
4492
  };
3660
4493
  };
@@ -3704,6 +4537,28 @@ export interface operations {
3704
4537
  * - `always_sync`: the federated provider's email is always written back, overwriting any manual change. Useful for tenants whose source of truth for identity is the IdP (corporate SSO, etc.).
3705
4538
  */
3706
4539
  email_oauth_sync_policy?: "preserve_manual" | "always_sync";
4540
+ /** @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. */
4541
+ login_methods?: {
4542
+ /** @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(). */
4543
+ order?: string[];
4544
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
4545
+ passkey_login_enabled?: boolean;
4546
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
4547
+ identifier_first?: boolean;
4548
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
4549
+ remember_last_method?: boolean;
4550
+ };
4551
+ /** @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. */
4552
+ mfa_policy?: {
4553
+ /** @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. */
4554
+ mode?: "off" | "optional" | "required";
4555
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
4556
+ allowed_factors?: ("totp" | "webauthn")[];
4557
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
4558
+ remember_device_days?: number;
4559
+ };
4560
+ /** @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. */
4561
+ webauthn_rp_id?: string | null;
3707
4562
  /** @description AuthAccount creation date */
3708
4563
  createdAt: string;
3709
4564
  /** @description AuthAccount updated date */
@@ -3781,6 +4636,28 @@ export interface operations {
3781
4636
  * - `always_sync`: the federated provider's email is always written back, overwriting any manual change. Useful for tenants whose source of truth for identity is the IdP (corporate SSO, etc.).
3782
4637
  */
3783
4638
  email_oauth_sync_policy?: "preserve_manual" | "always_sync";
4639
+ /** @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. */
4640
+ login_methods?: {
4641
+ /** @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(). */
4642
+ order?: string[];
4643
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
4644
+ passkey_login_enabled?: boolean;
4645
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
4646
+ identifier_first?: boolean;
4647
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
4648
+ remember_last_method?: boolean;
4649
+ };
4650
+ /** @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. */
4651
+ mfa_policy?: {
4652
+ /** @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. */
4653
+ mode?: "off" | "optional" | "required";
4654
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
4655
+ allowed_factors?: ("totp" | "webauthn")[];
4656
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
4657
+ remember_device_days?: number;
4658
+ };
4659
+ /** @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. */
4660
+ webauthn_rp_id?: string | null;
3784
4661
  /** @description AuthAccount creation date */
3785
4662
  createdAt: string;
3786
4663
  /** @description AuthAccount updated date */
@@ -4281,6 +5158,45 @@ export interface operations {
4281
5158
  };
4282
5159
  };
4283
5160
  };
5161
+ "connection/loginOptions": {
5162
+ parameters: {
5163
+ query?: {
5164
+ client_id?: string;
5165
+ };
5166
+ header?: never;
5167
+ path?: never;
5168
+ cookie?: never;
5169
+ };
5170
+ requestBody?: never;
5171
+ responses: {
5172
+ /** @description Default Response */
5173
+ 200: {
5174
+ headers: {
5175
+ [name: string]: unknown;
5176
+ };
5177
+ content: {
5178
+ "application/json": {
5179
+ account: {
5180
+ id: string;
5181
+ name: string;
5182
+ logo_src: string | null;
5183
+ icon_src: string | null;
5184
+ };
5185
+ /** @description The client the methods were resolved for, or `null` when none could be determined (no `client_id` given and the account has zero or several clients). */
5186
+ client: {
5187
+ id: string;
5188
+ client_id: string;
5189
+ name: string;
5190
+ } | null;
5191
+ identifier_first: boolean;
5192
+ remember_last_method: boolean;
5193
+ /** @description Already filtered and ordered. Render them in this order; do not re-sort or re-filter client-side. */
5194
+ methods: components["schemas"]["LoginOptionMethod"][];
5195
+ };
5196
+ };
5197
+ };
5198
+ };
5199
+ };
4284
5200
  "client/list": {
4285
5201
  parameters: {
4286
5202
  query?: {
@@ -4379,6 +5295,26 @@ export interface operations {
4379
5295
  software_version?: string | null;
4380
5296
  frontchannel_logout_uri?: string | null;
4381
5297
  frontchannel_logout_session_required?: boolean;
5298
+ /** @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. */
5299
+ login_methods?: {
5300
+ /** @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(). */
5301
+ order?: string[];
5302
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
5303
+ passkey_login_enabled?: boolean;
5304
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
5305
+ identifier_first?: boolean;
5306
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
5307
+ remember_last_method?: boolean;
5308
+ };
5309
+ /** @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. */
5310
+ mfa_policy?: {
5311
+ /** @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. */
5312
+ mode?: "off" | "optional" | "required";
5313
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
5314
+ allowed_factors?: ("totp" | "webauthn")[];
5315
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
5316
+ remember_device_days?: number;
5317
+ };
4382
5318
  /** @description Object is related with this account */
4383
5319
  account: string;
4384
5320
  /**
@@ -4448,6 +5384,26 @@ export interface operations {
4448
5384
  software_version?: string | null;
4449
5385
  frontchannel_logout_uri?: string | null;
4450
5386
  frontchannel_logout_session_required?: boolean;
5387
+ /** @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. */
5388
+ login_methods?: {
5389
+ /** @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(). */
5390
+ order?: string[];
5391
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
5392
+ passkey_login_enabled?: boolean;
5393
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
5394
+ identifier_first?: boolean;
5395
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
5396
+ remember_last_method?: boolean;
5397
+ };
5398
+ /** @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. */
5399
+ mfa_policy?: {
5400
+ /** @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. */
5401
+ mode?: "off" | "optional" | "required";
5402
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
5403
+ allowed_factors?: ("totp" | "webauthn")[];
5404
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
5405
+ remember_device_days?: number;
5406
+ };
4451
5407
  /** @description Object is related with this account */
4452
5408
  account: string;
4453
5409
  /**
@@ -4512,6 +5468,24 @@ export interface operations {
4512
5468
  software_version?: string | null;
4513
5469
  frontchannel_logout_uri?: string | null;
4514
5470
  frontchannel_logout_session_required?: boolean;
5471
+ login_methods?: {
5472
+ /** @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(). */
5473
+ order?: string[];
5474
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
5475
+ passkey_login_enabled?: boolean;
5476
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
5477
+ identifier_first?: boolean;
5478
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
5479
+ remember_last_method?: boolean;
5480
+ } | null;
5481
+ mfa_policy?: {
5482
+ /** @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. */
5483
+ mode?: "off" | "optional" | "required";
5484
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
5485
+ allowed_factors?: ("totp" | "webauthn")[];
5486
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
5487
+ remember_device_days?: number;
5488
+ } | null;
4515
5489
  /**
4516
5490
  * @description Free-form client metadata. Replaces the whole object — send the full merged value, not a partial delta.
4517
5491
  * @default {}
@@ -4563,6 +5537,26 @@ export interface operations {
4563
5537
  software_version?: string | null;
4564
5538
  frontchannel_logout_uri?: string | null;
4565
5539
  frontchannel_logout_session_required?: boolean;
5540
+ /** @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. */
5541
+ login_methods?: {
5542
+ /** @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(). */
5543
+ order?: string[];
5544
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
5545
+ passkey_login_enabled?: boolean;
5546
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
5547
+ identifier_first?: boolean;
5548
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
5549
+ remember_last_method?: boolean;
5550
+ };
5551
+ /** @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. */
5552
+ mfa_policy?: {
5553
+ /** @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. */
5554
+ mode?: "off" | "optional" | "required";
5555
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
5556
+ allowed_factors?: ("totp" | "webauthn")[];
5557
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
5558
+ remember_device_days?: number;
5559
+ };
4566
5560
  /** @description Object is related with this account */
4567
5561
  account: string;
4568
5562
  /**
@@ -4632,6 +5626,26 @@ export interface operations {
4632
5626
  software_version?: string | null;
4633
5627
  frontchannel_logout_uri?: string | null;
4634
5628
  frontchannel_logout_session_required?: boolean;
5629
+ /** @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. */
5630
+ login_methods?: {
5631
+ /** @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(). */
5632
+ order?: string[];
5633
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
5634
+ passkey_login_enabled?: boolean;
5635
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
5636
+ identifier_first?: boolean;
5637
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
5638
+ remember_last_method?: boolean;
5639
+ };
5640
+ /** @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. */
5641
+ mfa_policy?: {
5642
+ /** @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. */
5643
+ mode?: "off" | "optional" | "required";
5644
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
5645
+ allowed_factors?: ("totp" | "webauthn")[];
5646
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
5647
+ remember_device_days?: number;
5648
+ };
4635
5649
  /** @description Object is related with this account */
4636
5650
  account: string;
4637
5651
  /**
@@ -4701,6 +5715,26 @@ export interface operations {
4701
5715
  software_version?: string | null;
4702
5716
  frontchannel_logout_uri?: string | null;
4703
5717
  frontchannel_logout_session_required?: boolean;
5718
+ /** @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. */
5719
+ login_methods?: {
5720
+ /** @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(). */
5721
+ order?: string[];
5722
+ /** @description Offer passkey (WebAuthn) as a primary login method on the hosted login screen. Defaults to false. */
5723
+ passkey_login_enabled?: boolean;
5724
+ /** @description Ask for the email first and only then reveal the methods that apply to it, instead of showing every method up front. Defaults to false. */
5725
+ identifier_first?: boolean;
5726
+ /** @description Surface the method the returning user chose last time. Defaults to false. */
5727
+ remember_last_method?: boolean;
5728
+ };
5729
+ /** @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. */
5730
+ mfa_policy?: {
5731
+ /** @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. */
5732
+ mode?: "off" | "optional" | "required";
5733
+ /** @description Which kinds of second factor satisfy the policy. Empty or unset means all of them. A user whose only factor is of a kind not listed here is treated as having none. */
5734
+ allowed_factors?: ("totp" | "webauthn")[];
5735
+ /** @description How long a browser that already passed a challenge may skip the next one. 0 (default) challenges every time. */
5736
+ remember_device_days?: number;
5737
+ };
4704
5738
  /** @description Object is related with this account */
4705
5739
  account: string;
4706
5740
  /**
@@ -5519,6 +6553,53 @@ export interface operations {
5519
6553
  };
5520
6554
  };
5521
6555
  };
6556
+ "user/factors": {
6557
+ parameters: {
6558
+ query?: never;
6559
+ header?: never;
6560
+ path: {
6561
+ user_id: string;
6562
+ };
6563
+ cookie?: never;
6564
+ };
6565
+ requestBody?: never;
6566
+ responses: {
6567
+ /** @description Default Response */
6568
+ 200: {
6569
+ headers: {
6570
+ [name: string]: unknown;
6571
+ };
6572
+ content: {
6573
+ "application/json": components["schemas"]["AdminFactor"][];
6574
+ };
6575
+ };
6576
+ };
6577
+ };
6578
+ "user/deleteFactor": {
6579
+ parameters: {
6580
+ query?: never;
6581
+ header?: never;
6582
+ path: {
6583
+ user_id: string;
6584
+ factor_id: string;
6585
+ };
6586
+ cookie?: never;
6587
+ };
6588
+ requestBody?: never;
6589
+ responses: {
6590
+ /** @description Default Response */
6591
+ 200: {
6592
+ headers: {
6593
+ [name: string]: unknown;
6594
+ };
6595
+ content: {
6596
+ "application/json": {
6597
+ deleted: boolean;
6598
+ };
6599
+ };
6600
+ };
6601
+ };
6602
+ };
5522
6603
  "identity/list": {
5523
6604
  parameters: {
5524
6605
  query?: {
@@ -9192,7 +10273,7 @@ export interface operations {
9192
10273
  parameters: {
9193
10274
  query?: {
9194
10275
  /** @description Grant Type. https://oauth.net/2/grant-types/ */
9195
- grant_type?: "authorization_code" | "client_credentials" | "refresh_token" | "password" | "http://auth0.com/oauth/grant-type/passwordless/otp" | "urn:ietf:params:oauth:grant-type:token-exchange" | "urn:ietf:params:oauth:grant-type:device_code";
10276
+ grant_type?: "authorization_code" | "client_credentials" | "refresh_token" | "password" | "http://auth0.com/oauth/grant-type/mfa-otp" | "http://auth0.com/oauth/grant-type/mfa-recovery-code" | "http://auth0.com/oauth/grant-type/passwordless/otp" | "urn:ietf:params:oauth:grant-type:token-exchange" | "urn:ietf:params:oauth:grant-type:device_code";
9196
10277
  client_id?: string;
9197
10278
  client_secret?: string;
9198
10279
  scope?: string;
@@ -9201,6 +10282,10 @@ export interface operations {
9201
10282
  username?: string;
9202
10283
  otp?: string;
9203
10284
  refresh_token?: string;
10285
+ /** @description Opaque token returned with a `403 mfa_required` response. Present it here with `grant_type=http://auth0.com/oauth/grant-type/mfa-otp` (or `…/mfa-recovery-code`) and the code, to finish a grant a second-factor policy interrupted. */
10286
+ mfa_token?: string;
10287
+ /** @description One of the user's one-time recovery codes, for `grant_type=http://auth0.com/oauth/grant-type/mfa-recovery-code`. */
10288
+ recovery_code?: string;
9204
10289
  subject_token?: string;
9205
10290
  subject_token_type?: string;
9206
10291
  /** @description The device code returned by the authorization server. */
@@ -9238,7 +10323,7 @@ export interface operations {
9238
10323
  parameters: {
9239
10324
  query?: {
9240
10325
  /** @description Grant Type. https://oauth.net/2/grant-types/ */
9241
- grant_type?: "authorization_code" | "client_credentials" | "refresh_token" | "password" | "http://auth0.com/oauth/grant-type/passwordless/otp" | "urn:ietf:params:oauth:grant-type:token-exchange" | "urn:ietf:params:oauth:grant-type:device_code";
10326
+ grant_type?: "authorization_code" | "client_credentials" | "refresh_token" | "password" | "http://auth0.com/oauth/grant-type/mfa-otp" | "http://auth0.com/oauth/grant-type/mfa-recovery-code" | "http://auth0.com/oauth/grant-type/passwordless/otp" | "urn:ietf:params:oauth:grant-type:token-exchange" | "urn:ietf:params:oauth:grant-type:device_code";
9242
10327
  client_id?: string;
9243
10328
  client_secret?: string;
9244
10329
  scope?: string;
@@ -9247,6 +10332,10 @@ export interface operations {
9247
10332
  username?: string;
9248
10333
  otp?: string;
9249
10334
  refresh_token?: string;
10335
+ /** @description Opaque token returned with a `403 mfa_required` response. Present it here with `grant_type=http://auth0.com/oauth/grant-type/mfa-otp` (or `…/mfa-recovery-code`) and the code, to finish a grant a second-factor policy interrupted. */
10336
+ mfa_token?: string;
10337
+ /** @description One of the user's one-time recovery codes, for `grant_type=http://auth0.com/oauth/grant-type/mfa-recovery-code`. */
10338
+ recovery_code?: string;
9250
10339
  subject_token?: string;
9251
10340
  subject_token_type?: string;
9252
10341
  /** @description The device code returned by the authorization server. */
@@ -9264,7 +10353,7 @@ export interface operations {
9264
10353
  content: {
9265
10354
  "application/json": {
9266
10355
  /** @description Grant Type. https://oauth.net/2/grant-types/ */
9267
- grant_type?: "authorization_code" | "client_credentials" | "refresh_token" | "password" | "http://auth0.com/oauth/grant-type/passwordless/otp" | "urn:ietf:params:oauth:grant-type:token-exchange" | "urn:ietf:params:oauth:grant-type:device_code";
10356
+ grant_type?: "authorization_code" | "client_credentials" | "refresh_token" | "password" | "http://auth0.com/oauth/grant-type/mfa-otp" | "http://auth0.com/oauth/grant-type/mfa-recovery-code" | "http://auth0.com/oauth/grant-type/passwordless/otp" | "urn:ietf:params:oauth:grant-type:token-exchange" | "urn:ietf:params:oauth:grant-type:device_code";
9268
10357
  client_id?: string;
9269
10358
  client_secret?: string;
9270
10359
  scope?: string;
@@ -9273,6 +10362,10 @@ export interface operations {
9273
10362
  username?: string;
9274
10363
  otp?: string;
9275
10364
  refresh_token?: string;
10365
+ /** @description Opaque token returned with a `403 mfa_required` response. Present it here with `grant_type=http://auth0.com/oauth/grant-type/mfa-otp` (or `…/mfa-recovery-code`) and the code, to finish a grant a second-factor policy interrupted. */
10366
+ mfa_token?: string;
10367
+ /** @description One of the user's one-time recovery codes, for `grant_type=http://auth0.com/oauth/grant-type/mfa-recovery-code`. */
10368
+ recovery_code?: string;
9276
10369
  subject_token?: string;
9277
10370
  subject_token_type?: string;
9278
10371
  /** @description The device code returned by the authorization server. */