@epilot/sdk 2.7.1 → 2.7.3

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 (225) 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/file-runtime.json +1 -1
  8. package/definitions/file.json +88 -4
  9. package/definitions/journey-runtime.json +1 -1
  10. package/definitions/journey.json +21 -1
  11. package/definitions/notes-runtime.json +1 -1
  12. package/definitions/notes.json +123 -1
  13. package/definitions/pricing.json +149 -404
  14. package/dist/apis/access-token.cjs +6 -6
  15. package/dist/apis/access-token.js +1 -1
  16. package/dist/apis/address-suggestions.cjs +6 -6
  17. package/dist/apis/address-suggestions.js +1 -1
  18. package/dist/apis/address.cjs +6 -6
  19. package/dist/apis/address.js +1 -1
  20. package/dist/apis/ai-agents.cjs +6 -6
  21. package/dist/apis/ai-agents.js +1 -1
  22. package/dist/apis/app.cjs +6 -6
  23. package/dist/apis/app.d.cts +2 -2
  24. package/dist/apis/app.d.ts +2 -2
  25. package/dist/apis/app.js +1 -1
  26. package/dist/apis/audit-logs.cjs +6 -6
  27. package/dist/apis/audit-logs.js +1 -1
  28. package/dist/apis/automation.cjs +6 -6
  29. package/dist/apis/automation.js +1 -1
  30. package/dist/apis/billing.cjs +6 -6
  31. package/dist/apis/billing.js +1 -1
  32. package/dist/apis/blueprint-manifest.cjs +6 -6
  33. package/dist/apis/blueprint-manifest.js +1 -1
  34. package/dist/apis/calendar.cjs +6 -6
  35. package/dist/apis/calendar.js +1 -1
  36. package/dist/apis/configuration-hub.cjs +8 -8
  37. package/dist/apis/configuration-hub.d.cts +2 -2
  38. package/dist/apis/configuration-hub.d.ts +2 -2
  39. package/dist/apis/configuration-hub.js +2 -2
  40. package/dist/apis/consent.cjs +6 -6
  41. package/dist/apis/consent.js +1 -1
  42. package/dist/apis/customer-portal.cjs +6 -6
  43. package/dist/apis/customer-portal.d.cts +2 -2
  44. package/dist/apis/customer-portal.d.ts +2 -2
  45. package/dist/apis/customer-portal.js +1 -1
  46. package/dist/apis/dashboard.cjs +6 -6
  47. package/dist/apis/dashboard.js +1 -1
  48. package/dist/apis/data-governance.cjs +6 -6
  49. package/dist/apis/data-governance.js +1 -1
  50. package/dist/apis/deduplication.cjs +6 -6
  51. package/dist/apis/deduplication.js +1 -1
  52. package/dist/apis/design.cjs +8 -8
  53. package/dist/apis/design.d.cts +2 -2
  54. package/dist/apis/design.d.ts +2 -2
  55. package/dist/apis/design.js +2 -2
  56. package/dist/apis/document.cjs +6 -6
  57. package/dist/apis/document.js +1 -1
  58. package/dist/apis/email-settings.cjs +6 -6
  59. package/dist/apis/email-settings.js +1 -1
  60. package/dist/apis/email-template.cjs +6 -6
  61. package/dist/apis/email-template.js +1 -1
  62. package/dist/apis/entity-mapping.cjs +6 -6
  63. package/dist/apis/entity-mapping.js +1 -1
  64. package/dist/apis/entity.cjs +6 -6
  65. package/dist/apis/entity.js +1 -1
  66. package/dist/apis/environments.cjs +6 -6
  67. package/dist/apis/environments.js +1 -1
  68. package/dist/apis/event-catalog.cjs +6 -6
  69. package/dist/apis/event-catalog.js +1 -1
  70. package/dist/apis/file.cjs +8 -8
  71. package/dist/apis/file.d.cts +2 -2
  72. package/dist/apis/file.d.ts +2 -2
  73. package/dist/apis/file.js +2 -2
  74. package/dist/apis/iban.cjs +6 -6
  75. package/dist/apis/iban.js +1 -1
  76. package/dist/apis/integration-toolkit.cjs +6 -6
  77. package/dist/apis/integration-toolkit.js +1 -1
  78. package/dist/apis/journey.cjs +8 -8
  79. package/dist/apis/journey.d.cts +2 -2
  80. package/dist/apis/journey.d.ts +2 -2
  81. package/dist/apis/journey.js +2 -2
  82. package/dist/apis/kanban.cjs +6 -6
  83. package/dist/apis/kanban.js +1 -1
  84. package/dist/apis/message.cjs +6 -6
  85. package/dist/apis/message.js +1 -1
  86. package/dist/apis/metering.cjs +6 -6
  87. package/dist/apis/metering.js +1 -1
  88. package/dist/apis/notes.cjs +8 -8
  89. package/dist/apis/notes.d.cts +2 -2
  90. package/dist/apis/notes.d.ts +2 -2
  91. package/dist/apis/notes.js +2 -2
  92. package/dist/apis/notification.cjs +6 -6
  93. package/dist/apis/notification.js +1 -1
  94. package/dist/apis/organization.cjs +6 -6
  95. package/dist/apis/organization.js +1 -1
  96. package/dist/apis/partner-directory.cjs +6 -6
  97. package/dist/apis/partner-directory.js +1 -1
  98. package/dist/apis/permissions.cjs +6 -6
  99. package/dist/apis/permissions.js +1 -1
  100. package/dist/apis/pricing-tier.cjs +6 -6
  101. package/dist/apis/pricing-tier.js +1 -1
  102. package/dist/apis/pricing.cjs +6 -6
  103. package/dist/apis/pricing.d.cts +2 -2
  104. package/dist/apis/pricing.d.ts +2 -2
  105. package/dist/apis/pricing.js +1 -1
  106. package/dist/apis/purpose.cjs +6 -6
  107. package/dist/apis/purpose.js +1 -1
  108. package/dist/apis/query.cjs +6 -6
  109. package/dist/apis/query.js +1 -1
  110. package/dist/apis/sandbox.cjs +6 -6
  111. package/dist/apis/sandbox.js +1 -1
  112. package/dist/apis/sharing.cjs +6 -6
  113. package/dist/apis/sharing.js +1 -1
  114. package/dist/apis/submission.cjs +6 -6
  115. package/dist/apis/submission.js +1 -1
  116. package/dist/apis/target.cjs +6 -6
  117. package/dist/apis/target.js +1 -1
  118. package/dist/apis/targeting.cjs +6 -6
  119. package/dist/apis/targeting.js +1 -1
  120. package/dist/apis/template-variables.cjs +6 -6
  121. package/dist/apis/template-variables.js +1 -1
  122. package/dist/apis/user.cjs +6 -6
  123. package/dist/apis/user.js +1 -1
  124. package/dist/apis/validation-rules.cjs +6 -6
  125. package/dist/apis/validation-rules.js +1 -1
  126. package/dist/apis/webhooks.cjs +6 -6
  127. package/dist/apis/webhooks.js +1 -1
  128. package/dist/apis/workflow-definition.cjs +6 -6
  129. package/dist/apis/workflow-definition.js +1 -1
  130. package/dist/apis/workflow.cjs +6 -6
  131. package/dist/apis/workflow.js +1 -1
  132. package/dist/{app-SSF545U7.cjs → app-74LECFMK.cjs} +1 -1
  133. package/dist/{app-34OBBTA4.js → app-GNUHCGPO.js} +1 -1
  134. package/dist/{app.d--5n0FQQ4.d.cts → app.d-BOR23dso.d.cts} +104 -4
  135. package/dist/{app.d--5n0FQQ4.d.ts → app.d-BOR23dso.d.ts} +104 -4
  136. package/dist/bin/cli.js +1 -1
  137. package/dist/{chunk-SCMAZ73K.js → chunk-2FJMQLXE.js} +28 -19
  138. package/dist/chunk-4M5V6BIT.cjs +14 -0
  139. package/dist/chunk-JOUTFBLN.js +14 -0
  140. package/dist/chunk-LAWKCWVU.cjs +14 -0
  141. package/dist/{chunk-ZSONBZIF.cjs → chunk-MOLFG5L4.cjs} +1 -1
  142. package/dist/chunk-P4NA7NWG.js +14 -0
  143. package/dist/{chunk-R7XDTILZ.cjs → chunk-QNMDISUR.cjs} +28 -19
  144. package/dist/chunk-RDVFQOCQ.js +14 -0
  145. package/dist/chunk-WHXYES2D.cjs +14 -0
  146. package/dist/{chunk-RW5JOHG7.js → chunk-WIQXF7DD.js} +1 -1
  147. package/dist/{chunk-ONOGGR6Q.js → chunk-WW6DVKJR.js} +1 -1
  148. package/dist/{chunk-M2SSGV7K.cjs → chunk-ZOQUGWQL.cjs} +1 -1
  149. package/dist/configuration-hub-E7S4JB2T.js +7 -0
  150. package/dist/configuration-hub-Q5JBYB52.cjs +7 -0
  151. package/dist/{configuration-hub-runtime-L6IOERSP.js → configuration-hub-runtime-CXME7TCX.js} +1 -1
  152. package/dist/{configuration-hub-runtime-I5Y67CXD.cjs → configuration-hub-runtime-QVLJKEZD.cjs} +2 -2
  153. package/dist/configuration-hub.d-CbSJDa7k.d.cts +1096 -0
  154. package/dist/configuration-hub.d-CbSJDa7k.d.ts +1096 -0
  155. package/dist/customer-portal-IBM3K2EZ.cjs +7 -0
  156. package/dist/customer-portal-XPYKMIIA.js +7 -0
  157. package/dist/{customer-portal.d-C7ZCbjiY.d.cts → customer-portal.d-CTTCBAZI.d.cts} +217 -61
  158. package/dist/{customer-portal.d-C7ZCbjiY.d.ts → customer-portal.d-CTTCBAZI.d.ts} +217 -61
  159. package/dist/design-DUFBH5ZB.js +7 -0
  160. package/dist/design-W3D3UPGB.cjs +7 -0
  161. package/dist/design-runtime-3RHYNHUV.cjs +5 -0
  162. package/dist/{design-runtime-QMJM4FAF.js → design-runtime-DLMA4EHQ.js} +1 -1
  163. package/dist/{design.d-BRre8iLg.d.cts → design.d-DzSDu8cy.d.cts} +41 -3
  164. package/dist/{design.d-BRre8iLg.d.ts → design.d-DzSDu8cy.d.ts} +41 -3
  165. package/dist/file-BGJVE7QG.cjs +7 -0
  166. package/dist/file-DRLPMLFW.js +7 -0
  167. package/dist/file-runtime-7AWKNQU6.cjs +5 -0
  168. package/dist/{file-runtime-BIRMXYRH.js → file-runtime-DKGFS44O.js} +1 -1
  169. package/dist/{file.d-DTlrbI40.d.cts → file.d-Rq_mbdOo.d.cts} +145 -5
  170. package/dist/{file.d-DTlrbI40.d.ts → file.d-Rq_mbdOo.d.ts} +145 -5
  171. package/dist/index.cjs +18 -18
  172. package/dist/index.d.cts +8 -8
  173. package/dist/index.d.ts +8 -8
  174. package/dist/index.js +6 -6
  175. package/dist/journey-4DIIPRU4.js +7 -0
  176. package/dist/journey-ATC3Y5AW.cjs +7 -0
  177. package/dist/{journey-runtime-SPBL3F32.cjs → journey-runtime-G2O5C3N2.cjs} +2 -2
  178. package/dist/{journey-runtime-YXIAOTMD.js → journey-runtime-RI2LJO5S.js} +1 -1
  179. package/dist/{journey.d-ClXO0xK8.d.cts → journey.d-BenIUWaO.d.cts} +9 -3
  180. package/dist/{journey.d-ClXO0xK8.d.ts → journey.d-BenIUWaO.d.ts} +9 -3
  181. package/dist/{js-yaml-UPZKYVRY.js → js-yaml-DLCVPJ7G.js} +17 -15
  182. package/dist/notes-6JESMRLW.js +7 -0
  183. package/dist/notes-SLEUSNP4.cjs +7 -0
  184. package/dist/{notes-runtime-CVNAVKPP.js → notes-runtime-I4SWR3PZ.js} +1 -1
  185. package/dist/notes-runtime-YWTRRNH5.cjs +5 -0
  186. package/dist/{notes.d-BcV_m5fe.d.cts → notes.d-rbcyHfiB.d.cts} +101 -3
  187. package/dist/{notes.d-BcV_m5fe.d.ts → notes.d-rbcyHfiB.d.ts} +101 -3
  188. package/dist/pricing-F7HQ6BWC.cjs +7 -0
  189. package/dist/pricing-YCD4EUGI.js +7 -0
  190. package/dist/{pricing.d-BHpMU4KU.d.cts → pricing.d-exMaGWm1.d.cts} +140 -280
  191. package/dist/{pricing.d-BHpMU4KU.d.ts → pricing.d-exMaGWm1.d.ts} +140 -280
  192. package/docs/app.md +34 -10
  193. package/docs/configuration-hub.md +660 -0
  194. package/docs/customer-portal.md +221 -159
  195. package/docs/design.md +81 -4
  196. package/docs/file.md +81 -0
  197. package/docs/journey.md +2 -0
  198. package/docs/notes.md +47 -1
  199. package/docs/pricing.md +269 -218
  200. package/package.json +1 -1
  201. package/dist/chunk-3APTSPY4.js +0 -14
  202. package/dist/chunk-EIIIKDOJ.cjs +0 -14
  203. package/dist/chunk-KIWRGUKM.js +0 -14
  204. package/dist/chunk-MB6NKETA.cjs +0 -14
  205. package/dist/chunk-OPXGJKZR.cjs +0 -14
  206. package/dist/chunk-VSZEOCIE.js +0 -14
  207. package/dist/configuration-hub-A3S6ND6R.cjs +0 -7
  208. package/dist/configuration-hub-PMAW44U5.js +0 -7
  209. package/dist/configuration-hub.d-Cqaq2F-W.d.cts +0 -478
  210. package/dist/configuration-hub.d-Cqaq2F-W.d.ts +0 -478
  211. package/dist/customer-portal-7HYSBH7H.cjs +0 -7
  212. package/dist/customer-portal-X4LJX6AU.js +0 -7
  213. package/dist/design-DROLIWS3.js +0 -7
  214. package/dist/design-XZKOZLTR.cjs +0 -7
  215. package/dist/design-runtime-OXEXKZVG.cjs +0 -5
  216. package/dist/file-P2FUUER2.js +0 -7
  217. package/dist/file-XTY74SIX.cjs +0 -7
  218. package/dist/file-runtime-24S3QPA7.cjs +0 -5
  219. package/dist/journey-KDR5EU3W.js +0 -7
  220. package/dist/journey-REBN4TGQ.cjs +0 -7
  221. package/dist/notes-K2IIFCX3.cjs +0 -7
  222. package/dist/notes-Q7JGS7O3.js +0 -7
  223. package/dist/notes-runtime-E3YYF74V.cjs +0 -5
  224. package/dist/pricing-FODHQFCB.cjs +0 -7
  225. package/dist/pricing-XRIDVZFC.js +0 -7
@@ -2750,7 +2750,8 @@
2750
2750
  },
2751
2751
  "result": {
2752
2752
  "type": "string",
2753
- "description": "Contact ID usually retrieved from the response body, e.g. `{{CallResponse.data.contact_id}}`. If no result is passed and the request suceeds, we attempt to resolve the Contact ID automatically. Supports variable interpolation."
2753
+ "deprecated": true,
2754
+ "description": "Deprecated. Use `resolved.result` instead. Contact ID usually retrieved from the response body, e.g. `{{CallResponse.data.contact_id}}`. If no result is passed and the request suceeds, we attempt to resolve the Contact ID automatically. Supports variable interpolation."
2754
2755
  }
2755
2756
  },
2756
2757
  "required": [
@@ -2760,6 +2761,21 @@
2760
2761
  ],
2761
2762
  "additionalProperties": false
2762
2763
  },
2764
+ "resolved": {
2765
+ "type": "object",
2766
+ "properties": {
2767
+ "result": {
2768
+ "type": "string",
2769
+ "description": "Contact ID usually retrieved from the response body, e.g. `{{CallResponse.data.contact_id}}`. If no result is passed and the request suceeds, we attempt to resolve the Contact ID automatically. Supports variable interpolation. Supersedes the deprecated `call.result`."
2770
+ },
2771
+ "error_message_path": {
2772
+ "type": "string",
2773
+ "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",
2774
+ "example": "error.message"
2775
+ }
2776
+ },
2777
+ "additionalProperties": false
2778
+ },
2763
2779
  "use_static_ips": {
2764
2780
  "type": "boolean",
2765
2781
  "deprecated": true,
@@ -2832,7 +2848,8 @@
2832
2848
  },
2833
2849
  "result": {
2834
2850
  "type": "string",
2835
- "description": "Contract or Contact ID usually retrieved from the response body, e.g. `{{CallResponse.data.contact_id}}`. If no result is passed and the request suceeds, we attempt to resolve the Contact ID automatically. Supports variable interpolation."
2851
+ "deprecated": true,
2852
+ "description": "Deprecated. Use `resolved.result` instead. Contract or Contact ID usually retrieved from the response body, e.g. `{{CallResponse.data.contact_id}}`. If no result is passed and the request suceeds, we attempt to resolve the Contact ID automatically. Supports variable interpolation."
2836
2853
  }
2837
2854
  },
2838
2855
  "required": [
@@ -2841,6 +2858,21 @@
2841
2858
  ],
2842
2859
  "additionalProperties": false
2843
2860
  },
2861
+ "resolved": {
2862
+ "type": "object",
2863
+ "properties": {
2864
+ "result": {
2865
+ "type": "string",
2866
+ "description": "Contract or Contact ID usually retrieved from the response body, e.g. `{{CallResponse.data.contact_id}}`. If no result is passed and the request suceeds, we attempt to resolve the Contact ID automatically. Supports variable interpolation. Supersedes the deprecated `call.result`."
2867
+ },
2868
+ "error_message_path": {
2869
+ "type": "string",
2870
+ "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",
2871
+ "example": "error.message"
2872
+ }
2873
+ },
2874
+ "additionalProperties": false
2875
+ },
2844
2876
  "assignment_mode": {
2845
2877
  "type": "string",
2846
2878
  "enum": [
@@ -2953,11 +2985,16 @@
2953
2985
  "type": "object",
2954
2986
  "description": "Response to the call",
2955
2987
  "properties": {
2956
- "dataPath": {
2988
+ "data_path": {
2957
2989
  "type": "string",
2958
2990
  "description": "Optional path to an array in the response. If specified and the path points to an array,\nthe hook will map over each item using 'Item' variable for interpolation.\nRelevant only if plausibility_mode is \"range\".\n",
2959
2991
  "example": "data.results"
2960
2992
  },
2993
+ "dataPath": {
2994
+ "type": "string",
2995
+ "deprecated": true,
2996
+ "description": "Deprecated. Use `data_path` instead."
2997
+ },
2961
2998
  "counter_identifiers": {
2962
2999
  "description": "Counter identifier(s) used to match against the meter's counters.\nCan be a string (counter ID) or an object with counter properties.\nThe backend resolves this to meter_counter_id in the final response.\nRelevant only if plausibility_mode is \"range\".\n",
2963
3000
  "type": "object",
@@ -2982,6 +3019,11 @@
2982
3019
  "type": "string",
2983
3020
  "description": "Lower allowed limit of the meter reading",
2984
3021
  "example": "{{CallResponse.data.lower_limit}}"
3022
+ },
3023
+ "error_message_path": {
3024
+ "type": "string",
3025
+ "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",
3026
+ "example": "error.message"
2985
3027
  }
2986
3028
  },
2987
3029
  "additionalProperties": false
@@ -3081,9 +3123,19 @@
3081
3123
  "resolved": {
3082
3124
  "type": "object",
3083
3125
  "properties": {
3084
- "dataPath": {
3126
+ "data_path": {
3085
3127
  "type": "string",
3086
3128
  "description": "Optional path to the data (array) in the response. If omitted, the data is assumed to be on the top level."
3129
+ },
3130
+ "dataPath": {
3131
+ "type": "string",
3132
+ "deprecated": true,
3133
+ "description": "Deprecated. Use `data_path` instead."
3134
+ },
3135
+ "error_message_path": {
3136
+ "type": "string",
3137
+ "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",
3138
+ "example": "error.message"
3087
3139
  }
3088
3140
  },
3089
3141
  "additionalProperties": false
@@ -3182,9 +3234,19 @@
3182
3234
  "resolved": {
3183
3235
  "type": "object",
3184
3236
  "properties": {
3185
- "dataPath": {
3237
+ "data_path": {
3186
3238
  "type": "string",
3187
3239
  "description": "Optional path to the data (array) in the response. If omitted, the data is assumed to be on the top level."
3240
+ },
3241
+ "dataPath": {
3242
+ "type": "string",
3243
+ "deprecated": true,
3244
+ "description": "Deprecated. Use `data_path` instead."
3245
+ },
3246
+ "error_message_path": {
3247
+ "type": "string",
3248
+ "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",
3249
+ "example": "error.message"
3188
3250
  }
3189
3251
  },
3190
3252
  "additionalProperties": false
@@ -3273,6 +3335,17 @@
3273
3335
  ],
3274
3336
  "additionalProperties": false
3275
3337
  },
3338
+ "resolved": {
3339
+ "type": "object",
3340
+ "properties": {
3341
+ "error_message_path": {
3342
+ "type": "string",
3343
+ "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",
3344
+ "example": "error.message"
3345
+ }
3346
+ },
3347
+ "additionalProperties": false
3348
+ },
3276
3349
  "use_static_ips": {
3277
3350
  "type": "boolean",
3278
3351
  "deprecated": true,
@@ -3291,7 +3364,7 @@
3291
3364
  "additionalProperties": false
3292
3365
  },
3293
3366
  "PortalExtensionHookVisualizationMetadata": {
3294
- "description": "Hook that returns runtime metadata describing how a visualization (consumption / price / cost chart) should be rendered for a given portal context (meter, contract, etc). It is invoked by the portal before fetching data, with the same context the data hook would receive, so that the discovery shape can vary per meter/contract. The expected response to the call is:\n - 200 with a JSON body of shape:\n {\n \"type_options\": [\n { \"id\": \"ht\", \"label\": { \"en\": \"High tariff\" }, \"aggregation_group\": \"consumption\", \"statistical_method\": \"sum\", \"unit\": \"kWh\" },\n ...\n ],\n \"intervals\": [\"PT15M\", \"PT1H\", \"P1D\", \"P1M\"],\n \"data_range\": { \"from\": \"2024-01-01T00:00:00Z\", \"to\": \"2026-05-01T00:00:00Z\" }\n }\n Each type option carries its own `statistical_method`, which describes the method already applied to that type's data and dictates the chart shape: `sum` is rendered as a bar chart; `min`, `average`, and `max` are rendered as a line chart. A single visualization can therefore mix bar-shaped types with line-shaped types. Defaults to `sum` when omitted.\n `aggregation_group` controls how types within a group are visually combined (depends on the per-type `statistical_method`):\n - bar chart (`sum`): same-group types are stacked into a single bar (e.g. ht/nt summed into total consumption); different-group types render side-by-side.\n - line chart (`min` / `average` / `max`): same-group types are rendered as an area chart; different-group types render as separate lines.\n All fields are optional; the consumer falls back to its defaults for whatever the hook does not return.\nThe portal looks up this hook implicitly per extension (one `visualizationMetadata` hook per extension) — there is no need for a data-retrieval hook to reference it explicitly.\n",
3367
+ "description": "Hook that returns runtime metadata describing how a visualization (consumption / price / cost chart) should be rendered for a given portal context (meter, contract, etc). It is invoked by the portal before fetching data, with the same context the data hook would receive, so that the discovery shape can vary per meter/contract. The expected response to the call is:\n - 200 with a JSON body of shape:\n {\n \"type_options\": [\n { \"id\": \"ht\", \"label\": { \"en\": \"High tariff\" }, \"aggregation_group\": \"consumption\", \"statistical_method\": \"sum\", \"unit\": \"kWh\", \"color\": \"primary\", \"precision\": 2 },\n ...\n ],\n \"intervals\": [\"PT15M\", \"PT1H\", \"P1D\", \"P1M\"],\n \"data_range\": { \"from\": \"2024-01-01T00:00:00Z\", \"to\": \"2026-05-01T00:00:00Z\" }\n }\n Each type option carries its own `statistical_method`, which describes the method already applied to that type's data and dictates the chart shape: `sum` is rendered as a bar chart; `min`, `average`, and `max` are rendered as a line chart. A single visualization can therefore mix bar-shaped types with line-shaped types. Defaults to `sum` when omitted.\n Each type option may also customize its rendering: `color` picks a Spark palette color (`primary`, `slate`, `mauve`, `orange`, `red`, `tomato`, `amber`, `green`, `blue`) used to draw the type's series; `precision` sets the number of decimal places to show for that type's values (axis labels, tooltips, summaries). Both are optional — the consumer falls back to its own defaults when they are omitted.\n `aggregation_group` controls how types within a group are visually combined (depends on the per-type `statistical_method`):\n - bar chart (`sum`): same-group types are stacked into a single bar (e.g. ht/nt summed into total consumption); different-group types render side-by-side.\n - line chart (`min` / `average` / `max`): same-group types are rendered as an area chart; different-group types render as separate lines.\n All fields are optional; the consumer falls back to its defaults for whatever the hook does not return.\nThe portal looks up this hook implicitly per extension (one `visualizationMetadata` hook per extension) — there is no need for a data-retrieval hook to reference it explicitly.\n",
3295
3368
  "type": "object",
3296
3369
  "properties": {
3297
3370
  "id": {
@@ -3353,9 +3426,19 @@
3353
3426
  "resolved": {
3354
3427
  "type": "object",
3355
3428
  "properties": {
3356
- "dataPath": {
3429
+ "data_path": {
3357
3430
  "type": "string",
3358
3431
  "description": "Optional path to the metadata object in the response. If omitted, the metadata is assumed to be on the top level."
3432
+ },
3433
+ "dataPath": {
3434
+ "type": "string",
3435
+ "deprecated": true,
3436
+ "description": "Deprecated. Use `data_path` instead."
3437
+ },
3438
+ "error_message_path": {
3439
+ "type": "string",
3440
+ "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",
3441
+ "example": "error.message"
3359
3442
  }
3360
3443
  },
3361
3444
  "additionalProperties": false
@@ -3454,9 +3537,19 @@
3454
3537
  "resolved": {
3455
3538
  "type": "object",
3456
3539
  "properties": {
3457
- "dataPath": {
3540
+ "data_path": {
3458
3541
  "type": "string",
3459
3542
  "description": "Optional path to the data (array) in the response. If omitted, the data is assumed to be on the top level."
3543
+ },
3544
+ "dataPath": {
3545
+ "type": "string",
3546
+ "deprecated": true,
3547
+ "description": "Deprecated. Use `data_path` instead."
3548
+ },
3549
+ "error_message_path": {
3550
+ "type": "string",
3551
+ "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",
3552
+ "example": "error.message"
3460
3553
  }
3461
3554
  },
3462
3555
  "additionalProperties": false
@@ -1 +1 @@
1
- {"s":"https://configuration-hub.sls.epilot.io","o":[["listConfigTypes","get","/v1/configs/types"],["listConfigs","get","/v1/configs/{type}",[["ConfigType"],["CursorParam"],["SizeParam"],["q","q"],["updated_after","q"],["updated_before","q"],["purposes","q"],["blueprint_ids","q"],["sort","q"],["active_only","q"]]],["getConfigDependencies","get","/v1/configs/{type}/{id}/dependencies",[["ConfigType"],["ConfigId"],["CursorParam"],["SizeParam"]]],["getConfigUsedBy","get","/v1/configs/{type}/{id}/used_by",[["ConfigType"],["ConfigId"]]],["getIndex","get","/v1/configs/index"],["rebuildIndex","post","/v1/configs/index:rebuild"]],"v":"3.0.3","cp":{"ConfigType":["type","p",true],"ConfigId":["id","p",true],"CursorParam":["cursor","q"],"SizeParam":["size","q"]}}
1
+ {"s":"https://configuration-hub.sls.epilot.io","o":[["listConfigTypes","get","/v1/configs/types"],["listConfigs","get","/v1/configs/{type}",[["ConfigType"],["CursorParam"],["SizeParam"],["q","q"],["updated_after","q"],["updated_before","q"],["purposes","q"],["blueprint_ids","q"],["sort","q"],["active_only","q"]]],["getConfigDependencies","get","/v1/configs/{type}/{id}/dependencies",[["ConfigType"],["ConfigId"],["CursorParam"],["SizeParam"]]],["getConfigUsedBy","get","/v1/configs/{type}/{id}/used_by",[["ConfigType"],["ConfigId"]]],["getIndex","get","/v1/configs/index"],["createSyncJob","post","/v1/configs/sync-jobs",null,1],["listSyncJobs","get","/v1/configs/sync-jobs",[["CursorParam"],["SizeParam"],["status","q"]]],["getSyncJob","get","/v1/configs/sync-jobs/{id}",[["SyncJobId"]]],["retrySyncJob","post","/v1/configs/sync-jobs/{id}/retry",[["SyncJobId"]],1],["listSyncJobResources","get","/v1/configs/sync-jobs/{id}/resources",[["SyncJobId"],["CursorParam"],["SizeParam"],["status","q"]]],["rebuildIndex","post","/v1/configs/index:rebuild"]],"v":"3.0.3","cp":{"ConfigType":["type","p",true],"ConfigId":["id","p",true],"CursorParam":["cursor","q"],"SizeParam":["size","q"],"SyncJobId":["id","p",true]}}