You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`configuration`| object | Yes |Type-specific configuration (see sections below) |
81
123
82
124
:::info
83
-
The `file_proxy` type is used for on-demand file serving from external document systems. See the [File Proxy guide](./file-proxy) for configuration details.
125
+
-`file_proxy` — On-demand file serving from external document systems. See the [File Proxy guide](./file-proxy).
126
+
-`managed_call` — Synchronous external API calls with JSONata mapping. See [Managed Call Use Cases](#managed-call-use-cases).
127
+
-`secure_proxy` — Route requests through VPC Lambdas for static IP or VPN access. See [Secure Proxy Use Cases](#secure-proxy-use-cases).
84
128
:::
85
129
86
130
### Enabling/Disabling a Use Case
@@ -149,6 +193,151 @@ curl -X GET 'https://erp-integration.sls.epilot.io/v1/integrations/{integrationI
149
193
}
150
194
```
151
195
196
+
## Managed Call Use Cases
197
+
198
+
Managed call use cases define synchronous API operations against external partner systems. They are typically used with `connector`-type integrations.
199
+
200
+
### Creating a Managed Call Use Case
201
+
202
+
```bash
203
+
curl -X POST 'https://erp-integration.sls.epilot.io/v1/integrations/{integrationId}/use-cases' \
Secrets must use `{{env.KEY}}` references to resolve values from the [Environments API](/docs/integrations/webhooks/environments-secrets).
278
+
279
+
## Secure Proxy Use Cases
280
+
281
+
Secure proxy use cases route HTTP requests through VPC-deployed Lambda functions for static IP egress or VPN access to customer private networks.
282
+
283
+
### Creating a Secure Proxy Use Case
284
+
285
+
```bash
286
+
curl -X POST 'https://erp-integration.sls.epilot.io/v1/integrations/{integrationId}/use-cases' \
287
+
-H 'Authorization: Bearer <token>' \
288
+
-H 'Content-Type: application/json' \
289
+
-d '{
290
+
"name": "Partner API Proxy",
291
+
"slug": "partner-api",
292
+
"type": "secure_proxy",
293
+
"enabled": true,
294
+
"configuration": {
295
+
"vpc_mode": "secure_link"
296
+
}
297
+
}'
298
+
```
299
+
300
+
### Secure Proxy Configuration Fields
301
+
302
+
| Field | Required | Mutable | Description |
303
+
|-------|----------|---------|-------------|
304
+
|`vpc_mode`| Yes | No (immutable) |`"static_ip"` (NAT Gateway for fixed outbound IP) or `"secure_link"` (VPN for private networks) |
305
+
|`allowed_domains`| No | Admin only | Array of allowed domain patterns. Supports exact match and wildcard prefix (e.g., `*.example.com`). Managed via admin script only. |
306
+
|`allowed_ips`| No | Admin only | Array of allowed IP ranges in CIDR notation (e.g., `10.0.1.0/24`). Required for `secure_link` mode. Managed via admin script only. |
307
+
308
+
### Sending a Proxy Request
309
+
310
+
```bash
311
+
curl -X POST 'https://erp-integration.sls.epilot.io/v1/secure-proxy' \
312
+
-H 'Authorization: Bearer <token>' \
313
+
-H 'Content-Type: application/json' \
314
+
-d '{
315
+
"integration_id": "<integration-id>",
316
+
"use_case_slug": "partner-api",
317
+
"url": "https://api.partner.com/v1/data",
318
+
"method": "GET",
319
+
"headers": {
320
+
"Authorization": "Bearer external-token"
321
+
}
322
+
}'
323
+
```
324
+
325
+
### Domain Whitelist and IP Allowlist
326
+
327
+
-**Domain whitelist**: Controls which hostnames the proxy can reach. Wildcard patterns must have at least 2 suffix labels (e.g., `*.example.com` is valid, `*.com` is rejected).
328
+
-**IP allowlist**: Controls which IP addresses are permitted in `secure_link` mode using CIDR notation. Validation is applied both at the URL level (direct IP targets) and DNS level (resolved IPs must match).
329
+
- Both fields are read-only in the API and can only be managed via the admin script (`scripts/manage-secure-proxy-whitelist.ts`).
330
+
331
+
### Security
332
+
333
+
| Concern | Static IP mode | Secure Link mode |
334
+
|---------|---------------|-----------------|
335
+
| SSRF protection | Full (private IPs blocked) | Protocol + localhost only (private IPs allowed for VPN) |
|**[Apps](https://marketplace.epilot.cloud/en/apps)**| Custom automation actions and portal extensions for ERP logic | In progress |
@@ -49,8 +51,12 @@ The `/v2/integrations` CRUD API centralizes all integration configuration in one
49
51
-**API tokens** with scoped roles and permissions
50
52
-**Inbound use cases** with entity mappings
51
53
-**Outbound use cases** with event mappings
54
+
-**Managed call use cases** for synchronous external API calls (connector integrations)
55
+
-**Secure proxy use cases** for VPC-routed HTTP requests
52
56
-**Associated Apps and portal extensions**
53
57
58
+
Integrations support two types: `erp` (default, for standard ERP flows) and `connector` (for complex proxy integrations with external APIs).
59
+
54
60
See the [Configuration Guide](./configuration) for API details.
55
61
56
62
### Inbound API
@@ -79,6 +85,28 @@ See the [Use Cases](./use-cases) page for a complete list of inbound and outboun
79
85
80
86
The [File Proxy](./file-proxy) enables epilot to serve files from external document systems (e.g., ERP archives, DMS) on demand. Instead of migrating file content during inbound sync, file entities are created with a `custom_download_url` pointing to the proxy. When a user views the file, the proxy fetches the document from the external system in real time using a declarative, multi-step HTTP configuration.
81
87
88
+
### Managed Calls
89
+
90
+
Managed Calls enable synchronous API calls to external partner systems with built-in authentication, JSONata mapping, and optional inbound routing. They are configured as `managed_call` use cases within `connector`-type integrations.
91
+
92
+
Key capabilities:
93
+
-**Authentication** — OAuth2 client credentials, API key, or bearer token with automatic token management
94
+
-**JSONata mapping** — Transform request and response payloads using JSONata expressions
95
+
-**Inbound routing** — Optionally queue the response to the inbound pipeline for async entity processing
96
+
-**Secure proxy support** — Route calls through static IP or VPN VPCs when needed
97
+
98
+
See the [Configuration Guide](./configuration#managed-call-use-cases) for setup details.
99
+
100
+
### Secure Proxy
101
+
102
+
The Secure Proxy routes HTTP requests through VPC-deployed Lambda functions, providing either **static IP egress** (for IP-allowlisted external APIs) or **VPN access** (for customer private networks). It acts as the single authenticated gateway between epilot and customer networks.
103
+
104
+
-**Static IP mode** — Routes through a NAT Gateway for a fixed outbound IP address
105
+
-**Secure Link mode** — Routes through a VPN-connected VPC for access to private networks
106
+
- Domain whitelisting and CIDR-based IP allowlisting enforce strict access control
107
+
108
+
See the [Configuration Guide](./configuration#secure-proxy-use-cases) for setup details.
109
+
82
110
### JSONata Mapping
83
111
84
112
[JSONata](https://jsonata.org/) is the core transformation language for defining mappings between epilot's standardized entity/event schemas and ERP-specific data models. It is used across:
0 commit comments