Connections
Connections are reusable authentication and connectivity resources that let integrations communicate securely with external systems — databases, APIs, file servers, and cloud applications. Each connection has one type (such as http, netsuite, salesforce, ftp, or rdbms) that determines its authentication method and configuration fields.
Connection schema
Returns a list of all connections configured in the account. If no connections exist in the account, a 204 response with no body will be returned.
Maximum number of connections to return per page. Pair with the Link header cursor to page.
Opaque cursor for forward pagination. Pass the value from the Link
response header (rel="next") to fetch the next page.
When true, includes queue size information in the response.
Filter to connections matching this exact external identifier.
Comma-separated list of fields to project into each returned record.
Triggers summary projection: the response contains a minimal identity
set (_id, name, plus resource-specific fields) with the requested
fields added on top. Supports dot notation for nested fields.
Mutually exclusive with exclude.
_integrationId,disabled,lastModifiedComma-separated list of fields to strip from the default response.
Unlike include, does not trigger summary projection — returns the
full record with the named fields removed. Protected identity fields
(e.g. name) cannot be stripped. Mutually exclusive with include.
createdAt,lastModifiedSuccessfully retrieved list of connections
No connections exist, or no connection matches the supplied filter
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
GET /v1/connections HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "615dfa0742763671275b70ab",
"createdAt": "2021-10-06T19:33:27.797Z",
"lastModified": "2025-06-03T14:50:07.948Z",
"type": "http",
"name": "/dev/null",
"sandbox": false,
"http": {
"formType": "rest",
"mediaType": "json",
"baseURI": "https://devnull-as-a-service.com/dev/null",
"isRest": false,
"useNewAuthFailSchema": true,
"auth": {
"type": "custom"
}
},
"autoRecoverRateLimitErrors": false
},
{
"_id": "5f29dbc69e8a0f0e29a491b7",
"createdAt": "2020-08-04T18:21:10.000Z",
"lastModified": "2025-05-20T11:02:55.000Z",
"type": "netsuite",
"name": "NetSuite Production",
"netsuite": {
"authType": "token-auto",
"account": "TSTDRV961912",
"roleId": "3",
"entityId": "14924",
"wsdlVersion": "latest",
"suiteAppInstalled": true
}
},
{
"_id": "69eb9f2f0e844e8339c0a4cf",
"createdAt": "2026-04-24T16:49:51.000Z",
"lastModified": "2026-04-24T16:49:51.000Z",
"type": "mcp",
"name": "Support Tools MCP",
"mcp": {
"protocol": "http",
"serverURL": "https://api.example.com/mcp/support",
"timeout": 600000,
"http": {
"auth": {
"type": "token",
"token": {
"token": "******",
"location": "header",
"headerName": "Authorization",
"scheme": "Bearer"
}
},
"headers": []
}
}
}
]Creates a new connection configuration that can be used to authenticate and connect to external systems and applications.
To also register the new connection on one or more integrations in the same call, pass their ids in __integrationIds. Invalid lists reject the whole request (see the 400, 404, and 422 responses); failures during the post-save registration itself do not roll back the new connection and are reported in __failedIntegrationRegistrations on the 201 response.
Fields that can be sent when creating or updating a connection.
Display name for the connection.
Salesforce ProductionConnection type, which determines the authentication and connectivity options available and which config object must be supplied.
External identifier for the connection, often used to correlate it with a record in a third-party system.
erp-conn-001Lowercase application name for HTTP connections to systems with an integrator.io adaptor (e.g. "shopify", "ebay"). Only applies to http connections.
shopifyReference to a Celigo on-premise Agent. Required for types that need local network or filesystem access (filesystem, jdbc agent/activedirectory, Oracle rdbms, and on-premise mongodb). The agent establishes a secure tunnel between the on-premise environment and integrator.io.
5f8d43a1b9e5a80011a35f2cReference to another connection to share concurrency limits with. When set, this connection's traffic counts against the referenced connection's limit instead of its own.
615dfa0742763671275b70abIntegrations to register the new connection on immediately after creation, making it
available for use within them. Only honored on POST /v1/connections (ignored on PUT)
and never persisted on the connection document. Ids are validated before the connection
is saved; registration runs after the save, and per-integration failures are reported in
__failedIntegrationRegistrations on the 201 response without rolling back the new
connection.
["6a55be91d16ee8270022893e"]Enables debug logging until this timestamp. Set to a future time to capture request/response logs.
2026-01-15T09:30:00.000ZDynamic form definition for connection-specific custom settings.
Connection-specific settings captured by settingsForm. At runtime, steps using
this connection read the values under the fixed scope key connection — e.g.
{{settings.connection.<fieldId>}} in Handlebars or
$.settings.connection.<fieldId> in Mapper 2.0 envelope references.
Connection created successfully. When __integrationIds was supplied and one or
more post-save registrations failed, the body additionally carries
__failedIntegrationRegistrations; the connection is created either way.
Connection object as returned by the API.
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZReference to the specific integration instance that contains this resource.
This field is only populated for resources that are part of an integration app installation. It contains the unique identifier (_id) of the integration resource that was installed in the account.
The integration instance represents a specific installed instance of an integration app, with its own configuration, settings, and runtime environment.
This reference enables:
- Tracing the resource back to its parent integration instance
- Permission and access control based on integration ownership
- Lifecycle management (enabling/disabling, updating, or uninstalling)
5f9a7b2c3d4e5f6a7b8c9d0eReference to the integration app that defines this resource.
This field is only populated for resources that are part of an integration app. It contains the unique identifier (_id) of the integration app (connector) that defines the structure, behavior, and templates for this resource.
The integration app is the published template that can be installed multiple times across different accounts, with each installation creating a separate integration instance (referenced by _integrationId).
This reference enables:
- Identifying the source integration app for this resource
- Determining which template version is being used
- Linking to documentation, support, and marketplace information
5e8d43a1b9e5a80011a35f1bDisplay name for the connection.
Salesforce ProductionThe type of connection determining which authentication and connectivity options are available
External identifier for the connection, often used for integration with third-party systems
erp-conn-001Application name in lowercase for HTTP connections to systems with integrator.io adaptors. Used to identify the target application being connected to. Examples - Shopify: "shopify", eBay: "ebay". Only applicable for HTTP connection types.
shopifyReference to a Celigo on-premise Agent. Required for connection types that need local network or filesystem access (JDBC, filesystem, Oracle RDBMS, and on-premise MongoDB). The agent establishes a secure tunnel between the on-premise environment and integrator.io.
5f8d43a1b9e5a80011a35f2cReference to another connection to share concurrency limits with. When set, this connection's concurrency is counted against the referenced connection's limit instead of maintaining its own.
615dfa0742763671275b70abDate until which debug logging is enabled for this connection
2026-01-15T09:30:00.000ZDynamic form configuration for connection-specific settings
Connection-specific settings and configurations
When true, the connection has been taken offline and is skipped during flow execution.
Source connection this was cloned from.
5f29dbc69e8a0f0e29a491b7User who owns this connection.
5d2e1f0a9b8c7d6e5f4a3b2cDebug logging is active until this timestamp. Absent or in the past means debug is off.
2026-01-15T09:30:00.000ZMasked placeholder for encrypted credential fields. Always returns "******".
When true, the connection uses the HTTP adaptor internally, even when type is wrapper.
When true, the connection automatically backs off and retries when it encounters rate-limit errors from the target system.
trueWhen true, enables micro-batching for one-to-many data flows through this connection.
trueWhen true, enables CSV-to-object parsing for data received through this connection.
trueBad request. Also returned when __integrationIds lists more than 100
integrations — the connection is not created.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Forbidden. The authenticated caller does not have permission to perform this operation.
An id in __integrationIds does not match an integration in the account.
The connection is not created.
Unprocessable entity. The request was well-formed but was unable to be followed
due to semantic errors — for example, a missing config object for the connection
type, or an invalid __integrationIds value. The connection is not created.
POST /v1/connections HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 228
{
"name": "My HTTP API",
"type": "http",
"http": {
"mediaType": "json",
"baseURI": "https://api.example.com",
"auth": {
"type": "token",
"token": {
"location": "header",
"headerName": "Authorization",
"scheme": "Bearer",
"token": "<your-api-token>"
}
}
}
}{
"_id": "6a2610be6d42eb08f85904c4",
"createdAt": "2026-06-08T00:45:50.856Z",
"lastModified": "2026-06-08T00:45:50.951Z",
"type": "http",
"name": "My HTTP API",
"enableMicroBatchForOneToMany": true,
"enableCsvObjectParsing": true,
"autoRecoverRateLimitErrors": true,
"http": {
"formType": "http",
"mediaType": "json",
"baseURI": "https://api.example.com",
"concurrencyLevel": 25,
"targetConcurrencyLevel": 25,
"isRest": false,
"useNewAuthFailSchema": true,
"auth": {
"type": "token",
"token": {
"token": "******",
"location": "header",
"headerName": "Authorization",
"scheme": "Bearer"
}
}
}
}Retrieves a specific connection by its unique identifier. Returns the complete connection configuration including authentication settings.
The unique identifier of the connection
Connection retrieved successfully
Connection object as returned by the API.
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZReference to the specific integration instance that contains this resource.
This field is only populated for resources that are part of an integration app installation. It contains the unique identifier (_id) of the integration resource that was installed in the account.
The integration instance represents a specific installed instance of an integration app, with its own configuration, settings, and runtime environment.
This reference enables:
- Tracing the resource back to its parent integration instance
- Permission and access control based on integration ownership
- Lifecycle management (enabling/disabling, updating, or uninstalling)
5f9a7b2c3d4e5f6a7b8c9d0eReference to the integration app that defines this resource.
This field is only populated for resources that are part of an integration app. It contains the unique identifier (_id) of the integration app (connector) that defines the structure, behavior, and templates for this resource.
The integration app is the published template that can be installed multiple times across different accounts, with each installation creating a separate integration instance (referenced by _integrationId).
This reference enables:
- Identifying the source integration app for this resource
- Determining which template version is being used
- Linking to documentation, support, and marketplace information
5e8d43a1b9e5a80011a35f1bDisplay name for the connection.
Salesforce ProductionThe type of connection determining which authentication and connectivity options are available
External identifier for the connection, often used for integration with third-party systems
erp-conn-001Application name in lowercase for HTTP connections to systems with integrator.io adaptors. Used to identify the target application being connected to. Examples - Shopify: "shopify", eBay: "ebay". Only applicable for HTTP connection types.
shopifyReference to a Celigo on-premise Agent. Required for connection types that need local network or filesystem access (JDBC, filesystem, Oracle RDBMS, and on-premise MongoDB). The agent establishes a secure tunnel between the on-premise environment and integrator.io.
5f8d43a1b9e5a80011a35f2cReference to another connection to share concurrency limits with. When set, this connection's concurrency is counted against the referenced connection's limit instead of maintaining its own.
615dfa0742763671275b70abDate until which debug logging is enabled for this connection
2026-01-15T09:30:00.000ZDynamic form configuration for connection-specific settings
Connection-specific settings and configurations
When true, the connection has been taken offline and is skipped during flow execution.
Source connection this was cloned from.
5f29dbc69e8a0f0e29a491b7User who owns this connection.
5d2e1f0a9b8c7d6e5f4a3b2cDebug logging is active until this timestamp. Absent or in the past means debug is off.
2026-01-15T09:30:00.000ZMasked placeholder for encrypted credential fields. Always returns "******".
When true, the connection uses the HTTP adaptor internally, even when type is wrapper.
When true, the connection automatically backs off and retries when it encounters rate-limit errors from the target system.
trueWhen true, enables micro-batching for one-to-many data flows through this connection.
trueWhen true, enables CSV-to-object parsing for data received through this connection.
trueUnauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Forbidden. The authenticated caller does not have permission to perform this operation.
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/connections/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"_id": "615dfa0742763671275b70ab",
"createdAt": "2021-10-06T19:33:27.797Z",
"lastModified": "2025-06-03T14:50:07.948Z",
"type": "http",
"name": "/dev/null",
"sandbox": false,
"enableMicroBatchForOneToMany": true,
"enableCsvObjectParsing": true,
"autoRecoverRateLimitErrors": false,
"http": {
"formType": "rest",
"mediaType": "json",
"baseURI": "https://devnull-as-a-service.com/dev/null",
"isRest": false,
"useNewAuthFailSchema": true,
"encrypted": "******",
"auth": {
"type": "custom"
}
},
"microServices": {
"disableHttp": false,
"disableNetSuiteDistributed": false,
"disableRdbms": false
}
}Updates an existing connection configuration. This is a full-replace operation — send the complete connection document, not just the fields you want to change.
The unique identifier of the connection to update
Fields that can be sent when creating or updating a connection.
Display name for the connection.
Salesforce ProductionConnection type, which determines the authentication and connectivity options available and which config object must be supplied.
External identifier for the connection, often used to correlate it with a record in a third-party system.
erp-conn-001Lowercase application name for HTTP connections to systems with an integrator.io adaptor (e.g. "shopify", "ebay"). Only applies to http connections.
shopifyReference to a Celigo on-premise Agent. Required for types that need local network or filesystem access (filesystem, jdbc agent/activedirectory, Oracle rdbms, and on-premise mongodb). The agent establishes a secure tunnel between the on-premise environment and integrator.io.
5f8d43a1b9e5a80011a35f2cReference to another connection to share concurrency limits with. When set, this connection's traffic counts against the referenced connection's limit instead of its own.
615dfa0742763671275b70abIntegrations to register the new connection on immediately after creation, making it
available for use within them. Only honored on POST /v1/connections (ignored on PUT)
and never persisted on the connection document. Ids are validated before the connection
is saved; registration runs after the save, and per-integration failures are reported in
__failedIntegrationRegistrations on the 201 response without rolling back the new
connection.
["6a55be91d16ee8270022893e"]Enables debug logging until this timestamp. Set to a future time to capture request/response logs.
2026-01-15T09:30:00.000ZDynamic form definition for connection-specific custom settings.
Connection-specific settings captured by settingsForm. At runtime, steps using
this connection read the values under the fixed scope key connection — e.g.
{{settings.connection.<fieldId>}} in Handlebars or
$.settings.connection.<fieldId> in Mapper 2.0 envelope references.
Connection updated successfully
Connection object as returned by the API.
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZReference to the specific integration instance that contains this resource.
This field is only populated for resources that are part of an integration app installation. It contains the unique identifier (_id) of the integration resource that was installed in the account.
The integration instance represents a specific installed instance of an integration app, with its own configuration, settings, and runtime environment.
This reference enables:
- Tracing the resource back to its parent integration instance
- Permission and access control based on integration ownership
- Lifecycle management (enabling/disabling, updating, or uninstalling)
5f9a7b2c3d4e5f6a7b8c9d0eReference to the integration app that defines this resource.
This field is only populated for resources that are part of an integration app. It contains the unique identifier (_id) of the integration app (connector) that defines the structure, behavior, and templates for this resource.
The integration app is the published template that can be installed multiple times across different accounts, with each installation creating a separate integration instance (referenced by _integrationId).
This reference enables:
- Identifying the source integration app for this resource
- Determining which template version is being used
- Linking to documentation, support, and marketplace information
5e8d43a1b9e5a80011a35f1bDisplay name for the connection.
Salesforce ProductionThe type of connection determining which authentication and connectivity options are available
External identifier for the connection, often used for integration with third-party systems
erp-conn-001Application name in lowercase for HTTP connections to systems with integrator.io adaptors. Used to identify the target application being connected to. Examples - Shopify: "shopify", eBay: "ebay". Only applicable for HTTP connection types.
shopifyReference to a Celigo on-premise Agent. Required for connection types that need local network or filesystem access (JDBC, filesystem, Oracle RDBMS, and on-premise MongoDB). The agent establishes a secure tunnel between the on-premise environment and integrator.io.
5f8d43a1b9e5a80011a35f2cReference to another connection to share concurrency limits with. When set, this connection's concurrency is counted against the referenced connection's limit instead of maintaining its own.
615dfa0742763671275b70abDate until which debug logging is enabled for this connection
2026-01-15T09:30:00.000ZDynamic form configuration for connection-specific settings
Connection-specific settings and configurations
When true, the connection has been taken offline and is skipped during flow execution.
Source connection this was cloned from.
5f29dbc69e8a0f0e29a491b7User who owns this connection.
5d2e1f0a9b8c7d6e5f4a3b2cDebug logging is active until this timestamp. Absent or in the past means debug is off.
2026-01-15T09:30:00.000ZMasked placeholder for encrypted credential fields. Always returns "******".
When true, the connection uses the HTTP adaptor internally, even when type is wrapper.
When true, the connection automatically backs off and retries when it encounters rate-limit errors from the target system.
trueWhen true, enables micro-batching for one-to-many data flows through this connection.
trueWhen true, enables CSV-to-object parsing for data received through this connection.
trueBad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Forbidden. The authenticated caller does not have permission to perform this operation.
Not found. The requested resource does not exist or is not visible to the caller.
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
PUT /v1/connections/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 231
{
"name": "My HTTP API",
"type": "http",
"http": {
"mediaType": "json",
"baseURI": "https://api.example.com/v2",
"auth": {
"type": "token",
"token": {
"location": "header",
"headerName": "Authorization",
"scheme": "Bearer",
"token": "<your-api-token>"
}
}
}
}{
"_id": "615dfa0742763671275b70ab",
"createdAt": "2021-10-06T19:33:27.797Z",
"lastModified": "2026-06-08T00:45:50.951Z",
"type": "http",
"name": "My HTTP API",
"enableMicroBatchForOneToMany": true,
"enableCsvObjectParsing": true,
"autoRecoverRateLimitErrors": true,
"http": {
"formType": "http",
"mediaType": "json",
"baseURI": "https://api.example.com/v2",
"isRest": false,
"useNewAuthFailSchema": true,
"auth": {
"type": "token",
"token": {
"token": "******",
"location": "header",
"headerName": "Authorization",
"scheme": "Bearer"
}
}
}
}Deletes a connection. The connection is soft-deleted and retained in the recycle bin for 30 days before permanent removal. Use POST /v1/recycleBinTTL/connections/{_id} to restore it during that window.
The unique identifier of the connection to delete
Connection deleted successfully
No content
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Forbidden. The authenticated caller does not have permission to perform this operation.
Not found. The requested resource does not exist or is not visible to the caller.
The resource has dependents that must be deleted first. Each entry
in the errors array names one blocking resource.
DELETE /v1/connections/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Partially updates a connection using a JSON Patch document (RFC 6902). Only the replace operation is supported, and only on the following whitelisted paths:
/name
Connection display name
/debugDate
Debug logging expiry (ISO-8601, max 1 hour from now)
/debugUntil
Alias for /debugDate
All other paths are rejected with 422.
The unique identifier of the connection to patch
A JSON Patch document (RFC 6902). Send an array of patch operations on whitelisted fields — all other paths are rejected with 422.
The operation to perform.
JSON Pointer (RFC 6901) to the field to patch. Only
whitelisted paths are accepted — unlisted paths return
422 with "<path> is not a whitelisted property".
The new value to set. Required for replace and add, omit for remove.
Connection patched successfully
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
PATCH /v1/connections/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 74
[
{
"op": "replace",
"path": "/debugUntil",
"value": "2026-05-02T16:00:00.000Z"
}
]No content
Runs the adaptor's ping routine against a saved connection to verify its credentials and network configuration still work; no data is read, written, or modified. The check is adaptor-specific (HTTP runs the ping relativeURI or baseURI, RDBMS/JDBC open a driver session, MCP issues a tools/list, NetSuite/Salesforce do a token or session validation). The request body is optional and ignored.
Inspect the response body, not the HTTP status, to determine the outcome: success and adaptor-level failures both return HTTP 200 — success is {code: 200}, failures are {errors: [...]}. The only non-success status is 404, when _id does not resolve to a connection. For a not-yet-saved connection, use POST /v1/connections/ping instead.
Connection ID to ping.
Currently ignored; reserved for future per-ping overrides.
Ping executed. Inspect the body to determine outcome — success and
adaptor-level failures both return HTTP 200. Success returns
{code: 200}; adaptor-level failures return {errors: [...]}.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
No connection found for the given _id. The body is an invalid_ref
error — note this is a 404, not a 400, and the field pointer is _id.
POST /v1/connections/{_id}/ping HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2
{}{
"code": 200
}Returns the buffered debug log stream for the connection — request/response pairs from recent exports, imports, and lookups that used it. Capture is gated by the connection's debugDate: logs are recorded only while debugDate is in the future, so enable it first via PUT /v1/connections/{_id} or the buffer stays empty.
The response is a plain-text stream (not JSON): each entry is a header line (timestamp traceKey resourceType resourceId) followed by a single-line JSON payload, entries separated by blank lines; paired request/response entries share a traceKey. Logs are shared across every flow using the connection (filter by resourceId client-side), and sensitive header values are redacted ("Authorization": "********"). For execution logs tied to a specific run, use GET /v1/flows/{_id}/jobs/{_jobId}/logs instead.
The connection id.
Debug log stream (plain text).
Newline-separated debug log entries. Each entry is a header line
(timestamp traceKey resourceType resourceId) followed by a JSON payload line;
entries are separated by blank lines.
No debug logs available — either debug capture is disabled (no debugDate set, or it
is in the past) or the buffer has been cleared.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/connections/{_id}/debug HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
2026-04-19T03:44:06.673Z b45a75a5b72e4522972e55edf26de1c8 import 69e44eb7a749d34a975a4747
{"url":"https://httpbin.org/post","method":"POST","body":"{\"id\":\"_id\"}","headers":{"X-None":"********","content-type":"application/json"},"requestIndex":0}
2026-04-19T03:44:06.774Z b45a75a5b72e4522972e55edf26de1c8 import 69e44eb7a749d34a975a4747
{"headers":{"date":"Sun, 19 Apr 2026 03:44:06 GMT","content-type":"application/json"},"body":"{\"ok\":true}"}
Purges the connection's debug log buffer. Subsequent GET /v1/connections/{_id}/debug calls return empty until new traffic is captured (assuming debugDate is still in the future).
Idempotent — works whether the buffer held entries, was already empty, or the given connection id does not exist. Does not clear the connection's debugDate — debug capture remains enabled until debugDate expires or is removed via a PUT.
Useful between test runs to isolate logs for a single scenario. To fully disable debug capture, also PUT /v1/connections/{_id} with debugDate removed from the body.
The connection id.
Debug buffer cleared (or no-op if the buffer was already empty / id unknown).
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
DELETE /v1/connections/{_id}/debug HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Query metadata for a connection (RDBMS catalog or HTTP passthrough)
Fetches metadata from the system behind the connection. The request and response are bimodal, chosen by the connection's type:
rdbms / jdbc — runs a live catalog lookup. Send the
rdbmswrapper (type: tablesorcolumns).type: rdbmsreturns a{results: [...]}envelope of{database, schema, table}items, with acolumns[]array of driver type metadata for column queries;type: jdbcreturns a bare array with leaner column metadata and aprimaryKeys[]sibling. Results are cached — passrefreshCache: trueto bypass and repopulate (use sparingly).http — signs and forwards an HTTP request through the connection's auth and
baseURI(send thehttpwrapper with abody), returning the target's raw, opaque response. Used for GraphQL introspection and REST endpoint discovery.
Send the wrapper that matches the connection type; the wrong wrapper is a validation error. Empty RDBMS results are legitimate — empty cache, missing catalog permissions, or no columns.
The connection id. Must point to a connection of supported type
(rdbms, jdbc, or http).
Metadata query for a connection, populated with one of two branches by connection type:
the rdbms wrapper (for type: rdbms and type: jdbc) runs catalog lookups (list tables /
describe columns), and the http wrapper (for type: http, including GraphQL-over-HTTP)
issues a request through the connection's baseURI and auth and returns the target's raw
response. Populate only one branch; the wrong wrapper for the type is a validation error,
and unsupported types (FTP, S3, filesystem, AS2, NetSuite, Salesforce) are rejected —
NetSuite and Salesforce use their dedicated /v1/netsuite/metadata/... and
/v1/salesforce/metadata/... endpoints.
When true, bypasses the metadata cache and repopulates it from the live
target (RDBMS driver call, or target HTTP request). Use sparingly —
every refreshCache: true call re-issues the underlying work.
falseMetadata query succeeded. Shape depends on connection type — see the
three branches of ConnectionMetadataResponse.
Response for PUT /v1/connections/{_id}/metadata, in one of three shapes by connection type:
rdbms returns a {results: [...]} envelope (table items {database, schema, table}; column
items add a driver-detailed columns[]); jdbc returns a bare array with leaner column
descriptors and a primaryKeys[] sibling; http returns the target server's raw, opaque
response (the GraphQL or REST body).
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Request was structurally invalid or the connection does not support metadata. See the response examples for common error codes and shapes.
PUT /v1/connections/{_id}/metadata HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 39
{
"rdbms": {
"type": "tables",
"tables": ""
}
}{
"results": [
{
"database": "celigoLabs",
"schema": "dbo",
"table": "Customers"
},
{
"database": "celigoLabs",
"schema": "dbo",
"table": "Orders"
}
]
}Purges all messages from the connection's message queue. This is a rate-limited operation — repeated calls within approximately 20 seconds are throttled.
Returns an empty response on success. If the queue is already empty, the request fails with an empty_connection_queue error.
The unique identifier of the connection.
Message queue purged successfully (no body returned).
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
The connection's message queue is already empty.
Rate limit exceeded. Wait approximately 20 seconds before retrying.
POST /v1/connections/{_id}/purgeMessages HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Returns a short-lived authorization URL for running (or re-running) the OAuth handshake behind this connection. Redirect the end user to it; once they consent, Celigo's callback writes the tokens back and flips needsAuthorization to false. The single authorizationUrl response field serves both OAuth 2.0 and OAuth 1.0a connections (NetSuite returns an OAuth 1.0a URL with an oauth_token parameter).
Note the resource segment is singular — /v1/connection/{_id}/oauth2, not plural. The URL's state token is one-time and expires quickly, so request a fresh one if the flow is interrupted, then poll GET /v1/connections/{_id} until needsAuthorization is false.
The connection id.
Authorization URL ready for the end user to visit.
Authorization URL payload for restarting an OAuth handshake. One field, serves both OAuth 2.0 and OAuth 1.0a flows — the URL contents differ but the envelope does not.
Short-lived authorization URL. Redirect the end user here to consent at the provider.
Embeds a one-time token in the state query parameter that expires quickly and is
invalidated after a single use.
https://login.example.com/oauth2/authorize?response_type=code&client_id=0oa1b2c3d4EXAMPLE5&redirect_uri=https%3A%2F%2Fapi.integrator.io%2Fconnection%2Foauth2callback&scope=read+write&state=eyJfY29ubmVjdGlvbklkIjoiNjE1ZGZhMDc0Mjc2MzY3MTI3NWI3MGFiIn0Connection id does not resolve.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Connection exists but is not configured for OAuth — e.g. an FTP, S3, or plain-auth
HTTP connection. The server fails the handshake pre-check because the connection has
no authURI in its config.
GET /v1/connection/{_id}/oauth2 HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"authorizationUrl": "https://account.box.com/api/oauth2/authorize?response_type=code&state=eyJfY29ubmVjdGlvbklkIjoiNjg0YzYxNWIxMGJlZmI1NzY3YjJlODg1IiwiaXNWMVJlcXVlc3QiOnRydWUsIm90dCI6Im90dDFmZjI1M2EyM2RhZjRhZGZhNjRhMzRkNjk3NTkwZTVhIn0&redirect_uri=https%3A%2F%2Fintegrator.io%2Fconnection%2Foauth2callback&client_id=mfhrqxqiawmi6qlj0ddt99tc7az2409w&scope=root_readwrite"
}Returns the set of resources that depend on the specified resource. The response is an object whose keys are dependent-resource types (e.g. flows, imports) and whose values are arrays of dependency entries.
Returns {} for both zero-dependency and nonexistent IDs.
Resource ID.
Dependency map. Keys are resource-type strings; values are arrays
of dependency entries. Returns {} when no dependents exist.
Map of dependent-resource types to arrays of dependency entries.
Keys are plural resource type strings (e.g. flows, imports,
connections). An empty object {} means no dependents.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
GET /v1/connections/{_id}/dependencies HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{}List sObject types for a Salesforce connection
Returns an array of all sObject type descriptors available on the given Salesforce connection. This is the Salesforce describe-global response, typically containing ~1058 sObject types.
The unique identifier of the Salesforce connection
5f8d43a1b9e5a80011a35f2cSuccessfully retrieved sObject types
A Salesforce sObject type descriptor from the describe-global response.
When true, the sObject supports the activate action.
For associated sObjects (e.g. ChangeEvent, Feed, History, Share), the kind of association; null for standalone objects.
For associated sObjects, the parent sObject they attach to (e.g. Account); null for standalone objects.
When true, the sObject and its related records can be deep-cloned.
When true, this sObject is a supertype that has subtype sObjects.
When true, this sObject is an interface that other sObjects implement.
When true, this sObject is a subtype of a supertype sObject.
When true, new records of this sObject can be created.
When true, this is a custom sObject (API name ends in __c).
When true, this is a custom setting sObject.
When true, records of this sObject can be deleted.
When true, the sObject is deprecated and hidden from the UI.
When true, Chatter feeds are enabled for this sObject.
The three-character prefix of record IDs for this sObject (e.g. 001
for Account). Null for sObjects that do not have a key prefix.
001Singular display label (e.g. Account).
AccountPlural display label (e.g. Accounts).
AccountsWhen true, page layouts can be configured for this sObject.
When true, records of this sObject can be merged.
When true, Most Recently Used tracking is enabled for this sObject.
The API name of the sObject (e.g. Account, Custom__c).
AccountWhen true, the sObject supports SOQL queries.
When true, the sObject can be replicated.
When true, individual records can be retrieved by ID.
When true, the sObject is searchable via SOSL.
When true, Apex triggers can be defined on this sObject.
When true, deleted records can be restored (undeleted).
When true, existing records of this sObject can be updated.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The connection ID does not match any known connection.
Unprocessable entity. The connection exists but is not authorized or cannot be used to fetch metadata.
GET /v1/salesforce/metadata/connections/{_id}/sObjectTypes HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"name": "Account",
"label": "Account",
"labelPlural": "Accounts",
"keyPrefix": "001",
"custom": false,
"queryable": true,
"createable": true,
"updateable": true,
"deletable": true,
"searchable": true
},
{
"name": "Contact",
"label": "Contact",
"labelPlural": "Contacts",
"keyPrefix": "003",
"custom": false,
"queryable": true,
"createable": true,
"updateable": true,
"deletable": true,
"searchable": true
}
]Get sObject type detail for a Salesforce connection
Returns the full Salesforce sObject describe response for the specified sObject type on the given connection. This is a large payload that includes all fields, child relationships, record type info, URLs, and other metadata.
The unique identifier of the Salesforce connection
5f8d43a1b9e5a80011a35f2cThe Salesforce sObject API name (e.g. Account, Contact, Custom__c).
AccountSuccessfully retrieved sObject type detail
Full Salesforce sObject describe response. This is a large payload that includes field definitions, child relationships, record type info, URLs, and many other metadata attributes for the sObject.
The API name of the sObject.
AccountSingular display label.
AccountPlural display label.
AccountsThree-character ID prefix for this sObject.
001When true, this is a custom sObject (API name ends in __c).
When true, records of this sObject can be retrieved with SOQL queries.
When true, records of this sObject can be created.
When true, records of this sObject can be updated.
When true, records of this sObject can be deleted.
When true, records of this sObject can be retrieved with SOSL searches.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Unprocessable entity. Failed to fetch metadata for the specified sObject type.
GET /v1/salesforce/metadata/connections/{_id}/sObjectTypes/{sObjectType} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"name": "Account",
"label": "Account",
"labelPlural": "Accounts",
"keyPrefix": "001",
"custom": false,
"queryable": true,
"createable": true,
"updateable": true,
"deletable": true,
"searchable": true,
"fields": [
{
"name": "Id",
"label": "Account ID",
"type": "id",
"length": 18,
"nillable": false,
"createable": false,
"updateable": false,
"filterable": true,
"sortable": true
},
{
"name": "Name",
"label": "Account Name",
"type": "string",
"length": 255,
"nillable": false,
"createable": true,
"updateable": true,
"filterable": true,
"sortable": true
},
{
"name": "Industry",
"label": "Industry",
"type": "picklist",
"nillable": true,
"createable": true,
"updateable": true,
"filterable": true,
"sortable": true,
"picklistValues": [
{
"active": true,
"label": "Technology",
"value": "Technology",
"defaultValue": false
}
]
}
],
"urls": {
"sobject": "/services/data/v59.0/sobjects/Account",
"describe": "/services/data/v59.0/sobjects/Account/describe",
"rowTemplate": "/services/data/v59.0/sobjects/Account/{ID}"
}
}List record types for a NetSuite connection
Returns an array of all record types available via SuiteScript for the given NetSuite connection. The response typically contains ~539 record type descriptors.
Pass ?refreshCache=true to bypass the server-side cache and fetch fresh metadata from NetSuite.
The unique identifier of the NetSuite connection
5f8d43a1b9e5a80011a35f2cWhen true, bypasses the server-side metadata cache and fetches fresh
record type data from NetSuite.
falseSuccessfully retrieved record types
A NetSuite SuiteScript record type descriptor.
The SuiteScript identifier for the record type (e.g. salesorder).
salesorderHuman-readable display name (e.g. Sales Order).
Sales OrderNetSuite permission token required to access this record type.
TRAN_SALESORDWhen true, this record type can be scripted via SuiteScript.
Relative URL path to the record type in NetSuite.
/app/accounting/transactions/salesord.nlInternal numeric identifier for the record type.
-247The current user's effective permission level for this record type.
fullWhen true, the record type does not support record creation.
When true, the record type does not support record deletion.
When true, the record type does not support real-time export.
When true, the record type does not support saved-search-based queries.
When true, the record type does not support record updates.
When true, the record type has associated sub-records.
When true, this is a super type that encompasses multiple concrete record types.
Configuration details for sub-record relationships, if applicable.
Additional URL parameters appended when accessing this record type.
whence=Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Unprocessable entity. The connection ID does not match a valid NetSuite connection.
GET /v1/netsuite/metadata/suitescript/connections/{_id}/recordTypes HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"scriptId": "salesorder",
"name": "Sales Order",
"scriptable": true,
"id": "-247"
},
{
"scriptId": "customer",
"name": "Customer",
"scriptable": true,
"id": "-2"
}
]List fields for a NetSuite record type
Returns an array of field descriptors for the specified record type on the given NetSuite connection. Fields are grouped by category (e.g. Body Field) and include their data types.
The unique identifier of the NetSuite connection
5f8d43a1b9e5a80011a35f2cThe SuiteScript record type identifier (e.g. salesorder, customer).
salesorderSuccessfully retrieved record type fields
A field descriptor for a NetSuite record type.
The field group this field belongs to (e.g. Body Field, Address).
Body FieldThe internal field identifier (e.g. entity, trandate).
entityHuman-readable field label (e.g. Customer, Date).
CustomerThe field data type. Common values: checkbox, select, text,
currency, date, datetime, email, integer, multiselect,
percent, phone, textarea, url.
selectUnauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Unprocessable entity. The record type is invalid or not accessible via
SuiteScript on this connection. The error includes a js_exception code
and the NetSuite error message.
GET /v1/netsuite/metadata/suitescript/connections/{_id}/recordTypes/{recordType} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"group": "Body Field",
"id": "entity",
"name": "Customer",
"type": "select"
},
{
"group": "Body Field",
"id": "trandate",
"name": "Date",
"type": "date"
},
{
"group": "Body Field",
"id": "memo",
"name": "Memo",
"type": "text"
}
]List sublists for a NetSuite record type
Returns an array of sublists (line-item groups) available on the specified record type for the given NetSuite connection.
The unique identifier of the NetSuite connection
5f8d43a1b9e5a80011a35f2cThe SuiteScript record type identifier (e.g. salesorder, customer).
salesorderSuccessfully retrieved sublists
A sublist (line-item group) on a NetSuite record type.
The internal identifier for the sublist (e.g. contact, item).
itemHuman-readable display name (e.g. Contacts, Items).
ItemsUnauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
GET /v1/netsuite/metadata/suitescript/connections/{_id}/recordTypes/{recordType}/sublists HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"id": "contact",
"name": "Contacts"
},
{
"id": "item",
"name": "Items"
}
]List saved searches for a NetSuite connection
Returns an array of saved searches available on the given NetSuite connection.
The recordType query parameter is accepted but silently ignored by the server -- all saved searches are returned regardless.
The unique identifier of the NetSuite connection
5f8d43a1b9e5a80011a35f2cAccepted but silently ignored. All saved searches are returned regardless of this parameter's value.
Successfully retrieved saved searches
A NetSuite saved search reference.
The internal saved search ID (e.g. 1305).
1305Human-readable saved search name (e.g. AH : Contact Search).
AH : Contact SearchUnauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
GET /v1/netsuite/metadata/suitescript/connections/{_id}/savedSearches HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"id": "1305",
"name": "AH : Contact Search"
},
{
"id": "1420",
"name": "Open Sales Orders"
}
]Last updated
Was this helpful?