> 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/lookup-caches.md).

# Lookup Caches

Lookup caches are in-memory key-value stores used during flow execution for fast lookups, deduplication, and cross-reference resolution.

Lookup caches are account-level resources — they are not scoped to a specific integration.

* Maximum size: 50 MB per cache
* Aggregate limit: 1 GB per environment
* Data is managed through separate endpoints (`getData`, `upsert`, `delete`, `purge`) that proxy to the Lookup Cache service

### Lookup cache schema

## The LookupCache object

```json
{"openapi":"3.2.0","info":{"title":"Lookup Caches","version":"1.0.0"},"components":{"schemas":{"LookupCache":{"type":"object","required":["_id","_userId","createdAt","lastModified"],"description":"Lookup cache object as returned by the API.","allOf":[{"$ref":"#/components/schemas/LookupCacheBase"},{"$ref":"#/components/schemas/ResourceResponse"},{"type":"object","properties":{"_userId":{"type":"string","format":"objectId","readOnly":true,"description":"User who owns this lookup cache."},"_templateId":{"type":"string","format":"objectId","readOnly":true,"description":"Template this lookup cache was installed from, when it originated from a template."},"_sourceId":{"type":"string","format":"objectId","readOnly":true,"description":"Origin resource ID when this cache was created by cloning or installing a template."},"size":{"type":"integer","minimum":0,"readOnly":true,"description":"Current size of the cached data in bytes. Maximum 50 MB per cache; 1 GB aggregate per environment."},"sizeInMB":{"type":"string","readOnly":true,"description":"Human-readable size rounded up to the nearest 5 MB increment.\n`\"0 MB\"` for empty caches, `\"<5 MB\"` through `\"<50 MB\"` for\nnon-empty caches, `\"50 MB\"` at the per-cache cap."},"draft":{"type":"boolean","readOnly":true,"description":"When true, this cache was created as a draft by the AI-assisted builder and has not yet been confirmed."},"draftExpiresAt":{"type":"string","format":"date-time","readOnly":true,"description":"When the draft cache expires and will be automatically deleted. Only present when `draft` is `true`."}}}]},"LookupCacheBase":{"type":"object","description":"Writable fields shared by the request and response schemas.","properties":{"name":{"type":"string","maxLength":200,"description":"Display name."},"description":{"type":"string","maxLength":5120,"description":"Purpose or contents of the cache."},"includeDataInTemplatesAndCloning":{"type":"boolean","default":false,"description":"Whether to include the cached key-value data when this cache is\nused in templates or cloned. When `false` (default), only\nmetadata transfers. Set to `true` for static reference tables."},"externalId":{"type":"string","description":"Caller-supplied identifier for cross-system correlation."}}},"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 lookup caches

> Returns lookup caches in the account.

```json
{"openapi":"3.2.0","info":{"title":"Lookup Caches","version":"1.0.0"},"tags":[{"name":"Lookup Caches","description":"Lookup caches are in-memory key-value stores used during flow\nexecution for fast lookups, deduplication, and cross-reference\nresolution.\n\nLookup caches are account-level resources — they are not scoped to\na specific integration.\n\n- Maximum size: 50 MB per cache\n- Aggregate limit: 1 GB per environment\n- Data is managed through separate endpoints (`getData`, `upsert`,\n  `delete`, `purge`) that proxy to the Lookup Cache service\n\n## Lookup cache schema\n\n{% openapi-schemas spec=\"lookupcache\" schemas=\"LookupCache\" 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":{"LookupCache":{"type":"object","required":["_id","_userId","createdAt","lastModified"],"description":"Lookup cache object as returned by the API.","allOf":[{"$ref":"#/components/schemas/LookupCacheBase"},{"$ref":"#/components/schemas/ResourceResponse"},{"type":"object","properties":{"_userId":{"type":"string","format":"objectId","readOnly":true,"description":"User who owns this lookup cache."},"_templateId":{"type":"string","format":"objectId","readOnly":true,"description":"Template this lookup cache was installed from, when it originated from a template."},"_sourceId":{"type":"string","format":"objectId","readOnly":true,"description":"Origin resource ID when this cache was created by cloning or installing a template."},"size":{"type":"integer","minimum":0,"readOnly":true,"description":"Current size of the cached data in bytes. Maximum 50 MB per cache; 1 GB aggregate per environment."},"sizeInMB":{"type":"string","readOnly":true,"description":"Human-readable size rounded up to the nearest 5 MB increment.\n`\"0 MB\"` for empty caches, `\"<5 MB\"` through `\"<50 MB\"` for\nnon-empty caches, `\"50 MB\"` at the per-cache cap."},"draft":{"type":"boolean","readOnly":true,"description":"When true, this cache was created as a draft by the AI-assisted builder and has not yet been confirmed."},"draftExpiresAt":{"type":"string","format":"date-time","readOnly":true,"description":"When the draft cache expires and will be automatically deleted. Only present when `draft` is `true`."}}}]},"LookupCacheBase":{"type":"object","description":"Writable fields shared by the request and response schemas.","properties":{"name":{"type":"string","maxLength":200,"description":"Display name."},"description":{"type":"string","maxLength":5120,"description":"Purpose or contents of the cache."},"includeDataInTemplatesAndCloning":{"type":"boolean","default":false,"description":"Whether to include the cached key-value data when this cache is\nused in templates or cloned. When `false` (default), only\nmetadata transfers. Set to `true` for static reference tables."},"externalId":{"type":"string","description":"Caller-supplied identifier for cross-system correlation."}}},"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/lookupcaches":{"get":{"summary":"List lookup caches","description":"Returns lookup caches in the account.","operationId":"listLookupCaches","tags":["Lookup Caches"],"parameters":[{"name":"limit","in":"query","description":"Maximum number of caches to return per page. Omit to return all caches.","schema":{"type":"integer","minimum":1}},{"name":"externalId","in":"query","description":"Filter to caches matching this exact external identifier.","schema":{"type":"string"}}],"responses":{"200":{"description":"One or more lookup caches found.","headers":{"Link":{"description":"RFC 5988 pagination links. Contains a `rel=\"next\"` entry when\nmore pages remain; absent on the final page.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LookupCache"}}}}},"204":{"description":"No lookup caches exist in the account."},"401":{"$ref":"#/components/responses/401-unauthorized"}}}}}}
```

## Create a lookup cache

> Creates a new empty lookup cache. Only \`name\` is required. Populate\
> it afterwards via \`POST /v1/lookupcaches/{\_id}/data\`.

```json
{"openapi":"3.2.0","info":{"title":"Lookup Caches","version":"1.0.0"},"tags":[{"name":"Lookup Caches","description":"Lookup caches are in-memory key-value stores used during flow\nexecution for fast lookups, deduplication, and cross-reference\nresolution.\n\nLookup caches are account-level resources — they are not scoped to\na specific integration.\n\n- Maximum size: 50 MB per cache\n- Aggregate limit: 1 GB per environment\n- Data is managed through separate endpoints (`getData`, `upsert`,\n  `delete`, `purge`) that proxy to the Lookup Cache service\n\n## Lookup cache schema\n\n{% openapi-schemas spec=\"lookupcache\" schemas=\"LookupCache\" 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":"Writable fields for creating or updating a lookup cache.","allOf":[{"$ref":"#/components/schemas/LookupCacheBase"}]},"LookupCacheBase":{"type":"object","description":"Writable fields shared by the request and response schemas.","properties":{"name":{"type":"string","maxLength":200,"description":"Display name."},"description":{"type":"string","maxLength":5120,"description":"Purpose or contents of the cache."},"includeDataInTemplatesAndCloning":{"type":"boolean","default":false,"description":"Whether to include the cached key-value data when this cache is\nused in templates or cloned. When `false` (default), only\nmetadata transfers. Set to `true` for static reference tables."},"externalId":{"type":"string","description":"Caller-supplied identifier for cross-system correlation."}}},"LookupCache":{"type":"object","required":["_id","_userId","createdAt","lastModified"],"description":"Lookup cache object as returned by the API.","allOf":[{"$ref":"#/components/schemas/LookupCacheBase"},{"$ref":"#/components/schemas/ResourceResponse"},{"type":"object","properties":{"_userId":{"type":"string","format":"objectId","readOnly":true,"description":"User who owns this lookup cache."},"_templateId":{"type":"string","format":"objectId","readOnly":true,"description":"Template this lookup cache was installed from, when it originated from a template."},"_sourceId":{"type":"string","format":"objectId","readOnly":true,"description":"Origin resource ID when this cache was created by cloning or installing a template."},"size":{"type":"integer","minimum":0,"readOnly":true,"description":"Current size of the cached data in bytes. Maximum 50 MB per cache; 1 GB aggregate per environment."},"sizeInMB":{"type":"string","readOnly":true,"description":"Human-readable size rounded up to the nearest 5 MB increment.\n`\"0 MB\"` for empty caches, `\"<5 MB\"` through `\"<50 MB\"` for\nnon-empty caches, `\"50 MB\"` at the per-cache cap."},"draft":{"type":"boolean","readOnly":true,"description":"When true, this cache was created as a draft by the AI-assisted builder and has not yet been confirmed."},"draftExpiresAt":{"type":"string","format":"date-time","readOnly":true,"description":"When the draft cache expires and will be automatically deleted. Only present when `draft` is `true`."}}}]},"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"]}}}}}},"paths":{"/v1/lookupcaches":{"post":{"summary":"Create a lookup cache","description":"Creates a new empty lookup cache. Only `name` is required. Populate\nit afterwards via `POST /v1/lookupcaches/{_id}/data`.","operationId":"createLookupCache","tags":["Lookup Caches"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Request"}}}},"responses":{"201":{"description":"Lookup cache created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupCache"}}}},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"}}}}}}
```

## Get a lookup cache

> Returns configuration, metadata, and current size of a lookup cache.\
> This returns metadata only — to read the cached key-value data,\
> use \`POST /v1/lookupcaches/{\_id}/getData\`.

```json
{"openapi":"3.2.0","info":{"title":"Lookup Caches","version":"1.0.0"},"tags":[{"name":"Lookup Caches","description":"Lookup caches are in-memory key-value stores used during flow\nexecution for fast lookups, deduplication, and cross-reference\nresolution.\n\nLookup caches are account-level resources — they are not scoped to\na specific integration.\n\n- Maximum size: 50 MB per cache\n- Aggregate limit: 1 GB per environment\n- Data is managed through separate endpoints (`getData`, `upsert`,\n  `delete`, `purge`) that proxy to the Lookup Cache service\n\n## Lookup cache schema\n\n{% openapi-schemas spec=\"lookupcache\" schemas=\"LookupCache\" 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":{"LookupCache":{"type":"object","required":["_id","_userId","createdAt","lastModified"],"description":"Lookup cache object as returned by the API.","allOf":[{"$ref":"#/components/schemas/LookupCacheBase"},{"$ref":"#/components/schemas/ResourceResponse"},{"type":"object","properties":{"_userId":{"type":"string","format":"objectId","readOnly":true,"description":"User who owns this lookup cache."},"_templateId":{"type":"string","format":"objectId","readOnly":true,"description":"Template this lookup cache was installed from, when it originated from a template."},"_sourceId":{"type":"string","format":"objectId","readOnly":true,"description":"Origin resource ID when this cache was created by cloning or installing a template."},"size":{"type":"integer","minimum":0,"readOnly":true,"description":"Current size of the cached data in bytes. Maximum 50 MB per cache; 1 GB aggregate per environment."},"sizeInMB":{"type":"string","readOnly":true,"description":"Human-readable size rounded up to the nearest 5 MB increment.\n`\"0 MB\"` for empty caches, `\"<5 MB\"` through `\"<50 MB\"` for\nnon-empty caches, `\"50 MB\"` at the per-cache cap."},"draft":{"type":"boolean","readOnly":true,"description":"When true, this cache was created as a draft by the AI-assisted builder and has not yet been confirmed."},"draftExpiresAt":{"type":"string","format":"date-time","readOnly":true,"description":"When the draft cache expires and will be automatically deleted. Only present when `draft` is `true`."}}}]},"LookupCacheBase":{"type":"object","description":"Writable fields shared by the request and response schemas.","properties":{"name":{"type":"string","maxLength":200,"description":"Display name."},"description":{"type":"string","maxLength":5120,"description":"Purpose or contents of the cache."},"includeDataInTemplatesAndCloning":{"type":"boolean","default":false,"description":"Whether to include the cached key-value data when this cache is\nused in templates or cloned. When `false` (default), only\nmetadata transfers. Set to `true` for static reference tables."},"externalId":{"type":"string","description":"Caller-supplied identifier for cross-system correlation."}}},"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"]}}}},"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/lookupcaches/{_id}":{"get":{"summary":"Get a lookup cache","description":"Returns configuration, metadata, and current size of a lookup cache.\nThis returns metadata only — to read the cached key-value data,\nuse `POST /v1/lookupcaches/{_id}/getData`.","operationId":"getLookupCacheById","tags":["Lookup Caches"],"parameters":[{"name":"_id","in":"path","description":"Lookup cache ID.","required":true,"schema":{"type":"string","format":"objectId"}}],"responses":{"200":{"description":"Lookup cache found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupCache"}}}},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## Update a lookup cache

> Replaces the cache's writable fields. Read-only fields (\`\_id\`,\
> \`\_userId\`, \`size\`, \`sizeInMB\`, timestamps) are silently ignored.\
> To write cached data, use \`POST /v1/lookupcaches/{\_id}/data\`.

```json
{"openapi":"3.2.0","info":{"title":"Lookup Caches","version":"1.0.0"},"tags":[{"name":"Lookup Caches","description":"Lookup caches are in-memory key-value stores used during flow\nexecution for fast lookups, deduplication, and cross-reference\nresolution.\n\nLookup caches are account-level resources — they are not scoped to\na specific integration.\n\n- Maximum size: 50 MB per cache\n- Aggregate limit: 1 GB per environment\n- Data is managed through separate endpoints (`getData`, `upsert`,\n  `delete`, `purge`) that proxy to the Lookup Cache service\n\n## Lookup cache schema\n\n{% openapi-schemas spec=\"lookupcache\" schemas=\"LookupCache\" 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":"Writable fields for creating or updating a lookup cache.","allOf":[{"$ref":"#/components/schemas/LookupCacheBase"}]},"LookupCacheBase":{"type":"object","description":"Writable fields shared by the request and response schemas.","properties":{"name":{"type":"string","maxLength":200,"description":"Display name."},"description":{"type":"string","maxLength":5120,"description":"Purpose or contents of the cache."},"includeDataInTemplatesAndCloning":{"type":"boolean","default":false,"description":"Whether to include the cached key-value data when this cache is\nused in templates or cloned. When `false` (default), only\nmetadata transfers. Set to `true` for static reference tables."},"externalId":{"type":"string","description":"Caller-supplied identifier for cross-system correlation."}}},"LookupCache":{"type":"object","required":["_id","_userId","createdAt","lastModified"],"description":"Lookup cache object as returned by the API.","allOf":[{"$ref":"#/components/schemas/LookupCacheBase"},{"$ref":"#/components/schemas/ResourceResponse"},{"type":"object","properties":{"_userId":{"type":"string","format":"objectId","readOnly":true,"description":"User who owns this lookup cache."},"_templateId":{"type":"string","format":"objectId","readOnly":true,"description":"Template this lookup cache was installed from, when it originated from a template."},"_sourceId":{"type":"string","format":"objectId","readOnly":true,"description":"Origin resource ID when this cache was created by cloning or installing a template."},"size":{"type":"integer","minimum":0,"readOnly":true,"description":"Current size of the cached data in bytes. Maximum 50 MB per cache; 1 GB aggregate per environment."},"sizeInMB":{"type":"string","readOnly":true,"description":"Human-readable size rounded up to the nearest 5 MB increment.\n`\"0 MB\"` for empty caches, `\"<5 MB\"` through `\"<50 MB\"` for\nnon-empty caches, `\"50 MB\"` at the per-cache cap."},"draft":{"type":"boolean","readOnly":true,"description":"When true, this cache was created as a draft by the AI-assisted builder and has not yet been confirmed."},"draftExpiresAt":{"type":"string","format":"date-time","readOnly":true,"description":"When the draft cache expires and will be automatically deleted. Only present when `draft` is `true`."}}}]},"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/lookupcaches/{_id}":{"put":{"summary":"Update a lookup cache","description":"Replaces the cache's writable fields. Read-only fields (`_id`,\n`_userId`, `size`, `sizeInMB`, timestamps) are silently ignored.\nTo write cached data, use `POST /v1/lookupcaches/{_id}/data`.","operationId":"updateLookupCache","tags":["Lookup Caches"],"parameters":[{"name":"_id","in":"path","description":"Lookup cache ID.","required":true,"schema":{"type":"string","format":"objectId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Request"}}}},"responses":{"200":{"description":"Lookup cache updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupCache"}}}},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## Delete a lookup cache

> Soft-deletes a lookup cache and all its data. Retained for 30 days\
> before permanent removal. To clear data without deleting the cache\
> itself, use \`DELETE /v1/lookupcaches/{\_id}/data/purge\` instead.

```json
{"openapi":"3.2.0","info":{"title":"Lookup Caches","version":"1.0.0"},"tags":[{"name":"Lookup Caches","description":"Lookup caches are in-memory key-value stores used during flow\nexecution for fast lookups, deduplication, and cross-reference\nresolution.\n\nLookup caches are account-level resources — they are not scoped to\na specific integration.\n\n- Maximum size: 50 MB per cache\n- Aggregate limit: 1 GB per environment\n- Data is managed through separate endpoints (`getData`, `upsert`,\n  `delete`, `purge`) that proxy to the Lookup Cache service\n\n## Lookup cache schema\n\n{% openapi-schemas spec=\"lookupcache\" schemas=\"LookupCache\" 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"]}}}},"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/lookupcaches/{_id}":{"delete":{"summary":"Delete a lookup cache","description":"Soft-deletes a lookup cache and all its data. Retained for 30 days\nbefore permanent removal. To clear data without deleting the cache\nitself, use `DELETE /v1/lookupcaches/{_id}/data/purge` instead.","operationId":"deleteLookupCache","tags":["Lookup Caches"],"parameters":[{"name":"_id","in":"path","description":"Lookup cache ID.","required":true,"schema":{"type":"string","format":"objectId"}}],"responses":{"204":{"description":"Lookup cache deleted."},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## Patch a lookup cache

> Partially updates a lookup cache using a JSON Patch document (RFC 6902).\
> Only \`replace\` is supported, on these paths:\
> \
> \| Path | Description |\
> \|------|-------------|\
> \| \`/name\` | Cache display name |\
> \| \`/description\` | Cache description |\
> \
> All other paths or operations are rejected.

```json
{"openapi":"3.2.0","info":{"title":"Lookup Caches","version":"1.0.0"},"tags":[{"name":"Lookup Caches","description":"Lookup caches are in-memory key-value stores used during flow\nexecution for fast lookups, deduplication, and cross-reference\nresolution.\n\nLookup caches are account-level resources — they are not scoped to\na specific integration.\n\n- Maximum size: 50 MB per cache\n- Aggregate limit: 1 GB per environment\n- Data is managed through separate endpoints (`getData`, `upsert`,\n  `delete`, `purge`) that proxy to the Lookup Cache service\n\n## Lookup cache schema\n\n{% openapi-schemas spec=\"lookupcache\" schemas=\"LookupCache\" 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":{"JsonPatchRequest":{"type":"array","description":"A JSON Patch document (RFC 6902). Send an array of patch\noperations on whitelisted fields — all other paths are rejected\nwith 422.","minItems":1,"items":{"$ref":"#/components/schemas/JsonPatchOperation"}},"JsonPatchOperation":{"type":"object","description":"A single JSON Patch operation (RFC 6902).","required":["op","path"],"properties":{"op":{"type":"string","enum":["replace","add","remove"],"description":"The operation to perform."},"path":{"type":"string","description":"JSON Pointer (RFC 6901) to the field to patch. Only\nwhitelisted paths are accepted — unlisted paths return\n`422` with `\"<path> is not a whitelisted property\"`."},"value":{"description":"The new value to set. Required for `replace` and `add`, omit for `remove`."}}},"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/lookupcaches/{_id}":{"patch":{"summary":"Patch a lookup cache","description":"Partially updates a lookup cache using a JSON Patch document (RFC 6902).\nOnly `replace` is supported, on these paths:\n\n| Path | Description |\n|------|-------------|\n| `/name` | Cache display name |\n| `/description` | Cache description |\n\nAll other paths or operations are rejected.","operationId":"patchLookupCache","tags":["Lookup Caches"],"parameters":[{"name":"_id","in":"path","description":"Lookup cache ID.","required":true,"schema":{"type":"string","format":"objectId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonPatchRequest"}}}},"responses":{"204":{"description":"Lookup cache patched successfully"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"},"422":{"$ref":"#/components/responses/422-unprocessable-entity"}}}}}}
```

## Preview cloning a lookup cache

> Returns resources that would be created by cloning this cache.\
> Lookup caches have no transitive dependencies, so the response\
> contains only the cache itself. No resources are created. Whether\
> the clone includes cached data depends on the source cache's\
> \`includeDataInTemplatesAndCloning\` setting.

```json
{"openapi":"3.2.0","info":{"title":"Lookup Caches","version":"1.0.0"},"tags":[{"name":"Lookup Caches","description":"Lookup caches are in-memory key-value stores used during flow\nexecution for fast lookups, deduplication, and cross-reference\nresolution.\n\nLookup caches are account-level resources — they are not scoped to\na specific integration.\n\n- Maximum size: 50 MB per cache\n- Aggregate limit: 1 GB per environment\n- Data is managed through separate endpoints (`getData`, `upsert`,\n  `delete`, `purge`) that proxy to the Lookup Cache service\n\n## Lookup cache schema\n\n{% openapi-schemas spec=\"lookupcache\" schemas=\"LookupCache\" 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":{"ClonePreviewResponse":{"type":"object","description":"Preview of the resources that would be created by a clone operation.\nEach object in the `objects` array represents a resource that will be\ncloned, including the target resource and all transitive dependencies\n(connections, scripts, exports, imports, etc.).\n","properties":{"objects":{"type":"array","description":"List of resources that would be created by the clone. Always includes\nthe target resource and may include transitive dependencies such as\nconnections, scripts, exports, imports, async helpers, and lookup caches.\n","items":{"type":"object","properties":{"model":{"type":"string","description":"The model type of the resource. Observed values include\nAsyncHelper, Connection, Export, Flow, Import, Integration,\nLookupCache, Script, and Tool.\n"},"doc":{"type":"object","description":"The full resource document that would be created by the clone.","additionalProperties":true}}}},"stackRequired":{"type":"boolean","description":"Whether the clone requires a stack (connector-level) environment to proceed."},"_stackId":{"type":["string","null"],"description":"The stack id associated with the resource, or null if no stack is involved."}}},"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"}}}}}},"paths":{"/v1/lookupcaches/{_id}/clone/preview":{"get":{"summary":"Preview cloning a lookup cache","description":"Returns resources that would be created by cloning this cache.\nLookup caches have no transitive dependencies, so the response\ncontains only the cache itself. No resources are created. Whether\nthe clone includes cached data depends on the source cache's\n`includeDataInTemplatesAndCloning` setting.","operationId":"previewCloneLookupCache","tags":["Lookup Caches"],"parameters":[{"name":"_id","in":"path","description":"Lookup cache ID.","required":true,"schema":{"type":"string","format":"objectId"}}],"responses":{"200":{"description":"Clone preview retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClonePreviewResponse"}}}},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## Upsert entries into a lookup cache

> Writes key-value entries to a lookup cache. Keys that already exist are\
> overwritten; new keys are created. Keys are strings; values may be strings or\
> objects — arrays at the top level are rejected (wrap them in an object). One\
> invalid value fails the entire batch with \`400 invalid\_value\`.\
> \
> The service rejects batches larger than \~1000 entries or \~5 MB of JSON.\
> Callers uploading more than that should split their payload; the Celigo CLI\
> auto-batches at 1000 entries / 5 MB and concatenates the per-key results.\
> Each cache is capped at 50 MB and the per-environment aggregate is 1 GB.

```json
{"openapi":"3.2.0","info":{"title":"Lookup Caches","version":"1.0.0"},"tags":[{"name":"Lookup Caches","description":"Lookup caches are in-memory key-value stores used during flow\nexecution for fast lookups, deduplication, and cross-reference\nresolution.\n\nLookup caches are account-level resources — they are not scoped to\na specific integration.\n\n- Maximum size: 50 MB per cache\n- Aggregate limit: 1 GB per environment\n- Data is managed through separate endpoints (`getData`, `upsert`,\n  `delete`, `purge`) that proxy to the Lookup Cache service\n\n## Lookup cache schema\n\n{% openapi-schemas spec=\"lookupcache\" schemas=\"LookupCache\" 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":{"LookupCacheDataUpsertRequest":{"type":"object","description":"Request body for upserting key-value entries into a lookup cache. `data` must be\na non-empty array. Keys already present are overwritten; new keys are created.\n\nThe service rejects batches larger than ~1000 entries or ~5 MB — callers inserting\nmore than that should split into multiple requests (the Celigo CLI auto-batches\nat 1000 entries / 5 MB).","properties":{"data":{"type":"array","minItems":1,"description":"Entries to upsert. Must contain at least one item.","items":{"$ref":"#/components/schemas/LookupCacheDataEntry"}}},"required":["data"]},"LookupCacheDataEntry":{"type":"object","description":"A single key-value pair stored in a lookup cache. Keys are strings; values are\neither strings or objects — the cache preserves whichever JSON shape was\nupserted. Top-level arrays are **rejected** at upsert with\n`400 invalid_value \"The value provided corresponding to the key: <k> is invalid\"`;\ncallers that need to store an array should wrap it in an object\n(e.g. `{ \"items\": [...] }`).","properties":{"key":{"type":"string","description":"Lookup key. Treated as an opaque string by the cache — case-sensitive, no\nnormalization. The same cache can hold multiple entries that differ only in\ncase (e.g. `CA` and `ca`)."},"value":{"description":"Value associated with the key. May be a string or an object; nested arrays\ninside an object are fine. Top-level arrays are rejected — wrap them.\nConsumers should check the runtime type before use.","oneOf":[{"title":"String value","type":"string"},{"title":"Object value","type":"object","additionalProperties":true}]}}},"LookupCacheDataUpsertResponse":{"type":"object","description":"Response from a successful lookup-cache upsert. Contains a per-key success flag\nfor every entry in the request — in the same order as submitted.","properties":{"success":{"type":"boolean","description":"When true, the server accepted the upsert request. Individual key results are in `data`."},"data":{"type":"array","description":"Per-key results, one entry per submitted key.","items":{"$ref":"#/components/schemas/LookupCacheKeyResult"}}}},"LookupCacheKeyResult":{"type":"object","description":"Per-key result returned by the upsert and delete-keys endpoints. The `success`\nflag reflects whether the individual key operation succeeded; the wrapping\nresponse's `success` flag reflects whether the request as a whole was accepted.\n\nFor deletes, `success: true` is returned even for keys that did not exist in the\ncache — the API does not distinguish between \"deleted\" and \"absent.\"","properties":{"key":{"type":"string","description":"The key this result applies to."},"success":{"type":"boolean","description":"When true, the operation on this key completed successfully."}}},"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/lookupcaches/{_id}/data":{"post":{"operationId":"upsertLookupCacheData","tags":["Lookup Caches"],"summary":"Upsert entries into a lookup cache","description":"Writes key-value entries to a lookup cache. Keys that already exist are\noverwritten; new keys are created. Keys are strings; values may be strings or\nobjects — arrays at the top level are rejected (wrap them in an object). One\ninvalid value fails the entire batch with `400 invalid_value`.\n\nThe service rejects batches larger than ~1000 entries or ~5 MB of JSON.\nCallers uploading more than that should split their payload; the Celigo CLI\nauto-batches at 1000 entries / 5 MB and concatenates the per-key results.\nEach cache is capped at 50 MB and the per-environment aggregate is 1 GB.","parameters":[{"name":"_id","in":"path","required":true,"description":"Lookup cache id.","schema":{"type":"string","format":"objectId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupCacheDataUpsertRequest"}}}},"responses":{"200":{"description":"Entries upserted. Per-key success flags in response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupCacheDataUpsertResponse"}}}},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## Delete specific keys from a lookup cache

> Removes named keys from a lookup cache. Send the keys to delete in the request\
> body. To wipe every entry instead, call \`DELETE /v1/lookupcaches/{\_id}/data/purge\`.\
> \
> Send the request with \`Content-Type: application/json\`. The body must be a\
> JSON object with a \`keys\` property; a request with no body is rejected as\
> \`missing\_parameter\`. The response reports \`success: true\` for every\
> submitted key, including keys that did not exist in the cache.

```json
{"openapi":"3.2.0","info":{"title":"Lookup Caches","version":"1.0.0"},"tags":[{"name":"Lookup Caches","description":"Lookup caches are in-memory key-value stores used during flow\nexecution for fast lookups, deduplication, and cross-reference\nresolution.\n\nLookup caches are account-level resources — they are not scoped to\na specific integration.\n\n- Maximum size: 50 MB per cache\n- Aggregate limit: 1 GB per environment\n- Data is managed through separate endpoints (`getData`, `upsert`,\n  `delete`, `purge`) that proxy to the Lookup Cache service\n\n## Lookup cache schema\n\n{% openapi-schemas spec=\"lookupcache\" schemas=\"LookupCache\" 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":{"LookupCacheDataDeleteRequest":{"type":"object","description":"Request body for deleting specific keys from a lookup cache. The `keys` array\nmay be empty (the endpoint returns `{success: true, data: []}`), but the field\nitself must be present — a request body missing `keys` is rejected with\n`missing_parameter`.\n\nTo remove every entry from a cache instead, call\n`DELETE /v1/lookupcaches/{_id}/data/purge`.","properties":{"keys":{"type":"array","description":"Keys to remove from the cache.","items":{"type":"string"}}},"required":["keys"]},"LookupCacheDataDeleteResponse":{"type":"object","description":"Response from a successful delete-keys call. Mirrors the upsert response shape:\none per-key result entry per submitted key, in submission order.\n\nNote: `success: true` is returned for every submitted key regardless of whether\nit actually existed in the cache — the endpoint does not distinguish between\n\"deleted\" and \"absent.\" Callers that need that distinction should read the\ncache first.","properties":{"success":{"type":"boolean","description":"When true, the server accepted the delete request. Individual key results are in `data`."},"data":{"type":"array","description":"Per-key results, one entry per submitted key.","items":{"$ref":"#/components/schemas/LookupCacheKeyResult"}}}},"LookupCacheKeyResult":{"type":"object","description":"Per-key result returned by the upsert and delete-keys endpoints. The `success`\nflag reflects whether the individual key operation succeeded; the wrapping\nresponse's `success` flag reflects whether the request as a whole was accepted.\n\nFor deletes, `success: true` is returned even for keys that did not exist in the\ncache — the API does not distinguish between \"deleted\" and \"absent.\"","properties":{"key":{"type":"string","description":"The key this result applies to."},"success":{"type":"boolean","description":"When true, the operation on this key completed successfully."}}},"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/lookupcaches/{_id}/data":{"delete":{"operationId":"deleteLookupCacheDataKeys","tags":["Lookup Caches"],"summary":"Delete specific keys from a lookup cache","description":"Removes named keys from a lookup cache. Send the keys to delete in the request\nbody. To wipe every entry instead, call `DELETE /v1/lookupcaches/{_id}/data/purge`.\n\nSend the request with `Content-Type: application/json`. The body must be a\nJSON object with a `keys` property; a request with no body is rejected as\n`missing_parameter`. The response reports `success: true` for every\nsubmitted key, including keys that did not exist in the cache.","parameters":[{"name":"_id","in":"path","required":true,"description":"Lookup cache id.","schema":{"type":"string","format":"objectId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupCacheDataDeleteRequest"}}}},"responses":{"200":{"description":"Delete accepted. Per-key results in response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupCacheDataDeleteResponse"}}}},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## Read entries from a lookup cache

> Returns entries stored in a lookup cache. Called as \`POST\` (not \`GET\`) so the\
> query — explicit keys or a prefix — can travel in the request body.\
> \
> Body variants:\
> &#x20; \- omitted or \`{}\` → first page of all entries (up to \~1000, unordered).\
> &#x20; \- \`{keys: \[...]}\` → one entry per requested key. Hits carry \`value\`; misses\
> &#x20;   carry \`error: {message}\` — missing keys are \*\*reported\*\*, not silently\
> &#x20;   omitted. Branch on \`error\` vs \`value\` when consuming the response.\
> &#x20; \- \`{startsWith: "prefix"}\` → every entry whose key begins with \`prefix\`\
> &#x20;   (case-sensitive).\
> \
> \`keys\` and \`startsWith\` are treated as mutually exclusive client-side; if both\
> are supplied the server honors \`keys\` and ignores \`startsWith\`. Keys are\
> case-sensitive. There is no pagination cursor for unfiltered reads; for\
> caches larger than \~1000 entries, use a prefix scheme with \`startsWith\`.

```json
{"openapi":"3.2.0","info":{"title":"Lookup Caches","version":"1.0.0"},"tags":[{"name":"Lookup Caches","description":"Lookup caches are in-memory key-value stores used during flow\nexecution for fast lookups, deduplication, and cross-reference\nresolution.\n\nLookup caches are account-level resources — they are not scoped to\na specific integration.\n\n- Maximum size: 50 MB per cache\n- Aggregate limit: 1 GB per environment\n- Data is managed through separate endpoints (`getData`, `upsert`,\n  `delete`, `purge`) that proxy to the Lookup Cache service\n\n## Lookup cache schema\n\n{% openapi-schemas spec=\"lookupcache\" schemas=\"LookupCache\" 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":{"LookupCacheDataReadRequest":{"type":"object","description":"Request body for reading entries from a lookup cache.\n\nAll fields are optional. If omitted, the endpoint returns the first page of the\ncache (up to ~1000 entries, unordered). `keys` and `startsWith` should be\ntreated as mutually exclusive — if both are supplied the server honors `keys`\nand ignores `startsWith`. An empty JSON body (`{}`) is equivalent to calling\nthe endpoint with no body.","properties":{"keys":{"type":"array","description":"Explicit keys to fetch. The response returns one `data[]` entry per\nrequested key: hits carry `value`, misses carry `error: {message}` — both\nsurface in the same array. Branch on the presence of `error` vs `value`\nwhen consuming the response.","items":{"type":"string"}},"startsWith":{"type":"string","description":"Key prefix filter. Returns every entry whose key begins with the supplied\nstring (case-sensitive). Useful for namespaced keys like\n`tenant-42/customer-…`."}}},"LookupCacheDataReadResponse":{"type":"object","description":"Response from a successful lookup-cache read. Contains the matching entries.\n\nWhen no filter is supplied, the response contains the first page of the cache\n(up to ~1000 entries). The API does not currently expose a pagination cursor for\nlarge caches — callers that need to iterate a cache larger than the page limit\nshould use `startsWith` to narrow the result set, or key their data with a known\nprefix scheme.","properties":{"success":{"type":"boolean","description":"When true, the read request completed successfully."},"data":{"type":"array","description":"Per-key results, one entry per key returned by the read. Hits carry `key` + `value`\n(`LookupCacheDataEntry`); misses on `keys[]`-filtered reads carry `key` + `error`\n(`LookupCacheDataMissingEntry`). Callers should switch on the presence of `error`\nvs `value` to distinguish. Order is not guaranteed.","items":{"oneOf":[{"$ref":"#/components/schemas/LookupCacheDataEntry"},{"$ref":"#/components/schemas/LookupCacheDataMissingEntry"}]}}}},"LookupCacheDataEntry":{"type":"object","description":"A single key-value pair stored in a lookup cache. Keys are strings; values are\neither strings or objects — the cache preserves whichever JSON shape was\nupserted. Top-level arrays are **rejected** at upsert with\n`400 invalid_value \"The value provided corresponding to the key: <k> is invalid\"`;\ncallers that need to store an array should wrap it in an object\n(e.g. `{ \"items\": [...] }`).","properties":{"key":{"type":"string","description":"Lookup key. Treated as an opaque string by the cache — case-sensitive, no\nnormalization. The same cache can hold multiple entries that differ only in\ncase (e.g. `CA` and `ca`)."},"value":{"description":"Value associated with the key. May be a string or an object; nested arrays\ninside an object are fine. Top-level arrays are rejected — wrap them.\nConsumers should check the runtime type before use.","oneOf":[{"title":"String value","type":"string"},{"title":"Object value","type":"object","additionalProperties":true}]}}},"LookupCacheDataMissingEntry":{"type":"object","description":"Per-key read result returned when a requested `keys[]` entry was not present in\nthe cache. Surfaces in `data[]` alongside successful `LookupCacheDataEntry`\nitems — callers should check for an `error` sub-object to distinguish hits from\nmisses.","properties":{"key":{"type":"string","description":"The key that was not found."},"error":{"type":"object","description":"Miss diagnostic.","properties":{"message":{"type":"string","description":"Human-readable explanation of the miss."}}}}},"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/lookupcaches/{_id}/getData":{"post":{"operationId":"getLookupCacheData","tags":["Lookup Caches"],"summary":"Read entries from a lookup cache","description":"Returns entries stored in a lookup cache. Called as `POST` (not `GET`) so the\nquery — explicit keys or a prefix — can travel in the request body.\n\nBody variants:\n  - omitted or `{}` → first page of all entries (up to ~1000, unordered).\n  - `{keys: [...]}` → one entry per requested key. Hits carry `value`; misses\n    carry `error: {message}` — missing keys are **reported**, not silently\n    omitted. Branch on `error` vs `value` when consuming the response.\n  - `{startsWith: \"prefix\"}` → every entry whose key begins with `prefix`\n    (case-sensitive).\n\n`keys` and `startsWith` are treated as mutually exclusive client-side; if both\nare supplied the server honors `keys` and ignores `startsWith`. Keys are\ncase-sensitive. There is no pagination cursor for unfiltered reads; for\ncaches larger than ~1000 entries, use a prefix scheme with `startsWith`.","parameters":[{"name":"_id","in":"path","required":true,"description":"Lookup cache id.","schema":{"type":"string","format":"objectId"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupCacheDataReadRequest"}}}},"responses":{"200":{"description":"Matched entries.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupCacheDataReadResponse"}}}},"400":{"$ref":"#/components/responses/400-bad-request"},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## Purge all data from a lookup cache

> Removes every entry from a lookup cache. The cache itself is preserved — only\
> its contents are cleared. Use this instead of deleting-and-recreating when you\
> want to keep the cache's \`\_id\`, name, and any references from flows intact.\
> This operation is irreversible. To delete a subset of keys, use\
> \`DELETE /v1/lookupcaches/{\_id}/data\` with a \`keys\` body.

```json
{"openapi":"3.2.0","info":{"title":"Lookup Caches","version":"1.0.0"},"tags":[{"name":"Lookup Caches","description":"Lookup caches are in-memory key-value stores used during flow\nexecution for fast lookups, deduplication, and cross-reference\nresolution.\n\nLookup caches are account-level resources — they are not scoped to\na specific integration.\n\n- Maximum size: 50 MB per cache\n- Aggregate limit: 1 GB per environment\n- Data is managed through separate endpoints (`getData`, `upsert`,\n  `delete`, `purge`) that proxy to the Lookup Cache service\n\n## Lookup cache schema\n\n{% openapi-schemas spec=\"lookupcache\" schemas=\"LookupCache\" 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"]}}}},"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/lookupcaches/{_id}/data/purge":{"delete":{"operationId":"purgeLookupCacheData","tags":["Lookup Caches"],"summary":"Purge all data from a lookup cache","description":"Removes every entry from a lookup cache. The cache itself is preserved — only\nits contents are cleared. Use this instead of deleting-and-recreating when you\nwant to keep the cache's `_id`, name, and any references from flows intact.\nThis operation is irreversible. To delete a subset of keys, use\n`DELETE /v1/lookupcaches/{_id}/data` with a `keys` body.","parameters":[{"name":"_id","in":"path","required":true,"description":"Lookup cache id.","schema":{"type":"string","format":"objectId"}}],"responses":{"204":{"description":"Cache data was purged. No response body."},"401":{"$ref":"#/components/responses/401-unauthorized"},"404":{"$ref":"#/components/responses/404-not-found"}}}}}}
```

## List dependencies of a lookup cache

> Returns the set of resources that depend on the specified resource.\
> The response is an object whose keys are dependent-resource types\
> (e.g. \`flows\`, \`imports\`) and whose values are arrays of dependency\
> entries. An empty object \`{}\` means no dependents exist (also\
> returned for a well-formatted but nonexistent id).

```json
{"openapi":"3.2.0","info":{"title":"Lookup Caches","version":"1.0.0"},"tags":[{"name":"Lookup Caches","description":"Lookup caches are in-memory key-value stores used during flow\nexecution for fast lookups, deduplication, and cross-reference\nresolution.\n\nLookup caches are account-level resources — they are not scoped to\na specific integration.\n\n- Maximum size: 50 MB per cache\n- Aggregate limit: 1 GB per environment\n- Data is managed through separate endpoints (`getData`, `upsert`,\n  `delete`, `purge`) that proxy to the Lookup Cache service\n\n## Lookup cache schema\n\n{% openapi-schemas spec=\"lookupcache\" schemas=\"LookupCache\" 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":{"DependencyResponse":{"type":"object","description":"Map of dependent-resource types to arrays of dependency entries.\nKeys are plural resource type strings (e.g. `flows`, `imports`,\n`connections`). An empty object `{}` means no dependents.\n","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/DependencyEntry"}}},"DependencyEntry":{"type":"object","description":"A single resource that depends on the queried resource.","properties":{"id":{"type":"string","description":"Unique identifier of the dependent resource."},"name":{"type":"string","description":"Display name of the dependent resource."},"paths":{"type":"array","description":"Dot-notation paths within the dependent resource that reference\nthe target resource. `[*]` denotes array elements.","items":{"type":"string"}},"accessLevel":{"type":"string","description":"The caller's access level on the dependent resource."},"dependencyIds":{"type":"object","description":"Map of resource types to arrays of IDs that this dependent\nresource references on the target. Keys are singular or plural\nresource type strings; values are arrays of ID strings.","additionalProperties":{"type":"array","items":{"type":"string"}}}},"required":["id","name","paths","accessLevel","dependencyIds"]}},"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/lookupcaches/{_id}/dependencies":{"get":{"operationId":"listLookupCacheDependencies","tags":["Lookup Caches"],"summary":"List dependencies of a lookup cache","description":"Returns the set of resources that depend on the specified resource.\nThe response is an object whose keys are dependent-resource types\n(e.g. `flows`, `imports`) and whose values are arrays of dependency\nentries. An empty object `{}` means no dependents exist (also\nreturned for a well-formatted but nonexistent id).","parameters":[{"name":"_id","in":"path","required":true,"description":"Resource ID.","schema":{"type":"string","format":"objectId"}}],"responses":{"200":{"description":"Dependency map. Keys are resource-type strings; values are arrays\nof dependency entries. Returns `{}` when no dependents exist.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DependencyResponse"}}}},"401":{"$ref":"#/components/responses/401-unauthorized"}}}}}}
```


---

# 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/lookup-caches.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.
