Connect to External Ticket
Connect an existing Serval ticket to an existing external ticket in a sync channel. This establishes ongoing bidirectional sync between the tickets without creating a new external ticket. The external ticket must already exist in the target system.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The Serval ticket ID to connect
Body
The channel containing the external ticket
- Email
- Slack Channel
- Slack Dm
- Ticket Source
The external ticket ID (format depends on the channel type):
- For Slack (slack_channel or slack_dm): MUST be in the format "channelId:threadTs" Example: "C9DDYQ1B4:1779146751.061339" where channelId is the Slack channel ID (e.g., "C9DDYQ1B4") and threadTs is the Slack message timestamp (e.g., "1779146751.061339")
- For Jira: the canonical format is "cloudId:projectId:issueId" (the ID Serval's Jira ingestion uses); a bare issue key or numeric issue ID is also accepted
- For ServiceNow and other integrations: the sys_id or unique identifier from the external system This should be a globally unique identifier for the external ticket.
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. For Jira, this should contain the issue with a non-empty key (e.g. {"issue": {"id": "10123", "key": "PROJ-42"}}); if omitted or missing the key, Serval fetches the issue from Jira and stores that snapshot in place of the provided data. If the issue cannot be resolved, the connection is still created with the provided data, but the ticket's "View in Jira" link will be unavailable until the ticket is reconnected with resolvable data. For other channel types, if not provided, external links may not display correctly.
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.
Optional: Serval message IDs on this ticket to register as already present in the external ticket's channel. Registered messages are skipped by the egresser, so they will not be re-sent to the external system after the connection is established. Use this when you have already posted a summary of the prior conversation to the external system and do not want the individual historical messages replayed on top of it. Each message must belong to this ticket.
Response
Success
The response is of type ConnectTicketToExternalTicketResponse · object.

