Tickets
Get one complete
Returns a ticket together with whichever related blocks the data argument asks for (conversations, suggested reply, auto-saved draft, similar tickets, other tickets from the same requester, quick actions and the applied SLA rule), optionally machine-translated, and answers 301 with the surviving ticket's id when the ticket has been merged into another.
Asking for the conversations block also marks the ticket and its unread replies as read and publishes a ticket-opened event, so the call is not side-effect free, and include_soft_deleted only reaches deleted tickets while they are still inside the 14 day restore window.
GET
/api/{tenant:minlength(2)}/v{version:apiVersion}/tickets/{id}/complete
- Authorisation
- Minimum role: USER
Request arguments
| Name |
Type |
Source |
| id | Int32 | |
| language_source | String | Query |
| language_target | String | Query |
| data | ENUM ticket_get_one_complete_data[] | Query |
| include_content_as_html | Boolean | Query |
| include_soft_deleted | Boolean | Query |
Request body example
Response
- Status
- 200 (OK)
- Type
- DTO_ticket_complete
- Wrapper
- DTO_response_wrap
- Other statuses
- 400 (BadRequest), 403 (Forbidden)
Response body example
DTO_ticket_complete
| Name | Type | ReadOnly | Description |
| ticket | Object | | The ticket itself, returned as a dynamic object carrying the properties described by DTO_ticket plus one key per custom field configured in the workspace |
| suggested_reply | DTO_ticket_conversation | | The AI drafted reply to the newest inbound message, lifted out of conversations and returned here instead, null when none has been generated |
| conversations | DTO_ticket_conversation[] | | The messages on the ticket, without the AI reply suggestion, and without auto-replies unless the AUTO_REPLIES data mode was requested |
| auto_saved_reply | DTO_auto_save | | The calling User's unsent reply draft for this ticket, stored automatically while they type, null when there is no draft |
| more_like_this | DTO_search_response[] | | Tickets and knowledge base articles whose content resembles this ticket, found by vector search and excluding the ticket itself, only filled in for the MORE_LIKE_THIS data mode |
| quick_actions | DTO_ticket_quick_actions | | The calling User's remembered defaults for the ticket screen (status, priority, group, assignee, language and tag) that back the one-click action buttons, only filled in for the INIT data mode |
| more_from_requester | DTO_ticket_more_from_requester | | Up to 20 other tickets from the same requester, newest first, only filled in for the MORE_FROM_REQUESTER data mode |
| sla | DTO_sla_ticket_info | | The SLA policy that applies to this ticket, or null when the workspace has no SLA or no
rule matched. Carries no ids, so the same DTO serves both API surfaces. |
DTO_ticket_conversation
| Name | Type | ReadOnly | Description |
| sys_status | DTO_reference_color | | Status to move the parent ticket to as this message is created, where only one status may be supplied across the messages sent in a single call |
| created_by | DTO_reference_user | ReadOnly | The User who wrote the message, null when it came from someone who is not a User in the workspace |
| last_updated_by | DTO_reference_user | ReadOnly | The User who last edited the message, null while it has not been edited since it was created |
| requester | DTO_contact | | The contact who sent the message, set on messages that arrived from outside and null on messages written in Deskhero |
| last_message_extracted | String | | Only the new text of an inbound email with the quoted thread beneath it stripped away, lines joined with HTML line breaks, null when nothing could be isolated (heavily formatted HTML mail, for example) |
| sys_attachments | DTO_reference_attachment[] | | Files attached to this message, each referenced by its attachment id |
| id | Int32 | ReadOnly | Id of this message, assigned by Deskhero from a different sequence than the ticket number in ticket_id |
| ticket_id | Int32 | | The number of the ticket this message belongs to |
| created | DateTime | ReadOnly | When the message was added to the ticket, in UTC |
| last_updated | DateTime | ReadOnly | When the message was last written to, in UTC |
| type | ENUM ticket_conversation_type | | What kind of message this is: REPLY_INBOUND and REPLY_OUTBOUND for email replies, NOTE_PRIVATE
and NOTE_PUBLIC for notes, FORWARD, SUGGESTED_REPLY for an AI draft, AUTO_REPLY_AI and
AUTO_REPLY_STATIC for automatic answers, and CHAT_USER and CHAT_BOT for chat-bot messages. |
| email_addresses | DTO_email_address[] | | Addresses on the message, holding sender and recipients for mail that arrived and the TO, CC and BCC recipients (at most 20, or 3 on the free plan) when sending a reply |
| sys_content_rich | DTO_rich_text | | Body of the message, carried as rich text in whichever of the html, tiptap and editorjs representations was stored |
DTO_reference_color
| Name | Type | ReadOnly | Description |
| bg_color | String | ReadOnly | Bg color |
| text_color | String | ReadOnly | Text color |
| id | Int32 | | Id |
| label | Object | ReadOnly | Label |
DTO_reference_user
| Name | Type | ReadOnly | Description |
| profile_pic | String | ReadOnly | Profile pic |
| email | String | ReadOnly | Email |
| id | Int32 | | Id |
| label | Object | ReadOnly | Label |
| Name | Type | ReadOnly | Description |
| user_id | Int32 | | User id |
| email | String | | Email |
| name | String | | Name |
| profile_pic | String | | Profile pic |
DTO_reference_attachment
| Name | Type | ReadOnly | Description |
| size_kb | Int32 | ReadOnly | Size kb |
| status | ENUM attachment_status | ReadOnly | Status |
| status_message | String | ReadOnly | Status message |
| download_url | String | ReadOnly | Download url |
| id | Int32 | | Id |
| label | Object | ReadOnly | Label |
DTO_rich_text
| Name | Type | ReadOnly | Description |
| plain_preview | String | ReadOnly | Plain preview |
| html | String | | Html |
| editorjs | DTO_editorjs | | Editorjs |
| tiptap | DTO_tiptap | | Tiptap |
| read_minutes | Int32 | | Read minutes |
DTO_editorjs
| Name | Type | ReadOnly | Description |
| time | Int64 | | Time |
| version | String | | Version |
| blocks | DTO_editorjs_block[] | | Blocks |
DTO_editorjs_block
| Name | Type | ReadOnly | Description |
| id | String | | Id |
| type | String | | Type |
| data | Object | | Data |
DTO_tiptap_attrs
| Name | Type | ReadOnly | Description |
| textAlign | String | | Textalign |
| level | Int32 (nullable) | | Level |
| checked | Boolean (nullable) | | Checked |
| id | Int32 (nullable) | | Id |
| alt | String | | Alt |
| title | String | | Title |
| width | String | | Width |
| wrapperStyle | String | | Wrapperstyle |
| files | DTO_tiptap_file_ref[] | | Files |
| href | String | | Href |
| target | String | | Target |
| colspan | Int32 (nullable) | | Colspan |
| rowspan | Int32 (nullable) | | Rowspan |
| color | String | | Color |
| text | String | | Text |
| name | String | | For emoji |
| native | String | | For emoji |
DTO_tiptap_file_ref
| Name | Type | ReadOnly | Description |
| id | Int32 | | Id |
| label | String | | Label |
DTO_auto_save
| Name | Type | ReadOnly | Description |
| entity | ENUM entity | | Entity |
| optional_id | Int32 (nullable) | | Optional id |
| data | JObject | | Data |
DTO_search_response
| Name | Type | ReadOnly | Description |
| sys_status | DTO_reference | | Sys status |
| category | DTO_reference | | Category |
| group | DTO_reference | | Group |
| id | Int32 | | Id |
| title | String | | Title |
| highlight | String | | Highlight |
| additional_info | String | | Additional info |
| entity | ENUM entity | ReadOnly | Entity |
| score | Double | ReadOnly | Score |
| score_weighted | Double | ReadOnly | Score weighted |
| external_link | String | ReadOnly | External link |
| created | DateTime | | Created |
| body | String | | Store the full text of the entity in plain text. |
DTO_reference
| Name | Type | ReadOnly | Description |
| id | Int32 | | The id of the reference |
| label | Object | ReadOnly | Name/Label from referenced object. |
DTO_ticket_more_from_requester
| Name | Type | ReadOnly | Description |
| tickets | Object | | Tickets |
| additional_count | Int32 | | Additional count |
DTO_sla_ticket_info
| Name | Type | ReadOnly | Description |
| rule_name | String | | Rule name |
| first_reply_minutes | Int32 (nullable) | | Target in minutes, null when the rule has no first-reply target |
| resolution_minutes | Int32 (nullable) | | Target in minutes, null when the rule has no resolution target |
| business_schedule_name | String | | The business schedule the targets are counted in; null = calendar hours (24/7) |
ENUM ticket_conversation_type
| Value | Name | Description |
| 0 | UNKNOWN | UNKNOWN |
| 1 | REPLY_INBOUND | REPLY_INBOUND |
| 2 | NOTE_PRIVATE | NOTE_PRIVATE |
| 3 | NOTE_PUBLIC | NOTE_PUBLIC |
| 4 | FORWARD | FORWARD |
| 5 | REPLY_OUTBOUND | REPLY_OUTBOUND |
| 6 | SUGGESTED_REPLY | SUGGESTED_REPLY |
| 7 | AUTO_REPLY_AI | AUTO_REPLY_AI |
| 8 | AUTO_REPLY_STATIC | AUTO_REPLY_STATIC |
| 9 | CHAT_USER | CHAT_USER |
| 10 | CHAT_BOT | CHAT_BOT |
ENUM attachment_status
| Value | Name | Description |
| 0 | UNKNOWN | UNKNOWN |
| 1 | UNAVAILABLE | UNAVAILABLE, processing in progress |
| 2 | OK | OK |
| 3 | WARNING | WARNING |
| 4 | ERROR | ERROR |
ENUM email_address_direction
| Value | Name | Description |
| 0 | UNKNOWN | UNKNOWN |
| 1 | FROM | FROM |
| 2 | TO | TO |
| 3 | CC | CC |
| 4 | BCC | BCC |
| 5 | FORWARDED_TO | FORWARDED_TO |
| 6 | RESENT_FROM | RESENT_FROM |
| 7 | REPLY_TO | REPLY_TO |
ENUM entity
| Value | Name | Description |
| 0 | UNKNOWN | UNKNOWN |
| 1 | LIST | LIST |
| 2 | GROUP | GROUP |
| 3 | USER | USER |
| 4 | LIST_ENTRY | LIST_ENTRY |
| 5 | TICKET | TICKET |
| 6 | SEARCH | SEARCH |
| 7 | INVOICE | INVOICE |
| 8 | KNOWLEDGE_BASE | KNOWLEDGE_BASE |
| 9 | SCRAPED_ITEM | SCRAPED_ITEM |
| 10 | FIELD | FIELD |
| 11 | TICKET_CONVERSATION | TICKET_CONVERSATION |
| 12 | EXPORT | EXPORT |
| 13 | EXTERNAL_PRODUCT | EXTERNAL_PRODUCT |
| 14 | TEMPLATE | TEMPLATE |
| 15 | PROFILE_API | PROFILE_API |
| 16 | FAQ | FAQ |
Generated Aug 4, 2026 18:37