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

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/integrations/secure-proxies":{"get":{"operationId":"listSecureProxies","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,24 @@
496
496
  },
497
497
  "responses": {}
498
498
  }
499
+ },
500
+ "/v1/integrations/secure-proxies": {
501
+ "get": {
502
+ "operationId": "listSecureProxies",
503
+ "responses": {}
504
+ }
505
+ },
506
+ "/v1/secure-proxy": {
507
+ "post": {
508
+ "operationId": "secureProxy",
509
+ "requestBody": {
510
+ "required": true,
511
+ "content": {
512
+ "application/json": {}
513
+ }
514
+ },
515
+ "responses": {}
516
+ }
499
517
  }
500
518
  },
501
519
  "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,179 @@ 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 SecureProxySummary {
2507
+ id: string; // uuid
2508
+ name: string;
2509
+ slug?: string;
2510
+ enabled: boolean;
2511
+ vpc_mode: "static_ip" | "secure_link";
2512
+ allowed_domains?: string[];
2513
+ integration_id: string; // uuid
2514
+ integration_name: string;
2515
+ }
2516
+ export interface SecureProxyUseCase {
2517
+ /**
2518
+ * Unique identifier for the use case
2519
+ */
2520
+ id: string; // uuid
2521
+ /**
2522
+ * Parent integration ID
2523
+ */
2524
+ integrationId: string; // uuid
2525
+ /**
2526
+ * Use case name
2527
+ */
2528
+ name: string;
2529
+ /**
2530
+ * 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.
2531
+ *
2532
+ */
2533
+ slug?: string; // ^[a-z0-9][a-z0-9_-]*$
2534
+ /**
2535
+ * Use case type
2536
+ */
2537
+ type: "inbound" | "outbound" | "file_proxy" | "secure_proxy" | "secure_proxy";
2538
+ enabled: boolean;
2539
+ /**
2540
+ * Description of the last change made to this use case
2541
+ */
2542
+ change_description?: string;
2543
+ /**
2544
+ * ISO-8601 timestamp when the use case was created
2545
+ */
2546
+ created_at: string; // date-time
2547
+ /**
2548
+ * ISO-8601 timestamp when the use case was last updated
2549
+ */
2550
+ updated_at: string; // date-time
2551
+ configuration?: /**
2552
+ * Configuration for secure_proxy use cases. Defines how to route requests through a secure VPC.
2553
+ *
2554
+ */
2555
+ SecureProxyUseCaseConfiguration;
2556
+ }
2557
+ /**
2558
+ * Configuration for secure_proxy use cases. Defines how to route requests through a secure VPC.
2559
+ *
2560
+ */
2561
+ export interface SecureProxyUseCaseConfiguration {
2562
+ /**
2563
+ * VPC routing mode. Read-only after creation.
2564
+ * - static_ip: Routes through a VPC with static outbound IP (NAT Gateway) for IP-allowlisted external APIs.
2565
+ * - secure_link: Routes through a VPN VPC for accessing private customer networks.
2566
+ *
2567
+ */
2568
+ vpc_mode: "static_ip" | "secure_link";
2569
+ /**
2570
+ * Domain whitelist for secure_link mode. Admin-only — can only be modified directly in DynamoDB via admin script.
2571
+ * Supports exact match (e.g., "api.wemag.com") and wildcard prefix (e.g., "*.wemag.com").
2572
+ *
2573
+ */
2574
+ allowed_domains?: string[];
2575
+ }
2576
+ export interface SecureProxyUseCaseHistoryEntry {
2577
+ /**
2578
+ * Unique identifier for this history entry
2579
+ */
2580
+ id: string; // uuid
2581
+ /**
2582
+ * Reference to the parent use case
2583
+ */
2584
+ useCaseId: string; // uuid
2585
+ /**
2586
+ * Parent integration ID
2587
+ */
2588
+ integrationId: string; // uuid
2589
+ /**
2590
+ * Use case name at this point in history
2591
+ */
2592
+ name: string;
2593
+ /**
2594
+ * Use case slug at this point in history
2595
+ */
2596
+ slug?: string;
2597
+ /**
2598
+ * Whether the use case was enabled at this point in history
2599
+ */
2600
+ enabled: boolean;
2601
+ /**
2602
+ * Description of the change that was made at this point in history
2603
+ */
2604
+ change_description?: string;
2605
+ /**
2606
+ * ISO-8601 timestamp when the use case was originally created
2607
+ */
2608
+ created_at: string; // date-time
2609
+ /**
2610
+ * ISO-8601 timestamp of this historical snapshot (before the update)
2611
+ */
2612
+ updated_at: string; // date-time
2613
+ /**
2614
+ * ISO-8601 timestamp when this history entry was created
2615
+ */
2616
+ history_created_at: string; // date-time
2617
+ /**
2618
+ * Use case type
2619
+ */
2620
+ type: "secure_proxy";
2621
+ configuration?: /**
2622
+ * Configuration for secure_proxy use cases. Defines how to route requests through a secure VPC.
2623
+ *
2624
+ */
2625
+ SecureProxyUseCaseConfiguration;
2626
+ }
2356
2627
  export interface SetIntegrationAppMappingRequest {
2357
2628
  /**
2358
2629
  * UUID of the integration app instance
@@ -2527,7 +2798,35 @@ declare namespace Components {
2527
2798
  type?: "outbound";
2528
2799
  configuration?: /* Configuration for outbound use cases. Defines the event that triggers the flow and the webhook mappings. */ OutboundIntegrationEventConfiguration;
2529
2800
  }
2530
- export type UpdateUseCaseRequest = UpdateInboundUseCaseRequest | UpdateOutboundUseCaseRequest | UpdateFileProxyUseCaseRequest;
2801
+ export interface UpdateSecureProxyUseCaseRequest {
2802
+ /**
2803
+ * Use case name
2804
+ */
2805
+ name?: string;
2806
+ /**
2807
+ * 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.
2808
+ *
2809
+ */
2810
+ slug?: string; // ^[a-z0-9][a-z0-9_-]*$
2811
+ /**
2812
+ * Whether the use case is enabled
2813
+ */
2814
+ enabled?: boolean;
2815
+ /**
2816
+ * Optional description of this change (like a commit message)
2817
+ */
2818
+ change_description?: string;
2819
+ /**
2820
+ * Use case type
2821
+ */
2822
+ type?: "secure_proxy";
2823
+ configuration?: /**
2824
+ * Configuration for secure_proxy use cases. Defines how to route requests through a secure VPC.
2825
+ *
2826
+ */
2827
+ SecureProxyUseCaseConfiguration;
2828
+ }
2829
+ export type UpdateUseCaseRequest = UpdateInboundUseCaseRequest | UpdateOutboundUseCaseRequest | UpdateFileProxyUseCaseRequest | UpdateSecureProxyUseCaseRequest;
2531
2830
  export interface UpdateUseCaseRequestBase {
2532
2831
  /**
2533
2832
  * Use case name
@@ -2583,7 +2882,7 @@ declare namespace Components {
2583
2882
  */
2584
2883
  use_cases?: EmbeddedUseCaseRequest[];
2585
2884
  }
2586
- export type UseCase = InboundUseCase | OutboundUseCase | FileProxyUseCase;
2885
+ export type UseCase = InboundUseCase | OutboundUseCase | FileProxyUseCase | SecureProxyUseCase;
2587
2886
  export interface UseCaseBase {
2588
2887
  /**
2589
2888
  * Unique identifier for the use case
@@ -2605,7 +2904,7 @@ declare namespace Components {
2605
2904
  /**
2606
2905
  * Use case type
2607
2906
  */
2608
- type: "inbound" | "outbound" | "file_proxy";
2907
+ type: "inbound" | "outbound" | "file_proxy" | "secure_proxy";
2609
2908
  enabled: boolean;
2610
2909
  /**
2611
2910
  * Description of the last change made to this use case
@@ -2620,7 +2919,7 @@ declare namespace Components {
2620
2919
  */
2621
2920
  updated_at: string; // date-time
2622
2921
  }
2623
- export type UseCaseHistoryEntry = InboundUseCaseHistoryEntry | OutboundUseCaseHistoryEntry | FileProxyUseCaseHistoryEntry;
2922
+ export type UseCaseHistoryEntry = InboundUseCaseHistoryEntry | OutboundUseCaseHistoryEntry | FileProxyUseCaseHistoryEntry | SecureProxyUseCaseHistoryEntry;
2624
2923
  export interface UseCaseHistoryEntryBase {
2625
2924
  /**
2626
2925
  * Unique identifier for this history entry
@@ -2924,6 +3223,15 @@ declare namespace Paths {
2924
3223
  export type $500 = Components.Responses.InternalServerError;
2925
3224
  }
2926
3225
  }
3226
+ namespace ListSecureProxies {
3227
+ namespace Responses {
3228
+ export interface $200 {
3229
+ secure_proxies: Components.Schemas.SecureProxySummary[];
3230
+ }
3231
+ export type $401 = Components.Responses.Unauthorized;
3232
+ export type $500 = Components.Responses.InternalServerError;
3233
+ }
3234
+ }
2927
3235
  namespace ListUseCaseHistory {
2928
3236
  namespace Parameters {
2929
3237
  export type Cursor = string;
@@ -3099,6 +3407,18 @@ declare namespace Paths {
3099
3407
  export type $500 = Components.Responses.InternalServerError;
3100
3408
  }
3101
3409
  }
3410
+ namespace SecureProxy {
3411
+ export type RequestBody = Components.Schemas.SecureProxyRequest;
3412
+ namespace Responses {
3413
+ export type $200 = Components.Schemas.SecureProxyResponse;
3414
+ export type $400 = Components.Responses.BadRequest;
3415
+ export type $401 = Components.Responses.Unauthorized;
3416
+ export type $403 = Components.Schemas.ErrorResponseBase;
3417
+ export type $502 = Components.Schemas.ErrorResponseBase;
3418
+ export type $503 = Components.Schemas.ErrorResponseBase;
3419
+ export type $504 = Components.Schemas.ErrorResponseBase;
3420
+ }
3421
+ }
3102
3422
  namespace SetIntegrationAppMapping {
3103
3423
  namespace Parameters {
3104
3424
  export type IntegrationId = string; // uuid
@@ -3593,6 +3913,31 @@ export interface OperationMethods {
3593
3913
  data?: Paths.QueryOutboundMonitoringEvents.RequestBody,
3594
3914
  config?: AxiosRequestConfig
3595
3915
  ): OperationResponse<Paths.QueryOutboundMonitoringEvents.Responses.$200>
3916
+ /**
3917
+ * listSecureProxies - List all secure proxy use cases
3918
+ *
3919
+ * Lists all secure_proxy use cases across all integrations for the authenticated organization.
3920
+ * Returns minimal data suitable for dropdowns and selection UIs.
3921
+ *
3922
+ */
3923
+ 'listSecureProxies'(
3924
+ parameters?: Parameters<UnknownParamsObject> | null,
3925
+ data?: any,
3926
+ config?: AxiosRequestConfig
3927
+ ): OperationResponse<Paths.ListSecureProxies.Responses.$200>
3928
+ /**
3929
+ * secureProxy - Proxy HTTP request through secure VPC
3930
+ *
3931
+ * Routes an HTTP request through a VPC with either static IP egress or VPN secure link access.
3932
+ * The VPC mode is determined by the referenced secure_proxy use case configuration.
3933
+ * For secure_link mode, the target URL must match the use case's allowed_domains whitelist.
3934
+ *
3935
+ */
3936
+ 'secureProxy'(
3937
+ parameters?: Parameters<UnknownParamsObject> | null,
3938
+ data?: Paths.SecureProxy.RequestBody,
3939
+ config?: AxiosRequestConfig
3940
+ ): OperationResponse<Paths.SecureProxy.Responses.$200>
3596
3941
  }
3597
3942
 
3598
3943
  export interface PathsDictionary {
@@ -4019,6 +4364,35 @@ export interface PathsDictionary {
4019
4364
  config?: AxiosRequestConfig
4020
4365
  ): OperationResponse<Paths.QueryOutboundMonitoringEvents.Responses.$200>
4021
4366
  }
4367
+ ['/v1/integrations/secure-proxies']: {
4368
+ /**
4369
+ * listSecureProxies - List all secure proxy use cases
4370
+ *
4371
+ * Lists all secure_proxy use cases across all integrations for the authenticated organization.
4372
+ * Returns minimal data suitable for dropdowns and selection UIs.
4373
+ *
4374
+ */
4375
+ 'get'(
4376
+ parameters?: Parameters<UnknownParamsObject> | null,
4377
+ data?: any,
4378
+ config?: AxiosRequestConfig
4379
+ ): OperationResponse<Paths.ListSecureProxies.Responses.$200>
4380
+ }
4381
+ ['/v1/secure-proxy']: {
4382
+ /**
4383
+ * secureProxy - Proxy HTTP request through secure VPC
4384
+ *
4385
+ * Routes an HTTP request through a VPC with either static IP egress or VPN secure link access.
4386
+ * The VPC mode is determined by the referenced secure_proxy use case configuration.
4387
+ * For secure_link mode, the target URL must match the use case's allowed_domains whitelist.
4388
+ *
4389
+ */
4390
+ 'post'(
4391
+ parameters?: Parameters<UnknownParamsObject> | null,
4392
+ data?: Paths.SecureProxy.RequestBody,
4393
+ config?: AxiosRequestConfig
4394
+ ): OperationResponse<Paths.SecureProxy.Responses.$200>
4395
+ }
4022
4396
  }
4023
4397
 
4024
4398
  export type Client = OpenAPIClient<OperationMethods, PathsDictionary>
@@ -4030,12 +4404,15 @@ export type CreateFileProxyUseCaseRequest = Components.Schemas.CreateFileProxyUs
4030
4404
  export type CreateInboundUseCaseRequest = Components.Schemas.CreateInboundUseCaseRequest;
4031
4405
  export type CreateIntegrationRequest = Components.Schemas.CreateIntegrationRequest;
4032
4406
  export type CreateOutboundUseCaseRequest = Components.Schemas.CreateOutboundUseCaseRequest;
4407
+ export type CreateSecureProxyUseCaseRequest = Components.Schemas.CreateSecureProxyUseCaseRequest;
4033
4408
  export type CreateUseCaseRequest = Components.Schemas.CreateUseCaseRequest;
4034
4409
  export type CreateUseCaseRequestBase = Components.Schemas.CreateUseCaseRequestBase;
4035
4410
  export type DeleteIntegrationAppMappingRequest = Components.Schemas.DeleteIntegrationAppMappingRequest;
4036
4411
  export type DeliveryConfig = Components.Schemas.DeliveryConfig;
4412
+ export type EmbeddedFileProxyUseCaseRequest = Components.Schemas.EmbeddedFileProxyUseCaseRequest;
4037
4413
  export type EmbeddedInboundUseCaseRequest = Components.Schemas.EmbeddedInboundUseCaseRequest;
4038
4414
  export type EmbeddedOutboundUseCaseRequest = Components.Schemas.EmbeddedOutboundUseCaseRequest;
4415
+ export type EmbeddedSecureProxyUseCaseRequest = Components.Schemas.EmbeddedSecureProxyUseCaseRequest;
4039
4416
  export type EmbeddedUseCaseRequest = Components.Schemas.EmbeddedUseCaseRequest;
4040
4417
  export type EmbeddedUseCaseRequestBase = Components.Schemas.EmbeddedUseCaseRequestBase;
4041
4418
  export type EntityUpdate = Components.Schemas.EntityUpdate;
@@ -4102,6 +4479,12 @@ export type RelationRefsConfig = Components.Schemas.RelationRefsConfig;
4102
4479
  export type RelationUniqueIdField = Components.Schemas.RelationUniqueIdField;
4103
4480
  export type RepeatableFieldType = Components.Schemas.RepeatableFieldType;
4104
4481
  export type ReplayEventsRequest = Components.Schemas.ReplayEventsRequest;
4482
+ export type SecureProxyRequest = Components.Schemas.SecureProxyRequest;
4483
+ export type SecureProxyResponse = Components.Schemas.SecureProxyResponse;
4484
+ export type SecureProxySummary = Components.Schemas.SecureProxySummary;
4485
+ export type SecureProxyUseCase = Components.Schemas.SecureProxyUseCase;
4486
+ export type SecureProxyUseCaseConfiguration = Components.Schemas.SecureProxyUseCaseConfiguration;
4487
+ export type SecureProxyUseCaseHistoryEntry = Components.Schemas.SecureProxyUseCaseHistoryEntry;
4105
4488
  export type SetIntegrationAppMappingRequest = Components.Schemas.SetIntegrationAppMappingRequest;
4106
4489
  export type TimeSeriesBucket = Components.Schemas.TimeSeriesBucket;
4107
4490
  export type TriggerErpActionRequest = Components.Schemas.TriggerErpActionRequest;
@@ -4110,6 +4493,7 @@ export type UpdateFileProxyUseCaseRequest = Components.Schemas.UpdateFileProxyUs
4110
4493
  export type UpdateInboundUseCaseRequest = Components.Schemas.UpdateInboundUseCaseRequest;
4111
4494
  export type UpdateIntegrationRequest = Components.Schemas.UpdateIntegrationRequest;
4112
4495
  export type UpdateOutboundUseCaseRequest = Components.Schemas.UpdateOutboundUseCaseRequest;
4496
+ export type UpdateSecureProxyUseCaseRequest = Components.Schemas.UpdateSecureProxyUseCaseRequest;
4113
4497
  export type UpdateUseCaseRequest = Components.Schemas.UpdateUseCaseRequest;
4114
4498
  export type UpdateUseCaseRequestBase = Components.Schemas.UpdateUseCaseRequestBase;
4115
4499
  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.49.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,133 @@
2248
2248
  }
2249
2249
  }
2250
2250
  }
2251
+ },
2252
+ "/v1/integrations/secure-proxies": {
2253
+ "get": {
2254
+ "operationId": "listSecureProxies",
2255
+ "summary": "List all secure proxy use cases",
2256
+ "description": "Lists all secure_proxy use cases across all integrations for the authenticated organization.\nReturns minimal data suitable for dropdowns and selection UIs.\n",
2257
+ "tags": [
2258
+ "integrations"
2259
+ ],
2260
+ "security": [
2261
+ {
2262
+ "EpilotAuth": []
2263
+ }
2264
+ ],
2265
+ "responses": {
2266
+ "200": {
2267
+ "description": "Successfully retrieved secure proxy use cases",
2268
+ "content": {
2269
+ "application/json": {
2270
+ "schema": {
2271
+ "type": "object",
2272
+ "required": [
2273
+ "secure_proxies"
2274
+ ],
2275
+ "properties": {
2276
+ "secure_proxies": {
2277
+ "type": "array",
2278
+ "items": {
2279
+ "$ref": "#/components/schemas/SecureProxySummary"
2280
+ }
2281
+ }
2282
+ }
2283
+ }
2284
+ }
2285
+ }
2286
+ },
2287
+ "401": {
2288
+ "$ref": "#/components/responses/Unauthorized"
2289
+ },
2290
+ "500": {
2291
+ "$ref": "#/components/responses/InternalServerError"
2292
+ }
2293
+ }
2294
+ }
2295
+ },
2296
+ "/v1/secure-proxy": {
2297
+ "post": {
2298
+ "operationId": "secureProxy",
2299
+ "summary": "Proxy HTTP request through secure VPC",
2300
+ "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",
2301
+ "tags": [
2302
+ "proxy"
2303
+ ],
2304
+ "security": [
2305
+ {
2306
+ "EpilotAuth": []
2307
+ }
2308
+ ],
2309
+ "requestBody": {
2310
+ "required": true,
2311
+ "content": {
2312
+ "application/json": {
2313
+ "schema": {
2314
+ "$ref": "#/components/schemas/SecureProxyRequest"
2315
+ }
2316
+ }
2317
+ }
2318
+ },
2319
+ "responses": {
2320
+ "200": {
2321
+ "description": "Proxied response from the target URL",
2322
+ "content": {
2323
+ "application/json": {
2324
+ "schema": {
2325
+ "$ref": "#/components/schemas/SecureProxyResponse"
2326
+ }
2327
+ }
2328
+ }
2329
+ },
2330
+ "400": {
2331
+ "$ref": "#/components/responses/BadRequest"
2332
+ },
2333
+ "401": {
2334
+ "$ref": "#/components/responses/Unauthorized"
2335
+ },
2336
+ "403": {
2337
+ "description": "Forbidden - insufficient permissions or target domain not whitelisted",
2338
+ "content": {
2339
+ "application/json": {
2340
+ "schema": {
2341
+ "$ref": "#/components/schemas/ErrorResponseBase"
2342
+ }
2343
+ }
2344
+ }
2345
+ },
2346
+ "502": {
2347
+ "description": "Upstream error from the proxied target",
2348
+ "content": {
2349
+ "application/json": {
2350
+ "schema": {
2351
+ "$ref": "#/components/schemas/ErrorResponseBase"
2352
+ }
2353
+ }
2354
+ }
2355
+ },
2356
+ "503": {
2357
+ "description": "VPC proxy not available for the requested mode",
2358
+ "content": {
2359
+ "application/json": {
2360
+ "schema": {
2361
+ "$ref": "#/components/schemas/ErrorResponseBase"
2362
+ }
2363
+ }
2364
+ }
2365
+ },
2366
+ "504": {
2367
+ "description": "Upstream timeout",
2368
+ "content": {
2369
+ "application/json": {
2370
+ "schema": {
2371
+ "$ref": "#/components/schemas/ErrorResponseBase"
2372
+ }
2373
+ }
2374
+ }
2375
+ }
2376
+ }
2377
+ }
2251
2378
  }
2252
2379
  },
2253
2380
  "components": {
@@ -3163,13 +3290,21 @@
3163
3290
  },
3164
3291
  {
3165
3292
  "$ref": "#/components/schemas/EmbeddedOutboundUseCaseRequest"
3293
+ },
3294
+ {
3295
+ "$ref": "#/components/schemas/EmbeddedFileProxyUseCaseRequest"
3296
+ },
3297
+ {
3298
+ "$ref": "#/components/schemas/EmbeddedSecureProxyUseCaseRequest"
3166
3299
  }
3167
3300
  ],
3168
3301
  "discriminator": {
3169
3302
  "propertyName": "type",
3170
3303
  "mapping": {
3171
3304
  "inbound": "#/components/schemas/EmbeddedInboundUseCaseRequest",
3172
- "outbound": "#/components/schemas/EmbeddedOutboundUseCaseRequest"
3305
+ "outbound": "#/components/schemas/EmbeddedOutboundUseCaseRequest",
3306
+ "file_proxy": "#/components/schemas/EmbeddedFileProxyUseCaseRequest",
3307
+ "secure_proxy": "#/components/schemas/EmbeddedSecureProxyUseCaseRequest"
3173
3308
  }
3174
3309
  }
3175
3310
  },
@@ -3260,6 +3395,56 @@
3260
3395
  }
3261
3396
  ]
3262
3397
  },
3398
+ "EmbeddedFileProxyUseCaseRequest": {
3399
+ "allOf": [
3400
+ {
3401
+ "$ref": "#/components/schemas/EmbeddedUseCaseRequestBase"
3402
+ },
3403
+ {
3404
+ "type": "object",
3405
+ "required": [
3406
+ "type"
3407
+ ],
3408
+ "properties": {
3409
+ "type": {
3410
+ "type": "string",
3411
+ "enum": [
3412
+ "file_proxy"
3413
+ ],
3414
+ "description": "Use case type"
3415
+ },
3416
+ "configuration": {
3417
+ "$ref": "#/components/schemas/FileProxyUseCaseConfiguration"
3418
+ }
3419
+ }
3420
+ }
3421
+ ]
3422
+ },
3423
+ "EmbeddedSecureProxyUseCaseRequest": {
3424
+ "allOf": [
3425
+ {
3426
+ "$ref": "#/components/schemas/EmbeddedUseCaseRequestBase"
3427
+ },
3428
+ {
3429
+ "type": "object",
3430
+ "required": [
3431
+ "type"
3432
+ ],
3433
+ "properties": {
3434
+ "type": {
3435
+ "type": "string",
3436
+ "enum": [
3437
+ "secure_proxy"
3438
+ ],
3439
+ "description": "Use case type"
3440
+ },
3441
+ "configuration": {
3442
+ "$ref": "#/components/schemas/SecureProxyUseCaseConfiguration"
3443
+ }
3444
+ }
3445
+ }
3446
+ ]
3447
+ },
3263
3448
  "UseCaseBase": {
3264
3449
  "type": "object",
3265
3450
  "required": [
@@ -3298,7 +3483,8 @@
3298
3483
  "enum": [
3299
3484
  "inbound",
3300
3485
  "outbound",
3301
- "file_proxy"
3486
+ "file_proxy",
3487
+ "secure_proxy"
3302
3488
  ],
3303
3489
  "description": "Use case type"
3304
3490
  },
@@ -3397,6 +3583,31 @@
3397
3583
  }
3398
3584
  ]
3399
3585
  },
3586
+ "SecureProxyUseCase": {
3587
+ "allOf": [
3588
+ {
3589
+ "$ref": "#/components/schemas/UseCaseBase"
3590
+ },
3591
+ {
3592
+ "type": "object",
3593
+ "required": [
3594
+ "type"
3595
+ ],
3596
+ "properties": {
3597
+ "type": {
3598
+ "type": "string",
3599
+ "enum": [
3600
+ "secure_proxy"
3601
+ ],
3602
+ "description": "Use case type"
3603
+ },
3604
+ "configuration": {
3605
+ "$ref": "#/components/schemas/SecureProxyUseCaseConfiguration"
3606
+ }
3607
+ }
3608
+ }
3609
+ ]
3610
+ },
3400
3611
  "UseCase": {
3401
3612
  "oneOf": [
3402
3613
  {
@@ -3407,6 +3618,9 @@
3407
3618
  },
3408
3619
  {
3409
3620
  "$ref": "#/components/schemas/FileProxyUseCase"
3621
+ },
3622
+ {
3623
+ "$ref": "#/components/schemas/SecureProxyUseCase"
3410
3624
  }
3411
3625
  ],
3412
3626
  "discriminator": {
@@ -3414,7 +3628,8 @@
3414
3628
  "mapping": {
3415
3629
  "inbound": "#/components/schemas/InboundUseCase",
3416
3630
  "outbound": "#/components/schemas/OutboundUseCase",
3417
- "file_proxy": "#/components/schemas/FileProxyUseCase"
3631
+ "file_proxy": "#/components/schemas/FileProxyUseCase",
3632
+ "secure_proxy": "#/components/schemas/SecureProxyUseCase"
3418
3633
  }
3419
3634
  }
3420
3635
  },
@@ -3428,6 +3643,9 @@
3428
3643
  },
3429
3644
  {
3430
3645
  "$ref": "#/components/schemas/CreateFileProxyUseCaseRequest"
3646
+ },
3647
+ {
3648
+ "$ref": "#/components/schemas/CreateSecureProxyUseCaseRequest"
3431
3649
  }
3432
3650
  ],
3433
3651
  "discriminator": {
@@ -3435,7 +3653,8 @@
3435
3653
  "mapping": {
3436
3654
  "inbound": "#/components/schemas/CreateInboundUseCaseRequest",
3437
3655
  "outbound": "#/components/schemas/CreateOutboundUseCaseRequest",
3438
- "file_proxy": "#/components/schemas/CreateFileProxyUseCaseRequest"
3656
+ "file_proxy": "#/components/schemas/CreateFileProxyUseCaseRequest",
3657
+ "secure_proxy": "#/components/schemas/CreateSecureProxyUseCaseRequest"
3439
3658
  }
3440
3659
  }
3441
3660
  },
@@ -3541,6 +3760,31 @@
3541
3760
  }
3542
3761
  ]
3543
3762
  },
3763
+ "CreateSecureProxyUseCaseRequest": {
3764
+ "allOf": [
3765
+ {
3766
+ "$ref": "#/components/schemas/CreateUseCaseRequestBase"
3767
+ },
3768
+ {
3769
+ "type": "object",
3770
+ "required": [
3771
+ "type"
3772
+ ],
3773
+ "properties": {
3774
+ "type": {
3775
+ "type": "string",
3776
+ "enum": [
3777
+ "secure_proxy"
3778
+ ],
3779
+ "description": "Use case type"
3780
+ },
3781
+ "configuration": {
3782
+ "$ref": "#/components/schemas/SecureProxyUseCaseConfiguration"
3783
+ }
3784
+ }
3785
+ }
3786
+ ]
3787
+ },
3544
3788
  "UpdateUseCaseRequest": {
3545
3789
  "oneOf": [
3546
3790
  {
@@ -3551,6 +3795,9 @@
3551
3795
  },
3552
3796
  {
3553
3797
  "$ref": "#/components/schemas/UpdateFileProxyUseCaseRequest"
3798
+ },
3799
+ {
3800
+ "$ref": "#/components/schemas/UpdateSecureProxyUseCaseRequest"
3554
3801
  }
3555
3802
  ],
3556
3803
  "discriminator": {
@@ -3558,7 +3805,8 @@
3558
3805
  "mapping": {
3559
3806
  "inbound": "#/components/schemas/UpdateInboundUseCaseRequest",
3560
3807
  "outbound": "#/components/schemas/UpdateOutboundUseCaseRequest",
3561
- "file_proxy": "#/components/schemas/UpdateFileProxyUseCaseRequest"
3808
+ "file_proxy": "#/components/schemas/UpdateFileProxyUseCaseRequest",
3809
+ "secure_proxy": "#/components/schemas/UpdateSecureProxyUseCaseRequest"
3562
3810
  }
3563
3811
  }
3564
3812
  },
@@ -3655,6 +3903,28 @@
3655
3903
  }
3656
3904
  ]
3657
3905
  },
3906
+ "UpdateSecureProxyUseCaseRequest": {
3907
+ "allOf": [
3908
+ {
3909
+ "$ref": "#/components/schemas/UpdateUseCaseRequestBase"
3910
+ },
3911
+ {
3912
+ "type": "object",
3913
+ "properties": {
3914
+ "type": {
3915
+ "type": "string",
3916
+ "enum": [
3917
+ "secure_proxy"
3918
+ ],
3919
+ "description": "Use case type"
3920
+ },
3921
+ "configuration": {
3922
+ "$ref": "#/components/schemas/SecureProxyUseCaseConfiguration"
3923
+ }
3924
+ }
3925
+ }
3926
+ ]
3927
+ },
3658
3928
  "UseCaseHistoryEntry": {
3659
3929
  "oneOf": [
3660
3930
  {
@@ -3665,6 +3935,9 @@
3665
3935
  },
3666
3936
  {
3667
3937
  "$ref": "#/components/schemas/FileProxyUseCaseHistoryEntry"
3938
+ },
3939
+ {
3940
+ "$ref": "#/components/schemas/SecureProxyUseCaseHistoryEntry"
3668
3941
  }
3669
3942
  ],
3670
3943
  "discriminator": {
@@ -3672,7 +3945,8 @@
3672
3945
  "mapping": {
3673
3946
  "inbound": "#/components/schemas/InboundUseCaseHistoryEntry",
3674
3947
  "outbound": "#/components/schemas/OutboundUseCaseHistoryEntry",
3675
- "file_proxy": "#/components/schemas/FileProxyUseCaseHistoryEntry"
3948
+ "file_proxy": "#/components/schemas/FileProxyUseCaseHistoryEntry",
3949
+ "secure_proxy": "#/components/schemas/SecureProxyUseCaseHistoryEntry"
3676
3950
  }
3677
3951
  }
3678
3952
  },
@@ -3813,6 +4087,181 @@
3813
4087
  }
3814
4088
  ]
3815
4089
  },
4090
+ "SecureProxyUseCaseHistoryEntry": {
4091
+ "allOf": [
4092
+ {
4093
+ "$ref": "#/components/schemas/UseCaseHistoryEntryBase"
4094
+ },
4095
+ {
4096
+ "type": "object",
4097
+ "required": [
4098
+ "type"
4099
+ ],
4100
+ "properties": {
4101
+ "type": {
4102
+ "type": "string",
4103
+ "enum": [
4104
+ "secure_proxy"
4105
+ ],
4106
+ "description": "Use case type"
4107
+ },
4108
+ "configuration": {
4109
+ "$ref": "#/components/schemas/SecureProxyUseCaseConfiguration"
4110
+ }
4111
+ }
4112
+ }
4113
+ ]
4114
+ },
4115
+ "SecureProxyUseCaseConfiguration": {
4116
+ "type": "object",
4117
+ "required": [
4118
+ "vpc_mode"
4119
+ ],
4120
+ "description": "Configuration for secure_proxy use cases. Defines how to route requests through a secure VPC.\n",
4121
+ "properties": {
4122
+ "vpc_mode": {
4123
+ "type": "string",
4124
+ "enum": [
4125
+ "static_ip",
4126
+ "secure_link"
4127
+ ],
4128
+ "readOnly": true,
4129
+ "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"
4130
+ },
4131
+ "allowed_domains": {
4132
+ "type": "array",
4133
+ "items": {
4134
+ "type": "string"
4135
+ },
4136
+ "readOnly": true,
4137
+ "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"
4138
+ }
4139
+ }
4140
+ },
4141
+ "SecureProxySummary": {
4142
+ "type": "object",
4143
+ "required": [
4144
+ "id",
4145
+ "name",
4146
+ "enabled",
4147
+ "vpc_mode",
4148
+ "integration_id",
4149
+ "integration_name"
4150
+ ],
4151
+ "properties": {
4152
+ "id": {
4153
+ "type": "string",
4154
+ "format": "uuid"
4155
+ },
4156
+ "name": {
4157
+ "type": "string"
4158
+ },
4159
+ "slug": {
4160
+ "type": "string"
4161
+ },
4162
+ "enabled": {
4163
+ "type": "boolean"
4164
+ },
4165
+ "vpc_mode": {
4166
+ "type": "string",
4167
+ "enum": [
4168
+ "static_ip",
4169
+ "secure_link"
4170
+ ]
4171
+ },
4172
+ "allowed_domains": {
4173
+ "type": "array",
4174
+ "items": {
4175
+ "type": "string"
4176
+ }
4177
+ },
4178
+ "integration_id": {
4179
+ "type": "string",
4180
+ "format": "uuid"
4181
+ },
4182
+ "integration_name": {
4183
+ "type": "string"
4184
+ }
4185
+ }
4186
+ },
4187
+ "SecureProxyRequest": {
4188
+ "type": "object",
4189
+ "required": [
4190
+ "url",
4191
+ "method",
4192
+ "integration_id"
4193
+ ],
4194
+ "properties": {
4195
+ "integration_id": {
4196
+ "type": "string",
4197
+ "format": "uuid",
4198
+ "description": "Integration ID that owns the secure_proxy use case"
4199
+ },
4200
+ "use_case_id": {
4201
+ "type": "string",
4202
+ "format": "uuid",
4203
+ "description": "Use case ID (provide either use_case_id or use_case_slug)"
4204
+ },
4205
+ "use_case_slug": {
4206
+ "type": "string",
4207
+ "description": "Use case slug (provide either use_case_id or use_case_slug)"
4208
+ },
4209
+ "url": {
4210
+ "type": "string",
4211
+ "format": "uri",
4212
+ "description": "Target URL to proxy the request to"
4213
+ },
4214
+ "method": {
4215
+ "type": "string",
4216
+ "enum": [
4217
+ "GET",
4218
+ "POST",
4219
+ "PUT",
4220
+ "PATCH",
4221
+ "DELETE"
4222
+ ],
4223
+ "description": "HTTP method"
4224
+ },
4225
+ "headers": {
4226
+ "type": "object",
4227
+ "additionalProperties": {
4228
+ "type": "string"
4229
+ },
4230
+ "description": "Request headers to forward"
4231
+ },
4232
+ "body": {
4233
+ "description": "Request body (string or JSON)"
4234
+ },
4235
+ "response_type": {
4236
+ "type": "string",
4237
+ "enum": [
4238
+ "json",
4239
+ "binary"
4240
+ ],
4241
+ "default": "json",
4242
+ "description": "Expected response type"
4243
+ }
4244
+ }
4245
+ },
4246
+ "SecureProxyResponse": {
4247
+ "type": "object",
4248
+ "properties": {
4249
+ "status_code": {
4250
+ "type": "integer",
4251
+ "description": "HTTP status code from the upstream response"
4252
+ },
4253
+ "headers": {
4254
+ "type": "object",
4255
+ "additionalProperties": {
4256
+ "type": "string"
4257
+ },
4258
+ "description": "Response headers from upstream"
4259
+ },
4260
+ "body": {
4261
+ "description": "Response body from upstream"
4262
+ }
4263
+ }
4264
+ },
3816
4265
  "FileProxyUseCaseConfiguration": {
3817
4266
  "type": "object",
3818
4267
  "required": [
@@ -4336,7 +4785,6 @@
4336
4785
  "OutboundMapping": {
4337
4786
  "type": "object",
4338
4787
  "required": [
4339
- "id",
4340
4788
  "name",
4341
4789
  "jsonata_expression",
4342
4790
  "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-rc2",
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",