Update Connector
Update a connector's configuration.
PATCH /api/connectors/{id}
Authorization
- Analyst: Required
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
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Source connector ID |
Request Body
All fields are optional; omitted fields are carried over from the source connector.
| Field | Type | Required | Description |
|---|---|---|---|
change_type | string | No | Drives 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) |
version | string | No | Explicit version string (overrides change_type) |
commit_message | string | No | Free-text note attached to the new version |
endpoints | array | No | Updated endpoint configurations |
auth_config | object | No | Replacement auth configuration |
headers | object | No | Default headers (merged into auth_config.defaultHeaders) |
authType | string | No | Auth type override (api_key/bearer/oauth2/basic/query_params/token_exchange) |
status | string | No | New status: testing, production, disabled |
rate_limit_global | object | No | Global rate limit |
default_data_extraction | object | No | Fallback data-extraction config |
runtime_parameters | array | No | Runtime parameter definitions |
platform_url | string | No | Base API URL |
documentation_url | string | No | Documentation 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:
- Creates a new connector row (new UUID) with the bumped version
- Atomically soft-deletes the source row (a conditional claim — the loser of a concurrent publish gets
409) - Migrates active customer credentials, test credentials, and test data onto the new version (remapping endpoint IDs by method+path)
- 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."
}