Skip to main content
POST
/
v2
/
tickets
/
{ticket_id}
/
connect
Connect to External Ticket
curl --request POST \
  --url https://public.api.serval.com/v2/tickets/{ticket_id}/connect \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "channelTarget": {
    "email": {
      "targetUserType": "CHANNEL_SYNC_USER_TYPE_UNSPECIFIED"
    },
    "slackDm": {
      "integrationId": "<string>",
      "targetUserType": "CHANNEL_SYNC_USER_TYPE_UNSPECIFIED"
    },
    "ticketSource": {
      "ticketSourceId": "<string>",
      "integrationId": "<string>"
    }
  },
  "externalTicketId": "<string>",
  "externalTicketData": {},
  "externalTicketSubtype": "<string>"
}
'
{}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

ticket_id
string
required

The Serval ticket ID to connect

Body

application/json
channelTarget
channel_target · object

The channel containing the external ticket

externalTicketId
string

The external ticket ID (which depends on the channel type) but should be a globally unique identifier for the external ticket

externalTicketData
external_ticket_data · object

Optional: Raw external ticket data/metadata to store with the connection. This should be the JSON-serialized external ticket object from the external system. For ServiceNow, this should be the RequestedItem or Incident object. If not provided, external links may not display correctly.

externalTicketSubtype
string | null

Optional: Subtype of the external ticket within the integration. For ServiceNow, use "incident" or "requested_item" to specify the type. This determines which sync handler is used for ongoing synchronization.

Response

Success

The response is of type ConnectTicketToExternalTicketResponse · object.