@epilot/sdk 2.7.0 → 2.7.1

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 (163) hide show
  1. package/definitions/customer-portal-runtime.json +1 -1
  2. package/definitions/customer-portal.json +492 -7
  3. package/definitions/email-settings-runtime.json +1 -1
  4. package/definitions/email-settings.json +86 -4
  5. package/definitions/file-runtime.json +1 -1
  6. package/definitions/file.json +262 -4
  7. package/dist/apis/access-token.cjs +6 -6
  8. package/dist/apis/access-token.js +1 -1
  9. package/dist/apis/address-suggestions.cjs +6 -6
  10. package/dist/apis/address-suggestions.js +1 -1
  11. package/dist/apis/address.cjs +6 -6
  12. package/dist/apis/address.js +1 -1
  13. package/dist/apis/ai-agents.cjs +6 -6
  14. package/dist/apis/ai-agents.js +1 -1
  15. package/dist/apis/app.cjs +6 -6
  16. package/dist/apis/app.js +1 -1
  17. package/dist/apis/audit-logs.cjs +6 -6
  18. package/dist/apis/audit-logs.js +1 -1
  19. package/dist/apis/automation.cjs +6 -6
  20. package/dist/apis/automation.js +1 -1
  21. package/dist/apis/billing.cjs +6 -6
  22. package/dist/apis/billing.js +1 -1
  23. package/dist/apis/blueprint-manifest.cjs +6 -6
  24. package/dist/apis/blueprint-manifest.js +1 -1
  25. package/dist/apis/calendar.cjs +6 -6
  26. package/dist/apis/calendar.js +1 -1
  27. package/dist/apis/configuration-hub.cjs +6 -6
  28. package/dist/apis/configuration-hub.js +1 -1
  29. package/dist/apis/consent.cjs +6 -6
  30. package/dist/apis/consent.js +1 -1
  31. package/dist/apis/customer-portal.cjs +8 -8
  32. package/dist/apis/customer-portal.d.cts +2 -2
  33. package/dist/apis/customer-portal.d.ts +2 -2
  34. package/dist/apis/customer-portal.js +2 -2
  35. package/dist/apis/dashboard.cjs +6 -6
  36. package/dist/apis/dashboard.js +1 -1
  37. package/dist/apis/data-governance.cjs +6 -6
  38. package/dist/apis/data-governance.js +1 -1
  39. package/dist/apis/deduplication.cjs +6 -6
  40. package/dist/apis/deduplication.js +1 -1
  41. package/dist/apis/design.cjs +6 -6
  42. package/dist/apis/design.js +1 -1
  43. package/dist/apis/document.cjs +6 -6
  44. package/dist/apis/document.js +1 -1
  45. package/dist/apis/email-settings.cjs +8 -8
  46. package/dist/apis/email-settings.d.cts +2 -2
  47. package/dist/apis/email-settings.d.ts +2 -2
  48. package/dist/apis/email-settings.js +2 -2
  49. package/dist/apis/email-template.cjs +6 -6
  50. package/dist/apis/email-template.js +1 -1
  51. package/dist/apis/entity-mapping.cjs +6 -6
  52. package/dist/apis/entity-mapping.js +1 -1
  53. package/dist/apis/entity.cjs +6 -6
  54. package/dist/apis/entity.js +1 -1
  55. package/dist/apis/environments.cjs +6 -6
  56. package/dist/apis/environments.js +1 -1
  57. package/dist/apis/event-catalog.cjs +6 -6
  58. package/dist/apis/event-catalog.js +1 -1
  59. package/dist/apis/file.cjs +8 -8
  60. package/dist/apis/file.d.cts +2 -2
  61. package/dist/apis/file.d.ts +2 -2
  62. package/dist/apis/file.js +2 -2
  63. package/dist/apis/iban.cjs +6 -6
  64. package/dist/apis/iban.js +1 -1
  65. package/dist/apis/integration-toolkit.cjs +6 -6
  66. package/dist/apis/integration-toolkit.js +1 -1
  67. package/dist/apis/journey.cjs +6 -6
  68. package/dist/apis/journey.js +1 -1
  69. package/dist/apis/kanban.cjs +6 -6
  70. package/dist/apis/kanban.js +1 -1
  71. package/dist/apis/message.cjs +6 -6
  72. package/dist/apis/message.js +1 -1
  73. package/dist/apis/metering.cjs +6 -6
  74. package/dist/apis/metering.js +1 -1
  75. package/dist/apis/notes.cjs +6 -6
  76. package/dist/apis/notes.js +1 -1
  77. package/dist/apis/notification.cjs +6 -6
  78. package/dist/apis/notification.js +1 -1
  79. package/dist/apis/organization.cjs +6 -6
  80. package/dist/apis/organization.js +1 -1
  81. package/dist/apis/partner-directory.cjs +6 -6
  82. package/dist/apis/partner-directory.js +1 -1
  83. package/dist/apis/permissions.cjs +6 -6
  84. package/dist/apis/permissions.js +1 -1
  85. package/dist/apis/pricing-tier.cjs +6 -6
  86. package/dist/apis/pricing-tier.js +1 -1
  87. package/dist/apis/pricing.cjs +6 -6
  88. package/dist/apis/pricing.js +1 -1
  89. package/dist/apis/purpose.cjs +6 -6
  90. package/dist/apis/purpose.js +1 -1
  91. package/dist/apis/query.cjs +6 -6
  92. package/dist/apis/query.js +1 -1
  93. package/dist/apis/sandbox.cjs +6 -6
  94. package/dist/apis/sandbox.js +1 -1
  95. package/dist/apis/sharing.cjs +6 -6
  96. package/dist/apis/sharing.js +1 -1
  97. package/dist/apis/submission.cjs +6 -6
  98. package/dist/apis/submission.js +1 -1
  99. package/dist/apis/target.cjs +6 -6
  100. package/dist/apis/target.js +1 -1
  101. package/dist/apis/targeting.cjs +6 -6
  102. package/dist/apis/targeting.js +1 -1
  103. package/dist/apis/template-variables.cjs +6 -6
  104. package/dist/apis/template-variables.js +1 -1
  105. package/dist/apis/user.cjs +6 -6
  106. package/dist/apis/user.js +1 -1
  107. package/dist/apis/validation-rules.cjs +6 -6
  108. package/dist/apis/validation-rules.js +1 -1
  109. package/dist/apis/webhooks.cjs +6 -6
  110. package/dist/apis/webhooks.js +1 -1
  111. package/dist/apis/workflow-definition.cjs +6 -6
  112. package/dist/apis/workflow-definition.js +1 -1
  113. package/dist/apis/workflow.cjs +6 -6
  114. package/dist/apis/workflow.js +1 -1
  115. package/dist/bin/cli.js +1 -1
  116. package/dist/chunk-3APTSPY4.js +14 -0
  117. package/dist/chunk-KCPVNRDL.js +14 -0
  118. package/dist/chunk-KJPOUJBU.cjs +14 -0
  119. package/dist/chunk-OPXGJKZR.cjs +14 -0
  120. package/dist/chunk-PTEJYAYJ.js +14 -0
  121. package/dist/{chunk-35CN2YFK.cjs → chunk-R7XDTILZ.cjs} +6 -6
  122. package/dist/{chunk-JB7LITSP.js → chunk-SCMAZ73K.js} +6 -6
  123. package/dist/chunk-YI5YGTAH.cjs +14 -0
  124. package/dist/customer-portal-7HYSBH7H.cjs +7 -0
  125. package/dist/customer-portal-X4LJX6AU.js +7 -0
  126. package/dist/{customer-portal-runtime-OEXTSMSE.cjs → customer-portal-runtime-IYHJ3RME.cjs} +2 -2
  127. package/dist/{customer-portal-runtime-N4NWQ67M.js → customer-portal-runtime-ZYU3WIXY.js} +1 -1
  128. package/dist/{customer-portal.d-ChSEioI5.d.cts → customer-portal.d-C7ZCbjiY.d.cts} +605 -11
  129. package/dist/{customer-portal.d-ChSEioI5.d.ts → customer-portal.d-C7ZCbjiY.d.ts} +605 -11
  130. package/dist/email-settings-YJ4X5VFU.cjs +7 -0
  131. package/dist/email-settings-YUK3DXFJ.js +7 -0
  132. package/dist/{email-settings-runtime-EGIJ2AVQ.js → email-settings-runtime-BXRZV4M5.js} +1 -1
  133. package/dist/{email-settings-runtime-WGVLI7N6.cjs → email-settings-runtime-FWJQBQBK.cjs} +2 -2
  134. package/dist/{email-settings.d-B7Q_xT25.d.cts → email-settings.d-UJ0C3jPI.d.cts} +108 -9
  135. package/dist/{email-settings.d-B7Q_xT25.d.ts → email-settings.d-UJ0C3jPI.d.ts} +108 -9
  136. package/dist/file-P2FUUER2.js +7 -0
  137. package/dist/file-XTY74SIX.cjs +7 -0
  138. package/dist/file-runtime-24S3QPA7.cjs +5 -0
  139. package/dist/{file-runtime-B6AAGZQF.js → file-runtime-BIRMXYRH.js} +1 -1
  140. package/dist/{file.d-DcTJxjp7.d.cts → file.d-DTlrbI40.d.cts} +2336 -19
  141. package/dist/{file.d-DcTJxjp7.d.ts → file.d-DTlrbI40.d.ts} +2336 -19
  142. package/dist/index.cjs +14 -14
  143. package/dist/index.d.cts +3 -3
  144. package/dist/index.d.ts +3 -3
  145. package/dist/index.js +4 -4
  146. package/dist/{js-yaml-DLCVPJ7G.js → js-yaml-UPZKYVRY.js} +15 -17
  147. package/docs/customer-portal.md +417 -51
  148. package/docs/email-settings.md +67 -3
  149. package/docs/file.md +101 -2
  150. package/package.json +1 -1
  151. package/dist/chunk-4W22EIRF.cjs +0 -14
  152. package/dist/chunk-5OBMZHRL.cjs +0 -14
  153. package/dist/chunk-E2WMGOM5.js +0 -14
  154. package/dist/chunk-EFWPEVXI.js +0 -14
  155. package/dist/chunk-KEI3GHDY.cjs +0 -14
  156. package/dist/chunk-Z6HGUGXK.js +0 -14
  157. package/dist/customer-portal-5I7ZGQDU.cjs +0 -7
  158. package/dist/customer-portal-YL2YMPZL.js +0 -7
  159. package/dist/email-settings-CKFJU4WZ.js +0 -7
  160. package/dist/email-settings-NQJJKS2P.cjs +0 -7
  161. package/dist/file-UOWBTDIU.cjs +0 -7
  162. package/dist/file-XSN3NAVZ.js +0 -7
  163. package/dist/file-runtime-SFZIKODF.cjs +0 -5
@@ -3561,6 +3561,84 @@
3561
3561
  "contactId": {
3562
3562
  "$ref": "#/components/schemas/EntityId",
3563
3563
  "description": "ID of the contact if exists"
3564
+ },
3565
+ "accountId": {
3566
+ "$ref": "#/components/schemas/EntityId",
3567
+ "description": "ID of the resolved account when the portal is configured for account-based registration"
3568
+ }
3569
+ }
3570
+ }
3571
+ }
3572
+ }
3573
+ },
3574
+ "400": {
3575
+ "$ref": "#/components/responses/InvalidRequest"
3576
+ },
3577
+ "404": {
3578
+ "$ref": "#/components/responses/NotFound"
3579
+ },
3580
+ "500": {
3581
+ "$ref": "#/components/responses/InternalServerError"
3582
+ }
3583
+ }
3584
+ }
3585
+ },
3586
+ "/v3/portal/public/account/exists": {
3587
+ "post": {
3588
+ "operationId": "checkAccountExists",
3589
+ "summary": "checkAccountExists",
3590
+ "description": "True if account with given identifiers exists.\nSupports two identification methods:\n1. Using portal_id\n2. Using domain\n",
3591
+ "security": [],
3592
+ "tags": [
3593
+ "Public"
3594
+ ],
3595
+ "parameters": [
3596
+ {
3597
+ "in": "query",
3598
+ "name": "portal_id",
3599
+ "required": false,
3600
+ "schema": {
3601
+ "$ref": "#/components/schemas/PortalId"
3602
+ },
3603
+ "description": "PortalId of the portal (required if domain is not provided)"
3604
+ },
3605
+ {
3606
+ "in": "query",
3607
+ "name": "domain",
3608
+ "required": false,
3609
+ "schema": {
3610
+ "type": "string"
3611
+ },
3612
+ "description": "Portal domain for identification (alternative to portal_id)"
3613
+ }
3614
+ ],
3615
+ "requestBody": {
3616
+ "description": "Request payload",
3617
+ "required": true,
3618
+ "content": {
3619
+ "application/json": {
3620
+ "schema": {
3621
+ "$ref": "#/components/schemas/AccountExistsRequest"
3622
+ }
3623
+ }
3624
+ }
3625
+ },
3626
+ "responses": {
3627
+ "200": {
3628
+ "description": "Return result true|false if the account with given identifiers exists.",
3629
+ "content": {
3630
+ "application/json": {
3631
+ "schema": {
3632
+ "type": "object",
3633
+ "properties": {
3634
+ "exists": {
3635
+ "type": "boolean",
3636
+ "description": "Whether the account exists with the given identifier values",
3637
+ "example": true
3638
+ },
3639
+ "accountId": {
3640
+ "$ref": "#/components/schemas/EntityId",
3641
+ "description": "ID of the account if exists"
3564
3642
  }
3565
3643
  }
3566
3644
  }
@@ -7527,6 +7605,90 @@
7527
7605
  }
7528
7606
  }
7529
7607
  },
7608
+ "/v2/portal/public/sso/providers/{provider_slug}": {
7609
+ "get": {
7610
+ "operationId": "getSSOProvider",
7611
+ "summary": "getSSOProvider",
7612
+ "description": "Returns the public configuration of a single SSO identity provider with env var\nplaceholders (incl. secrets) already resolved against the organization's environment.\n\nUse this endpoint at SSO initiation time (i.e. when the end user clicks \"Sign in with X\")\nto obtain the resolved OIDC settings needed to construct the authorization URL.\nThe web `client_secret` is intentionally never returned — it is used server-side by\nthe SSO callback to exchange the authorization code for tokens.\n\nSupports three identification methods:\n1. `org_id` + `origin`\n2. `org_id` + `portal_id`\n3. `domain`\n",
7613
+ "security": [],
7614
+ "tags": [
7615
+ "Public"
7616
+ ],
7617
+ "parameters": [
7618
+ {
7619
+ "in": "path",
7620
+ "name": "provider_slug",
7621
+ "required": true,
7622
+ "description": "Provider slug (organization-unique)",
7623
+ "schema": {
7624
+ "$ref": "#/components/schemas/ProviderSlug"
7625
+ }
7626
+ },
7627
+ {
7628
+ "in": "query",
7629
+ "name": "org_id",
7630
+ "required": false,
7631
+ "description": "epilot organization id (required with `origin` or `portal_id`)",
7632
+ "schema": {
7633
+ "type": "string",
7634
+ "example": 123
7635
+ }
7636
+ },
7637
+ {
7638
+ "in": "query",
7639
+ "name": "origin",
7640
+ "required": false,
7641
+ "description": "Origin of the Portal",
7642
+ "schema": {
7643
+ "type": "string",
7644
+ "enum": [
7645
+ "END_CUSTOMER_PORTAL",
7646
+ "INSTALLER_PORTAL"
7647
+ ]
7648
+ }
7649
+ },
7650
+ {
7651
+ "in": "query",
7652
+ "name": "portal_id",
7653
+ "required": false,
7654
+ "description": "ID of the Portal",
7655
+ "schema": {
7656
+ "$ref": "#/components/schemas/PortalId"
7657
+ }
7658
+ },
7659
+ {
7660
+ "in": "query",
7661
+ "name": "domain",
7662
+ "required": false,
7663
+ "description": "Portal domain for identification (alternative to org_id + origin/portal_id)",
7664
+ "schema": {
7665
+ "type": "string"
7666
+ }
7667
+ }
7668
+ ],
7669
+ "responses": {
7670
+ "200": {
7671
+ "description": "Resolved public SSO provider configuration",
7672
+ "content": {
7673
+ "application/json": {
7674
+ "schema": {
7675
+ "$ref": "#/components/schemas/ProviderPublicConfig"
7676
+ }
7677
+ }
7678
+ }
7679
+ },
7680
+ "400": {
7681
+ "$ref": "#/components/responses/InvalidRequest"
7682
+ },
7683
+ "404": {
7684
+ "$ref": "#/components/responses/NotFound"
7685
+ },
7686
+ "500": {
7687
+ "$ref": "#/components/responses/InternalServerError"
7688
+ }
7689
+ }
7690
+ }
7691
+ },
7530
7692
  "/v2/portal/public/sso/login": {
7531
7693
  "post": {
7532
7694
  "operationId": "ssoLogin",
@@ -9718,6 +9880,149 @@
9718
9880
  }
9719
9881
  }
9720
9882
  }
9883
+ },
9884
+ "/v3/portal/verify-dns": {
9885
+ "post": {
9886
+ "operationId": "verifyDns",
9887
+ "summary": "verifyDns",
9888
+ "description": "Manually triggers DNS verification for a portal's domain setup. Runs the same verification logic as the scheduled processAllPendingNetworks lambda.",
9889
+ "tags": [
9890
+ "ECP Admin"
9891
+ ],
9892
+ "security": [
9893
+ {
9894
+ "EpilotAuth": []
9895
+ }
9896
+ ],
9897
+ "parameters": [
9898
+ {
9899
+ "in": "query",
9900
+ "name": "portal_id",
9901
+ "required": true,
9902
+ "schema": {
9903
+ "$ref": "#/components/schemas/PortalId"
9904
+ },
9905
+ "description": "PortalId of the portal"
9906
+ }
9907
+ ],
9908
+ "responses": {
9909
+ "200": {
9910
+ "description": "DNS verification result",
9911
+ "content": {
9912
+ "application/json": {
9913
+ "schema": {
9914
+ "type": "object",
9915
+ "properties": {
9916
+ "domain_status": {
9917
+ "type": "string",
9918
+ "description": "The status of the custom domain verification",
9919
+ "enum": [
9920
+ "PENDING",
9921
+ "SUCCEED"
9922
+ ]
9923
+ },
9924
+ "message": {
9925
+ "type": "string",
9926
+ "description": "A message describing the result"
9927
+ }
9928
+ }
9929
+ }
9930
+ }
9931
+ }
9932
+ },
9933
+ "401": {
9934
+ "$ref": "#/components/responses/Unauthorized"
9935
+ },
9936
+ "403": {
9937
+ "$ref": "#/components/responses/Forbidden"
9938
+ },
9939
+ "500": {
9940
+ "$ref": "#/components/responses/InternalServerError"
9941
+ }
9942
+ }
9943
+ }
9944
+ },
9945
+ "/v2/portal/proxy/execute": {
9946
+ "post": {
9947
+ "operationId": "portalProxyExecute",
9948
+ "summary": "portalProxyExecute",
9949
+ "description": "Execute an Integration Hub managed-call use case on behalf of a portal user.\nBridges PortalAuth to the Integration API by generating an internal token.\n",
9950
+ "security": [
9951
+ {
9952
+ "PortalAuth": []
9953
+ }
9954
+ ],
9955
+ "tags": [
9956
+ "ECP"
9957
+ ],
9958
+ "requestBody": {
9959
+ "required": true,
9960
+ "content": {
9961
+ "application/json": {
9962
+ "schema": {
9963
+ "type": "object",
9964
+ "required": [
9965
+ "integration_id",
9966
+ "use_case_slug"
9967
+ ],
9968
+ "properties": {
9969
+ "integration_id": {
9970
+ "type": "string",
9971
+ "format": "uuid",
9972
+ "description": "Integration ID containing the managed-call use case"
9973
+ },
9974
+ "use_case_slug": {
9975
+ "type": "string",
9976
+ "description": "Use case slug (acts as the RPC method name)"
9977
+ },
9978
+ "payload": {
9979
+ "type": "object",
9980
+ "description": "Input data for the managed-call operation",
9981
+ "additionalProperties": true
9982
+ }
9983
+ }
9984
+ }
9985
+ }
9986
+ }
9987
+ },
9988
+ "responses": {
9989
+ "200": {
9990
+ "description": "Managed-call execution result envelope.",
9991
+ "content": {
9992
+ "application/json": {
9993
+ "schema": {
9994
+ "type": "object",
9995
+ "required": [
9996
+ "success"
9997
+ ],
9998
+ "properties": {
9999
+ "success": {
10000
+ "type": "boolean"
10001
+ },
10002
+ "data": {
10003
+ "type": "object",
10004
+ "additionalProperties": true,
10005
+ "description": "Managed-call response payload. Shape is defined by the use\ncase's JSONata response_mapping; if no mapping is\nconfigured the raw external API response is returned.\n"
10006
+ }
10007
+ }
10008
+ }
10009
+ }
10010
+ }
10011
+ },
10012
+ "400": {
10013
+ "$ref": "#/components/responses/InvalidRequest"
10014
+ },
10015
+ "401": {
10016
+ "$ref": "#/components/responses/Unauthorized"
10017
+ },
10018
+ "403": {
10019
+ "$ref": "#/components/responses/Forbidden"
10020
+ },
10021
+ "500": {
10022
+ "$ref": "#/components/responses/InternalServerError"
10023
+ }
10024
+ }
10025
+ }
9721
10026
  }
9722
10027
  },
9723
10028
  "components": {
@@ -10430,6 +10735,14 @@
10430
10735
  "type": "boolean",
10431
10736
  "description": "Mark true if the domain is an Epilot domain"
10432
10737
  },
10738
+ "epilot_domain": {
10739
+ "type": "string",
10740
+ "description": "The URL on which the portal is accessible",
10741
+ "example": "example-portal-12345.ecp.epilot.cloud"
10742
+ },
10743
+ "domain_settings": {
10744
+ "$ref": "#/components/schemas/DomainSettings"
10745
+ },
10433
10746
  "design_id": {
10434
10747
  "$ref": "#/components/schemas/EntityId",
10435
10748
  "description": "ID of the design used to build the portal"
@@ -10456,6 +10769,24 @@
10456
10769
  "BLOCK_IF_PORTAL_USER_EXISTS"
10457
10770
  ]
10458
10771
  },
10772
+ "self_registration_account_setting": {
10773
+ "type": "string",
10774
+ "description": "Controls behavior of self-registration when account is used as the registration entity",
10775
+ "enum": [
10776
+ "ALLOW_WITH_CONTACT_CREATION",
10777
+ "DENY",
10778
+ "ALWAYS_CREATE_CONTACT",
10779
+ "DISALLOW_COMPLETELY"
10780
+ ]
10781
+ },
10782
+ "self_registration_entity": {
10783
+ "type": "string",
10784
+ "description": "Entity type used as the primary identifier for self-registration",
10785
+ "enum": [
10786
+ "contact",
10787
+ "account"
10788
+ ]
10789
+ },
10459
10790
  "user_account_self_management": {
10460
10791
  "type": "boolean",
10461
10792
  "description": "Enable or disable user account self management",
@@ -10880,6 +11211,13 @@
10880
11211
  "additionalProperties": {
10881
11212
  "$ref": "#/components/schemas/Page"
10882
11213
  }
11214
+ },
11215
+ "global_blocks": {
11216
+ "type": "object",
11217
+ "description": "Portal-level blocks shared across all pages (e.g. footer). Keyed by block id.",
11218
+ "additionalProperties": {
11219
+ "$ref": "#/components/schemas/Block"
11220
+ }
10883
11221
  }
10884
11222
  }
10885
11223
  },
@@ -10986,6 +11324,24 @@
10986
11324
  }
10987
11325
  }
10988
11326
  },
11327
+ "DomainSettings": {
11328
+ "type": "object",
11329
+ "description": "Domain settings for the portal",
11330
+ "properties": {
11331
+ "is_custom_domain_enabled": {
11332
+ "type": "boolean",
11333
+ "description": "Whether the custom domain is enabled"
11334
+ },
11335
+ "is_epilot_domain_enabled": {
11336
+ "type": "boolean",
11337
+ "description": "Whether the Epilot domain is enabled"
11338
+ },
11339
+ "is_redirection_enabled": {
11340
+ "type": "boolean",
11341
+ "description": "Whether the redirection is enabled"
11342
+ }
11343
+ }
11344
+ },
10989
11345
  "WidgetBase": {
10990
11346
  "type": "object",
10991
11347
  "required": [
@@ -11342,6 +11698,38 @@
11342
11698
  }
11343
11699
  }
11344
11700
  },
11701
+ "AccountExistsRequest": {
11702
+ "type": "object",
11703
+ "required": [
11704
+ "registration_identifiers",
11705
+ "org_id"
11706
+ ],
11707
+ "properties": {
11708
+ "org_id": {
11709
+ "type": "string",
11710
+ "example": 728,
11711
+ "description": "ID of the organization"
11712
+ },
11713
+ "registration_identifiers": {
11714
+ "type": "object",
11715
+ "description": "Identifier-value pairs per schema to identify an account during portal user registration",
11716
+ "additionalProperties": {
11717
+ "type": "object",
11718
+ "additionalProperties": {
11719
+ "type": "string"
11720
+ }
11721
+ },
11722
+ "example": {
11723
+ "account": {
11724
+ "customer_number": "ACC-123456"
11725
+ },
11726
+ "contract": {
11727
+ "contract_number": "123456"
11728
+ }
11729
+ }
11730
+ }
11731
+ }
11732
+ },
11345
11733
  "UserRequest": {
11346
11734
  "type": "object",
11347
11735
  "properties": {
@@ -15181,6 +15569,7 @@
15181
15569
  },
15182
15570
  "ProviderConfig": {
15183
15571
  "type": "object",
15572
+ "description": "SSO identity provider configuration.\n\nEnv var interpolation: only string fields under `oidc_config` and\n`mobile_oidc_config` (incl. their nested `metadata`) are passed through\nLiquid templating, so they may contain `{{ env.VAR }}` placeholders that\nget resolved at runtime against the organization's environment.\n\nThe following fields are used as literal values and MUST NOT contain\ntemplate syntax: `slug`, `display_name`, `provider_type`, all keys and\nvalues under `attribute_mappings` (used as JSONPath-like accessors into\ntoken claims), and all keys and values under `entity_matching`.\n",
15184
15573
  "properties": {
15185
15574
  "slug": {
15186
15575
  "$ref": "#/components/schemas/ProviderSlug"
@@ -15222,7 +15611,7 @@
15222
15611
  "$ref": "#/components/schemas/ProviderDisplayName"
15223
15612
  },
15224
15613
  "oidc_config": {
15225
- "$ref": "#/components/schemas/OIDCProviderConfig"
15614
+ "$ref": "#/components/schemas/OIDCProviderPublicConfig"
15226
15615
  },
15227
15616
  "mobile_oidc_config": {
15228
15617
  "$ref": "#/components/schemas/MoblieOIDCConfig"
@@ -15372,6 +15761,7 @@
15372
15761
  },
15373
15762
  "OIDCProviderConfig": {
15374
15763
  "type": "object",
15764
+ "description": "OIDC provider configuration. All string fields support env var interpolation\n(incl. secrets) via mustache-like templates, e.g. `{{ env.MY_PROVIDER_CLIENT_SECRET }}`.\n",
15375
15765
  "properties": {
15376
15766
  "type": {
15377
15767
  "type": "string",
@@ -15383,20 +15773,22 @@
15383
15773
  },
15384
15774
  "oidc_issuer": {
15385
15775
  "type": "string",
15386
- "description": "Issuing Authority URL",
15776
+ "description": "Issuing Authority URL. Supports env var interpolation, e.g. `{{ env.MY_ISSUER }}`.",
15387
15777
  "example": "https://login.microsoftonline.com/33d4f3e5-3df2-421e-b92e-a63cfa680a88/v2.0"
15388
15778
  },
15389
15779
  "redirect_uri": {
15390
15780
  "type": "string",
15391
- "description": "Redirect URI for the OIDC flow",
15781
+ "description": "Redirect URI for the OIDC flow. Supports env var interpolation.",
15392
15782
  "example": "https://customer-portal.com/login"
15393
15783
  },
15394
15784
  "client_id": {
15395
15785
  "type": "string",
15786
+ "description": "Supports env var interpolation, e.g. `{{ env.MY_CLIENT_ID }}`.",
15396
15787
  "example": "ab81daf8-8b1f-42d6-94ca-c51621054c75"
15397
15788
  },
15398
15789
  "client_secret": {
15399
15790
  "type": "string",
15791
+ "description": "Client Secret. Supports env var interpolation (incl. secrets), e.g.\n`{{ env.MY_CLIENT_SECRET }}`. Prefer storing the actual secret as an org\nenv var and referencing it here.\n",
15400
15792
  "example": "7BIUnn~6shh.7fNtXb..3k1Mp3s6k6WK3B"
15401
15793
  },
15402
15794
  "has_client_secret": {
@@ -15427,17 +15819,72 @@
15427
15819
  "scope"
15428
15820
  ]
15429
15821
  },
15822
+ "OIDCProviderPublicConfig": {
15823
+ "type": "object",
15824
+ "description": "Public OIDC provider configuration. Same as OIDCProviderConfig but never includes\nthe `client_secret` field — it is kept server-side and only used to exchange the\nauthorization code at the SSO callback. String fields are returned with env var\nplaceholders already resolved when fetched via `GET /v2/portal/public/sso/providers/{provider_slug}`.\n",
15825
+ "properties": {
15826
+ "type": {
15827
+ "type": "string",
15828
+ "enum": [
15829
+ "authorization_code",
15830
+ "implicit"
15831
+ ],
15832
+ "default": "implicit"
15833
+ },
15834
+ "oidc_issuer": {
15835
+ "type": "string",
15836
+ "description": "Issuing Authority URL",
15837
+ "example": "https://login.microsoftonline.com/33d4f3e5-3df2-421e-b92e-a63cfa680a88/v2.0"
15838
+ },
15839
+ "redirect_uri": {
15840
+ "type": "string",
15841
+ "description": "Redirect URI for the OIDC flow",
15842
+ "example": "https://customer-portal.com/login"
15843
+ },
15844
+ "client_id": {
15845
+ "type": "string",
15846
+ "example": "ab81daf8-8b1f-42d6-94ca-c51621054c75"
15847
+ },
15848
+ "has_client_secret": {
15849
+ "type": "boolean",
15850
+ "description": "Whether the client secret is present (the value itself is kept server-side)",
15851
+ "example": true
15852
+ },
15853
+ "scope": {
15854
+ "type": "string",
15855
+ "description": "Space-separated list of OAuth 2.0 scopes to request from OpenID Connect",
15856
+ "example": "openid email"
15857
+ },
15858
+ "metadata": {
15859
+ "$ref": "#/components/schemas/OIDCProviderMetadata"
15860
+ },
15861
+ "prompt": {
15862
+ "type": "string",
15863
+ "enum": [
15864
+ "login",
15865
+ "select_account",
15866
+ "consent"
15867
+ ]
15868
+ }
15869
+ },
15870
+ "required": [
15871
+ "oidc_issuer",
15872
+ "client_id",
15873
+ "scope"
15874
+ ]
15875
+ },
15430
15876
  "MoblieOIDCConfig": {
15431
15877
  "type": "object",
15878
+ "description": "Mobile OIDC configuration. All string fields support env var interpolation\n(incl. secrets) via mustache-like templates, e.g. `{{ env.MOBILE_CLIENT_SECRET }}`.\n",
15432
15879
  "properties": {
15433
15880
  "client_id": {
15434
15881
  "type": "string",
15435
- "description": "Client ID for the mobile app",
15882
+ "description": "Client ID for the mobile app. Supports env var interpolation.",
15436
15883
  "example": 123456
15437
15884
  },
15438
15885
  "client_secret": {
15439
15886
  "type": "string",
15440
- "description": "Client Secret for the mobile app",
15887
+ "description": "Client Secret for the mobile app. Supports env var interpolation (incl. secrets),\ne.g. `{{ env.MOBILE_CLIENT_SECRET }}`.\n",
15441
15888
  "example": 123456
15442
15889
  }
15443
15890
  }
@@ -15482,12 +15929,12 @@
15482
15929
  },
15483
15930
  "test_auth_username": {
15484
15931
  "type": "string",
15485
- "description": "The username for the test auth, only used for testing on auth code flow",
15932
+ "description": "The username for the test auth, only used for testing on auth code flow.\nSupports env var interpolation, e.g. `{{ env.MY_TEST_AUTH_USERNAME }}`.\n",
15486
15933
  "example": "test@epilot.io"
15487
15934
  },
15488
15935
  "test_auth_password": {
15489
15936
  "type": "string",
15490
- "description": "The password for the test auth, only used for testing on auth code flow"
15937
+ "description": "The password for the test auth, only used for testing on auth code flow.\nSupports env var interpolation (incl. secrets), e.g. `{{ env.MY_TEST_AUTH_PASSWORD }}`.\n"
15491
15938
  }
15492
15939
  }
15493
15940
  },
@@ -15924,6 +16371,14 @@
15924
16371
  "type": "boolean",
15925
16372
  "description": "Mark true if the domain is an Epilot domain"
15926
16373
  },
16374
+ "epilot_domain": {
16375
+ "type": "string",
16376
+ "description": "The Epilot domain on which the portal is accessible",
16377
+ "example": "example-portal-1.ecp.epilot.io"
16378
+ },
16379
+ "domain_settings": {
16380
+ "$ref": "#/components/schemas/DomainSettings"
16381
+ },
15927
16382
  "design_id": {
15928
16383
  "$ref": "#/components/schemas/EntityId",
15929
16384
  "description": "ID of the design used to build the portal"
@@ -15950,6 +16405,24 @@
15950
16405
  "BLOCK_IF_PORTAL_USER_EXISTS"
15951
16406
  ]
15952
16407
  },
16408
+ "self_registration_account_setting": {
16409
+ "type": "string",
16410
+ "description": "Controls behavior of self-registration when account is used as the registration entity",
16411
+ "enum": [
16412
+ "ALLOW_WITH_CONTACT_CREATION",
16413
+ "DENY",
16414
+ "ALWAYS_CREATE_CONTACT",
16415
+ "DISALLOW_COMPLETELY"
16416
+ ]
16417
+ },
16418
+ "self_registration_entity": {
16419
+ "type": "string",
16420
+ "description": "Entity type used as the primary identifier for self-registration",
16421
+ "enum": [
16422
+ "contact",
16423
+ "account"
16424
+ ]
16425
+ },
15953
16426
  "user_account_self_management": {
15954
16427
  "type": "boolean",
15955
16428
  "description": "Enable or disable user account self management",
@@ -16368,6 +16841,13 @@
16368
16841
  },
16369
16842
  "origin": {
16370
16843
  "$ref": "#/components/schemas/Origin"
16844
+ },
16845
+ "global_blocks": {
16846
+ "type": "object",
16847
+ "description": "Portal-level blocks shared across all pages (e.g. footer). Keyed by block id.",
16848
+ "additionalProperties": {
16849
+ "$ref": "#/components/schemas/Block"
16850
+ }
16371
16851
  }
16372
16852
  }
16373
16853
  },
@@ -16480,6 +16960,11 @@
16480
16960
  "is_canary": {
16481
16961
  "type": "boolean",
16482
16962
  "description": "Whether the org is in canary mode"
16963
+ },
16964
+ "redirect_to": {
16965
+ "type": "string",
16966
+ "description": "The URL to redirect to",
16967
+ "example": "https://example.com"
16483
16968
  }
16484
16969
  }
16485
16970
  },
@@ -1 +1 @@
1
- {"s":"https://email-settings.sls.epilot.io","o":[["provisionEpilotEmailAddress","put","/v2/email-settings/email-addresses/epilot:provision",null,1],["setEmailAddressPrimary","post","/v2/email-settings/email-addresses/primary",null,1],["getEmailAddress","get","/v2/email-settings/email-addresses/{id}",[["EmailAddressId"]]],["deleteEmailAddress","delete","/v2/email-settings/email-addresses/{id}",[["EmailAddressId"]]],["updateEmailAddress","put","/v2/email-settings/email-addresses/{id}",[["EmailAddressId"]],1],["listEmailAddresses","get","/v2/email-settings/email-addresses"],["addEmailAddress","post","/v2/email-settings/email-addresses",null,1],["getSharedInbox","get","/v2/email-settings/shared-inboxes/{id}",[["SharedInboxId"]]],["deleteSharedInbox","delete","/v2/email-settings/shared-inboxes/{id}",[["SharedInboxId"],["successorInboxId","q"]]],["updateSharedInbox","put","/v2/email-settings/shared-inboxes/{id}",[["SharedInboxId"]],1],["listSharedInboxes","get","/v2/email-settings/shared-inboxes"],["addSharedInbox","post","/v2/email-settings/shared-inboxes",null,1],["listInboxBuckets","get","/v2/email-settings/inbox-buckets"],["connectOutlook","get","/v2/outlook/connect"],["getOutlookConnectionStatus","get","/v2/outlook/connection/status"],["disconnectOutlook","post","/v2/outlook/connection/disconnect",null,1],["connectMsTeams","post","/v2/channels/msteams/connect"],["disconnectMsTeams","post","/v2/channels/msteams/disconnect"],["getMsTeamsStatus","get","/v2/channels/msteams/status"],["connectOutlookMailbox","post","/v2/outlook/mailbox/connect",null,1],["disconnectOutlookMailbox","post","/v2/outlook/mailbox/{email}/disconnect",[["email","p",true]]],["startMailboxSync","post","/v2/outlook/mailbox/{email}/sync",[["email","p",true]],1],["getMailboxSyncStatus","get","/v2/outlook/mailbox/{email}/sync/status",[["email","p",true]]],["retryMailboxSync","post","/v2/outlook/mailbox/{email}/sync/retry",[["email","p",true]],1],["getConnectedOutlookEmails","get","/v2/outlook/mailbox/mappings"],["outlookOAuthCallback","get","/v2/outlook/oauth/callback",[["code","q"],["state","q",true],["session_state","q"],["error","q"],["error_description","q"],["error_subcode","q"],["client_info","q"],["error_uri","q"],["admin_consent","q"],["tenant","q"]]],["getSettings","get","/v1/email-settings",[["type","q",true],["id","q"]]],["addSetting","post","/v1/email-settings",null,1],["deleteSetting","delete","/v1/email-settings",null,1],["updateSetting","post","/v1/email-settings/{id}",[["id","p",true]],1],["addDomain","post","/v1/email-settings/domain",null,1],["deleteDomain","delete","/v1/email-settings/domain",null,1],["getDomains","get","/v1/email-settings/domain"],["verifyNameServers","post","/v1/email-settings/domain/name-servers:verify",null,1],["verifyDomain","post","/v1/email-settings/domain:verify",null,1]],"v":"3.0.3","cp":{"EmailAddressId":["id","p",true],"SharedInboxId":["id","p",true]}}
1
+ {"s":"https://email-settings.sls.epilot.io","o":[["provisionEpilotEmailAddress","put","/v2/email-settings/email-addresses/epilot:provision",null,1],["setEmailAddressPrimary","post","/v2/email-settings/email-addresses/primary",null,1],["getEmailAddress","get","/v2/email-settings/email-addresses/{id}",[["EmailAddressId"]]],["deleteEmailAddress","delete","/v2/email-settings/email-addresses/{id}",[["EmailAddressId"]]],["updateEmailAddress","put","/v2/email-settings/email-addresses/{id}",[["EmailAddressId"]],1],["listEmailAddresses","get","/v2/email-settings/email-addresses"],["addEmailAddress","post","/v2/email-settings/email-addresses",null,1],["getSharedInbox","get","/v2/email-settings/shared-inboxes/{id}",[["SharedInboxId"]]],["deleteSharedInbox","delete","/v2/email-settings/shared-inboxes/{id}",[["SharedInboxId"],["successorInboxId","q"]]],["updateSharedInbox","put","/v2/email-settings/shared-inboxes/{id}",[["SharedInboxId"]],1],["listSharedInboxes","get","/v2/email-settings/shared-inboxes"],["addSharedInbox","post","/v2/email-settings/shared-inboxes",null,1],["listInboxBuckets","get","/v2/email-settings/inbox-buckets"],["connectOutlook","post","/v2/outlook/connect",null,1],["getOutlookConnectionStatus","get","/v2/outlook/connection/status"],["disconnectOutlook","post","/v2/outlook/connection/disconnect",null,1],["connectMsTeams","post","/v2/channels/msteams/connect"],["disconnectMsTeams","post","/v2/channels/msteams/disconnect"],["getMsTeamsStatus","get","/v2/channels/msteams/status"],["connectOutlookMailbox","post","/v2/outlook/mailbox/connect",null,1],["disconnectOutlookMailbox","post","/v2/outlook/mailbox/{email}/disconnect",[["email","p",true]]],["startMailboxSync","post","/v2/outlook/mailbox/{email}/sync",[["email","p",true]],1],["getMailboxSyncStatus","get","/v2/outlook/mailbox/{email}/sync/status",[["email","p",true]]],["retryMailboxSync","post","/v2/outlook/mailbox/{email}/sync/retry",[["email","p",true]],1],["getConnectedOutlookEmails","get","/v2/outlook/mailbox/mappings"],["outlookOAuthCallback","get","/v2/outlook/oauth/callback",[["code","q"],["state","q",true],["session_state","q"],["error","q"],["error_description","q"],["error_subcode","q"],["client_info","q"],["error_uri","q"],["admin_consent","q"],["tenant","q"]]],["getSettings","get","/v1/email-settings",[["type","q",true],["id","q"]]],["addSetting","post","/v1/email-settings",null,1],["deleteSetting","delete","/v1/email-settings",null,1],["updateSetting","post","/v1/email-settings/{id}",[["id","p",true]],1],["addDomain","post","/v1/email-settings/domain",null,1],["deleteDomain","delete","/v1/email-settings/domain",null,1],["getDomains","get","/v1/email-settings/domain"],["verifyNameServers","post","/v1/email-settings/domain/name-servers:verify",null,1],["verifyDnsRecords","post","/v1/email-settings/domain/dns-records:verify",null,1],["verifyDomain","post","/v1/email-settings/domain:verify",null,1]],"v":"3.0.3","cp":{"EmailAddressId":["id","p",true],"SharedInboxId":["id","p",true]}}