Zoho Ticket API

The Ticket API from Zoho — 23 operation(s) for ticket.

Documentation

Specifications

Code Examples

Other Resources

OpenAPI Specification

zoho-ticket-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Helpcenter Ticket API
  version: 1.0.0
tags:
- name: Ticket
paths:
  /api/v1/tickets/{ticketId}/resolution:
    get:
      tags:
      - Ticket
      summary: Get ticket resolution
      description: This API fetches details related to the resolution of a ticket.
      operationId: getTicketResolution
      parameters:
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/getResolutionResponse'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.READ
      x-audience:
      - external-public
    delete:
      tags:
      - Ticket
      summary: Delete ticket resolution
      description: This API deletes a resolution added to a ticket.
      operationId: deleteTicketResolution
      parameters:
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.tickets.DELETE
      x-audience:
      - external-public
    patch:
      tags:
      - Ticket
      summary: Update ticket resolution
      description: This API updates the resolution field of a ticket.
      operationId: updateTicketResolution
      parameters:
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/resolutionRequestBody'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/resolutionResponse'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.UPDATE
      x-audience:
      - external-public
  /api/v1/agentsTicketsCount:
    get:
      tags:
      - Ticket
      summary: List all agentsTicketsCount
      description: This API returns the number of tickets assigned to multiple agents.
      operationId: getAgentsTicketsCount
      parameters:
      - $ref: '#/components/parameters/agentIds'
      - $ref: '#/components/parameters/departmentId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/getAgentsTicketCountResponse'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.READ
      x-audience:
      - external-public
  /api/v1/tickets/moveToTrash:
    post:
      tags:
      - Ticket
      summary: Move Tickets to trash
      description: This API moves tickets to the Recycle Bin
      operationId: deleteTicket
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/moveRequestsToTrash'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.tickets.DELETE
      x-audience:
      - external-public
  /api/v1/associatedTickets:
    get:
      tags:
      - Ticket
      summary: List all associated tickets
      description: This API lists a particular number of tickets that are associated to you from your help desk, based on the limit specified.
      operationId: getAssociatedTickets
      parameters:
      - name: include
        in: query
        description: Key that returns additional information related to a ticket. Values allowed are: contacts, products, and assignee. All three values can be passed by separating them with a comma in the API request.
        required: false
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          description: Key that returns additional information related to a ticket. Values allowed are: contacts, products, and assignee. All three values can be passed by separating them with a comma in the API request.
          items:
            type:
            - string
            - 'null'
            enum:
            - contacts
            - products
            - assignee
            maxLength: 100
            minLength: 0
          uniqueItems: true
      - name: follower
        in: query
        description: 'Filter by followers of the ticket. Values allowed : a valid @agentId@.'
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          description: 'Filter by followers of the ticket. Values allowed : a valid @agentId@.'
          pattern: ([0-9]+)
      - $ref: '#/components/parameters/departmentId'
      - $ref: '#/components/parameters/limit'
      - name: sharedDepartmentId
        in: query
        description: Fetches only the tickets shared from @departmentId@ to @sharedDepartmentId@. If @departmentId@ is not provided, fetches all the tickets shared to @sharedDepartmentId@. @sharedDepartmentId@ is given precedence only when @isShared@ is @false@/not given.
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          description: Fetches only the tickets shared from @departmentId@ to @sharedDepartmentId@. If @departmentId@ is not provided, fetches all the tickets shared to @sharedDepartmentId@. @sharedDepartmentId@ is given precedence only when @isShared@ is @false@/not given.
          pattern: ([0-9]+)
      - $ref: '#/components/parameters/from'
      - $ref: '#/components/parameters/assignee'
      - $ref: '#/components/parameters/receivedInDays'
      - name: isShared
        in: query
        description: Filter all shared tickets actually belonging to @departmentId@ if @isShared@ is true. If @departmentId@ is not provided and if @isShared@ is true, shared tickets from all permitted departments will be listed. If @departmentId@ is provided and @isShared@ is @true@, tickets belonging to @departmentId@, but shared to any other department will be fetched. If @departmentId@ and @sharedDepartmentId@ is provided and @isShared@ is @true@, then tickets belonging to @departmentId@, but shared to @sharedDepartmentId@ will be fetched(Here permission checks are done on @departmentId@). If @departmentId@ and @sharedDepartmentId@ is provided and @isShared@ is @false@/not given, then tickets shared to @sharedDepartmentId@, but belonging to @departmentId@ will be fetched(Here permission checks are done on @sharedDepartmentId@).
        required: false
        style: form
        explode: true
        schema:
          type:
          - boolean
          - 'null'
          description: Filter all shared tickets actually belonging to @departmentId@ if @isShared@ is true. If @departmentId@ is not provided and if @isShared@ is true, shared tickets from all permitted departments will be listed. If @departmentId@ is provided and @isShared@ is @true@, tickets belonging to @departmentId@, but shared to any other department will be fetched. If @departmentId@ and @sharedDepartmentId@ is provided and @isShared@ is @true@, then tickets belonging to @departmentId@, but shared to @sharedDepartmentId@ will be fetched(Here permission checks are done on @departmentId@). If @departmentId@ and @sharedDepartmentId@ is provided and @isShared@ is @false@/not given, then tickets shared to @sharedDepartmentId@, but belonging to @departmentId@ will be fetched(Here permission checks are done on @sharedDepartmentId@).
      - $ref: '#/components/parameters/status'
      - name: commenter
        in: query
        description: 'Filter by commenters of the ticket. Values allowed : a valid @agentId@. As of now, either @follower@ or @commenter@ is supported. If both params are given, @commenter@ will be ignored.'
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          description: 'Filter by commenters of the ticket. Values allowed : a valid @agentId@. As of now, either @follower@ or @commenter@ is supported. If both params are given, @commenter@ will be ignored.'
          pattern: ([0-9]+)
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
        '200':
          $ref: '#/components/responses/ticketListViewArray'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.READ
      x-audience:
      - external-public
  /api/v1/tickets/updateMany:
    post:
      tags:
      - Ticket
      summary: Bulk update tickets
      description: This API updates multiple tickets at once.
      operationId: bulkUpdateTickets
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/tickets_massupdate'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
        '403':
          $ref: ./Common.json#/components/responses/forbiddenErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.tickets.UPDATE
      x-audience:
      - external-public
  /api/v1/tickets/deleteSpam:
    post:
      tags:
      - Ticket
      summary: Delete spam tickets
      description: This API deletes the given spam tickets
      operationId: deleteSpamTickets
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/deleteSpamTickets_moveRequestsToTrash'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: ./MassActionResponse.json#/components/responses/massActionListResponse
      security:
      - iam-oauth2-schema:
        - Desk.tickets.DELETE
      x-audience:
      - external-public
  /api/v1/tickets/archivedTickets:
    get:
      tags:
      - Ticket
      summary: Get Archived Ticket List
      description: This API gets the archived tickets list  in given department.
      operationId: getArchivedTickets
      parameters:
      - name: include
        in: query
        description: 'Key that returns additional information related to a ticket. Values allowed are: @contacts@, @products@,@departments@,@team@,@isRead@ and @assignee@. All six values can be passed by separating them with a comma in the API request.'
        required: false
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          description: 'Key that returns additional information related to a ticket. Values allowed are: @contacts@, @products@,@departments@,@team@,@isRead@ and @assignee@. All six values can be passed by separating them with a comma in the API request.'
          items:
            type:
            - string
            - 'null'
            enum:
            - products
            - contacts
            - isRead
            - departments
            - team
            - assignee
            maxLength: 100
            minLength: 0
          uniqueItems: false
      - $ref: '#/components/parameters/departmentId'
      - $ref: '#/components/parameters/limit'
      - name: viewType
        in: query
        description: View Type - Supported Values 1 for Compact view , 2 for Classic view ,4 for Table View. If view type is not specified, Classic View will be the default view
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: View Type - Supported Values 1 for Compact view , 2 for Classic view ,4 for Table View. If view type is not specified, Classic View will be the default view
          enum:
          - '1'
          - '2'
          - '4'
          maxLength: 100
          minLength: 0
      - $ref: '#/components/parameters/from'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/archivedTicketListResponse'
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
        '403':
          $ref: ./Common.json#/components/responses/forbiddenErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.tickets.READ
        - Desk.search.READ
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}/move:
    post:
      tags:
      - Ticket
      summary: Move ticket
      description: "This API helps move a ticket from one department to another.\n @Note:@ The departmentId query parameter will be deprecated soon. Therefore, going forward, the departmentId attribute must be passed in the body of the API request."
      operationId: moveTicket
      parameters:
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/moveRequestjson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '200':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.tickets.UPDATE
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}/metrics:
    get:
      tags:
      - Ticket
      summary: Get ticket metrics
      description: This API fetches details related to the response and resolution times of a ticket.
      operationId: getTicketsMetrics
      parameters:
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/getTicketMetrics'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.READ
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}/merge:
    post:
      tags:
      - Ticket
      summary: Merge two tickets
      description: This API merges two different tickets.
      operationId: mergeTicket
      parameters:
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/mergejson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/ticketResponse'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.UPDATE
      x-audience:
      - external-public
  /api/v1/tickets/emptySpam:
    post:
      tags:
      - Ticket
      summary: Empty spam tickets
      description: This API deletes all spam tickets.
      operationId: deleteAllSpamTickets
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/emptySpamResponse'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '202':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.tickets.DELETE
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}/notifyArticleUsage:
    post:
      tags:
      - Ticket
      summary: Map articles to tickets
      description: This API maps tickets with help articles to automatically suggest the same articles for similar tickets that arrive later.
      operationId: mapArticlesToTicket
      parameters:
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: ./Article.json#/components/requestBodies/associateArticlesUsage_articleIdsJson
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.articles.CREATE
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}/resolutionHistory:
    get:
      tags:
      - Ticket
      summary: Get resolution history
      description: This API fetches the resolution history of a ticket
      operationId: getTicketResolutionHistory
      parameters:
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/getResolutionHistoryResponse'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.READ
      x-audience:
      - external-public
  /api/v1/tickets/markSpam:
    post:
      tags:
      - Ticket
      summary: Mark ticket as spam
      description: This API marks tickets as spam.
      operationId: markTicketAsSpam
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/tickets_updatespam'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: ./Common.json#/components/responses/emptyResponse
        '403':
          $ref: ./Common.json#/components/responses/forbiddenErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.tickets.UPDATE
      x-audience:
      - external-public
  /api/v1/contacts/{contactId}/tickets:
    get:
      tags:
      - Ticket
      summary: List tickets by contact
      description: This API lists tickets received from a specific contact.
      operationId: getTicketsByContact
      parameters:
      - name: include
        in: query
        description: Additional information related to the tickets. Values allowed are: @products@, @departments@, @team@, @isRead@ and @assignee@. You can pass multiple values by separating them with a comma in the API request.
        required: false
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          description: Additional information related to the tickets. Values allowed are: @products@, @departments@, @team@, @isRead@ and @assignee@. You can pass multiple values by separating them with a comma in the API request.
          items:
            type:
            - string
            - 'null'
            enum:
            - products
            - departments
            - team
            - assignee
            - isRead
            maxLength: 100
            minLength: 0
          uniqueItems: true
      - $ref: '#/components/parameters/departmentId'
      - $ref: '#/components/parameters/dueDate'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/from'
      - name: sortBy
        in: query
        description: 'Sort by a specific attribute: @createdTime@ or @modifiedTime@. The default sorting order is ascending. A @-@ prefix denotes descending order of sorting.'
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: 'Sort by a specific attribute: @createdTime@ or @modifiedTime@. The default sorting order is ascending. A @-@ prefix denotes descending order of sorting.'
          enum:
          - createdTime
          - modifiedTime
          maxLength: 100
          minLength: 0
      - $ref: '#/components/parameters/isSpam'
      - $ref: '#/components/parameters/contactId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/getTicketsByContactResponse'
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.contacts.READ
        - Desk.tickets.READ
        - Desk.search.READ
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}/markAsRead:
    post:
      tags:
      - Ticket
      summary: Mark as read
      description: This API marks a ticket as read by the user.
      operationId: markTicketAsRead
      parameters:
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.tickets.UPDATE
      x-audience:
      - external-public
  /api/v1/tickets:
    get:
      tags:
      - Ticket
      summary: List all tickets
      description: This API lists a particular number of tickets, based on the limit specified.
      operationId: getTickets
      parameters:
      - name: include
        in: query
        required: false
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          items:
            type:
            - string
            - 'null'
            enum:
            - contacts
            - products
            - departments
            - team
            - assignee
            maxLength: 100
            minLength: 0
          uniqueItems: true
      - $ref: '#/components/parameters/departmentId'
      - $ref: '#/components/parameters/dueDate'
      - $ref: '#/components/parameters/limit'
      - name: channel
        in: query
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          x-dynamic-enum: true
      - $ref: '#/components/parameters/from'
      - name: sortBy
        in: query
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          enum:
          - dueDate
          - createdTime
          - recentThread
          maxLength: 100
          minLength: 0
      - $ref: '#/components/parameters/assignee'
      - name: teamIds
        in: query
        required: false
        style: form
        explode: true
        schema:
          type:
          - 'null'
          - array
          items:
            type:
            - string
            - 'null'
            - integer
            format: int64
            pattern: ([0-9]+)
          uniqueItems: false
      - $ref: '#/components/parameters/receivedInDays'
      - name: closedTime
        in: query
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          enum:
          - today
          - yesterday
          - currentWeek
          - currentMonth
          - last3days
          - last7days
          - last15days
          - last30days
          maxLength: 100
          minLength: 0
      - $ref: '#/components/parameters/status'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
        '200':
          $ref: '#/components/responses/ticketListViewArray'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.READ
      x-audience:
      - external-public
    post:
      tags:
      - Ticket
      summary: Create a ticket
      description: This API creates a ticket in your helpdesk.
      operationId: createTicket
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/addRequestjson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '400':
          $ref: ./Common.json#/components/responses/badRequestErrorResponse
        '200':
          $ref: '#/components/responses/ticketResponse'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.CREATE
      x-audience:
      - external-public
  /api/v1/closeTickets:
    post:
      tags:
      - Ticket
      summary: Closed many tickets
      description: This API closes multiple tickets at once.
      operationId: closeTickets
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/closeTicketInput'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.tickets.UPDATE
      x-audience:
      - external-public
  /api/v1/ticketQueueView/count:
    get:
      tags:
      - Ticket
      summary: List all ticketQueueView count
      description: This API returns the number of tickets in a particular view.
      operationId: getTicketQueueViewCount
      parameters:
      - $ref: '#/components/parameters/agentId'
      - $ref: '#/components/parameters/viewId'
      - $ref: '#/components/parameters/departmentId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '200':
          $ref: '#/components/responses/getOpenRequestsCount'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.READ
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}:
    get:
      tags:
      - Ticket
      summary: Get a ticket
      description: This API fetches a single ticket from your helpdesk.
      operationId: getTicket
      parameters:
      - name: include
        in: query
        description: 'Key that fetches secondary information related to the ticket. Values allowed are: @contacts@, @products@, @assignee@, @departments@, @contract@, @isRead@, @team@, and @skills@ . Multiple values can be passed, with commas for separation.'
        required: false
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          description: 'Key that fetches secondary information related to the ticket. Values allowed are: @contacts@, @products@, @assignee@, @departments@, @contract@, @isRead@, @team@, and @skills@ . Multiple values can be passed, with commas for separation.'
          items:
            type:
            - string
            - 'null'
            enum:
            - contacts
            - products
            - departments
            - team
            - assignee
            - contract
            - isRead
            - skills
            maxLength: 100
            minLength: 0
          uniqueItems: true
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/getTicketResponse'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.READ
      x-audience:
      - external-public
    patch:
      tags:
      - Ticket
      operationId: updateTicket
      summary: Update a ticket
      description: This API updates the details of an existing ticket.
      parameters:
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/updateRequestjson'
      responses:
        '200':
          $ref: '#/components/responses/ticketResponse'
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.tickets.UPDATE
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}/markAsUnRead:
    post:
      tags:
      - Ticket
      summary: Mark as unread
      description: This API marks a ticket as unread by the user.
      operationId: markTicketAsUnRead
      parameters:
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.tickets.UPDATE
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}/threads/{threadId}/split:
    post:
      tags:
      - Ticket
      summary: Split tickets
      description: This API splits an incoming ticket thread into a new ticket.
      operationId: splitThreadIntoNewTicket
      parameters:
      - name: threadId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/ticketResponse'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.CREATE
      x-audience:
      - external-public
  /api/v1/products/{productId}/tickets:
    get:
      tags:
      - Ticket
      summary: List tickets by products
      description: This API lists tickets received from a specific products.
      operationId: getTicketsByProduct
      parameters:
      - name: include
        in: query
        description: Additional information related to the tickets. Values allowed are: @products@, @departments@, @team@, @isRead@ and @assignee@. You can pass multiple values by separating them with a comma in the API request.
        required: false
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          description: Additional information related to the tickets. Values allowed are: @products@, @departments@, @team@, @isRead@ and @assignee@. You can pass multiple values by separating them with a comma in the API request.
          items:
            type:
            - string
            - 'null'
            enum:
            - products
            - departments
            - team
            - assignee
            - isRead
            maxLength: 100
            minLength: 0
          uniqueItems: false
      - $ref: '#/components/parameters/departmentId'
      - $ref: '#/components/parameters/dueDate'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/from'
      - name: sortBy
        in: query
        description: 'Sort by a specific attribute: @createdTime@ or @modifiedTime@. The default sorting order is ascending. A @-@ prefix denotes descending order of sorting.'
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: 'Sort by a specific attribute: @createdTime@ or @modifiedTime@. The default sorting order is ascending. A @-@ prefix denotes descending order of sorting.'
          enum:
          - createdTime
          - modifiedTime
          maxLength: 100
          minLength: 0
      - $ref: '#/components/parameters/isSpam'
      - name: productId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
        '200':
          $ref: '#/components/responses/ticketListViewArray'
      security:
      - iam-oauth2-schema:
        - Desk.settings.READ
        - Desk.tickets.READ
        - Desk.search.READ
      x-audience:
      - external-public
components:
  schemas:
    mergeFieldJson:
      type:
      - 'null'
      - object
      additionalProperties: false
      properties:
        entitySkills:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        subCategory:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        cf:
          type:
          - 'null'
          - object
          additionalProperties: false
          patternProperties:
            ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+:
              type:
  

# --- truncated at 32 KB (141 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zoho/refs/heads/main/openapi/zoho-ticket-api-openapi.yml