@epilot/erp-integration-client 0.27.1 → 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.
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.
@@ -612,7 +710,7 @@ declare namespace Components {
612
710
  /**
613
711
  * Authentication type
614
712
  */
615
- type: "oauth2_client_credentials";
713
+ type: "oauth2_client_credentials" | "oauth2_password";
616
714
  /**
617
715
  * Handlebars template for the OAuth2 token endpoint URL
618
716
  */
@@ -637,6 +735,14 @@ declare namespace Components {
637
735
  * Handlebars template for the OAuth2 resource parameter
638
736
  */
639
737
  resource?: string;
738
+ /**
739
+ * Handlebars template for the OAuth2 resource owner username. Required when type is oauth2_password.
740
+ */
741
+ username?: string;
742
+ /**
743
+ * Handlebars template for the OAuth2 resource owner password. Required when type is oauth2_password.
744
+ */
745
+ password?: string;
640
746
  /**
641
747
  * Additional key-value pairs to include in the token request body. Values support Handlebars templates.
642
748
  */
@@ -781,7 +887,7 @@ declare namespace Components {
781
887
  /**
782
888
  * Use case type
783
889
  */
784
- type: "inbound" | "outbound" | "file_proxy" | "file_proxy";
890
+ type: "inbound" | "outbound" | "file_proxy" | "secure_proxy" | "file_proxy";
785
891
  enabled: boolean;
786
892
  /**
787
893
  * Description of the last change made to this use case
@@ -1041,7 +1147,7 @@ declare namespace Components {
1041
1147
  /**
1042
1148
  * Use case type
1043
1149
  */
1044
- type: "inbound" | "outbound" | "file_proxy" | "inbound";
1150
+ type: "inbound" | "outbound" | "file_proxy" | "secure_proxy" | "inbound";
1045
1151
  enabled: boolean;
1046
1152
  /**
1047
1153
  * Description of the last change made to this use case
@@ -1634,7 +1740,7 @@ declare namespace Components {
1634
1740
  /**
1635
1741
  * Unique identifier for this mapping
1636
1742
  */
1637
- id: string; // uuid
1743
+ id?: string; // uuid
1638
1744
  /**
1639
1745
  * Human-readable name for this mapping
1640
1746
  * example:
@@ -1747,7 +1853,7 @@ declare namespace Components {
1747
1853
  /**
1748
1854
  * Use case type
1749
1855
  */
1750
- type: "inbound" | "outbound" | "file_proxy" | "outbound";
1856
+ type: "inbound" | "outbound" | "file_proxy" | "secure_proxy" | "outbound";
1751
1857
  enabled: boolean;
1752
1858
  /**
1753
1859
  * Description of the last change made to this use case
@@ -2345,6 +2451,169 @@ declare namespace Components {
2345
2451
  string?
2346
2452
  ];
2347
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
+ }
2348
2617
  export interface SetIntegrationAppMappingRequest {
2349
2618
  /**
2350
2619
  * UUID of the integration app instance
@@ -2519,7 +2788,35 @@ declare namespace Components {
2519
2788
  type?: "outbound";
2520
2789
  configuration?: /* Configuration for outbound use cases. Defines the event that triggers the flow and the webhook mappings. */ OutboundIntegrationEventConfiguration;
2521
2790
  }
2522
- 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;
2523
2820
  export interface UpdateUseCaseRequestBase {
2524
2821
  /**
2525
2822
  * Use case name
@@ -2575,7 +2872,7 @@ declare namespace Components {
2575
2872
  */
2576
2873
  use_cases?: EmbeddedUseCaseRequest[];
2577
2874
  }
2578
- export type UseCase = InboundUseCase | OutboundUseCase | FileProxyUseCase;
2875
+ export type UseCase = InboundUseCase | OutboundUseCase | FileProxyUseCase | SecureProxyUseCase;
2579
2876
  export interface UseCaseBase {
2580
2877
  /**
2581
2878
  * Unique identifier for the use case
@@ -2597,7 +2894,7 @@ declare namespace Components {
2597
2894
  /**
2598
2895
  * Use case type
2599
2896
  */
2600
- type: "inbound" | "outbound" | "file_proxy";
2897
+ type: "inbound" | "outbound" | "file_proxy" | "secure_proxy";
2601
2898
  enabled: boolean;
2602
2899
  /**
2603
2900
  * Description of the last change made to this use case
@@ -2612,7 +2909,7 @@ declare namespace Components {
2612
2909
  */
2613
2910
  updated_at: string; // date-time
2614
2911
  }
2615
- export type UseCaseHistoryEntry = InboundUseCaseHistoryEntry | OutboundUseCaseHistoryEntry | FileProxyUseCaseHistoryEntry;
2912
+ export type UseCaseHistoryEntry = InboundUseCaseHistoryEntry | OutboundUseCaseHistoryEntry | FileProxyUseCaseHistoryEntry | SecureProxyUseCaseHistoryEntry;
2616
2913
  export interface UseCaseHistoryEntryBase {
2617
2914
  /**
2618
2915
  * Unique identifier for this history entry
@@ -3091,6 +3388,18 @@ declare namespace Paths {
3091
3388
  export type $500 = Components.Responses.InternalServerError;
3092
3389
  }
3093
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
+ }
3094
3403
  namespace SetIntegrationAppMapping {
3095
3404
  namespace Parameters {
3096
3405
  export type IntegrationId = string; // uuid
@@ -3585,6 +3894,19 @@ export interface OperationMethods {
3585
3894
  data?: Paths.QueryOutboundMonitoringEvents.RequestBody,
3586
3895
  config?: AxiosRequestConfig
3587
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>
3588
3910
  }
3589
3911
 
3590
3912
  export interface PathsDictionary {
@@ -4011,6 +4333,21 @@ export interface PathsDictionary {
4011
4333
  config?: AxiosRequestConfig
4012
4334
  ): OperationResponse<Paths.QueryOutboundMonitoringEvents.Responses.$200>
4013
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
+ }
4014
4351
  }
4015
4352
 
4016
4353
  export type Client = OpenAPIClient<OperationMethods, PathsDictionary>
@@ -4022,12 +4359,15 @@ export type CreateFileProxyUseCaseRequest = Components.Schemas.CreateFileProxyUs
4022
4359
  export type CreateInboundUseCaseRequest = Components.Schemas.CreateInboundUseCaseRequest;
4023
4360
  export type CreateIntegrationRequest = Components.Schemas.CreateIntegrationRequest;
4024
4361
  export type CreateOutboundUseCaseRequest = Components.Schemas.CreateOutboundUseCaseRequest;
4362
+ export type CreateSecureProxyUseCaseRequest = Components.Schemas.CreateSecureProxyUseCaseRequest;
4025
4363
  export type CreateUseCaseRequest = Components.Schemas.CreateUseCaseRequest;
4026
4364
  export type CreateUseCaseRequestBase = Components.Schemas.CreateUseCaseRequestBase;
4027
4365
  export type DeleteIntegrationAppMappingRequest = Components.Schemas.DeleteIntegrationAppMappingRequest;
4028
4366
  export type DeliveryConfig = Components.Schemas.DeliveryConfig;
4367
+ export type EmbeddedFileProxyUseCaseRequest = Components.Schemas.EmbeddedFileProxyUseCaseRequest;
4029
4368
  export type EmbeddedInboundUseCaseRequest = Components.Schemas.EmbeddedInboundUseCaseRequest;
4030
4369
  export type EmbeddedOutboundUseCaseRequest = Components.Schemas.EmbeddedOutboundUseCaseRequest;
4370
+ export type EmbeddedSecureProxyUseCaseRequest = Components.Schemas.EmbeddedSecureProxyUseCaseRequest;
4031
4371
  export type EmbeddedUseCaseRequest = Components.Schemas.EmbeddedUseCaseRequest;
4032
4372
  export type EmbeddedUseCaseRequestBase = Components.Schemas.EmbeddedUseCaseRequestBase;
4033
4373
  export type EntityUpdate = Components.Schemas.EntityUpdate;
@@ -4094,6 +4434,11 @@ export type RelationRefsConfig = Components.Schemas.RelationRefsConfig;
4094
4434
  export type RelationUniqueIdField = Components.Schemas.RelationUniqueIdField;
4095
4435
  export type RepeatableFieldType = Components.Schemas.RepeatableFieldType;
4096
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;
4097
4442
  export type SetIntegrationAppMappingRequest = Components.Schemas.SetIntegrationAppMappingRequest;
4098
4443
  export type TimeSeriesBucket = Components.Schemas.TimeSeriesBucket;
4099
4444
  export type TriggerErpActionRequest = Components.Schemas.TriggerErpActionRequest;
@@ -4102,6 +4447,7 @@ export type UpdateFileProxyUseCaseRequest = Components.Schemas.UpdateFileProxyUs
4102
4447
  export type UpdateInboundUseCaseRequest = Components.Schemas.UpdateInboundUseCaseRequest;
4103
4448
  export type UpdateIntegrationRequest = Components.Schemas.UpdateIntegrationRequest;
4104
4449
  export type UpdateOutboundUseCaseRequest = Components.Schemas.UpdateOutboundUseCaseRequest;
4450
+ export type UpdateSecureProxyUseCaseRequest = Components.Schemas.UpdateSecureProxyUseCaseRequest;
4105
4451
  export type UpdateUseCaseRequest = Components.Schemas.UpdateUseCaseRequest;
4106
4452
  export type UpdateUseCaseRequestBase = Components.Schemas.UpdateUseCaseRequestBase;
4107
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.45.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": [
@@ -3862,7 +4221,8 @@
3862
4221
  "type": {
3863
4222
  "type": "string",
3864
4223
  "enum": [
3865
- "oauth2_client_credentials"
4224
+ "oauth2_client_credentials",
4225
+ "oauth2_password"
3866
4226
  ],
3867
4227
  "description": "Authentication type"
3868
4228
  },
@@ -3890,6 +4250,14 @@
3890
4250
  "type": "string",
3891
4251
  "description": "Handlebars template for the OAuth2 resource parameter"
3892
4252
  },
4253
+ "username": {
4254
+ "type": "string",
4255
+ "description": "Handlebars template for the OAuth2 resource owner username. Required when type is oauth2_password."
4256
+ },
4257
+ "password": {
4258
+ "type": "string",
4259
+ "description": "Handlebars template for the OAuth2 resource owner password. Required when type is oauth2_password."
4260
+ },
3893
4261
  "body_params": {
3894
4262
  "type": "object",
3895
4263
  "additionalProperties": {
@@ -4327,7 +4695,6 @@
4327
4695
  "OutboundMapping": {
4328
4696
  "type": "object",
4329
4697
  "required": [
4330
- "id",
4331
4698
  "name",
4332
4699
  "jsonata_expression",
4333
4700
  "enabled",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/erp-integration-client",
3
- "version": "0.27.1",
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",