@epilot/erp-integration-client 0.27.2 → 0.28.0-rc1

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.
@@ -0,0 +1,7 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(pnpm install:*)"
5
+ ]
6
+ }
7
+ }
package/dist/client.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { Client } from './openapi';
1
+ import type { Client } from './openapi';
2
2
  export declare const getClient: () => Client;
3
3
  export declare const createClient: () => Client;
@@ -1 +1 @@
1
- (()=>{"use strict";var e={330(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":{"deprecated":true,"operationId":"processErpUpdatesEvents","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/erp/updates/events":{"post":{"deprecated":true,"operationId":"processErpUpdatesEventsV2","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v3/erp/updates/events":{"post":{"operationId":"processErpUpdatesEventsV3","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":{}}},"/v2/integrations":{"get":{"operationId":"listIntegrationsV2","responses":{}},"post":{"operationId":"createIntegrationV2","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/integrations/{integrationId}":{"get":{"operationId":"getIntegrationV2","parameters":[{"name":"integrationId","in":"path","required":true}],"responses":{}},"put":{"operationId":"updateIntegrationV2","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deleteIntegrationV2","parameters":[{"name":"integrationId","in":"path","required":true}],"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":{}}},"/v1/integrations/{integrationId}/monitoring/inbound-events":{"post":{"operationId":"queryInboundMonitoringEvents","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}/monitoring/stats":{"post":{"operationId":"getMonitoringStats","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}/monitoring/timeseries":{"post":{"operationId":"getMonitoringTimeSeries","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}/outbound-status":{"get":{"operationId":"getOutboundStatus","parameters":[{"name":"integrationId","in":"path","required":true}],"responses":{}}},"/v1/integrations/{integrationId}/monitoring/access-logs":{"post":{"operationId":"queryAccessLogs","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}/monitoring/outbound-events":{"post":{"operationId":"queryOutboundMonitoringEvents","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":{}}},"QueryInboundMonitoringEventsResponse":{"content":{"application/json":{}}},"GetMonitoringStatsResponse":{"content":{"application/json":{}}},"GetMonitoringTimeSeriesResponse":{"content":{"application/json":{}}},"QueryAccessLogsResponse":{"content":{"application/json":{}}},"QueryOutboundMonitoringEventsResponse":{"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 i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.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(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":{"deprecated":true,"operationId":"processErpUpdatesEvents","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/erp/updates/events":{"post":{"deprecated":true,"operationId":"processErpUpdatesEventsV2","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v3/erp/updates/events":{"post":{"operationId":"processErpUpdatesEventsV3","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":{}}},"/v2/integrations":{"get":{"operationId":"listIntegrationsV2","responses":{}},"post":{"operationId":"createIntegrationV2","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/integrations/{integrationId}":{"get":{"operationId":"getIntegrationV2","parameters":[{"name":"integrationId","in":"path","required":true}],"responses":{}},"put":{"operationId":"updateIntegrationV2","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deleteIntegrationV2","parameters":[{"name":"integrationId","in":"path","required":true}],"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":{}}},"/v1/integrations/{integrationId}/monitoring/inbound-events":{"post":{"operationId":"queryInboundMonitoringEvents","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}/monitoring/stats":{"post":{"operationId":"getMonitoringStats","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}/monitoring/timeseries":{"post":{"operationId":"getMonitoringTimeSeries","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}/outbound-status":{"get":{"operationId":"getOutboundStatus","parameters":[{"name":"integrationId","in":"path","required":true}],"responses":{}}},"/v1/integrations/{integrationId}/monitoring/access-logs":{"post":{"operationId":"queryAccessLogs","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/integrations/{integrationId}/monitoring/outbound-events":{"post":{"operationId":"queryOutboundMonitoringEvents","parameters":[{"name":"integrationId","in":"path","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/secure-proxy":{"post":{"operationId":"secureProxy","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":{}}},"QueryInboundMonitoringEventsResponse":{"content":{"application/json":{}}},"GetMonitoringStatsResponse":{"content":{"application/json":{}}},"GetMonitoringTimeSeriesResponse":{"content":{"application/json":{}}},"QueryAccessLogsResponse":{"content":{"application/json":{}}},"QueryOutboundMonitoringEventsResponse":{"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 i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}(330),r=exports;for(var o in n)r[o]=n[o];n.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})})();
@@ -496,6 +496,18 @@
496
496
  },
497
497
  "responses": {}
498
498
  }
499
+ },
500
+ "/v1/secure-proxy": {
501
+ "post": {
502
+ "operationId": "secureProxy",
503
+ "requestBody": {
504
+ "required": true,
505
+ "content": {
506
+ "application/json": {}
507
+ }
508
+ },
509
+ "responses": {}
510
+ }
499
511
  }
500
512
  },
501
513
  "components": {
package/dist/openapi.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- /* eslint-disable */
2
-
3
1
  import type {
4
2
  OpenAPIClient,
5
3
  Parameters,
@@ -291,7 +289,31 @@ declare namespace Components {
291
289
  type: "outbound";
292
290
  configuration?: /* Configuration for outbound use cases. Defines the event that triggers the flow and the webhook mappings. */ OutboundIntegrationEventConfiguration;
293
291
  }
294
- export type CreateUseCaseRequest = CreateInboundUseCaseRequest | CreateOutboundUseCaseRequest | CreateFileProxyUseCaseRequest;
292
+ export interface CreateSecureProxyUseCaseRequest {
293
+ /**
294
+ * Use case name
295
+ */
296
+ name: string;
297
+ /**
298
+ * URL-safe identifier for the use case. Recommended for portable cross-environment referencing. Must be unique per integration. Immutable after creation. Lowercase alphanumeric, hyphens, and underscores only.
299
+ *
300
+ */
301
+ slug?: string; // ^[a-z0-9][a-z0-9_-]*$
302
+ /**
303
+ * Whether the use case is enabled
304
+ */
305
+ enabled: boolean;
306
+ /**
307
+ * Use case type
308
+ */
309
+ type: "secure_proxy";
310
+ configuration?: /**
311
+ * Configuration for secure_proxy use cases. Defines how to route requests through a secure VPC.
312
+ *
313
+ */
314
+ SecureProxyUseCaseConfiguration;
315
+ }
316
+ export type CreateUseCaseRequest = CreateInboundUseCaseRequest | CreateOutboundUseCaseRequest | CreateFileProxyUseCaseRequest | CreateSecureProxyUseCaseRequest;
295
317
  export interface CreateUseCaseRequestBase {
296
318
  /**
297
319
  * Use case name
@@ -338,6 +360,46 @@ declare namespace Components {
338
360
  */
339
361
  webhook_url?: string;
340
362
  }
363
+ export interface EmbeddedFileProxyUseCaseRequest {
364
+ /**
365
+ * Optional use case ID for update matching.
366
+ * - If provided and matches an existing use case, that use case is updated
367
+ * - If provided but no match, a new use case with this ID is created
368
+ * - If omitted, a new use case with auto-generated ID is created
369
+ *
370
+ */
371
+ id?: string; // uuid
372
+ /**
373
+ * Use case name
374
+ */
375
+ name: string;
376
+ /**
377
+ * URL-safe identifier for the use case. Recommended for portable cross-environment referencing. Must be unique per integration. Immutable after creation.
378
+ *
379
+ */
380
+ slug?: string; // ^[a-z0-9][a-z0-9_-]*$
381
+ /**
382
+ * Whether the use case is enabled
383
+ */
384
+ enabled: boolean;
385
+ /**
386
+ * Optional description of this change (like a commit message)
387
+ */
388
+ change_description?: string;
389
+ /**
390
+ * Use case type
391
+ */
392
+ type: "file_proxy";
393
+ configuration?: /**
394
+ * Configuration for file_proxy use cases. Defines how to authenticate and fetch files from external document systems.
395
+ *
396
+ * The file proxy download URL always requires `orgId`, `integrationId`, and either `useCaseSlug` (recommended) or `useCaseId` (legacy UUID) as query parameters.
397
+ * The `orgId` is included in the signed URL to establish organization context without requiring authentication.
398
+ * Additional use-case-specific parameters are declared in the `params` array.
399
+ *
400
+ */
401
+ FileProxyUseCaseConfiguration;
402
+ }
341
403
  export interface EmbeddedInboundUseCaseRequest {
342
404
  /**
343
405
  * Optional use case ID for update matching.
@@ -402,7 +464,43 @@ declare namespace Components {
402
464
  type: "outbound";
403
465
  configuration?: /* Configuration for outbound use cases. Defines the event that triggers the flow and the webhook mappings. */ OutboundIntegrationEventConfiguration;
404
466
  }
405
- export type EmbeddedUseCaseRequest = EmbeddedInboundUseCaseRequest | EmbeddedOutboundUseCaseRequest;
467
+ export interface EmbeddedSecureProxyUseCaseRequest {
468
+ /**
469
+ * Optional use case ID for update matching.
470
+ * - If provided and matches an existing use case, that use case is updated
471
+ * - If provided but no match, a new use case with this ID is created
472
+ * - If omitted, a new use case with auto-generated ID is created
473
+ *
474
+ */
475
+ id?: string; // uuid
476
+ /**
477
+ * Use case name
478
+ */
479
+ name: string;
480
+ /**
481
+ * URL-safe identifier for the use case. Recommended for portable cross-environment referencing. Must be unique per integration. Immutable after creation.
482
+ *
483
+ */
484
+ slug?: string; // ^[a-z0-9][a-z0-9_-]*$
485
+ /**
486
+ * Whether the use case is enabled
487
+ */
488
+ enabled: boolean;
489
+ /**
490
+ * Optional description of this change (like a commit message)
491
+ */
492
+ change_description?: string;
493
+ /**
494
+ * Use case type
495
+ */
496
+ type: "secure_proxy";
497
+ configuration?: /**
498
+ * Configuration for secure_proxy use cases. Defines how to route requests through a secure VPC.
499
+ *
500
+ */
501
+ SecureProxyUseCaseConfiguration;
502
+ }
503
+ export type EmbeddedUseCaseRequest = EmbeddedInboundUseCaseRequest | EmbeddedOutboundUseCaseRequest | EmbeddedFileProxyUseCaseRequest | EmbeddedSecureProxyUseCaseRequest;
406
504
  export interface EmbeddedUseCaseRequestBase {
407
505
  /**
408
506
  * Optional use case ID for update matching.
@@ -789,7 +887,7 @@ declare namespace Components {
789
887
  /**
790
888
  * Use case type
791
889
  */
792
- type: "inbound" | "outbound" | "file_proxy" | "file_proxy";
890
+ type: "inbound" | "outbound" | "file_proxy" | "secure_proxy" | "file_proxy";
793
891
  enabled: boolean;
794
892
  /**
795
893
  * Description of the last change made to this use case
@@ -1049,7 +1147,7 @@ declare namespace Components {
1049
1147
  /**
1050
1148
  * Use case type
1051
1149
  */
1052
- type: "inbound" | "outbound" | "file_proxy" | "inbound";
1150
+ type: "inbound" | "outbound" | "file_proxy" | "secure_proxy" | "inbound";
1053
1151
  enabled: boolean;
1054
1152
  /**
1055
1153
  * Description of the last change made to this use case
@@ -1642,7 +1740,7 @@ declare namespace Components {
1642
1740
  /**
1643
1741
  * Unique identifier for this mapping
1644
1742
  */
1645
- id: string; // uuid
1743
+ id?: string; // uuid
1646
1744
  /**
1647
1745
  * Human-readable name for this mapping
1648
1746
  * example:
@@ -1755,7 +1853,7 @@ declare namespace Components {
1755
1853
  /**
1756
1854
  * Use case type
1757
1855
  */
1758
- type: "inbound" | "outbound" | "file_proxy" | "outbound";
1856
+ type: "inbound" | "outbound" | "file_proxy" | "secure_proxy" | "outbound";
1759
1857
  enabled: boolean;
1760
1858
  /**
1761
1859
  * Description of the last change made to this use case
@@ -2353,6 +2451,169 @@ declare namespace Components {
2353
2451
  string?
2354
2452
  ];
2355
2453
  }
2454
+ export interface SecureProxyRequest {
2455
+ /**
2456
+ * Integration ID that owns the secure_proxy use case
2457
+ */
2458
+ integration_id: string; // uuid
2459
+ /**
2460
+ * Use case ID (provide either use_case_id or use_case_slug)
2461
+ */
2462
+ use_case_id?: string; // uuid
2463
+ /**
2464
+ * Use case slug (provide either use_case_id or use_case_slug)
2465
+ */
2466
+ use_case_slug?: string;
2467
+ /**
2468
+ * Target URL to proxy the request to
2469
+ */
2470
+ url: string; // uri
2471
+ /**
2472
+ * HTTP method
2473
+ */
2474
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
2475
+ /**
2476
+ * Request headers to forward
2477
+ */
2478
+ headers?: {
2479
+ [name: string]: string;
2480
+ };
2481
+ /**
2482
+ * Request body (string or JSON)
2483
+ */
2484
+ body?: any;
2485
+ /**
2486
+ * Expected response type
2487
+ */
2488
+ response_type?: "json" | "binary";
2489
+ }
2490
+ export interface SecureProxyResponse {
2491
+ /**
2492
+ * HTTP status code from the upstream response
2493
+ */
2494
+ status_code?: number;
2495
+ /**
2496
+ * Response headers from upstream
2497
+ */
2498
+ headers?: {
2499
+ [name: string]: string;
2500
+ };
2501
+ /**
2502
+ * Response body from upstream
2503
+ */
2504
+ body?: any;
2505
+ }
2506
+ export interface SecureProxyUseCase {
2507
+ /**
2508
+ * Unique identifier for the use case
2509
+ */
2510
+ id: string; // uuid
2511
+ /**
2512
+ * Parent integration ID
2513
+ */
2514
+ integrationId: string; // uuid
2515
+ /**
2516
+ * Use case name
2517
+ */
2518
+ name: string;
2519
+ /**
2520
+ * URL-safe identifier for the use case. Recommended for portable cross-environment referencing. Unique per integration. Immutable after creation. Lowercase alphanumeric, hyphens, and underscores only.
2521
+ *
2522
+ */
2523
+ slug?: string; // ^[a-z0-9][a-z0-9_-]*$
2524
+ /**
2525
+ * Use case type
2526
+ */
2527
+ type: "inbound" | "outbound" | "file_proxy" | "secure_proxy" | "secure_proxy";
2528
+ enabled: boolean;
2529
+ /**
2530
+ * Description of the last change made to this use case
2531
+ */
2532
+ change_description?: string;
2533
+ /**
2534
+ * ISO-8601 timestamp when the use case was created
2535
+ */
2536
+ created_at: string; // date-time
2537
+ /**
2538
+ * ISO-8601 timestamp when the use case was last updated
2539
+ */
2540
+ updated_at: string; // date-time
2541
+ configuration?: /**
2542
+ * Configuration for secure_proxy use cases. Defines how to route requests through a secure VPC.
2543
+ *
2544
+ */
2545
+ SecureProxyUseCaseConfiguration;
2546
+ }
2547
+ /**
2548
+ * Configuration for secure_proxy use cases. Defines how to route requests through a secure VPC.
2549
+ *
2550
+ */
2551
+ export interface SecureProxyUseCaseConfiguration {
2552
+ /**
2553
+ * VPC routing mode. Read-only after creation.
2554
+ * - static_ip: Routes through a VPC with static outbound IP (NAT Gateway) for IP-allowlisted external APIs.
2555
+ * - secure_link: Routes through a VPN VPC for accessing private customer networks.
2556
+ *
2557
+ */
2558
+ vpc_mode: "static_ip" | "secure_link";
2559
+ /**
2560
+ * Domain whitelist for secure_link mode. Admin-only — can only be modified directly in DynamoDB via admin script.
2561
+ * Supports exact match (e.g., "api.wemag.com") and wildcard prefix (e.g., "*.wemag.com").
2562
+ *
2563
+ */
2564
+ allowed_domains?: string[];
2565
+ }
2566
+ export interface SecureProxyUseCaseHistoryEntry {
2567
+ /**
2568
+ * Unique identifier for this history entry
2569
+ */
2570
+ id: string; // uuid
2571
+ /**
2572
+ * Reference to the parent use case
2573
+ */
2574
+ useCaseId: string; // uuid
2575
+ /**
2576
+ * Parent integration ID
2577
+ */
2578
+ integrationId: string; // uuid
2579
+ /**
2580
+ * Use case name at this point in history
2581
+ */
2582
+ name: string;
2583
+ /**
2584
+ * Use case slug at this point in history
2585
+ */
2586
+ slug?: string;
2587
+ /**
2588
+ * Whether the use case was enabled at this point in history
2589
+ */
2590
+ enabled: boolean;
2591
+ /**
2592
+ * Description of the change that was made at this point in history
2593
+ */
2594
+ change_description?: string;
2595
+ /**
2596
+ * ISO-8601 timestamp when the use case was originally created
2597
+ */
2598
+ created_at: string; // date-time
2599
+ /**
2600
+ * ISO-8601 timestamp of this historical snapshot (before the update)
2601
+ */
2602
+ updated_at: string; // date-time
2603
+ /**
2604
+ * ISO-8601 timestamp when this history entry was created
2605
+ */
2606
+ history_created_at: string; // date-time
2607
+ /**
2608
+ * Use case type
2609
+ */
2610
+ type: "secure_proxy";
2611
+ configuration?: /**
2612
+ * Configuration for secure_proxy use cases. Defines how to route requests through a secure VPC.
2613
+ *
2614
+ */
2615
+ SecureProxyUseCaseConfiguration;
2616
+ }
2356
2617
  export interface SetIntegrationAppMappingRequest {
2357
2618
  /**
2358
2619
  * UUID of the integration app instance
@@ -2527,7 +2788,35 @@ declare namespace Components {
2527
2788
  type?: "outbound";
2528
2789
  configuration?: /* Configuration for outbound use cases. Defines the event that triggers the flow and the webhook mappings. */ OutboundIntegrationEventConfiguration;
2529
2790
  }
2530
- export type UpdateUseCaseRequest = UpdateInboundUseCaseRequest | UpdateOutboundUseCaseRequest | UpdateFileProxyUseCaseRequest;
2791
+ export interface UpdateSecureProxyUseCaseRequest {
2792
+ /**
2793
+ * Use case name
2794
+ */
2795
+ name?: string;
2796
+ /**
2797
+ * URL-safe identifier for the use case. Recommended for portable cross-environment referencing. Can only be set once on use cases that don't have a slug yet. Immutable after being set.
2798
+ *
2799
+ */
2800
+ slug?: string; // ^[a-z0-9][a-z0-9_-]*$
2801
+ /**
2802
+ * Whether the use case is enabled
2803
+ */
2804
+ enabled?: boolean;
2805
+ /**
2806
+ * Optional description of this change (like a commit message)
2807
+ */
2808
+ change_description?: string;
2809
+ /**
2810
+ * Use case type
2811
+ */
2812
+ type?: "secure_proxy";
2813
+ configuration?: /**
2814
+ * Configuration for secure_proxy use cases. Defines how to route requests through a secure VPC.
2815
+ *
2816
+ */
2817
+ SecureProxyUseCaseConfiguration;
2818
+ }
2819
+ export type UpdateUseCaseRequest = UpdateInboundUseCaseRequest | UpdateOutboundUseCaseRequest | UpdateFileProxyUseCaseRequest | UpdateSecureProxyUseCaseRequest;
2531
2820
  export interface UpdateUseCaseRequestBase {
2532
2821
  /**
2533
2822
  * Use case name
@@ -2583,7 +2872,7 @@ declare namespace Components {
2583
2872
  */
2584
2873
  use_cases?: EmbeddedUseCaseRequest[];
2585
2874
  }
2586
- export type UseCase = InboundUseCase | OutboundUseCase | FileProxyUseCase;
2875
+ export type UseCase = InboundUseCase | OutboundUseCase | FileProxyUseCase | SecureProxyUseCase;
2587
2876
  export interface UseCaseBase {
2588
2877
  /**
2589
2878
  * Unique identifier for the use case
@@ -2605,7 +2894,7 @@ declare namespace Components {
2605
2894
  /**
2606
2895
  * Use case type
2607
2896
  */
2608
- type: "inbound" | "outbound" | "file_proxy";
2897
+ type: "inbound" | "outbound" | "file_proxy" | "secure_proxy";
2609
2898
  enabled: boolean;
2610
2899
  /**
2611
2900
  * Description of the last change made to this use case
@@ -2620,7 +2909,7 @@ declare namespace Components {
2620
2909
  */
2621
2910
  updated_at: string; // date-time
2622
2911
  }
2623
- export type UseCaseHistoryEntry = InboundUseCaseHistoryEntry | OutboundUseCaseHistoryEntry | FileProxyUseCaseHistoryEntry;
2912
+ export type UseCaseHistoryEntry = InboundUseCaseHistoryEntry | OutboundUseCaseHistoryEntry | FileProxyUseCaseHistoryEntry | SecureProxyUseCaseHistoryEntry;
2624
2913
  export interface UseCaseHistoryEntryBase {
2625
2914
  /**
2626
2915
  * Unique identifier for this history entry
@@ -3099,6 +3388,18 @@ declare namespace Paths {
3099
3388
  export type $500 = Components.Responses.InternalServerError;
3100
3389
  }
3101
3390
  }
3391
+ namespace SecureProxy {
3392
+ export type RequestBody = Components.Schemas.SecureProxyRequest;
3393
+ namespace Responses {
3394
+ export type $200 = Components.Schemas.SecureProxyResponse;
3395
+ export type $400 = Components.Responses.BadRequest;
3396
+ export type $401 = Components.Responses.Unauthorized;
3397
+ export type $403 = Components.Schemas.ErrorResponseBase;
3398
+ export type $502 = Components.Schemas.ErrorResponseBase;
3399
+ export type $503 = Components.Schemas.ErrorResponseBase;
3400
+ export type $504 = Components.Schemas.ErrorResponseBase;
3401
+ }
3402
+ }
3102
3403
  namespace SetIntegrationAppMapping {
3103
3404
  namespace Parameters {
3104
3405
  export type IntegrationId = string; // uuid
@@ -3593,6 +3894,19 @@ export interface OperationMethods {
3593
3894
  data?: Paths.QueryOutboundMonitoringEvents.RequestBody,
3594
3895
  config?: AxiosRequestConfig
3595
3896
  ): OperationResponse<Paths.QueryOutboundMonitoringEvents.Responses.$200>
3897
+ /**
3898
+ * secureProxy - Proxy HTTP request through secure VPC
3899
+ *
3900
+ * Routes an HTTP request through a VPC with either static IP egress or VPN secure link access.
3901
+ * The VPC mode is determined by the referenced secure_proxy use case configuration.
3902
+ * For secure_link mode, the target URL must match the use case's allowed_domains whitelist.
3903
+ *
3904
+ */
3905
+ 'secureProxy'(
3906
+ parameters?: Parameters<UnknownParamsObject> | null,
3907
+ data?: Paths.SecureProxy.RequestBody,
3908
+ config?: AxiosRequestConfig
3909
+ ): OperationResponse<Paths.SecureProxy.Responses.$200>
3596
3910
  }
3597
3911
 
3598
3912
  export interface PathsDictionary {
@@ -4019,6 +4333,21 @@ export interface PathsDictionary {
4019
4333
  config?: AxiosRequestConfig
4020
4334
  ): OperationResponse<Paths.QueryOutboundMonitoringEvents.Responses.$200>
4021
4335
  }
4336
+ ['/v1/secure-proxy']: {
4337
+ /**
4338
+ * secureProxy - Proxy HTTP request through secure VPC
4339
+ *
4340
+ * Routes an HTTP request through a VPC with either static IP egress or VPN secure link access.
4341
+ * The VPC mode is determined by the referenced secure_proxy use case configuration.
4342
+ * For secure_link mode, the target URL must match the use case's allowed_domains whitelist.
4343
+ *
4344
+ */
4345
+ 'post'(
4346
+ parameters?: Parameters<UnknownParamsObject> | null,
4347
+ data?: Paths.SecureProxy.RequestBody,
4348
+ config?: AxiosRequestConfig
4349
+ ): OperationResponse<Paths.SecureProxy.Responses.$200>
4350
+ }
4022
4351
  }
4023
4352
 
4024
4353
  export type Client = OpenAPIClient<OperationMethods, PathsDictionary>
@@ -4030,12 +4359,15 @@ export type CreateFileProxyUseCaseRequest = Components.Schemas.CreateFileProxyUs
4030
4359
  export type CreateInboundUseCaseRequest = Components.Schemas.CreateInboundUseCaseRequest;
4031
4360
  export type CreateIntegrationRequest = Components.Schemas.CreateIntegrationRequest;
4032
4361
  export type CreateOutboundUseCaseRequest = Components.Schemas.CreateOutboundUseCaseRequest;
4362
+ export type CreateSecureProxyUseCaseRequest = Components.Schemas.CreateSecureProxyUseCaseRequest;
4033
4363
  export type CreateUseCaseRequest = Components.Schemas.CreateUseCaseRequest;
4034
4364
  export type CreateUseCaseRequestBase = Components.Schemas.CreateUseCaseRequestBase;
4035
4365
  export type DeleteIntegrationAppMappingRequest = Components.Schemas.DeleteIntegrationAppMappingRequest;
4036
4366
  export type DeliveryConfig = Components.Schemas.DeliveryConfig;
4367
+ export type EmbeddedFileProxyUseCaseRequest = Components.Schemas.EmbeddedFileProxyUseCaseRequest;
4037
4368
  export type EmbeddedInboundUseCaseRequest = Components.Schemas.EmbeddedInboundUseCaseRequest;
4038
4369
  export type EmbeddedOutboundUseCaseRequest = Components.Schemas.EmbeddedOutboundUseCaseRequest;
4370
+ export type EmbeddedSecureProxyUseCaseRequest = Components.Schemas.EmbeddedSecureProxyUseCaseRequest;
4039
4371
  export type EmbeddedUseCaseRequest = Components.Schemas.EmbeddedUseCaseRequest;
4040
4372
  export type EmbeddedUseCaseRequestBase = Components.Schemas.EmbeddedUseCaseRequestBase;
4041
4373
  export type EntityUpdate = Components.Schemas.EntityUpdate;
@@ -4102,6 +4434,11 @@ export type RelationRefsConfig = Components.Schemas.RelationRefsConfig;
4102
4434
  export type RelationUniqueIdField = Components.Schemas.RelationUniqueIdField;
4103
4435
  export type RepeatableFieldType = Components.Schemas.RepeatableFieldType;
4104
4436
  export type ReplayEventsRequest = Components.Schemas.ReplayEventsRequest;
4437
+ export type SecureProxyRequest = Components.Schemas.SecureProxyRequest;
4438
+ export type SecureProxyResponse = Components.Schemas.SecureProxyResponse;
4439
+ export type SecureProxyUseCase = Components.Schemas.SecureProxyUseCase;
4440
+ export type SecureProxyUseCaseConfiguration = Components.Schemas.SecureProxyUseCaseConfiguration;
4441
+ export type SecureProxyUseCaseHistoryEntry = Components.Schemas.SecureProxyUseCaseHistoryEntry;
4105
4442
  export type SetIntegrationAppMappingRequest = Components.Schemas.SetIntegrationAppMappingRequest;
4106
4443
  export type TimeSeriesBucket = Components.Schemas.TimeSeriesBucket;
4107
4444
  export type TriggerErpActionRequest = Components.Schemas.TriggerErpActionRequest;
@@ -4110,6 +4447,7 @@ export type UpdateFileProxyUseCaseRequest = Components.Schemas.UpdateFileProxyUs
4110
4447
  export type UpdateInboundUseCaseRequest = Components.Schemas.UpdateInboundUseCaseRequest;
4111
4448
  export type UpdateIntegrationRequest = Components.Schemas.UpdateIntegrationRequest;
4112
4449
  export type UpdateOutboundUseCaseRequest = Components.Schemas.UpdateOutboundUseCaseRequest;
4450
+ export type UpdateSecureProxyUseCaseRequest = Components.Schemas.UpdateSecureProxyUseCaseRequest;
4113
4451
  export type UpdateUseCaseRequest = Components.Schemas.UpdateUseCaseRequest;
4114
4452
  export type UpdateUseCaseRequestBase = Components.Schemas.UpdateUseCaseRequestBase;
4115
4453
  export type UpsertIntegrationWithUseCasesRequest = Components.Schemas.UpsertIntegrationWithUseCasesRequest;
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.46.0",
5
+ "version": "0.48.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": [
@@ -2248,6 +2248,89 @@
2248
2248
  }
2249
2249
  }
2250
2250
  }
2251
+ },
2252
+ "/v1/secure-proxy": {
2253
+ "post": {
2254
+ "operationId": "secureProxy",
2255
+ "summary": "Proxy HTTP request through secure VPC",
2256
+ "description": "Routes an HTTP request through a VPC with either static IP egress or VPN secure link access.\nThe VPC mode is determined by the referenced secure_proxy use case configuration.\nFor secure_link mode, the target URL must match the use case's allowed_domains whitelist.\n",
2257
+ "tags": [
2258
+ "proxy"
2259
+ ],
2260
+ "security": [
2261
+ {
2262
+ "EpilotAuth": []
2263
+ }
2264
+ ],
2265
+ "requestBody": {
2266
+ "required": true,
2267
+ "content": {
2268
+ "application/json": {
2269
+ "schema": {
2270
+ "$ref": "#/components/schemas/SecureProxyRequest"
2271
+ }
2272
+ }
2273
+ }
2274
+ },
2275
+ "responses": {
2276
+ "200": {
2277
+ "description": "Proxied response from the target URL",
2278
+ "content": {
2279
+ "application/json": {
2280
+ "schema": {
2281
+ "$ref": "#/components/schemas/SecureProxyResponse"
2282
+ }
2283
+ }
2284
+ }
2285
+ },
2286
+ "400": {
2287
+ "$ref": "#/components/responses/BadRequest"
2288
+ },
2289
+ "401": {
2290
+ "$ref": "#/components/responses/Unauthorized"
2291
+ },
2292
+ "403": {
2293
+ "description": "Forbidden - insufficient permissions or target domain not whitelisted",
2294
+ "content": {
2295
+ "application/json": {
2296
+ "schema": {
2297
+ "$ref": "#/components/schemas/ErrorResponseBase"
2298
+ }
2299
+ }
2300
+ }
2301
+ },
2302
+ "502": {
2303
+ "description": "Upstream error from the proxied target",
2304
+ "content": {
2305
+ "application/json": {
2306
+ "schema": {
2307
+ "$ref": "#/components/schemas/ErrorResponseBase"
2308
+ }
2309
+ }
2310
+ }
2311
+ },
2312
+ "503": {
2313
+ "description": "VPC proxy not available for the requested mode",
2314
+ "content": {
2315
+ "application/json": {
2316
+ "schema": {
2317
+ "$ref": "#/components/schemas/ErrorResponseBase"
2318
+ }
2319
+ }
2320
+ }
2321
+ },
2322
+ "504": {
2323
+ "description": "Upstream timeout",
2324
+ "content": {
2325
+ "application/json": {
2326
+ "schema": {
2327
+ "$ref": "#/components/schemas/ErrorResponseBase"
2328
+ }
2329
+ }
2330
+ }
2331
+ }
2332
+ }
2333
+ }
2251
2334
  }
2252
2335
  },
2253
2336
  "components": {
@@ -3163,13 +3246,21 @@
3163
3246
  },
3164
3247
  {
3165
3248
  "$ref": "#/components/schemas/EmbeddedOutboundUseCaseRequest"
3249
+ },
3250
+ {
3251
+ "$ref": "#/components/schemas/EmbeddedFileProxyUseCaseRequest"
3252
+ },
3253
+ {
3254
+ "$ref": "#/components/schemas/EmbeddedSecureProxyUseCaseRequest"
3166
3255
  }
3167
3256
  ],
3168
3257
  "discriminator": {
3169
3258
  "propertyName": "type",
3170
3259
  "mapping": {
3171
3260
  "inbound": "#/components/schemas/EmbeddedInboundUseCaseRequest",
3172
- "outbound": "#/components/schemas/EmbeddedOutboundUseCaseRequest"
3261
+ "outbound": "#/components/schemas/EmbeddedOutboundUseCaseRequest",
3262
+ "file_proxy": "#/components/schemas/EmbeddedFileProxyUseCaseRequest",
3263
+ "secure_proxy": "#/components/schemas/EmbeddedSecureProxyUseCaseRequest"
3173
3264
  }
3174
3265
  }
3175
3266
  },
@@ -3260,6 +3351,56 @@
3260
3351
  }
3261
3352
  ]
3262
3353
  },
3354
+ "EmbeddedFileProxyUseCaseRequest": {
3355
+ "allOf": [
3356
+ {
3357
+ "$ref": "#/components/schemas/EmbeddedUseCaseRequestBase"
3358
+ },
3359
+ {
3360
+ "type": "object",
3361
+ "required": [
3362
+ "type"
3363
+ ],
3364
+ "properties": {
3365
+ "type": {
3366
+ "type": "string",
3367
+ "enum": [
3368
+ "file_proxy"
3369
+ ],
3370
+ "description": "Use case type"
3371
+ },
3372
+ "configuration": {
3373
+ "$ref": "#/components/schemas/FileProxyUseCaseConfiguration"
3374
+ }
3375
+ }
3376
+ }
3377
+ ]
3378
+ },
3379
+ "EmbeddedSecureProxyUseCaseRequest": {
3380
+ "allOf": [
3381
+ {
3382
+ "$ref": "#/components/schemas/EmbeddedUseCaseRequestBase"
3383
+ },
3384
+ {
3385
+ "type": "object",
3386
+ "required": [
3387
+ "type"
3388
+ ],
3389
+ "properties": {
3390
+ "type": {
3391
+ "type": "string",
3392
+ "enum": [
3393
+ "secure_proxy"
3394
+ ],
3395
+ "description": "Use case type"
3396
+ },
3397
+ "configuration": {
3398
+ "$ref": "#/components/schemas/SecureProxyUseCaseConfiguration"
3399
+ }
3400
+ }
3401
+ }
3402
+ ]
3403
+ },
3263
3404
  "UseCaseBase": {
3264
3405
  "type": "object",
3265
3406
  "required": [
@@ -3298,7 +3439,8 @@
3298
3439
  "enum": [
3299
3440
  "inbound",
3300
3441
  "outbound",
3301
- "file_proxy"
3442
+ "file_proxy",
3443
+ "secure_proxy"
3302
3444
  ],
3303
3445
  "description": "Use case type"
3304
3446
  },
@@ -3397,6 +3539,31 @@
3397
3539
  }
3398
3540
  ]
3399
3541
  },
3542
+ "SecureProxyUseCase": {
3543
+ "allOf": [
3544
+ {
3545
+ "$ref": "#/components/schemas/UseCaseBase"
3546
+ },
3547
+ {
3548
+ "type": "object",
3549
+ "required": [
3550
+ "type"
3551
+ ],
3552
+ "properties": {
3553
+ "type": {
3554
+ "type": "string",
3555
+ "enum": [
3556
+ "secure_proxy"
3557
+ ],
3558
+ "description": "Use case type"
3559
+ },
3560
+ "configuration": {
3561
+ "$ref": "#/components/schemas/SecureProxyUseCaseConfiguration"
3562
+ }
3563
+ }
3564
+ }
3565
+ ]
3566
+ },
3400
3567
  "UseCase": {
3401
3568
  "oneOf": [
3402
3569
  {
@@ -3407,6 +3574,9 @@
3407
3574
  },
3408
3575
  {
3409
3576
  "$ref": "#/components/schemas/FileProxyUseCase"
3577
+ },
3578
+ {
3579
+ "$ref": "#/components/schemas/SecureProxyUseCase"
3410
3580
  }
3411
3581
  ],
3412
3582
  "discriminator": {
@@ -3414,7 +3584,8 @@
3414
3584
  "mapping": {
3415
3585
  "inbound": "#/components/schemas/InboundUseCase",
3416
3586
  "outbound": "#/components/schemas/OutboundUseCase",
3417
- "file_proxy": "#/components/schemas/FileProxyUseCase"
3587
+ "file_proxy": "#/components/schemas/FileProxyUseCase",
3588
+ "secure_proxy": "#/components/schemas/SecureProxyUseCase"
3418
3589
  }
3419
3590
  }
3420
3591
  },
@@ -3428,6 +3599,9 @@
3428
3599
  },
3429
3600
  {
3430
3601
  "$ref": "#/components/schemas/CreateFileProxyUseCaseRequest"
3602
+ },
3603
+ {
3604
+ "$ref": "#/components/schemas/CreateSecureProxyUseCaseRequest"
3431
3605
  }
3432
3606
  ],
3433
3607
  "discriminator": {
@@ -3435,7 +3609,8 @@
3435
3609
  "mapping": {
3436
3610
  "inbound": "#/components/schemas/CreateInboundUseCaseRequest",
3437
3611
  "outbound": "#/components/schemas/CreateOutboundUseCaseRequest",
3438
- "file_proxy": "#/components/schemas/CreateFileProxyUseCaseRequest"
3612
+ "file_proxy": "#/components/schemas/CreateFileProxyUseCaseRequest",
3613
+ "secure_proxy": "#/components/schemas/CreateSecureProxyUseCaseRequest"
3439
3614
  }
3440
3615
  }
3441
3616
  },
@@ -3541,6 +3716,31 @@
3541
3716
  }
3542
3717
  ]
3543
3718
  },
3719
+ "CreateSecureProxyUseCaseRequest": {
3720
+ "allOf": [
3721
+ {
3722
+ "$ref": "#/components/schemas/CreateUseCaseRequestBase"
3723
+ },
3724
+ {
3725
+ "type": "object",
3726
+ "required": [
3727
+ "type"
3728
+ ],
3729
+ "properties": {
3730
+ "type": {
3731
+ "type": "string",
3732
+ "enum": [
3733
+ "secure_proxy"
3734
+ ],
3735
+ "description": "Use case type"
3736
+ },
3737
+ "configuration": {
3738
+ "$ref": "#/components/schemas/SecureProxyUseCaseConfiguration"
3739
+ }
3740
+ }
3741
+ }
3742
+ ]
3743
+ },
3544
3744
  "UpdateUseCaseRequest": {
3545
3745
  "oneOf": [
3546
3746
  {
@@ -3551,6 +3751,9 @@
3551
3751
  },
3552
3752
  {
3553
3753
  "$ref": "#/components/schemas/UpdateFileProxyUseCaseRequest"
3754
+ },
3755
+ {
3756
+ "$ref": "#/components/schemas/UpdateSecureProxyUseCaseRequest"
3554
3757
  }
3555
3758
  ],
3556
3759
  "discriminator": {
@@ -3558,7 +3761,8 @@
3558
3761
  "mapping": {
3559
3762
  "inbound": "#/components/schemas/UpdateInboundUseCaseRequest",
3560
3763
  "outbound": "#/components/schemas/UpdateOutboundUseCaseRequest",
3561
- "file_proxy": "#/components/schemas/UpdateFileProxyUseCaseRequest"
3764
+ "file_proxy": "#/components/schemas/UpdateFileProxyUseCaseRequest",
3765
+ "secure_proxy": "#/components/schemas/UpdateSecureProxyUseCaseRequest"
3562
3766
  }
3563
3767
  }
3564
3768
  },
@@ -3655,6 +3859,28 @@
3655
3859
  }
3656
3860
  ]
3657
3861
  },
3862
+ "UpdateSecureProxyUseCaseRequest": {
3863
+ "allOf": [
3864
+ {
3865
+ "$ref": "#/components/schemas/UpdateUseCaseRequestBase"
3866
+ },
3867
+ {
3868
+ "type": "object",
3869
+ "properties": {
3870
+ "type": {
3871
+ "type": "string",
3872
+ "enum": [
3873
+ "secure_proxy"
3874
+ ],
3875
+ "description": "Use case type"
3876
+ },
3877
+ "configuration": {
3878
+ "$ref": "#/components/schemas/SecureProxyUseCaseConfiguration"
3879
+ }
3880
+ }
3881
+ }
3882
+ ]
3883
+ },
3658
3884
  "UseCaseHistoryEntry": {
3659
3885
  "oneOf": [
3660
3886
  {
@@ -3665,6 +3891,9 @@
3665
3891
  },
3666
3892
  {
3667
3893
  "$ref": "#/components/schemas/FileProxyUseCaseHistoryEntry"
3894
+ },
3895
+ {
3896
+ "$ref": "#/components/schemas/SecureProxyUseCaseHistoryEntry"
3668
3897
  }
3669
3898
  ],
3670
3899
  "discriminator": {
@@ -3672,7 +3901,8 @@
3672
3901
  "mapping": {
3673
3902
  "inbound": "#/components/schemas/InboundUseCaseHistoryEntry",
3674
3903
  "outbound": "#/components/schemas/OutboundUseCaseHistoryEntry",
3675
- "file_proxy": "#/components/schemas/FileProxyUseCaseHistoryEntry"
3904
+ "file_proxy": "#/components/schemas/FileProxyUseCaseHistoryEntry",
3905
+ "secure_proxy": "#/components/schemas/SecureProxyUseCaseHistoryEntry"
3676
3906
  }
3677
3907
  }
3678
3908
  },
@@ -3813,6 +4043,135 @@
3813
4043
  }
3814
4044
  ]
3815
4045
  },
4046
+ "SecureProxyUseCaseHistoryEntry": {
4047
+ "allOf": [
4048
+ {
4049
+ "$ref": "#/components/schemas/UseCaseHistoryEntryBase"
4050
+ },
4051
+ {
4052
+ "type": "object",
4053
+ "required": [
4054
+ "type"
4055
+ ],
4056
+ "properties": {
4057
+ "type": {
4058
+ "type": "string",
4059
+ "enum": [
4060
+ "secure_proxy"
4061
+ ],
4062
+ "description": "Use case type"
4063
+ },
4064
+ "configuration": {
4065
+ "$ref": "#/components/schemas/SecureProxyUseCaseConfiguration"
4066
+ }
4067
+ }
4068
+ }
4069
+ ]
4070
+ },
4071
+ "SecureProxyUseCaseConfiguration": {
4072
+ "type": "object",
4073
+ "required": [
4074
+ "vpc_mode"
4075
+ ],
4076
+ "description": "Configuration for secure_proxy use cases. Defines how to route requests through a secure VPC.\n",
4077
+ "properties": {
4078
+ "vpc_mode": {
4079
+ "type": "string",
4080
+ "enum": [
4081
+ "static_ip",
4082
+ "secure_link"
4083
+ ],
4084
+ "readOnly": true,
4085
+ "description": "VPC routing mode. Read-only after creation.\n- static_ip: Routes through a VPC with static outbound IP (NAT Gateway) for IP-allowlisted external APIs.\n- secure_link: Routes through a VPN VPC for accessing private customer networks.\n"
4086
+ },
4087
+ "allowed_domains": {
4088
+ "type": "array",
4089
+ "items": {
4090
+ "type": "string"
4091
+ },
4092
+ "readOnly": true,
4093
+ "description": "Domain whitelist for secure_link mode. Admin-only — can only be modified directly in DynamoDB via admin script.\nSupports exact match (e.g., \"api.wemag.com\") and wildcard prefix (e.g., \"*.wemag.com\").\n"
4094
+ }
4095
+ }
4096
+ },
4097
+ "SecureProxyRequest": {
4098
+ "type": "object",
4099
+ "required": [
4100
+ "url",
4101
+ "method",
4102
+ "integration_id"
4103
+ ],
4104
+ "properties": {
4105
+ "integration_id": {
4106
+ "type": "string",
4107
+ "format": "uuid",
4108
+ "description": "Integration ID that owns the secure_proxy use case"
4109
+ },
4110
+ "use_case_id": {
4111
+ "type": "string",
4112
+ "format": "uuid",
4113
+ "description": "Use case ID (provide either use_case_id or use_case_slug)"
4114
+ },
4115
+ "use_case_slug": {
4116
+ "type": "string",
4117
+ "description": "Use case slug (provide either use_case_id or use_case_slug)"
4118
+ },
4119
+ "url": {
4120
+ "type": "string",
4121
+ "format": "uri",
4122
+ "description": "Target URL to proxy the request to"
4123
+ },
4124
+ "method": {
4125
+ "type": "string",
4126
+ "enum": [
4127
+ "GET",
4128
+ "POST",
4129
+ "PUT",
4130
+ "PATCH",
4131
+ "DELETE"
4132
+ ],
4133
+ "description": "HTTP method"
4134
+ },
4135
+ "headers": {
4136
+ "type": "object",
4137
+ "additionalProperties": {
4138
+ "type": "string"
4139
+ },
4140
+ "description": "Request headers to forward"
4141
+ },
4142
+ "body": {
4143
+ "description": "Request body (string or JSON)"
4144
+ },
4145
+ "response_type": {
4146
+ "type": "string",
4147
+ "enum": [
4148
+ "json",
4149
+ "binary"
4150
+ ],
4151
+ "default": "json",
4152
+ "description": "Expected response type"
4153
+ }
4154
+ }
4155
+ },
4156
+ "SecureProxyResponse": {
4157
+ "type": "object",
4158
+ "properties": {
4159
+ "status_code": {
4160
+ "type": "integer",
4161
+ "description": "HTTP status code from the upstream response"
4162
+ },
4163
+ "headers": {
4164
+ "type": "object",
4165
+ "additionalProperties": {
4166
+ "type": "string"
4167
+ },
4168
+ "description": "Response headers from upstream"
4169
+ },
4170
+ "body": {
4171
+ "description": "Response body from upstream"
4172
+ }
4173
+ }
4174
+ },
3816
4175
  "FileProxyUseCaseConfiguration": {
3817
4176
  "type": "object",
3818
4177
  "required": [
@@ -4336,7 +4695,6 @@
4336
4695
  "OutboundMapping": {
4337
4696
  "type": "object",
4338
4697
  "required": [
4339
- "id",
4340
4698
  "name",
4341
4699
  "jsonata_expression",
4342
4700
  "enabled",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/erp-integration-client",
3
- "version": "0.27.2",
3
+ "version": "0.28.0-rc1",
4
4
  "description": "Client library for ePilot ERP Integration API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -23,16 +23,16 @@
23
23
  "integration"
24
24
  ],
25
25
  "scripts": {
26
- "test": "jest",
26
+ "test": "vitest",
27
27
  "typescript": "tsc",
28
28
  "bundle-definition": "webpack",
29
29
  "openapi": "node ../../scripts/update-openapi.js https://docs.api.epilot.io/erp-integration.yaml",
30
- "typegen": "openapi typegen src/openapi.json --client -b '/* eslint-disable */' > src/openapi.d.ts",
30
+ "typegen": "openapi typegen src/openapi.json --client > src/openapi.d.ts",
31
31
  "build": "tsc && npm run build:patch && npm run bundle-definition",
32
32
  "build:patch": "sed -i'' -e '/^__exportStar.*openapi.*$/d' dist/index.js",
33
33
  "build:watch": "npm run build && tsc -w",
34
34
  "prepublishOnly": "npm run typegen && npm run build",
35
- "lint": "pnpm exec eslint src"
35
+ "lint": "biome check src"
36
36
  },
37
37
  "files": [
38
38
  "*.js",
@@ -60,13 +60,10 @@
60
60
  "util": "^0.12.3"
61
61
  },
62
62
  "devDependencies": {
63
- "@types/jest": "^26.0.20",
64
63
  "axios": "^1.13.5",
65
64
  "copy-webpack-plugin": "^7.0.0",
66
- "jest": "^29.6.2",
67
65
  "json-loader": "^0.5.7",
68
66
  "openapicmd": "^2.7.0",
69
- "ts-jest": "^29.4.1",
70
67
  "ts-loader": "^8.0.14",
71
68
  "ts-node": "^10.9.1",
72
69
  "typescript": "^4.1.3",