Integrations
Integrations are the top-level containers that group flows, connections, exports, imports, and other resources into a logical unit. Each integration appears as a tile on the Celigo Home page.
Two flavors exist:
Standard integrations — user-created containers that group custom flows.
Integration App installations — created from a published connector/template, with install/uninstall steps, settings forms, editions, and optional child integrations. These have
_connectorIdand_templateIdset.
Integrations support Integration Lifecycle Management (ILM): clone an integration across environments, then use revisions (snapshot, pull, revert) to promote changes between them. Lifecycle operations carry every resource the integration contains.
Integration schema
Returns all integrations in the account. Supports field projection via include/exclude.
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,lastModifiedMaximum number of integrations to return per page. When more results exist, the response includes a Link header with a rel="next" URL.
100Successfully retrieved list of integrations.
No integrations exist in the account
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/integrations HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders",
"description": "Syncs orders, customers, and inventory between Shopify and NetSuite.",
"mode": "settings",
"sandbox": false,
"_registeredConnectionIds": [
"626168f90b6ef816b50c82d7",
"6553ebdeda62bb22e7fa81ff"
],
"install": [],
"installSteps": [],
"uninstallSteps": [],
"changeEditionSteps": [],
"flowGroupings": [],
"apiGroupings": [],
"createdAt": "2025-06-05T23:19:47.141Z",
"lastModified": "2026-05-02T01:02:27.378Z"
}
]Creates a new integration. Only name is required — the server populates all other fields with defaults. Do not include Integration App fields (_connectorId, _templateId, install, installSteps, etc.) unless you are creating an IA installation.
Fields that can be sent when creating or updating an integration.
Human-readable name for the integration.
Use a short, descriptive label that helps users identify the integration in the UI.
Shopify → NetSuite OrdersOptional description of the integration's purpose and behavior.
Helpful for documentation, onboarding, and clarifying what the integration does.
Long-form README content for the integration (typically Markdown).
Use this to provide setup instructions, prerequisites, and operational notes.
Integration App (connector) identifier when this integration is based on an installed Integration App.
If you are not working with an Integration App installation, omit this field.
5b3c8f9a2e1d4c0011223344Template identifier used to create/initialize this integration (commonly for Integration Apps).
Omit unless you are creating/updating an integration from a template.
5c1a7b8d4f2e6a0011556677Integration App lifecycle mode.
Use this only when dealing with Integration App lifecycle workflows.
installPossible values: Integration App version (or template version) associated with this integration.
Usually system-managed for Integration App installs; omit unless you are explicitly controlling versions.
1.2.0Legacy field for distinguishing multiple instances of the same Integration App within a single Celigo environment.
Only set this when a customer is running multiple installations of the same Integration App. Otherwise, omit this field.
instance-2When true, an Integration App update workflow is currently running. Settable via the API, but normally managed by the platform's update workflow.
When true, Celigo Agent actions scoped to this integration are allowed to run automatically without a manual approval step.
Omit unless you are explicitly configuring Celigo Agent behavior for this integration.
Timestamp indicating when the most recent install/update workflow was resolved/completed.
Typically system-managed; omit in normal create/update payloads.
2026-01-15T09:30:00.000ZParent integration ID when this integration was created as a child of another integration. Invalid ids are silently dropped by the server. Omit unless creating/updating child integrations.
6842261335b64c0bcb308e4fDisplay name used for a child integration created during installation.
Omit unless creating/updating child integrations.
West region storeSystem-assigned source identifier for the integration.
Typically system-managed; omit in normal create/update payloads.
6842261335b64c0bcb308e4fIndicates this integration is a sample/demo integration (used for templates/examples).
Typically system-managed.
Indicates whether this integration uses Sync resources.
Typically system-managed.
Integration created successfully.
Integration object as returned by the API.
Human-readable name for the integration.
Use a short, descriptive label that helps users identify the integration in the UI.
Shopify → NetSuite OrdersOptional description of the integration's purpose and behavior.
Helpful for documentation, onboarding, and clarifying what the integration does.
Long-form README content for the integration (typically Markdown).
Use this to provide setup instructions, prerequisites, and operational notes.
Integration App (connector) identifier when this integration is based on an installed Integration App.
If you are not working with an Integration App installation, omit this field.
5b3c8f9a2e1d4c0011223344Template identifier used to create/initialize this integration (commonly for Integration Apps).
Omit unless you are creating/updating an integration from a template.
5c1a7b8d4f2e6a0011556677Integration App lifecycle mode.
Use this only when dealing with Integration App lifecycle workflows.
installPossible values: Integration App version (or template version) associated with this integration.
Usually system-managed for Integration App installs; omit unless you are explicitly controlling versions.
1.2.0Legacy field for distinguishing multiple instances of the same Integration App within a single Celigo environment.
Only set this when a customer is running multiple installations of the same Integration App. Otherwise, omit this field.
instance-2When true, an Integration App update workflow is currently running. Settable via the API, but normally managed by the platform's update workflow.
When true, Celigo Agent actions scoped to this integration are allowed to run automatically without a manual approval step.
Omit unless you are explicitly configuring Celigo Agent behavior for this integration.
Timestamp indicating when the most recent install/update workflow was resolved/completed.
Typically system-managed; omit in normal create/update payloads.
2026-01-15T09:30:00.000ZParent integration ID when this integration was created as a child of another integration. Invalid ids are silently dropped by the server. Omit unless creating/updating child integrations.
6842261335b64c0bcb308e4fDisplay name used for a child integration created during installation.
Omit unless creating/updating child integrations.
West region storeSystem-assigned source identifier for the integration.
Typically system-managed; omit in normal create/update payloads.
6842261335b64c0bcb308e4fIndicates this integration is a sample/demo integration (used for templates/examples).
Typically system-managed.
Indicates whether this integration uses Sync resources.
Typically system-managed.
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:32ZConnections registered to this integration. Managed by the platform when users register connections through the UI or the integration's registerConnection operation; client-sent values are ignored (PUT-verified).
Lookup caches registered to this integration, managed by the platform.
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[].
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
POST /v1/integrations HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 38
{
"name": "Shopify → NetSuite Orders"
}{
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders",
"description": "Syncs orders, customers, and inventory between Shopify and NetSuite.",
"sandbox": false,
"install": [],
"installSteps": [],
"uninstallSteps": [],
"changeEditionSteps": [],
"flowGroupings": [],
"apiGroupings": [],
"_registeredConnectionIds": [],
"_registeredLookupCacheIds": [],
"createdAt": "2025-06-05T23:19:47.141Z",
"lastModified": "2025-06-05T23:19:47.141Z"
}Returns the full integration object.
Integration id.
6842261335b64c0bcb308e4fSuccessfully retrieved integration.
Integration object as returned by the API.
Human-readable name for the integration.
Use a short, descriptive label that helps users identify the integration in the UI.
Shopify → NetSuite OrdersOptional description of the integration's purpose and behavior.
Helpful for documentation, onboarding, and clarifying what the integration does.
Long-form README content for the integration (typically Markdown).
Use this to provide setup instructions, prerequisites, and operational notes.
Integration App (connector) identifier when this integration is based on an installed Integration App.
If you are not working with an Integration App installation, omit this field.
5b3c8f9a2e1d4c0011223344Template identifier used to create/initialize this integration (commonly for Integration Apps).
Omit unless you are creating/updating an integration from a template.
5c1a7b8d4f2e6a0011556677Integration App lifecycle mode.
Use this only when dealing with Integration App lifecycle workflows.
installPossible values: Integration App version (or template version) associated with this integration.
Usually system-managed for Integration App installs; omit unless you are explicitly controlling versions.
1.2.0Legacy field for distinguishing multiple instances of the same Integration App within a single Celigo environment.
Only set this when a customer is running multiple installations of the same Integration App. Otherwise, omit this field.
instance-2When true, an Integration App update workflow is currently running. Settable via the API, but normally managed by the platform's update workflow.
When true, Celigo Agent actions scoped to this integration are allowed to run automatically without a manual approval step.
Omit unless you are explicitly configuring Celigo Agent behavior for this integration.
Timestamp indicating when the most recent install/update workflow was resolved/completed.
Typically system-managed; omit in normal create/update payloads.
2026-01-15T09:30:00.000ZParent integration ID when this integration was created as a child of another integration. Invalid ids are silently dropped by the server. Omit unless creating/updating child integrations.
6842261335b64c0bcb308e4fDisplay name used for a child integration created during installation.
Omit unless creating/updating child integrations.
West region storeSystem-assigned source identifier for the integration.
Typically system-managed; omit in normal create/update payloads.
6842261335b64c0bcb308e4fIndicates this integration is a sample/demo integration (used for templates/examples).
Typically system-managed.
Indicates whether this integration uses Sync resources.
Typically system-managed.
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:32ZConnections registered to this integration. Managed by the platform when users register connections through the UI or the integration's registerConnection operation; client-sent values are ignored (PUT-verified).
Lookup caches registered to this integration, managed by the platform.
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/integrations/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders",
"description": "Syncs orders, customers, and inventory.",
"mode": "settings",
"sandbox": false,
"_registeredConnectionIds": [
"626168f90b6ef816b50c82d7"
],
"install": [],
"installSteps": [],
"uninstallSteps": [],
"changeEditionSteps": [],
"flowGroupings": [
{
"_id": "69d42d09b9c28ea0b7e7c0c0",
"name": "Order sync"
}
],
"apiGroupings": [],
"createdAt": "2025-06-05T23:19:47.141Z",
"lastModified": "2026-05-02T01:02:27.378Z"
}Replaces the integration's mutable fields. Send the full object -- omitted fields revert to defaults. GET the integration first, modify the fields you need, then PUT back. For partial updates to settings, flowGroupings, or apiGroupings, prefer PATCH with JSON Patch instead.
Integration id.
6842261335b64c0bcb308e4fFields that can be sent when creating or updating an integration.
Human-readable name for the integration.
Use a short, descriptive label that helps users identify the integration in the UI.
Shopify → NetSuite OrdersOptional description of the integration's purpose and behavior.
Helpful for documentation, onboarding, and clarifying what the integration does.
Long-form README content for the integration (typically Markdown).
Use this to provide setup instructions, prerequisites, and operational notes.
Integration App (connector) identifier when this integration is based on an installed Integration App.
If you are not working with an Integration App installation, omit this field.
5b3c8f9a2e1d4c0011223344Template identifier used to create/initialize this integration (commonly for Integration Apps).
Omit unless you are creating/updating an integration from a template.
5c1a7b8d4f2e6a0011556677Integration App lifecycle mode.
Use this only when dealing with Integration App lifecycle workflows.
installPossible values: Integration App version (or template version) associated with this integration.
Usually system-managed for Integration App installs; omit unless you are explicitly controlling versions.
1.2.0Legacy field for distinguishing multiple instances of the same Integration App within a single Celigo environment.
Only set this when a customer is running multiple installations of the same Integration App. Otherwise, omit this field.
instance-2When true, an Integration App update workflow is currently running. Settable via the API, but normally managed by the platform's update workflow.
When true, Celigo Agent actions scoped to this integration are allowed to run automatically without a manual approval step.
Omit unless you are explicitly configuring Celigo Agent behavior for this integration.
Timestamp indicating when the most recent install/update workflow was resolved/completed.
Typically system-managed; omit in normal create/update payloads.
2026-01-15T09:30:00.000ZParent integration ID when this integration was created as a child of another integration. Invalid ids are silently dropped by the server. Omit unless creating/updating child integrations.
6842261335b64c0bcb308e4fDisplay name used for a child integration created during installation.
Omit unless creating/updating child integrations.
West region storeSystem-assigned source identifier for the integration.
Typically system-managed; omit in normal create/update payloads.
6842261335b64c0bcb308e4fIndicates this integration is a sample/demo integration (used for templates/examples).
Typically system-managed.
Indicates whether this integration uses Sync resources.
Typically system-managed.
Integration updated successfully.
Integration object as returned by the API.
Human-readable name for the integration.
Use a short, descriptive label that helps users identify the integration in the UI.
Shopify → NetSuite OrdersOptional description of the integration's purpose and behavior.
Helpful for documentation, onboarding, and clarifying what the integration does.
Long-form README content for the integration (typically Markdown).
Use this to provide setup instructions, prerequisites, and operational notes.
Integration App (connector) identifier when this integration is based on an installed Integration App.
If you are not working with an Integration App installation, omit this field.
5b3c8f9a2e1d4c0011223344Template identifier used to create/initialize this integration (commonly for Integration Apps).
Omit unless you are creating/updating an integration from a template.
5c1a7b8d4f2e6a0011556677Integration App lifecycle mode.
Use this only when dealing with Integration App lifecycle workflows.
installPossible values: Integration App version (or template version) associated with this integration.
Usually system-managed for Integration App installs; omit unless you are explicitly controlling versions.
1.2.0Legacy field for distinguishing multiple instances of the same Integration App within a single Celigo environment.
Only set this when a customer is running multiple installations of the same Integration App. Otherwise, omit this field.
instance-2When true, an Integration App update workflow is currently running. Settable via the API, but normally managed by the platform's update workflow.
When true, Celigo Agent actions scoped to this integration are allowed to run automatically without a manual approval step.
Omit unless you are explicitly configuring Celigo Agent behavior for this integration.
Timestamp indicating when the most recent install/update workflow was resolved/completed.
Typically system-managed; omit in normal create/update payloads.
2026-01-15T09:30:00.000ZParent integration ID when this integration was created as a child of another integration. Invalid ids are silently dropped by the server. Omit unless creating/updating child integrations.
6842261335b64c0bcb308e4fDisplay name used for a child integration created during installation.
Omit unless creating/updating child integrations.
West region storeSystem-assigned source identifier for the integration.
Typically system-managed; omit in normal create/update payloads.
6842261335b64c0bcb308e4fIndicates this integration is a sample/demo integration (used for templates/examples).
Typically system-managed.
Indicates whether this integration uses Sync resources.
Typically system-managed.
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:32ZConnections registered to this integration. Managed by the platform when users register connections through the UI or the integration's registerConnection operation; client-sent values are ignored (PUT-verified).
Lookup caches registered to this integration, managed by the platform.
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.
PUT /v1/integrations/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 181
{
"name": "Shopify → NetSuite Orders",
"description": "Syncs orders, customers, and inventory between Shopify and NetSuite.",
"mode": "settings",
"flowGroupings": [
{
"name": "Order sync"
}
]
}{
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders",
"description": "Syncs orders, customers, and inventory between Shopify and NetSuite.",
"mode": "settings",
"sandbox": false,
"_registeredConnectionIds": [
"626168f90b6ef816b50c82d7"
],
"install": [],
"installSteps": [],
"uninstallSteps": [],
"changeEditionSteps": [],
"flowGroupings": [
{
"_id": "69d42d09b9c28ea0b7e7c0c0",
"name": "Order sync"
}
],
"apiGroupings": [],
"createdAt": "2025-06-05T23:19:47.141Z",
"lastModified": "2026-06-09T17:32:31.412Z"
}Deletes an integration. The integration is soft-deleted and retained in the recycle bin for 30 days before permanent removal.
Integration id.
6842261335b64c0bcb308e4fintegration deleted 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.
The resource has dependents that must be deleted first. Each entry
in the errors array names one blocking resource.
DELETE /v1/integrations/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Partially updates an integration using a JSON Patch document (RFC 6902). Only the replace operation is supported, and only on the following whitelisted paths:
/settings
Integration settings object
/flowGroupings
Flow grouping configuration
/apiGroupings
API grouping configuration
All other paths are rejected with 422.
Integration id.
6842261335b64c0bcb308e4fA 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.
Integration 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/integrations/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 68
[
{
"op": "replace",
"path": "/settings",
"value": {
"region": "us-west-2"
}
}
]No content
Creates a copy of an existing integration. Supports optionally remapping referenced connections (via connectionMap).
The unique identifier of the integration to clone
69680d7111d1437fbcbce534Request body for cloning an integration.
Name for the cloned integration. If omitted, the server generates "Clone - ".
Clone - Integration 1Description for the cloned integration.
Cloned copy of the Shopify to NetSuite orders integration.Target environment _id. When provided, the clone is created in the specified environment instead of the current one. Use GET /v1/environments to list available environments and their _ids. Omit to clone within the same environment.
67b123456789abcdef012345Integration cloned successfully
Response body for a clone operation. Some clone endpoints return the cloned resource, while others may return a list of related created resources.
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[].
Not found. The requested resource does not exist or is not visible to the caller.
POST /v1/integrations/{_id}/clone HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 163
{
"_envId": "67b123456789abcdef012345",
"connectionMap": {
"626168f90b6ef816b50c82d7": "64a1234567890abcdef12345",
"6553ebdeda62bb22e7fa81ff": "64a1234567890abcdef12346"
}
}[
{
"model": "Integration",
"_id": "68f52162f00a35a1b26eaafb",
"name": "Clone - Shopify → NetSuite Orders"
}
]Returns a preview of the resources that would be created by cloning the specified integration. The response includes the integration and all transitive dependencies — flows, connections, exports, imports, scripts, async helpers, lookup caches, and tools. No resources are created by this endpoint.
The unique identifier of the integration to preview cloning
69680d7111d1437fbcbce534Clone preview retrieved successfully
Preview of the resources that would be created by a clone operation.
Each object in the objects array represents a resource that will be
cloned, including the target resource and all transitive dependencies
(connections, scripts, exports, imports, etc.).
Whether the clone requires a stack (connector-level) environment to proceed.
The stack id associated with the resource, or null if no stack is involved.
5f8d43a1b9e5a80011a35f2cThe _id is not a valid ObjectId.
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/integrations/{_id}/clone/preview HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"objects": [
{
"model": "Integration",
"doc": {
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders"
}
},
{
"model": "Flow",
"doc": {
"_id": "69f54d6b7009ea11abad707a",
"name": "Shopify orders → NetSuite",
"_integrationId": "6842261335b64c0bcb308e4f"
}
},
{
"model": "Export",
"doc": {
"_id": "69f54d6a3469e3f5597848a1",
"name": "Shopify new orders",
"_connectionId": "626168f90b6ef816b50c82d7"
}
},
{
"model": "Import",
"doc": {
"_id": "69f54d6c1e7f3a22cc7848b2",
"name": "NetSuite sales orders",
"_connectionId": "6553ebdeda62bb22e7fa81ff"
}
},
{
"model": "Connection",
"doc": {
"_id": "626168f90b6ef816b50c82d7",
"name": "Shopify storefront",
"type": "http"
}
},
{
"model": "Tool",
"doc": {
"_id": "69d462d5b9c28ea0b7f82522",
"name": "Get Shopify Order",
"_integrationId": "6842261335b64c0bcb308e4f"
}
}
],
"stackRequired": false,
"_stackId": null
}Returns every revision entry (snapshots, pulls, reverts) for the integration, newest first. An integration with no revision history returns an empty response (204), not [].
Integration id.
6842261335b64c0bcb308e4fRevision history, newest first.
List of revisions for an integration, newest first. Empty history returns
an empty response rather than [].
Revision id.
6a28d2af6d42eb08f8e863e7Id of the integration this revision belongs to.
6842261335b64c0bcb308e4fFor pull / revert revisions, the id of the source integration the changes originated from.
For snapshot revisions this equals _integrationId.
6842261335b64c0bcb308e4fEnvironment id of the source integration.
67b123456789abcdef012345Display name of the source integration at revision time (frozen copy).
Shopify → NetSuite OrdersRevision kind.
Lifecycle status. completed revisions are terminal; inprogress (pull/revert) revisions can
be diffed and either applied or canceled. failed revisions surfaced an error mid-process;
canceled revisions were aborted before apply.
Human-entered label describing what the revision captures.
Stable baseline before deploying v2Content hash of the integration state prior to this revision.
34b7ae8d56563e242bc0bd42fd28874442657e58Transaction hash of the revision write. Present on pull and revert revisions; absent on
plain snapshots.
a1f3c7e90b2d4856ff19c0e7a3b5d28f4c6e0179Content hash of the integration state after the revision was applied. Present on pull and
revert revisions.
7d9e2b4a1c3f5068ab82d4e0fc16937255ab8c40For revert revisions, the id of the target revision being reverted to.
6a28d2af6d42eb08f8e863e7Content hash of the revision being reverted to — echoes beforeRevisionHash of the
_revertToRevisionId revision.
34b7ae8d56563e242bc0bd42fd28874442657e58User id of the creator.
624774a6a7574d3ed9f9a5ccWhen the revision was created.
2026-06-10T02:57:51.483ZLast update time of the revision record.
2026-06-10T02:57:51.483ZNo revisions exist for this integration.
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/integrations/{_id}/revisions HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "6a28d2af6d42eb08f8e863e7",
"type": "snapshot",
"status": "completed",
"description": "Stable baseline before deploying v2",
"_integrationId": "6842261335b64c0bcb308e4f",
"_fromIntegrationId": "6842261335b64c0bcb308e4f",
"fromIntegrationName": "Shopify → NetSuite Orders",
"beforeRevisionHash": "34b7ae8d56563e242bc0bd42fd28874442657e58",
"sandbox": false,
"_createdByUserId": "624774a6a7574d3ed9f9a5cc",
"installSteps": [],
"createdAt": "2026-06-10T02:57:51.483Z",
"lastModified": "2026-06-10T02:57:51.483Z"
}
]Returns the full revision record. The list endpoint already surfaces every field, so this is primarily useful when you have a _revisionId in hand (e.g. from a webhook, audit log, or external reference) and want to verify state without re-listing.
Integration id.
6842261335b64c0bcb308e4fRevision id.
6a28d2af6d42eb08f8e863e7Revision record.
Integration Lifecycle Management (ILM) revision entry. Revisions capture point-in-time state of an integration and drive snapshot, pull, and revert workflows across environments.
Revision id.
6a28d2af6d42eb08f8e863e7Id of the integration this revision belongs to.
6842261335b64c0bcb308e4fFor pull / revert revisions, the id of the source integration the changes originated from.
For snapshot revisions this equals _integrationId.
6842261335b64c0bcb308e4fEnvironment id of the source integration.
67b123456789abcdef012345Display name of the source integration at revision time (frozen copy).
Shopify → NetSuite OrdersRevision kind.
Lifecycle status. completed revisions are terminal; inprogress (pull/revert) revisions can
be diffed and either applied or canceled. failed revisions surfaced an error mid-process;
canceled revisions were aborted before apply.
Human-entered label describing what the revision captures.
Stable baseline before deploying v2Content hash of the integration state prior to this revision.
34b7ae8d56563e242bc0bd42fd28874442657e58Transaction hash of the revision write. Present on pull and revert revisions; absent on
plain snapshots.
a1f3c7e90b2d4856ff19c0e7a3b5d28f4c6e0179Content hash of the integration state after the revision was applied. Present on pull and
revert revisions.
7d9e2b4a1c3f5068ab82d4e0fc16937255ab8c40For revert revisions, the id of the target revision being reverted to.
6a28d2af6d42eb08f8e863e7Content hash of the revision being reverted to — echoes beforeRevisionHash of the
_revertToRevisionId revision.
34b7ae8d56563e242bc0bd42fd28874442657e58User id of the creator.
624774a6a7574d3ed9f9a5ccWhen the revision was created.
2026-06-10T02:57:51.483ZLast update time of the revision record.
2026-06-10T02:57:51.483ZUnauthorized. 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/integrations/{_id}/revisions/{_revisionId} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"_id": "6a28d2af6d42eb08f8e863e7",
"type": "snapshot",
"status": "completed",
"description": "Stable baseline before deploying v2",
"_integrationId": "6842261335b64c0bcb308e4f",
"_fromIntegrationId": "6842261335b64c0bcb308e4f",
"fromIntegrationName": "Shopify → NetSuite Orders",
"beforeRevisionHash": "34b7ae8d56563e242bc0bd42fd28874442657e58",
"sandbox": false,
"_createdByUserId": "624774a6a7574d3ed9f9a5cc",
"installSteps": [],
"createdAt": "2026-06-10T02:57:51.483Z",
"lastModified": "2026-06-10T02:57:51.483Z"
}Takes a point-in-time snapshot of the integration's current state and writes it to the revision history. The returned revision has type: snapshot and status: completed immediately -- snapshots are synchronous and do not require an apply step. This is the only revision type that can be created via the public API; pull and revert revisions require the Celigo UI.
Integration id.
6842261335b64c0bcb308e4fRequest body for POST /v1/integrations/{_id}/revisions/create. Creates a snapshot revision of
the integration's current state.
Human-readable label shown in the Revisions tab. Required — the UI enforces a non-empty value and so does the API.
Stable baseline before deploying v2Snapshot revision created.
Integration Lifecycle Management (ILM) revision entry. Revisions capture point-in-time state of an integration and drive snapshot, pull, and revert workflows across environments.
Revision id.
6a28d2af6d42eb08f8e863e7Id of the integration this revision belongs to.
6842261335b64c0bcb308e4fFor pull / revert revisions, the id of the source integration the changes originated from.
For snapshot revisions this equals _integrationId.
6842261335b64c0bcb308e4fEnvironment id of the source integration.
67b123456789abcdef012345Display name of the source integration at revision time (frozen copy).
Shopify → NetSuite OrdersRevision kind.
Lifecycle status. completed revisions are terminal; inprogress (pull/revert) revisions can
be diffed and either applied or canceled. failed revisions surfaced an error mid-process;
canceled revisions were aborted before apply.
Human-entered label describing what the revision captures.
Stable baseline before deploying v2Content hash of the integration state prior to this revision.
34b7ae8d56563e242bc0bd42fd28874442657e58Transaction hash of the revision write. Present on pull and revert revisions; absent on
plain snapshots.
a1f3c7e90b2d4856ff19c0e7a3b5d28f4c6e0179Content hash of the integration state after the revision was applied. Present on pull and
revert revisions.
7d9e2b4a1c3f5068ab82d4e0fc16937255ab8c40For revert revisions, the id of the target revision being reverted to.
6a28d2af6d42eb08f8e863e7Content hash of the revision being reverted to — echoes beforeRevisionHash of the
_revertToRevisionId revision.
34b7ae8d56563e242bc0bd42fd28874442657e58User id of the creator.
624774a6a7574d3ed9f9a5ccWhen the revision was created.
2026-06-10T02:57:51.483ZLast update time of the revision record.
2026-06-10T02:57:51.483ZBad 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[].
Not found. The requested resource does not exist or is not visible to the caller.
POST /v1/integrations/{_id}/revisions/create HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 53
{
"description": "Stable baseline before deploying v2"
}{
"_id": "6a28d2af6d42eb08f8e863e7",
"type": "snapshot",
"status": "completed",
"description": "Stable baseline before deploying v2",
"_integrationId": "6842261335b64c0bcb308e4f",
"_fromIntegrationId": "6842261335b64c0bcb308e4f",
"fromIntegrationName": "Shopify → NetSuite Orders",
"beforeRevisionHash": "34b7ae8d56563e242bc0bd42fd28874442657e58",
"sandbox": false,
"_createdByUserId": "624774a6a7574d3ed9f9a5cc",
"installSteps": [],
"createdAt": "2026-06-10T02:57:51.483Z",
"lastModified": "2026-06-10T02:57:51.483Z"
}Returns the before/after diff for a pull or revert revision. The diff is materialized on pull and revert revisions and is retained on their completed state -- available for both inprogress and completed pull/revert revisions. Snapshot revisions are not diffable (there is no source integration to diff against), and canceled revisions drop their diff.
The response body is a {before, after} envelope where each side is a map keyed by resource type (e.g. flow, export, connection, api, tool) whose values are maps of resourceId to full resource snapshot.
Integration id.
6842261335b64c0bcb308e4fRevision id. Must be a pull or revert revision in inprogress or completed state.
6a28d2af6d42eb08f8e863e7Diff envelope for the pending revision.
Structured before/after diff for a revision. Only available while the revision is in a pending
state (e.g. a queued pull or revert). Completed snapshot revisions are read-only and return
HTTP 400 invalid_revision_state — the diff is computed during the apply window, not retained.
Shape is the platform's internal diff document — a map of resource type → per-resource before/after blocks. Treated as an opaque envelope here; specific field layout is not guaranteed stable across platform versions.
Revision is not in a diffable state. Error code invalid_revision_state. Occurs on
snapshot revisions (no source to diff against), canceled revisions (diff dropped), and
inprogress revisions whose install steps haven't materialized yet.
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/integrations/{_id}/revisions/{_revisionId}/diff HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"before": {
"flow": {
"69f54d6b7009ea11abad707a": {
"name": "Shopify orders → NetSuite",
"disabled": true
}
}
},
"after": {
"flow": {
"69f54d6b7009ea11abad707a": {
"name": "Shopify orders → NetSuite",
"disabled": false
}
}
}
}Returns a per-flow count of currently open (unresolved) errors for every flow in the integration. Flows with zero open errors still appear so callers see the full flow roster; lastErrorAt is only populated when numError > 0. Entries do not contain individual error ids -- to get actionable error records, drill into GET /v1/flows/{_flowId}/{_stepId}/errors for each flow and step.
Integration id.
6842261335b64c0bcb308e4fPer-flow open-error summary.
Per-flow open-error summary for an integration. One entry per flow in the integration; flows with zero open errors still appear so callers see the full roster. Empty integrations (no flows) return HTTP 204 with no body.
Id of the flow these counts apply to.
69497fc443fc1f9a03d31bd9Count of currently open (unresolved) errors on this flow. Only errors within the account's data-retention window are counted — older open errors are excluded.
2Timestamp of the most recent open error on this flow, scoped to
the account's data-retention window. Omitted when numError is 0.
2026-04-12T21:51:39.257ZIntegration has no flows with any reported error state.
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[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/errors HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_flowId": "69497fc443fc1f9a03d31bd9",
"numError": 2,
"lastErrorAt": "2026-04-12T21:51:39.257Z"
},
{
"_flowId": "6949809c3f70c4486d2dae88",
"numError": 0
},
{
"_flowId": "683b8ef5774ae78d3b9b8a89",
"numError": 0
}
]Tags a batch of open errors with an assignee. Errors stay open; this does not resolve or retry them. The email must resolve to a user with access to the account.
Prefer PUT /v1/flows/{_flowId}/{_stepId}/errors/assign instead -- it works with a plain bearer token and requires no extra headers. This integration-level endpoint requires an integrator-ashareid header, and account-owner PATs have no ashare pointing at themselves, so they cannot call it directly.
Integration id.
6842261335b64c0bcb308e4fAccount-share id scoping the request to a specific shared-account context. Only accepted
when the bearer token's user is the sharedWithUser of that ashare. Not required by the
per-step fallback — prefer that endpoint instead.
6798f4dc43db9184f4bc8ee0Request body for PUT /v1/integrations/{_id}/errors/assign. Assigns a batch of open errors —
across any flow in the integration — to a user by email. Errors remain open; only the assignee
tag changes.
Ids of open errors to assign. Obtain from the per-step endpoint
GET /v1/flows/{_flowId}/{_stepId}/errors → each entry's errorId. The integration-level
GET /v1/integrations/{_id}/errors only returns per-flow aggregates (no individual error
ids), so the error ids must come from the per-step endpoint. Platform caps batch size around
~1000; chunk larger sets client-side.
Email of the account user to assign the errors to. Must match an existing user with access to the account; the API does not create users implicitly and rejects unknown emails.
user@example.comErrors assigned. Body echoes which ids were affected.
Echo of the mutation — ids of errors that were reassigned. Mirrors the shape of the per-step
PUT /v1/flows/{_id}/{_stepId}/errors/assign response.
Error ids that were affected by the mutation.
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[].
integrator-ashareid is malformed (not a 24-char hex id). Error code:
invalid_header_value.
Either the integration is unknown, no integrator-ashareid was sent (code: invalid_ref,
message: "Integration not found."), or the header references a share whose sharedWithUser
isn't the bearer token's user (code: access_restricted).
PUT /v1/integrations/{_id}/errors/assign HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 67
{
"errorIds": [
"6044134138",
"6027562904"
],
"email": "user@example.com"
}{
"errorsToReturn": [
"6044134138"
]
}Returns every member of the integration's clone family -- the original plus every clone (recursively, across environments). Used by ILM to decide which integrations can be pull/push sources or targets for the current integration.
This endpoint requires the integrator-ashareid header to establish a shared-account context. For simpler clone-relationship lookups, the integration's own _sourceId field points to the parent it was cloned from, and GET /v1/integrations?_sourceId=<id> lists the children.
Integration id.
6842261335b64c0bcb308e4fAccount-share id that scopes the request to a specific shared-account context. The bearer
token's user must be the sharedWithUser of this ashare.
6798f4dc43db9184f4bc8ee0Clone family members.
Members of an integration's clone family — the original integration plus every clone (including clones of clones, across environments). Used by ILM to decide which integrations can pull from or push to the current one.
Integration id.
6842261335b64c0bcb308e4fDisplay name of the integration.
Shopify → NetSuite OrdersEnvironment id the integration belongs to.
67b123456789abcdef012345Unauthorized. 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[].
Either the integrator-ashareid header is malformed (code: invalid_header_value) or it
was omitted entirely (code: get_not_allowed, "GET resource not allowed for the given
model.").
Integration unknown, or the integrator-ashareid references a share whose sharedWithUser
isn't the bearer token's user (code: access_restricted).
GET /v1/integrations/{_id}/clonefamily HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
integrator-ashareid: 6798f4dc43db9184f4bc8ee0
Accept: */*
[
{
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders"
},
{
"_id": "68f52162f00a35a1b26eaafb",
"name": "Clone - Shopify → NetSuite Orders",
"_envId": "67b123456789abcdef012345"
}
]Returns a bare array of full flow objects for every flow in the integration. Each element is a complete flow resource, the same shape as GET /v1/flows/{_id}.
Integration id.
6842261335b64c0bcb308e4fMaximum number of flow objects to return.
100When true, instance flows generated from abstract (multi-instance) flows are included in the results, which otherwise list only regular and abstract flows.
Array of flow objects.
Bare array of full flow resource objects.
Integration has no flows.
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/integrations/{_id}/flows HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "69f54d6b7009ea11abad707a",
"name": "Shopify orders → NetSuite",
"_integrationId": "6842261335b64c0bcb308e4f",
"disabled": false,
"pageGenerators": [
{
"_exportId": "69f54d6a3469e3f5597848a1"
}
],
"pageProcessors": [
{
"type": "import",
"_importId": "69f54d6c1e7f3a22cc7848b2"
}
],
"createdAt": "2026-05-02T01:03:39.871Z",
"lastModified": "2026-05-02T01:03:39.871Z"
}
]Returns a bare array of full import objects for every import in the integration. Each element is a complete import resource, the same shape as GET /v1/imports/{_id}.
Integration id.
6842261335b64c0bcb308e4fMaximum number of import objects to return. Bug: the server returns N+1 items for a
limit=N value.
100Array of import objects.
Bare array of full import resource objects.
Integration has no imports.
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/integrations/{_id}/imports HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "69f54d6c1e7f3a22cc7848b2",
"name": "NetSuite sales orders",
"_connectionId": "6553ebdeda62bb22e7fa81ff",
"adaptorType": "NetSuiteDistributedImport",
"distributed": true,
"netsuite_da": {
"recordType": "salesorder",
"operation": "add"
},
"createdAt": "2026-05-02T01:03:40.027Z",
"lastModified": "2026-05-02T01:03:40.027Z"
}
]Returns a bare array of full export objects for every export in the integration. Each element is a complete export resource, the same shape as GET /v1/exports/{_id}.
Integration id.
6842261335b64c0bcb308e4fMaximum number of export objects to return. Bug: the server returns N+1 items for a
limit=N value.
100Array of export objects.
Bare array of full export resource objects.
Integration has no exports.
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/integrations/{_id}/exports HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "69f54d6a3469e3f5597848a1",
"name": "Shopify new orders",
"_connectionId": "626168f90b6ef816b50c82d7",
"adaptorType": "HTTPExport",
"http": {
"relativeURI": "/admin/api/2024-04/orders.json",
"method": "GET"
},
"createdAt": "2026-05-02T01:03:38.214Z",
"lastModified": "2026-05-02T01:03:38.214Z"
}
]Returns a bare array of full connection objects for every connection registered to the integration. Each element is a complete connection resource, the same shape as GET /v1/connections/{_id}. Unlike the flows/imports/exports sub-resource endpoints, this endpoint rejects unknown integration ids with a 404.
Integration id.
6842261335b64c0bcb308e4fMaximum number of connection objects to return.
100Array of connection objects.
Bare array of full connection resource objects.
Integration has no connections.
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/integrations/{_id}/connections HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "626168f90b6ef816b50c82d7",
"name": "Shopify storefront",
"type": "http",
"sandbox": false,
"http": {
"formType": "rest",
"mediaType": "json",
"baseURI": "https://celigo-demo.myshopify.com",
"auth": {
"type": "basic"
}
},
"createdAt": "2022-04-21T14:23:53.118Z",
"lastModified": "2026-05-02T01:02:27.378Z"
}
]Returns a bare array of async-helper objects for every async helper registered to the integration. Each element is a complete async-helper resource, the same shape as GET /v1/asynchelpers/{_id}.
Integration id.
6842261335b64c0bcb308e4fArray of async-helper objects.
Bare array of full async-helper resource objects.
Integration has no async helpers.
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/integrations/{_id}/asynchelpers HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "64a1b2c3d4e5f60011223344",
"name": "Salesforce Bulk Query Helper",
"http": {
"submit": {
"sameAsStatus": true
},
"status": {
"_exportId": "63b1c2d3e4f5a60011334455",
"statusPath": "status",
"initialWaitTime": 1,
"pollWaitTime": 4
}
},
"lastModified": "2026-04-15T14:30:15Z"
}
]Returns an array of account-share (ashare) objects for the integration. Each entry describes a user who has been granted access to the integration's owning account, along with their access level and authentication metadata. Unlike other integration sub-resource list endpoints, this always returns an array (an integration with no shares returns []).
Integration id.
6842261335b64c0bcb308e4fArray of account-share objects.
Account shares scoped to the integration.
Ashare id.
6798f4dc43db9184f4bc8ee0When true, the shared user has accepted the invitation.
Access level granted to the user (e.g. administrator, manage, monitor).
administratorWhen true, the account requires SSO for this user.
When true, the account requires MFA for this user.
2025-01-28T15:16:44.327Z2026-05-02T17:02:59.371Z2026-05-02T17:02:59.370ZUnauthorized. 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/integrations/{_id}/ashares HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "6798f4dc43db9184f4bc8ee0",
"accepted": true,
"accessLevel": "administrator",
"accountSSORequired": false,
"accountMFARequired": false,
"isProductionAdmin": true,
"createdAt": "2025-01-28T15:16:44.327Z",
"lastModified": "2026-05-02T17:02:59.371Z",
"lastSignIn": "2026-05-02T17:02:59.370Z",
"sharedWithUser": {
"_id": "624774a6a7574d3ed9f9a5cc",
"email": "admin@example.com",
"name": "Account Admin",
"allowedToResetMFA": false
}
},
{
"_id": "690954729ef09ab572f65e5d",
"accepted": true,
"accessLevel": "monitor",
"accountSSORequired": false,
"accountMFARequired": false,
"createdAt": "2025-11-04T01:18:42.025Z",
"lastModified": "2026-04-09T18:48:15.653Z",
"sharedWithUser": {
"_id": "69095422a6fa76e8c7c170eb",
"email": "contributor@example.com",
"name": "Integration User",
"allowedToResetMFA": false
}
}
]Register a connection to an integration (by path)
Registers a single connection to the integration by specifying the connection id in the URL path. No request body is needed. To unregister, use DELETE on the same path. Alternatively, use PUT /v1/integrations/{_id}/connections/register to register by request body.
Integration id.
6842261335b64c0bcb308e4fConnection id to register.
626168f90b6ef816b50c82d7Connection registered 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[].
Not found. The requested resource does not exist or is not visible to the caller.
PUT /v1/integrations/{_id}/connections/{_connectionId}/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Unregister a connection from an integration
Removes a connection's registration from the integration. This does not delete the connection itself -- it only removes it from the integration's registered-connections list.
Integration id.
6842261335b64c0bcb308e4fConnection id to unregister.
626168f90b6ef816b50c82d7Connection unregistered 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[].
Not found. The requested resource does not exist or is not visible to the caller.
DELETE /v1/integrations/{_id}/connections/{_connectionId}/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Registers a single connection to the integration by passing the connection id in the request body. Alternatively, use PUT /v1/integrations/{_id}/connections/{_connectionId}/register to register by path parameter.
Integration id.
6842261335b64c0bcb308e4fThe id of the connection to register.
626168f90b6ef816b50c82d7Connection registered 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[].
Not found. The requested resource does not exist or is not visible to the caller.
PUT /v1/integrations/{_id}/connections/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 44
{
"_connectionId": "69680d7111d1437fbcbce534"
}No content
Register a lookup cache to an integration (by path)
Registers a single lookup cache to the integration by specifying the lookup cache id in the URL path. No request body is needed. To unregister, use DELETE on the same path. Alternatively, use PUT /v1/integrations/{_id}/lookupcaches/register to register several caches at once by request body.
Registration also adds an entry to the integration's aliases[] when the cache does not already have one: alias is a slug of the cache name (lowercased, whitespace and special characters stripped, _2/_3/… appended on collision) and _lookupCacheId points at the cache. Scripts and hooks use the alias as a stable handle for the cache, and deregistering the cache is blocked until the alias is removed.
Integration id.
6842261335b64c0bcb308e4fLookup cache id to register.
68680d7111d1437fbcbce534Lookup cache registered 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[].
Not found. The requested resource does not exist or is not visible to the caller.
PUT /v1/integrations/{_id}/lookupcaches/{_lookupCacheId}/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Unregister a lookup cache from an integration
Removes a lookup cache's registration from the integration. This does not delete the lookup cache itself — it only removes it from the integration's _registeredLookupCacheIds list. Fails when the cache is not registered on the integration, when a flow step in the integration still references it, or when an alias on the integration (or one of its flows) still points at it — including the alias that registration itself created. Remove the flow-step references and the alias (update the aliases array on the integration or flow) first, then retry.
Integration id.
6842261335b64c0bcb308e4fLookup cache id to unregister.
68680d7111d1437fbcbce534Lookup cache unregistered successfully. No body returned.
No content
The cache is not registered on this integration ("The lookup cache
which you are trying to deregister is not registered on the
integration."), is still referenced by a flow step in the
integration ("The lookup cache is being actively used by a flow
step in this integration..."), or is still referenced by an alias
("The lookup cache is referenced by an alias in this integration.
Remove the alias before deregistering."). Error code: not_allowed
for all three.
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/integrations/{_id}/lookupcaches/{_lookupCacheId}/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Registers one or more lookup caches to the integration, adding them to its _registeredLookupCacheIds list. The request body is a bare JSON array of lookup cache ids; duplicates are collapsed. Alternatively, use PUT /v1/integrations/{_id}/lookupcaches/{_lookupCacheId}/register to register a single cache by path parameter.
Registration also adds an entry to the integration's aliases[] for each newly registered cache that does not already have one: alias is a slug of the cache name (lowercased, whitespace and special characters stripped, _2/_3/… appended on collision) and _lookupCacheId points at the cache. Scripts and hooks use the alias as a stable handle for the cache, and deregistering the cache is blocked until the alias is removed.
Integration id.
6842261335b64c0bcb308e4fLookup cache ids to register.
Lookup caches registered successfully. No body returned.
No content
An entry in the array is not a valid ObjectId.
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.
PUT /v1/integrations/{_id}/lookupcaches/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 55
[
"68680d7111d1437fbcbce534",
"68680d7111d1437fbcbce535"
]No content
Returns structural metadata for the integration and its child integrations. The response includes install steps, flow groupings, API groupings, registered connection ids, uninstall steps, and change-edition steps, plus a childIntegrations array with the same structure for each child. Primarily useful for Integration App integrations that have install/uninstall steps and child integrations.
Integration id.
6842261335b64c0bcb308e4fIntegration tree metadata.
Metadata for the integration itself, including install steps, flow groupings, API groupings, registered connection ids, uninstall steps, and change-edition steps.
Metadata for child integrations (empty array if none).
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/integrations/{_id}/tree/metadata HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"integration": {
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders",
"installSteps": [],
"uninstallSteps": [],
"changeEditionSteps": [],
"flowGroupings": [
{
"_id": "69d42d09b9c28ea0b7e7c0c0",
"name": "Order sync"
}
],
"apiGroupings": [],
"_registeredConnectionIds": [
"626168f90b6ef816b50c82d7"
]
},
"childIntegrations": []
}Resumes a paused Integration App integration. Requires that the integration belongs to an Integration App. No request body is needed.
Integration id.
6842261335b64c0bcb308e4fIntegration resumed 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.
Integration does not belong to an Integration App. Error code: invalid_ref, message:
"doesnot belongs to any Integration App."
PUT /v1/integrations/{_id}/resume HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Triggers an edition change for an Integration App integration that has a changeEdition function configured. Requires the integration to belong to an Integration App with edition support.
Integration id.
6842261335b64c0bcb308e4fEdition change initiated 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.
Integration does not belong to an Integration App with changeEdition support. Error code:
invalid_integration_app.
POST /v1/integrations/{_id}/changeEdition HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Initializes a child integration under an Integration App parent. Requires the parent integration to belong to an Integration App with an init script configured.
Integration id (the parent Integration App integration).
6842261335b64c0bcb308e4fChild integration initialized 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.
Integration App does not have a valid init script. Error code: invalid_ref, message:
"Script fields invalid or not found."
POST /v1/integrations/{_id}/initChild HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Detaches the license from an integration. Idempotent -- calling it on an integration that already has no license attached is a no-op. No request body is needed.
Integration id.
6842261335b64c0bcb308e4fLicense detached (or was already detached). 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[].
Not found. The requested resource does not exist or is not visible to the caller.
PUT /v1/integrations/{_id}/detachLicense HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Returns the catalog of available fields that can be ignored when pulling changes between related integrations. Keys are lowercase resource types (integration, flow, export, import, connection, script, ...); values are arrays of dot-path field names that can be excluded from an ILM pull/revert. The key set is platform-driven — treat the response, not the example list, as the authoritative catalog.
This endpoint requires the integrator-ashareid header to establish a shared-account context. The current ignore configuration lives on the integration's iLMIgnore field (readable via GET /v1/integrations/{_id}); this endpoint only returns the menu of what can be ignored. To change the configuration, PATCH the integration with [{op:"replace", path:"/iLMIgnore", value:{...}}].
Integration id.
6842261335b64c0bcb308e4fAccount-share id that scopes the request to a specific shared-account context. The bearer
token's user must be the sharedWithUser of this ashare.
6798f4dc43db9184f4bc8ee0Available ignore fields per resource type.
Catalog of resource-type → field-path lists that are available to be ignored during ILM pulls
and reverts. This is the full menu of what can be configured — to see the current ignore
configuration, read the iLMIgnore field on the integration itself via
GET /v1/integrations/{_id}.
Keys are lowercase resource type names (e.g. integration, flow, export, import,
connection, script). Each value is an array of dot-path strings naming fields that can be
excluded. Only resource types that have configurable ignores appear as keys.
Field paths (dotted) that can be ignored for this resource type.
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[].
Either the integrator-ashareid header is malformed (code: invalid_header_value) or it
was omitted entirely (code: get_not_allowed).
Integration unknown, or the integrator-ashareid references a share whose sharedWithUser
isn't the bearer token's user (code: access_restricted).
GET /v1/integrations/{_id}/iLMIgnore HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
integrator-ashareid: 6798f4dc43db9184f4bc8ee0
Accept: */*
{
"integration": [
"name",
"description"
],
"flow": [
"disabled",
"name"
],
"export": [
"name",
"http.body"
]
}Packages the integration as an installable template and returns a signed S3 URL where the template .zip can be downloaded. The URL is pre-signed and short-lived (it expires shortly after issuance), so fetch the file promptly after calling this endpoint.
The downloaded .zip is the same artifact used to install the integration as a template into another account.
Integration id.
6842261335b64c0bcb308e4fSigned download URL for the integration template zip.
Pre-signed, short-lived S3 URL to download the template .zip.
S3 object key for the generated template .zip.
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/integrations/{_id}/template HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"signedURL": "https://integrator-templates.s3.us-east-1.amazonaws.com/6842261335b64c0bcb308e4f.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=b117bf598b5535ed024cdbdfec756172f386fd39ad4e4536e40e5efbbf4ff52a",
"key": "6842261335b64c0bcb308e4f.zip"
}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. An empty object {} means no other resources depend on the target (also returned for a well-formatted but nonexistent id).
Resource ID.
6842261335b64c0bcb308e4fDependency 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/integrations/{_id}/dependencies HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{}Last updated
Was this helpful?