Zoho Thread API

The Thread API from Zoho — 6 operation(s) for thread.

Operations 6

PATCH /api/v1/tickets/{ticketId}/draftReply/{threadId} Update Draft #
GET /api/v1/tickets/{requestId}/threads/{threadId}/originalContent Get Original Mail Content #
POST /api/v1/tickets/{ticketId}/sendReply Send Email Reply #
POST /api/v1/tickets/{ticketId}/draftReply Draft Email Reply #
GET /api/v1/tickets/{ticketId}/threads List all threads #
DELETE /api/v1/tickets/{ticketId}/threads/{threadId}/attachments/{attachmentId} Delete attachment #

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-thread-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-thread-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Helpcenter Thread API
  version: 1.0.0
tags:
- name: Thread
paths:
  /api/v1/tickets/{ticketId}/draftReply/{threadId}:
    patch:
      tags:
      - Thread
      summary: Update Draft
      description: This API updates a draft thread created via the @EMAIL@, @FACEBOOK@, or @FORUM@ channel.
      operationId: updateDrafts
      parameters:
      - $ref: '#/components/parameters/threadId'
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        content:
          application/json:
            schema:
              discriminator:
                propertyName: channel
                mapping:
                  EMAIL: '#/components/schemas/emailThreadSendReply'
                  FACEBOOK: '#/components/schemas/facebookSendReply'
                  FORUMS: '#/components/schemas/forumSendReply'
              oneOf:
              - $ref: '#/components/schemas/emailThreadSendReply'
              - $ref: '#/components/schemas/facebookSendReply'
              - $ref: '#/components/schemas/forumSendReply'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          description: updateDrafts Response definition
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: channel
                  mapping:
                    EMAIL: '#/components/schemas/emailThreadResponseJson'
                    FACEBOOK: '#/components/schemas/faceBookThreadResponse'
                    FORUMS: '#/components/schemas/fourmsThreadResponse'
                oneOf:
                - $ref: '#/components/schemas/emailThreadResponseJson'
                - $ref: '#/components/schemas/faceBookThreadResponse'
                - $ref: '#/components/schemas/fourmsThreadResponse'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.UPDATE
      x-audience:
      - external-public
  /api/v1/tickets/{requestId}/threads/{threadId}/originalContent:
    get:
      tags:
      - Thread
      summary: Get Original Mail Content
      description: This API get the orginal mail content including mail headers
      operationId: getOriginalMailContent
      parameters:
      - $ref: '#/components/parameters/threadId'
      - name: requestId
        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:
        '200':
          $ref: '#/components/responses/getOriginalMailContent'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.READ
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}/sendReply:
    post:
      tags:
      - Thread
      summary: Send Email Reply
      description: This API sends an email reply. The from address in the email must be a from address configured in your help desk portal.
      operationId: sendReply
      parameters:
      - $ref: '#/components/parameters/ticketId'
      - $ref: '#/components/parameters/parentConversationId'
      - name: impersonatedUserId
        in: header
        required: false
        style: simple
        explode: false
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        content:
          application/json:
            schema:
              discriminator:
                propertyName: channel
                mapping:
                  EMAIL: '#/components/schemas/emailThreadSendReply'
                  FACEBOOK: '#/components/schemas/facebookSendReply'
                  TWITTER: '#/components/schemas/twitterSendReply'
                  FORUMS: '#/components/schemas/forumSendReply'
              oneOf:
              - $ref: '#/components/schemas/emailThreadSendReply'
              - $ref: '#/components/schemas/facebookSendReply'
              - $ref: '#/components/schemas/twitterSendReply'
              - $ref: '#/components/schemas/forumSendReply'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          description: sendReply Response definition
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: channel
                  mapping:
                    EMAIL: '#/components/schemas/emailThreadResponseJson'
                    FACEBOOK: '#/components/schemas/faceBookThreadResponse'
                    TWITTER: '#/components/schemas/twitterThreadResponse'
                    FORUMS: '#/components/schemas/fourmsThreadResponse'
                oneOf:
                - $ref: '#/components/schemas/emailThreadResponseJson'
                - $ref: '#/components/schemas/faceBookThreadResponse'
                - $ref: '#/components/schemas/twitterThreadResponse'
                - $ref: '#/components/schemas/fourmsThreadResponse'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.UPDATE
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}/draftReply:
    post:
      tags:
      - Thread
      summary: Draft Email Reply
      description: This API drafts an email reply. The from address in the email must be a from address configured in your help desk portal.
      operationId: draftsReply
      parameters:
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      - $ref: '#/components/parameters/parentConversationId'
      requestBody:
        content:
          application/json:
            schema:
              discriminator:
                propertyName: channel
                mapping:
                  EMAIL: '#/components/schemas/emailThreadSendReply'
                  FACEBOOK: '#/components/schemas/facebookSendReply'
                  FORUMS: '#/components/schemas/forumSendReply'
              oneOf:
              - $ref: '#/components/schemas/emailThreadSendReply'
              - $ref: '#/components/schemas/facebookSendReply'
              - $ref: '#/components/schemas/forumSendReply'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          description: draftsReply Response definition
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: channel
                  mapping:
                    EMAIL: '#/components/schemas/emailThreadResponseJson'
                    FACEBOOK: '#/components/schemas/faceBookThreadResponse'
                    FORUMS: '#/components/schemas/fourmsThreadResponse'
                oneOf:
                - $ref: '#/components/schemas/emailThreadResponseJson'
                - $ref: '#/components/schemas/faceBookThreadResponse'
                - $ref: '#/components/schemas/fourmsThreadResponse'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.UPDATE
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}/threads:
    get:
      tags:
      - Thread
      summary: 'List all threads '
      description: This API lists all threads in your helpdesk.
      operationId: getThreads
      parameters:
      - name: limit
        in: query
        description: Number of threads to fetch
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int32
          description: Number of threads to fetch
          pattern: ([0-9]+)
      - name: from
        in: query
        description: Index number, starting from which the threads must be fetched
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int32
          description: Index number, starting from which the threads must be fetched
          pattern: ([0-9]+)
      - name: sortBy
        in: query
        description: 'Key that sorts the threads by sendDateTime.<br>If the value of sortBy key is: <br> <ul><li> "<b>sendDateTime</b>" - sorting will be done in <b> ascending </b> order</li> <li> "<b>-sendDateTime </b>" - (prefix the value with a "-") sorting will be done in <b>descending</b> order</li></ul> <br> <b>Note:</b> If this sortBy key is not specified, the sorting will be done in descending order by default based on sendDateTime.'
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: 'Key that sorts the threads by sendDateTime.<br>If the value of sortBy key is: <br> <ul><li> "<b>sendDateTime</b>" - sorting will be done in <b> ascending </b> order</li> <li> "<b>-sendDateTime </b>" - (prefix the value with a "-") sorting will be done in <b>descending</b> order</li></ul> <br> <b>Note:</b> If this sortBy key is not specified, the sorting will be done in descending order by default based on sendDateTime.'
          enum:
          - sendDateTime
          maxLength: 100
          minLength: 0
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/getThreadsResponse'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.READ
      x-audience:
      - external-public
  /api/v1/tickets/{ticketId}/threads/{threadId}/attachments/{attachmentId}:
    delete:
      tags:
      - Thread
      summary: Delete attachment
      description: This API deletes an attachment from a draft thread.
      operationId: deleteAttachment
      parameters:
      - $ref: '#/components/parameters/threadId'
      - name: attachmentId
        in: path
        description: ID of the attachment to be deleted
        required: true
        style: simple
        explode: false
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          description: ID of the attachment to be deleted
          pattern: ([0-9]+)
      - $ref: '#/components/parameters/ticketId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: ./Common.json#/components/responses/emptyResponse
      x-audience:
      - external-public
components:
  schemas:
    emailThreadSendReply:
      additionalProperties: false
      allOf:
      - $ref: ./Thread.json#/components/schemas/commonSendReplyJson
      - type:
        - 'null'
        - object
        properties:
          ticketStatus:
            type:
            - string
            - 'null'
            description: Status of the ticket. Includes the custom statuses configured in your help desk portal.
            x-dynamic-enum: true
          attachmentIds:
            type:
            - 'null'
            - array
            items:
              type:
              - string
              - 'null'
              - integer
              format: int64
              pattern: ([0-9]+)
            uniqueItems: false
          to:
            type:
            - string
            - 'null'
            description: To email ID in the thread, applicable only for @EMAIL@ channel
            maxLength: 13000
            minLength: 0
            pattern: (^((.*?)((<)*?[a-zA-Z0-9]([\w\-.+]*)@([\w\-.]*)(\.[a-zA-Z]{2,22}(.[a-zA-Z]{2}){0,2})(>)*?(\s)*((,|;)\s*)?))+|^$)
          fromEmailAddress:
            type:
            - string
            - 'null'
            description: Mandatory parameter for creating an email thread. Applicable for @EMAIL@, @ONLINE_CHAT@, @OFFLINE_CHAT@, @CUSTOMERPORTAL@, and @FORUMS@ channels.
            maxLength: 300
            minLength: 0
            pattern: ^[a-zA-Z0-9\_]([a-zA-Z0-9\_\+\-\.\'&]*)@(?=.{4,256}$)(([a-zA-Z0-9]+)(([\-\_]*[a-zA-Z0-9])*)[\.])+[a-zA-Z]{2,22}$
          contentType:
            type:
            - string
            - 'null'
            description: Formatting type of the content. Applicable only for the @EMAIL@ channel. Values supported are @html@ and @plainText@ (default).
            enum:
            - html
            - plainText
            - text/html
            maxLength: 100
            minLength: 0
          isForward:
            type:
            - boolean
            - 'null'
            description: Key that returns if the thread was sent as a forward. Applicable only for the @EMAIL@ channel.
      - type: object
      - type: object
      - type: object
        required:
        - channel
        - content
        - fromEmailAddress
    faceBookThreadResponse:
      type:
      - 'null'
      - object
      additionalProperties: false
      properties:
        summary:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: (^([a-zA-Z0-9\s\.\?\_\-\,])*$|null|undefined)
        isDescriptionThread:
          type:
          - boolean
          - 'null'
        attachments:
          $ref: ./Thread.json#/components/schemas/attachments
        isContentTruncated:
          type:
          - boolean
          - 'null'
        canReply:
          type:
          - boolean
          - 'null'
        visibility:
          type:
          - string
          - 'null'
          enum:
          - public
          - private
          maxLength: 100
          minLength: 0
        author:
          $ref: ./Thread.json#/components/schemas/author
        fullContentURL:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: (^(ht|f)tp(s?)\://[-.\w]*(/?)([a-zA-Z0-9\-\.\?\,\:\'/\\+=&amp;%\$#_@]*)?$)
        channel:
          type:
          - string
          - 'null'
          enum:
          - FACEBOOK
          maxLength: 100
          minLength: 0
        source:
          $ref: ./Thread.json#/components/schemas/channelSource
        content:
          type:
          - string
          - 'null'
          maxLength: 16000000
          minLength: 0
        facebookProfile:
          type:
          - string
          - 'null'
          maxLength: 13000
          minLength: 0
          pattern: (^([a-zA-Z0-9\s\.\?\_\-\,])*$|null|undefined)
        hasAttach:
          type:
          - boolean
          - 'null'
        responderId:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        channelRelatedInfo:
          $ref: ./Thread.json#/components/schemas/channelRelatedInfo
        createdTime:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: (((19|20)\d\d)[-/.]{1}(0?[1-9]|1[012])[-/.]{1}(0?[1-9]|[12][0-9]|3[01])(T)([01]?[0-9]|2[0-3]):[0-5]?[0-9]:[0-5]?[0-9]([/.][\d]{0,3})?(Z))
        attachmentCount:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        readReceipts:
          $ref: ./Thread.json#/components/schemas/readReceipts
        id:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        actions:
          $ref: ./Thread.json#/components/schemas/actionsList
        contentType:
          type:
          - string
          - 'null'
          enum:
          - text/plain
          - text/html
          maxLength: 100
          minLength: 0
        status:
          type:
          - string
          - 'null'
          enum:
          - SUCCESS
          - PENDING
          - FAILED
          - DRAFT
          maxLength: 100
          minLength: 0
        direction:
          type:
          - string
          - 'null'
          enum:
          - in
          - out
          maxLength: 100
          minLength: 0
      required:
      - actions
      - attachmentCount
      - attachments
      - author
      - canReply
      - channel
      - channelRelatedInfo
      - content
      - contentType
      - createdTime
      - direction
      - facebookProfile
      - fullContentURL
      - hasAttach
      - id
      - isContentTruncated
      - isDescriptionThread
      - readReceipts
      - responderId
      - source
      - status
      - summary
      - visibility
    emailThreadResponseJson:
      type:
      - 'null'
      - object
      additionalProperties: false
      properties:
        isDescriptionThread:
          type:
          - boolean
          - 'null'
        bcc:
          type:
          - string
          - 'null'
          maxLength: 13000
          minLength: 0
          pattern: (^((.*?)((<)*?[a-zA-Z0-9]([\w\-.+]*)@([\w\-.]*)(\.[a-zA-Z]{2,22}(.[a-zA-Z]{2}){0,2})(>)*?(\s)*((,|;)\s*)?))+|^$)
        attachments:
          $ref: ./Thread.json#/components/schemas/attachments
        isContentTruncated:
          type:
          - boolean
          - 'null'
        canReply:
          type:
          - boolean
          - 'null'
        channel:
          type:
          - string
          - 'null'
          enum:
          - EMAIL
          maxLength: 100
          minLength: 0
        source:
          $ref: ./Thread.json#/components/schemas/channelSource
        content:
          type:
          - string
          - 'null'
          maxLength: 16000000
          minLength: 0
        impersonatedUser:
          $ref: ./Thread.json#/components/schemas/author
        channelRelatedInfo:
          $ref: ./Thread.json#/components/schemas/channelRelatedInfo
        createdTime:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: (((19|20)\d\d)[-/.]{1}(0?[1-9]|1[012])[-/.]{1}(0?[1-9]|[12][0-9]|3[01])(T)([01]?[0-9]|2[0-3]):[0-5]?[0-9]:[0-5]?[0-9]([/.][\d]{0,3})?(Z))
        id:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        contentType:
          type:
          - string
          - 'null'
          enum:
          - text/plain
          - text/html
          maxLength: 100
          minLength: 0
        direction:
          type:
          - string
          - 'null'
          enum:
          - in
          - out
          maxLength: 100
          minLength: 0
        cc:
          type:
          - string
          - 'null'
          maxLength: 13000
          minLength: 0
          pattern: (^((.*?)((<)*?[a-zA-Z0-9]([\w\-.+]*)@([\w\-.]*)(\.[a-zA-Z]{2,22}(.[a-zA-Z]{2}){0,2})(>)*?(\s)*((,|;)\s*)?))+|^$)
        summary:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: (^([a-zA-Z0-9\s\.\?\_\-\,])*$|null|undefined)
        visibility:
          type:
          - string
          - 'null'
          enum:
          - public
          - private
          maxLength: 100
          minLength: 0
        author:
          $ref: ./Thread.json#/components/schemas/author
        fullContentURL:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: (^(ht|f)tp(s?)\://[-.\w]*(/?)([a-zA-Z0-9\-\.\?\,\:\'/\\+=&amp;%\$#_@]*)?$)
        isForward:
          type:
          - boolean
          - 'null'
        hasAttach:
          type:
          - boolean
          - 'null'
        responderId:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        replyTo:
          type:
          - string
          - 'null'
          maxLength: 13000
          minLength: 0
          pattern: (^((.*?)((<)*?[a-zA-Z0-9]([\w\-.+]*)@([\w\-.]*)(\.[a-zA-Z]{2,22}(.[a-zA-Z]{2}){0,2})(>)*?(\s)*((,|;)\s*)?))+|^$)
        attachmentCount:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        readReceipts:
          $ref: ./Thread.json#/components/schemas/readReceipts
        to:
          type:
          - string
          - 'null'
          maxLength: 13000
          minLength: 0
          pattern: (^((.*?)((<)*?[a-zA-Z0-9]([\w\-.+]*)@([\w\-.]*)(\.[a-zA-Z]{2,22}(.[a-zA-Z]{2}){0,2})(>)*?(\s)*((,|;)\s*)?))+|^$)
        fromEmailAddress:
          type:
          - string
          - 'null'
          maxLength: 300
          minLength: 0
          pattern: ^[a-zA-Z0-9\_]([a-zA-Z0-9\_\+\-\.\'&]*)@(?=.{4,256}$)(([a-zA-Z0-9]+)(([\-\_]*[a-zA-Z0-9])*)[\.])+[a-zA-Z]{2,22}$
        actions:
          $ref: ./Thread.json#/components/schemas/actionsList
        status:
          type:
          - string
          - 'null'
          enum:
          - SUCCESS
          - PENDING
          - FAILED
          - DRAFT
          maxLength: 100
          minLength: 0
      required:
      - actions
      - attachmentCount
      - attachments
      - author
      - bcc
      - canReply
      - cc
      - channel
      - channelRelatedInfo
      - content
      - contentType
      - createdTime
      - direction
      - fromEmailAddress
      - fullContentURL
      - hasAttach
      - id
      - impersonatedUser
      - isContentTruncated
      - isDescriptionThread
      - isForward
      - readReceipts
      - replyTo
      - responderId
      - source
      - status
      - summary
      - to
      - visibility
    twitterThreadResponse:
      additionalProperties: false
      allOf:
      - $ref: ./Thread.json#/components/schemas/commonThreadResponseJson
      - type:
        - 'null'
        - object
        properties:
          twitterProfile:
            type:
            - string
            - 'null'
            maxLength: 13000
            minLength: 0
            pattern: (^([a-zA-Z0-9\s\.\?\_\-\,])*$|null|undefined)
        required:
        - twitterProfile
    facebookSendReply:
      additionalProperties: false
      allOf:
      - $ref: ./Thread.json#/components/schemas/commonSendReplyJson
      - type:
        - 'null'
        - object
        properties:
          respondedIn:
            type:
            - string
            - 'null'
            description: Time taken by the agent to respond to the customer
            maxLength: 100
            minLength: 0
      - type: object
      - type: object
      - type: object
        required:
        - channel
        - content
    fourmsThreadResponse:
      type:
      - 'null'
      - object
      additionalProperties: false
      properties:
        summary:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: (^([a-zA-Z0-9\s\.\?\_\-\,])*$|null|undefined)
        isDescriptionThread:
          type:
          - boolean
          - 'null'
        attachments:
          $ref: ./Thread.json#/components/schemas/attachments
        isContentTruncated:
          type:
          - boolean
          - 'null'
        canReply:
          type:
          - boolean
          - 'null'
        visibility:
          type:
          - string
          - 'null'
          enum:
          - public
          - private
          maxLength: 100
          minLength: 0
        author:
          $ref: ./Thread.json#/components/schemas/author
        fullContentURL:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: (^(ht|f)tp(s?)\://[-.\w]*(/?)([a-zA-Z0-9\-\.\?\,\:\'/\\+=&amp;%\$#_@]*)?$)
        channel:
          type:
          - string
          - 'null'
          enum:
          - FORUMS
          maxLength: 100
          minLength: 0
        source:
          $ref: ./Thread.json#/components/schemas/channelSource
        content:
          type:
          - string
          - 'null'
          maxLength: 16000000
          minLength: 0
        hasAttach:
          type:
          - boolean
          - 'null'
        responderId:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        channelRelatedInfo:
          $ref: ./Thread.json#/components/schemas/channelRelatedInfo
        createdTime:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: (((19|20)\d\d)[-/.]{1}(0?[1-9]|1[012])[-/.]{1}(0?[1-9]|[12][0-9]|3[01])(T)([01]?[0-9]|2[0-3]):[0-5]?[0-9]:[0-5]?[0-9]([/.][\d]{0,3})?(Z))
        attachmentCount:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        readReceipts:
          $ref: ./Thread.json#/components/schemas/readReceipts
        id:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        fromEmailAddress:
          type:
          - string
          - 'null'
          maxLength: 300
          minLength: 0
          pattern: ^[a-zA-Z0-9\_]([a-zA-Z0-9\_\+\-\.\'&]*)@(?=.{4,256}$)(([a-zA-Z0-9]+)(([\-\_]*[a-zA-Z0-9])*)[\.])+[a-zA-Z]{2,22}$
        actions:
          $ref: ./Thread.json#/components/schemas/actionsList
        contentType:
          type:
          - string
          - 'null'
          enum:
          - text/plain
          - text/html
          maxLength: 100
          minLength: 0
        status:
          type:
          - string
          - 'null'
          enum:
          - SUCCESS
          - PENDING
          - FAILED
          - DRAFT
          maxLength: 100
          minLength: 0
        direction:
          type:
          - string
          - 'null'
          enum:
          - in
          - out
          maxLength: 100
          minLength: 0
      required:
      - actions
      - attachmentCount
      - attachments
      - author
      - canReply
      - channel
      - channelRelatedInfo
      - content
      - contentType
      - createdTime
      - direction
      - fromEmailAddress
      - fullContentURL
      - hasAttach
      - id
      - isContentTruncated
      - isDescriptionThread
      - readReceipts
      - responderId
      - source
      - status
      - summary
      - visibility
    forumSendReply:
      additionalProperties: false
      allOf:
      - $ref: ./Thread.json#/components/schemas/commonSendReplyJson
      - type:
        - 'null'
        - object
        properties:
          respondedIn:
            type:
            - string
            - 'null'
            description: Time taken by the agent to respond to the customer
            maxLength: 100
            minLength: 0
      - type: object
      - type: object
      - type: object
        required:
        - channel
        - content
    twitterSendReply:
      additionalProperties: false
      allOf:
      - $ref: ./Thread.json#/components/schemas/commonSendReplyJson
      - type:
        - 'null'
        - object
        properties:
          respondedIn:
            type:
            - string
            - 'null'
            description: Time taken by the agent to respond to the customer
            maxLength: 100
            minLength: 0
      - type: object
        required:
        - channel
        - content
  responses:
    getThreadsResponse:
      description: getThreadsResponse template definitions
      content:
        application/json:
          schema:
            type:
            - 'null'
            - object
            additionalProperties: false
            properties:
              data:
                $ref: ./Thread.json#/components/schemas/getThreadsdata
            required:
            - data
          examples:
            Valid responses Definitions:
              value:
                data:
                - isDescriptionThread: true
                  canReply: true
                  visibility: public
                  author:
                    firstName: Jade
                    lastName: Tywin
                    photoURL: https://desk.zoho.com/api/v1/user/176276372673/photo
                    name: Jade Tywin
                    type: END_USER
                    email: jade12tywin@zylker.com
                  channel: FORUMS
                  source:
                    appName: null
                    extId: null
                    type: SYSTEM
                    permalink: null
                    appPhotoURL: null
                  lastRatingIconURL: null
                  hasAttach: false
                  channelRelatedInfo:
                    isDeleted: 'false'
                    isBestSolution: 'true'
                    externalLink: null
                  respondedIn: null
                  createdTime: '2015-03-25T13:40:23.031Z'
                  attachmentCount: '7'
                  id: '1892000000413186'
                  fromEmailAddress: jade12tywin@zylker.com
                  actions: []
                  contentType: text/html
                  status: SUCCESS
                  direction: in
                - summary: Customer Rating
                  cc: ''
                  isDescriptionThread: false
                  bcc: ''
                  canReply: true
                  visibility: public
                  author:
                    firstName: Jade
                    lastName: Tywin
                    photoURL: https://desk.zoho.com/api/v1/agents/1892000000042001/photo?orgId=3983939
                    name: Jade Tywin
                    type: AGENT
                    email: jade12tywin@zylker.com
                  channel: EMAIL
                  source:
                    appName: null
                    extId: null
                    type: SYSTEM
                    permalink: null
                    appPhotoURL: null
                  isForward: false
                  hasAttach: true
                  responderId: '1892000000042001'
                  channelRelatedInfo: null
                  respondedIn: 00:05:14
                  createdTime: '2016-05-25T10:06:09.686Z'
                  attachmentCount: '4'
                  id: '1892000001004072'
                  to: carol@zylker.com
                  fromEmailAddress: techsupport@zylker.com
                  actions:
                  - method: POST
                    rel: send
                    href: https://desk.zoho.com/api/v1/tickets/1892000000093205/resendFailedThread?threadId=1892000001083008
                  contentType: text/html
                  status: FAILED
                  direction: out
                - summary: 'Please fix this problem, since it is urgent posted the issue on Facebook '
                  isDescriptionThread: false
                  canReply: true
                  visibility: public
                  author:
                    firstName: Jade
                    lastName: Tywin
                    photoURL: https://desk.zoho.com/api/v1/agents/2150000000043591/photo?orgId=3983939
                    name: Jade Tywin
                    type: AGENT
                    email: jade12tywin@zylker.com
                  channel: FACEBOOK
                  source:
                    appName: null
                    extId: null
                    type: SYSTEM
                    permalink: null
                    appPhotoURL: null
                  lastRatingIconURL: https://desk.zoho.com/api/v1/ratingOptions/31138000005998227/logo?orgId=54983163
                  hasAttach: false
                  responderId: '2150000000043591'
                  channelRelatedInfo: null
                  respondedIn: 00:04:09
                  createdTime: '2016-07-25T10:04:43.739Z'
                  attachmentCount: '6'
                  id: '2150000002498038'
                  actions:
                  - method: POST
                    rel: send
                    href: https://desk.zoho.com/api/v1/tickets/1892000000094004/sendDraft?draftThreadId=1892000001004072
                  - method: DELETE
                    rel: delete
                    href: https://desk.zoho.com/api/v1/tickets/1892000000094004/draftReply/1892000001004072
                  contentType: text/html
                  status: DRAFT
                  direction: out
                - isDescriptionThread: false
                  canReply: true
                  visibility: public
                  author:
                    firstName: Jade
                    lastNa

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