> 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/marketplace-and-templates/marketplace.md).

# Marketplace

Browse Celigo marketplace content. The marketplace contains two types of entries:

* **Integration Apps** — licensed, Celigo-built connectors (e.g. Shopify–NetSuite) that install with managed updates.
* **Templates** — reusable blueprints that create a set of resources when installed: an integration with its flows, connections, exports, imports, and scripts (`type: integration`), or an MCP server with its tools (`type: mcpserver`).

You can preview what a template would create before committing to the install.

### Marketplace entry schema

## The MarketplaceEntry object

```json
{"openapi":"3.2.0","info":{"title":"Marketplace","version":"1.0.0"},"components":{"schemas":{"MarketplaceEntry":{"type":"object","required":["_id","name","applications","numInstalls","user","lastModified"],"description":"A single marketplace listing — either an Integration App (`docType: Connector`)\nor a Template (`docType: Template`). `docType` is only present in\n`POST /v1/published/combined` responses; `GET /v1/published` (Connectors\nonly) and `GET /v1/templates/published` (Templates only) omit the field.","properties":{"_id":{"type":"string","format":"objectId","description":"Marketplace entry id. For Templates, use this with `/v1/templates/{_id}/preview`."},"name":{"type":"string","description":"Display name of the marketplace entry."},"description":{"type":"string","description":"Marketing description shown in the marketplace listing. Always set on\nIntegration Apps; a Template publisher can leave it blank, in which\ncase the field is absent."},"type":{"type":"string","enum":["integration","mcpserver"],"description":"Kind of resource a Template installs, which decides the install route.\nPresent on every Template entry (`GET /v1/templates/published` and\n`docType: Template` entries of `POST /v1/published/combined`); absent\non Connector entries, which install through their own route."},"celigoAgentSupported":{"type":"boolean","description":"When true, the template is flagged for installation through the Celigo Agent (Ora)\nguided install. Present on every `docType: Template` entry of\n`POST /v1/published/combined`; absent on Connector entries and from\n`GET /v1/templates/published`."},"imageURL":{"type":"string","description":"Relative image path (e.g. `/images/company-logos/amazon-netsuite.png`)\nor absolute URL. Not always present on Template entries."},"websiteURL":{"type":"string","format":"uri","description":"External product page URL. Rare on Template entries."},"applications":{"type":"array","description":"Systems this marketplace entry bridges. Values are either\nwell-known application slugs (`netsuite`, `shopify`, `amazonmws`) or\nobject ids referencing an Application definition.","items":{"type":"string"}},"user":{"type":"object","description":"Publisher metadata.","properties":{"name":{"type":"string","description":"Publisher display name."},"company":{"type":"string","description":"Publisher's company. For Celigo-built content this is `\"Celigo\"`."}}},"trialEnabled":{"type":"boolean","description":"Whether this entry offers a trial install. Populated on Integration\nApp entries; rarely set on Templates."},"lastModified":{"type":"string","format":"date-time","description":"When the marketplace entry was last updated."},"numInstalls":{"type":"integer","description":"Live install counter across all Celigo accounts. Used as the\n`sort_by=numInstalls` key."},"docType":{"type":"string","enum":["Connector","Template"],"description":"Discriminator distinguishing Integration Apps from Templates. Only\npopulated in `POST /v1/published/combined` responses. Absent in\n`GET /v1/published` (Connectors only)."},"framework":{"type":"string","enum":["twoDotZero"],"description":"Integration App framework version. Present only on Connector entries\nthat use the 2.0 edition-based architecture. When set, the\n`twoDotZero` object contains edition metadata."},"twoDotZero":{"type":"object","description":"Edition metadata for Integration Apps using the 2.0 framework.\nPresent only when `framework` is `twoDotZero`.","properties":{"_integrationId":{"type":"string","format":"objectId","description":"Integration id that backs this Integration App."},"editions":{"type":"array","description":"Available editions (e.g. Starter, Professional). Empty when no editions are configured.","items":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","description":"System-generated unique identifier for the edition."},"displayName":{"type":"string","description":"Edition label shown to users (e.g. \"Starter Edition\")."},"order":{"type":"integer","description":"Display order among editions."},"resources":{"type":"object","description":"Resource ids included in this edition.","properties":{"_flowIds":{"type":"array","description":"Ids of the flows included in this edition.","items":{"type":"string","format":"objectId"}},"_importIds":{"type":"array","description":"Ids of the imports included in this edition.","items":{"type":"string","format":"objectId"}},"_exportIds":{"type":"array","description":"Ids of the exports included in this edition.","items":{"type":"string","format":"objectId"}},"_connectionIds":{"type":"array","description":"Ids of the connections included in this edition.","items":{"type":"string","format":"objectId"}},"_asyncHelperIds":{"type":"array","description":"Ids of the async helpers included in this edition.","items":{"type":"string","format":"objectId"}},"_fileDefinitionIds":{"type":"array","description":"Ids of the file definitions included in this edition.","items":{"type":"string","format":"objectId"}}}},"childResources":{"type":"object","description":"Child resource ids (for parent-child Integration Apps).","properties":{"_flowIds":{"type":"array","description":"Ids of the flows included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_importIds":{"type":"array","description":"Ids of the imports included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_exportIds":{"type":"array","description":"Ids of the exports included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_connectionIds":{"type":"array","description":"Ids of the connections included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_asyncHelperIds":{"type":"array","description":"Ids of the async helpers included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_fileDefinitionIds":{"type":"array","description":"Ids of the file definitions included in this edition's child integrations.","items":{"type":"string","format":"objectId"}}}}}}},"isParentChild":{"type":"boolean","description":"When true, this Integration App uses the parent-child model."}}}}}}}}
```

## List published Templates

> Returns the marketplace catalog of published \*\*Templates\*\* — the\
> Template-only counterpart of \`GET /v1/published\` (Integration Apps only).\
> Every entry carries \`type\`, which tells you whether the template installs\
> an integration or an MCP server and therefore which install route to\
> call. Entries have no \`docType\`.\
> \
> Results are sorted by \`name\` unless \`sort\_by\` says otherwise, and the\
> list may be paginated: follow the \`Link\` header's \`rel="next"\` URL until\
> the header is absent. Templates that reference an application no\
> longer available on the platform are left out, so this list can be\
> shorter than the \`docType: Template\` subset of\
> \`POST /v1/published/combined\`.

```json
{"openapi":"3.2.0","info":{"title":"Marketplace","version":"1.0.0"},"tags":[{"name":"Marketplace","description":"Browse Celigo marketplace content. The marketplace contains two types\nof entries:\n\n- **Integration Apps** — licensed, Celigo-built connectors (e.g.\n  Shopify–NetSuite) that install with managed updates.\n- **Templates** — reusable blueprints that create a set of resources\n  when installed: an integration with its flows, connections, exports,\n  imports, and scripts (`type: integration`), or an MCP server with its\n  tools (`type: mcpserver`).\n\nYou can preview what a template would create before committing to the\ninstall.\n\n## Marketplace entry schema\n\n{% openapi-schemas spec=\"marketplace\" schemas=\"MarketplaceEntry\" 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"}},"parameters":{"After":{"name":"after","in":"query","required":false,"description":"Opaque cursor for forward pagination. Pass the value from the `Link`\nresponse header (`rel=\"next\"`) to fetch the next page.","schema":{"type":"string"}}},"schemas":{"MarketplaceEntry":{"type":"object","required":["_id","name","applications","numInstalls","user","lastModified"],"description":"A single marketplace listing — either an Integration App (`docType: Connector`)\nor a Template (`docType: Template`). `docType` is only present in\n`POST /v1/published/combined` responses; `GET /v1/published` (Connectors\nonly) and `GET /v1/templates/published` (Templates only) omit the field.","properties":{"_id":{"type":"string","format":"objectId","description":"Marketplace entry id. For Templates, use this with `/v1/templates/{_id}/preview`."},"name":{"type":"string","description":"Display name of the marketplace entry."},"description":{"type":"string","description":"Marketing description shown in the marketplace listing. Always set on\nIntegration Apps; a Template publisher can leave it blank, in which\ncase the field is absent."},"type":{"type":"string","enum":["integration","mcpserver"],"description":"Kind of resource a Template installs, which decides the install route.\nPresent on every Template entry (`GET /v1/templates/published` and\n`docType: Template` entries of `POST /v1/published/combined`); absent\non Connector entries, which install through their own route."},"celigoAgentSupported":{"type":"boolean","description":"When true, the template is flagged for installation through the Celigo Agent (Ora)\nguided install. Present on every `docType: Template` entry of\n`POST /v1/published/combined`; absent on Connector entries and from\n`GET /v1/templates/published`."},"imageURL":{"type":"string","description":"Relative image path (e.g. `/images/company-logos/amazon-netsuite.png`)\nor absolute URL. Not always present on Template entries."},"websiteURL":{"type":"string","format":"uri","description":"External product page URL. Rare on Template entries."},"applications":{"type":"array","description":"Systems this marketplace entry bridges. Values are either\nwell-known application slugs (`netsuite`, `shopify`, `amazonmws`) or\nobject ids referencing an Application definition.","items":{"type":"string"}},"user":{"type":"object","description":"Publisher metadata.","properties":{"name":{"type":"string","description":"Publisher display name."},"company":{"type":"string","description":"Publisher's company. For Celigo-built content this is `\"Celigo\"`."}}},"trialEnabled":{"type":"boolean","description":"Whether this entry offers a trial install. Populated on Integration\nApp entries; rarely set on Templates."},"lastModified":{"type":"string","format":"date-time","description":"When the marketplace entry was last updated."},"numInstalls":{"type":"integer","description":"Live install counter across all Celigo accounts. Used as the\n`sort_by=numInstalls` key."},"docType":{"type":"string","enum":["Connector","Template"],"description":"Discriminator distinguishing Integration Apps from Templates. Only\npopulated in `POST /v1/published/combined` responses. Absent in\n`GET /v1/published` (Connectors only)."},"framework":{"type":"string","enum":["twoDotZero"],"description":"Integration App framework version. Present only on Connector entries\nthat use the 2.0 edition-based architecture. When set, the\n`twoDotZero` object contains edition metadata."},"twoDotZero":{"type":"object","description":"Edition metadata for Integration Apps using the 2.0 framework.\nPresent only when `framework` is `twoDotZero`.","properties":{"_integrationId":{"type":"string","format":"objectId","description":"Integration id that backs this Integration App."},"editions":{"type":"array","description":"Available editions (e.g. Starter, Professional). Empty when no editions are configured.","items":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","description":"System-generated unique identifier for the edition."},"displayName":{"type":"string","description":"Edition label shown to users (e.g. \"Starter Edition\")."},"order":{"type":"integer","description":"Display order among editions."},"resources":{"type":"object","description":"Resource ids included in this edition.","properties":{"_flowIds":{"type":"array","description":"Ids of the flows included in this edition.","items":{"type":"string","format":"objectId"}},"_importIds":{"type":"array","description":"Ids of the imports included in this edition.","items":{"type":"string","format":"objectId"}},"_exportIds":{"type":"array","description":"Ids of the exports included in this edition.","items":{"type":"string","format":"objectId"}},"_connectionIds":{"type":"array","description":"Ids of the connections included in this edition.","items":{"type":"string","format":"objectId"}},"_asyncHelperIds":{"type":"array","description":"Ids of the async helpers included in this edition.","items":{"type":"string","format":"objectId"}},"_fileDefinitionIds":{"type":"array","description":"Ids of the file definitions included in this edition.","items":{"type":"string","format":"objectId"}}}},"childResources":{"type":"object","description":"Child resource ids (for parent-child Integration Apps).","properties":{"_flowIds":{"type":"array","description":"Ids of the flows included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_importIds":{"type":"array","description":"Ids of the imports included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_exportIds":{"type":"array","description":"Ids of the exports included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_connectionIds":{"type":"array","description":"Ids of the connections included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_asyncHelperIds":{"type":"array","description":"Ids of the async helpers included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_fileDefinitionIds":{"type":"array","description":"Ids of the file definitions included in this edition's child integrations.","items":{"type":"string","format":"objectId"}}}}}}},"isParentChild":{"type":"boolean","description":"When true, this Integration App uses the parent-child model."}}}}},"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"]}}}}}},"paths":{"/v1/templates/published":{"get":{"operationId":"listPublishedTemplates","tags":["Marketplace"],"summary":"List published Templates","description":"Returns the marketplace catalog of published **Templates** — the\nTemplate-only counterpart of `GET /v1/published` (Integration Apps only).\nEvery entry carries `type`, which tells you whether the template installs\nan integration or an MCP server and therefore which install route to\ncall. Entries have no `docType`.\n\nResults are sorted by `name` unless `sort_by` says otherwise, and the\nlist may be paginated: follow the `Link` header's `rel=\"next\"` URL until\nthe header is absent. Templates that reference an application no\nlonger available on the platform are left out, so this list can be\nshorter than the `docType: Template` subset of\n`POST /v1/published/combined`.","parameters":[{"$ref":"#/components/parameters/After"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","enum":["name","lastModified"],"default":"name"},"description":"Sort key. The direction is fixed per key — ascending for `name`,\ndescending for `lastModified`."}],"responses":{"200":{"description":"Array of Template marketplace entries.","headers":{"Link":{"description":"RFC 5988 pagination links. When more pages remain, includes a\n`<...>; rel=\"next\"` entry with an `after` cursor; absent on the\nfinal page.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MarketplaceEntry"}}}}},"204":{"description":"No published templates are available."},"400":{"description":"`sort_by` is not one of the accepted keys, or `after` is not a valid pagination cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/401-unauthorized"}}}}}}
```

## Preview a template's installed resource docs

> Returns the concrete resource documents a template would create if\
> installed. The response is an envelope \`{type, objects, stackRequired}\`\
> where \`objects\` is an array of \`{model, doc}\` entries — one per resource\
> that the install step would materialize.\
> \
> \`type\` tells you which install route to use afterwards:\
> \`POST /v1/integrations/template/{\_id}\` for \`integration\`,\
> \`POST /v1/mcpservers/template/{\_templateId}\` for \`mcpserver\`.\
> \`stackRequired\` is \`true\` when the template has hooks or wrapper\
> connections that run on a stack: the marketplace installer prompts for\
> one; \`POST /v1/integrations/template/{\_id}\`, for a template it accepts\
> (no \`template\_zip\` install step), needs it as \`\_stackId\`; and an\
> MCP-server template's install adds a stack step to the integration it\
> creates.\
> \
> Previewing an MCP-server template needs the same install permission as\
> installing it (403 for a monitor or integration-level user whose access\
> doesn't allow creating integrations); an integration template's preview\
> needs none.\
> \
> The ID must belong to a Template, not a Connector (Integration App).\
> Connector IDs from \`/v1/published\` return 404 here -- pull template\
> IDs from \`GET /v1/templates/published\` or the \`Template\`-typed entries\
> of \`POST /v1/published/combined\`.

```json
{"openapi":"3.2.0","info":{"title":"Marketplace","version":"1.0.0"},"tags":[{"name":"Marketplace","description":"Browse Celigo marketplace content. The marketplace contains two types\nof entries:\n\n- **Integration Apps** — licensed, Celigo-built connectors (e.g.\n  Shopify–NetSuite) that install with managed updates.\n- **Templates** — reusable blueprints that create a set of resources\n  when installed: an integration with its flows, connections, exports,\n  imports, and scripts (`type: integration`), or an MCP server with its\n  tools (`type: mcpserver`).\n\nYou can preview what a template would create before committing to the\ninstall.\n\n## Marketplace entry schema\n\n{% openapi-schemas spec=\"marketplace\" schemas=\"MarketplaceEntry\" 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":{"TemplatePreviewResponse":{"type":"object","description":"Envelope describing what a template's install would produce. `objects[]`\nenumerates each resource doc the installer would create, tagged by\n`model`. The docs are populated with the template's defaults and\nplaceholder ids that the installer rewrites during the real install.","required":["objects","stackRequired","type"],"properties":{"type":{"type":"string","enum":["integration","mcpserver"],"description":"Kind of resource the template installs. Read it before installing —\nthe two kinds use different install routes, and the integration route\nrejects MCP server templates."},"objects":{"type":"array","description":"Resource docs the installer would materialize. For an integration\ntemplate the ordering is `Integration` first (exactly one), then\n`Connection`s, `Flow`s, `Export`s, `Import`s, `Script`s and any\nother supporting resources; for an MCP server template it is the\n`McpServer` doc first, then its `Connection`s, `Export`s, `Import`s,\n`Script`s, `Tool`s and `Api`s, then one `Prompt` entry per inline\nprompt and one `McpResource` entry per Celigo Storage file the\nserver serves. The `McpServer` doc is the template's secret-free\nmanifest: tool and API attachments (MCP-exposed `name`,\n`annotations`, per-tool connection `overrides` with\n`requiresEndUserCredentials`), inline `prompts`, `resources`,\n`connections` that require end-user credentials,\n`upstreamMcpConnections` with the selected proxied items,\n`permissionSets` (capability sets as portable references),\n`policies` and `oauth.useCeligoOauth` — each section present only\nwhen the server has it. A template published before the artifact\nwidened carries tools and prompts only, so its `McpServer` doc has\nnone of the newer sections.","items":{"type":"object","description":"One resource doc tagged with its model type.","properties":{"model":{"type":"string","enum":["Integration","McpServer","Connection","Flow","Export","Import","Script","AsyncHelper","FileDefinition","EDIProfile","LookupCache","Api","Tool","Prompt","McpResource"],"description":"Resource class this doc describes. Which classes appear depends\non what the template zip contains; `Integration` and `Prompt`\nnever appear together because they belong to different template\nkinds."},"doc":{"type":"object","description":"The concrete resource document. Shape matches the write shape\nof the corresponding resource endpoint (e.g. `POST /v1/flows`,\n`POST /v1/exports`, etc.). Fields are populated with the\ntemplate's defaults; ids are placeholders that the installer\nreplaces during the real install.","additionalProperties":true}}}},"stackRequired":{"type":"boolean","description":"`true` when the template has an export or import hook, or a wrapper\nconnection, that runs on a stack (a function with no script). The\nmarketplace installer asks for the stack. Through the API, an\nintegration template that `POST /v1/integrations/template/{_id}`\naccepts (no `template_zip` install step) needs `_stackId` in the body,\nor the install fails with 400 `stack_not_found`; so does a zip\ninstalled with `POST /v1/integrations/template`. An MCP-server\ntemplate's install takes no body: the integration it creates for a\ntool-bearing template gets a stack install step instead."}}},"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"]}}}}}},"paths":{"/v1/templates/{_id}/preview":{"get":{"operationId":"previewTemplate","tags":["Marketplace"],"summary":"Preview a template's installed resource docs","description":"Returns the concrete resource documents a template would create if\ninstalled. The response is an envelope `{type, objects, stackRequired}`\nwhere `objects` is an array of `{model, doc}` entries — one per resource\nthat the install step would materialize.\n\n`type` tells you which install route to use afterwards:\n`POST /v1/integrations/template/{_id}` for `integration`,\n`POST /v1/mcpservers/template/{_templateId}` for `mcpserver`.\n`stackRequired` is `true` when the template has hooks or wrapper\nconnections that run on a stack: the marketplace installer prompts for\none; `POST /v1/integrations/template/{_id}`, for a template it accepts\n(no `template_zip` install step), needs it as `_stackId`; and an\nMCP-server template's install adds a stack step to the integration it\ncreates.\n\nPreviewing an MCP-server template needs the same install permission as\ninstalling it (403 for a monitor or integration-level user whose access\ndoesn't allow creating integrations); an integration template's preview\nneeds none.\n\nThe ID must belong to a Template, not a Connector (Integration App).\nConnector IDs from `/v1/published` return 404 here -- pull template\nIDs from `GET /v1/templates/published` or the `Template`-typed entries\nof `POST /v1/published/combined`.","parameters":[{"name":"_id","in":"path","required":true,"description":"Template id from `POST /v1/published/combined`.","schema":{"type":"string","format":"objectId"}}],"responses":{"200":{"description":"Template preview envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplatePreviewResponse"}}}},"401":{"$ref":"#/components/responses/401-unauthorized"},"403":{"description":"An MCP-server template previewed by a user who may not install templates (a monitor\nor integration-level user whose access doesn't allow creating integrations).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No template matched the id. Most commonly: the id belongs to a\nConnector (Integration App) rather than a Template — Connectors are\ninstalled via `POST /v1/connectors/{_id}/install`, available only to\nCeligo Partners, not through this preview endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"The platform could not read the template's published zip (`corrupted_file`).\nThe copy stored for this region is unreadable, so every caller in the\nregion gets this on the listing's preview and on\n`POST /v1/integrations/template/{_id}`, which reads the same zip before\nanything is created; nothing in the caller's account causes it and\nretrying does not help. Report the listing to Celigo Support. Each\nregion keeps its own published zip under its own listing id, so this\nid may not exist in another region. The UI shows the message as a\ntoast when the listing is opened.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

## List published Integration Apps (Connectors)

> Returns the marketplace catalog of \*\*Integration Apps\*\* — the\
> Celigo-built, fully-managed connectors that install as a single\
> integration. Roughly 30 entries curated by Celigo.\
> \
> Each item is a marketplace listing, not an integration instance —\
> \`\_id\` is the marketplace entry id, the \`applications\` array enumerates\
> the systems the connector bridges, and \`numInstalls\` is the live install\
> counter across all Celigo accounts.\
> \
> For a combined list that also includes user-installable Templates,\
> use \`POST /v1/published/combined\` instead. Entries here have no\
> \`docType\` field -- that discriminator only appears in the combined\
> endpoint's response.\
> \
> The list may be paginated: follow the \`Link\` header's \`rel="next"\` URL\
> until the header is absent.

```json
{"openapi":"3.2.0","info":{"title":"Marketplace","version":"1.0.0"},"tags":[{"name":"Marketplace","description":"Browse Celigo marketplace content. The marketplace contains two types\nof entries:\n\n- **Integration Apps** — licensed, Celigo-built connectors (e.g.\n  Shopify–NetSuite) that install with managed updates.\n- **Templates** — reusable blueprints that create a set of resources\n  when installed: an integration with its flows, connections, exports,\n  imports, and scripts (`type: integration`), or an MCP server with its\n  tools (`type: mcpserver`).\n\nYou can preview what a template would create before committing to the\ninstall.\n\n## Marketplace entry schema\n\n{% openapi-schemas spec=\"marketplace\" schemas=\"MarketplaceEntry\" 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"}},"parameters":{"After":{"name":"after","in":"query","required":false,"description":"Opaque cursor for forward pagination. Pass the value from the `Link`\nresponse header (`rel=\"next\"`) to fetch the next page.","schema":{"type":"string"}}},"schemas":{"MarketplaceEntry":{"type":"object","required":["_id","name","applications","numInstalls","user","lastModified"],"description":"A single marketplace listing — either an Integration App (`docType: Connector`)\nor a Template (`docType: Template`). `docType` is only present in\n`POST /v1/published/combined` responses; `GET /v1/published` (Connectors\nonly) and `GET /v1/templates/published` (Templates only) omit the field.","properties":{"_id":{"type":"string","format":"objectId","description":"Marketplace entry id. For Templates, use this with `/v1/templates/{_id}/preview`."},"name":{"type":"string","description":"Display name of the marketplace entry."},"description":{"type":"string","description":"Marketing description shown in the marketplace listing. Always set on\nIntegration Apps; a Template publisher can leave it blank, in which\ncase the field is absent."},"type":{"type":"string","enum":["integration","mcpserver"],"description":"Kind of resource a Template installs, which decides the install route.\nPresent on every Template entry (`GET /v1/templates/published` and\n`docType: Template` entries of `POST /v1/published/combined`); absent\non Connector entries, which install through their own route."},"celigoAgentSupported":{"type":"boolean","description":"When true, the template is flagged for installation through the Celigo Agent (Ora)\nguided install. Present on every `docType: Template` entry of\n`POST /v1/published/combined`; absent on Connector entries and from\n`GET /v1/templates/published`."},"imageURL":{"type":"string","description":"Relative image path (e.g. `/images/company-logos/amazon-netsuite.png`)\nor absolute URL. Not always present on Template entries."},"websiteURL":{"type":"string","format":"uri","description":"External product page URL. Rare on Template entries."},"applications":{"type":"array","description":"Systems this marketplace entry bridges. Values are either\nwell-known application slugs (`netsuite`, `shopify`, `amazonmws`) or\nobject ids referencing an Application definition.","items":{"type":"string"}},"user":{"type":"object","description":"Publisher metadata.","properties":{"name":{"type":"string","description":"Publisher display name."},"company":{"type":"string","description":"Publisher's company. For Celigo-built content this is `\"Celigo\"`."}}},"trialEnabled":{"type":"boolean","description":"Whether this entry offers a trial install. Populated on Integration\nApp entries; rarely set on Templates."},"lastModified":{"type":"string","format":"date-time","description":"When the marketplace entry was last updated."},"numInstalls":{"type":"integer","description":"Live install counter across all Celigo accounts. Used as the\n`sort_by=numInstalls` key."},"docType":{"type":"string","enum":["Connector","Template"],"description":"Discriminator distinguishing Integration Apps from Templates. Only\npopulated in `POST /v1/published/combined` responses. Absent in\n`GET /v1/published` (Connectors only)."},"framework":{"type":"string","enum":["twoDotZero"],"description":"Integration App framework version. Present only on Connector entries\nthat use the 2.0 edition-based architecture. When set, the\n`twoDotZero` object contains edition metadata."},"twoDotZero":{"type":"object","description":"Edition metadata for Integration Apps using the 2.0 framework.\nPresent only when `framework` is `twoDotZero`.","properties":{"_integrationId":{"type":"string","format":"objectId","description":"Integration id that backs this Integration App."},"editions":{"type":"array","description":"Available editions (e.g. Starter, Professional). Empty when no editions are configured.","items":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","description":"System-generated unique identifier for the edition."},"displayName":{"type":"string","description":"Edition label shown to users (e.g. \"Starter Edition\")."},"order":{"type":"integer","description":"Display order among editions."},"resources":{"type":"object","description":"Resource ids included in this edition.","properties":{"_flowIds":{"type":"array","description":"Ids of the flows included in this edition.","items":{"type":"string","format":"objectId"}},"_importIds":{"type":"array","description":"Ids of the imports included in this edition.","items":{"type":"string","format":"objectId"}},"_exportIds":{"type":"array","description":"Ids of the exports included in this edition.","items":{"type":"string","format":"objectId"}},"_connectionIds":{"type":"array","description":"Ids of the connections included in this edition.","items":{"type":"string","format":"objectId"}},"_asyncHelperIds":{"type":"array","description":"Ids of the async helpers included in this edition.","items":{"type":"string","format":"objectId"}},"_fileDefinitionIds":{"type":"array","description":"Ids of the file definitions included in this edition.","items":{"type":"string","format":"objectId"}}}},"childResources":{"type":"object","description":"Child resource ids (for parent-child Integration Apps).","properties":{"_flowIds":{"type":"array","description":"Ids of the flows included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_importIds":{"type":"array","description":"Ids of the imports included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_exportIds":{"type":"array","description":"Ids of the exports included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_connectionIds":{"type":"array","description":"Ids of the connections included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_asyncHelperIds":{"type":"array","description":"Ids of the async helpers included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_fileDefinitionIds":{"type":"array","description":"Ids of the file definitions included in this edition's child integrations.","items":{"type":"string","format":"objectId"}}}}}}},"isParentChild":{"type":"boolean","description":"When true, this Integration App uses the parent-child model."}}}}},"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"]}}}}}},"paths":{"/v1/published":{"get":{"operationId":"listPublishedConnectors","tags":["Marketplace"],"summary":"List published Integration Apps (Connectors)","description":"Returns the marketplace catalog of **Integration Apps** — the\nCeligo-built, fully-managed connectors that install as a single\nintegration. Roughly 30 entries curated by Celigo.\n\nEach item is a marketplace listing, not an integration instance —\n`_id` is the marketplace entry id, the `applications` array enumerates\nthe systems the connector bridges, and `numInstalls` is the live install\ncounter across all Celigo accounts.\n\nFor a combined list that also includes user-installable Templates,\nuse `POST /v1/published/combined` instead. Entries here have no\n`docType` field -- that discriminator only appears in the combined\nendpoint's response.\n\nThe list may be paginated: follow the `Link` header's `rel=\"next\"` URL\nuntil the header is absent.","parameters":[{"$ref":"#/components/parameters/After"}],"responses":{"200":{"description":"Array of Integration App (Connector) marketplace entries.","headers":{"Link":{"description":"RFC 5988 pagination links. When more pages remain, includes a\n`<...>; rel=\"next\"` entry with an `after` cursor; absent on the\nfinal page.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MarketplaceEntry"}}}}},"400":{"description":"`after` is not a valid pagination cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/401-unauthorized"}}}}}}
```

## List Integration Apps and Templates together

> Returns a unified array of marketplace content — both Integration\
> Apps (\`docType: Connector\`) and Templates (\`docType: Template\`). Each\
> entry carries the \`docType\` discriminator so callers can partition, and\
> every Template entry also carries \`type\` (\`integration\` or \`mcpserver\`),\
> which decides its install route. The list may be paginated: follow the\
> \`Link\` header's \`rel="next"\` URL until the header is absent.\
> \
> Despite being a POST, this is a \*\*read-only, safe\*\* endpoint — the body\
> is an empty \`{}\` in the default CLI invocation. POST is used purely to\
> carry sort and filter parameters that don't fit cleanly in a query\
> string. The route is POST-only.\
> \
> Always send \`Content-Type: application/json\` with at least \`{}\` as\
> the body. For Connector-only listings, \`GET /v1/published\` is\
> lighter.

```json
{"openapi":"3.2.0","info":{"title":"Marketplace","version":"1.0.0"},"tags":[{"name":"Marketplace","description":"Browse Celigo marketplace content. The marketplace contains two types\nof entries:\n\n- **Integration Apps** — licensed, Celigo-built connectors (e.g.\n  Shopify–NetSuite) that install with managed updates.\n- **Templates** — reusable blueprints that create a set of resources\n  when installed: an integration with its flows, connections, exports,\n  imports, and scripts (`type: integration`), or an MCP server with its\n  tools (`type: mcpserver`).\n\nYou can preview what a template would create before committing to the\ninstall.\n\n## Marketplace entry schema\n\n{% openapi-schemas spec=\"marketplace\" schemas=\"MarketplaceEntry\" 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"}},"parameters":{"After":{"name":"after","in":"query","required":false,"description":"Opaque cursor for forward pagination. Pass the value from the `Link`\nresponse header (`rel=\"next\"`) to fetch the next page.","schema":{"type":"string"}}},"schemas":{"MarketplaceEntry":{"type":"object","required":["_id","name","applications","numInstalls","user","lastModified"],"description":"A single marketplace listing — either an Integration App (`docType: Connector`)\nor a Template (`docType: Template`). `docType` is only present in\n`POST /v1/published/combined` responses; `GET /v1/published` (Connectors\nonly) and `GET /v1/templates/published` (Templates only) omit the field.","properties":{"_id":{"type":"string","format":"objectId","description":"Marketplace entry id. For Templates, use this with `/v1/templates/{_id}/preview`."},"name":{"type":"string","description":"Display name of the marketplace entry."},"description":{"type":"string","description":"Marketing description shown in the marketplace listing. Always set on\nIntegration Apps; a Template publisher can leave it blank, in which\ncase the field is absent."},"type":{"type":"string","enum":["integration","mcpserver"],"description":"Kind of resource a Template installs, which decides the install route.\nPresent on every Template entry (`GET /v1/templates/published` and\n`docType: Template` entries of `POST /v1/published/combined`); absent\non Connector entries, which install through their own route."},"celigoAgentSupported":{"type":"boolean","description":"When true, the template is flagged for installation through the Celigo Agent (Ora)\nguided install. Present on every `docType: Template` entry of\n`POST /v1/published/combined`; absent on Connector entries and from\n`GET /v1/templates/published`."},"imageURL":{"type":"string","description":"Relative image path (e.g. `/images/company-logos/amazon-netsuite.png`)\nor absolute URL. Not always present on Template entries."},"websiteURL":{"type":"string","format":"uri","description":"External product page URL. Rare on Template entries."},"applications":{"type":"array","description":"Systems this marketplace entry bridges. Values are either\nwell-known application slugs (`netsuite`, `shopify`, `amazonmws`) or\nobject ids referencing an Application definition.","items":{"type":"string"}},"user":{"type":"object","description":"Publisher metadata.","properties":{"name":{"type":"string","description":"Publisher display name."},"company":{"type":"string","description":"Publisher's company. For Celigo-built content this is `\"Celigo\"`."}}},"trialEnabled":{"type":"boolean","description":"Whether this entry offers a trial install. Populated on Integration\nApp entries; rarely set on Templates."},"lastModified":{"type":"string","format":"date-time","description":"When the marketplace entry was last updated."},"numInstalls":{"type":"integer","description":"Live install counter across all Celigo accounts. Used as the\n`sort_by=numInstalls` key."},"docType":{"type":"string","enum":["Connector","Template"],"description":"Discriminator distinguishing Integration Apps from Templates. Only\npopulated in `POST /v1/published/combined` responses. Absent in\n`GET /v1/published` (Connectors only)."},"framework":{"type":"string","enum":["twoDotZero"],"description":"Integration App framework version. Present only on Connector entries\nthat use the 2.0 edition-based architecture. When set, the\n`twoDotZero` object contains edition metadata."},"twoDotZero":{"type":"object","description":"Edition metadata for Integration Apps using the 2.0 framework.\nPresent only when `framework` is `twoDotZero`.","properties":{"_integrationId":{"type":"string","format":"objectId","description":"Integration id that backs this Integration App."},"editions":{"type":"array","description":"Available editions (e.g. Starter, Professional). Empty when no editions are configured.","items":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","description":"System-generated unique identifier for the edition."},"displayName":{"type":"string","description":"Edition label shown to users (e.g. \"Starter Edition\")."},"order":{"type":"integer","description":"Display order among editions."},"resources":{"type":"object","description":"Resource ids included in this edition.","properties":{"_flowIds":{"type":"array","description":"Ids of the flows included in this edition.","items":{"type":"string","format":"objectId"}},"_importIds":{"type":"array","description":"Ids of the imports included in this edition.","items":{"type":"string","format":"objectId"}},"_exportIds":{"type":"array","description":"Ids of the exports included in this edition.","items":{"type":"string","format":"objectId"}},"_connectionIds":{"type":"array","description":"Ids of the connections included in this edition.","items":{"type":"string","format":"objectId"}},"_asyncHelperIds":{"type":"array","description":"Ids of the async helpers included in this edition.","items":{"type":"string","format":"objectId"}},"_fileDefinitionIds":{"type":"array","description":"Ids of the file definitions included in this edition.","items":{"type":"string","format":"objectId"}}}},"childResources":{"type":"object","description":"Child resource ids (for parent-child Integration Apps).","properties":{"_flowIds":{"type":"array","description":"Ids of the flows included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_importIds":{"type":"array","description":"Ids of the imports included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_exportIds":{"type":"array","description":"Ids of the exports included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_connectionIds":{"type":"array","description":"Ids of the connections included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_asyncHelperIds":{"type":"array","description":"Ids of the async helpers included in this edition's child integrations.","items":{"type":"string","format":"objectId"}},"_fileDefinitionIds":{"type":"array","description":"Ids of the file definitions included in this edition's child integrations.","items":{"type":"string","format":"objectId"}}}}}}},"isParentChild":{"type":"boolean","description":"When true, this Integration App uses the parent-child model."}}}}},"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"]}}}}}},"paths":{"/v1/published/combined":{"post":{"operationId":"listPublishedCombined","tags":["Marketplace"],"summary":"List Integration Apps and Templates together","description":"Returns a unified array of marketplace content — both Integration\nApps (`docType: Connector`) and Templates (`docType: Template`). Each\nentry carries the `docType` discriminator so callers can partition, and\nevery Template entry also carries `type` (`integration` or `mcpserver`),\nwhich decides its install route. The list may be paginated: follow the\n`Link` header's `rel=\"next\"` URL until the header is absent.\n\nDespite being a POST, this is a **read-only, safe** endpoint — the body\nis an empty `{}` in the default CLI invocation. POST is used purely to\ncarry sort and filter parameters that don't fit cleanly in a query\nstring. The route is POST-only.\n\nAlways send `Content-Type: application/json` with at least `{}` as\nthe body. For Connector-only listings, `GET /v1/published` is\nlighter.","parameters":[{"$ref":"#/components/parameters/After"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","enum":["numInstalls","name","lastModified"]},"description":"Sort key. `numInstalls` (descending) matches the CLI default.\nOmitting `sort_by` returns results in server-default order."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Body is required (even if empty) because the endpoint is POST\nand the server enforces `Content-Type: application/json` —\notherwise 415. No fields inside the body are currently honored by\nthe server for filtering."}}}},"responses":{"200":{"description":"Array of marketplace entries, both Connectors and Templates.","headers":{"Link":{"description":"RFC 5988 pagination links. When more pages remain, includes a\n`<...>; rel=\"next\"` entry with an `after` cursor; absent on the\nfinal page.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MarketplaceEntry"}}}}},"400":{"description":"Typically `invalid_query_param` when `sort_by` is outside the\naccepted enum or `after` is not a valid pagination cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/401-unauthorized"},"415":{"description":"Request lacked `Content-Type: application/json`. The server refuses\nto accept the body and returns this even when the body is an empty\nstring.","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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://developer.celigo.com/api/api-reference/marketplace-and-templates/marketplace.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
