@epilot/sdk 2.7.1 → 2.7.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 (207) hide show
  1. package/definitions/app.json +101 -8
  2. package/definitions/configuration-hub-runtime.json +1 -1
  3. package/definitions/configuration-hub.json +623 -0
  4. package/definitions/customer-portal.json +72 -58
  5. package/definitions/design-runtime.json +1 -1
  6. package/definitions/design.json +52 -12
  7. package/definitions/journey-runtime.json +1 -1
  8. package/definitions/journey.json +21 -1
  9. package/definitions/notes-runtime.json +1 -1
  10. package/definitions/notes.json +123 -1
  11. package/definitions/pricing.json +149 -404
  12. package/dist/apis/access-token.cjs +6 -6
  13. package/dist/apis/access-token.js +1 -1
  14. package/dist/apis/address-suggestions.cjs +6 -6
  15. package/dist/apis/address-suggestions.js +1 -1
  16. package/dist/apis/address.cjs +6 -6
  17. package/dist/apis/address.js +1 -1
  18. package/dist/apis/ai-agents.cjs +6 -6
  19. package/dist/apis/ai-agents.js +1 -1
  20. package/dist/apis/app.cjs +6 -6
  21. package/dist/apis/app.d.cts +2 -2
  22. package/dist/apis/app.d.ts +2 -2
  23. package/dist/apis/app.js +1 -1
  24. package/dist/apis/audit-logs.cjs +6 -6
  25. package/dist/apis/audit-logs.js +1 -1
  26. package/dist/apis/automation.cjs +6 -6
  27. package/dist/apis/automation.js +1 -1
  28. package/dist/apis/billing.cjs +6 -6
  29. package/dist/apis/billing.js +1 -1
  30. package/dist/apis/blueprint-manifest.cjs +6 -6
  31. package/dist/apis/blueprint-manifest.js +1 -1
  32. package/dist/apis/calendar.cjs +6 -6
  33. package/dist/apis/calendar.js +1 -1
  34. package/dist/apis/configuration-hub.cjs +8 -8
  35. package/dist/apis/configuration-hub.d.cts +2 -2
  36. package/dist/apis/configuration-hub.d.ts +2 -2
  37. package/dist/apis/configuration-hub.js +2 -2
  38. package/dist/apis/consent.cjs +6 -6
  39. package/dist/apis/consent.js +1 -1
  40. package/dist/apis/customer-portal.cjs +6 -6
  41. package/dist/apis/customer-portal.d.cts +2 -2
  42. package/dist/apis/customer-portal.d.ts +2 -2
  43. package/dist/apis/customer-portal.js +1 -1
  44. package/dist/apis/dashboard.cjs +6 -6
  45. package/dist/apis/dashboard.js +1 -1
  46. package/dist/apis/data-governance.cjs +6 -6
  47. package/dist/apis/data-governance.js +1 -1
  48. package/dist/apis/deduplication.cjs +6 -6
  49. package/dist/apis/deduplication.js +1 -1
  50. package/dist/apis/design.cjs +8 -8
  51. package/dist/apis/design.d.cts +2 -2
  52. package/dist/apis/design.d.ts +2 -2
  53. package/dist/apis/design.js +2 -2
  54. package/dist/apis/document.cjs +6 -6
  55. package/dist/apis/document.js +1 -1
  56. package/dist/apis/email-settings.cjs +6 -6
  57. package/dist/apis/email-settings.js +1 -1
  58. package/dist/apis/email-template.cjs +6 -6
  59. package/dist/apis/email-template.js +1 -1
  60. package/dist/apis/entity-mapping.cjs +6 -6
  61. package/dist/apis/entity-mapping.js +1 -1
  62. package/dist/apis/entity.cjs +6 -6
  63. package/dist/apis/entity.js +1 -1
  64. package/dist/apis/environments.cjs +6 -6
  65. package/dist/apis/environments.js +1 -1
  66. package/dist/apis/event-catalog.cjs +6 -6
  67. package/dist/apis/event-catalog.js +1 -1
  68. package/dist/apis/file.cjs +6 -6
  69. package/dist/apis/file.js +1 -1
  70. package/dist/apis/iban.cjs +6 -6
  71. package/dist/apis/iban.js +1 -1
  72. package/dist/apis/integration-toolkit.cjs +6 -6
  73. package/dist/apis/integration-toolkit.js +1 -1
  74. package/dist/apis/journey.cjs +8 -8
  75. package/dist/apis/journey.d.cts +2 -2
  76. package/dist/apis/journey.d.ts +2 -2
  77. package/dist/apis/journey.js +2 -2
  78. package/dist/apis/kanban.cjs +6 -6
  79. package/dist/apis/kanban.js +1 -1
  80. package/dist/apis/message.cjs +6 -6
  81. package/dist/apis/message.js +1 -1
  82. package/dist/apis/metering.cjs +6 -6
  83. package/dist/apis/metering.js +1 -1
  84. package/dist/apis/notes.cjs +8 -8
  85. package/dist/apis/notes.d.cts +2 -2
  86. package/dist/apis/notes.d.ts +2 -2
  87. package/dist/apis/notes.js +2 -2
  88. package/dist/apis/notification.cjs +6 -6
  89. package/dist/apis/notification.js +1 -1
  90. package/dist/apis/organization.cjs +6 -6
  91. package/dist/apis/organization.js +1 -1
  92. package/dist/apis/partner-directory.cjs +6 -6
  93. package/dist/apis/partner-directory.js +1 -1
  94. package/dist/apis/permissions.cjs +6 -6
  95. package/dist/apis/permissions.js +1 -1
  96. package/dist/apis/pricing-tier.cjs +6 -6
  97. package/dist/apis/pricing-tier.js +1 -1
  98. package/dist/apis/pricing.cjs +6 -6
  99. package/dist/apis/pricing.d.cts +2 -2
  100. package/dist/apis/pricing.d.ts +2 -2
  101. package/dist/apis/pricing.js +1 -1
  102. package/dist/apis/purpose.cjs +6 -6
  103. package/dist/apis/purpose.js +1 -1
  104. package/dist/apis/query.cjs +6 -6
  105. package/dist/apis/query.js +1 -1
  106. package/dist/apis/sandbox.cjs +6 -6
  107. package/dist/apis/sandbox.js +1 -1
  108. package/dist/apis/sharing.cjs +6 -6
  109. package/dist/apis/sharing.js +1 -1
  110. package/dist/apis/submission.cjs +6 -6
  111. package/dist/apis/submission.js +1 -1
  112. package/dist/apis/target.cjs +6 -6
  113. package/dist/apis/target.js +1 -1
  114. package/dist/apis/targeting.cjs +6 -6
  115. package/dist/apis/targeting.js +1 -1
  116. package/dist/apis/template-variables.cjs +6 -6
  117. package/dist/apis/template-variables.js +1 -1
  118. package/dist/apis/user.cjs +6 -6
  119. package/dist/apis/user.js +1 -1
  120. package/dist/apis/validation-rules.cjs +6 -6
  121. package/dist/apis/validation-rules.js +1 -1
  122. package/dist/apis/webhooks.cjs +6 -6
  123. package/dist/apis/webhooks.js +1 -1
  124. package/dist/apis/workflow-definition.cjs +6 -6
  125. package/dist/apis/workflow-definition.js +1 -1
  126. package/dist/apis/workflow.cjs +6 -6
  127. package/dist/apis/workflow.js +1 -1
  128. package/dist/{app-SSF545U7.cjs → app-74LECFMK.cjs} +1 -1
  129. package/dist/{app-34OBBTA4.js → app-GNUHCGPO.js} +1 -1
  130. package/dist/{app.d--5n0FQQ4.d.cts → app.d-BOR23dso.d.cts} +104 -4
  131. package/dist/{app.d--5n0FQQ4.d.ts → app.d-BOR23dso.d.ts} +104 -4
  132. package/dist/bin/cli.js +1 -1
  133. package/dist/{chunk-SCMAZ73K.js → chunk-IVLR4CQF.js} +26 -17
  134. package/dist/chunk-JOUTFBLN.js +14 -0
  135. package/dist/chunk-LAWKCWVU.cjs +14 -0
  136. package/dist/{chunk-ZSONBZIF.cjs → chunk-MOLFG5L4.cjs} +1 -1
  137. package/dist/chunk-P4NA7NWG.js +14 -0
  138. package/dist/{chunk-R7XDTILZ.cjs → chunk-SOPJ42HW.cjs} +26 -17
  139. package/dist/chunk-WHXYES2D.cjs +14 -0
  140. package/dist/{chunk-RW5JOHG7.js → chunk-WIQXF7DD.js} +1 -1
  141. package/dist/{chunk-ONOGGR6Q.js → chunk-WW6DVKJR.js} +1 -1
  142. package/dist/{chunk-M2SSGV7K.cjs → chunk-ZOQUGWQL.cjs} +1 -1
  143. package/dist/configuration-hub-E7S4JB2T.js +7 -0
  144. package/dist/configuration-hub-Q5JBYB52.cjs +7 -0
  145. package/dist/{configuration-hub-runtime-L6IOERSP.js → configuration-hub-runtime-CXME7TCX.js} +1 -1
  146. package/dist/{configuration-hub-runtime-I5Y67CXD.cjs → configuration-hub-runtime-QVLJKEZD.cjs} +2 -2
  147. package/dist/configuration-hub.d-CbSJDa7k.d.cts +1096 -0
  148. package/dist/configuration-hub.d-CbSJDa7k.d.ts +1096 -0
  149. package/dist/customer-portal-IBM3K2EZ.cjs +7 -0
  150. package/dist/customer-portal-XPYKMIIA.js +7 -0
  151. package/dist/{customer-portal.d-C7ZCbjiY.d.cts → customer-portal.d-CTTCBAZI.d.cts} +217 -61
  152. package/dist/{customer-portal.d-C7ZCbjiY.d.ts → customer-portal.d-CTTCBAZI.d.ts} +217 -61
  153. package/dist/design-DUFBH5ZB.js +7 -0
  154. package/dist/design-W3D3UPGB.cjs +7 -0
  155. package/dist/design-runtime-3RHYNHUV.cjs +5 -0
  156. package/dist/{design-runtime-QMJM4FAF.js → design-runtime-DLMA4EHQ.js} +1 -1
  157. package/dist/{design.d-BRre8iLg.d.cts → design.d-DzSDu8cy.d.cts} +41 -3
  158. package/dist/{design.d-BRre8iLg.d.ts → design.d-DzSDu8cy.d.ts} +41 -3
  159. package/dist/index.cjs +16 -16
  160. package/dist/index.d.cts +7 -7
  161. package/dist/index.d.ts +7 -7
  162. package/dist/index.js +5 -5
  163. package/dist/journey-4DIIPRU4.js +7 -0
  164. package/dist/journey-ATC3Y5AW.cjs +7 -0
  165. package/dist/{journey-runtime-SPBL3F32.cjs → journey-runtime-G2O5C3N2.cjs} +2 -2
  166. package/dist/{journey-runtime-YXIAOTMD.js → journey-runtime-RI2LJO5S.js} +1 -1
  167. package/dist/{journey.d-ClXO0xK8.d.cts → journey.d-BenIUWaO.d.cts} +9 -3
  168. package/dist/{journey.d-ClXO0xK8.d.ts → journey.d-BenIUWaO.d.ts} +9 -3
  169. package/dist/{js-yaml-UPZKYVRY.js → js-yaml-DLCVPJ7G.js} +17 -15
  170. package/dist/notes-6JESMRLW.js +7 -0
  171. package/dist/notes-SLEUSNP4.cjs +7 -0
  172. package/dist/{notes-runtime-CVNAVKPP.js → notes-runtime-I4SWR3PZ.js} +1 -1
  173. package/dist/notes-runtime-YWTRRNH5.cjs +5 -0
  174. package/dist/{notes.d-BcV_m5fe.d.cts → notes.d-rbcyHfiB.d.cts} +101 -3
  175. package/dist/{notes.d-BcV_m5fe.d.ts → notes.d-rbcyHfiB.d.ts} +101 -3
  176. package/dist/pricing-F7HQ6BWC.cjs +7 -0
  177. package/dist/pricing-YCD4EUGI.js +7 -0
  178. package/dist/{pricing.d-BHpMU4KU.d.cts → pricing.d-exMaGWm1.d.cts} +140 -280
  179. package/dist/{pricing.d-BHpMU4KU.d.ts → pricing.d-exMaGWm1.d.ts} +140 -280
  180. package/docs/app.md +34 -10
  181. package/docs/configuration-hub.md +660 -0
  182. package/docs/customer-portal.md +221 -159
  183. package/docs/design.md +81 -4
  184. package/docs/journey.md +2 -0
  185. package/docs/notes.md +47 -1
  186. package/docs/pricing.md +269 -218
  187. package/package.json +1 -1
  188. package/dist/chunk-EIIIKDOJ.cjs +0 -14
  189. package/dist/chunk-KIWRGUKM.js +0 -14
  190. package/dist/chunk-MB6NKETA.cjs +0 -14
  191. package/dist/chunk-VSZEOCIE.js +0 -14
  192. package/dist/configuration-hub-A3S6ND6R.cjs +0 -7
  193. package/dist/configuration-hub-PMAW44U5.js +0 -7
  194. package/dist/configuration-hub.d-Cqaq2F-W.d.cts +0 -478
  195. package/dist/configuration-hub.d-Cqaq2F-W.d.ts +0 -478
  196. package/dist/customer-portal-7HYSBH7H.cjs +0 -7
  197. package/dist/customer-portal-X4LJX6AU.js +0 -7
  198. package/dist/design-DROLIWS3.js +0 -7
  199. package/dist/design-XZKOZLTR.cjs +0 -7
  200. package/dist/design-runtime-OXEXKZVG.cjs +0 -5
  201. package/dist/journey-KDR5EU3W.js +0 -7
  202. package/dist/journey-REBN4TGQ.cjs +0 -7
  203. package/dist/notes-K2IIFCX3.cjs +0 -7
  204. package/dist/notes-Q7JGS7O3.js +0 -7
  205. package/dist/notes-runtime-E3YYF74V.cjs +0 -5
  206. package/dist/pricing-FODHQFCB.cjs +0 -7
  207. package/dist/pricing-XRIDVZFC.js +0 -7
@@ -1867,6 +1867,13 @@
1867
1867
  "example": "CAA_ERROR"
1868
1868
  }
1869
1869
  }
1870
+ },
1871
+ "identity_providers": {
1872
+ "type": "array",
1873
+ "description": "SSO identity providers configured for the portal. Includes raw\n`oidc_config.client_secret` values so the admin UI can round-trip\nthem. Customers are encouraged to reference secrets via env\ntemplates (`{{ env.VAR }}`) rather than embed raw values.\n",
1874
+ "items": {
1875
+ "$ref": "#/components/schemas/ProviderConfig"
1876
+ }
1870
1877
  }
1871
1878
  }
1872
1879
  }
@@ -1994,6 +2001,13 @@
1994
2001
  "example": "CAA_ERROR"
1995
2002
  }
1996
2003
  }
2004
+ },
2005
+ "identity_providers": {
2006
+ "type": "array",
2007
+ "description": "SSO identity providers configured for the portal. Includes raw\n`oidc_config.client_secret` values so the admin UI can round-trip\nthem. Customers are encouraged to reference secrets via env\ntemplates (`{{ env.VAR }}`) rather than embed raw values.\n",
2008
+ "items": {
2009
+ "$ref": "#/components/schemas/ProviderConfig"
2010
+ }
1997
2011
  }
1998
2012
  }
1999
2013
  }
@@ -7668,7 +7682,7 @@
7668
7682
  ],
7669
7683
  "responses": {
7670
7684
  "200": {
7671
- "description": "Resolved public SSO provider configuration",
7685
+ "description": "Resolved public SSO provider configuration. The handler strips `oidc_config.client_secret` from the response (kept server-side for the token exchange); the schema includes it for shape compatibility with the portal-config response.",
7672
7686
  "content": {
7673
7687
  "application/json": {
7674
7688
  "schema": {
@@ -10708,6 +10722,13 @@
10708
10722
  "description": "Default admin users for pending user notification to notify"
10709
10723
  }
10710
10724
  }
10725
+ },
10726
+ "identity_providers": {
10727
+ "type": "array",
10728
+ "description": "SSO identity providers for the portal. When sent on a portal save (PUT/POST),\nthe list is fully synced — incoming providers are upserted and any existing\nproviders not in the list are deleted. Omit the field to leave SSO\nconfiguration unchanged; send an empty array to remove all providers.\n\nEach provider is persisted verbatim — `oidc_config.client_secret` is stored\nas sent. Customers are encouraged to reference an org env secret via\n`{{ env.VAR }}` rather than embed raw values.\n",
10729
+ "items": {
10730
+ "$ref": "#/components/schemas/ProviderConfig"
10731
+ }
10711
10732
  }
10712
10733
  }
10713
10734
  },
@@ -14859,6 +14880,11 @@
14859
14880
  "type": "string",
14860
14881
  "description": "Lower allowed limit of the meter reading",
14861
14882
  "example": "{{CallResponse.data.lower_limit}}"
14883
+ },
14884
+ "errorMessagePath": {
14885
+ "type": "string",
14886
+ "description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
14887
+ "example": "error.message"
14862
14888
  }
14863
14889
  }
14864
14890
  },
@@ -14938,6 +14964,11 @@
14938
14964
  "dataPath": {
14939
14965
  "type": "string",
14940
14966
  "description": "Optional path to the data (array) in the response. If omitted, the data is assumed to be on the top level."
14967
+ },
14968
+ "errorMessagePath": {
14969
+ "type": "string",
14970
+ "description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
14971
+ "example": "error.message"
14941
14972
  }
14942
14973
  }
14943
14974
  },
@@ -15016,6 +15047,11 @@
15016
15047
  "dataPath": {
15017
15048
  "type": "string",
15018
15049
  "description": "Optional path to the data (array) in the response. If omitted, the data is assumed to be on the top level."
15050
+ },
15051
+ "errorMessagePath": {
15052
+ "type": "string",
15053
+ "description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
15054
+ "example": "error.message"
15019
15055
  }
15020
15056
  }
15021
15057
  },
@@ -15095,6 +15131,16 @@
15095
15131
  "url"
15096
15132
  ]
15097
15133
  },
15134
+ "resolved": {
15135
+ "type": "object",
15136
+ "properties": {
15137
+ "errorMessagePath": {
15138
+ "type": "string",
15139
+ "description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
15140
+ "example": "error.message"
15141
+ }
15142
+ }
15143
+ },
15098
15144
  "use_static_ips": {
15099
15145
  "type": "boolean",
15100
15146
  "deprecated": true,
@@ -15170,6 +15216,11 @@
15170
15216
  "dataPath": {
15171
15217
  "type": "string",
15172
15218
  "description": "Optional path to the metadata object in the response. If omitted, the metadata is assumed to be on the top level."
15219
+ },
15220
+ "errorMessagePath": {
15221
+ "type": "string",
15222
+ "description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
15223
+ "example": "error.message"
15173
15224
  }
15174
15225
  }
15175
15226
  },
@@ -15248,6 +15299,11 @@
15248
15299
  "dataPath": {
15249
15300
  "type": "string",
15250
15301
  "description": "Optional path to the data (array) in the response. If omitted, the data is assumed to be on the top level."
15302
+ },
15303
+ "errorMessagePath": {
15304
+ "type": "string",
15305
+ "description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
15306
+ "example": "error.message"
15251
15307
  }
15252
15308
  }
15253
15309
  },
@@ -15611,7 +15667,7 @@
15611
15667
  "$ref": "#/components/schemas/ProviderDisplayName"
15612
15668
  },
15613
15669
  "oidc_config": {
15614
- "$ref": "#/components/schemas/OIDCProviderPublicConfig"
15670
+ "$ref": "#/components/schemas/OIDCProviderConfig"
15615
15671
  },
15616
15672
  "mobile_oidc_config": {
15617
15673
  "$ref": "#/components/schemas/MoblieOIDCConfig"
@@ -15761,7 +15817,7 @@
15761
15817
  },
15762
15818
  "OIDCProviderConfig": {
15763
15819
  "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",
15820
+ "description": "OIDC provider configuration. Values are resolved at SSO invocation time\n(login / callback), so the fields below may reference org env vars via\nmustache-like templates, e.g. `{{ env.MY_PROVIDER_CLIENT_SECRET }}`.\n\nFields used to render the SSO buttons up-front (`ProviderConfig.slug`,\n`ProviderConfig.display_name`) are NOT interpolated and must be literal.\n",
15765
15821
  "properties": {
15766
15822
  "type": {
15767
15823
  "type": "string",
@@ -15819,63 +15875,9 @@
15819
15875
  "scope"
15820
15876
  ]
15821
15877
  },
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
- },
15876
15878
  "MoblieOIDCConfig": {
15877
15879
  "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",
15880
+ "description": "Mobile OIDC configuration. Values are resolved at SSO invocation time, so the\nfields below may reference org env vars via mustache-like templates, e.g.\n`{{ env.MOBILE_CLIENT_SECRET }}`.\n",
15879
15881
  "properties": {
15880
15882
  "client_id": {
15881
15883
  "type": "string",
@@ -15892,6 +15894,18 @@
15892
15894
  "OIDCProviderMetadata": {
15893
15895
  "type": "object",
15894
15896
  "properties": {
15897
+ "response_modes_supported": {
15898
+ "type": "array",
15899
+ "description": "Response modes the provider accepts (e.g. `form_post` for Apple)",
15900
+ "items": {
15901
+ "type": "string",
15902
+ "enum": [
15903
+ "form_post",
15904
+ "fragment",
15905
+ "query"
15906
+ ]
15907
+ }
15908
+ },
15895
15909
  "authorization_endpoint": {
15896
15910
  "type": "string",
15897
15911
  "description": "URL of the authorization endpoint",
@@ -1 +1 @@
1
- {"s":"https://design-builder-api.{environment}.epilot.io","o":[["getAllDesigns","get","/v1/designs"],["addDesign","post","/v1/designs",null,1],["getDesign","get","/v1/designs/{designId}",[["designId","p",true]]],["deleteDesign","delete","/v1/designs/{designId}",[["designId","p",true]]],["updateDesign","put","/v1/designs/{designId}",[["designId","p",true]],1],["getThemeFromDesign","get","/v1/designs/{designId}/parse",[["designId","p",true],["orgId","q"],["theme","q",true]]],["uploadFile","post","/v1/designs/files",null,1],["getFiles","get","/v1/designs/files",[["type","q"]]],["getLimit","get","/v1/designs/limit"],["getBrands","get","/v1/brands"],["getConsumerDesign","get","/v1/designs/consumer/{application}/{consumerId}",[["consumerId","p",true],["application","p",true]]],["addConsumer","put","/v1/designs/addConsumer/{application}/{designId}",[["designId","p",true],["application","p",true]],1],["removeConsumer","put","/v1/designs/removeConsumer/{application}/{designId}",[["designId","p",true],["application","p",true]],1]],"sv":{"environment":{"default":"sls","enum":["sls","dev.sls","staging.sls"]}},"v":"3.0.3"}
1
+ {"s":"https://design-builder-api.sls.epilot.io","o":[["getAllDesigns","get","/v1/designs"],["addDesign","post","/v1/designs",null,1],["getDesign","get","/v1/designs/{designId}",[["designId","p",true]]],["deleteDesign","delete","/v1/designs/{designId}",[["designId","p",true]]],["updateDesign","put","/v1/designs/{designId}",[["designId","p",true]],1],["getThemeFromDesign","get","/v1/designs/{designId}/parse",[["designId","p",true],["orgId","q"],["theme","q",true]]],["uploadFile","post","/v1/designs/files",null,1],["getFiles","get","/v1/designs/files",[["type","q"]]],["getLimit","get","/v1/designs/limit"],["getBrands","get","/v1/brands"],["getConsumerDesign","get","/v1/designs/consumer/{application}/{consumerId}",[["consumerId","p",true],["application","p",true]]],["addConsumer","put","/v1/designs/addConsumer/{application}/{designId}",[["designId","p",true],["application","p",true]],1],["removeConsumer","put","/v1/designs/removeConsumer/{application}/{designId}",[["designId","p",true],["application","p",true]],1]],"v":"3.0.3"}
@@ -12,17 +12,7 @@
12
12
  ],
13
13
  "servers": [
14
14
  {
15
- "url": "https://design-builder-api.{environment}.epilot.io",
16
- "variables": {
17
- "environment": {
18
- "default": "sls",
19
- "enum": [
20
- "sls",
21
- "dev.sls",
22
- "staging.sls"
23
- ]
24
- }
25
- }
15
+ "url": "https://design-builder-api.sls.epilot.io"
26
16
  }
27
17
  ],
28
18
  "security": [
@@ -354,7 +344,7 @@
354
344
  "content": {
355
345
  "application/json": {
356
346
  "schema": {
357
- "type": "object"
347
+ "$ref": "#/components/schemas/ParseThemeFromDesignResp"
358
348
  }
359
349
  }
360
350
  }
@@ -1674,6 +1664,10 @@
1674
1664
  },
1675
1665
  "url": {
1676
1666
  "type": "string"
1667
+ },
1668
+ "file_id": {
1669
+ "type": "string",
1670
+ "description": "ID of the source file entity in the epilot file-entity system. Set when the file was picked from the File Manager (rather than uploaded directly to the design-builder bucket). Consumers resolve the live `public_url` via this reference. The org id is derived from the journey's owning org at render time (same convention as journey image blocks), so blueprint cross-org installs work without any extra remapping."
1677
1671
  }
1678
1672
  },
1679
1673
  "required": [
@@ -1716,6 +1710,52 @@
1716
1710
  "$ref": "#/components/schemas/Application"
1717
1711
  }
1718
1712
  }
1713
+ },
1714
+ "ParseThemeFromDesignResp": {
1715
+ "type": "object",
1716
+ "properties": {
1717
+ "theme": {
1718
+ "$ref": "#/components/schemas/Theme"
1719
+ },
1720
+ "design": {
1721
+ "type": "object",
1722
+ "properties": {
1723
+ "id": {
1724
+ "type": "string"
1725
+ },
1726
+ "last_modified_at": {
1727
+ "type": "string"
1728
+ },
1729
+ "style_name": {
1730
+ "type": "string"
1731
+ },
1732
+ "style": {
1733
+ "type": "object",
1734
+ "properties": {
1735
+ "logo": {
1736
+ "$ref": "#/components/schemas/LogoData"
1737
+ },
1738
+ "palette": {
1739
+ "$ref": "#/components/schemas/PaletteData"
1740
+ },
1741
+ "typography": {
1742
+ "$ref": "#/components/schemas/TypographyData"
1743
+ }
1744
+ }
1745
+ },
1746
+ "custom_theme": {
1747
+ "type": "string"
1748
+ },
1749
+ "use_custom_theme": {
1750
+ "type": "boolean"
1751
+ },
1752
+ "journey_design_tokens": {
1753
+ "type": "object",
1754
+ "description": "Design tokens for journey customization (renamed from design_tokens)"
1755
+ }
1756
+ }
1757
+ }
1758
+ }
1719
1759
  }
1720
1760
  }
1721
1761
  }
@@ -1 +1 @@
1
- {"s":"https://journey-config.sls.epilot.io","o":[["getJourneysByOrgId","get","/v1/journey/organization/{id}",[["id","p",true],["hydrate","q"]]],["getJourney","get","/v1/journey/configuration/{id}",[["id","p",true],["source","q"],["orgId","q"]]],["removeJourney","delete","/v1/journey/configuration/{id}",[["id","p",true]]],["getJourneyProducts","get","/v1/journey/products/{id}",[["id","p",true],["source","q"],["postal_code","q"],["city","q"],["street","q"],["street_number","q"]]],["createJourney","post","/v1/journey/configuration",[["skipAutomation","q"]],1],["updateJourney","put","/v1/journey/configuration",null,1],["patchUpdateJourney","patch","/v1/journey/configuration",null,1],["searchJourneys","post","/v1/journey/configuration/search",null,1],["generateDocument","post","/v1/journey/document:generate",null,1],["createJourneyV2","post","/v2/journey/configuration",[["skipAutomation","q"]],1],["updateJourneyV2","put","/v2/journey/configuration",null,1],["patchUpdateJourneyV2","patch","/v2/journey/configuration",null,1],["getJourneyV2","get","/v2/journey/configuration/{id}",[["id","p",true]]],["removeJourneyV2","delete","/v2/journey/configuration/{id}",[["id","p",true]]],["getSettingsForJourney","get","/v1/journey/{id}/settings",[["id","p",true]]],["getButtonOptions","get","/v1/journey/button-options",[["fileId","q",true]]]],"v":"3.0.0"}
1
+ {"s":"https://journey-config.sls.epilot.io","o":[["getJourneysByOrgId","get","/v1/journey/organization/{id}",[["id","p",true],["hydrate","q"]]],["getJourney","get","/v1/journey/configuration/{id}",[["id","p",true],["version","q"],["source","q"],["orgId","q"]]],["removeJourney","delete","/v1/journey/configuration/{id}",[["id","p",true]]],["getJourneyProducts","get","/v1/journey/products/{id}",[["id","p",true],["source","q"],["postal_code","q"],["city","q"],["street","q"],["street_number","q"]]],["createJourney","post","/v1/journey/configuration",[["skipAutomation","q"]],1],["updateJourney","put","/v1/journey/configuration",null,1],["patchUpdateJourney","patch","/v1/journey/configuration",null,1],["searchJourneys","post","/v1/journey/configuration/search",null,1],["generateDocument","post","/v1/journey/document:generate",null,1],["createJourneyV2","post","/v2/journey/configuration",[["skipAutomation","q"]],1],["updateJourneyV2","put","/v2/journey/configuration",null,1],["patchUpdateJourneyV2","patch","/v2/journey/configuration",null,1],["getJourneyV2","get","/v2/journey/configuration/{id}",[["id","p",true],["version","q"]]],["removeJourneyV2","delete","/v2/journey/configuration/{id}",[["id","p",true]]],["getSettingsForJourney","get","/v1/journey/{id}/settings",[["id","p",true]]],["getButtonOptions","get","/v1/journey/button-options",[["fileId","q",true]]]],"v":"3.0.0"}
@@ -3,7 +3,7 @@
3
3
  "info": {
4
4
  "title": "Journey API",
5
5
  "description": "API to configure journeys",
6
- "version": "1.4.1"
6
+ "version": "1.4.2"
7
7
  },
8
8
  "security": [
9
9
  {
@@ -114,6 +114,16 @@
114
114
  "example": "509cdffe-424f-457a-95c2-9708c304ce77"
115
115
  }
116
116
  },
117
+ {
118
+ "name": "version",
119
+ "in": "query",
120
+ "description": "DynamoDB version to fetch. `0` (default) is the live row; positive integers are historical snapshots created on each save. Note: this is distinct from the `revisions` counter on the row body.",
121
+ "required": false,
122
+ "schema": {
123
+ "type": "integer",
124
+ "default": 0
125
+ }
126
+ },
117
127
  {
118
128
  "name": "source",
119
129
  "in": "query",
@@ -708,6 +718,16 @@
708
718
  "format": "uuid",
709
719
  "example": "509cdffe-424f-457a-95c2-9708c304ce77"
710
720
  }
721
+ },
722
+ {
723
+ "name": "version",
724
+ "in": "query",
725
+ "description": "DynamoDB version to fetch. `0` (default) is the live row; positive integers are historical snapshots created on each save. Note: this is distinct from the `revisions` counter on the row body.",
726
+ "required": false,
727
+ "schema": {
728
+ "type": "integer",
729
+ "default": 0
730
+ }
711
731
  }
712
732
  ],
713
733
  "responses": {
@@ -1 +1 @@
1
- {"s":"https://notes.sls.epilot.io","o":[["createNote","post","/v1/note",null,1],["getNote","get","/v1/note/{id}",[["id","p",true],["hydrate","q"]]],["patchNote","patch","/v1/note/{id}",[["id","p",true]],1],["updateNote","put","/v1/note/{id}",[["id","p",true]],1],["deleteNote","delete","/v1/note/{id}",[["id","p",true]]],["searchNotesByContext","post","/v1/notes:search",null,1],["getNotesByContext","get","/v1/notes/{entity_id}",[["entity_id","p",true],["contexts","q"],["from","q"],["size","q"]]],["pinNote","post","/v1/note/{id}/pin",[["id","p",true]]],["getNoteContexts","get","/v1/note/{id}/context",[["id","p",true]]],["addNoteReaction","post","/v1/note/{id}/reaction",[["id","p",true]],1],["removeNoteReaction","delete","/v1/note/{id}/reaction/{emoji_shortcode}",[["id","p",true],["emoji_shortcode","p",true]]],["toggleNoteReactions","post","/v1/note/{id}/reactions/toggle",[["id","p",true]],1]]}
1
+ {"s":"https://notes.sls.epilot.io","o":[["createNote","post","/v1/note",null,1],["getNote","get","/v1/note/{id}",[["id","p",true],["hydrate","q"]]],["patchNote","patch","/v1/note/{id}",[["id","p",true]],1],["updateNote","put","/v1/note/{id}",[["id","p",true]],1],["deleteNote","delete","/v1/note/{id}",[["id","p",true]]],["searchNotesByContext","post","/v1/notes:search",null,1],["getNotesByContext","get","/v1/notes/{entity_id}",[["entity_id","p",true],["contexts","q"],["filter","q"],["from","q"],["size","q"]]],["pinNote","post","/v1/note/{id}/pin",[["id","p",true]]],["archiveNote","post","/v1/note/{id}/archive",[["id","p",true]]],["unarchiveNote","post","/v1/note/{id}/unarchive",[["id","p",true]]],["getNoteContexts","get","/v1/note/{id}/context",[["id","p",true]]],["addNoteReaction","post","/v1/note/{id}/reaction",[["id","p",true]],1],["removeNoteReaction","delete","/v1/note/{id}/reaction/{emoji_shortcode}",[["id","p",true],["emoji_shortcode","p",true]]],["toggleNoteReactions","post","/v1/note/{id}/reactions/toggle",[["id","p",true]],1]]}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "openapi": "3.0.2",
3
3
  "info": {
4
- "version": "2.4.0",
4
+ "version": "2.6.0",
5
5
  "title": "Notes API",
6
6
  "description": "Facade API Backend for Epilot Notes feature",
7
7
  "contact": {
@@ -23,6 +23,9 @@
23
23
  },
24
24
  {
25
25
  "name": "Reactions"
26
+ },
27
+ {
28
+ "name": "Archive"
26
29
  }
27
30
  ],
28
31
  "security": [
@@ -285,6 +288,14 @@
285
288
  }
286
289
  }
287
290
  },
291
+ {
292
+ "in": "query",
293
+ "name": "filter",
294
+ "description": "Archive-state filter. 'active' (default) returns non-archived notes only, 'archived' returns only archived notes, 'all' returns both.",
295
+ "schema": {
296
+ "$ref": "#/components/schemas/NotesListFilter"
297
+ }
298
+ },
288
299
  {
289
300
  "in": "query",
290
301
  "name": "from",
@@ -347,6 +358,74 @@
347
358
  }
348
359
  }
349
360
  },
361
+ "/v1/note/{id}/archive": {
362
+ "post": {
363
+ "operationId": "archiveNote",
364
+ "summary": "archiveNote",
365
+ "description": "Archives a root Note entry by setting its `_archived_at` timestamp to the current server time. The same timestamp is cascaded to every comment under the note so the entire thread is hidden from default listings. Returns 400 if the supplied id is a comment.",
366
+ "tags": [
367
+ "Archive"
368
+ ],
369
+ "parameters": [
370
+ {
371
+ "in": "path",
372
+ "name": "id",
373
+ "description": "The Entity ID of the Note entry to archive",
374
+ "schema": {
375
+ "type": "string",
376
+ "description": "The Entity ID of the Note entry to archive"
377
+ },
378
+ "required": true
379
+ }
380
+ ],
381
+ "responses": {
382
+ "200": {
383
+ "description": "Successful response with the archived Note entity",
384
+ "content": {
385
+ "application/json": {
386
+ "schema": {
387
+ "$ref": "#/components/schemas/NoteEntity"
388
+ }
389
+ }
390
+ }
391
+ }
392
+ }
393
+ }
394
+ },
395
+ "/v1/note/{id}/unarchive": {
396
+ "post": {
397
+ "operationId": "unarchiveNote",
398
+ "summary": "unarchiveNote",
399
+ "description": "Unarchives a root Note entry by clearing its `_archived_at` value. The clear cascades to every comment under the note so the entire thread returns to the active view. Returns 400 if the supplied id is a comment.",
400
+ "tags": [
401
+ "Archive"
402
+ ],
403
+ "parameters": [
404
+ {
405
+ "in": "path",
406
+ "name": "id",
407
+ "description": "The Entity ID of the Note entry to unarchive",
408
+ "schema": {
409
+ "type": "string",
410
+ "description": "The Entity ID of the Note entry to unarchive"
411
+ },
412
+ "required": true
413
+ }
414
+ ],
415
+ "responses": {
416
+ "200": {
417
+ "description": "Successful response with the unarchived Note entity",
418
+ "content": {
419
+ "application/json": {
420
+ "schema": {
421
+ "$ref": "#/components/schemas/NoteEntity"
422
+ }
423
+ }
424
+ }
425
+ }
426
+ }
427
+ }
428
+ },
350
429
  "/v1/note/{id}/context": {
351
430
  "get": {
352
431
  "operationId": "getNoteContexts",
@@ -726,6 +805,12 @@
726
805
  }
727
806
  },
728
807
  "description": "Reactions to the note, keyed by reaction type, with an array of user IDs for each type"
808
+ },
809
+ "_archived_at": {
810
+ "type": "string",
811
+ "nullable": true,
812
+ "description": "The timestamp of when this Note was archived. Absent or null means the Note is active.",
813
+ "format": "date-time"
729
814
  }
730
815
  },
731
816
  "description": "A note Entity object cotaining Entity metadata and content. Relational attributes are hydrated in place."
@@ -927,6 +1012,12 @@
927
1012
  }
928
1013
  },
929
1014
  "description": "Reactions to the note, keyed by reaction type, with an array of user IDs for each type"
1015
+ },
1016
+ "_archived_at": {
1017
+ "type": "string",
1018
+ "nullable": true,
1019
+ "description": "The timestamp of when this Note was archived. Absent or null means the Note is active.",
1020
+ "format": "date-time"
930
1021
  }
931
1022
  }
932
1023
  },
@@ -1051,6 +1142,12 @@
1051
1142
  }
1052
1143
  },
1053
1144
  "description": "Reactions to the note, keyed by reaction type, with an array of user IDs for each type"
1145
+ },
1146
+ "_archived_at": {
1147
+ "type": "string",
1148
+ "nullable": true,
1149
+ "description": "The timestamp of when this Note was archived. Absent or null means the Note is active.",
1150
+ "format": "date-time"
1054
1151
  }
1055
1152
  }
1056
1153
  },
@@ -1194,6 +1291,12 @@
1194
1291
  }
1195
1292
  },
1196
1293
  "description": "Reactions to the note, keyed by reaction type, with an array of user IDs for each type"
1294
+ },
1295
+ "_archived_at": {
1296
+ "type": "string",
1297
+ "nullable": true,
1298
+ "description": "The timestamp of when this Note was archived. Absent or null means the Note is active.",
1299
+ "format": "date-time"
1197
1300
  }
1198
1301
  },
1199
1302
  "required": [
@@ -1422,6 +1525,12 @@
1422
1525
  }
1423
1526
  },
1424
1527
  "description": "Reactions to the note, keyed by reaction type, with an array of user IDs for each type"
1528
+ },
1529
+ "_archived_at": {
1530
+ "type": "string",
1531
+ "nullable": true,
1532
+ "description": "The timestamp of when this Note was archived. Absent or null means the Note is active.",
1533
+ "format": "date-time"
1425
1534
  }
1426
1535
  }
1427
1536
  },
@@ -1454,6 +1563,9 @@
1454
1563
  },
1455
1564
  "description": "When set, the API resolves related entities of these schemas for the primary entity context and includes their notes in the results."
1456
1565
  },
1566
+ "filter": {
1567
+ "$ref": "#/components/schemas/NotesListFilter"
1568
+ },
1457
1569
  "from": {
1458
1570
  "type": "number",
1459
1571
  "default": 0,
@@ -1469,6 +1581,16 @@
1469
1581
  "contexts"
1470
1582
  ]
1471
1583
  },
1584
+ "NotesListFilter": {
1585
+ "type": "string",
1586
+ "enum": [
1587
+ "all",
1588
+ "active",
1589
+ "archived"
1590
+ ],
1591
+ "default": "active",
1592
+ "description": "Archive-state filter. 'active' (default) returns non-archived notes only, 'archived' returns only archived notes, 'all' returns both."
1593
+ },
1472
1594
  "NotesSearchRequestResponse": {
1473
1595
  "type": "object",
1474
1596
  "properties": {