> For the complete documentation index, see [llms.txt](https://developer.celigo.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.celigo.com/api/api-reference/connectors.md).

# Connectors

API for managing Integration App connectors and their licenses.

**These endpoints are only available to Celigo Partners.**

Connectors are packaged integration applications (e.g. "Shopify – NetSuite Connector") that Partners publish to the Celigo marketplace. Each connector has an install base, license management, and update push capabilities.

### Connector schema

## The Connector object

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"components":{"schemas":{"Connector":{"type":"object","description":"Connector object as returned by the API. Also used as the request body for create and update; `readOnly` fields are server-managed and ignored on writes.","required":["_id","_userId","name","handle"],"allOf":[{"$ref":"#/components/schemas/ConnectorBase"},{"$ref":"#/components/schemas/ResourceResponse"},{"type":"object","properties":{"_userId":{"type":"string","format":"objectId","readOnly":true,"description":"User who published the connector."},"handle":{"type":"string","readOnly":true,"description":"Auto-generated short unique slug for the connector."},"numInstalls":{"type":"integer","readOnly":true,"description":"Number of active installations of this connector."}}}]},"ConnectorBase":{"type":"object","description":"Writable connector fields shared by the request and response schemas.","properties":{"name":{"type":"string","description":"Display name for the connector, shown on its marketplace listing."},"description":{"type":"string","description":"Summary of what the connector does, shown on its marketplace listing."},"imageURL":{"type":"string","description":"URL of the connector's logo image displayed in the marketplace."},"websiteURL":{"type":"string","description":"URL of the publisher's product or documentation page for the connector."},"contactEmail":{"type":"string","format":"email","description":"Contact email for the connector's publisher."},"published":{"type":"boolean","description":"When true, the connector is visible in the Celigo marketplace."},"managed":{"type":"boolean","description":"When true, the connector is managed by Celigo."},"_integrationId":{"type":"string","format":"objectId","description":"Master integration the connector packages and installs."},"_stackId":{"type":"string","format":"objectId","description":"Stack that hosts the connector's installer and lifecycle functions."},"installerFunction":{"type":"string","description":"Function invoked from the connector's stack when the connector is installed."},"updateFunction":{"type":"string","description":"Function invoked to apply connector updates to existing installations."},"preUninstallFunction":{"type":"string","description":"Function invoked before an installation is uninstalled."},"uninstallerFunction":{"type":"string","description":"Function invoked when an installation is uninstalled."},"externalInstallerFunction":{"type":"string","description":"Function invoked for externally triggered installs (for example, `installConnectorFromExternalApp`)."},"_sharedImportIds":{"type":"array","description":"Imports shared with installations of this connector.","items":{"type":"string","format":"objectId"}},"_sharedExportIds":{"type":"array","description":"Exports shared with installations of this connector.","items":{"type":"string","format":"objectId"}},"_iClientIdMap":{"type":"array","description":"Maps connection types to the iClient credentials connector installations use.","items":{"type":"object","properties":{"_iClientIds":{"type":"array","description":"iClients available for this map entry.","items":{"type":"string","format":"objectId"}},"connection":{"type":"object","description":"Connection criteria this entry applies to.","properties":{"type":{"type":"string","description":"Connection type this entry applies to (e.g. `netsuite`, `http`, `rest`, `salesforce`)."},"assistant":{"type":"string","description":"Assistant (application-specific flavor) this entry applies to, used with generic connection types like `http` or `rest` to scope the entry to one application."}}}}}},"applications":{"type":"array","items":{"type":"string"},"description":"Application slugs (e.g. `netsuite`, `shopify`)."},"trialEnabled":{"type":"boolean","description":"When true, trial licenses are enabled for this connector. Requires\n`trialPeriod` and `_trialLicenseId` to be set."},"trialPeriod":{"type":"integer","description":"Trial period in days. Required when `trialEnabled` is `true`."},"_trialLicenseId":{"type":"string","format":"objectId","description":"License template ID for trials. Required when `trialEnabled`\nis `true`."},"oAuthServerFlow":{"type":"object","description":"OAuth server-flow configuration used by connector installations.","properties":{"_iClientId":{"type":"string","format":"objectId","description":"iClient used for the OAuth server flow."}}},"framework":{"type":"string","enum":["twoDotZero"],"description":"Marks a connector built on the Integration App Framework 2.0. Set to `twoDotZero` for 2.0 connectors and omit for classic connectors; when set, `twoDotZero._integrationId` is required and must match `_integrationId`."},"twoDotZero":{"type":"object","description":"Integration App Framework 2.0 configuration. The server initializes this object (typically as `{\"editions\":[]}`) on classic connectors too, so its presence alone does not imply a 2.0 connector; `_integrationId` is required inside it only when `framework` is `twoDotZero`.","properties":{"_integrationId":{"type":"string","format":"objectId","description":"Master integration this 2.0 connector packages. Must match the connector's top-level `_integrationId`."},"editions":{"type":"array","description":"Editions the connector offers, each bundling the resources an installation receives.","items":{"type":"object","required":["displayName"],"properties":{"displayName":{"type":"string","description":"Edition name shown when choosing an edition during install."},"order":{"type":"integer","description":"Sort position of the edition in the install UI."},"resources":{"$ref":"#/components/schemas/EditionResourceList"},"childResources":{"$ref":"#/components/schemas/EditionResourceList"}}}},"changeEdition":{"type":"object","description":"Hook invoked when an installation switches between editions.","properties":{"function":{"type":"string","description":"Stack function called to migrate an installation between editions."},"_scriptId":{"type":"string","format":"objectId","description":"Script backing the change-edition function."}}},"isParentChild":{"type":"boolean","readOnly":true,"description":"When true, the master integration supports parent-child (multi-store) installs. Computed automatically from the integration; not settable."}}}},"if":{"properties":{"framework":{"const":"twoDotZero"}},"required":["framework"]},"then":{"required":["twoDotZero"],"properties":{"twoDotZero":{"required":["_integrationId"]}}}},"EditionResourceList":{"type":"object","description":"Resource ids bundled into a connector edition.","properties":{"_flowIds":{"type":"array","description":"Flows included in the edition.","items":{"type":"string","format":"objectId"}},"_importIds":{"type":"array","description":"Imports included in the edition.","items":{"type":"string","format":"objectId"}},"_exportIds":{"type":"array","description":"Exports included in the edition.","items":{"type":"string","format":"objectId"}},"_connectionIds":{"type":"array","description":"Connections included in the edition.","items":{"type":"string","format":"objectId"}},"_asyncHelperIds":{"type":"array","description":"Async helpers included in the edition.","items":{"type":"string","format":"objectId"}},"_fileDefinitionIds":{"type":"array","description":"File definitions included in the edition.","items":{"type":"string","format":"objectId"}}}},"ResourceResponse":{"type":"object","description":"Response","properties":{"_id":{"type":"string","format":"objectId","readOnly":true,"description":"Unique identifier for the resource. Format is a 24-character hexadecimal string."},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the resource was created. Set automatically and cannot be modified."},"lastModified":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the resource was last updated. Changes whenever any property is modified."},"deletedAt":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"Timestamp when the resource was soft-deleted. When null or absent, the resource is active."}},"required":["_id"]}}}}
```

## List connectors

> Returns all connectors owned by the authenticated Partner account.\
> \
> \*\*Partner-only endpoint.\*\*

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"Connector":{"type":"object","description":"Connector object as returned by the API. Also used as the request body for create and update; `readOnly` fields are server-managed and ignored on writes.","required":["_id","_userId","name","handle"],"allOf":[{"$ref":"#/components/schemas/ConnectorBase"},{"$ref":"#/components/schemas/ResourceResponse"},{"type":"object","properties":{"_userId":{"type":"string","format":"objectId","readOnly":true,"description":"User who published the connector."},"handle":{"type":"string","readOnly":true,"description":"Auto-generated short unique slug for the connector."},"numInstalls":{"type":"integer","readOnly":true,"description":"Number of active installations of this connector."}}}]},"ConnectorBase":{"type":"object","description":"Writable connector fields shared by the request and response schemas.","properties":{"name":{"type":"string","description":"Display name for the connector, shown on its marketplace listing."},"description":{"type":"string","description":"Summary of what the connector does, shown on its marketplace listing."},"imageURL":{"type":"string","description":"URL of the connector's logo image displayed in the marketplace."},"websiteURL":{"type":"string","description":"URL of the publisher's product or documentation page for the connector."},"contactEmail":{"type":"string","format":"email","description":"Contact email for the connector's publisher."},"published":{"type":"boolean","description":"When true, the connector is visible in the Celigo marketplace."},"managed":{"type":"boolean","description":"When true, the connector is managed by Celigo."},"_integrationId":{"type":"string","format":"objectId","description":"Master integration the connector packages and installs."},"_stackId":{"type":"string","format":"objectId","description":"Stack that hosts the connector's installer and lifecycle functions."},"installerFunction":{"type":"string","description":"Function invoked from the connector's stack when the connector is installed."},"updateFunction":{"type":"string","description":"Function invoked to apply connector updates to existing installations."},"preUninstallFunction":{"type":"string","description":"Function invoked before an installation is uninstalled."},"uninstallerFunction":{"type":"string","description":"Function invoked when an installation is uninstalled."},"externalInstallerFunction":{"type":"string","description":"Function invoked for externally triggered installs (for example, `installConnectorFromExternalApp`)."},"_sharedImportIds":{"type":"array","description":"Imports shared with installations of this connector.","items":{"type":"string","format":"objectId"}},"_sharedExportIds":{"type":"array","description":"Exports shared with installations of this connector.","items":{"type":"string","format":"objectId"}},"_iClientIdMap":{"type":"array","description":"Maps connection types to the iClient credentials connector installations use.","items":{"type":"object","properties":{"_iClientIds":{"type":"array","description":"iClients available for this map entry.","items":{"type":"string","format":"objectId"}},"connection":{"type":"object","description":"Connection criteria this entry applies to.","properties":{"type":{"type":"string","description":"Connection type this entry applies to (e.g. `netsuite`, `http`, `rest`, `salesforce`)."},"assistant":{"type":"string","description":"Assistant (application-specific flavor) this entry applies to, used with generic connection types like `http` or `rest` to scope the entry to one application."}}}}}},"applications":{"type":"array","items":{"type":"string"},"description":"Application slugs (e.g. `netsuite`, `shopify`)."},"trialEnabled":{"type":"boolean","description":"When true, trial licenses are enabled for this connector. Requires\n`trialPeriod` and `_trialLicenseId` to be set."},"trialPeriod":{"type":"integer","description":"Trial period in days. Required when `trialEnabled` is `true`."},"_trialLicenseId":{"type":"string","format":"objectId","description":"License template ID for trials. Required when `trialEnabled`\nis `true`."},"oAuthServerFlow":{"type":"object","description":"OAuth server-flow configuration used by connector installations.","properties":{"_iClientId":{"type":"string","format":"objectId","description":"iClient used for the OAuth server flow."}}},"framework":{"type":"string","enum":["twoDotZero"],"description":"Marks a connector built on the Integration App Framework 2.0. Set to `twoDotZero` for 2.0 connectors and omit for classic connectors; when set, `twoDotZero._integrationId` is required and must match `_integrationId`."},"twoDotZero":{"type":"object","description":"Integration App Framework 2.0 configuration. The server initializes this object (typically as `{\"editions\":[]}`) on classic connectors too, so its presence alone does not imply a 2.0 connector; `_integrationId` is required inside it only when `framework` is `twoDotZero`.","properties":{"_integrationId":{"type":"string","format":"objectId","description":"Master integration this 2.0 connector packages. Must match the connector's top-level `_integrationId`."},"editions":{"type":"array","description":"Editions the connector offers, each bundling the resources an installation receives.","items":{"type":"object","required":["displayName"],"properties":{"displayName":{"type":"string","description":"Edition name shown when choosing an edition during install."},"order":{"type":"integer","description":"Sort position of the edition in the install UI."},"resources":{"$ref":"#/components/schemas/EditionResourceList"},"childResources":{"$ref":"#/components/schemas/EditionResourceList"}}}},"changeEdition":{"type":"object","description":"Hook invoked when an installation switches between editions.","properties":{"function":{"type":"string","description":"Stack function called to migrate an installation between editions."},"_scriptId":{"type":"string","format":"objectId","description":"Script backing the change-edition function."}}},"isParentChild":{"type":"boolean","readOnly":true,"description":"When true, the master integration supports parent-child (multi-store) installs. Computed automatically from the integration; not settable."}}}},"if":{"properties":{"framework":{"const":"twoDotZero"}},"required":["framework"]},"then":{"required":["twoDotZero"],"properties":{"twoDotZero":{"required":["_integrationId"]}}}},"EditionResourceList":{"type":"object","description":"Resource ids bundled into a connector edition.","properties":{"_flowIds":{"type":"array","description":"Flows included in the edition.","items":{"type":"string","format":"objectId"}},"_importIds":{"type":"array","description":"Imports included in the edition.","items":{"type":"string","format":"objectId"}},"_exportIds":{"type":"array","description":"Exports included in the edition.","items":{"type":"string","format":"objectId"}},"_connectionIds":{"type":"array","description":"Connections included in the edition.","items":{"type":"string","format":"objectId"}},"_asyncHelperIds":{"type":"array","description":"Async helpers included in the edition.","items":{"type":"string","format":"objectId"}},"_fileDefinitionIds":{"type":"array","description":"File definitions included in the edition.","items":{"type":"string","format":"objectId"}}}},"ResourceResponse":{"type":"object","description":"Response","properties":{"_id":{"type":"string","format":"objectId","readOnly":true,"description":"Unique identifier for the resource. Format is a 24-character hexadecimal string."},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the resource was created. Set automatically and cannot be modified."},"lastModified":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the resource was last updated. Changes whenever any property is modified."},"deletedAt":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"Timestamp when the resource was soft-deleted. When null or absent, the resource is active."}},"required":["_id"]}},"responses":{"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}}}},"paths":{"/v1/connectors":{"get":{"operationId":"listConnectors","tags":["Connectors"],"summary":"List connectors","description":"Returns all connectors owned by the authenticated Partner account.\n\n**Partner-only endpoint.**","responses":{"200":{"description":"Array of connector resources.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Connector"}}}}},"204":{"description":"No connectors exist."},"401":{"$ref":"#/components/responses/401-unauthorized"}}}}}}
```

## Create a connector

> Creates a new connector (Integration App).\
> \
> \*\*Partner-only endpoint.\*\*

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"Request":{"type":"object","description":"Fields that can be sent when creating or updating a connector. Partner accounts only.","required":["name"],"allOf":[{"$ref":"#/components/schemas/ConnectorBase"}]},"ConnectorBase":{"type":"object","description":"Writable connector fields shared by the request and response schemas.","properties":{"name":{"type":"string","description":"Display name for the connector, shown on its marketplace listing."},"description":{"type":"string","description":"Summary of what the connector does, shown on its marketplace listing."},"imageURL":{"type":"string","description":"URL of the connector's logo image displayed in the marketplace."},"websiteURL":{"type":"string","description":"URL of the publisher's product or documentation page for the connector."},"contactEmail":{"type":"string","format":"email","description":"Contact email for the connector's publisher."},"published":{"type":"boolean","description":"When true, the connector is visible in the Celigo marketplace."},"managed":{"type":"boolean","description":"When true, the connector is managed by Celigo."},"_integrationId":{"type":"string","format":"objectId","description":"Master integration the connector packages and installs."},"_stackId":{"type":"string","format":"objectId","description":"Stack that hosts the connector's installer and lifecycle functions."},"installerFunction":{"type":"string","description":"Function invoked from the connector's stack when the connector is installed."},"updateFunction":{"type":"string","description":"Function invoked to apply connector updates to existing installations."},"preUninstallFunction":{"type":"string","description":"Function invoked before an installation is uninstalled."},"uninstallerFunction":{"type":"string","description":"Function invoked when an installation is uninstalled."},"externalInstallerFunction":{"type":"string","description":"Function invoked for externally triggered installs (for example, `installConnectorFromExternalApp`)."},"_sharedImportIds":{"type":"array","description":"Imports shared with installations of this connector.","items":{"type":"string","format":"objectId"}},"_sharedExportIds":{"type":"array","description":"Exports shared with installations of this connector.","items":{"type":"string","format":"objectId"}},"_iClientIdMap":{"type":"array","description":"Maps connection types to the iClient credentials connector installations use.","items":{"type":"object","properties":{"_iClientIds":{"type":"array","description":"iClients available for this map entry.","items":{"type":"string","format":"objectId"}},"connection":{"type":"object","description":"Connection criteria this entry applies to.","properties":{"type":{"type":"string","description":"Connection type this entry applies to (e.g. `netsuite`, `http`, `rest`, `salesforce`)."},"assistant":{"type":"string","description":"Assistant (application-specific flavor) this entry applies to, used with generic connection types like `http` or `rest` to scope the entry to one application."}}}}}},"applications":{"type":"array","items":{"type":"string"},"description":"Application slugs (e.g. `netsuite`, `shopify`)."},"trialEnabled":{"type":"boolean","description":"When true, trial licenses are enabled for this connector. Requires\n`trialPeriod` and `_trialLicenseId` to be set."},"trialPeriod":{"type":"integer","description":"Trial period in days. Required when `trialEnabled` is `true`."},"_trialLicenseId":{"type":"string","format":"objectId","description":"License template ID for trials. Required when `trialEnabled`\nis `true`."},"oAuthServerFlow":{"type":"object","description":"OAuth server-flow configuration used by connector installations.","properties":{"_iClientId":{"type":"string","format":"objectId","description":"iClient used for the OAuth server flow."}}},"framework":{"type":"string","enum":["twoDotZero"],"description":"Marks a connector built on the Integration App Framework 2.0. Set to `twoDotZero` for 2.0 connectors and omit for classic connectors; when set, `twoDotZero._integrationId` is required and must match `_integrationId`."},"twoDotZero":{"type":"object","description":"Integration App Framework 2.0 configuration. The server initializes this object (typically as `{\"editions\":[]}`) on classic connectors too, so its presence alone does not imply a 2.0 connector; `_integrationId` is required inside it only when `framework` is `twoDotZero`.","properties":{"_integrationId":{"type":"string","format":"objectId","description":"Master integration this 2.0 connector packages. Must match the connector's top-level `_integrationId`."},"editions":{"type":"array","description":"Editions the connector offers, each bundling the resources an installation receives.","items":{"type":"object","required":["displayName"],"properties":{"displayName":{"type":"string","description":"Edition name shown when choosing an edition during install."},"order":{"type":"integer","description":"Sort position of the edition in the install UI."},"resources":{"$ref":"#/components/schemas/EditionResourceList"},"childResources":{"$ref":"#/components/schemas/EditionResourceList"}}}},"changeEdition":{"type":"object","description":"Hook invoked when an installation switches between editions.","properties":{"function":{"type":"string","description":"Stack function called to migrate an installation between editions."},"_scriptId":{"type":"string","format":"objectId","description":"Script backing the change-edition function."}}},"isParentChild":{"type":"boolean","readOnly":true,"description":"When true, the master integration supports parent-child (multi-store) installs. Computed automatically from the integration; not settable."}}}},"if":{"properties":{"framework":{"const":"twoDotZero"}},"required":["framework"]},"then":{"required":["twoDotZero"],"properties":{"twoDotZero":{"required":["_integrationId"]}}}},"EditionResourceList":{"type":"object","description":"Resource ids bundled into a connector edition.","properties":{"_flowIds":{"type":"array","description":"Flows included in the edition.","items":{"type":"string","format":"objectId"}},"_importIds":{"type":"array","description":"Imports included in the edition.","items":{"type":"string","format":"objectId"}},"_exportIds":{"type":"array","description":"Exports included in the edition.","items":{"type":"string","format":"objectId"}},"_connectionIds":{"type":"array","description":"Connections included in the edition.","items":{"type":"string","format":"objectId"}},"_asyncHelperIds":{"type":"array","description":"Async helpers included in the edition.","items":{"type":"string","format":"objectId"}},"_fileDefinitionIds":{"type":"array","description":"File definitions included in the edition.","items":{"type":"string","format":"objectId"}}}},"Connector":{"type":"object","description":"Connector object as returned by the API. Also used as the request body for create and update; `readOnly` fields are server-managed and ignored on writes.","required":["_id","_userId","name","handle"],"allOf":[{"$ref":"#/components/schemas/ConnectorBase"},{"$ref":"#/components/schemas/ResourceResponse"},{"type":"object","properties":{"_userId":{"type":"string","format":"objectId","readOnly":true,"description":"User who published the connector."},"handle":{"type":"string","readOnly":true,"description":"Auto-generated short unique slug for the connector."},"numInstalls":{"type":"integer","readOnly":true,"description":"Number of active installations of this connector."}}}]},"ResourceResponse":{"type":"object","description":"Response","properties":{"_id":{"type":"string","format":"objectId","readOnly":true,"description":"Unique identifier for the resource. Format is a 24-character hexadecimal string."},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the resource was created. Set automatically and cannot be modified."},"lastModified":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the resource was last updated. Changes whenever any property is modified."},"deletedAt":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"Timestamp when the resource was soft-deleted. When null or absent, the resource is active."}},"required":["_id"]},"Error":{"type":"object","description":"Standard error response envelope returned by integrator.io APIs.","properties":{"errors":{"type":"array","description":"List of errors that occurred while processing the request.","items":{"type":"object","properties":{"code":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Machine-readable error code. Usually a string like\n`invalid_ref`, `missing_required_field`, or `unauthorized`;\nmay be an **integer** when the error mirrors an upstream HTTP\nstatus (e.g. `500`) — most commonly returned by connection-ping\nand adaptor-proxy responses."},"message":{"type":"string","description":"Human-readable description of the error."},"field":{"type":"string","description":"Optional pointer to the document field that caused the error.\nUsed by structural validation errors (`missing_required_field`,\n`invalid_ref`) to indicate which field is at fault\n(e.g. `_id`, `type`, `http.baseURI`)."},"source":{"type":"string","description":"Optional origin layer for the error — e.g. `application` when\nthe error came from the remote system the adaptor called,\n`connector` when the adaptor itself rejected the request."}},"required":["message"]}}},"required":["errors"]}},"responses":{"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}},"422-unprocessable-entity":{"description":"Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/v1/connectors":{"post":{"operationId":"createConnector","tags":["Connectors"],"summary":"Create a connector","description":"Creates a new connector (Integration App).\n\n**Partner-only endpoint.**","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Request"}}}},"responses":{"201":{"description":"Connector created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Connector"}}}},"401":{"$ref":"#/components/responses/401-unauthorized"},"422":{"$ref":"#/components/responses/422-unprocessable-entity"}}}}}}
```

## Get a connector

> Returns a single connector by ID.\
> \
> \*\*Partner-only endpoint.\*\*

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"Connector":{"type":"object","description":"Connector object as returned by the API. Also used as the request body for create and update; `readOnly` fields are server-managed and ignored on writes.","required":["_id","_userId","name","handle"],"allOf":[{"$ref":"#/components/schemas/ConnectorBase"},{"$ref":"#/components/schemas/ResourceResponse"},{"type":"object","properties":{"_userId":{"type":"string","format":"objectId","readOnly":true,"description":"User who published the connector."},"handle":{"type":"string","readOnly":true,"description":"Auto-generated short unique slug for the connector."},"numInstalls":{"type":"integer","readOnly":true,"description":"Number of active installations of this connector."}}}]},"ConnectorBase":{"type":"object","description":"Writable connector fields shared by the request and response schemas.","properties":{"name":{"type":"string","description":"Display name for the connector, shown on its marketplace listing."},"description":{"type":"string","description":"Summary of what the connector does, shown on its marketplace listing."},"imageURL":{"type":"string","description":"URL of the connector's logo image displayed in the marketplace."},"websiteURL":{"type":"string","description":"URL of the publisher's product or documentation page for the connector."},"contactEmail":{"type":"string","format":"email","description":"Contact email for the connector's publisher."},"published":{"type":"boolean","description":"When true, the connector is visible in the Celigo marketplace."},"managed":{"type":"boolean","description":"When true, the connector is managed by Celigo."},"_integrationId":{"type":"string","format":"objectId","description":"Master integration the connector packages and installs."},"_stackId":{"type":"string","format":"objectId","description":"Stack that hosts the connector's installer and lifecycle functions."},"installerFunction":{"type":"string","description":"Function invoked from the connector's stack when the connector is installed."},"updateFunction":{"type":"string","description":"Function invoked to apply connector updates to existing installations."},"preUninstallFunction":{"type":"string","description":"Function invoked before an installation is uninstalled."},"uninstallerFunction":{"type":"string","description":"Function invoked when an installation is uninstalled."},"externalInstallerFunction":{"type":"string","description":"Function invoked for externally triggered installs (for example, `installConnectorFromExternalApp`)."},"_sharedImportIds":{"type":"array","description":"Imports shared with installations of this connector.","items":{"type":"string","format":"objectId"}},"_sharedExportIds":{"type":"array","description":"Exports shared with installations of this connector.","items":{"type":"string","format":"objectId"}},"_iClientIdMap":{"type":"array","description":"Maps connection types to the iClient credentials connector installations use.","items":{"type":"object","properties":{"_iClientIds":{"type":"array","description":"iClients available for this map entry.","items":{"type":"string","format":"objectId"}},"connection":{"type":"object","description":"Connection criteria this entry applies to.","properties":{"type":{"type":"string","description":"Connection type this entry applies to (e.g. `netsuite`, `http`, `rest`, `salesforce`)."},"assistant":{"type":"string","description":"Assistant (application-specific flavor) this entry applies to, used with generic connection types like `http` or `rest` to scope the entry to one application."}}}}}},"applications":{"type":"array","items":{"type":"string"},"description":"Application slugs (e.g. `netsuite`, `shopify`)."},"trialEnabled":{"type":"boolean","description":"When true, trial licenses are enabled for this connector. Requires\n`trialPeriod` and `_trialLicenseId` to be set."},"trialPeriod":{"type":"integer","description":"Trial period in days. Required when `trialEnabled` is `true`."},"_trialLicenseId":{"type":"string","format":"objectId","description":"License template ID for trials. Required when `trialEnabled`\nis `true`."},"oAuthServerFlow":{"type":"object","description":"OAuth server-flow configuration used by connector installations.","properties":{"_iClientId":{"type":"string","format":"objectId","description":"iClient used for the OAuth server flow."}}},"framework":{"type":"string","enum":["twoDotZero"],"description":"Marks a connector built on the Integration App Framework 2.0. Set to `twoDotZero` for 2.0 connectors and omit for classic connectors; when set, `twoDotZero._integrationId` is required and must match `_integrationId`."},"twoDotZero":{"type":"object","description":"Integration App Framework 2.0 configuration. The server initializes this object (typically as `{\"editions\":[]}`) on classic connectors too, so its presence alone does not imply a 2.0 connector; `_integrationId` is required inside it only when `framework` is `twoDotZero`.","properties":{"_integrationId":{"type":"string","format":"objectId","description":"Master integration this 2.0 connector packages. Must match the connector's top-level `_integrationId`."},"editions":{"type":"array","description":"Editions the connector offers, each bundling the resources an installation receives.","items":{"type":"object","required":["displayName"],"properties":{"displayName":{"type":"string","description":"Edition name shown when choosing an edition during install."},"order":{"type":"integer","description":"Sort position of the edition in the install UI."},"resources":{"$ref":"#/components/schemas/EditionResourceList"},"childResources":{"$ref":"#/components/schemas/EditionResourceList"}}}},"changeEdition":{"type":"object","description":"Hook invoked when an installation switches between editions.","properties":{"function":{"type":"string","description":"Stack function called to migrate an installation between editions."},"_scriptId":{"type":"string","format":"objectId","description":"Script backing the change-edition function."}}},"isParentChild":{"type":"boolean","readOnly":true,"description":"When true, the master integration supports parent-child (multi-store) installs. Computed automatically from the integration; not settable."}}}},"if":{"properties":{"framework":{"const":"twoDotZero"}},"required":["framework"]},"then":{"required":["twoDotZero"],"properties":{"twoDotZero":{"required":["_integrationId"]}}}},"EditionResourceList":{"type":"object","description":"Resource ids bundled into a connector edition.","properties":{"_flowIds":{"type":"array","description":"Flows included in the edition.","items":{"type":"string","format":"objectId"}},"_importIds":{"type":"array","description":"Imports included in the edition.","items":{"type":"string","format":"objectId"}},"_exportIds":{"type":"array","description":"Exports included in the edition.","items":{"type":"string","format":"objectId"}},"_connectionIds":{"type":"array","description":"Connections included in the edition.","items":{"type":"string","format":"objectId"}},"_asyncHelperIds":{"type":"array","description":"Async helpers included in the edition.","items":{"type":"string","format":"objectId"}},"_fileDefinitionIds":{"type":"array","description":"File definitions included in the edition.","items":{"type":"string","format":"objectId"}}}},"ResourceResponse":{"type":"object","description":"Response","properties":{"_id":{"type":"string","format":"objectId","readOnly":true,"description":"Unique identifier for the resource. Format is a 24-character hexadecimal string."},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the resource was created. Set automatically and cannot be modified."},"lastModified":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the resource was last updated. Changes whenever any property is modified."},"deletedAt":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"Timestamp when the resource was soft-deleted. When null or absent, the resource is active."}},"required":["_id"]},"Error":{"type":"object","description":"Standard error response envelope returned by integrator.io APIs.","properties":{"errors":{"type":"array","description":"List of errors that occurred while processing the request.","items":{"type":"object","properties":{"code":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Machine-readable error code. Usually a string like\n`invalid_ref`, `missing_required_field`, or `unauthorized`;\nmay be an **integer** when the error mirrors an upstream HTTP\nstatus (e.g. `500`) — most commonly returned by connection-ping\nand adaptor-proxy responses."},"message":{"type":"string","description":"Human-readable description of the error."},"field":{"type":"string","description":"Optional pointer to the document field that caused the error.\nUsed by structural validation errors (`missing_required_field`,\n`invalid_ref`) to indicate which field is at fault\n(e.g. `_id`, `type`, `http.baseURI`)."},"source":{"type":"string","description":"Optional origin layer for the error — e.g. `application` when\nthe error came from the remote system the adaptor called,\n`connector` when the adaptor itself rejected the request."}},"required":["message"]}}},"required":["errors"]}},"responses":{"400-bad-request":{"description":"Bad request. The server could not understand the request because of malformed syntax or invalid parameters.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}},"404-not-found":{"description":"Not found. The requested resource does not exist or is not visible to the caller.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/v1/connectors/{_id}":{"get":{"operationId":"getConnectorById","tags":["Connectors"],"summary":"Get a connector","description":"Returns a single connector by ID.\n\n**Partner-only endpoint.**","parameters":[{"name":"_id","in":"path","required":true,"schema":{"type":"string"},"description":"The connector ID."}],"responses":{"200":{"description":"The connector resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Connector"}}}},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## Update a connector

> Full-replaces a connector resource.\
> \
> \*\*Partner-only endpoint.\*\*

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"Request":{"type":"object","description":"Fields that can be sent when creating or updating a connector. Partner accounts only.","required":["name"],"allOf":[{"$ref":"#/components/schemas/ConnectorBase"}]},"ConnectorBase":{"type":"object","description":"Writable connector fields shared by the request and response schemas.","properties":{"name":{"type":"string","description":"Display name for the connector, shown on its marketplace listing."},"description":{"type":"string","description":"Summary of what the connector does, shown on its marketplace listing."},"imageURL":{"type":"string","description":"URL of the connector's logo image displayed in the marketplace."},"websiteURL":{"type":"string","description":"URL of the publisher's product or documentation page for the connector."},"contactEmail":{"type":"string","format":"email","description":"Contact email for the connector's publisher."},"published":{"type":"boolean","description":"When true, the connector is visible in the Celigo marketplace."},"managed":{"type":"boolean","description":"When true, the connector is managed by Celigo."},"_integrationId":{"type":"string","format":"objectId","description":"Master integration the connector packages and installs."},"_stackId":{"type":"string","format":"objectId","description":"Stack that hosts the connector's installer and lifecycle functions."},"installerFunction":{"type":"string","description":"Function invoked from the connector's stack when the connector is installed."},"updateFunction":{"type":"string","description":"Function invoked to apply connector updates to existing installations."},"preUninstallFunction":{"type":"string","description":"Function invoked before an installation is uninstalled."},"uninstallerFunction":{"type":"string","description":"Function invoked when an installation is uninstalled."},"externalInstallerFunction":{"type":"string","description":"Function invoked for externally triggered installs (for example, `installConnectorFromExternalApp`)."},"_sharedImportIds":{"type":"array","description":"Imports shared with installations of this connector.","items":{"type":"string","format":"objectId"}},"_sharedExportIds":{"type":"array","description":"Exports shared with installations of this connector.","items":{"type":"string","format":"objectId"}},"_iClientIdMap":{"type":"array","description":"Maps connection types to the iClient credentials connector installations use.","items":{"type":"object","properties":{"_iClientIds":{"type":"array","description":"iClients available for this map entry.","items":{"type":"string","format":"objectId"}},"connection":{"type":"object","description":"Connection criteria this entry applies to.","properties":{"type":{"type":"string","description":"Connection type this entry applies to (e.g. `netsuite`, `http`, `rest`, `salesforce`)."},"assistant":{"type":"string","description":"Assistant (application-specific flavor) this entry applies to, used with generic connection types like `http` or `rest` to scope the entry to one application."}}}}}},"applications":{"type":"array","items":{"type":"string"},"description":"Application slugs (e.g. `netsuite`, `shopify`)."},"trialEnabled":{"type":"boolean","description":"When true, trial licenses are enabled for this connector. Requires\n`trialPeriod` and `_trialLicenseId` to be set."},"trialPeriod":{"type":"integer","description":"Trial period in days. Required when `trialEnabled` is `true`."},"_trialLicenseId":{"type":"string","format":"objectId","description":"License template ID for trials. Required when `trialEnabled`\nis `true`."},"oAuthServerFlow":{"type":"object","description":"OAuth server-flow configuration used by connector installations.","properties":{"_iClientId":{"type":"string","format":"objectId","description":"iClient used for the OAuth server flow."}}},"framework":{"type":"string","enum":["twoDotZero"],"description":"Marks a connector built on the Integration App Framework 2.0. Set to `twoDotZero` for 2.0 connectors and omit for classic connectors; when set, `twoDotZero._integrationId` is required and must match `_integrationId`."},"twoDotZero":{"type":"object","description":"Integration App Framework 2.0 configuration. The server initializes this object (typically as `{\"editions\":[]}`) on classic connectors too, so its presence alone does not imply a 2.0 connector; `_integrationId` is required inside it only when `framework` is `twoDotZero`.","properties":{"_integrationId":{"type":"string","format":"objectId","description":"Master integration this 2.0 connector packages. Must match the connector's top-level `_integrationId`."},"editions":{"type":"array","description":"Editions the connector offers, each bundling the resources an installation receives.","items":{"type":"object","required":["displayName"],"properties":{"displayName":{"type":"string","description":"Edition name shown when choosing an edition during install."},"order":{"type":"integer","description":"Sort position of the edition in the install UI."},"resources":{"$ref":"#/components/schemas/EditionResourceList"},"childResources":{"$ref":"#/components/schemas/EditionResourceList"}}}},"changeEdition":{"type":"object","description":"Hook invoked when an installation switches between editions.","properties":{"function":{"type":"string","description":"Stack function called to migrate an installation between editions."},"_scriptId":{"type":"string","format":"objectId","description":"Script backing the change-edition function."}}},"isParentChild":{"type":"boolean","readOnly":true,"description":"When true, the master integration supports parent-child (multi-store) installs. Computed automatically from the integration; not settable."}}}},"if":{"properties":{"framework":{"const":"twoDotZero"}},"required":["framework"]},"then":{"required":["twoDotZero"],"properties":{"twoDotZero":{"required":["_integrationId"]}}}},"EditionResourceList":{"type":"object","description":"Resource ids bundled into a connector edition.","properties":{"_flowIds":{"type":"array","description":"Flows included in the edition.","items":{"type":"string","format":"objectId"}},"_importIds":{"type":"array","description":"Imports included in the edition.","items":{"type":"string","format":"objectId"}},"_exportIds":{"type":"array","description":"Exports included in the edition.","items":{"type":"string","format":"objectId"}},"_connectionIds":{"type":"array","description":"Connections included in the edition.","items":{"type":"string","format":"objectId"}},"_asyncHelperIds":{"type":"array","description":"Async helpers included in the edition.","items":{"type":"string","format":"objectId"}},"_fileDefinitionIds":{"type":"array","description":"File definitions included in the edition.","items":{"type":"string","format":"objectId"}}}},"Connector":{"type":"object","description":"Connector object as returned by the API. Also used as the request body for create and update; `readOnly` fields are server-managed and ignored on writes.","required":["_id","_userId","name","handle"],"allOf":[{"$ref":"#/components/schemas/ConnectorBase"},{"$ref":"#/components/schemas/ResourceResponse"},{"type":"object","properties":{"_userId":{"type":"string","format":"objectId","readOnly":true,"description":"User who published the connector."},"handle":{"type":"string","readOnly":true,"description":"Auto-generated short unique slug for the connector."},"numInstalls":{"type":"integer","readOnly":true,"description":"Number of active installations of this connector."}}}]},"ResourceResponse":{"type":"object","description":"Response","properties":{"_id":{"type":"string","format":"objectId","readOnly":true,"description":"Unique identifier for the resource. Format is a 24-character hexadecimal string."},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the resource was created. Set automatically and cannot be modified."},"lastModified":{"type":"string","format":"date-time","readOnly":true,"description":"Timestamp when the resource was last updated. Changes whenever any property is modified."},"deletedAt":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"Timestamp when the resource was soft-deleted. When null or absent, the resource is active."}},"required":["_id"]},"Error":{"type":"object","description":"Standard error response envelope returned by integrator.io APIs.","properties":{"errors":{"type":"array","description":"List of errors that occurred while processing the request.","items":{"type":"object","properties":{"code":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Machine-readable error code. Usually a string like\n`invalid_ref`, `missing_required_field`, or `unauthorized`;\nmay be an **integer** when the error mirrors an upstream HTTP\nstatus (e.g. `500`) — most commonly returned by connection-ping\nand adaptor-proxy responses."},"message":{"type":"string","description":"Human-readable description of the error."},"field":{"type":"string","description":"Optional pointer to the document field that caused the error.\nUsed by structural validation errors (`missing_required_field`,\n`invalid_ref`) to indicate which field is at fault\n(e.g. `_id`, `type`, `http.baseURI`)."},"source":{"type":"string","description":"Optional origin layer for the error — e.g. `application` when\nthe error came from the remote system the adaptor called,\n`connector` when the adaptor itself rejected the request."}},"required":["message"]}}},"required":["errors"]}},"responses":{"400-bad-request":{"description":"Bad request. The server could not understand the request because of malformed syntax or invalid parameters.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}},"404-not-found":{"description":"Not found. The requested resource does not exist or is not visible to the caller.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422-unprocessable-entity":{"description":"Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/v1/connectors/{_id}":{"put":{"operationId":"updateConnector","tags":["Connectors"],"summary":"Update a connector","description":"Full-replaces a connector resource.\n\n**Partner-only endpoint.**","parameters":[{"name":"_id","in":"path","required":true,"schema":{"type":"string"},"description":"The connector ID."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Request"}}}},"responses":{"200":{"description":"Updated connector.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Connector"}}}},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"},"422":{"$ref":"#/components/responses/422-unprocessable-entity"}}}}}}
```

## Delete a connector

> Deletes a connector. This does not affect existing installations.\
> \
> \*\*Partner-only endpoint.\*\*

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"responses":{"400-bad-request":{"description":"Bad request. The server could not understand the request because of malformed syntax or invalid parameters.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}},"404-not-found":{"description":"Not found. The requested resource does not exist or is not visible to the caller.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","description":"Standard error response envelope returned by integrator.io APIs.","properties":{"errors":{"type":"array","description":"List of errors that occurred while processing the request.","items":{"type":"object","properties":{"code":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Machine-readable error code. Usually a string like\n`invalid_ref`, `missing_required_field`, or `unauthorized`;\nmay be an **integer** when the error mirrors an upstream HTTP\nstatus (e.g. `500`) — most commonly returned by connection-ping\nand adaptor-proxy responses."},"message":{"type":"string","description":"Human-readable description of the error."},"field":{"type":"string","description":"Optional pointer to the document field that caused the error.\nUsed by structural validation errors (`missing_required_field`,\n`invalid_ref`) to indicate which field is at fault\n(e.g. `_id`, `type`, `http.baseURI`)."},"source":{"type":"string","description":"Optional origin layer for the error — e.g. `application` when\nthe error came from the remote system the adaptor called,\n`connector` when the adaptor itself rejected the request."}},"required":["message"]}}},"required":["errors"]}}},"paths":{"/v1/connectors/{_id}":{"delete":{"operationId":"deleteConnector","tags":["Connectors"],"summary":"Delete a connector","description":"Deletes a connector. This does not affect existing installations.\n\n**Partner-only endpoint.**","parameters":[{"name":"_id","in":"path","required":true,"schema":{"type":"string"},"description":"The connector ID."}],"responses":{"204":{"description":"Connector deleted."},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## Get the install base for a connector

> Returns the list of accounts that have installed this connector.\
> \
> \*\*Partner-only endpoint.\*\*

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"responses":{"400-bad-request":{"description":"Bad request. The server could not understand the request because of malformed syntax or invalid parameters.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}},"404-not-found":{"description":"Not found. The requested resource does not exist or is not visible to the caller.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","description":"Standard error response envelope returned by integrator.io APIs.","properties":{"errors":{"type":"array","description":"List of errors that occurred while processing the request.","items":{"type":"object","properties":{"code":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Machine-readable error code. Usually a string like\n`invalid_ref`, `missing_required_field`, or `unauthorized`;\nmay be an **integer** when the error mirrors an upstream HTTP\nstatus (e.g. `500`) — most commonly returned by connection-ping\nand adaptor-proxy responses."},"message":{"type":"string","description":"Human-readable description of the error."},"field":{"type":"string","description":"Optional pointer to the document field that caused the error.\nUsed by structural validation errors (`missing_required_field`,\n`invalid_ref`) to indicate which field is at fault\n(e.g. `_id`, `type`, `http.baseURI`)."},"source":{"type":"string","description":"Optional origin layer for the error — e.g. `application` when\nthe error came from the remote system the adaptor called,\n`connector` when the adaptor itself rejected the request."}},"required":["message"]}}},"required":["errors"]}}},"paths":{"/v1/connectors/{_id}/installBase":{"get":{"operationId":"getConnectorInstallBase","tags":["Connectors"],"summary":"Get the install base for a connector","description":"Returns the list of accounts that have installed this connector.\n\n**Partner-only endpoint.**","parameters":[{"name":"_id","in":"path","required":true,"schema":{"type":"string"},"description":"The connector ID."}],"responses":{"200":{"description":"Install base data.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"204":{"description":"No installations exist for this connector."},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## Push update to connector installations

> Pushes an update to all (or specified) installations of this connector.\
> Triggers the connector's \`updateFunction\` on each target integration.\
> \
> \*\*Partner-only endpoint.\*\*

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"responses":{"400-bad-request":{"description":"Bad request. The server could not understand the request because of malformed syntax or invalid parameters.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}},"404-not-found":{"description":"Not found. The requested resource does not exist or is not visible to the caller.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","description":"Standard error response envelope returned by integrator.io APIs.","properties":{"errors":{"type":"array","description":"List of errors that occurred while processing the request.","items":{"type":"object","properties":{"code":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Machine-readable error code. Usually a string like\n`invalid_ref`, `missing_required_field`, or `unauthorized`;\nmay be an **integer** when the error mirrors an upstream HTTP\nstatus (e.g. `500`) — most commonly returned by connection-ping\nand adaptor-proxy responses."},"message":{"type":"string","description":"Human-readable description of the error."},"field":{"type":"string","description":"Optional pointer to the document field that caused the error.\nUsed by structural validation errors (`missing_required_field`,\n`invalid_ref`) to indicate which field is at fault\n(e.g. `_id`, `type`, `http.baseURI`)."},"source":{"type":"string","description":"Optional origin layer for the error — e.g. `application` when\nthe error came from the remote system the adaptor called,\n`connector` when the adaptor itself rejected the request."}},"required":["message"]}}},"required":["errors"]}}},"paths":{"/v1/connectors/{_id}/update":{"put":{"operationId":"pushConnectorUpdate","tags":["Connectors"],"summary":"Push update to connector installations","description":"Pushes an update to all (or specified) installations of this connector.\nTriggers the connector's `updateFunction` on each target integration.\n\n**Partner-only endpoint.**","parameters":[{"name":"_id","in":"path","required":true,"schema":{"type":"string"},"description":"The connector ID."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"_integrationIds":{"type":"array","items":{"type":"string"},"description":"Optional list of specific integration IDs to update.\nOmit to push to all installations."}}}}}},"responses":{"200":{"description":"Update pushed."},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## List licenses for a connector

> Returns all licenses issued for this connector.\
> \
> \*\*Partner-only endpoint.\*\*

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"License":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","readOnly":true,"description":"System-generated unique identifier for the license."},"expires":{"type":"string","format":"date-time","description":"Date and time at which the license expires."},"created":{"type":"string","format":"date-time","description":"Timestamp when the license was created."},"opts":{"type":"object","description":"License options — connector edition and any add-on licenses granted.","properties":{"connectorEdition":{"type":"string","description":"License tier (e.g. `standard`, `premium`, `enterprise`)."},"addonLicenses":{"type":"array","description":"Add-on licenses granted in addition to the base connector edition, grouped by add-on type.","items":{"type":"object","properties":{"type":{"type":"string","description":"Add-on type this group of license grants applies to (e.g. `store`)."},"licenses":{"type":"array","description":"Individual add-on license grants of this type.","items":{"type":"object","properties":{"addOnEdition":{"type":"string","description":"Edition tier of the add-on license grant (e.g. `premium`)."}}}}}}}}},"user":{"type":"object","description":"Integrator.io user the license is issued to, resolved from the email supplied at creation.","properties":{"email":{"type":"string","format":"email","description":"Email address of the licensed user."},"_id":{"type":"string","format":"objectId","description":"Unique identifier of the licensed user."},"name":{"type":"string","description":"Display name of the licensed user."}}},"_integrationId":{"type":"string","format":"objectId","description":"Integration instance created for the licensed user's installation of this connector. Each connector license maps one user's installation to its own integration."}}},"Error":{"type":"object","description":"Standard error response envelope returned by integrator.io APIs.","properties":{"errors":{"type":"array","description":"List of errors that occurred while processing the request.","items":{"type":"object","properties":{"code":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Machine-readable error code. Usually a string like\n`invalid_ref`, `missing_required_field`, or `unauthorized`;\nmay be an **integer** when the error mirrors an upstream HTTP\nstatus (e.g. `500`) — most commonly returned by connection-ping\nand adaptor-proxy responses."},"message":{"type":"string","description":"Human-readable description of the error."},"field":{"type":"string","description":"Optional pointer to the document field that caused the error.\nUsed by structural validation errors (`missing_required_field`,\n`invalid_ref`) to indicate which field is at fault\n(e.g. `_id`, `type`, `http.baseURI`)."},"source":{"type":"string","description":"Optional origin layer for the error — e.g. `application` when\nthe error came from the remote system the adaptor called,\n`connector` when the adaptor itself rejected the request."}},"required":["message"]}}},"required":["errors"]}},"responses":{"400-bad-request":{"description":"Bad request. The server could not understand the request because of malformed syntax or invalid parameters.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}},"404-not-found":{"description":"Not found. The requested resource does not exist or is not visible to the caller.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/v1/connectors/{_id}/licenses":{"get":{"operationId":"listConnectorLicenses","tags":["Connectors"],"summary":"List licenses for a connector","description":"Returns all licenses issued for this connector.\n\n**Partner-only endpoint.**","parameters":[{"name":"_id","in":"path","required":true,"schema":{"type":"string"},"description":"The connector ID."}],"responses":{"200":{"description":"Array of license records.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/License"}}}}},"204":{"description":"No licenses exist for this connector."},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## Create a license for a connector

> Creates a new license for a connector. Supply the target user's email\
> address in the request body — the backend resolves it to a user\
> account. If the email is not a registered integrator.io user, an\
> \`invalid\_user\` error is returned.\
> \
> \*\*Partner-only endpoint.\*\*

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"LicenseCreateRequest":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Email address of the integrator.io user to license. The backend\nresolves this to a user account."},"expires":{"type":"string","format":"date-time","description":"Date and time at which the license expires."},"opts":{"type":"object","description":"License options — connector edition and any add-on licenses to grant.","properties":{"connectorEdition":{"type":"string","description":"License tier (e.g. `standard`, `premium`, `enterprise`)."},"addonLicenses":{"type":"array","description":"Add-on licenses to grant in addition to the base connector edition, grouped by add-on type.","items":{"type":"object","properties":{"type":{"type":"string","description":"Add-on type this group of license grants applies to (e.g. `store`)."},"licenses":{"type":"array","description":"Individual add-on license grants of this type.","items":{"type":"object","properties":{"addOnEdition":{"type":"string","description":"Edition tier of the add-on license grant (e.g. `premium`)."}}}}}}}}}}},"License":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","readOnly":true,"description":"System-generated unique identifier for the license."},"expires":{"type":"string","format":"date-time","description":"Date and time at which the license expires."},"created":{"type":"string","format":"date-time","description":"Timestamp when the license was created."},"opts":{"type":"object","description":"License options — connector edition and any add-on licenses granted.","properties":{"connectorEdition":{"type":"string","description":"License tier (e.g. `standard`, `premium`, `enterprise`)."},"addonLicenses":{"type":"array","description":"Add-on licenses granted in addition to the base connector edition, grouped by add-on type.","items":{"type":"object","properties":{"type":{"type":"string","description":"Add-on type this group of license grants applies to (e.g. `store`)."},"licenses":{"type":"array","description":"Individual add-on license grants of this type.","items":{"type":"object","properties":{"addOnEdition":{"type":"string","description":"Edition tier of the add-on license grant (e.g. `premium`)."}}}}}}}}},"user":{"type":"object","description":"Integrator.io user the license is issued to, resolved from the email supplied at creation.","properties":{"email":{"type":"string","format":"email","description":"Email address of the licensed user."},"_id":{"type":"string","format":"objectId","description":"Unique identifier of the licensed user."},"name":{"type":"string","description":"Display name of the licensed user."}}},"_integrationId":{"type":"string","format":"objectId","description":"Integration instance created for the licensed user's installation of this connector. Each connector license maps one user's installation to its own integration."}}},"Error":{"type":"object","description":"Standard error response envelope returned by integrator.io APIs.","properties":{"errors":{"type":"array","description":"List of errors that occurred while processing the request.","items":{"type":"object","properties":{"code":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Machine-readable error code. Usually a string like\n`invalid_ref`, `missing_required_field`, or `unauthorized`;\nmay be an **integer** when the error mirrors an upstream HTTP\nstatus (e.g. `500`) — most commonly returned by connection-ping\nand adaptor-proxy responses."},"message":{"type":"string","description":"Human-readable description of the error."},"field":{"type":"string","description":"Optional pointer to the document field that caused the error.\nUsed by structural validation errors (`missing_required_field`,\n`invalid_ref`) to indicate which field is at fault\n(e.g. `_id`, `type`, `http.baseURI`)."},"source":{"type":"string","description":"Optional origin layer for the error — e.g. `application` when\nthe error came from the remote system the adaptor called,\n`connector` when the adaptor itself rejected the request."}},"required":["message"]}}},"required":["errors"]}},"responses":{"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}},"404-not-found":{"description":"Not found. The requested resource does not exist or is not visible to the caller.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422-unprocessable-entity":{"description":"Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/v1/connectors/{_id}/licenses":{"post":{"operationId":"createConnectorLicense","tags":["Connectors"],"summary":"Create a license for a connector","description":"Creates a new license for a connector. Supply the target user's email\naddress in the request body — the backend resolves it to a user\naccount. If the email is not a registered integrator.io user, an\n`invalid_user` error is returned.\n\n**Partner-only endpoint.**","parameters":[{"name":"_id","in":"path","required":true,"schema":{"type":"string"},"description":"The connector ID."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseCreateRequest"}}}},"responses":{"201":{"description":"License created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/License"}}}},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"},"422":{"$ref":"#/components/responses/422-unprocessable-entity"}}}}}}
```

## Get a license

> Returns a specific license for a connector.\
> \
> \*\*Partner-only endpoint.\*\*

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"License":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","readOnly":true,"description":"System-generated unique identifier for the license."},"expires":{"type":"string","format":"date-time","description":"Date and time at which the license expires."},"created":{"type":"string","format":"date-time","description":"Timestamp when the license was created."},"opts":{"type":"object","description":"License options — connector edition and any add-on licenses granted.","properties":{"connectorEdition":{"type":"string","description":"License tier (e.g. `standard`, `premium`, `enterprise`)."},"addonLicenses":{"type":"array","description":"Add-on licenses granted in addition to the base connector edition, grouped by add-on type.","items":{"type":"object","properties":{"type":{"type":"string","description":"Add-on type this group of license grants applies to (e.g. `store`)."},"licenses":{"type":"array","description":"Individual add-on license grants of this type.","items":{"type":"object","properties":{"addOnEdition":{"type":"string","description":"Edition tier of the add-on license grant (e.g. `premium`)."}}}}}}}}},"user":{"type":"object","description":"Integrator.io user the license is issued to, resolved from the email supplied at creation.","properties":{"email":{"type":"string","format":"email","description":"Email address of the licensed user."},"_id":{"type":"string","format":"objectId","description":"Unique identifier of the licensed user."},"name":{"type":"string","description":"Display name of the licensed user."}}},"_integrationId":{"type":"string","format":"objectId","description":"Integration instance created for the licensed user's installation of this connector. Each connector license maps one user's installation to its own integration."}}},"Error":{"type":"object","description":"Standard error response envelope returned by integrator.io APIs.","properties":{"errors":{"type":"array","description":"List of errors that occurred while processing the request.","items":{"type":"object","properties":{"code":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Machine-readable error code. Usually a string like\n`invalid_ref`, `missing_required_field`, or `unauthorized`;\nmay be an **integer** when the error mirrors an upstream HTTP\nstatus (e.g. `500`) — most commonly returned by connection-ping\nand adaptor-proxy responses."},"message":{"type":"string","description":"Human-readable description of the error."},"field":{"type":"string","description":"Optional pointer to the document field that caused the error.\nUsed by structural validation errors (`missing_required_field`,\n`invalid_ref`) to indicate which field is at fault\n(e.g. `_id`, `type`, `http.baseURI`)."},"source":{"type":"string","description":"Optional origin layer for the error — e.g. `application` when\nthe error came from the remote system the adaptor called,\n`connector` when the adaptor itself rejected the request."}},"required":["message"]}}},"required":["errors"]}},"responses":{"400-bad-request":{"description":"Bad request. The server could not understand the request because of malformed syntax or invalid parameters.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}},"404-not-found":{"description":"Not found. The requested resource does not exist or is not visible to the caller.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/v1/connectors/{_id}/licenses/{_licenseId}":{"get":{"operationId":"getConnectorLicenseById","tags":["Connectors"],"summary":"Get a license","description":"Returns a specific license for a connector.\n\n**Partner-only endpoint.**","parameters":[{"name":"_id","in":"path","required":true,"schema":{"type":"string"},"description":"The connector ID."},{"name":"_licenseId","in":"path","required":true,"schema":{"type":"string"},"description":"The license ID."}],"responses":{"200":{"description":"The license record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/License"}}}},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## Update a license

> Updates an existing license for a connector (e.g. change expiry or\
> edition).\
> \
> \*\*Partner-only endpoint.\*\*

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"License":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","readOnly":true,"description":"System-generated unique identifier for the license."},"expires":{"type":"string","format":"date-time","description":"Date and time at which the license expires."},"created":{"type":"string","format":"date-time","description":"Timestamp when the license was created."},"opts":{"type":"object","description":"License options — connector edition and any add-on licenses granted.","properties":{"connectorEdition":{"type":"string","description":"License tier (e.g. `standard`, `premium`, `enterprise`)."},"addonLicenses":{"type":"array","description":"Add-on licenses granted in addition to the base connector edition, grouped by add-on type.","items":{"type":"object","properties":{"type":{"type":"string","description":"Add-on type this group of license grants applies to (e.g. `store`)."},"licenses":{"type":"array","description":"Individual add-on license grants of this type.","items":{"type":"object","properties":{"addOnEdition":{"type":"string","description":"Edition tier of the add-on license grant (e.g. `premium`)."}}}}}}}}},"user":{"type":"object","description":"Integrator.io user the license is issued to, resolved from the email supplied at creation.","properties":{"email":{"type":"string","format":"email","description":"Email address of the licensed user."},"_id":{"type":"string","format":"objectId","description":"Unique identifier of the licensed user."},"name":{"type":"string","description":"Display name of the licensed user."}}},"_integrationId":{"type":"string","format":"objectId","description":"Integration instance created for the licensed user's installation of this connector. Each connector license maps one user's installation to its own integration."}}},"Error":{"type":"object","description":"Standard error response envelope returned by integrator.io APIs.","properties":{"errors":{"type":"array","description":"List of errors that occurred while processing the request.","items":{"type":"object","properties":{"code":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Machine-readable error code. Usually a string like\n`invalid_ref`, `missing_required_field`, or `unauthorized`;\nmay be an **integer** when the error mirrors an upstream HTTP\nstatus (e.g. `500`) — most commonly returned by connection-ping\nand adaptor-proxy responses."},"message":{"type":"string","description":"Human-readable description of the error."},"field":{"type":"string","description":"Optional pointer to the document field that caused the error.\nUsed by structural validation errors (`missing_required_field`,\n`invalid_ref`) to indicate which field is at fault\n(e.g. `_id`, `type`, `http.baseURI`)."},"source":{"type":"string","description":"Optional origin layer for the error — e.g. `application` when\nthe error came from the remote system the adaptor called,\n`connector` when the adaptor itself rejected the request."}},"required":["message"]}}},"required":["errors"]}},"responses":{"400-bad-request":{"description":"Bad request. The server could not understand the request because of malformed syntax or invalid parameters.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}},"404-not-found":{"description":"Not found. The requested resource does not exist or is not visible to the caller.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422-unprocessable-entity":{"description":"Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/v1/connectors/{_id}/licenses/{_licenseId}":{"put":{"operationId":"updateConnectorLicense","tags":["Connectors"],"summary":"Update a license","description":"Updates an existing license for a connector (e.g. change expiry or\nedition).\n\n**Partner-only endpoint.**","parameters":[{"name":"_id","in":"path","required":true,"schema":{"type":"string"},"description":"The connector ID."},{"name":"_licenseId","in":"path","required":true,"schema":{"type":"string"},"description":"The license ID."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/License"}}}},"responses":{"200":{"description":"Updated license.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/License"}}}},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"},"422":{"$ref":"#/components/responses/422-unprocessable-entity"}}}}}}
```

## Delete a license

> Deletes a license for a connector.\
> \
> \*\*Partner-only endpoint.\*\*

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"responses":{"400-bad-request":{"description":"Bad request. The server could not understand the request because of malformed syntax or invalid parameters.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}},"404-not-found":{"description":"Not found. The requested resource does not exist or is not visible to the caller.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","description":"Standard error response envelope returned by integrator.io APIs.","properties":{"errors":{"type":"array","description":"List of errors that occurred while processing the request.","items":{"type":"object","properties":{"code":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Machine-readable error code. Usually a string like\n`invalid_ref`, `missing_required_field`, or `unauthorized`;\nmay be an **integer** when the error mirrors an upstream HTTP\nstatus (e.g. `500`) — most commonly returned by connection-ping\nand adaptor-proxy responses."},"message":{"type":"string","description":"Human-readable description of the error."},"field":{"type":"string","description":"Optional pointer to the document field that caused the error.\nUsed by structural validation errors (`missing_required_field`,\n`invalid_ref`) to indicate which field is at fault\n(e.g. `_id`, `type`, `http.baseURI`)."},"source":{"type":"string","description":"Optional origin layer for the error — e.g. `application` when\nthe error came from the remote system the adaptor called,\n`connector` when the adaptor itself rejected the request."}},"required":["message"]}}},"required":["errors"]}}},"paths":{"/v1/connectors/{_id}/licenses/{_licenseId}":{"delete":{"operationId":"deleteConnectorLicense","tags":["Connectors"],"summary":"Delete a license","description":"Deletes a license for a connector.\n\n**Partner-only endpoint.**","parameters":[{"name":"_id","in":"path","required":true,"schema":{"type":"string"},"description":"The connector ID."},{"name":"_licenseId","in":"path","required":true,"schema":{"type":"string"},"description":"The license ID."}],"responses":{"204":{"description":"License deleted."},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## Install a connector (Integration App)

> Triggers the install flow for a connector (Integration App). The\
> connector must be associated with an integration that has the install\
> function configured. Templates are installed via\
> \`POST /v1/integrations/template/{\_id}\` instead.

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"responses":{"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}}},"schemas":{"Error":{"type":"object","description":"Standard error response envelope returned by integrator.io APIs.","properties":{"errors":{"type":"array","description":"List of errors that occurred while processing the request.","items":{"type":"object","properties":{"code":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Machine-readable error code. Usually a string like\n`invalid_ref`, `missing_required_field`, or `unauthorized`;\nmay be an **integer** when the error mirrors an upstream HTTP\nstatus (e.g. `500`) — most commonly returned by connection-ping\nand adaptor-proxy responses."},"message":{"type":"string","description":"Human-readable description of the error."},"field":{"type":"string","description":"Optional pointer to the document field that caused the error.\nUsed by structural validation errors (`missing_required_field`,\n`invalid_ref`) to indicate which field is at fault\n(e.g. `_id`, `type`, `http.baseURI`)."},"source":{"type":"string","description":"Optional origin layer for the error — e.g. `application` when\nthe error came from the remote system the adaptor called,\n`connector` when the adaptor itself rejected the request."}},"required":["message"]}}},"required":["errors"]}}},"paths":{"/v1/connectors/{_id}/install":{"post":{"operationId":"installConnector","tags":["Connectors"],"summary":"Install a connector (Integration App)","description":"Triggers the install flow for a connector (Integration App). The\nconnector must be associated with an integration that has the install\nfunction configured. Templates are installed via\n`POST /v1/integrations/template/{_id}` instead.","parameters":[{"name":"_id","in":"path","required":true,"description":"The connector ID.","schema":{"type":"string","format":"objectId"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Optional install configuration.","additionalProperties":true}}}},"responses":{"200":{"description":"Connector install initiated.","content":{"application/json":{"schema":{"type":"object","description":"Install response.","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"description":"Connector not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Connector is not associated with an integration that supports\nthe install function.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## Preview a connector install

> Returns a preview of what installing this connector would produce.\
> The connector must be associated with an integration that has the\
> install function configured.

```json
{"openapi":"3.2.0","info":{"title":"Connectors","version":"1.0.0"},"tags":[{"name":"Connectors","description":"API for managing Integration App connectors and their licenses.\n\n**These endpoints are only available to Celigo Partners.**\n\nConnectors are packaged integration applications (e.g. \"Shopify –\nNetSuite Connector\") that Partners publish to the Celigo marketplace.\nEach connector has an install base, license management, and update\npush capabilities.\n\n## Connector schema\n\n{% openapi-schemas spec=\"connector\" schemas=\"Connector\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"responses":{"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}}},"schemas":{"Error":{"type":"object","description":"Standard error response envelope returned by integrator.io APIs.","properties":{"errors":{"type":"array","description":"List of errors that occurred while processing the request.","items":{"type":"object","properties":{"code":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Machine-readable error code. Usually a string like\n`invalid_ref`, `missing_required_field`, or `unauthorized`;\nmay be an **integer** when the error mirrors an upstream HTTP\nstatus (e.g. `500`) — most commonly returned by connection-ping\nand adaptor-proxy responses."},"message":{"type":"string","description":"Human-readable description of the error."},"field":{"type":"string","description":"Optional pointer to the document field that caused the error.\nUsed by structural validation errors (`missing_required_field`,\n`invalid_ref`) to indicate which field is at fault\n(e.g. `_id`, `type`, `http.baseURI`)."},"source":{"type":"string","description":"Optional origin layer for the error — e.g. `application` when\nthe error came from the remote system the adaptor called,\n`connector` when the adaptor itself rejected the request."}},"required":["message"]}}},"required":["errors"]}}},"paths":{"/v1/connectors/{_id}/preview":{"get":{"operationId":"previewConnectorInstall","tags":["Connectors"],"summary":"Preview a connector install","description":"Returns a preview of what installing this connector would produce.\nThe connector must be associated with an integration that has the\ninstall function configured.","parameters":[{"name":"_id","in":"path","required":true,"description":"The connector ID.","schema":{"type":"string","format":"objectId"}}],"responses":{"200":{"description":"Connector install preview.","content":{"application/json":{"schema":{"type":"object","description":"Preview envelope with resource docs.","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"description":"Connector not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Connector is not associated with an integration that supports\nthe install function.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developer.celigo.com/api/api-reference/connectors.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
