@epilot/erp-integration-client 0.28.0 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.49.0",
5
+ "version": "0.50.1",
6
6
  "description": "API for integrating with ERP systems, handling tracking acknowledgments, triggering ERP processes, and processing ERP updates."
7
7
  },
8
8
  "tags": [
@@ -21,6 +21,14 @@
21
21
  {
22
22
  "name": "monitoring",
23
23
  "description": "Monitoring and analytics endpoints"
24
+ },
25
+ {
26
+ "name": "managed-call",
27
+ "description": "Managed call endpoints for synchronous external API calls"
28
+ },
29
+ {
30
+ "name": "proxy",
31
+ "description": "Secure proxy endpoints"
24
32
  }
25
33
  ],
26
34
  "servers": [
@@ -2375,6 +2383,95 @@
2375
2383
  }
2376
2384
  }
2377
2385
  }
2386
+ },
2387
+ "/v1/managed-call/{slug}/execute": {
2388
+ "post": {
2389
+ "operationId": "managedCallExecute",
2390
+ "summary": "Execute a managed call operation",
2391
+ "description": "Execute a managed call operation synchronously. The slug in the path acts as the RPC method name.\nCalls an external partner API with JSONata mapping on both request and response.\n",
2392
+ "tags": [
2393
+ "managed-call"
2394
+ ],
2395
+ "security": [
2396
+ {
2397
+ "EpilotAuth": []
2398
+ }
2399
+ ],
2400
+ "parameters": [
2401
+ {
2402
+ "name": "slug",
2403
+ "in": "path",
2404
+ "required": true,
2405
+ "schema": {
2406
+ "type": "string",
2407
+ "pattern": "^[a-z0-9][a-z0-9_-]*$"
2408
+ },
2409
+ "description": "Use case slug (acts as the RPC method name)"
2410
+ }
2411
+ ],
2412
+ "requestBody": {
2413
+ "required": true,
2414
+ "content": {
2415
+ "application/json": {
2416
+ "schema": {
2417
+ "$ref": "#/components/schemas/ManagedCallExecuteRequest"
2418
+ }
2419
+ }
2420
+ }
2421
+ },
2422
+ "responses": {
2423
+ "200": {
2424
+ "description": "Managed call executed successfully.\nThe response body is the JSONata-mapped result (or raw external API response if no mapping).\nIf inbound routing is configured, check X-Inbound-Event-Id header for tracking.\n",
2425
+ "headers": {
2426
+ "X-Inbound-Event-Id": {
2427
+ "description": "Event ID for tracking inbound pipeline processing (only present when inbound routing is configured)",
2428
+ "schema": {
2429
+ "type": "string"
2430
+ }
2431
+ }
2432
+ },
2433
+ "content": {
2434
+ "application/json": {
2435
+ "schema": {
2436
+ "$ref": "#/components/schemas/ManagedCallExecuteResponse"
2437
+ }
2438
+ }
2439
+ }
2440
+ },
2441
+ "400": {
2442
+ "description": "Bad request (e.g., invalid URL blocked by SSRF protection)",
2443
+ "content": {
2444
+ "application/json": {
2445
+ "schema": {
2446
+ "$ref": "#/components/schemas/ManagedCallErrorResponse"
2447
+ }
2448
+ }
2449
+ }
2450
+ },
2451
+ "401": {
2452
+ "$ref": "#/components/responses/Unauthorized"
2453
+ },
2454
+ "403": {
2455
+ "$ref": "#/components/responses/Forbidden"
2456
+ },
2457
+ "404": {
2458
+ "$ref": "#/components/responses/NotFound"
2459
+ },
2460
+ "500": {
2461
+ "$ref": "#/components/responses/InternalServerError"
2462
+ },
2463
+ "502": {
2464
+ "description": "External API error (upstream service returned an error)",
2465
+ "content": {
2466
+ "application/json": {
2467
+ "schema": {
2468
+ "$ref": "#/components/schemas/ManagedCallErrorResponse"
2469
+ }
2470
+ }
2471
+ }
2472
+ }
2473
+ }
2474
+ }
2378
2475
  }
2379
2476
  },
2380
2477
  "components": {
@@ -2510,12 +2607,14 @@
2510
2607
  "properties": {
2511
2608
  "event_name": {
2512
2609
  "type": "string",
2513
- "description": "Event name from integration mapping (e.g., business_partner, contract_account). Required when use_case_slug is not provided.\n"
2610
+ "description": "Event name from integration mapping (e.g., business_partner, contract_account). Required when use_case_slug is not provided.\n",
2611
+ "example": "business_partner"
2514
2612
  },
2515
2613
  "timestamp": {
2516
2614
  "type": "string",
2517
2615
  "format": "date-time",
2518
- "description": "Timestamp when the event occurred"
2616
+ "description": "Timestamp when the event occurred",
2617
+ "example": "2025-05-01T08:30:00Z"
2519
2618
  },
2520
2619
  "format": {
2521
2620
  "type": "string",
@@ -2524,7 +2623,8 @@
2524
2623
  "xml"
2525
2624
  ],
2526
2625
  "default": "json",
2527
- "description": "Format of the payload data"
2626
+ "description": "Format of the payload data",
2627
+ "example": "json"
2528
2628
  },
2529
2629
  "payload": {
2530
2630
  "oneOf": [
@@ -2540,14 +2640,16 @@
2540
2640
  "additionalProperties": true
2541
2641
  }
2542
2642
  ],
2543
- "description": "The object data payload - can be either a serialized string or a direct JSON object"
2643
+ "description": "The object data payload - can be either a serialized string or a direct JSON object",
2644
+ "example": "{\"id\":\"BP10001\",\"name\":\"Acme Corporation\",\"type\":\"organization\",\"tax_id\":\"DE123456789\",\"status\":\"active\"}"
2544
2645
  },
2545
2646
  "use_case_slug": {
2546
2647
  "type": "string",
2547
2648
  "pattern": "^[a-z0-9][a-z0-9_-]*$",
2548
2649
  "minLength": 1,
2549
2650
  "maxLength": 255,
2550
- "description": "Recommended. Use case slug for routing this event to the correct use case configuration. If provided, takes precedence over event_name for use case lookup. Preferred over event_name-based routing as slugs are portable across environments.\n"
2651
+ "description": "Recommended. Use case slug for routing this event to the correct use case configuration. If provided, takes precedence over event_name for use case lookup. Preferred over event_name-based routing as slugs are portable across environments.\n",
2652
+ "example": "business_partner"
2551
2653
  },
2552
2654
  "deduplication_id": {
2553
2655
  "type": "string",
@@ -2712,6 +2814,107 @@
2712
2814
  },
2713
2815
  "settings": {
2714
2816
  "$ref": "#/components/schemas/IntegrationSettings"
2817
+ },
2818
+ "integration_type": {
2819
+ "type": "string",
2820
+ "enum": [
2821
+ "erp",
2822
+ "connector"
2823
+ ],
2824
+ "default": "erp",
2825
+ "description": "Type of integration. \"erp\" is the ERP integration with inbound/outbound use cases. \"connector\" is for complex proxy integrations with external APIs.\n"
2826
+ },
2827
+ "connector_config": {
2828
+ "$ref": "#/components/schemas/ConnectorConfig"
2829
+ },
2830
+ "protected": {
2831
+ "type": "boolean",
2832
+ "description": "If true, integration is displayed in read-only mode in the UI to discourage changes"
2833
+ }
2834
+ }
2835
+ },
2836
+ "ConnectorConfig": {
2837
+ "type": "object",
2838
+ "description": "Shared configuration for connector-type integrations",
2839
+ "properties": {
2840
+ "base_url": {
2841
+ "type": "string",
2842
+ "description": "Base URL for the partner API"
2843
+ },
2844
+ "auth": {
2845
+ "$ref": "#/components/schemas/ManagedCallAuth"
2846
+ }
2847
+ }
2848
+ },
2849
+ "ManagedCallAuth": {
2850
+ "type": "object",
2851
+ "description": "Authentication configuration for managed call requests",
2852
+ "properties": {
2853
+ "type": {
2854
+ "type": "string",
2855
+ "enum": [
2856
+ "oauth2_client_credentials",
2857
+ "api_key",
2858
+ "bearer"
2859
+ ],
2860
+ "description": "Authentication type"
2861
+ },
2862
+ "token_url": {
2863
+ "type": "string",
2864
+ "description": "OAuth2 token URL. Can be plain text or {{env.key}} reference."
2865
+ },
2866
+ "client_id": {
2867
+ "type": "string",
2868
+ "description": "OAuth2 client ID. Can be plain text or {{env.key}} reference."
2869
+ },
2870
+ "client_secret": {
2871
+ "type": "string",
2872
+ "description": "OAuth2 client secret. Must be an {{env.key}} reference (secret)."
2873
+ },
2874
+ "scope": {
2875
+ "type": "string",
2876
+ "description": "OAuth2 scope"
2877
+ },
2878
+ "audience": {
2879
+ "type": "string",
2880
+ "description": "OAuth2 audience parameter (e.g. for Auth0, Azure AD). Can be plain text or {{env.key}} reference."
2881
+ },
2882
+ "resource": {
2883
+ "type": "string",
2884
+ "description": "OAuth2 resource parameter (e.g. for Azure AD). Can be plain text or {{env.key}} reference."
2885
+ },
2886
+ "body_params": {
2887
+ "type": "object",
2888
+ "additionalProperties": {
2889
+ "type": "string"
2890
+ },
2891
+ "description": "Additional key-value pairs for the OAuth2 token request body. Values can be {{env.key}} references."
2892
+ },
2893
+ "headers": {
2894
+ "type": "object",
2895
+ "additionalProperties": {
2896
+ "type": "string"
2897
+ },
2898
+ "description": "Additional headers for the OAuth2 token request. Values can be {{env.key}} references."
2899
+ },
2900
+ "query_params": {
2901
+ "type": "object",
2902
+ "additionalProperties": {
2903
+ "type": "string"
2904
+ },
2905
+ "description": "Additional query parameters for the OAuth2 token URL. Values can be {{env.key}} references."
2906
+ },
2907
+ "api_key_header": {
2908
+ "type": "string",
2909
+ "description": "Header name for API key auth (default X-API-Key)"
2910
+ },
2911
+ "api_key": {
2912
+ "type": "string",
2913
+ "description": "API key value. Must be an {{env.key}} reference (secret)."
2914
+ },
2915
+ "token": {
2916
+ "type": "string",
2917
+ "description": "Bearer token value. Must be an {{env.key}} reference (secret)."
2715
2918
  }
2716
2919
  }
2717
2920
  },
@@ -3294,6 +3497,9 @@
3294
3497
  {
3295
3498
  "$ref": "#/components/schemas/EmbeddedFileProxyUseCaseRequest"
3296
3499
  },
3500
+ {
3501
+ "$ref": "#/components/schemas/EmbeddedManagedCallUseCaseRequest"
3502
+ },
3297
3503
  {
3298
3504
  "$ref": "#/components/schemas/EmbeddedSecureProxyUseCaseRequest"
3299
3505
  }
@@ -3304,6 +3510,7 @@
3304
3510
  "inbound": "#/components/schemas/EmbeddedInboundUseCaseRequest",
3305
3511
  "outbound": "#/components/schemas/EmbeddedOutboundUseCaseRequest",
3306
3512
  "file_proxy": "#/components/schemas/EmbeddedFileProxyUseCaseRequest",
3513
+ "managed_call": "#/components/schemas/EmbeddedManagedCallUseCaseRequest",
3307
3514
  "secure_proxy": "#/components/schemas/EmbeddedSecureProxyUseCaseRequest"
3308
3515
  }
3309
3516
  }
@@ -3420,6 +3627,31 @@
3420
3627
  }
3421
3628
  ]
3422
3629
  },
3630
+ "EmbeddedManagedCallUseCaseRequest": {
3631
+ "allOf": [
3632
+ {
3633
+ "$ref": "#/components/schemas/EmbeddedUseCaseRequestBase"
3634
+ },
3635
+ {
3636
+ "type": "object",
3637
+ "required": [
3638
+ "type"
3639
+ ],
3640
+ "properties": {
3641
+ "type": {
3642
+ "type": "string",
3643
+ "enum": [
3644
+ "managed_call"
3645
+ ],
3646
+ "description": "Use case type for managed API calls"
3647
+ },
3648
+ "configuration": {
3649
+ "$ref": "#/components/schemas/ManagedCallOperationConfig"
3650
+ }
3651
+ }
3652
+ }
3653
+ ]
3654
+ },
3423
3655
  "EmbeddedSecureProxyUseCaseRequest": {
3424
3656
  "allOf": [
3425
3657
  {
@@ -3484,6 +3716,7 @@
3484
3716
  "inbound",
3485
3717
  "outbound",
3486
3718
  "file_proxy",
3719
+ "managed_call",
3487
3720
  "secure_proxy"
3488
3721
  ],
3489
3722
  "description": "Use case type"
@@ -3583,6 +3816,31 @@
3583
3816
  }
3584
3817
  ]
3585
3818
  },
3819
+ "ManagedCallUseCase": {
3820
+ "allOf": [
3821
+ {
3822
+ "$ref": "#/components/schemas/UseCaseBase"
3823
+ },
3824
+ {
3825
+ "type": "object",
3826
+ "required": [
3827
+ "type"
3828
+ ],
3829
+ "properties": {
3830
+ "type": {
3831
+ "type": "string",
3832
+ "enum": [
3833
+ "managed_call"
3834
+ ],
3835
+ "description": "Use case type for managed API calls"
3836
+ },
3837
+ "configuration": {
3838
+ "$ref": "#/components/schemas/ManagedCallOperationConfig"
3839
+ }
3840
+ }
3841
+ }
3842
+ ]
3843
+ },
3586
3844
  "SecureProxyUseCase": {
3587
3845
  "allOf": [
3588
3846
  {
@@ -3619,6 +3877,9 @@
3619
3877
  {
3620
3878
  "$ref": "#/components/schemas/FileProxyUseCase"
3621
3879
  },
3880
+ {
3881
+ "$ref": "#/components/schemas/ManagedCallUseCase"
3882
+ },
3622
3883
  {
3623
3884
  "$ref": "#/components/schemas/SecureProxyUseCase"
3624
3885
  }
@@ -3629,6 +3890,7 @@
3629
3890
  "inbound": "#/components/schemas/InboundUseCase",
3630
3891
  "outbound": "#/components/schemas/OutboundUseCase",
3631
3892
  "file_proxy": "#/components/schemas/FileProxyUseCase",
3893
+ "managed_call": "#/components/schemas/ManagedCallUseCase",
3632
3894
  "secure_proxy": "#/components/schemas/SecureProxyUseCase"
3633
3895
  }
3634
3896
  }
@@ -3644,6 +3906,9 @@
3644
3906
  {
3645
3907
  "$ref": "#/components/schemas/CreateFileProxyUseCaseRequest"
3646
3908
  },
3909
+ {
3910
+ "$ref": "#/components/schemas/CreateManagedCallUseCaseRequest"
3911
+ },
3647
3912
  {
3648
3913
  "$ref": "#/components/schemas/CreateSecureProxyUseCaseRequest"
3649
3914
  }
@@ -3654,6 +3919,7 @@
3654
3919
  "inbound": "#/components/schemas/CreateInboundUseCaseRequest",
3655
3920
  "outbound": "#/components/schemas/CreateOutboundUseCaseRequest",
3656
3921
  "file_proxy": "#/components/schemas/CreateFileProxyUseCaseRequest",
3922
+ "managed_call": "#/components/schemas/CreateManagedCallUseCaseRequest",
3657
3923
  "secure_proxy": "#/components/schemas/CreateSecureProxyUseCaseRequest"
3658
3924
  }
3659
3925
  }
@@ -3760,6 +4026,31 @@
3760
4026
  }
3761
4027
  ]
3762
4028
  },
4029
+ "CreateManagedCallUseCaseRequest": {
4030
+ "allOf": [
4031
+ {
4032
+ "$ref": "#/components/schemas/CreateUseCaseRequestBase"
4033
+ },
4034
+ {
4035
+ "type": "object",
4036
+ "required": [
4037
+ "type"
4038
+ ],
4039
+ "properties": {
4040
+ "type": {
4041
+ "type": "string",
4042
+ "enum": [
4043
+ "managed_call"
4044
+ ],
4045
+ "description": "Use case type for managed API calls"
4046
+ },
4047
+ "configuration": {
4048
+ "$ref": "#/components/schemas/ManagedCallOperationConfig"
4049
+ }
4050
+ }
4051
+ }
4052
+ ]
4053
+ },
3763
4054
  "CreateSecureProxyUseCaseRequest": {
3764
4055
  "allOf": [
3765
4056
  {
@@ -3796,6 +4087,9 @@
3796
4087
  {
3797
4088
  "$ref": "#/components/schemas/UpdateFileProxyUseCaseRequest"
3798
4089
  },
4090
+ {
4091
+ "$ref": "#/components/schemas/UpdateManagedCallUseCaseRequest"
4092
+ },
3799
4093
  {
3800
4094
  "$ref": "#/components/schemas/UpdateSecureProxyUseCaseRequest"
3801
4095
  }
@@ -3806,6 +4100,7 @@
3806
4100
  "inbound": "#/components/schemas/UpdateInboundUseCaseRequest",
3807
4101
  "outbound": "#/components/schemas/UpdateOutboundUseCaseRequest",
3808
4102
  "file_proxy": "#/components/schemas/UpdateFileProxyUseCaseRequest",
4103
+ "managed_call": "#/components/schemas/UpdateManagedCallUseCaseRequest",
3809
4104
  "secure_proxy": "#/components/schemas/UpdateSecureProxyUseCaseRequest"
3810
4105
  }
3811
4106
  }
@@ -3903,6 +4198,28 @@
3903
4198
  }
3904
4199
  ]
3905
4200
  },
4201
+ "UpdateManagedCallUseCaseRequest": {
4202
+ "allOf": [
4203
+ {
4204
+ "$ref": "#/components/schemas/UpdateUseCaseRequestBase"
4205
+ },
4206
+ {
4207
+ "type": "object",
4208
+ "properties": {
4209
+ "type": {
4210
+ "type": "string",
4211
+ "enum": [
4212
+ "managed_call"
4213
+ ],
4214
+ "description": "Use case type for managed API calls"
4215
+ },
4216
+ "configuration": {
4217
+ "$ref": "#/components/schemas/ManagedCallOperationConfig"
4218
+ }
4219
+ }
4220
+ }
4221
+ ]
4222
+ },
3906
4223
  "UpdateSecureProxyUseCaseRequest": {
3907
4224
  "allOf": [
3908
4225
  {
@@ -3936,6 +4253,9 @@
3936
4253
  {
3937
4254
  "$ref": "#/components/schemas/FileProxyUseCaseHistoryEntry"
3938
4255
  },
4256
+ {
4257
+ "$ref": "#/components/schemas/ManagedCallUseCaseHistoryEntry"
4258
+ },
3939
4259
  {
3940
4260
  "$ref": "#/components/schemas/SecureProxyUseCaseHistoryEntry"
3941
4261
  }
@@ -3946,6 +4266,7 @@
3946
4266
  "inbound": "#/components/schemas/InboundUseCaseHistoryEntry",
3947
4267
  "outbound": "#/components/schemas/OutboundUseCaseHistoryEntry",
3948
4268
  "file_proxy": "#/components/schemas/FileProxyUseCaseHistoryEntry",
4269
+ "managed_call": "#/components/schemas/ManagedCallUseCaseHistoryEntry",
3949
4270
  "secure_proxy": "#/components/schemas/SecureProxyUseCaseHistoryEntry"
3950
4271
  }
3951
4272
  }
@@ -4087,6 +4408,31 @@
4087
4408
  }
4088
4409
  ]
4089
4410
  },
4411
+ "ManagedCallUseCaseHistoryEntry": {
4412
+ "allOf": [
4413
+ {
4414
+ "$ref": "#/components/schemas/UseCaseHistoryEntryBase"
4415
+ },
4416
+ {
4417
+ "type": "object",
4418
+ "required": [
4419
+ "type"
4420
+ ],
4421
+ "properties": {
4422
+ "type": {
4423
+ "type": "string",
4424
+ "enum": [
4425
+ "managed_call"
4426
+ ],
4427
+ "description": "Use case type for managed API calls"
4428
+ },
4429
+ "configuration": {
4430
+ "$ref": "#/components/schemas/ManagedCallOperationConfig"
4431
+ }
4432
+ }
4433
+ }
4434
+ ]
4435
+ },
4090
4436
  "SecureProxyUseCaseHistoryEntry": {
4091
4437
  "allOf": [
4092
4438
  {
@@ -4262,6 +4608,122 @@
4262
4608
  }
4263
4609
  }
4264
4610
  },
4611
+ "ManagedCallOperationConfig": {
4612
+ "type": "object",
4613
+ "required": [
4614
+ "operation"
4615
+ ],
4616
+ "description": "Configuration for managed_call use cases. Defines a single API operation with JSONata mapping.",
4617
+ "properties": {
4618
+ "operation": {
4619
+ "$ref": "#/components/schemas/ManagedCallOperation"
4620
+ },
4621
+ "request_mapping": {
4622
+ "type": "string",
4623
+ "description": "JSONata expression for outbound body transformation"
4624
+ },
4625
+ "response_mapping": {
4626
+ "type": "string",
4627
+ "description": "JSONata expression for inbound response transformation"
4628
+ },
4629
+ "inbound_use_case_slug": {
4630
+ "type": "string",
4631
+ "description": "Slug of the inbound use case to route responses to for async entity processing.\nWhen set, the managed call response is queued to the inbound pipeline and processed\nusing the referenced inbound use case's mapping configuration.\n"
4632
+ }
4633
+ }
4634
+ },
4635
+ "ManagedCallOperation": {
4636
+ "type": "object",
4637
+ "required": [
4638
+ "method",
4639
+ "path"
4640
+ ],
4641
+ "description": "HTTP operation configuration for managed calls",
4642
+ "properties": {
4643
+ "method": {
4644
+ "type": "string",
4645
+ "enum": [
4646
+ "GET",
4647
+ "POST",
4648
+ "PUT",
4649
+ "PATCH",
4650
+ "DELETE"
4651
+ ]
4652
+ },
4653
+ "path": {
4654
+ "type": "string",
4655
+ "description": "URL path template with {{variable}} interpolation"
4656
+ },
4657
+ "headers": {
4658
+ "type": "object",
4659
+ "additionalProperties": {
4660
+ "type": "string"
4661
+ }
4662
+ },
4663
+ "query_params": {
4664
+ "type": "object",
4665
+ "additionalProperties": {
4666
+ "type": "string"
4667
+ }
4668
+ }
4669
+ }
4670
+ },
4671
+ "ManagedCallExecuteRequest": {
4672
+ "type": "object",
4673
+ "required": [
4674
+ "integration_id"
4675
+ ],
4676
+ "properties": {
4677
+ "integration_id": {
4678
+ "type": "string",
4679
+ "format": "uuid",
4680
+ "description": "Integration ID"
4681
+ },
4682
+ "payload": {
4683
+ "type": "object",
4684
+ "additionalProperties": true,
4685
+ "description": "Request payload for the managed call operation"
4686
+ },
4687
+ "correlation_id": {
4688
+ "type": "string",
4689
+ "description": "Correlation ID for tracing related events (auto-generated if not provided)"
4690
+ }
4691
+ }
4692
+ },
4693
+ "ManagedCallExecuteResponse": {
4694
+ "description": "The response from a managed call execution.\nOn success, returns the JSONata-mapped response data directly (no wrapper).\nThe shape is entirely defined by your response_mapping JSONata expression.\nIf no response_mapping is configured, returns the raw external API response.\nCheck the X-Inbound-Event-Id header for inbound pipeline tracking when inbound routing is configured.\n",
4695
+ "additionalProperties": true
4696
+ },
4697
+ "ManagedCallErrorResponse": {
4698
+ "type": "object",
4699
+ "required": [
4700
+ "error"
4701
+ ],
4702
+ "properties": {
4703
+ "error": {
4704
+ "type": "object",
4705
+ "required": [
4706
+ "code",
4707
+ "message"
4708
+ ],
4709
+ "properties": {
4710
+ "code": {
4711
+ "type": "string",
4712
+ "description": "Error code (e.g., EXTERNAL_API_ERROR, SSRF_BLOCKED, MANAGED_CALL_EXECUTION_ERROR)"
4713
+ },
4714
+ "message": {
4715
+ "type": "string",
4716
+ "description": "Human-readable error message"
4717
+ },
4718
+ "details": {
4719
+ "type": "object",
4720
+ "additionalProperties": true,
4721
+ "description": "Additional error details (e.g., status code and body for external API errors)"
4722
+ }
4723
+ }
4724
+ }
4725
+ }
4726
+ },
4265
4727
  "FileProxyUseCaseConfiguration": {
4266
4728
  "type": "object",
4267
4729
  "required": [
@@ -4271,8 +4733,12 @@
4271
4733
  "description": "Configuration for file_proxy use cases. Defines how to authenticate and fetch files from external document systems.\n\nThe file proxy download URL always requires `orgId`, `integrationId`, and either `useCaseSlug` (recommended) or `useCaseId` (legacy UUID) as query parameters.\nThe `orgId` is included in the signed URL to establish organization context without requiring authentication.\nAdditional use-case-specific parameters are declared in the `params` array.\n",
4272
4734
  "properties": {
4273
4735
  "secure_proxy": {
4274
- "$ref": "#/components/schemas/FileProxySecureProxyAttachment",
4275
- "description": "Optional secure proxy attachment for routing all outbound file proxy requests.\nOnly `use_case_slug` is supported and the referenced secure_proxy use case\nmust belong to the same integration.\n"
4736
+ "description": "Optional secure proxy attachment for routing all outbound file proxy requests.\nOnly `use_case_slug` is supported and the referenced secure_proxy use case\nmust belong to the same integration.\n",
4737
+ "allOf": [
4738
+ {
4739
+ "$ref": "#/components/schemas/FileProxySecureProxyAttachment"
4740
+ }
4741
+ ]
4276
4742
  },
4277
4743
  "auth": {
4278
4744
  "$ref": "#/components/schemas/FileProxyAuth"
@@ -6007,6 +6473,16 @@
6007
6473
  }
6008
6474
  }
6009
6475
  },
6476
+ "Forbidden": {
6477
+ "description": "Forbidden - insufficient permissions",
6478
+ "content": {
6479
+ "application/json": {
6480
+ "schema": {
6481
+ "$ref": "#/components/schemas/ErrorResponseBase"
6482
+ }
6483
+ }
6484
+ }
6485
+ },
6010
6486
  "InternalServerError": {
6011
6487
  "description": "Internal Server Error",
6012
6488
  "content": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/erp-integration-client",
3
- "version": "0.28.0",
3
+ "version": "0.29.0",
4
4
  "description": "Client library for ePilot ERP Integration API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,7 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(pnpm install:*)"
5
- ]
6
- }
7
- }