@epilot/sdk 2.10.0 → 2.10.2

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.
Files changed (194) hide show
  1. package/definitions/ai-agents-runtime.json +1 -1
  2. package/definitions/ai-agents.json +971 -98
  3. package/definitions/customer-portal-runtime.json +1 -1
  4. package/definitions/customer-portal.json +1238 -124
  5. package/definitions/file-runtime.json +1 -1
  6. package/definitions/file.json +291 -15
  7. package/definitions/targeting-runtime.json +1 -1
  8. package/definitions/targeting.json +7 -2
  9. package/definitions/workflow-runtime.json +1 -1
  10. package/definitions/workflow.json +445 -60
  11. package/dist/ai-agents-D6C5TXLD.cjs +7 -0
  12. package/dist/ai-agents-Y6PH53PH.js +7 -0
  13. package/dist/{ai-agents-runtime-25YRUJHI.js → ai-agents-runtime-EA23HCCP.js} +1 -1
  14. package/dist/{ai-agents-runtime-TILIO3UM.cjs → ai-agents-runtime-WZ3EI3NH.cjs} +2 -2
  15. package/dist/{ai-agents.d-CC5IjXrs.d.cts → ai-agents.d-D-7bTH-9.d.cts} +506 -5
  16. package/dist/{ai-agents.d-CC5IjXrs.d.ts → ai-agents.d-D-7bTH-9.d.ts} +506 -5
  17. package/dist/apis/access-token.cjs +6 -6
  18. package/dist/apis/access-token.js +1 -1
  19. package/dist/apis/address-suggestions.cjs +6 -6
  20. package/dist/apis/address-suggestions.js +1 -1
  21. package/dist/apis/address.cjs +6 -6
  22. package/dist/apis/address.js +1 -1
  23. package/dist/apis/ai-agents.cjs +8 -8
  24. package/dist/apis/ai-agents.d.cts +2 -2
  25. package/dist/apis/ai-agents.d.ts +2 -2
  26. package/dist/apis/ai-agents.js +2 -2
  27. package/dist/apis/app.cjs +6 -6
  28. package/dist/apis/app.js +1 -1
  29. package/dist/apis/audit-logs.cjs +6 -6
  30. package/dist/apis/audit-logs.js +1 -1
  31. package/dist/apis/automation.cjs +6 -6
  32. package/dist/apis/automation.js +1 -1
  33. package/dist/apis/billing.cjs +6 -6
  34. package/dist/apis/billing.js +1 -1
  35. package/dist/apis/blueprint-manifest.cjs +6 -6
  36. package/dist/apis/blueprint-manifest.js +1 -1
  37. package/dist/apis/calendar.cjs +6 -6
  38. package/dist/apis/calendar.js +1 -1
  39. package/dist/apis/configuration-hub.cjs +6 -6
  40. package/dist/apis/configuration-hub.js +1 -1
  41. package/dist/apis/consent.cjs +6 -6
  42. package/dist/apis/consent.js +1 -1
  43. package/dist/apis/customer-portal.cjs +8 -8
  44. package/dist/apis/customer-portal.d.cts +2 -2
  45. package/dist/apis/customer-portal.d.ts +2 -2
  46. package/dist/apis/customer-portal.js +2 -2
  47. package/dist/apis/dashboard.cjs +6 -6
  48. package/dist/apis/dashboard.js +1 -1
  49. package/dist/apis/data-governance.cjs +6 -6
  50. package/dist/apis/data-governance.js +1 -1
  51. package/dist/apis/deduplication.cjs +6 -6
  52. package/dist/apis/deduplication.js +1 -1
  53. package/dist/apis/design.cjs +6 -6
  54. package/dist/apis/design.js +1 -1
  55. package/dist/apis/document.cjs +6 -6
  56. package/dist/apis/document.js +1 -1
  57. package/dist/apis/email-settings.cjs +6 -6
  58. package/dist/apis/email-settings.js +1 -1
  59. package/dist/apis/email-template.cjs +6 -6
  60. package/dist/apis/email-template.js +1 -1
  61. package/dist/apis/entity-mapping.cjs +6 -6
  62. package/dist/apis/entity-mapping.js +1 -1
  63. package/dist/apis/entity.cjs +6 -6
  64. package/dist/apis/entity.js +1 -1
  65. package/dist/apis/environments.cjs +6 -6
  66. package/dist/apis/environments.js +1 -1
  67. package/dist/apis/event-catalog.cjs +6 -6
  68. package/dist/apis/event-catalog.js +1 -1
  69. package/dist/apis/file.cjs +8 -8
  70. package/dist/apis/file.d.cts +2 -2
  71. package/dist/apis/file.d.ts +2 -2
  72. package/dist/apis/file.js +2 -2
  73. package/dist/apis/iban.cjs +6 -6
  74. package/dist/apis/iban.js +1 -1
  75. package/dist/apis/integration-toolkit.cjs +6 -6
  76. package/dist/apis/integration-toolkit.js +1 -1
  77. package/dist/apis/journey.cjs +6 -6
  78. package/dist/apis/journey.js +1 -1
  79. package/dist/apis/kanban.cjs +6 -6
  80. package/dist/apis/kanban.js +1 -1
  81. package/dist/apis/message.cjs +6 -6
  82. package/dist/apis/message.js +1 -1
  83. package/dist/apis/metering.cjs +6 -6
  84. package/dist/apis/metering.js +1 -1
  85. package/dist/apis/notes.cjs +6 -6
  86. package/dist/apis/notes.js +1 -1
  87. package/dist/apis/notification.cjs +6 -6
  88. package/dist/apis/notification.js +1 -1
  89. package/dist/apis/organization.cjs +6 -6
  90. package/dist/apis/organization.js +1 -1
  91. package/dist/apis/partner-directory.cjs +6 -6
  92. package/dist/apis/partner-directory.js +1 -1
  93. package/dist/apis/permissions.cjs +6 -6
  94. package/dist/apis/permissions.js +1 -1
  95. package/dist/apis/pricing-tier.cjs +6 -6
  96. package/dist/apis/pricing-tier.js +1 -1
  97. package/dist/apis/pricing.cjs +6 -6
  98. package/dist/apis/pricing.js +1 -1
  99. package/dist/apis/purpose.cjs +6 -6
  100. package/dist/apis/purpose.js +1 -1
  101. package/dist/apis/query.cjs +6 -6
  102. package/dist/apis/query.js +1 -1
  103. package/dist/apis/sandbox.cjs +6 -6
  104. package/dist/apis/sandbox.js +1 -1
  105. package/dist/apis/sharing.cjs +6 -6
  106. package/dist/apis/sharing.js +1 -1
  107. package/dist/apis/snapshot.cjs +6 -6
  108. package/dist/apis/snapshot.js +1 -1
  109. package/dist/apis/submission.cjs +6 -6
  110. package/dist/apis/submission.js +1 -1
  111. package/dist/apis/target.cjs +6 -6
  112. package/dist/apis/target.js +1 -1
  113. package/dist/apis/targeting.cjs +8 -8
  114. package/dist/apis/targeting.d.cts +2 -2
  115. package/dist/apis/targeting.d.ts +2 -2
  116. package/dist/apis/targeting.js +2 -2
  117. package/dist/apis/template-variables.cjs +6 -6
  118. package/dist/apis/template-variables.js +1 -1
  119. package/dist/apis/user.cjs +6 -6
  120. package/dist/apis/user.js +1 -1
  121. package/dist/apis/validation-rules.cjs +6 -6
  122. package/dist/apis/validation-rules.js +1 -1
  123. package/dist/apis/webhooks.cjs +6 -6
  124. package/dist/apis/webhooks.js +1 -1
  125. package/dist/apis/workflow-definition.cjs +6 -6
  126. package/dist/apis/workflow-definition.js +1 -1
  127. package/dist/apis/workflow.cjs +8 -8
  128. package/dist/apis/workflow.d.cts +2 -2
  129. package/dist/apis/workflow.d.ts +2 -2
  130. package/dist/apis/workflow.js +2 -2
  131. package/dist/{chunk-KQKBSWGI.js → chunk-522LYPPW.js} +1 -1
  132. package/dist/{chunk-MCK2QUSD.cjs → chunk-7ILTRJDQ.cjs} +1 -1
  133. package/dist/chunk-BRWY3QHG.js +14 -0
  134. package/dist/chunk-G5KVG3RU.js +14 -0
  135. package/dist/{chunk-LSPXLT3A.js → chunk-H3NMCCSA.js} +1 -1
  136. package/dist/chunk-JBPITLKN.cjs +14 -0
  137. package/dist/chunk-LNLUCLPL.cjs +14 -0
  138. package/dist/chunk-LSMVZMBY.js +14 -0
  139. package/dist/{chunk-XH5F3S6Y.js → chunk-O6DUKVXV.js} +10 -10
  140. package/dist/{chunk-QNZPOA54.cjs → chunk-PM25LLET.cjs} +1 -1
  141. package/dist/{chunk-OJGUX5TG.cjs → chunk-WK3YGGRO.cjs} +10 -10
  142. package/dist/chunk-YEBEA6XU.cjs +14 -0
  143. package/dist/customer-portal-MY3GZVUL.cjs +7 -0
  144. package/dist/customer-portal-YSODD3RC.js +7 -0
  145. package/dist/{customer-portal-runtime-TDHV2YVY.js → customer-portal-runtime-C6ZIKX2V.js} +1 -1
  146. package/dist/{customer-portal-runtime-HA6CPWB4.cjs → customer-portal-runtime-M7O3RDJ5.cjs} +2 -2
  147. package/dist/{customer-portal.d-BRwiQehb.d.cts → customer-portal.d-Bx5_n5UL.d.cts} +827 -8
  148. package/dist/{customer-portal.d-BRwiQehb.d.ts → customer-portal.d-Bx5_n5UL.d.ts} +827 -8
  149. package/dist/file-7CQXDQ3I.cjs +7 -0
  150. package/dist/file-O6ZD3HOU.js +7 -0
  151. package/dist/file-runtime-HYLQTQBX.cjs +5 -0
  152. package/dist/{file-runtime-DKGFS44O.js → file-runtime-VY6DJAQ3.js} +1 -1
  153. package/dist/{file.d-BjlMgTwj.d.cts → file.d-BN417xok.d.cts} +416 -23
  154. package/dist/{file.d-BjlMgTwj.d.ts → file.d-BN417xok.d.ts} +416 -23
  155. package/dist/index.cjs +18 -18
  156. package/dist/index.d.cts +5 -5
  157. package/dist/index.d.ts +5 -5
  158. package/dist/index.js +6 -6
  159. package/dist/js-yaml-DLCVPJ7G.js +0 -0
  160. package/dist/{targeting-WC62BBZN.cjs → targeting-4YMBBPDW.cjs} +1 -1
  161. package/dist/{targeting-X4Y2ODBT.js → targeting-VCENULF6.js} +1 -1
  162. package/dist/{targeting-runtime-D5YUPZQM.js → targeting-runtime-QI7322HB.js} +1 -1
  163. package/dist/{targeting-runtime-MLMOM7CK.cjs → targeting-runtime-X3DQ527N.cjs} +2 -2
  164. package/dist/{targeting.d-0rNF7ErD.d.cts → targeting.d-Bq3onSes.d.cts} +1 -1
  165. package/dist/{targeting.d-0rNF7ErD.d.ts → targeting.d-Bq3onSes.d.ts} +1 -1
  166. package/dist/workflow-7OU2YEEI.cjs +7 -0
  167. package/dist/workflow-IVKCWS44.js +7 -0
  168. package/dist/{workflow-runtime-DNTQDYPQ.js → workflow-runtime-L5HMFISV.js} +1 -1
  169. package/dist/{workflow-runtime-VKFESVFX.cjs → workflow-runtime-LMGACZP4.cjs} +2 -2
  170. package/dist/{workflow.d-CMSKt8oN.d.cts → workflow.d-eFv0ecBi.d.cts} +745 -81
  171. package/dist/{workflow.d-CMSKt8oN.d.ts → workflow.d-eFv0ecBi.d.ts} +745 -81
  172. package/docs/ai-agents.md +641 -23
  173. package/docs/customer-portal.md +700 -31
  174. package/docs/file.md +165 -25
  175. package/docs/targeting.md +1 -1
  176. package/docs/workflow.md +247 -47
  177. package/package.json +11 -12
  178. package/definitions/focus-pocus-runtime.json +0 -1
  179. package/definitions/focus-pocus.json +0 -757
  180. package/dist/ai-agents-IZWFEUSH.js +0 -7
  181. package/dist/ai-agents-PWHKNRCX.cjs +0 -7
  182. package/dist/chunk-4M5V6BIT.cjs +0 -14
  183. package/dist/chunk-5ZXGKLB6.cjs +0 -14
  184. package/dist/chunk-774ASAAH.js +0 -14
  185. package/dist/chunk-FARDEGPH.cjs +0 -14
  186. package/dist/chunk-JENQHXFI.js +0 -14
  187. package/dist/chunk-RDVFQOCQ.js +0 -14
  188. package/dist/customer-portal-4DXHY42V.js +0 -7
  189. package/dist/customer-portal-5OSGSYGF.cjs +0 -7
  190. package/dist/file-2MSILSPP.cjs +0 -7
  191. package/dist/file-JVFTT5RZ.js +0 -7
  192. package/dist/file-runtime-7AWKNQU6.cjs +0 -5
  193. package/dist/workflow-3WBD74WR.js +0 -7
  194. package/dist/workflow-WIUZ5TOX.cjs +0 -7
@@ -37,6 +37,8 @@ const { data } = await customerPortalClient.upsertPortal(...)
37
37
  - [`getAllPortalConfigs`](#getallportalconfigs)
38
38
  - [`upsertEmailTemplates`](#upsertemailtemplates)
39
39
  - [`getEmailTemplates`](#getemailtemplates)
40
+ - [`migrateEmailTemplateReferences`](#migrateemailtemplatereferences)
41
+ - [`listEmailTemplateReferences`](#listemailtemplatereferences)
40
42
  - [`upsertEmailTemplatesByPortalId`](#upsertemailtemplatesbyportalid)
41
43
  - [`getEmailTemplatesByPortalId`](#getemailtemplatesbyportalid)
42
44
  - [`getPortalWidgetsV3`](#getportalwidgetsv3)
@@ -74,6 +76,8 @@ const { data } = await customerPortalClient.upsertPortal(...)
74
76
  - [`swapPortalConfig`](#swapportalconfig)
75
77
  - [`clonePortalConfig`](#cloneportalconfig)
76
78
  - [`verifyDns`](#verifydns)
79
+ - [`getMobileConfig`](#getmobileconfig)
80
+ - [`putMobileConfig`](#putmobileconfig)
77
81
 
78
82
  **Public**
79
83
  - [`createUserV3`](#createuserv3)
@@ -116,6 +120,7 @@ const { data } = await customerPortalClient.upsertPortal(...)
116
120
  - [`updatePortalUser`](#updateportaluser)
117
121
  - [`deletePortalUser`](#deleteportaluser)
118
122
  - [`updatePortalUserEmail`](#updateportaluseremail)
123
+ - [`changePortalUserPassword`](#changeportaluserpassword)
119
124
  - [`postOrderAcceptance`](#postorderacceptance)
120
125
  - [`addContractByIdentifiers`](#addcontractbyidentifiers)
121
126
  - [`validateCadenceEntityEditRules`](#validatecadenceentityeditrules)
@@ -165,6 +170,10 @@ const { data } = await customerPortalClient.upsertPortal(...)
165
170
  - [`ssoLoginV3`](#ssologinv3)
166
171
 
167
172
  **Schemas**
173
+ - [`MobileBuildStatus`](#mobilebuildstatus)
174
+ - [`MobileBranding`](#mobilebranding)
175
+ - [`MobileConfig`](#mobileconfig)
176
+ - [`MobileConfigUpdate`](#mobileconfigupdate)
168
177
  - [`ContextEntity`](#contextentity)
169
178
  - [`ContextEntities`](#contextentities)
170
179
  - [`ErrorResp`](#errorresp)
@@ -257,6 +266,10 @@ const { data } = await customerPortalClient.upsertPortal(...)
257
266
  - [`ExtensionConfig`](#extensionconfig)
258
267
  - [`ExtensionHookSelection`](#extensionhookselection)
259
268
  - [`PublicExtensionCapabilities`](#publicextensioncapabilities)
269
+ - [`PublicSelfManagementExplanation`](#publicselfmanagementexplanation)
270
+ - [`PublicChangeEmailDetails`](#publicchangeemaildetails)
271
+ - [`PublicChangePasswordDetails`](#publicchangepassworddetails)
272
+ - [`PublicDeleteAccountDetails`](#publicdeleteaccountdetails)
260
273
  - [`DataRetrievalItem`](#dataretrievalitem)
261
274
  - [`PublicAppDetails`](#publicappdetails)
262
275
  - [`PublicExtensionDetails`](#publicextensiondetails)
@@ -277,6 +290,9 @@ const { data } = await customerPortalClient.upsertPortal(...)
277
290
  - [`ExtensionHookDataExport`](#extensionhookdataexport)
278
291
  - [`ExtensionHookVisualizationMetadata`](#extensionhookvisualizationmetadata)
279
292
  - [`ExtensionHookCostDataRetrieval`](#extensionhookcostdataretrieval)
293
+ - [`ExtensionHookChangeEmail`](#extensionhookchangeemail)
294
+ - [`ExtensionHookChangePassword`](#extensionhookchangepassword)
295
+ - [`ExtensionHookDeleteAccount`](#extensionhookdeleteaccount)
280
296
  - [`SecureProxyConfig`](#secureproxyconfig)
281
297
  - [`ExtensionAuthBlock`](#extensionauthblock)
282
298
  - [`Direction`](#direction)
@@ -358,7 +374,8 @@ const { data } = await client.upsertPortal(
358
374
  attribute_mappings: { /* ... */ },
359
375
  entity_matching: { /* ... */ },
360
376
  oidc_config: { /* ... */ },
361
- mobile_oidc_config: { /* ... */ }
377
+ mobile_oidc_config: { /* ... */ },
378
+ expose_client_secret: false
362
379
  }
363
380
  ],
364
381
  enabled: true,
@@ -394,7 +411,8 @@ const { data } = await client.upsertPortal(
394
411
  },
395
412
  entry_point: 'PASSWORD',
396
413
  preferred_sso_providers: ['office-365-login'],
397
- auto_redirect_to_sso: true
414
+ auto_redirect_to_sso: true,
415
+ prevent_user_enumeration: true
398
416
  },
399
417
  cognito_details: {
400
418
  cognito_user_pool_client_id: '6bsd0jkgoie74k2i8mrhc1vest',
@@ -583,7 +601,8 @@ const { data } = await client.upsertPortal(
583
601
  },
584
602
  "entry_point": "PASSWORD",
585
603
  "preferred_sso_providers": ["office-365-login"],
586
- "auto_redirect_to_sso": true
604
+ "auto_redirect_to_sso": true,
605
+ "prevent_user_enumeration": true
587
606
  },
588
607
  "cognito_details": {
589
608
  "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
@@ -909,7 +928,8 @@ const { data } = await client.getPortalConfigByDomain({
909
928
  },
910
929
  "entry_point": "PASSWORD",
911
930
  "preferred_sso_providers": ["office-365-login"],
912
- "auto_redirect_to_sso": true
931
+ "auto_redirect_to_sso": true,
932
+ "prevent_user_enumeration": true
913
933
  },
914
934
  "cognito_details": {
915
935
  "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
@@ -1138,7 +1158,8 @@ const { data } = await client.getPortalConfig({
1138
1158
  },
1139
1159
  "entry_point": "PASSWORD",
1140
1160
  "preferred_sso_providers": ["office-365-login"],
1141
- "auto_redirect_to_sso": true
1161
+ "auto_redirect_to_sso": true,
1162
+ "prevent_user_enumeration": true
1142
1163
  },
1143
1164
  "cognito_details": {
1144
1165
  "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
@@ -1509,6 +1530,50 @@ const { data } = await client.getPublicPortalExtensionDetails({
1509
1530
  "hook": {
1510
1531
  "plausibility_mode": "check"
1511
1532
  }
1533
+ },
1534
+ "changeEmail": {
1535
+ "app": {
1536
+ "app_id": "string",
1537
+ "name": {}
1538
+ },
1539
+ "extension": {
1540
+ "id": "string",
1541
+ "name": {}
1542
+ },
1543
+ "hook": {
1544
+ "id": "string",
1545
+ "require_password_confirmation": true,
1546
+ "explanation": {}
1547
+ }
1548
+ },
1549
+ "changePassword": {
1550
+ "app": {
1551
+ "app_id": "string",
1552
+ "name": {}
1553
+ },
1554
+ "extension": {
1555
+ "id": "string",
1556
+ "name": {}
1557
+ },
1558
+ "hook": {
1559
+ "id": "string",
1560
+ "require_new_password": false,
1561
+ "explanation": {}
1562
+ }
1563
+ },
1564
+ "deleteAccount": {
1565
+ "app": {
1566
+ "app_id": "string",
1567
+ "name": {}
1568
+ },
1569
+ "extension": {
1570
+ "id": "string",
1571
+ "name": {}
1572
+ },
1573
+ "hook": {
1574
+ "id": "string",
1575
+ "explanation": {}
1576
+ }
1512
1577
  }
1513
1578
  }
1514
1579
  ```
@@ -1699,6 +1764,50 @@ const { data } = await client.getPublicPortalExtensionDetailsV3({
1699
1764
  "hook": {
1700
1765
  "plausibility_mode": "check"
1701
1766
  }
1767
+ },
1768
+ "changeEmail": {
1769
+ "app": {
1770
+ "app_id": "string",
1771
+ "name": {}
1772
+ },
1773
+ "extension": {
1774
+ "id": "string",
1775
+ "name": {}
1776
+ },
1777
+ "hook": {
1778
+ "id": "string",
1779
+ "require_password_confirmation": true,
1780
+ "explanation": {}
1781
+ }
1782
+ },
1783
+ "changePassword": {
1784
+ "app": {
1785
+ "app_id": "string",
1786
+ "name": {}
1787
+ },
1788
+ "extension": {
1789
+ "id": "string",
1790
+ "name": {}
1791
+ },
1792
+ "hook": {
1793
+ "id": "string",
1794
+ "require_new_password": false,
1795
+ "explanation": {}
1796
+ }
1797
+ },
1798
+ "deleteAccount": {
1799
+ "app": {
1800
+ "app_id": "string",
1801
+ "name": {}
1802
+ },
1803
+ "extension": {
1804
+ "id": "string",
1805
+ "name": {}
1806
+ },
1807
+ "hook": {
1808
+ "id": "string",
1809
+ "explanation": {}
1810
+ }
1702
1811
  }
1703
1812
  }
1704
1813
  ```
@@ -2088,7 +2197,8 @@ const { data } = await client.getPublicPortalConfig({
2088
2197
  },
2089
2198
  "entry_point": "PASSWORD",
2090
2199
  "preferred_sso_providers": ["office-365-login"],
2091
- "auto_redirect_to_sso": true
2200
+ "auto_redirect_to_sso": true,
2201
+ "prevent_user_enumeration": true
2092
2202
  },
2093
2203
  "cognito_details": {
2094
2204
  "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
@@ -2317,7 +2427,8 @@ const { data } = await client.getOrgPortalConfig({
2317
2427
  },
2318
2428
  "entry_point": "PASSWORD",
2319
2429
  "preferred_sso_providers": ["office-365-login"],
2320
- "auto_redirect_to_sso": true
2430
+ "auto_redirect_to_sso": true,
2431
+ "prevent_user_enumeration": true
2321
2432
  },
2322
2433
  "cognito_details": {
2323
2434
  "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
@@ -2489,7 +2600,8 @@ const { data } = await client.getOrgPortalConfig({
2489
2600
  "mobile_oidc_config": {},
2490
2601
  "provider_type": "OIDC",
2491
2602
  "attribute_mappings": {},
2492
- "entity_matching": {}
2603
+ "entity_matching": {},
2604
+ "expose_client_secret": false
2493
2605
  }
2494
2606
  ],
2495
2607
  "certificate_details": {
@@ -2554,7 +2666,8 @@ const { data } = await client.getPublicPortalConfigV3({
2554
2666
  },
2555
2667
  "entry_point": "PASSWORD",
2556
2668
  "preferred_sso_providers": ["office-365-login"],
2557
- "auto_redirect_to_sso": true
2669
+ "auto_redirect_to_sso": true,
2670
+ "prevent_user_enumeration": true
2558
2671
  },
2559
2672
  "cognito_details": {
2560
2673
  "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
@@ -2783,7 +2896,8 @@ const { data } = await client.getOrgPortalConfigV3({
2783
2896
  },
2784
2897
  "entry_point": "PASSWORD",
2785
2898
  "preferred_sso_providers": ["office-365-login"],
2786
- "auto_redirect_to_sso": true
2899
+ "auto_redirect_to_sso": true,
2900
+ "prevent_user_enumeration": true
2787
2901
  },
2788
2902
  "cognito_details": {
2789
2903
  "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
@@ -2955,7 +3069,8 @@ const { data } = await client.getOrgPortalConfigV3({
2955
3069
  "mobile_oidc_config": {},
2956
3070
  "provider_type": "OIDC",
2957
3071
  "attribute_mappings": {},
2958
- "entity_matching": {}
3072
+ "entity_matching": {},
3073
+ "expose_client_secret": false
2959
3074
  }
2960
3075
  ],
2961
3076
  "certificate_details": {
@@ -3143,6 +3258,74 @@ const { data } = await client.getEmailTemplates({
3143
3258
 
3144
3259
  ---
3145
3260
 
3261
+ ### `migrateEmailTemplateReferences`
3262
+
3263
+ Walk every email-template config row in the caller's org and re-point any
3264
+ field on `email_templates` that currently references `source_template_id`
3265
+ at `destination_template_id`. Intended to be called
3266
+
3267
+ `POST /v3/portal/email-templates:migrate-references`
3268
+
3269
+ ```ts
3270
+ const { data } = await client.migrateEmailTemplateReferences(
3271
+ null,
3272
+ {
3273
+ source_template_id: 'string',
3274
+ destination_template_id: 'string'
3275
+ },
3276
+ )
3277
+ ```
3278
+
3279
+ <details>
3280
+ <summary>Response</summary>
3281
+
3282
+ ```json
3283
+ {
3284
+ "migrated_portal_count": 2,
3285
+ "migrated_portal_ids": ["string"],
3286
+ "failed_portal_ids": ["string"]
3287
+ }
3288
+ ```
3289
+
3290
+ </details>
3291
+
3292
+ ---
3293
+
3294
+ ### `listEmailTemplateReferences`
3295
+
3296
+ Read-only sibling of migrateEmailTemplateReferences. Lists every portal in
3297
+ the caller's org whose `email_templates` config references `template_id`,
3298
+ without rewriting anything. Used by the email-templ
3299
+
3300
+ `POST /v3/portal/email-templates:list-references`
3301
+
3302
+ ```ts
3303
+ const { data } = await client.listEmailTemplateReferences(
3304
+ null,
3305
+ {
3306
+ template_id: 'string'
3307
+ },
3308
+ )
3309
+ ```
3310
+
3311
+ <details>
3312
+ <summary>Response</summary>
3313
+
3314
+ ```json
3315
+ {
3316
+ "portals": [
3317
+ {
3318
+ "id": "string",
3319
+ "name": "string"
3320
+ }
3321
+ ]
3322
+ }
3323
+ ```
3324
+
3325
+ </details>
3326
+
3327
+ ---
3328
+
3146
3329
  ### `upsertEmailTemplatesByPortalId`
3147
3330
 
3148
3331
  Upserts the email templates of a portal by portal ID
@@ -4285,6 +4468,35 @@ const { data } = await client.updatePortalUserEmail(
4285
4468
 
4286
4469
  ---
4287
4470
 
4471
+ ### `changePortalUserPassword`
4472
+
4473
+ Hand over a password change to the third-party system configured via the `changePassword` portal extension hook.
4474
+ Only available when such a hook is configured for the portal; the built-in password cha
4475
+
4476
+ `PUT /v2/portal/user/change/password`
4477
+
4478
+ ```ts
4479
+ const { data } = await client.changePortalUserPassword(
4480
+ null,
4481
+ {
4482
+ new_password: 'string'
4483
+ },
4484
+ )
4485
+ ```
4486
+
4487
+ <details>
4488
+ <summary>Response</summary>
4489
+
4490
+ ```json
4491
+ {
4492
+ "message": "string"
4493
+ }
4494
+ ```
4495
+
4496
+ </details>
4497
+
4498
+ ---
4499
+
4288
4500
  ### `resendConfirmationEmail`
4289
4501
 
4290
4502
  Resend confirmation email
@@ -7012,7 +7224,8 @@ const { data } = await client.createPortalConfig(
7012
7224
  attribute_mappings: { /* ... */ },
7013
7225
  entity_matching: { /* ... */ },
7014
7226
  oidc_config: { /* ... */ },
7015
- mobile_oidc_config: { /* ... */ }
7227
+ mobile_oidc_config: { /* ... */ },
7228
+ expose_client_secret: false
7016
7229
  }
7017
7230
  ],
7018
7231
  enabled: true,
@@ -7048,7 +7261,8 @@ const { data } = await client.createPortalConfig(
7048
7261
  },
7049
7262
  entry_point: 'PASSWORD',
7050
7263
  preferred_sso_providers: ['office-365-login'],
7051
- auto_redirect_to_sso: true
7264
+ auto_redirect_to_sso: true,
7265
+ prevent_user_enumeration: true
7052
7266
  },
7053
7267
  cognito_details: {
7054
7268
  cognito_user_pool_client_id: '6bsd0jkgoie74k2i8mrhc1vest',
@@ -7251,7 +7465,8 @@ const { data } = await client.createPortalConfig(
7251
7465
  "attribute_mappings": {},
7252
7466
  "entity_matching": {},
7253
7467
  "oidc_config": {},
7254
- "mobile_oidc_config": {}
7468
+ "mobile_oidc_config": {},
7469
+ "expose_client_secret": false
7255
7470
  }
7256
7471
  ],
7257
7472
  "enabled": true,
@@ -7287,7 +7502,8 @@ const { data } = await client.createPortalConfig(
7287
7502
  },
7288
7503
  "entry_point": "PASSWORD",
7289
7504
  "preferred_sso_providers": ["office-365-login"],
7290
- "auto_redirect_to_sso": true
7505
+ "auto_redirect_to_sso": true,
7506
+ "prevent_user_enumeration": true
7291
7507
  },
7292
7508
  "cognito_details": {
7293
7509
  "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
@@ -7525,7 +7741,8 @@ const { data } = await client.getPortalConfigV3({
7525
7741
  "attribute_mappings": {},
7526
7742
  "entity_matching": {},
7527
7743
  "oidc_config": {},
7528
- "mobile_oidc_config": {}
7744
+ "mobile_oidc_config": {},
7745
+ "expose_client_secret": false
7529
7746
  }
7530
7747
  ],
7531
7748
  "enabled": true,
@@ -7561,7 +7778,8 @@ const { data } = await client.getPortalConfigV3({
7561
7778
  },
7562
7779
  "entry_point": "PASSWORD",
7563
7780
  "preferred_sso_providers": ["office-365-login"],
7564
- "auto_redirect_to_sso": true
7781
+ "auto_redirect_to_sso": true,
7782
+ "prevent_user_enumeration": true
7565
7783
  },
7566
7784
  "cognito_details": {
7567
7785
  "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
@@ -7764,6 +7982,7 @@ Updates a specific portal configuration by ID.
7764
7982
  const { data } = await client.putPortalConfig(
7765
7983
  {
7766
7984
  portal_id: 'example',
7985
+ page_upsert_mode: 'example',
7767
7986
  },
7768
7987
  {
7769
7988
  entity_actions: [
@@ -7794,7 +8013,8 @@ const { data } = await client.putPortalConfig(
7794
8013
  attribute_mappings: { /* ... */ },
7795
8014
  entity_matching: { /* ... */ },
7796
8015
  oidc_config: { /* ... */ },
7797
- mobile_oidc_config: { /* ... */ }
8016
+ mobile_oidc_config: { /* ... */ },
8017
+ expose_client_secret: false
7798
8018
  }
7799
8019
  ],
7800
8020
  enabled: true,
@@ -7830,7 +8050,8 @@ const { data } = await client.putPortalConfig(
7830
8050
  },
7831
8051
  entry_point: 'PASSWORD',
7832
8052
  preferred_sso_providers: ['office-365-login'],
7833
- auto_redirect_to_sso: true
8053
+ auto_redirect_to_sso: true,
8054
+ prevent_user_enumeration: true
7834
8055
  },
7835
8056
  cognito_details: {
7836
8057
  cognito_user_pool_client_id: '6bsd0jkgoie74k2i8mrhc1vest',
@@ -8054,7 +8275,8 @@ const { data } = await client.putPortalConfig(
8054
8275
  "attribute_mappings": {},
8055
8276
  "entity_matching": {},
8056
8277
  "oidc_config": {},
8057
- "mobile_oidc_config": {}
8278
+ "mobile_oidc_config": {},
8279
+ "expose_client_secret": false
8058
8280
  }
8059
8281
  ],
8060
8282
  "enabled": true,
@@ -8090,7 +8312,8 @@ const { data } = await client.putPortalConfig(
8090
8312
  },
8091
8313
  "entry_point": "PASSWORD",
8092
8314
  "preferred_sso_providers": ["office-365-login"],
8093
- "auto_redirect_to_sso": true
8315
+ "auto_redirect_to_sso": true,
8316
+ "prevent_user_enumeration": true
8094
8317
  },
8095
8318
  "cognito_details": {
8096
8319
  "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
@@ -8453,7 +8676,8 @@ const { data } = await client.clonePortalConfig(
8453
8676
  "attribute_mappings": {},
8454
8677
  "entity_matching": {},
8455
8678
  "oidc_config": {},
8456
- "mobile_oidc_config": {}
8679
+ "mobile_oidc_config": {},
8680
+ "expose_client_secret": false
8457
8681
  }
8458
8682
  ],
8459
8683
  "enabled": true,
@@ -8489,7 +8713,8 @@ const { data } = await client.clonePortalConfig(
8489
8713
  },
8490
8714
  "entry_point": "PASSWORD",
8491
8715
  "preferred_sso_providers": ["office-365-login"],
8492
- "auto_redirect_to_sso": true
8716
+ "auto_redirect_to_sso": true,
8717
+ "prevent_user_enumeration": true
8493
8718
  },
8494
8719
  "cognito_details": {
8495
8720
  "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
@@ -8905,8 +9130,273 @@ const { data } = await client.portalProxyExecute(
8905
9130
 
8906
9131
  ---
8907
9132
 
9133
+ ### `getMobileConfig`
9134
+
9135
+ Returns the portal's mobile app configuration. By default the response is build-ready (resolved): base info (display_name from the portal name, app_host from the domain, environment) and branding (log
9136
+
9137
+ `GET /v1/portal/mobile-config`
9138
+
9139
+ ```ts
9140
+ const { data } = await client.getMobileConfig({
9141
+ portal_id: 'example',
9142
+ raw: true,
9143
+ })
9144
+ ```
9145
+
9146
+ <details>
9147
+ <summary>Response</summary>
9148
+
9149
+ ```json
9150
+ {
9151
+ "portal_id": "string",
9152
+ "enabled": true,
9153
+ "display_name": "string",
9154
+ "app_host": "string",
9155
+ "environment": "prod",
9156
+ "branding": {
9157
+ "app_icon": "string",
9158
+ "splash": "string",
9159
+ "splash_dark": "string",
9160
+ "icon_background_color": "string",
9161
+ "splash_background_color": "string",
9162
+ "splash_background_color_dark": "string"
9163
+ },
9164
+ "ios": {
9165
+ "bundle_id": "string",
9166
+ "team_id": "string",
9167
+ "credentials_status": "not_configured",
9168
+ "app_store_id": "string",
9169
+ "store_url": "string",
9170
+ "last_build": {
9171
+ "version": "string",
9172
+ "build_number": 0,
9173
+ "track": "string",
9174
+ "status": "building",
9175
+ "updated_at": "1970-01-01T00:00:00.000Z",
9176
+ "error": "string"
9177
+ }
9178
+ },
9179
+ "android": {
9180
+ "package_name": "string",
9181
+ "credentials_status": "not_configured",
9182
+ "upload_key_status": "not_configured",
9183
+ "store_url": "string",
9184
+ "last_build": {
9185
+ "version": "string",
9186
+ "build_number": 0,
9187
+ "track": "string",
9188
+ "status": "building",
9189
+ "updated_at": "1970-01-01T00:00:00.000Z",
9190
+ "error": "string"
9191
+ }
9192
+ }
9193
+ }
9194
+ ```
9195
+
9196
+ </details>
9197
+
9198
+ ---
9199
+
9200
+ ### `putMobileConfig`
9201
+
9202
+ Merges the provided fields into the portal's mobile app configuration
9203
+ (deep merge). Only mobile_config is modified; all other portal settings
9204
+ are left untouched.
9205
+
9206
+ `PUT /v1/portal/mobile-config`
9207
+
9208
+ ```ts
9209
+ const { data } = await client.putMobileConfig(
9210
+ {
9211
+ portal_id: 'example',
9212
+ },
9213
+ {
9214
+ enabled: true,
9215
+ ios: {
9216
+ bundle_id: 'string',
9217
+ team_id: 'string',
9218
+ store_url: 'string',
9219
+ app_store_id: 'string'
9220
+ },
9221
+ android: {
9222
+ package_name: 'string',
9223
+ store_url: 'string'
9224
+ },
9225
+ branding: {
9226
+ app_icon: 'string',
9227
+ splash: 'string',
9228
+ splash_dark: 'string',
9229
+ icon_background_color: 'string',
9230
+ splash_background_color: 'string',
9231
+ splash_background_color_dark: 'string'
9232
+ }
9233
+ },
9234
+ )
9235
+ ```
9236
+
9237
+ <details>
9238
+ <summary>Response</summary>
9239
+
9240
+ ```json
9241
+ {
9242
+ "portal_id": "string",
9243
+ "enabled": true,
9244
+ "display_name": "string",
9245
+ "app_host": "string",
9246
+ "environment": "prod",
9247
+ "branding": {
9248
+ "app_icon": "string",
9249
+ "splash": "string",
9250
+ "splash_dark": "string",
9251
+ "icon_background_color": "string",
9252
+ "splash_background_color": "string",
9253
+ "splash_background_color_dark": "string"
9254
+ },
9255
+ "ios": {
9256
+ "bundle_id": "string",
9257
+ "team_id": "string",
9258
+ "credentials_status": "not_configured",
9259
+ "app_store_id": "string",
9260
+ "store_url": "string",
9261
+ "last_build": {
9262
+ "version": "string",
9263
+ "build_number": 0,
9264
+ "track": "string",
9265
+ "status": "building",
9266
+ "updated_at": "1970-01-01T00:00:00.000Z",
9267
+ "error": "string"
9268
+ }
9269
+ },
9270
+ "android": {
9271
+ "package_name": "string",
9272
+ "credentials_status": "not_configured",
9273
+ "upload_key_status": "not_configured",
9274
+ "store_url": "string",
9275
+ "last_build": {
9276
+ "version": "string",
9277
+ "build_number": 0,
9278
+ "track": "string",
9279
+ "status": "building",
9280
+ "updated_at": "1970-01-01T00:00:00.000Z",
9281
+ "error": "string"
9282
+ }
9283
+ }
9284
+ }
9285
+ ```
9286
+
9287
+ </details>
9288
+
9289
+ ---
9290
+
8908
9291
  ## Schemas
8909
9292
 
9293
+ ### `MobileBuildStatus`
9294
+
9295
+ Latest build/upload status for a platform (system-written).
9296
+
9297
+ ```ts
9298
+ type MobileBuildStatus = {
9299
+ version?: string
9300
+ build_number?: number
9301
+ track?: string
9302
+ status?: "building" | "uploaded" | "failed"
9303
+ updated_at?: string // date-time
9304
+ error?: string
9305
+ }
9306
+ ```
9307
+
9308
+ ### `MobileBranding`
9309
+
9310
+ ```ts
9311
+ type MobileBranding = {
9312
+ app_icon?: string
9313
+ splash?: string
9314
+ splash_dark?: string
9315
+ icon_background_color?: string
9316
+ splash_background_color?: string
9317
+ splash_background_color_dark?: string
9318
+ }
9319
+ ```
9320
+
9321
+ ### `MobileConfig`
9322
+
9323
+ Mobile app configuration for the portal. Stored inside the portal's config object. Identifiers/branding are non-secret; signing credentials live in a secure store, never here.
9324
+
9325
+ ```ts
9326
+ type MobileConfig = {
9327
+ portal_id?: string
9328
+ enabled?: boolean
9329
+ display_name?: string
9330
+ app_host?: string
9331
+ environment?: "prod" | "staging" | "dev"
9332
+ branding?: {
9333
+ app_icon?: string
9334
+ splash?: string
9335
+ splash_dark?: string
9336
+ icon_background_color?: string
9337
+ splash_background_color?: string
9338
+ splash_background_color_dark?: string
9339
+ }
9340
+ ios?: {
9341
+ bundle_id?: string
9342
+ team_id?: string
9343
+ credentials_status?: "not_configured" | "configured"
9344
+ app_store_id?: string
9345
+ store_url?: string
9346
+ last_build?: {
9347
+ version?: { ... }
9348
+ build_number?: { ... }
9349
+ track?: { ... }
9350
+ status?: { ... }
9351
+ updated_at?: { ... }
9352
+ error?: { ... }
9353
+ }
9354
+ }
9355
+ android?: {
9356
+ package_name?: string
9357
+ credentials_status?: "not_configured" | "configured"
9358
+ upload_key_status?: "not_configured" | "generated" | "enrolled"
9359
+ store_url?: string
9360
+ last_build?: {
9361
+ version?: { ... }
9362
+ build_number?: { ... }
9363
+ track?: { ... }
9364
+ status?: { ... }
9365
+ updated_at?: { ... }
9366
+ error?: { ... }
9367
+ }
9368
+ }
9369
+ }
9370
+ ```
9371
+
9372
+ ### `MobileConfigUpdate`
9373
+
9374
+ Editable mobile fields for PUT. Only mobile-relevant settings + app branding can be changed. Portal-derived values (display_name, app_host), the portal logo, and system-written fields (credentials_status, app_store_id, last_build, …) are ignored if sent.
9375
+
9376
+ ```ts
9377
+ type MobileConfigUpdate = {
9378
+ enabled?: boolean
9379
+ ios?: {
9380
+ bundle_id?: string
9381
+ team_id?: string
9382
+ store_url?: string
9383
+ app_store_id?: string
9384
+ }
9385
+ android?: {
9386
+ package_name?: string
9387
+ store_url?: string
9388
+ }
9389
+ branding?: {
9390
+ app_icon?: string
9391
+ splash?: string
9392
+ splash_dark?: string
9393
+ icon_background_color?: string
9394
+ splash_background_color?: string
9395
+ splash_background_color_dark?: string
9396
+ }
9397
+ }
9398
+ ```
9399
+
8910
9400
  ### `ContextEntity`
8911
9401
 
8912
9402
  An entity reference for context-aware operations
@@ -9114,6 +9604,7 @@ type UpdateOnlyPortalConfigAttributes = {
9114
9604
  client_id?: { ... }
9115
9605
  client_secret?: { ... }
9116
9606
  }
9607
+ expose_client_secret?: boolean
9117
9608
  }>
9118
9609
  }
9119
9610
  ```
@@ -9156,6 +9647,7 @@ type CommonConfigAttributes = {
9156
9647
  entry_point?: "PASSWORD" | "SSO"
9157
9648
  preferred_sso_providers?: string[]
9158
9649
  auto_redirect_to_sso?: boolean
9650
+ prevent_user_enumeration?: boolean
9159
9651
  }
9160
9652
  cognito_details?: {
9161
9653
  cognito_user_pool_client_id?: string
@@ -9220,7 +9712,6 @@ type CommonConfigAttributes = {
9220
9712
  title_path?: string
9221
9713
  }
9222
9714
  registration_identifiers?: Array<{
9223
- name?: string
9224
9715
  // ...
9225
9716
  }
9226
9717
  ```
@@ -9288,6 +9779,7 @@ type UpsertPortalConfig = {
9288
9779
  client_id?: { ... }
9289
9780
  client_secret?: { ... }
9290
9781
  }
9782
+ expose_client_secret?: boolean
9291
9783
  }>
9292
9784
  enabled?: boolean
9293
9785
  name?: string
@@ -9323,11 +9815,10 @@ type UpsertPortalConfig = {
9323
9815
  entry_point?: "PASSWORD" | "SSO"
9324
9816
  preferred_sso_providers?: string[]
9325
9817
  auto_redirect_to_sso?: boolean
9818
+ prevent_user_enumeration?: boolean
9326
9819
  }
9327
9820
  cognito_details?: {
9328
9821
  cognito_user_pool_client_id?: string
9329
- cognito_user_pool_arn?: string
9330
- cognito_user_pool_id?: string
9331
9822
  // ...
9332
9823
  }
9333
9824
  ```
@@ -9370,6 +9861,7 @@ type PortalConfig = {
9370
9861
  entry_point?: "PASSWORD" | "SSO"
9371
9862
  preferred_sso_providers?: string[]
9372
9863
  auto_redirect_to_sso?: boolean
9864
+ prevent_user_enumeration?: boolean
9373
9865
  }
9374
9866
  cognito_details?: {
9375
9867
  cognito_user_pool_client_id?: string
@@ -9434,7 +9926,6 @@ type PortalConfig = {
9434
9926
  title_path?: string
9435
9927
  }
9436
9928
  registration_identifiers?: Array<{
9437
- name?: string
9438
9929
  // ...
9439
9930
  }
9440
9931
  ```
@@ -10980,6 +11471,65 @@ type PublicExtensionCapabilities = {
10980
11471
  plausibility_mode?: { ... }
10981
11472
  }
10982
11473
  }
11474
+ changeEmail?: {
11475
+ app?: {
11476
+ app_id?: { ... }
11477
+ name?: { ... }
11478
+ }
11479
+ extension?: {
11480
+ id?: { ... }
11481
+ name?: { ... }
11482
+ }
11483
+ hook?: {
11484
+ id?: { ... }
11485
+ require_password_confirmation?: { ... }
11486
+ explanation?: { ... }
11487
+ // ...
11488
+ }
11489
+ ```
11490
+
11491
+ ### `PublicSelfManagementExplanation`
11492
+
11493
+ Explanation of the hook.
11494
+
11495
+ ```ts
11496
+ type PublicSelfManagementExplanation = {
11497
+ en: string
11498
+ }
11499
+ ```
11500
+
11501
+ ### `PublicChangeEmailDetails`
11502
+
11503
+ ```ts
11504
+ type PublicChangeEmailDetails = {
11505
+ id?: string
11506
+ require_password_confirmation?: boolean
11507
+ explanation?: {
11508
+ en: string
11509
+ }
11510
+ }
11511
+ ```
11512
+
11513
+ ### `PublicChangePasswordDetails`
11514
+
11515
+ ```ts
11516
+ type PublicChangePasswordDetails = {
11517
+ id?: string
11518
+ require_new_password?: boolean
11519
+ explanation?: {
11520
+ en: string
11521
+ }
11522
+ }
11523
+ ```
11524
+
11525
+ ### `PublicDeleteAccountDetails`
11526
+
11527
+ ```ts
11528
+ type PublicDeleteAccountDetails = {
11529
+ id?: string
11530
+ explanation?: {
11531
+ en: string
11532
+ }
10983
11533
  }
10984
11534
  ```
10985
11535
 
@@ -11535,6 +12085,124 @@ type ExtensionHookCostDataRetrieval = {
11535
12085
  }
11536
12086
  ```
11537
12087
 
12088
+ ### `ExtensionHookChangeEmail`
12089
+
12090
+ Hook that replaces the built-in change email functionality for portal users. When configured, the portal does not change the user's login email itself. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the email change (most likely by sending the user instr
12091
+
12092
+ ```ts
12093
+ type ExtensionHookChangeEmail = {
12094
+ type: "changeEmail"
12095
+ require_password_confirmation?: boolean
12096
+ explanation?: {
12097
+ en: string
12098
+ }
12099
+ auth?: {
12100
+ method?: string
12101
+ url: string
12102
+ params?: Record<string, string>
12103
+ headers?: Record<string, string>
12104
+ body?: Record<string, string>
12105
+ cache?: {
12106
+ key: { ... }
12107
+ ttl: { ... }
12108
+ }
12109
+ }
12110
+ call: {
12111
+ method?: string
12112
+ url: string
12113
+ params?: Record<string, string>
12114
+ headers: Record<string, string>
12115
+ body?: object
12116
+ }
12117
+ resolved?: {
12118
+ error_message_path?: string
12119
+ }
12120
+ secure_proxy?: {
12121
+ integration_id: string // uuid
12122
+ use_case_slug: string
12123
+ }
12124
+ }
12125
+ ```
12126
+
12127
+ ### `ExtensionHookChangePassword`
12128
+
12129
+ Hook that replaces the built-in change password functionality for portal users. When configured, the portal does not change the user's password itself. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the password change (most likely by sending the user in
12130
+
12131
+ ```ts
12132
+ type ExtensionHookChangePassword = {
12133
+ type: "changePassword"
12134
+ require_new_password?: boolean
12135
+ explanation?: {
12136
+ en: string
12137
+ }
12138
+ auth?: {
12139
+ method?: string
12140
+ url: string
12141
+ params?: Record<string, string>
12142
+ headers?: Record<string, string>
12143
+ body?: Record<string, string>
12144
+ cache?: {
12145
+ key: { ... }
12146
+ ttl: { ... }
12147
+ }
12148
+ }
12149
+ call: {
12150
+ method?: string
12151
+ url: string
12152
+ params?: Record<string, string>
12153
+ headers: Record<string, string>
12154
+ body?: object
12155
+ }
12156
+ resolved?: {
12157
+ error_message_path?: string
12158
+ }
12159
+ secure_proxy?: {
12160
+ integration_id: string // uuid
12161
+ use_case_slug: string
12162
+ }
12163
+ }
12164
+ ```
12165
+
12166
+ ### `ExtensionHookDeleteAccount`
12167
+
12168
+ Hook that replaces the built-in delete account functionality for portal users. When configured, the portal does not delete the user itself. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the deletion.
12169
+ The `deletion_mode` controls what the portal does aft
12170
+
12171
+ ```ts
12172
+ type ExtensionHookDeleteAccount = {
12173
+ type: "deleteAccount"
12174
+ deletion_mode?: "synchronous" | "asynchronous"
12175
+ explanation?: {
12176
+ en: string
12177
+ }
12178
+ auth?: {
12179
+ method?: string
12180
+ url: string
12181
+ params?: Record<string, string>
12182
+ headers?: Record<string, string>
12183
+ body?: Record<string, string>
12184
+ cache?: {
12185
+ key: { ... }
12186
+ ttl: { ... }
12187
+ }
12188
+ }
12189
+ call: {
12190
+ method?: string
12191
+ url: string
12192
+ params?: Record<string, string>
12193
+ headers: Record<string, string>
12194
+ body?: object
12195
+ }
12196
+ resolved?: {
12197
+ error_message_path?: string
12198
+ }
12199
+ secure_proxy?: {
12200
+ integration_id: string // uuid
12201
+ use_case_slug: string
12202
+ }
12203
+ }
12204
+ ```
12205
+
11538
12206
  ### `SecureProxyConfig`
11539
12207
 
11540
12208
  Configuration for routing requests through the ERP Integration secure proxy. Mutually exclusive with use_static_ips.
@@ -11744,6 +12412,7 @@ type ProviderConfig = {
11744
12412
  client_id?: string
11745
12413
  client_secret?: string
11746
12414
  }
12415
+ expose_client_secret?: boolean
11747
12416
  }
11748
12417
  ```
11749
12418
 
@@ -12142,6 +12811,7 @@ type CommonConfigAttributesV3 = {
12142
12811
  entry_point?: "PASSWORD" | "SSO"
12143
12812
  preferred_sso_providers?: string[]
12144
12813
  auto_redirect_to_sso?: boolean
12814
+ prevent_user_enumeration?: boolean
12145
12815
  }
12146
12816
  cognito_details?: {
12147
12817
  cognito_user_pool_client_id?: string
@@ -12206,7 +12876,6 @@ type CommonConfigAttributesV3 = {
12206
12876
  title_path?: string
12207
12877
  }
12208
12878
  registration_identifiers?: Array<{
12209
- name?: string
12210
12879
  // ...
12211
12880
  }
12212
12881
  ```
@@ -12282,6 +12951,7 @@ type UpsertPortalConfigV3 = {
12282
12951
  client_id?: { ... }
12283
12952
  client_secret?: { ... }
12284
12953
  }
12954
+ expose_client_secret?: boolean
12285
12955
  }>
12286
12956
  enabled?: boolean
12287
12957
  name?: string
@@ -12317,11 +12987,10 @@ type UpsertPortalConfigV3 = {
12317
12987
  entry_point?: "PASSWORD" | "SSO"
12318
12988
  preferred_sso_providers?: string[]
12319
12989
  auto_redirect_to_sso?: boolean
12990
+ prevent_user_enumeration?: boolean
12320
12991
  }
12321
12992
  cognito_details?: {
12322
12993
  cognito_user_pool_client_id?: string
12323
- cognito_user_pool_arn?: string
12324
- cognito_user_pool_id?: string
12325
12994
  // ...
12326
12995
  }
12327
12996
  ```
@@ -12412,6 +13081,7 @@ type PortalConfigV3 = {
12412
13081
  entry_point?: "PASSWORD" | "SSO"
12413
13082
  preferred_sso_providers?: string[]
12414
13083
  auto_redirect_to_sso?: boolean
13084
+ prevent_user_enumeration?: boolean
12415
13085
  }
12416
13086
  cognito_details?: {
12417
13087
  cognito_user_pool_client_id?: string
@@ -12428,7 +13098,6 @@ type PortalConfigV3 = {
12428
13098
  compromised_credentials_detection?: { ... }
12429
13099
  }
12430
13100
  password_policy?: {
12431
- minimum_length?: { ... }
12432
13101
  // ...
12433
13102
  }
12434
13103
  ```