For the complete documentation index, see llms.txt. This page is also available as Markdown.

Templates

Templates are pre-built integration configurations that Partners publish to the Celigo marketplace for other users to install.

The template lifecycle is: create → upload zip (via GET /v1/s3SignedURL) → publish.

All endpoints require a Partner account — non-partner callers receive 403 access_restricted.

Template schema

List templates

get
/v1/templates

Returns all templates owned by the authenticated Partner account. The response is a flat JSON array with no pagination.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
limitinteger · min: 1Optional

Maximum number of records to return per page.

Example: 100
afterstringOptional

Opaque cursor for forward pagination. Pass the value from the Link response header (rel="next") to fetch the next page.

Responses
200

Array of template resources.

application/json
get/v1/templates
GET /v1/templates HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
  {
    "_id": "67ffe71a4432714ded99e81b",
    "name": "Salesforce to NetSuite sync",
    "description": "Bi-directional sync of contacts between Salesforce and NetSuite.",
    "websiteURL": "https://example.com/templates/sf-ns",
    "contactEmail": "partner@example.com",
    "published": true,
    "lastModified": "2026-05-05T17:09:48.338Z",
    "applications": [
      "salesforce",
      "netsuite"
    ],
    "free": false,
    "numInstalls": 42
  },
  {
    "_id": "68a2b3c4d5e6f70089012345",
    "name": "Shopify order import",
    "lastModified": "2026-04-20T10:15:00.000Z",
    "applications": [
      "shopify"
    ],
    "free": false,
    "numInstalls": 0
  }
]

Create a template

post
/v1/templates

Creates a new integration template. Only name is required; all other fields are optional. Upload a zip via GET /v1/s3SignedURL before attempting to publish.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body

Request body for creating or updating a template. name is always required, even on PUT. published can only be set to true after uploading a template zip via GET /v1/s3SignedURL.

namestring · max: 100Required

Display name of the template.

Example: Salesforce to NetSuite sync
descriptionstringOptional

Longer description shown in the marketplace.

Example: Bi-directional sync of contacts between Salesforce and NetSuite.
imageURLstringOptional

URL of the template's marketplace image. Send an empty string to clear it.

Example: https://example.com/images/sf-ns.png
websiteURLstringOptional

URL to the partner's website or template landing page. Send an empty string to clear it.

Example: https://example.com/templates/sf-ns
contactEmailstringOptional

Contact email(s) for template support — a single address or a comma-separated list of addresses.

Example: partner@example.com
publishedbooleanOptional

Set to true to publish the template to the marketplace (requires a zip upload first). Set to false to unpublish.

applicationsstring[]Optional

Application identifiers to associate with this template. Values may be application slugs (e.g. salesforce) or Mongo ObjectIds.

Responses
201

Template created.

application/json

A template resource as returned by the API.

Fields that are false or empty may be omitted from the response (e.g. published is omitted when the template is unpublished, imageURL is omitted when not set).

_idstring · objectIdRead-onlyRequired

Unique identifier for the resource. Format is a 24-character hexadecimal string.

Example: 5f8d43a1b9e5a80011a35f2c
createdAtstring · date-timeRead-onlyOptional

Timestamp when the resource was created. Set automatically and cannot be modified.

Example: 2023-04-01T09:15:32Z
lastModifiedstring · date-timeRead-onlyRequired

Timestamp when the resource was last updated. Changes whenever any property is modified.

Example: 2023-04-15T14:30:15Z
deletedAtstring · nullableRead-onlyOptional

Timestamp when the resource was soft-deleted. When null or absent, the resource is active.

Example: 2023-05-20T11:45:32Z
namestring · max: 100Required

Display name of the template.

Example: Salesforce to NetSuite sync
descriptionstringOptional

Longer description shown in the marketplace.

Example: Bi-directional sync of contacts between Salesforce and NetSuite.
imageURLstringOptional

URL of the template's marketplace image. Omitted when never set; may be an empty string when the field was cleared.

Example: https://example.com/images/sf-ns.png
websiteURLstringOptional

URL to the partner's website or template landing page. May be an empty string when the field was cleared; legacy values may lack a scheme (e.g. www.example.com).

Example: https://example.com/templates/sf-ns
contactEmailstringOptional

Contact email(s) for template support — a single address or a comma-separated list of addresses.

Example: partner@example.com
publishedbooleanOptional

Whether the template is published to the marketplace. Omitted from the response when false. Can only be set to true after a template zip file has been uploaded via GET /v1/s3SignedURL.

applicationsstring[]Optional

Application identifiers associated with this template. Values may be application slugs (e.g. salesforce) or Mongo ObjectIds.

freebooleanRead-onlyOptional

When true, the template is free to install with no license requirement.

numInstallsintegerRead-onlyOptional

Number of times this template has been installed.

Example: 42
post/v1/templates
POST /v1/templates HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 38

{
  "name": "Salesforce to NetSuite sync"
}
{
  "_id": "68a2b3c4d5e6f70089012345",
  "name": "Salesforce to NetSuite sync",
  "lastModified": "2026-05-16T02:33:22.573Z",
  "applications": [],
  "free": false,
  "numInstalls": 0
}

Get a template

get
/v1/templates/{_id}

Returns a single template by ID.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
_idstring · objectIdRequiredExample: 67ffe71a4432714ded99e81b
Responses
200

The template resource.

application/json

A template resource as returned by the API.

Fields that are false or empty may be omitted from the response (e.g. published is omitted when the template is unpublished, imageURL is omitted when not set).

_idstring · objectIdRead-onlyRequired

Unique identifier for the resource. Format is a 24-character hexadecimal string.

Example: 5f8d43a1b9e5a80011a35f2c
createdAtstring · date-timeRead-onlyOptional

Timestamp when the resource was created. Set automatically and cannot be modified.

Example: 2023-04-01T09:15:32Z
lastModifiedstring · date-timeRead-onlyRequired

Timestamp when the resource was last updated. Changes whenever any property is modified.

Example: 2023-04-15T14:30:15Z
deletedAtstring · nullableRead-onlyOptional

Timestamp when the resource was soft-deleted. When null or absent, the resource is active.

Example: 2023-05-20T11:45:32Z
namestring · max: 100Required

Display name of the template.

Example: Salesforce to NetSuite sync
descriptionstringOptional

Longer description shown in the marketplace.

Example: Bi-directional sync of contacts between Salesforce and NetSuite.
imageURLstringOptional

URL of the template's marketplace image. Omitted when never set; may be an empty string when the field was cleared.

Example: https://example.com/images/sf-ns.png
websiteURLstringOptional

URL to the partner's website or template landing page. May be an empty string when the field was cleared; legacy values may lack a scheme (e.g. www.example.com).

Example: https://example.com/templates/sf-ns
contactEmailstringOptional

Contact email(s) for template support — a single address or a comma-separated list of addresses.

Example: partner@example.com
publishedbooleanOptional

Whether the template is published to the marketplace. Omitted from the response when false. Can only be set to true after a template zip file has been uploaded via GET /v1/s3SignedURL.

applicationsstring[]Optional

Application identifiers associated with this template. Values may be application slugs (e.g. salesforce) or Mongo ObjectIds.

freebooleanRead-onlyOptional

When true, the template is free to install with no license requirement.

numInstallsintegerRead-onlyOptional

Number of times this template has been installed.

Example: 42
get/v1/templates/{_id}
GET /v1/templates/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "_id": "67ffe71a4432714ded99e81b",
  "name": "Salesforce to NetSuite sync",
  "description": "Bi-directional sync of contacts between Salesforce and NetSuite.",
  "websiteURL": "https://example.com/templates/sf-ns",
  "contactEmail": "partner@example.com",
  "published": true,
  "lastModified": "2026-05-05T17:09:48.338Z",
  "applications": [
    "salesforce",
    "netsuite"
  ],
  "free": false,
  "numInstalls": 42
}

Update a template

put
/v1/templates/{_id}

Replaces the template's fields with the values in the request body. Omitted optional fields retain their current values. name is required on every PUT, even if unchanged.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
_idstring · objectIdRequiredExample: 67ffe71a4432714ded99e81b
Body

Request body for creating or updating a template. name is always required, even on PUT. published can only be set to true after uploading a template zip via GET /v1/s3SignedURL.

namestring · max: 100Required

Display name of the template.

Example: Salesforce to NetSuite sync
descriptionstringOptional

Longer description shown in the marketplace.

Example: Bi-directional sync of contacts between Salesforce and NetSuite.
imageURLstringOptional

URL of the template's marketplace image. Send an empty string to clear it.

Example: https://example.com/images/sf-ns.png
websiteURLstringOptional

URL to the partner's website or template landing page. Send an empty string to clear it.

Example: https://example.com/templates/sf-ns
contactEmailstringOptional

Contact email(s) for template support — a single address or a comma-separated list of addresses.

Example: partner@example.com
publishedbooleanOptional

Set to true to publish the template to the marketplace (requires a zip upload first). Set to false to unpublish.

applicationsstring[]Optional

Application identifiers to associate with this template. Values may be application slugs (e.g. salesforce) or Mongo ObjectIds.

Responses
200

Updated template.

application/json

A template resource as returned by the API.

Fields that are false or empty may be omitted from the response (e.g. published is omitted when the template is unpublished, imageURL is omitted when not set).

_idstring · objectIdRead-onlyRequired

Unique identifier for the resource. Format is a 24-character hexadecimal string.

Example: 5f8d43a1b9e5a80011a35f2c
createdAtstring · date-timeRead-onlyOptional

Timestamp when the resource was created. Set automatically and cannot be modified.

Example: 2023-04-01T09:15:32Z
lastModifiedstring · date-timeRead-onlyRequired

Timestamp when the resource was last updated. Changes whenever any property is modified.

Example: 2023-04-15T14:30:15Z
deletedAtstring · nullableRead-onlyOptional

Timestamp when the resource was soft-deleted. When null or absent, the resource is active.

Example: 2023-05-20T11:45:32Z
namestring · max: 100Required

Display name of the template.

Example: Salesforce to NetSuite sync
descriptionstringOptional

Longer description shown in the marketplace.

Example: Bi-directional sync of contacts between Salesforce and NetSuite.
imageURLstringOptional

URL of the template's marketplace image. Omitted when never set; may be an empty string when the field was cleared.

Example: https://example.com/images/sf-ns.png
websiteURLstringOptional

URL to the partner's website or template landing page. May be an empty string when the field was cleared; legacy values may lack a scheme (e.g. www.example.com).

Example: https://example.com/templates/sf-ns
contactEmailstringOptional

Contact email(s) for template support — a single address or a comma-separated list of addresses.

Example: partner@example.com
publishedbooleanOptional

Whether the template is published to the marketplace. Omitted from the response when false. Can only be set to true after a template zip file has been uploaded via GET /v1/s3SignedURL.

applicationsstring[]Optional

Application identifiers associated with this template. Values may be application slugs (e.g. salesforce) or Mongo ObjectIds.

freebooleanRead-onlyOptional

When true, the template is free to install with no license requirement.

numInstallsintegerRead-onlyOptional

Number of times this template has been installed.

Example: 42
put/v1/templates/{_id}
PUT /v1/templates/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 144

{
  "name": "Salesforce to NetSuite sync",
  "description": "Updated description for the marketplace listing.",
  "contactEmail": "new-contact@example.com"
}
{
  "_id": "67ffe71a4432714ded99e81b",
  "name": "Salesforce to NetSuite sync",
  "description": "Updated description for the marketplace listing.",
  "websiteURL": "https://example.com/templates/sf-ns",
  "contactEmail": "new-contact@example.com",
  "published": true,
  "lastModified": "2026-06-09T18:21:05.114Z",
  "applications": [
    "salesforce",
    "netsuite"
  ],
  "free": false,
  "numInstalls": 42
}

Delete a template

delete
/v1/templates/{_id}

Permanently deletes a template.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
_idstring · objectIdRequiredExample: 67ffe71a4432714ded99e81b
Responses
204

Template deleted.

No content

delete/v1/templates/{_id}
DELETE /v1/templates/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*

No content

Install an integration from a template

post
/v1/integrations/template/{_id}

Installs an integration from a published template. The caller provides a connectionMap that maps each template-defined connection ID to an actual connection ID in the caller's account. Every template connection must appear as a key in connectionMap.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
_idstring · objectIdRequired

The template ID to install from.

Example: 67ffe71a4432714ded99e81b
Body

Connection mapping from template connection IDs to the caller's real connection IDs.

Responses
200

Template installed successfully.

application/json

The created integration and related resources.

Other propertiesanyOptional
post/v1/integrations/template/{_id}
POST /v1/integrations/template/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 127

{
  "connectionMap": {
    "61f92026dd053843b5d72350": "64a1234567890abcdef12345",
    "61f92026dd053843b5d72351": "64a1234567890abcdef12346"
  }
}
{
  "_integrationId": "6405b9d73496e05ff253d587"
}

Preview a template install from an uploaded zip

get
/v1/integrations/template/preview

Previews the resources that would be created by installing a template from an uploaded zip file. The runKey query parameter ties this request to a previously uploaded zip (obtained from GET /v1/s3SignedURL).

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
runKeystringRequired

The runKey returned by GET /v1/s3SignedURL after uploading the template zip file.

Example: abc123def456
Responses
200

Preview of resources the template would create.

application/json

Preview envelope with resource docs.

Other propertiesanyOptional
get/v1/integrations/template/preview
GET /v1/integrations/template/preview?runKey=abc123def456 HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "stackRequired": false,
  "objects": [
    {
      "model": "Integration",
      "doc": {
        "_id": "6405b9d73496e05ff253d587",
        "name": "Shopify - NetSuite",
        "description": "Sync Abandoned Checkouts, Collects, … between Shopify and NetSuite."
      }
    },
    {
      "model": "Connection",
      "doc": {
        "_id": "61f92026dd053843b5d72350",
        "type": "netsuite",
        "name": "NetSuite Connection",
        "netsuite": {
          "wsdlVersion": "2020.2",
          "concurrencyLevel": 1
        }
      }
    }
  ]
}

Install a template from an uploaded zip

post
/v1/integrations/template

Installs a template from a previously uploaded zip file. The runKey in the request body ties this request to the zip upload (obtained from GET /v1/s3SignedURL).

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body

The runKey from the zip upload.

runKeystringRequired

The runKey returned by GET /v1/s3SignedURL after uploading the template zip file.

Example: abc123def456
Responses
200

Template installed from uploaded zip.

application/json

The created integration and related resources.

Other propertiesanyOptional
post/v1/integrations/template
POST /v1/integrations/template HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 25

{
  "runKey": "abc123def456"
}
{
  "_integrationId": "6405b9d73496e05ff253d587"
}

Last updated

Was this helpful?