Skip to navigation

Update an integration

View as Markdown

Changes only the fields present in the body. credentials replaces the stored credentials wholesale (no merge) and does not re-run the connection test — call POST /api/integrations/{integrationId}/test afterwards. fieldMapping replaces the whole mapping. campaignId: null unlinks the campaign. status accepts only active and paused; error and pending_auth are set by Jelliu. An empty body is accepted and only bumps updated_at.

Side effects. Encrypts new credentials; clears the integration caches; writes an audit entry (action update, resource integration, credentials redacted). Pausing an OAuth integration also takes it out of the background token-refresh scan.

Idempotency. Safe to retry: sending the same body again yields the same stored values.

Webhook events. audit.log_recorded for webhooks subscribed to it. See Webhooks.

Access

  • Required scope: full. Humans need the admin or owner role.
  • Rate limit: General API (120–600 requests/min per workspace by plan) plus the configuration-mutation limiter — 10 requests/min per workspace. See Rate limits.
  • Plan: Available on every plan.

Authentication

AuthorizationBearer

Workspace API key: jl_ followed by 64 lowercase hex characters, created by the workspace owner in the dashboard (Settings → API Keys) and sent as Authorization: Bearer jl_.... The plaintext is shown once, at creation; Jelliu stores only a SHA-256 hash. A workspace can hold up to 25 active keys.

ScopeGET / HEADPOST / PUT / PATCH / DELETEAdmin-only routes
readYesNoNo
writeYesYesNo
fullYesYesYes

Operations restricted to admins or owners reject keys without the full scope with 403, and say so in their description. No key, whatever its scope, can mint or revoke API keys or rotate a webhook secret — that requires a signed-in owner session. A revoked key stops authenticating within about 10 seconds. See Authentication.

Path parameters

integrationIdstringRequiredformat: "uuid"

Integration to update. A value that is not a UUID is rejected with 400.

Request

This endpoint expects an object.
labelstringOptional<=200 characters
New display name.
credentialsmap from strings to anyOptional
Replacement credentials. Encrypted at rest and never returned.
fieldMappingmap from strings to stringsOptional

Replacement mapping, source field → Jelliu contact field. Salesforce keys must be valid field identifiers.

campaignIdstring or nullOptionalformat: "uuid"

Campaign that inbound contacts go to; null unlinks it.

statusenumOptional

paused — stop background token refresh for the integration and mark it inactive (features that require active, such as the Kommo agent CRM tools, refuse to run). active — resume it.

Allowed values:

Response

The updated integration.
dataobject

The full integration record returned by retrieve, create and update: every Integration field plus the columns below. No secret material is returned: credentials is masked, and the OAuth access and refresh tokens and the inbound webhook secret are omitted. hasCredentials and hasWebhookSecret report whether they exist.

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
429
Too Many Requests Error