@epilot/sdk 2.20.4 → 2.20.6

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 (134) hide show
  1. package/definitions/entity.json +27 -6
  2. package/definitions/integration-toolkit-runtime.json +1 -1
  3. package/definitions/integration-toolkit.json +211 -14
  4. package/dist/apis/access-token.cjs +6 -6
  5. package/dist/apis/access-token.js +1 -1
  6. package/dist/apis/address-suggestions.cjs +6 -6
  7. package/dist/apis/address-suggestions.js +1 -1
  8. package/dist/apis/address.cjs +6 -6
  9. package/dist/apis/address.js +1 -1
  10. package/dist/apis/ai-agents.cjs +6 -6
  11. package/dist/apis/ai-agents.js +1 -1
  12. package/dist/apis/app.cjs +6 -6
  13. package/dist/apis/app.js +1 -1
  14. package/dist/apis/audit-logs.cjs +6 -6
  15. package/dist/apis/audit-logs.js +1 -1
  16. package/dist/apis/automation.cjs +6 -6
  17. package/dist/apis/automation.js +1 -1
  18. package/dist/apis/billing.cjs +6 -6
  19. package/dist/apis/billing.js +1 -1
  20. package/dist/apis/blueprint-manifest.cjs +6 -6
  21. package/dist/apis/blueprint-manifest.js +1 -1
  22. package/dist/apis/calendar.cjs +6 -6
  23. package/dist/apis/calendar.js +1 -1
  24. package/dist/apis/configuration-hub.cjs +6 -6
  25. package/dist/apis/configuration-hub.js +1 -1
  26. package/dist/apis/consent.cjs +6 -6
  27. package/dist/apis/consent.js +1 -1
  28. package/dist/apis/customer-portal.cjs +6 -6
  29. package/dist/apis/customer-portal.js +1 -1
  30. package/dist/apis/dashboard.cjs +6 -6
  31. package/dist/apis/dashboard.js +1 -1
  32. package/dist/apis/data-governance.cjs +6 -6
  33. package/dist/apis/data-governance.js +1 -1
  34. package/dist/apis/deduplication.cjs +6 -6
  35. package/dist/apis/deduplication.js +1 -1
  36. package/dist/apis/design.cjs +6 -6
  37. package/dist/apis/design.js +1 -1
  38. package/dist/apis/document.cjs +6 -6
  39. package/dist/apis/document.js +1 -1
  40. package/dist/apis/email-settings.cjs +6 -6
  41. package/dist/apis/email-settings.js +1 -1
  42. package/dist/apis/email-template.cjs +6 -6
  43. package/dist/apis/email-template.js +1 -1
  44. package/dist/apis/entity-mapping.cjs +6 -6
  45. package/dist/apis/entity-mapping.js +1 -1
  46. package/dist/apis/entity.cjs +6 -6
  47. package/dist/apis/entity.d.cts +2 -2
  48. package/dist/apis/entity.d.ts +2 -2
  49. package/dist/apis/entity.js +1 -1
  50. package/dist/apis/environments.cjs +6 -6
  51. package/dist/apis/environments.js +1 -1
  52. package/dist/apis/event-catalog.cjs +6 -6
  53. package/dist/apis/event-catalog.js +1 -1
  54. package/dist/apis/file.cjs +6 -6
  55. package/dist/apis/file.js +1 -1
  56. package/dist/apis/iban.cjs +6 -6
  57. package/dist/apis/iban.js +1 -1
  58. package/dist/apis/integration-toolkit.cjs +8 -8
  59. package/dist/apis/integration-toolkit.d.cts +2 -2
  60. package/dist/apis/integration-toolkit.d.ts +2 -2
  61. package/dist/apis/integration-toolkit.js +2 -2
  62. package/dist/apis/journey.cjs +6 -6
  63. package/dist/apis/journey.js +1 -1
  64. package/dist/apis/kanban.cjs +6 -6
  65. package/dist/apis/kanban.js +1 -1
  66. package/dist/apis/message.cjs +6 -6
  67. package/dist/apis/message.js +1 -1
  68. package/dist/apis/metering.cjs +6 -6
  69. package/dist/apis/metering.js +1 -1
  70. package/dist/apis/notes.cjs +6 -6
  71. package/dist/apis/notes.js +1 -1
  72. package/dist/apis/notification.cjs +6 -6
  73. package/dist/apis/notification.js +1 -1
  74. package/dist/apis/organization.cjs +6 -6
  75. package/dist/apis/organization.js +1 -1
  76. package/dist/apis/partner-directory.cjs +6 -6
  77. package/dist/apis/partner-directory.js +1 -1
  78. package/dist/apis/permissions.cjs +6 -6
  79. package/dist/apis/permissions.js +1 -1
  80. package/dist/apis/pricing-tier.cjs +6 -6
  81. package/dist/apis/pricing-tier.js +1 -1
  82. package/dist/apis/pricing.cjs +6 -6
  83. package/dist/apis/pricing.js +1 -1
  84. package/dist/apis/purpose.cjs +6 -6
  85. package/dist/apis/purpose.js +1 -1
  86. package/dist/apis/query.cjs +6 -6
  87. package/dist/apis/query.js +1 -1
  88. package/dist/apis/sandbox.cjs +6 -6
  89. package/dist/apis/sandbox.js +1 -1
  90. package/dist/apis/sharing.cjs +6 -6
  91. package/dist/apis/sharing.js +1 -1
  92. package/dist/apis/snapshot.cjs +6 -6
  93. package/dist/apis/snapshot.js +1 -1
  94. package/dist/apis/submission.cjs +6 -6
  95. package/dist/apis/submission.js +1 -1
  96. package/dist/apis/target.cjs +6 -6
  97. package/dist/apis/target.js +1 -1
  98. package/dist/apis/targeting.cjs +6 -6
  99. package/dist/apis/targeting.js +1 -1
  100. package/dist/apis/template-variables.cjs +6 -6
  101. package/dist/apis/template-variables.js +1 -1
  102. package/dist/apis/user.cjs +6 -6
  103. package/dist/apis/user.js +1 -1
  104. package/dist/apis/validation-rules.cjs +6 -6
  105. package/dist/apis/validation-rules.js +1 -1
  106. package/dist/apis/webhooks.cjs +6 -6
  107. package/dist/apis/webhooks.js +1 -1
  108. package/dist/apis/workflow-definition.cjs +6 -6
  109. package/dist/apis/workflow-definition.js +1 -1
  110. package/dist/apis/workflow.cjs +6 -6
  111. package/dist/apis/workflow.js +1 -1
  112. package/dist/{chunk-2WGN6U22.cjs → chunk-4DTTVPUM.cjs} +1 -1
  113. package/dist/{chunk-WYK7GSET.cjs → chunk-72CUHWUC.cjs} +3 -3
  114. package/dist/{chunk-HJU7FD4A.js → chunk-SJTMU4I2.js} +3 -3
  115. package/dist/{chunk-ECZ337CC.js → chunk-WE4C7GER.js} +1 -1
  116. package/dist/{entity-MFDARYZT.js → entity-7LYDUHKF.js} +1 -1
  117. package/dist/{entity-TK7CBS4W.cjs → entity-X6CXO437.cjs} +1 -1
  118. package/dist/{entity.d-CkFElDWZ.d.cts → entity.d-GfKqzFGA.d.cts} +164 -7
  119. package/dist/{entity.d-CkFElDWZ.d.ts → entity.d-GfKqzFGA.d.ts} +164 -7
  120. package/dist/index.cjs +10 -10
  121. package/dist/index.d.cts +2 -2
  122. package/dist/index.d.ts +2 -2
  123. package/dist/index.js +2 -2
  124. package/dist/integration-toolkit-BHVL3SDT.js +7 -0
  125. package/dist/integration-toolkit-WWHOAH3S.cjs +7 -0
  126. package/dist/{integration-toolkit-runtime-AL7GHT6B.cjs → integration-toolkit-runtime-57I2O6DI.cjs} +2 -2
  127. package/dist/{integration-toolkit-runtime-M3GLLRLF.js → integration-toolkit-runtime-TNDJH6HK.js} +1 -1
  128. package/dist/{integration-toolkit.d-CLVwmd8s.d.cts → integration-toolkit.d-rpj1kvB_.d.cts} +249 -21
  129. package/dist/{integration-toolkit.d-CLVwmd8s.d.ts → integration-toolkit.d-rpj1kvB_.d.ts} +249 -21
  130. package/docs/entity.md +9 -3
  131. package/docs/integration-toolkit.md +295 -22
  132. package/package.json +1 -1
  133. package/dist/integration-toolkit-6SBBMBPK.cjs +0 -7
  134. package/dist/integration-toolkit-AWMCD2KB.js +0 -7
@@ -113,6 +113,7 @@ const { data } = await integrationToolkitClient.acknowledgeTracking(...)
113
113
  - [`ExecuteErpImportRequest`](#executeerpimportrequest)
114
114
  - [`ErpImportIssue`](#erpimportissue)
115
115
  - [`ErpImportValidation`](#erpimportvalidation)
116
+ - [`ErpImportEntityDetail`](#erpimportentitydetail)
116
117
  - [`ErpImportProgress`](#erpimportprogress)
117
118
  - [`ErpImportError`](#erpimporterror)
118
119
  - [`ErpImportFilePreview`](#erpimportfilepreview)
@@ -140,6 +141,7 @@ const { data } = await integrationToolkitClient.acknowledgeTracking(...)
140
141
  - [`Integration`](#integration)
141
142
  - [`CreateIntegrationRequest`](#createintegrationrequest)
142
143
  - [`UpdateIntegrationRequest`](#updateintegrationrequest)
144
+ - [`IntegrationMap`](#integrationmap)
143
145
  - [`EnvironmentFieldConfig`](#environmentfieldconfig)
144
146
  - [`IntegrationSettings`](#integrationsettings)
145
147
  - [`AutoRefreshSettings`](#autorefreshsettings)
@@ -156,6 +158,9 @@ const { data } = await integrationToolkitClient.acknowledgeTracking(...)
156
158
  - [`InboundIntegrationEventConfiguration`](#inboundintegrationeventconfiguration)
157
159
  - [`OutboundIntegrationEventConfiguration`](#outboundintegrationeventconfiguration)
158
160
  - [`IntegrationEntity`](#integrationentity)
161
+ - [`IntegrationEntityConditional`](#integrationentityconditional)
162
+ - [`IntegrationEntityFold`](#integrationentityfold)
163
+ - [`MappedFieldValue`](#mappedfieldvalue)
159
164
  - [`IntegrationMeterReading`](#integrationmeterreading)
160
165
  - [`PruneScopeConfig`](#prunescopeconfig)
161
166
  - [`MeterReadingPruneScopeConfig`](#meterreadingprunescopeconfig)
@@ -728,6 +733,7 @@ const { data } = await client.listIntegrations()
728
733
  "access_token_ids": ["string"],
729
734
  "app_ids": ["string"],
730
735
  "environment_config": [],
736
+ "maps": [],
731
737
  "settings": {},
732
738
  "integration_type": "erp",
733
739
  "connector_config": {},
@@ -766,6 +772,14 @@ const { data } = await client.createIntegration(
766
772
  order: 0
767
773
  }
768
774
  ],
775
+ maps: [
776
+ {
777
+ key: 'string',
778
+ label: 'string',
779
+ description: 'string',
780
+ value: {}
781
+ }
782
+ ],
769
783
  settings: {
770
784
  autoRefresh: {
771
785
  enabled: false,
@@ -835,6 +849,14 @@ const { data } = await client.createIntegration(
835
849
  "order": 0
836
850
  }
837
851
  ],
852
+ "maps": [
853
+ {
854
+ "key": "string",
855
+ "label": "string",
856
+ "description": "string",
857
+ "value": {}
858
+ }
859
+ ],
838
860
  "settings": {
839
861
  "autoRefresh": {
840
862
  "enabled": false,
@@ -919,6 +941,14 @@ const { data } = await client.getIntegration({
919
941
  "order": 0
920
942
  }
921
943
  ],
944
+ "maps": [
945
+ {
946
+ "key": "string",
947
+ "label": "string",
948
+ "description": "string",
949
+ "value": {}
950
+ }
951
+ ],
922
952
  "settings": {
923
953
  "autoRefresh": {
924
954
  "enabled": false,
@@ -1006,6 +1036,14 @@ const { data } = await client.updateIntegration(
1006
1036
  "order": 0
1007
1037
  }
1008
1038
  ],
1039
+ "maps": [
1040
+ {
1041
+ "key": "string",
1042
+ "label": "string",
1043
+ "description": "string",
1044
+ "value": {}
1045
+ }
1046
+ ],
1009
1047
  "settings": {
1010
1048
  "autoRefresh": {
1011
1049
  "enabled": false,
@@ -1622,6 +1660,7 @@ const { data } = await client.listIntegrationsV2()
1622
1660
  "access_token_ids": ["string"],
1623
1661
  "app_ids": ["string"],
1624
1662
  "environment_config": [],
1663
+ "maps": [],
1625
1664
  "settings": {},
1626
1665
  "integration_type": "erp",
1627
1666
  "connector_config": {},
@@ -1661,6 +1700,14 @@ const { data } = await client.createIntegrationV2(
1661
1700
  order: 0
1662
1701
  }
1663
1702
  ],
1703
+ maps: [
1704
+ {
1705
+ key: 'string',
1706
+ label: 'string',
1707
+ description: 'string',
1708
+ value: {}
1709
+ }
1710
+ ],
1664
1711
  settings: {
1665
1712
  autoRefresh: {
1666
1713
  enabled: false,
@@ -1741,6 +1788,14 @@ const { data } = await client.createIntegrationV2(
1741
1788
  "order": 0
1742
1789
  }
1743
1790
  ],
1791
+ "maps": [
1792
+ {
1793
+ "key": "string",
1794
+ "label": "string",
1795
+ "description": "string",
1796
+ "value": {}
1797
+ }
1798
+ ],
1744
1799
  "settings": {
1745
1800
  "autoRefresh": {
1746
1801
  "enabled": false,
@@ -1840,6 +1895,14 @@ const { data } = await client.getIntegrationV2({
1840
1895
  "order": 0
1841
1896
  }
1842
1897
  ],
1898
+ "maps": [
1899
+ {
1900
+ "key": "string",
1901
+ "label": "string",
1902
+ "description": "string",
1903
+ "value": {}
1904
+ }
1905
+ ],
1843
1906
  "settings": {
1844
1907
  "autoRefresh": {
1845
1908
  "enabled": false,
@@ -1934,6 +1997,14 @@ const { data } = await client.updateIntegrationV2(
1934
1997
  order: 0
1935
1998
  }
1936
1999
  ],
2000
+ maps: [
2001
+ {
2002
+ key: 'string',
2003
+ label: 'string',
2004
+ description: 'string',
2005
+ value: {}
2006
+ }
2007
+ ],
1937
2008
  settings: {
1938
2009
  autoRefresh: {
1939
2010
  enabled: false,
@@ -2014,6 +2085,14 @@ const { data } = await client.updateIntegrationV2(
2014
2085
  "order": 0
2015
2086
  }
2016
2087
  ],
2088
+ "maps": [
2089
+ {
2090
+ "key": "string",
2091
+ "label": "string",
2092
+ "description": "string",
2093
+ "value": {}
2094
+ }
2095
+ ],
2017
2096
  "settings": {
2018
2097
  "autoRefresh": {
2019
2098
  "enabled": false,
@@ -2660,7 +2739,7 @@ Get the inbound ERP sync status of an entity: when each integration last
2660
2739
  synchronized (checked) the entity against the ERP, and when it last
2661
2740
  actually changed it. `last_synced_at` also advances on no-o
2662
2741
 
2663
- `GET /v1/entities/{entityId}/sync-status`
2742
+ `GET /v1/integrations/entities/{entityId}/sync-status`
2664
2743
 
2665
2744
  ```ts
2666
2745
  const { data } = await client.getEntitySyncStatus({
@@ -3553,6 +3632,16 @@ const { data } = await client.createErpImport(
3553
3632
  "blocking": 0,
3554
3633
  "warnings": 0,
3555
3634
  "entities": {},
3635
+ "entity_details": [
3636
+ {
3637
+ "mapping_index": 0,
3638
+ "entity_schema": "string",
3639
+ "business_key": {},
3640
+ "variants": 0,
3641
+ "versions": 0
3642
+ }
3643
+ ],
3644
+ "entity_details_truncated": true,
3556
3645
  "issues": [
3557
3646
  {
3558
3647
  "code": "UNIQUE_ID_COLUMN_MISSING",
@@ -3563,6 +3652,7 @@ const { data } = await client.createErpImport(
3563
3652
  "entity": "string"
3564
3653
  }
3565
3654
  ],
3655
+ "subject": "string",
3566
3656
  "row": 0
3567
3657
  }
3568
3658
  ]
@@ -3631,6 +3721,16 @@ const { data } = await client.listErpImports({
3631
3721
  "blocking": 0,
3632
3722
  "warnings": 0,
3633
3723
  "entities": {},
3724
+ "entity_details": [
3725
+ {
3726
+ "mapping_index": 0,
3727
+ "entity_schema": "string",
3728
+ "business_key": {},
3729
+ "variants": 0,
3730
+ "versions": 0
3731
+ }
3732
+ ],
3733
+ "entity_details_truncated": true,
3634
3734
  "issues": [
3635
3735
  {
3636
3736
  "code": "UNIQUE_ID_COLUMN_MISSING",
@@ -3641,6 +3741,7 @@ const { data } = await client.listErpImports({
3641
3741
  "entity": "string"
3642
3742
  }
3643
3743
  ],
3744
+ "subject": "string",
3644
3745
  "row": 0
3645
3746
  }
3646
3747
  ]
@@ -3702,6 +3803,16 @@ const { data } = await client.getErpImport({
3702
3803
  "blocking": 0,
3703
3804
  "warnings": 0,
3704
3805
  "entities": {},
3806
+ "entity_details": [
3807
+ {
3808
+ "mapping_index": 0,
3809
+ "entity_schema": "string",
3810
+ "business_key": {},
3811
+ "variants": 0,
3812
+ "versions": 0
3813
+ }
3814
+ ],
3815
+ "entity_details_truncated": true,
3705
3816
  "issues": [
3706
3817
  {
3707
3818
  "code": "UNIQUE_ID_COLUMN_MISSING",
@@ -3712,6 +3823,7 @@ const { data } = await client.getErpImport({
3712
3823
  "entity": "string"
3713
3824
  }
3714
3825
  ],
3826
+ "subject": "string",
3715
3827
  "row": 0
3716
3828
  }
3717
3829
  ]
@@ -3808,6 +3920,7 @@ const { data } = await client.suggestErpImportUseCases({
3808
3920
  ### `executeErpImport`
3809
3921
 
3810
3922
  Confirm and run the write phase of a validated import. Only a READY job may be executed; any other status returns 409.
3923
+ The verdict is re-checked against live inputs first: if the mapping or an entity
3811
3924
 
3812
3925
  `POST /v2/erp/imports/{importId}:execute`
3813
3926
 
@@ -3915,17 +4028,22 @@ type ExecuteErpImportRequest = {
3915
4028
 
3916
4029
  ### `ErpImportIssue`
3917
4030
 
3918
- A problem found during validation, scoped to the file as a whole rather than to individual rows.
3919
- `code` is the translation key and the other fields are its parameters — there is deliberately no message to display. Each code appears at most once, with everything it has to say aggregated into that one
4031
+ A problem found during validation, scoped to the file as a whole rather than to
4032
+ individual rows.
4033
+
4034
+ `code` is the translation key and the other fields are its parameters — there is
4035
+ deliberately no message to display. Each code appears at most once, with
4036
+ everything it has to say aggregated into that on
3920
4037
 
3921
4038
  ```ts
3922
4039
  type ErpImportIssue = {
3923
- code: "UNIQUE_ID_COLUMN_MISSING" | "MAPPED_COLUMN_MISSING" | "MALFORMED_ROW" | "INVALID_ENCODING" | "EMPTY_FILE" | "TOO_MANY_ROWS" | "BLANK_ROWS_SKIPPED"
4040
+ code: "UNIQUE_ID_COLUMN_MISSING" | "MAPPED_COLUMN_MISSING" | "MALFORMED_ROW" | "INVALID_ENCODING" | "EMPTY_FILE" | "TOO_MANY_ROWS" | "BLANK_ROWS_SKIPPED" | "TIER_ROWS_NOT_GROUPED" | "TIER_BANDS_CONFLICT" | "CONDITION_VALUE_MISSING" | "VARIANT_VALUE_CONFLICT" | "ATTRIBUTE_NOT_OVERRIDABLE" | "ATTRIBUTE_NOT_IN_SCHEMA" | "IS_CONDITIONAL_NOT_CONSTANT" | "SCHEMA_NOT_CONDITIONABLE" | "SCHEMA_NOT_FOUND" | "SCHEMA_DECLARES_NO_CONDITIONS" | "GROUPING_KEY_NOT_A_COLUMN" | "GROUPING_KEY_IS_FOLD_COLUMN"
3924
4041
  severity: "warning" | "blocking"
3925
4042
  columns?: Array<{
3926
4043
  name: string
3927
4044
  entity?: string
3928
4045
  }>
4046
+ subject?: string
3929
4047
  row?: number
3930
4048
  }
3931
4049
  ```
@@ -3936,22 +4054,45 @@ Validate-phase summary: what the file will create, and whether it may be confirm
3936
4054
 
3937
4055
  ```ts
3938
4056
  type ErpImportValidation = {
3939
- total_rows: number
4057
+ total_rows?: number
3940
4058
  blocking: number
3941
4059
  warnings: number
3942
4060
  entities: Record<string, number>
4061
+ entity_details?: Array<{
4062
+ mapping_index: number
4063
+ entity_schema: string
4064
+ business_key: Record<string, string>
4065
+ variants?: number
4066
+ versions?: number
4067
+ }>
4068
+ entity_details_truncated?: boolean
3943
4069
  issues?: Array<{
3944
- code: "UNIQUE_ID_COLUMN_MISSING" | "MAPPED_COLUMN_MISSING" | "MALFORMED_ROW" | "INVALID_ENCODING" | "EMPTY_FILE" | "TOO_MANY_ROWS" | "BLANK_ROWS_SKIPPED"
4070
+ code: "UNIQUE_ID_COLUMN_MISSING" | "MAPPED_COLUMN_MISSING" | "MALFORMED_ROW" | "INVALID_ENCODING" | "EMPTY_FILE" | "TOO_MANY_ROWS" | "BLANK_ROWS_SKIPPED" | "TIER_ROWS_NOT_GROUPED" | "TIER_BANDS_CONFLICT" | "CONDITION_VALUE_MISSING" | "VARIANT_VALUE_CONFLICT" | "ATTRIBUTE_NOT_OVERRIDABLE" | "ATTRIBUTE_NOT_IN_SCHEMA" | "IS_CONDITIONAL_NOT_CONSTANT" | "SCHEMA_NOT_CONDITIONABLE" | "SCHEMA_NOT_FOUND" | "SCHEMA_DECLARES_NO_CONDITIONS" | "GROUPING_KEY_NOT_A_COLUMN" | "GROUPING_KEY_IS_FOLD_COLUMN"
3945
4071
  severity: "warning" | "blocking"
3946
4072
  columns?: Array<{
3947
4073
  name: { ... }
3948
4074
  entity?: { ... }
3949
4075
  }>
4076
+ subject?: string
3950
4077
  row?: number
3951
4078
  }>
3952
4079
  }
3953
4080
  ```
3954
4081
 
4082
+ ### `ErpImportEntityDetail`
4083
+
4084
+ One entity instance the import will write, attributed to the mapping target that produces it.
4085
+
4086
+ ```ts
4087
+ type ErpImportEntityDetail = {
4088
+ mapping_index: number
4089
+ entity_schema: string
4090
+ business_key: Record<string, string>
4091
+ variants?: number
4092
+ versions?: number
4093
+ }
4094
+ ```
4095
+
3955
4096
  ### `ErpImportProgress`
3956
4097
 
3957
4098
  How far the currently running phase has got. Written at every batch boundary, so it advances during long runs rather than only at the end.
@@ -3970,7 +4111,7 @@ Why the import failed — present if and only if status = FAILED. `code` is the
3970
4111
 
3971
4112
  ```ts
3972
4113
  type ErpImportError = {
3973
- code: "VALIDATION_BLOCKED" | "FILE_FORMAT_UNSUPPORTED" | "FILE_UNAVAILABLE" | "VALIDATE_TIMEOUT" | "IMPORT_TIMEOUT" | "USE_CASE_NOT_USABLE" | "IMPORT_NO_PROGRESS" | "INTERNAL_ERROR"
4114
+ code: "VALIDATION_BLOCKED" | "FILE_FORMAT_UNSUPPORTED" | "FILE_UNAVAILABLE" | "VALIDATE_TIMEOUT" | "IMPORT_TIMEOUT" | "USE_CASE_NOT_USABLE" | "IMPORT_NO_PROGRESS" | "TIER_ROWS_NOT_GROUPED" | "INTERNAL_ERROR"
3974
4115
  message: string
3975
4116
  }
3976
4117
  ```
@@ -4005,10 +4146,12 @@ type CreateErpImportResponse = {
4005
4146
  size_bytes?: number
4006
4147
  column_count?: number
4007
4148
  validation?: {
4008
- total_rows: { ... }
4149
+ total_rows?: { ... }
4009
4150
  blocking: { ... }
4010
4151
  warnings: { ... }
4011
4152
  entities: { ... }
4153
+ entity_details?: { ... }
4154
+ entity_details_truncated?: { ... }
4012
4155
  issues?: { ... }
4013
4156
  }
4014
4157
  progress?: {
@@ -4049,14 +4192,23 @@ type ErpImportJob = {
4049
4192
  size_bytes?: number
4050
4193
  column_count?: number
4051
4194
  validation?: {
4052
- total_rows: number
4195
+ total_rows?: number
4053
4196
  blocking: number
4054
4197
  warnings: number
4055
4198
  entities: Record<string, number>
4199
+ entity_details?: Array<{
4200
+ mapping_index: { ... }
4201
+ entity_schema: { ... }
4202
+ business_key: { ... }
4203
+ variants?: { ... }
4204
+ versions?: { ... }
4205
+ }>
4206
+ entity_details_truncated?: boolean
4056
4207
  issues?: Array<{
4057
4208
  code: { ... }
4058
4209
  severity: { ... }
4059
4210
  columns?: { ... }
4211
+ subject?: { ... }
4060
4212
  row?: { ... }
4061
4213
  }>
4062
4214
  }
@@ -4065,7 +4217,7 @@ type ErpImportJob = {
4065
4217
  total_rows?: number
4066
4218
  }
4067
4219
  error?: {
4068
- code: "VALIDATION_BLOCKED" | "FILE_FORMAT_UNSUPPORTED" | "FILE_UNAVAILABLE" | "VALIDATE_TIMEOUT" | "IMPORT_TIMEOUT" | "USE_CASE_NOT_USABLE" | "IMPORT_NO_PROGRESS" | "INTERNAL_ERROR"
4220
+ code: "VALIDATION_BLOCKED" | "FILE_FORMAT_UNSUPPORTED" | "FILE_UNAVAILABLE" | "VALIDATE_TIMEOUT" | "IMPORT_TIMEOUT" | "USE_CASE_NOT_USABLE" | "IMPORT_NO_PROGRESS" | "TIER_ROWS_NOT_GROUPED" | "INTERNAL_ERROR"
4069
4221
  message: string
4070
4222
  }
4071
4223
  correlation_id?: string
@@ -4094,10 +4246,12 @@ type ErpImportList = {
4094
4246
  size_bytes?: number
4095
4247
  column_count?: number
4096
4248
  validation?: {
4097
- total_rows: { ... }
4249
+ total_rows?: { ... }
4098
4250
  blocking: { ... }
4099
4251
  warnings: { ... }
4100
4252
  entities: { ... }
4253
+ entity_details?: { ... }
4254
+ entity_details_truncated?: { ... }
4101
4255
  issues?: { ... }
4102
4256
  }
4103
4257
  progress?: {
@@ -4363,6 +4517,12 @@ type IntegrationEditableFields = {
4363
4517
  required?: boolean
4364
4518
  order?: number
4365
4519
  }>
4520
+ maps?: Array<{
4521
+ key: string
4522
+ label: string
4523
+ description?: string
4524
+ value: Record<string, unknown>
4525
+ }>
4366
4526
  settings?: {
4367
4527
  autoRefresh?: {
4368
4528
  enabled?: { ... }
@@ -4488,6 +4648,12 @@ type Integration = {
4488
4648
  required?: boolean
4489
4649
  order?: number
4490
4650
  }>
4651
+ maps?: Array<{
4652
+ key: string
4653
+ label: string
4654
+ description?: string
4655
+ value: Record<string, unknown>
4656
+ }>
4491
4657
  settings?: {
4492
4658
  autoRefresh?: {
4493
4659
  enabled?: { ... }
@@ -4553,6 +4719,12 @@ type CreateIntegrationRequest = {
4553
4719
  required?: boolean
4554
4720
  order?: number
4555
4721
  }>
4722
+ maps?: Array<{
4723
+ key: string
4724
+ label: string
4725
+ description?: string
4726
+ value: Record<string, unknown>
4727
+ }>
4556
4728
  settings?: {
4557
4729
  autoRefresh?: {
4558
4730
  enabled?: { ... }
@@ -4618,6 +4790,12 @@ type UpdateIntegrationRequest = {
4618
4790
  required?: boolean
4619
4791
  order?: number
4620
4792
  }>
4793
+ maps?: Array<{
4794
+ key: string
4795
+ label: string
4796
+ description?: string
4797
+ value: Record<string, unknown>
4798
+ }>
4621
4799
  settings?: {
4622
4800
  autoRefresh?: {
4623
4801
  enabled?: { ... }
@@ -4667,6 +4845,20 @@ type UpdateIntegrationRequest = {
4667
4845
  }
4668
4846
  ```
4669
4847
 
4848
+ ### `IntegrationMap`
4849
+
4850
+ A flat key/value map stored as an Environments API variable of type `JSON`. Values must be strings, numbers, booleans or null; the serialised map must not exceed 32 KB.
4851
+
4852
+
4853
+ ```ts
4854
+ type IntegrationMap = {
4855
+ key: string
4856
+ label: string
4857
+ description?: string
4858
+ value: Record<string, unknown>
4859
+ }
4860
+ ```
4861
+
4670
4862
  ### `EnvironmentFieldConfig`
4671
4863
 
4672
4864
  ```ts
@@ -5001,6 +5193,12 @@ type UpsertIntegrationWithUseCasesRequest = {
5001
5193
  required?: boolean
5002
5194
  order?: number
5003
5195
  }>
5196
+ maps?: Array<{
5197
+ key: string
5198
+ label: string
5199
+ description?: string
5200
+ value: Record<string, unknown>
5201
+ }>
5004
5202
  settings?: {
5005
5203
  autoRefresh?: {
5006
5204
  enabled?: { ... }
@@ -5082,12 +5280,6 @@ type UpsertIntegrationWithUseCasesRequest = {
5082
5280
  configuration?: {
5083
5281
  direction?: { ... }
5084
5282
  upload?: { ... }
5085
- fan_out?: { ... }
5086
- secure_proxy?: { ... }
5087
- auth?: { ... }
5088
- params?: { ... }
5089
- allowed_origins?: { ... }
5090
- steps: { ... }
5091
5283
  // ...
5092
5284
  }
5093
5285
  ```
@@ -5124,6 +5316,9 @@ type InboundIntegrationEventConfiguration = {
5124
5316
  portal_ref?: { ... }
5125
5317
  env_var_ref?: { ... }
5126
5318
  }>
5319
+ conditional?: {
5320
+ folds: { ... }
5321
+ }
5127
5322
  }>
5128
5323
  meter_readings?: Array<{
5129
5324
  jsonataExpression?: string
@@ -5261,6 +5456,77 @@ type IntegrationEntity = {
5261
5456
  jsonataExpression: { ... }
5262
5457
  }
5263
5458
  }>
5459
+ conditional?: {
5460
+ folds: Array<{
5461
+ attribute: { ... }
5462
+ sort_by: { ... }
5463
+ item: { ... }
5464
+ }>
5465
+ }
5466
+ }
5467
+ ```
5468
+
5469
+ ### `IntegrationEntityConditional`
5470
+
5471
+ Conditional Pricing extras for this target, used when it writes a conditional entity (a Product, Price or Coupon carrying context-dependent variants). The conditions themselves are declared on the entity schema, not here.
5472
+
5473
+ ```ts
5474
+ type IntegrationEntityConditional = {
5475
+ folds: Array<{
5476
+ attribute: string
5477
+ sort_by: {
5478
+ field: { ... }
5479
+ } | {
5480
+ constant: { ... }
5481
+ } | {
5482
+ jsonataExpression: { ... }
5483
+ }
5484
+ item: Record<string, {
5485
+ field: { ... }
5486
+ } | {
5487
+ constant: { ... }
5488
+ } | {
5489
+ jsonataExpression: { ... }
5490
+ }>
5491
+ }>
5492
+ }
5493
+ ```
5494
+
5495
+ ### `IntegrationEntityFold`
5496
+
5497
+ Collapse the rows of one variant-version into a single array attribute, ordered by a column. A commodity file carries one row per consumption band, while a variant-version holds exactly one `tiers` array.
5498
+
5499
+ ```ts
5500
+ type IntegrationEntityFold = {
5501
+ attribute: string
5502
+ sort_by: {
5503
+ field: string
5504
+ } | {
5505
+ constant: unknown
5506
+ } | {
5507
+ jsonataExpression: string
5508
+ }
5509
+ item: Record<string, {
5510
+ field: string
5511
+ } | {
5512
+ constant: unknown
5513
+ } | {
5514
+ jsonataExpression: string
5515
+ }>
5516
+ }
5517
+ ```
5518
+
5519
+ ### `MappedFieldValue`
5520
+
5521
+ One mapped value. Exactly one of field, constant or jsonataExpression must be set — the same three forms `IntegrationEntityField` accepts.
5522
+
5523
+ ```ts
5524
+ type MappedFieldValue = {
5525
+ field: string
5526
+ } | {
5527
+ constant: unknown
5528
+ } | {
5529
+ jsonataExpression: string
5264
5530
  }
5265
5531
  ```
5266
5532
 
@@ -5626,6 +5892,7 @@ type EmbeddedUseCaseRequest = {
5626
5892
  mode?: { ... }
5627
5893
  scope?: { ... }
5628
5894
  fields?: { ... }
5895
+ conditional?: { ... }
5629
5896
  }>
5630
5897
  meter_readings?: Array<{
5631
5898
  jsonataExpression?: { ... }
@@ -5708,7 +5975,6 @@ type EmbeddedUseCaseRequest = {
5708
5975
  response_type: { ... }
5709
5976
  }>
5710
5977
  response?: {
5711
- body: { ... }
5712
5978
  // ...
5713
5979
  }
5714
5980
  ```
@@ -5745,6 +6011,7 @@ type EmbeddedInboundUseCaseRequest = {
5745
6011
  mode?: { ... }
5746
6012
  scope?: { ... }
5747
6013
  fields?: { ... }
6014
+ conditional?: { ... }
5748
6015
  }>
5749
6016
  meter_readings?: Array<{
5750
6017
  jsonataExpression?: { ... }
@@ -5932,6 +6199,7 @@ type InboundUseCase = {
5932
6199
  mode?: { ... }
5933
6200
  scope?: { ... }
5934
6201
  fields?: { ... }
6202
+ conditional?: { ... }
5935
6203
  }>
5936
6204
  meter_readings?: Array<{
5937
6205
  jsonataExpression?: { ... }
@@ -6123,6 +6391,7 @@ type UseCase = {
6123
6391
  mode?: { ... }
6124
6392
  scope?: { ... }
6125
6393
  fields?: { ... }
6394
+ conditional?: { ... }
6126
6395
  }>
6127
6396
  meter_readings?: Array<{
6128
6397
  jsonataExpression?: { ... }
@@ -6201,7 +6470,6 @@ type UseCase = {
6201
6470
  name: { ... }
6202
6471
  required: { ... }
6203
6472
  description?: { ... }
6204
- }>
6205
6473
  // ...
6206
6474
  }
6207
6475
  ```
@@ -6224,6 +6492,7 @@ type CreateUseCaseRequest = {
6224
6492
  mode?: { ... }
6225
6493
  scope?: { ... }
6226
6494
  fields?: { ... }
6495
+ conditional?: { ... }
6227
6496
  }>
6228
6497
  meter_readings?: Array<{
6229
6498
  jsonataExpression?: { ... }
@@ -6308,7 +6577,6 @@ type CreateUseCaseRequest = {
6308
6577
  content_type?: { ... }
6309
6578
  }
6310
6579
  prevent_indirect_serving?: boolean
6311
- }
6312
6580
  // ...
6313
6581
  }
6314
6582
  ```
@@ -6341,6 +6609,7 @@ type CreateInboundUseCaseRequest = {
6341
6609
  mode?: { ... }
6342
6610
  scope?: { ... }
6343
6611
  fields?: { ... }
6612
+ conditional?: { ... }
6344
6613
  }>
6345
6614
  meter_readings?: Array<{
6346
6615
  jsonataExpression?: { ... }
@@ -6498,6 +6767,7 @@ type UpdateUseCaseRequest = {
6498
6767
  mode?: { ... }
6499
6768
  scope?: { ... }
6500
6769
  fields?: { ... }
6770
+ conditional?: { ... }
6501
6771
  }>
6502
6772
  meter_readings?: Array<{
6503
6773
  jsonataExpression?: { ... }
@@ -6581,7 +6851,6 @@ type UpdateUseCaseRequest = {
6581
6851
  body: { ... }
6582
6852
  encoding: { ... }
6583
6853
  filename?: { ... }
6584
- content_type?: { ... }
6585
6854
  // ...
6586
6855
  }
6587
6856
  ```
@@ -6616,6 +6885,7 @@ type UpdateInboundUseCaseRequest = {
6616
6885
  mode?: { ... }
6617
6886
  scope?: { ... }
6618
6887
  fields?: { ... }
6888
+ conditional?: { ... }
6619
6889
  }>
6620
6890
  meter_readings?: Array<{
6621
6891
  jsonataExpression?: { ... }
@@ -6788,6 +7058,7 @@ type UseCaseHistoryEntry = {
6788
7058
  mode?: { ... }
6789
7059
  scope?: { ... }
6790
7060
  fields?: { ... }
7061
+ conditional?: { ... }
6791
7062
  }>
6792
7063
  meter_readings?: Array<{
6793
7064
  jsonataExpression?: { ... }
@@ -6864,7 +7135,6 @@ type UseCaseHistoryEntry = {
6864
7135
  password?: { ... }
6865
7136
  body_params?: { ... }
6866
7137
  headers?: { ... }
6867
- query_params?: { ... }
6868
7138
  // ...
6869
7139
  }
6870
7140
  ```
@@ -6913,6 +7183,7 @@ type InboundUseCaseHistoryEntry = {
6913
7183
  mode?: { ... }
6914
7184
  scope?: { ... }
6915
7185
  fields?: { ... }
7186
+ conditional?: { ... }
6916
7187
  }>
6917
7188
  meter_readings?: Array<{
6918
7189
  jsonataExpression?: { ... }
@@ -7696,6 +7967,7 @@ type MappingSimulationV2Request = {
7696
7967
  mode?: { ... }
7697
7968
  scope?: { ... }
7698
7969
  fields?: { ... }
7970
+ conditional?: { ... }
7699
7971
  }>
7700
7972
  meter_readings?: Array<{
7701
7973
  jsonataExpression?: { ... }
@@ -8022,6 +8294,7 @@ type DirectSimulationRequest = {
8022
8294
  mode?: { ... }
8023
8295
  scope?: { ... }
8024
8296
  fields?: { ... }
8297
+ conditional?: { ... }
8025
8298
  }>
8026
8299
  meter_readings?: Array<{
8027
8300
  jsonataExpression?: { ... }