Skip to main content

Update Connector

Update a connector's configuration.

PATCH /api/connectors/{id}

Authorization

  • Analyst: Required
Important

This is the publish flow. Every successful PATCH creates a brand-new connector with a new UUID (for forensic integrity) and soft-deletes the source connector. Test data, customer/test credentials, generation logs and endpoint-ID references are remapped (matched by method+path) onto the new version. Existing collections keep referencing the old (soft-deleted) version.

Path Parameters

ParameterTypeRequiredDescription
idstringYesSource connector ID

Request Body

All fields are optional; omitted fields are carried over from the source connector.

FieldTypeRequiredDescription
change_typestringNoDrives the semantic version bump: major (X.0.0), minor (0.X.0), patch (0.0.X). Auto-detected when omitted (major if endpoints present, else minor)
versionstringNoExplicit version string (overrides change_type)
commit_messagestringNoFree-text note attached to the new version
endpointsarrayNoUpdated endpoint configurations
auth_configobjectNoReplacement auth configuration
headersobjectNoDefault headers (merged into auth_config.defaultHeaders)
authTypestringNoAuth type override (api_key/bearer/oauth2/basic/query_params/token_exchange)
statusstringNoNew status: testing, production, disabled
rate_limit_globalobjectNoGlobal rate limit
default_data_extractionobjectNoFallback data-extraction config
runtime_parametersarrayNoRuntime parameter definitions
platform_urlstringNoBase API URL
documentation_urlstringNoDocumentation link

Request Example

{
"change_type": "major",
"commit_message": "Add conversations.history endpoint",
"endpoints": [
{
"id": "ep_conv_list",
"path": "/conversations.list",
"method": "GET",
"order": 1,
"enabled": true
}
]
}

Response

The id in the response is the new connector's UUID — clients must switch to it after publishing.

{
"id": "conn_slack002",
"message": "Connector updated - new version 2.0.0 created",
"version": "2.0.0",
"previous_version": "1.2.0",
"previous_id": "conn_slack001",
"endpoints": [ ... ]
}

Versioning Behavior

Each publish:

  1. Creates a new connector row (new UUID) with the bumped version
  2. Atomically soft-deletes the source row (a conditional claim — the loser of a concurrent publish gets 409)
  3. Migrates active customer credentials, test credentials, and test data onto the new version (remapping endpoint IDs by method+path)
  4. Existing collections continue referencing their original (soft-deleted) version

Example: Update Endpoints (New Major Version)

curl -X PATCH "https://api.traces.io/api/connectors/conn_slack001" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"change_type": "major",
"endpoints": [...]
}'

Error Responses

400 Bad Request

Request body failed validation:

{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid request body",
"details": { "version": ["..."] }
}
}

409 Conflict

Another analyst published (claimed) the source connector concurrently. The response uses a flat shape (not the nested error object):

{
"error": "CONFLICT",
"code": "ALREADY_PUBLISHED",
"message": "This connector was already published by another analyst. Please reload."
}