API conventions
Patterns that are true across every endpoint in the Celigo REST API. Learn these once and you can read any page in the reference.
JSON language
Requests and responses are JSON. Set:
Accept: application/json
Content-Type: application/jsonNon-JSON bodies return 415 Unsupported Media Type. Binary uploads (file definitions, connector artifacts) use multipart/form-data on the specific endpoints that accept them — always documented on the endpoint page.
Resource IDs
Every resource has a 24-character hexadecimal _id:
5f83a9b2c7d3e8f1a2b3c4d5IDs are opaque. Do not parse them, sort them, or compare them as integers. The _id is stable for the lifetime of the resource and is what you use in all path parameters (/v1/integrations/{id}).
Some resources also expose a human-readable name. Names are not unique; always reference resources by _id in any automation.
Standard fields
Every resource carries these on read:
_id
string
Stable resource identifier.
name
string
Human name. Not unique.
createdAt
ISO date
When the resource was created.
lastModified
ISO date
When the resource was last written.
lastModifiedBy
string
_id of the user that last wrote it.
On POST you omit these; the server sets them.
HTTP methods
GET
Read. Never has side effects.
POST
Create a new resource, or invoke a verb-style action (e.g., POST /.../test).
PUT
Full replace of the resource body. Destructive; see below.
PATCH
Merge update. Only supported on a subset of endpoints.
DELETE
Delete.
PUT is destructive
⚠️
PUTis destructive — it replaces the entire resource body. Any field you omit is unset on the server.GETthe current body, modify only the fields you want to change, thenPUTthe complete object back.
To rename a connection without breaking it you must:
Fetch the full current body.
Request:
Response:
Modify the field(s) you want to change (
namein this case).
Modified name:
Execute
PUT /v1/connections/{id}with the complete modified body:
Let the CLI do it.
celigo connections set <id> name="renamed"performs the full GET-modify-PUT cycle for you. Skip the hand-rolled version unless you're working in a language without a Celigo SDK.
Case sensitivity
Case sensitivity is as follows:
Paths are lowercase.
Query params are camelCase.
Typediscriminators, likeadaptorType, are PascalCase and case-sensitive:
The same rules apply to type, _connectionType, and most other union discriminators.
Timestamps
Dates use ISO 8601 with a Z suffix, always UTC:
Avoid local-time strings on writes. Convert explicitly if your inputs are in another timezone.
Nullability
Optional scalar fields omitted on the response mean "not set."
Writing
nullto a field clears it. Writingundefined(omitting the key) on aPUTalso clears it — that's the destructive-PUT behavior above.Arrays default to
[], notnull. An empty array means "zero elements," not "unset."
Filtering query params
There's no universal search/q parameter. Filtering is per-endpoint — each list endpoint documents the exact query parameters it accepts, and unrecognized parameters are silently ignored. See Sort & filter.
Idempotency
GETis always safe to retry.DELETEis idempotent: the second call returns404 Not Foundbut the state is the same.POSTis not idempotent. A client retry after a network error may create a duplicate. If that's a concern,GETby a known unique field (likename+_integrationId) before thePOSTand skip if it already exists, or usePUTwith a client-chosen_idon endpoints that support it.
Last updated
Was this helpful?