Zoho Ticket API

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

Operations 27

GET /api/v1/tickets/{ticketId}/resolution Get ticket resolution #
DELETE /api/v1/tickets/{ticketId}/resolution Delete ticket resolution #
PATCH /api/v1/tickets/{ticketId}/resolution Update ticket resolution #
GET /api/v1/agentsTicketsCount List all agentsTicketsCount #
POST /api/v1/tickets/moveToTrash Move Tickets to trash #
GET /api/v1/associatedTickets List all associated tickets #
POST /api/v1/tickets/updateMany Bulk update tickets #
POST /api/v1/tickets/deleteSpam Delete spam tickets #
GET /api/v1/tickets/archivedTickets Get Archived Ticket List #
POST /api/v1/tickets/{ticketId}/move Move ticket #
GET /api/v1/tickets/{ticketId}/metrics Get ticket metrics #
POST /api/v1/tickets/{ticketId}/merge Merge two tickets #
POST /api/v1/tickets/emptySpam Empty spam tickets #
POST /api/v1/tickets/{ticketId}/notifyArticleUsage Map articles to tickets #
GET /api/v1/tickets/{ticketId}/resolutionHistory Get resolution history #
POST /api/v1/tickets/markSpam Mark ticket as spam #
GET /api/v1/contacts/{contactId}/tickets List tickets by contact #
POST /api/v1/tickets/{ticketId}/markAsRead Mark as read #
GET /api/v1/tickets List all tickets #
POST /api/v1/tickets Create a ticket #
POST /api/v1/closeTickets Closed many tickets #
GET /api/v1/ticketQueueView/count List all ticketQueueView count #
GET /api/v1/tickets/{ticketId} Get a ticket #
PATCH /api/v1/tickets/{ticketId} Update a ticket #
POST /api/v1/tickets/{ticketId}/markAsUnRead Mark as unread #
POST /api/v1/tickets/{ticketId}/threads/{threadId}/split Split tickets #
GET /api/v1/products/{productId}/tickets List tickets by products #

Documentation

Specifications

Code Examples

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/zoho-ticket-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

zoho-ticket-api-openapi.yml Raw ↑
openapi: 3.2.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:
    getAgentsTicketCountList:
      type:
      - 'null'
      - array
      items:
        allOf:
        - type:
          - 'null'
          - object
          properties:
            channel:
              $ref: '#/components/schemas/channelList'
        - $ref: '#/components/schemas/getCountJson'
    ticketResponse:
      additionalProperties: false
      allOf:
      - $ref: '#/components/schemas/commonResponse'
      - type:
        - 'null'
        - object
        properties:
          slaId:
            type:
            - string
            - 'null'
            - integer
            format: int64
            pat

# --- 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