{
"_id": "507f1f77bcf86cd799439021",
"companyId": "<string>",
"name": "<string>",
"kind": "zendesk",
"config": {},
"aiContext": "<string>",
"routingConditions": [
{
"trackerId": "507f1f77bcf86cd799439011",
"relationToPrevious": "AND",
"operator": "equals",
"value": "<string>"
}
],
"credentialsHint": "••••a1b2",
"template": {
"preset": "custom",
"body": "<string>"
},
"enabled": true,
"status": "active",
"lastDeliveryAt": "2023-11-07T05:31:56Z",
"lastError": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"statusCode": 400,
"message": "<string>",
"error": "Bad Request"
}{
"statusCode": 403,
"message": "Authentication required",
"error": "Forbidden"
}{
"statusCode": 404,
"message": "External tracker not found",
"error": "Not Found"
}Update a ticket destination
All fields optional. Sending credentials rotates the stored secret. Sending kind switches the provider; config/credentials are then validated against the NEW kind.
{
"_id": "507f1f77bcf86cd799439021",
"companyId": "<string>",
"name": "<string>",
"kind": "zendesk",
"config": {},
"aiContext": "<string>",
"routingConditions": [
{
"trackerId": "507f1f77bcf86cd799439011",
"relationToPrevious": "AND",
"operator": "equals",
"value": "<string>"
}
],
"credentialsHint": "••••a1b2",
"template": {
"preset": "custom",
"body": "<string>"
},
"enabled": true,
"status": "active",
"lastDeliveryAt": "2023-11-07T05:31:56Z",
"lastError": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"statusCode": 400,
"message": "<string>",
"error": "Bad Request"
}{
"statusCode": 403,
"message": "Authentication required",
"error": "Forbidden"
}{
"statusCode": 404,
"message": "External tracker not found",
"error": "Not Found"
}Authorizations
Company API key. Obtain this from your Woku dashboard under Settings > API Keys. The same key used for the v0 endpoints.
Path Parameters
MongoDB ObjectId of the ticket destination.
^[0-9a-fA-F]{24}$Body
All fields optional; only the ones present are changed. A credentials payload rotates the stored secret (re-validated and re-encrypted). kind can change: config/credentials are then validated against the NEW kind.
120zendesk, custom, email Non-secret, kind-specific config, validated per kind:
zendesk:{ connectionId, groupId? }.connectionIdis the id of the company's Zendesk Integration;groupIdis the optional numeric agent group the ticket lands in.custom:{ url, method, headers? }.methodisPOSTorPUT;headersare non-secret extra headers (neverAuthorization).email:{ emails }. Up to 20 recipient addresses; the server sends the ticket as a formatted email, no external call.
Present = credential rotation. Write-only, kind-specific credentials. Never returned by the API; see credentialsHint on the response.
zendesk: authenticate through the company's Integration (connected separately in the dashboard). Send{}.custom:{ authType, ... }whereauthTypeisnone,basic(addsusername,password),bearer(addstoken) orapi-key-header(addsheaderName,headerValue).email: send{}. The server owns the mail transport; there is no credential to submit.
200020Show child attributes
Show child attributes
Only meaningful for kind custom; named kinds (zendesk/email) use a fixed preset and reject this field.
Show child attributes
Show child attributes
Response
Destination updated
Credentials are never included: credentialsHint shows only the masked last 4 characters of the stored secret (empty for kinds with no secret of their own).
"507f1f77bcf86cd799439021"
zendesk, custom, email Show child attributes
Show child attributes
Masked preview of the stored secret (e.g. "••••a1b2"). Empty when the kind carries no secret of its own.
"••••a1b2"
Only meaningful for kind custom; named kinds (zendesk/email) use a fixed preset and reject this field.
Show child attributes
Show child attributes
error = the last delivery or connection test failed (see lastError).
active, error Sanitized failure reason of the last delivery attempt. Never contains credentials.