@epilot/erp-integration-client 0.13.0 → 0.14.0

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.
@@ -1 +1 @@
1
- (()=>{"use strict";var e={330:function(e,t,n){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(466));t.default=o.default},466:e=>{e.exports=JSON.parse('{"openapi":"3.0.3","info":{"title":"","version":""},"servers":[{"url":"https://erp-integration-api.sls.epilot.io"}],"paths":{"/v1/erp/tracking/acknowledgement":{"post":{"operationId":"acknowledgeTracking","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v1/erp/trigger":{"post":{"operationId":"triggerErp","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/erp/updates/events":{"post":{"operationId":"processErpUpdatesEvents","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/erp/updates/events":{"post":{"operationId":"processErpUpdatesEventsV2","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/erp/updates/mapping_simulation":{"post":{"operationId":"simulateMappingV2","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/erp/updates/mapping_simulation":{"post":{"operationId":"simulateMapping","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations":{"get":{"operationId":"listIntegrations","responses":{}},"post":{"operationId":"createIntegration","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}":{"get":{"operationId":"getIntegration","parameters":[{"name":"integrationId","in":"path","required":true}],"responses":{}},"put":{"operationId":"updateIntegration","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deleteIntegration","parameters":[{"name":"integrationId","in":"path","required":true}],"responses":{}}},"/v1/integrations/{integrationId}/events":{"post":{"operationId":"queryEvents","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}/use-cases":{"get":{"operationId":"listUseCases","parameters":[{"name":"integrationId","in":"path","required":true}],"responses":{}},"post":{"operationId":"createUseCase","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}/use-cases/{useCaseId}":{"get":{"operationId":"getUseCase","parameters":[{"name":"integrationId","in":"path","required":true},{"name":"useCaseId","in":"path","required":true}],"responses":{}},"put":{"operationId":"updateUseCase","parameters":[{"name":"integrationId","in":"path","required":true},{"name":"useCaseId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deleteUseCase","parameters":[{"name":"integrationId","in":"path","required":true},{"name":"useCaseId","in":"path","required":true}],"responses":{}}},"/v1/integrations/{integrationId}/use-cases/{useCaseId}/history":{"get":{"operationId":"listUseCaseHistory","parameters":[{"name":"integrationId","in":"path","required":true},{"name":"useCaseId","in":"path","required":true},{"name":"cursor","in":"query","required":false}],"responses":{}}},"/v1/integrations/{integrationId}/app-mapping":{"put":{"operationId":"setIntegrationAppMapping","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deleteIntegrationAppMapping","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}}},"components":{"responses":{"BadRequest":{"content":{"application/json":{}}},"NotFound":{"content":{"application/json":{}}},"Unauthorized":{"content":{"application/json":{}}},"InternalServerError":{"content":{"application/json":{}}},"ERPUpdatesResponse":{"content":{"application/json":{}}},"TriggerWebhookResponse":{"content":{"application/json":{}}},"QueryEventsResponse":{"content":{"application/json":{}}}}}}')}},t={},n=function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r].call(s.exports,s,s.exports,n),s.exports}(330),r=exports;for(var o in n)r[o]=n[o];n.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})})();
1
+ (()=>{"use strict";var e={330:function(e,t,n){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(466));t.default=o.default},466:e=>{e.exports=JSON.parse('{"openapi":"3.0.3","info":{"title":"","version":""},"servers":[{"url":"https://erp-integration-api.sls.epilot.io"}],"paths":{"/v1/erp/tracking/acknowledgement":{"post":{"operationId":"acknowledgeTracking","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v1/erp/trigger":{"post":{"operationId":"triggerErp","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/erp/updates/events":{"post":{"operationId":"processErpUpdatesEvents","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/erp/updates/events":{"post":{"operationId":"processErpUpdatesEventsV2","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/erp/updates/mapping_simulation":{"post":{"operationId":"simulateMappingV2","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/erp/updates/mapping_simulation":{"post":{"operationId":"simulateMapping","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations":{"get":{"operationId":"listIntegrations","responses":{}},"post":{"operationId":"createIntegration","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}":{"get":{"operationId":"getIntegration","parameters":[{"name":"integrationId","in":"path","required":true}],"responses":{}},"put":{"operationId":"updateIntegration","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deleteIntegration","parameters":[{"name":"integrationId","in":"path","required":true}],"responses":{}}},"/v1/integrations/{integrationId}/events":{"post":{"operationId":"queryEvents","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}/events/replay":{"post":{"operationId":"replayEvents","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}/use-cases":{"get":{"operationId":"listUseCases","parameters":[{"name":"integrationId","in":"path","required":true}],"responses":{}},"post":{"operationId":"createUseCase","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}/use-cases/{useCaseId}":{"get":{"operationId":"getUseCase","parameters":[{"name":"integrationId","in":"path","required":true},{"name":"useCaseId","in":"path","required":true}],"responses":{}},"put":{"operationId":"updateUseCase","parameters":[{"name":"integrationId","in":"path","required":true},{"name":"useCaseId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deleteUseCase","parameters":[{"name":"integrationId","in":"path","required":true},{"name":"useCaseId","in":"path","required":true}],"responses":{}}},"/v1/integrations/{integrationId}/use-cases/{useCaseId}/history":{"get":{"operationId":"listUseCaseHistory","parameters":[{"name":"integrationId","in":"path","required":true},{"name":"useCaseId","in":"path","required":true},{"name":"cursor","in":"query","required":false}],"responses":{}}},"/v1/integrations/{integrationId}/app-mapping":{"put":{"operationId":"setIntegrationAppMapping","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deleteIntegrationAppMapping","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}}},"components":{"responses":{"BadRequest":{"content":{"application/json":{}}},"NotFound":{"content":{"application/json":{}}},"Unauthorized":{"content":{"application/json":{}}},"InternalServerError":{"content":{"application/json":{}}},"ReplayEventsResponse":{"content":{"application/json":{}}},"ERPUpdatesResponse":{"content":{"application/json":{}}},"TriggerWebhookResponse":{"content":{"application/json":{}}},"QueryEventsResponse":{"content":{"application/json":{}}}}}}')}},t={},n=function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r].call(s.exports,s,s.exports,n),s.exports}(330),r=exports;for(var o in n)r[o]=n[o];n.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})})();
@@ -155,6 +155,25 @@
155
155
  "responses": {}
156
156
  }
157
157
  },
158
+ "/v1/integrations/{integrationId}/events/replay": {
159
+ "post": {
160
+ "operationId": "replayEvents",
161
+ "parameters": [
162
+ {
163
+ "name": "integrationId",
164
+ "in": "path",
165
+ "required": true
166
+ }
167
+ ],
168
+ "requestBody": {
169
+ "required": true,
170
+ "content": {
171
+ "application/json": {}
172
+ }
173
+ },
174
+ "responses": {}
175
+ }
176
+ },
158
177
  "/v1/integrations/{integrationId}/use-cases": {
159
178
  "get": {
160
179
  "operationId": "listUseCases",
@@ -323,6 +342,11 @@
323
342
  "application/json": {}
324
343
  }
325
344
  },
345
+ "ReplayEventsResponse": {
346
+ "content": {
347
+ "application/json": {}
348
+ }
349
+ },
326
350
  "ERPUpdatesResponse": {
327
351
  "content": {
328
352
  "application/json": {}
package/dist/openapi.d.ts CHANGED
@@ -39,7 +39,7 @@ declare namespace Components {
39
39
  * example:
40
40
  * 2025-10-31T12:34:56Z
41
41
  */
42
- created_at?: string; // date-time
42
+ event_time?: string; // date-time
43
43
  /**
44
44
  * example:
45
45
  * evt_1234567890abcdef
@@ -53,6 +53,12 @@ declare namespace Components {
53
53
  */
54
54
  has_more?: boolean;
55
55
  }
56
+ export interface ReplayEventsResponse {
57
+ /**
58
+ * List of event IDs for which replay was requested
59
+ */
60
+ event_ids?: string[];
61
+ }
56
62
  export type TriggerWebhookResponse = Schemas.TriggerWebhookResp;
57
63
  export type Unauthorized = Schemas.ErrorResponseBase;
58
64
  }
@@ -191,6 +197,25 @@ declare namespace Components {
191
197
  */
192
198
  message?: string;
193
199
  }
200
+ /**
201
+ * Extended unique identifier field configuration with type hints for repeatable fields
202
+ */
203
+ export interface ExtendedUniqueIdField {
204
+ /**
205
+ * The attribute name to use as unique identifier
206
+ */
207
+ attribute: string;
208
+ _type?: /**
209
+ * Type hint for repeatable fields that require special search handling.
210
+ * These fields are stored as arrays of objects (e.g., email: [{ email: "value" }]).
211
+ *
212
+ */
213
+ RepeatableFieldType;
214
+ /**
215
+ * Which array item to use (0-indexed, default first)
216
+ */
217
+ index?: number;
218
+ }
194
219
  /**
195
220
  * Configuration for inbound use cases (ERP to epilot)
196
221
  */
@@ -205,39 +230,11 @@ declare namespace Components {
205
230
  meter_readings?: IntegrationMeterReading[];
206
231
  }
207
232
  export interface InboundUseCase {
208
- /**
209
- * Unique identifier for the use case
210
- */
211
- id: string; // uuid
212
- /**
213
- * Parent integration ID
214
- */
215
- integrationId: string; // uuid
216
- /**
217
- * Use case name
218
- */
219
- name: string;
220
233
  /**
221
234
  * Use case type
222
235
  */
223
236
  type: "inbound";
224
- /**
225
- * Whether the use case is enabled
226
- */
227
- enabled: boolean;
228
237
  configuration?: /* Configuration for inbound use cases (ERP to epilot) */ InboundIntegrationEventConfiguration;
229
- /**
230
- * Description of the last change made to this use case
231
- */
232
- change_description?: string;
233
- /**
234
- * ISO-8601 timestamp when the use case was created
235
- */
236
- created_at: string; // date-time
237
- /**
238
- * ISO-8601 timestamp when the use case was last updated
239
- */
240
- updated_at: string; // date-time
241
238
  }
242
239
  export interface InboundUseCaseHistoryEntry {
243
240
  /**
@@ -348,7 +345,10 @@ declare namespace Components {
348
345
  */
349
346
  entity_schema: string;
350
347
  /**
351
- * Array of attribute names that uniquely identify this entity
348
+ * Array of attribute names that uniquely identify this entity.
349
+ * The _type hint for repeatable fields (e.g., email, phone) should be specified
350
+ * on the corresponding field definition in the fields array.
351
+ *
352
352
  */
353
353
  unique_ids: string[];
354
354
  /**
@@ -381,6 +381,18 @@ declare namespace Components {
381
381
  * Constant value to assign (any type)
382
382
  */
383
383
  constant?: any;
384
+ /**
385
+ * Type hint for repeatable fields (email, phone).
386
+ * When this attribute is used as a unique identifier, specifying the _type
387
+ * enables correct search path generation (e.g., email.email.keyword).
388
+ *
389
+ */
390
+ _type?: /**
391
+ * Type hint for repeatable fields that require special search handling.
392
+ * These fields are stored as arrays of objects (e.g., email: [{ email: "value" }]).
393
+ *
394
+ */
395
+ RepeatableFieldType;
384
396
  /**
385
397
  * Controls whether this field mapping should be processed. Can be a boolean or a JSONata expression (string) that evaluates to a boolean. Defaults to true if omitted.
386
398
  */
@@ -520,39 +532,11 @@ declare namespace Components {
520
532
  [name: string]: any;
521
533
  }
522
534
  export interface OutboundUseCase {
523
- /**
524
- * Unique identifier for the use case
525
- */
526
- id: string; // uuid
527
- /**
528
- * Parent integration ID
529
- */
530
- integrationId: string; // uuid
531
- /**
532
- * Use case name
533
- */
534
- name: string;
535
535
  /**
536
536
  * Use case type
537
537
  */
538
538
  type: "outbound";
539
- /**
540
- * Whether the use case is enabled
541
- */
542
- enabled: boolean;
543
539
  configuration?: /* Configuration for outbound use cases (epilot to ERP). Structure TBD. */ OutboundIntegrationEventConfiguration;
544
- /**
545
- * Description of the last change made to this use case
546
- */
547
- change_description?: string;
548
- /**
549
- * ISO-8601 timestamp when the use case was created
550
- */
551
- created_at: string; // date-time
552
- /**
553
- * ISO-8601 timestamp when the use case was last updated
554
- */
555
- updated_at: string; // date-time
556
540
  }
557
541
  export interface OutboundUseCaseHistoryEntry {
558
542
  /**
@@ -746,6 +730,12 @@ declare namespace Components {
746
730
  * Target attribute name in the related entity
747
731
  */
748
732
  attribute: string;
733
+ _type?: /**
734
+ * Type hint for repeatable fields that require special search handling.
735
+ * These fields are stored as arrays of objects (e.g., email: [{ email: "value" }]).
736
+ *
737
+ */
738
+ RepeatableFieldType;
749
739
  /**
750
740
  * Source field name from the event data
751
741
  */
@@ -759,6 +749,119 @@ declare namespace Components {
759
749
  */
760
750
  constant?: any;
761
751
  }
752
+ /**
753
+ * Type hint for repeatable fields that require special search handling.
754
+ * These fields are stored as arrays of objects (e.g., email: [{ email: "value" }]).
755
+ *
756
+ */
757
+ export type RepeatableFieldType = "email" | "phone";
758
+ export interface ReplayEventsRequest {
759
+ /**
760
+ * List of event IDs to replay. Maximum 100 events per request.
761
+ */
762
+ event_ids: [
763
+ string,
764
+ string?,
765
+ string?,
766
+ string?,
767
+ string?,
768
+ string?,
769
+ string?,
770
+ string?,
771
+ string?,
772
+ string?,
773
+ string?,
774
+ string?,
775
+ string?,
776
+ string?,
777
+ string?,
778
+ string?,
779
+ string?,
780
+ string?,
781
+ string?,
782
+ string?,
783
+ string?,
784
+ string?,
785
+ string?,
786
+ string?,
787
+ string?,
788
+ string?,
789
+ string?,
790
+ string?,
791
+ string?,
792
+ string?,
793
+ string?,
794
+ string?,
795
+ string?,
796
+ string?,
797
+ string?,
798
+ string?,
799
+ string?,
800
+ string?,
801
+ string?,
802
+ string?,
803
+ string?,
804
+ string?,
805
+ string?,
806
+ string?,
807
+ string?,
808
+ string?,
809
+ string?,
810
+ string?,
811
+ string?,
812
+ string?,
813
+ string?,
814
+ string?,
815
+ string?,
816
+ string?,
817
+ string?,
818
+ string?,
819
+ string?,
820
+ string?,
821
+ string?,
822
+ string?,
823
+ string?,
824
+ string?,
825
+ string?,
826
+ string?,
827
+ string?,
828
+ string?,
829
+ string?,
830
+ string?,
831
+ string?,
832
+ string?,
833
+ string?,
834
+ string?,
835
+ string?,
836
+ string?,
837
+ string?,
838
+ string?,
839
+ string?,
840
+ string?,
841
+ string?,
842
+ string?,
843
+ string?,
844
+ string?,
845
+ string?,
846
+ string?,
847
+ string?,
848
+ string?,
849
+ string?,
850
+ string?,
851
+ string?,
852
+ string?,
853
+ string?,
854
+ string?,
855
+ string?,
856
+ string?,
857
+ string?,
858
+ string?,
859
+ string?,
860
+ string?,
861
+ string?,
862
+ string?
863
+ ];
864
+ }
762
865
  export interface SetIntegrationAppMappingRequest {
763
866
  /**
764
867
  * UUID of the integration app instance
@@ -827,6 +930,34 @@ declare namespace Components {
827
930
  end_date?: string;
828
931
  event_id?: string;
829
932
  }
933
+ /**
934
+ * Unique identifier field configuration. Can be either:
935
+ * - A simple string (attribute name)
936
+ * - An extended object with type hints for repeatable fields
937
+ *
938
+ */
939
+ export type UniqueIdField = /**
940
+ * Unique identifier field configuration. Can be either:
941
+ * - A simple string (attribute name)
942
+ * - An extended object with type hints for repeatable fields
943
+ *
944
+ */
945
+ string | /* Extended unique identifier field configuration with type hints for repeatable fields */ ExtendedUniqueIdField;
946
+ /**
947
+ * Metadata about a unique identifier field (used in message payloads)
948
+ */
949
+ export interface UniqueIdMetadata {
950
+ fieldType?: /**
951
+ * Type hint for repeatable fields that require special search handling.
952
+ * These fields are stored as arrays of objects (e.g., email: [{ email: "value" }]).
953
+ *
954
+ */
955
+ RepeatableFieldType;
956
+ /**
957
+ * Which array item was used (0-indexed)
958
+ */
959
+ index?: number;
960
+ }
830
961
  export interface UpdateInboundUseCaseRequest {
831
962
  /**
832
963
  * Use case name
@@ -890,7 +1021,40 @@ declare namespace Components {
890
1021
  */
891
1022
  change_description?: string;
892
1023
  }
893
- export type UseCase = InboundUseCase | OutboundUseCase;
1024
+ export type UseCase = {
1025
+ /**
1026
+ * Unique identifier for the use case
1027
+ */
1028
+ id: string; // uuid
1029
+ /**
1030
+ * Parent integration ID
1031
+ */
1032
+ integrationId: string; // uuid
1033
+ /**
1034
+ * Use case name
1035
+ */
1036
+ name: string;
1037
+ /**
1038
+ * Use case type
1039
+ */
1040
+ type: "inbound" | "outbound";
1041
+ /**
1042
+ * Whether the use case is enabled
1043
+ */
1044
+ enabled: boolean;
1045
+ /**
1046
+ * Description of the last change made to this use case
1047
+ */
1048
+ change_description?: string;
1049
+ /**
1050
+ * ISO-8601 timestamp when the use case was created
1051
+ */
1052
+ created_at: string; // date-time
1053
+ /**
1054
+ * ISO-8601 timestamp when the use case was last updated
1055
+ */
1056
+ updated_at: string; // date-time
1057
+ } & (InboundUseCase | OutboundUseCase);
894
1058
  export type UseCaseHistoryEntry = InboundUseCaseHistoryEntry | OutboundUseCaseHistoryEntry;
895
1059
  export interface UseCaseHistoryEntryBase {
896
1060
  /**
@@ -1180,6 +1344,22 @@ declare namespace Paths {
1180
1344
  export type $500 = Components.Responses.InternalServerError;
1181
1345
  }
1182
1346
  }
1347
+ namespace ReplayEvents {
1348
+ namespace Parameters {
1349
+ export type IntegrationId = string; // uuid
1350
+ }
1351
+ export interface PathParameters {
1352
+ integrationId: Parameters.IntegrationId /* uuid */;
1353
+ }
1354
+ export type RequestBody = Components.Schemas.ReplayEventsRequest;
1355
+ namespace Responses {
1356
+ export type $200 = Components.Responses.ReplayEventsResponse;
1357
+ export type $400 = Components.Responses.BadRequest;
1358
+ export type $401 = Components.Responses.Unauthorized;
1359
+ export type $404 = Components.Responses.NotFound;
1360
+ export type $500 = Components.Responses.InternalServerError;
1361
+ }
1362
+ }
1183
1363
  namespace SetIntegrationAppMapping {
1184
1364
  namespace Parameters {
1185
1365
  export type IntegrationId = string; // uuid
@@ -1408,6 +1588,16 @@ export interface OperationMethods {
1408
1588
  data?: Paths.QueryEvents.RequestBody,
1409
1589
  config?: AxiosRequestConfig
1410
1590
  ): OperationResponse<Paths.QueryEvents.Responses.$200>
1591
+ /**
1592
+ * replayEvents - replayEvents
1593
+ *
1594
+ * Replay one or more events for a specific integration. Events will be re-processed with their original payloads but with a new correlation ID for traceability.
1595
+ */
1596
+ 'replayEvents'(
1597
+ parameters?: Parameters<Paths.ReplayEvents.PathParameters> | null,
1598
+ data?: Paths.ReplayEvents.RequestBody,
1599
+ config?: AxiosRequestConfig
1600
+ ): OperationResponse<Paths.ReplayEvents.Responses.$200>
1411
1601
  /**
1412
1602
  * listUseCases - listUseCases
1413
1603
  *
@@ -1649,6 +1839,18 @@ export interface PathsDictionary {
1649
1839
  config?: AxiosRequestConfig
1650
1840
  ): OperationResponse<Paths.QueryEvents.Responses.$200>
1651
1841
  }
1842
+ ['/v1/integrations/{integrationId}/events/replay']: {
1843
+ /**
1844
+ * replayEvents - replayEvents
1845
+ *
1846
+ * Replay one or more events for a specific integration. Events will be re-processed with their original payloads but with a new correlation ID for traceability.
1847
+ */
1848
+ 'post'(
1849
+ parameters?: Parameters<Paths.ReplayEvents.PathParameters> | null,
1850
+ data?: Paths.ReplayEvents.RequestBody,
1851
+ config?: AxiosRequestConfig
1852
+ ): OperationResponse<Paths.ReplayEvents.Responses.$200>
1853
+ }
1652
1854
  ['/v1/integrations/{integrationId}/use-cases']: {
1653
1855
  /**
1654
1856
  * listUseCases - listUseCases
@@ -1759,6 +1961,7 @@ export type EntityUpdate = Components.Schemas.EntityUpdate;
1759
1961
  export type ErpEvent = Components.Schemas.ErpEvent;
1760
1962
  export type ErpUpdatesEventsV2Request = Components.Schemas.ErpUpdatesEventsV2Request;
1761
1963
  export type ErrorResponseBase = Components.Schemas.ErrorResponseBase;
1964
+ export type ExtendedUniqueIdField = Components.Schemas.ExtendedUniqueIdField;
1762
1965
  export type InboundIntegrationEventConfiguration = Components.Schemas.InboundIntegrationEventConfiguration;
1763
1966
  export type InboundUseCase = Components.Schemas.InboundUseCase;
1764
1967
  export type InboundUseCaseHistoryEntry = Components.Schemas.InboundUseCaseHistoryEntry;
@@ -1786,9 +1989,13 @@ export type RelationRefItemConfig = Components.Schemas.RelationRefItemConfig;
1786
1989
  export type RelationRefValueConfig = Components.Schemas.RelationRefValueConfig;
1787
1990
  export type RelationRefsConfig = Components.Schemas.RelationRefsConfig;
1788
1991
  export type RelationUniqueIdField = Components.Schemas.RelationUniqueIdField;
1992
+ export type RepeatableFieldType = Components.Schemas.RepeatableFieldType;
1993
+ export type ReplayEventsRequest = Components.Schemas.ReplayEventsRequest;
1789
1994
  export type SetIntegrationAppMappingRequest = Components.Schemas.SetIntegrationAppMappingRequest;
1790
1995
  export type TriggerErpActionRequest = Components.Schemas.TriggerErpActionRequest;
1791
1996
  export type TriggerWebhookResp = Components.Schemas.TriggerWebhookResp;
1997
+ export type UniqueIdField = Components.Schemas.UniqueIdField;
1998
+ export type UniqueIdMetadata = Components.Schemas.UniqueIdMetadata;
1792
1999
  export type UpdateInboundUseCaseRequest = Components.Schemas.UpdateInboundUseCaseRequest;
1793
2000
  export type UpdateIntegrationRequest = Components.Schemas.UpdateIntegrationRequest;
1794
2001
  export type UpdateOutboundUseCaseRequest = Components.Schemas.UpdateOutboundUseCaseRequest;
package/dist/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.0.3",
3
3
  "info": {
4
4
  "title": "ERP Integration API",
5
- "version": "0.15.0",
5
+ "version": "0.17.0",
6
6
  "description": "API for integrating with ERP systems, handling tracking acknowledgments, triggering ERP processes, and processing ERP updates."
7
7
  },
8
8
  "tags": [
@@ -1154,6 +1154,55 @@
1154
1154
  }
1155
1155
  }
1156
1156
  },
1157
+ "/v1/integrations/{integrationId}/events/replay": {
1158
+ "post": {
1159
+ "operationId": "replayEvents",
1160
+ "summary": "replayEvents",
1161
+ "description": "Replay one or more events for a specific integration. Events will be re-processed with their original payloads but with a new correlation ID for traceability.",
1162
+ "tags": [
1163
+ "integrations"
1164
+ ],
1165
+ "parameters": [
1166
+ {
1167
+ "name": "integrationId",
1168
+ "in": "path",
1169
+ "required": true,
1170
+ "description": "The integration ID",
1171
+ "schema": {
1172
+ "type": "string",
1173
+ "format": "uuid"
1174
+ }
1175
+ }
1176
+ ],
1177
+ "requestBody": {
1178
+ "required": true,
1179
+ "content": {
1180
+ "application/json": {
1181
+ "schema": {
1182
+ "$ref": "#/components/schemas/ReplayEventsRequest"
1183
+ }
1184
+ }
1185
+ }
1186
+ },
1187
+ "responses": {
1188
+ "200": {
1189
+ "$ref": "#/components/responses/ReplayEventsResponse"
1190
+ },
1191
+ "400": {
1192
+ "$ref": "#/components/responses/BadRequest"
1193
+ },
1194
+ "401": {
1195
+ "$ref": "#/components/responses/Unauthorized"
1196
+ },
1197
+ "404": {
1198
+ "$ref": "#/components/responses/NotFound"
1199
+ },
1200
+ "500": {
1201
+ "$ref": "#/components/responses/InternalServerError"
1202
+ }
1203
+ }
1204
+ }
1205
+ },
1157
1206
  "/v1/integrations/{integrationId}/use-cases": {
1158
1207
  "get": {
1159
1208
  "operationId": "listUseCases",
@@ -1968,23 +2017,6 @@
1968
2017
  }
1969
2018
  },
1970
2019
  "UseCase": {
1971
- "oneOf": [
1972
- {
1973
- "$ref": "#/components/schemas/InboundUseCase"
1974
- },
1975
- {
1976
- "$ref": "#/components/schemas/OutboundUseCase"
1977
- }
1978
- ],
1979
- "discriminator": {
1980
- "propertyName": "type",
1981
- "mapping": {
1982
- "inbound": "#/components/schemas/InboundUseCase",
1983
- "outbound": "#/components/schemas/OutboundUseCase"
1984
- }
1985
- }
1986
- },
1987
- "InboundUseCase": {
1988
2020
  "type": "object",
1989
2021
  "required": [
1990
2022
  "id",
@@ -2013,7 +2045,8 @@
2013
2045
  "type": {
2014
2046
  "type": "string",
2015
2047
  "enum": [
2016
- "inbound"
2048
+ "inbound",
2049
+ "outbound"
2017
2050
  ],
2018
2051
  "description": "Use case type"
2019
2052
  },
@@ -2021,9 +2054,6 @@
2021
2054
  "type": "boolean",
2022
2055
  "description": "Whether the use case is enabled"
2023
2056
  },
2024
- "configuration": {
2025
- "$ref": "#/components/schemas/InboundIntegrationEventConfiguration"
2026
- },
2027
2057
  "change_description": {
2028
2058
  "type": "string",
2029
2059
  "maxLength": 2000,
@@ -2039,34 +2069,47 @@
2039
2069
  "format": "date-time",
2040
2070
  "description": "ISO-8601 timestamp when the use case was last updated"
2041
2071
  }
2072
+ },
2073
+ "anyOf": [
2074
+ {
2075
+ "$ref": "#/components/schemas/InboundUseCase"
2076
+ },
2077
+ {
2078
+ "$ref": "#/components/schemas/OutboundUseCase"
2079
+ }
2080
+ ],
2081
+ "discriminator": {
2082
+ "propertyName": "type",
2083
+ "mapping": {
2084
+ "inbound": "#/components/schemas/InboundUseCase",
2085
+ "outbound": "#/components/schemas/OutboundUseCase"
2086
+ }
2042
2087
  }
2043
2088
  },
2044
- "OutboundUseCase": {
2089
+ "InboundUseCase": {
2045
2090
  "type": "object",
2046
2091
  "required": [
2047
- "id",
2048
- "integrationId",
2049
- "name",
2050
- "type",
2051
- "enabled",
2052
- "created_at",
2053
- "updated_at"
2092
+ "type"
2054
2093
  ],
2055
2094
  "properties": {
2056
- "id": {
2057
- "type": "string",
2058
- "format": "uuid",
2059
- "description": "Unique identifier for the use case"
2060
- },
2061
- "integrationId": {
2062
- "type": "string",
2063
- "format": "uuid",
2064
- "description": "Parent integration ID"
2065
- },
2066
- "name": {
2095
+ "type": {
2067
2096
  "type": "string",
2068
- "description": "Use case name"
2097
+ "enum": [
2098
+ "inbound"
2099
+ ],
2100
+ "description": "Use case type"
2069
2101
  },
2102
+ "configuration": {
2103
+ "$ref": "#/components/schemas/InboundIntegrationEventConfiguration"
2104
+ }
2105
+ }
2106
+ },
2107
+ "OutboundUseCase": {
2108
+ "type": "object",
2109
+ "required": [
2110
+ "type"
2111
+ ],
2112
+ "properties": {
2070
2113
  "type": {
2071
2114
  "type": "string",
2072
2115
  "enum": [
@@ -2074,27 +2117,8 @@
2074
2117
  ],
2075
2118
  "description": "Use case type"
2076
2119
  },
2077
- "enabled": {
2078
- "type": "boolean",
2079
- "description": "Whether the use case is enabled"
2080
- },
2081
2120
  "configuration": {
2082
2121
  "$ref": "#/components/schemas/OutboundIntegrationEventConfiguration"
2083
- },
2084
- "change_description": {
2085
- "type": "string",
2086
- "maxLength": 2000,
2087
- "description": "Description of the last change made to this use case"
2088
- },
2089
- "created_at": {
2090
- "type": "string",
2091
- "format": "date-time",
2092
- "description": "ISO-8601 timestamp when the use case was created"
2093
- },
2094
- "updated_at": {
2095
- "type": "string",
2096
- "format": "date-time",
2097
- "description": "ISO-8601 timestamp when the use case was last updated"
2098
2122
  }
2099
2123
  }
2100
2124
  },
@@ -2724,7 +2748,7 @@
2724
2748
  "items": {
2725
2749
  "type": "string"
2726
2750
  },
2727
- "description": "Array of attribute names that uniquely identify this entity"
2751
+ "description": "Array of attribute names that uniquely identify this entity.\nThe _type hint for repeatable fields (e.g., email, phone) should be specified\non the corresponding field definition in the fields array.\n"
2728
2752
  },
2729
2753
  "jsonataExpression": {
2730
2754
  "type": "string",
@@ -2814,6 +2838,10 @@
2814
2838
  "constant": {
2815
2839
  "description": "Constant value to assign (any type)"
2816
2840
  },
2841
+ "_type": {
2842
+ "$ref": "#/components/schemas/RepeatableFieldType",
2843
+ "description": "Type hint for repeatable fields (email, phone).\nWhen this attribute is used as a unique identifier, specifying the _type\nenables correct search path generation (e.g., email.email.keyword).\n"
2844
+ },
2817
2845
  "enabled": {
2818
2846
  "oneOf": [
2819
2847
  {
@@ -2898,6 +2926,9 @@
2898
2926
  "type": "string",
2899
2927
  "description": "Target attribute name in the related entity"
2900
2928
  },
2929
+ "_type": {
2930
+ "$ref": "#/components/schemas/RepeatableFieldType"
2931
+ },
2901
2932
  "field": {
2902
2933
  "type": "string",
2903
2934
  "description": "Source field name from the event data"
@@ -3003,6 +3034,79 @@
3003
3034
  }
3004
3035
  }
3005
3036
  },
3037
+ "RepeatableFieldType": {
3038
+ "type": "string",
3039
+ "enum": [
3040
+ "email",
3041
+ "phone"
3042
+ ],
3043
+ "description": "Type hint for repeatable fields that require special search handling.\nThese fields are stored as arrays of objects (e.g., email: [{ email: \"value\" }]).\n"
3044
+ },
3045
+ "ExtendedUniqueIdField": {
3046
+ "type": "object",
3047
+ "description": "Extended unique identifier field configuration with type hints for repeatable fields",
3048
+ "required": [
3049
+ "attribute"
3050
+ ],
3051
+ "properties": {
3052
+ "attribute": {
3053
+ "type": "string",
3054
+ "description": "The attribute name to use as unique identifier"
3055
+ },
3056
+ "_type": {
3057
+ "$ref": "#/components/schemas/RepeatableFieldType"
3058
+ },
3059
+ "index": {
3060
+ "type": "integer",
3061
+ "default": 0,
3062
+ "minimum": 0,
3063
+ "description": "Which array item to use (0-indexed, default first)"
3064
+ }
3065
+ }
3066
+ },
3067
+ "UniqueIdField": {
3068
+ "description": "Unique identifier field configuration. Can be either:\n- A simple string (attribute name)\n- An extended object with type hints for repeatable fields\n",
3069
+ "oneOf": [
3070
+ {
3071
+ "type": "string",
3072
+ "description": "Simple attribute name"
3073
+ },
3074
+ {
3075
+ "$ref": "#/components/schemas/ExtendedUniqueIdField"
3076
+ }
3077
+ ]
3078
+ },
3079
+ "UniqueIdMetadata": {
3080
+ "type": "object",
3081
+ "description": "Metadata about a unique identifier field (used in message payloads)",
3082
+ "properties": {
3083
+ "fieldType": {
3084
+ "$ref": "#/components/schemas/RepeatableFieldType"
3085
+ },
3086
+ "index": {
3087
+ "type": "integer",
3088
+ "default": 0,
3089
+ "description": "Which array item was used (0-indexed)"
3090
+ }
3091
+ }
3092
+ },
3093
+ "ReplayEventsRequest": {
3094
+ "type": "object",
3095
+ "required": [
3096
+ "event_ids"
3097
+ ],
3098
+ "properties": {
3099
+ "event_ids": {
3100
+ "type": "array",
3101
+ "items": {
3102
+ "type": "string"
3103
+ },
3104
+ "minItems": 1,
3105
+ "maxItems": 100,
3106
+ "description": "List of event IDs to replay. Maximum 100 events per request."
3107
+ }
3108
+ }
3109
+ },
3006
3110
  "QueryEventsRequest": {
3007
3111
  "type": "object",
3008
3112
  "properties": {
@@ -3096,6 +3200,29 @@
3096
3200
  }
3097
3201
  }
3098
3202
  },
3203
+ "ReplayEventsResponse": {
3204
+ "description": "Events replay initiated",
3205
+ "content": {
3206
+ "application/json": {
3207
+ "schema": {
3208
+ "type": "object",
3209
+ "required": [
3210
+ "replayed",
3211
+ "results"
3212
+ ],
3213
+ "properties": {
3214
+ "event_ids": {
3215
+ "type": "array",
3216
+ "items": {
3217
+ "type": "string"
3218
+ },
3219
+ "description": "List of event IDs for which replay was requested"
3220
+ }
3221
+ }
3222
+ }
3223
+ }
3224
+ }
3225
+ },
3099
3226
  "ERPUpdatesResponse": {
3100
3227
  "description": "Some events failed to process",
3101
3228
  "content": {
@@ -3165,7 +3292,7 @@
3165
3292
  "nullable": true,
3166
3293
  "description": "Cursor to fetch the next page. Null if no more results.",
3167
3294
  "properties": {
3168
- "created_at": {
3295
+ "event_time": {
3169
3296
  "type": "string",
3170
3297
  "format": "date-time",
3171
3298
  "example": "2025-10-31T12:34:56Z"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/erp-integration-client",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "description": "Client library for ePilot ERP Integration API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",