Zoho Thread API

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

Documentation

Specifications

Code Examples

Other Resources

OpenAPI Specification

zoho-thread-api-openapi.yml Raw ↑
openapi: 3.1.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:
  parameters:
    parentConversationId:
      name: parentConversationId
      in: query
      required: false
      style: form
      explode: true
      schema:
        type:
        - string
        - integer
        format: int64
        pattern: ([0-9]+)
    ticketId:
      name: ticketId
      in: path
      description: ''
      required: true
      style: simple
      explode: false
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int64
        description: ''
        pattern: ([0-9]+)
    threadId:
      name: threadId
      in: path
      description: ''
      required: true
      style: simple
      explode: false
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int64
        description: ''
        pattern: ([0-9]+)
  schemas:
    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
    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
    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
    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
    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
    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
  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
 

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