Zoho Agent API

The Agent API from Zoho — 15 operation(s) for agent.

Documentation

Specifications

Code Examples

Other Resources

OpenAPI Specification

zoho-agent-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Helpcenter Agent API
  version: 1.0.0
tags:
- name: Agent
paths:
  /api/v1/myPreferences:
    get:
      tags:
      - Agent
      summary: Get My Preferences
      description: This API fetches the preferences of the currently logged in agent.
      operationId: getMyPreference
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/myPreference'
      security:
      - iam-oauth2-schema:
        - Desk.settings.READ
        - Desk.basic.READ
      x-audience:
      - external-public
    patch:
      tags:
      - Agent
      summary: Update My Preferences
      description: This API updates the preferences of the currently logged in agent.
      operationId: updateMyPreferences
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/myPreferenceInputStrm'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
        - Desk.basic.UPDATE
      x-audience:
      - external-public
  /api/v1/uploadMyPhoto:
    post:
      tags:
      - Agent
      summary: Upload my photo
      description: 'This API sets the profile photo for the currently logged in agent.<p><b>Note</b>: To upload your photo generate OAuthToken for the scope: Desk.settings.UPDATE,profile.userphoto.UPDATE or Desk.basic.UPDATE,profile.userphoto.UPDATE </p>'
      operationId: uploadMyPhoto
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                userPhoto:
                  type: string
                  format: binary
              required:
              - userPhoto
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '200':
          $ref: '#/components/responses/myPhotoResponse'
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
        - Desk.basic.UPDATE
      x-audience:
      - external-public
  /api/v1/agents/{agentId}/reassignment:
    post:
      tags:
      - Agent
      summary: Schedule reassignment for deactivated or deleted agents
      description: This API schedules reassignment of tickets, tasks, and automations belonging to a deleted/deactivated agent to another agent within the same department.
      operationId: scheduleAgentReassignment
      parameters:
      - $ref: '#/components/parameters/agentId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/scheduleReassignment'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
        - Desk.basic.UPDATE
      x-audience:
      - external-public
  /api/v1/agentsByIds:
    get:
      tags:
      - Agent
      summary: Get agent details by agentId
      description: This API fetches details of agents via the agent IDs passed in the API request.
      operationId: getAgentsByIds
      parameters:
      - name: agentIds
        in: query
        description: Comma-separated array of agent IDs. Maximum number of IDs allowed is 50.
        required: true
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          description: Comma-separated array of agent IDs. Maximum number of IDs allowed is 50.
          items:
            type:
            - string
            - 'null'
            - integer
            format: int64
            pattern: ([0-9]+)
          uniqueItems: false
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '200':
          $ref: '#/components/responses/getAgentsByIdsResponse'
      security:
      - iam-oauth2-schema:
        - Desk.settings.READ
        - Desk.basic.READ
      x-audience:
      - external-public
  /api/v1/agents/{agentId}/photo:
    get:
      tags:
      - Agent
      summary: Get agent photo
      description: 'This API gets the profile photo for the given agent id.<p><b>Note</b>: To get agent photo generate OAuthToken for the scope: Desk.settings.READ,profile.userphoto.READ or Desk.basic.READ,profile.userphoto.READ </p>'
      operationId: getAgentProfilePhoto
      parameters:
      - name: fileSize
        in: query
        description: Size of the image file to download. Values allowed are @THUMBNAIL@ (image with reduced dimensions and size) and @ACTUAL@ (image with actual dimensions and size). The default value is @ACTUAL@.
        required: false
        style: form
        explode: true
        schema:
          type: string
          description: Size of the image file to download. Values allowed are @THUMBNAIL@ (image with reduced dimensions and size) and @ACTUAL@ (image with actual dimensions and size). The default value is @ACTUAL@.
          enum:
          - THUMBNAIL
          - ACTUAL
      - $ref: '#/components/parameters/agentId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: ./Common.json#/components/responses/fileResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.READ
        - Desk.basic.READ
      x-audience:
      - external-public
  /api/v1/agents/activate:
    post:
      tags:
      - Agent
      summary: Activate agents
      description: This API activates agents in your help desk.
      operationId: activateAgents
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: ./Department.json#/components/requestBodies/agentIdsArray
      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.settings.UPDATE
        - Desk.basic.UPDATE
      x-audience:
      - external-public
  /api/v1/deletedAgents/{agentId}/anonymize:
    post:
      tags:
      - Agent
      summary: Anonymize deleted agent
      description: This API removes the identification details of a deleted agent.
      operationId: anonymizeDeletedAgent
      parameters:
      - $ref: '#/components/parameters/agentId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/anonymizeAgentsRequest'
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
        - Desk.basic.UPDATE
      x-audience:
      - external-public
  /api/v1/agents:
    get:
      tags:
      - Agent
      summary: List agents
      description: This API lists a particular number of agents, based on the limit specified.
      operationId: getAgents
      parameters:
      - name: include
        in: query
        description: Secondary information related to agents, The allowed values are profile, role. You can include all two values by separating them with commas in the API request.
        required: false
        style: simple
        explode: true
        schema:
          type: array
          description: Secondary information related to agents, The allowed values are @profile@, @role@. You can include all two values by separating them with commas in the API request.
          items:
            type: string
            enum:
            - profile
            - role
          maxItems: 2
          uniqueItems: true
      - name: roleIds
        in: query
        description: Comma-separated array of role IDs. Maximum number of IDs allowed is 50.
        required: false
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          description: Comma-separated array of role IDs. Maximum number of IDs allowed is 50.
          items:
            type:
            - string
            - 'null'
            - integer
            format: int64
            pattern: ([0-9]+)
          uniqueItems: false
      - name: searchStr
        in: query
        description: 'String to search for agents by first name, last name, or email ID. The string must contain at least one character. The supported search methods: 1) string* - Searches for agents whose first name, last name, or email ID start with the string, 2) *string* - Searches for agents whose first name, last name, or email ID contain the string, 3) string - Searches for agents whose first name, last name, or email ID is an exact match for the string'
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: 'String to search for agents by first name, last name, or email ID. The string must contain at least one character. The supported search methods: 1) string* - Searches for agents whose first name, last name, or email ID start with the string, 2) *string* - Searches for agents whose first name, last name, or email ID contain the string, 3) string - Searches for agents whose first name, last name, or email ID is an exact match for the string'
          maxLength: 100
          minLength: 0
          pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
      - $ref: '#/components/parameters/limit'
      - name: rolePermissionType
        in: query
        description: Types of roles and permissions of the agents to list. The allowed values are @AgentPublic@, @AgentPersonal@,@AgentTeamPersonal@, @Admin@, @Light@, @Custom@, and @${NON_LIGHT}@. @${NON_LIGHT}@ refers to agents who are not associated with the light agent profile.
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: Types of roles and permissions of the agents to list. The allowed values are @AgentPublic@, @AgentPersonal@,@AgentTeamPersonal@, @Admin@, @Light@, @Custom@, and @${NON_LIGHT}@. @${NON_LIGHT}@ refers to agents who are not associated with the light agent profile.
          enum:
          - AgentPublic
          - AgentPersonal
          - AgentTeamPersonal
          - Admin
          - Custom
          - Light
          maxLength: 100
          minLength: 0
      - name: profileIds
        in: query
        description: Comma-separated array of profile IDs. Maximum number of IDs allowed is 50.
        required: false
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          description: Comma-separated array of profile IDs. Maximum number of IDs allowed is 50.
          items:
            type:
            - string
            - 'null'
            - integer
            format: int64
            pattern: ([0-9]+)
          uniqueItems: false
      - $ref: '#/components/parameters/from'
      - $ref: '#/components/parameters/isConfirmed'
      - name: departmentIds
        in: query
        description: Comma-separated array of department IDs. Maximum number of IDs allowed is 50.
        required: false
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          description: Comma-separated array of department IDs. Maximum number of IDs allowed is 50.
          items:
            type:
            - string
            - 'null'
            - integer
            format: int64
            pattern: ([0-9]+)
          uniqueItems: false
      - $ref: '#/components/parameters/status'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
        '200':
          $ref: '#/components/responses/agentListArray'
      security:
      - iam-oauth2-schema:
        - Desk.settings.READ
        - Desk.basic.READ
      x-audience:
      - external-public
    post:
      tags:
      - Agent
      summary: Add agent
      description: 'This API adds an agent to your help desk.<p><br>Keep in mind the following points while adding an agent: <ol> <li>The<b>emailId</b>,<b>lastName</b>,<b>associatedDepartmentIds</b>, and <b>rolePermissionType</b> are mandatory in the API request.</li> <li>To assign the profile and role for the agents, pass any of the following values with the <b>rolePermissionType</b> key: <ol type="a"><li>For the Support Administrator profile and CEO role, pass <b>"rolePermissionType"</b>:<b>"Admin"</b></li> <li>For the Agent profile and public role, pass <b>"rolePermissionType"</b>:<b>"AgentPublic"</b><li>For the Agent profile and personal role, pass <b>"rolePermissionType"</b>:<b>"AgentPersonal"</b></li> </li><li>For custom profiles and roles, pass <b>"rolePermissionType"</b>:<b>"Custom"</b> and <b>"roleId"</b>:<b>"&lt;actual role ID&gt;"</b>, <b>"profileId"</b>:<b>"&lt;actual profile ID&gt;"</b> </li><li>For the light agent profile and role, pass <b>"rolePermissionType"</b>:<b>"Light"</b></li><li>For the Agent profile and Personal Team  role, pass <b>"rolePermissionType"</b>:<b>"AgentTeamPersonal"</b></li></ol> </li></ol></p>'
      operationId: addAgent
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/addAgentInputStream'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/agentCFResponse'
      security:
      - iam-oauth2-schema:
        - Desk.settings.CREATE
        - Desk.basic.CREATE
      x-audience:
      - external-public
  /api/v1/myinfo:
    get:
      tags:
      - Agent
      summary: Get My Information
      description: 'This API fetches details of the currently logged in agent. '
      operationId: getMyInfo
      parameters:
      - name: include
        in: query
        description: Secondary information related to the agent. Values allowed are profile, role, associatedDepartments, and associatedChatDepartments. You can pass multiple values by separating them with commas in the query param
        required: false
        style: simple
        explode: true
        schema:
          type: array
          description: Secondary information related to the agent. Values allowed are @profile@, @role@, @associatedDepartments@, and @associatedChatDepartments@. You can pass multiple values by separating them with commas in the query param
          items:
            type: string
            enum:
            - profile
            - role
            - associatedDepartments
            - associatedChatDepartments
          maxItems: 4
          uniqueItems: true
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/getMyInfoResponse'
      security:
      - iam-oauth2-schema:
        - Desk.settings.READ
        - Desk.basic.READ
      x-audience:
      - external-public
  /api/v1/agents/{agentId}:
    get:
      tags:
      - Agent
      summary: Get agent
      description: This API fetches details of an agent in your help desk.
      operationId: getAgent
      parameters:
      - name: include
        in: query
        description: Secondary information related to the agent. Values allowed are profile, role, associatedDepartments, associatedChatDepartments and verifiedEmails. You can include all four values by separating them with commas in the API request.
        required: false
        style: simple
        explode: true
        schema:
          type: array
          description: Secondary information related to the agent. Values allowed are @profile@, @role@, @associatedDepartments@, @associatedChatDepartments@ and @verifiedEmails@. You can include all four values by separating them with commas in the API request.
          items:
            type: string
            enum:
            - profile
            - role
            - associatedDepartments
            - associatedChatDepartments
            - verifiedEmails
          maxItems: 5
          uniqueItems: true
      - $ref: '#/components/parameters/agentId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/getAgentResponse'
      security:
      - iam-oauth2-schema:
        - Desk.settings.READ
        - Desk.basic.READ
      x-audience:
      - external-public
    patch:
      tags:
      - Agent
      summary: Update agent
      description: This API updates details of an agent.
      operationId: updateAgent
      parameters:
      - $ref: '#/components/parameters/agentId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/updateAgent_addAgentInputStream'
      responses:
        '200':
          $ref: '#/components/responses/updateAgentResponse'
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '403':
          $ref: ./Common.json#/components/responses/forbiddenErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
        - Desk.basic.UPDATE
      x-audience:
      - external-public
  /api/v1/agents/{agentId}/deactivate:
    post:
      tags:
      - Agent
      summary: Deactivate agent
      description: This API deactivates an agent in your help desk.
      operationId: deactivateAgents
      parameters:
      - $ref: '#/components/parameters/agentId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
        - Desk.basic.UPDATE
      x-audience:
      - external-public
  /api/v1/deleteMyPhoto:
    post:
      tags:
      - Agent
      summary: Delete My Photo
      description: This API deletes the profile photo of the currently logged in agent.
      operationId: deleteMyPhoto
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
        - Desk.basic.UPDATE
      x-audience:
      - external-public
  /api/v1/agents/deleteUnconfirmed:
    post:
      tags:
      - Agent
      summary: Delete unconfirmed agents
      description: This API deletes unconfirmed agents from your help desk.
      operationId: deleteUnconfirmedAgent
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/deleteUnConfAgentRequest'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
        - Desk.basic.UPDATE
      x-audience:
      - external-public
  /api/v1/agents/count:
    get:
      tags:
      - Agent
      summary: Get agents count
      description: This API lists the agents count by status, confirmed and include light
      operationId: getAgentsCount
      parameters:
      - $ref: '#/components/parameters/isConfirmed'
      - name: includeLightAgent
        in: query
        description: Count light agent.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          description: Count light agent.
      - $ref: '#/components/parameters/status'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: ./Department.json#/components/responses/deptCountResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.READ
        - Desk.basic.READ
      x-audience:
      - external-public
  /api/v1/agents/reinvite:
    post:
      tags:
      - Agent
      summary: Reinvite unconfirmed agents
      description: This API sends reinvitation mails to unconfirmed agents.
      operationId: reInviteAgents
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: ./Department.json#/components/requestBodies/reInviteAgents_agentIdsArray
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
        - Desk.basic.UPDATE
      x-audience:
      - external-public
components:
  schemas:
    myPreferenceInputStrm:
      type:
      - 'null'
      - object
      additionalProperties: false
      properties:
        namePattern:
          type:
          - 'null'
          - array
          items:
            type:
            - string
            - 'null'
            enum:
            - LAST_NAME
            - FIRST_NAME
            maxLength: 100
            minLength: 0
          maxItems: 2
          minItems: 2
          uniqueItems: true
        currentDepartment:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
      required:
      - currentDepartment
      - namePattern
    agentIdsResponseArray:
      type:
      - 'null'
      - array
      items:
        oneOf:
        - $ref: '#/components/schemas/agentIdsResponse'
        - $ref: '#/components/schemas/agentIdsCFResponse'
    agentIdsCFResponse:
      allOf:
      - type:
        - 'null'
        - object
        additionalProperties: false
        properties:
          cf:
            type:
            - 'null'
            - object
            additionalProperties: false
            patternProperties:
              ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+:
                type:
                - string
                - 'null'
                maxLength: 100
                minLength: 0
                pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
        required:
        - cf
      - $ref: '#/components/schemas/agentIdsResponse'
    agentCFResponse:
      additionalProperties: false
      allOf:
      - $ref: '#/components/schemas/agentCFInputStream'
      - type:
        - 'null'
        - object
        properties:
          photoURL:
            type:
            - string
            - 'null'
            maxLength: 100
            minLength: 0
            pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
          name:
            type:
            - string
            - 'null'
            maxLength: 100
            minLength: 0
          timeZone:
            type:
            - string
            - 'null'
            maxLength: 100
            minLength: 0
            pattern: '[a-zA-Z_/\-\+0-9]*'
          isConfirmed:
            type:
            - boolean
            - 'null'
          id:
            type:
            - string
            - 'null'
            - integer
            format: int64
            pattern: ([0-9]+)
          zuid:
            type:
            - string
            - 'null'
            - integer
            format: int32
            pattern: ([0-9]+)
          isZiaAgent:
            type:
            - boolean
            - 'null'
            description: Indicates whether the agent is a Zia agent or a human agent
        required:
        - id
        - isConfirmed
        - isZiaAgent
        - name
        - photoURL
        - timeZone
        - zuid
    agentResponse:
      additionalProperties: false
      allOf:
      - $ref: '#/components/schemas/agentInputStream'
      - type:
        - 'null'
        - object
        properties:
          photoURL:
            type:
            - string
            - 'null'
            maxLength: 100
            minLength: 0
            pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
          roleId:
            type:
            - string
            - 'null'
            - integer
            format: int64
            pattern: ([0-9]+)
          profileId:
            type:
            - string
            - 'null'
            - integer
            format: int64
            pattern: ([0-9]+)
          name:
            type:
            - string
            - 'null'
            maxLength: 100
            minLength: 0
          timeZone:
            type:
            - string
            - 'null'
            maxLength: 100
            minLength: 0
            pattern: '[a-zA-Z_/\-\+0-9]*'
          isConfirmed:
            type:
            - boolean
            - 'null'
          id:
            type:
            - string
            - 'null'
            - integer
            format: int64
            pattern: ([0-9]+)
          zuid:
            type:
            - string
            - 'null'
            - integer
            format: int32
            pattern: ([0-9]+)
          isZiaAgent:
            type:
            - boolean
            - 'null'
            description: Indicates whether the agent is a Zia agent or a human agent
        required:
        - id
        - isConfirmed
        - isZiaAgent
        - name
        - photoURL
        - profileId
        - roleId
        - timeZone
        - zuid
    agentResponseArray:
      type:
      - 'null'
      - array
      items:
        anyOf:
        - $ref: '#/components/schemas/agentResponse'
        - $ref: '#/components/schemas/agentCFResponse'
    newReassignOwner:
      type:
      - 'null'
      - object
      additionalProperties: false
      properties:
        departmentId:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        taskNewOwner:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        ticketNewOwner:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
      required:
      - departmentId
      - taskNewOwner
      - ticketNewOwner
    agentIdsResponse:
      type:
      - 'null'
      - object
      additionalProperties: false
      properties:
        lastName:
          type:
          - string
          - 'null'
          maxLength: 50
          minLength: 0
        extn:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: '[0-9a-zA-Z_\-\.\$@\?\,\:\''\/\!\P{InBasicLatin}\s]+|^$'
        roleId:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        mobile:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: '[0-9a-zA-Z_\-\.\$@\?\,\:\''\/\!\P{InBasicLatin}\s]+|^$'
        emailId:
          type:
          - string
          - 'null'
          maxLength: 100
          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}$
        zuid:
          type:
          - string
          - 'null'
          - integer
          format: int32
          pattern: ([0-9]+)
        associatedDepartmentIds:
          type:
          - 'null'
          - array
          items:
            type:
            - string
            - 'null'
            - integer
            format: int64
            pattern: ([0-9]+)
          uniqueItems: true
        photoURL:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
        firstName:
          type:
          - string
          - 'null'
          maxLength: 50
          minLength: 0
        phone:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: '[0-9a-zA-Z_\-\.\$@\?\,\:\''\/\!\P{InBasicLatin}\s]+|^$'
        profileId:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        channelExpert:
          type:
          - 'null'
          - array
          items:
            type:
            - string
            - 'null'
            x-dynamic-enum: true
          uniqueItems: false
        rolePermissionType:
          type:
          - string
          - 'null'
          enum:
          - AgentPublic
          - AgentPersonal
          - AgentTeamPersonal
          - Admin
          - Custom
          - Light
          maxLength: 100
          minLength: 0
        isConfirmed:
          type:
          - boolean
          - 'null'
        aboutInfo:
          type:
          - string
          - 'null'
          maxLength: 65535
          minLength: 0
          pattern: '[0-9a-zA-Z_\-\.\$@\?\,\:\''\/\!\P{InBasicLatin}\s]+|^$'
        id:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        status:
          type:
          - string
          - 'null'
          enum:
          - ACTIVE
          - DISABLED
          - DELETED
          - IMPORTED
          maxLength: 100
          minLength: 0
        isZiaAgent:
          type:
          - boolean
          - 'null'
          description: Indicates whether the agent is a Zia agent or a human agent
      required:
      - aboutInfo
      - associatedDepartmentIds
      - channelExpert
      - emailId
      - extn
      - firstName
      - id
      - isConfirmed
      - lastName
      - mobile
      - phone
      - photoURL
      - profileId
      - roleId
      - rolePermissionType
      - status
      - zuid
    addAgentInputStream:
      type:
      - 'null'
      - object
      additionalProperties: false
      properties:
        lastName:
          type:
          - string
          - 'null'
          maxLength: 50
          minLength: 0
        extn:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: '[0-9a-zA-Z_\-\.\$@\?\,\:\''\/\!\P{InBasicLatin}\s]+|^$'
        roleId:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
        langCode:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: '[a-zA-Z_]*'
        mobile:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: '[0-9a-zA-Z_\-\.\$@\?\,\:\''\/\!\P{InBasicLatin}\s]+|^$'
        emailId:
          type:
          - string
          - 'null'
          maxLength: 100
          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}$
        associatedChatDepartmentIds:
          type:
          - 'null'
          - array
          items:
            type:
            - string
            - 'null'
            - integer
            format: int64
            pattern: ([0-9]+)
          uniqueItems: true
        associatedDepartmentIds:
          type:
          - 'null'
          - array
          items:
            type:
            - string
            - 'null'
            - integer
            format: int64
            pattern: ([0-9]+)
          uniqueItems: true
        firstName:
          type:
          - string
          - 'null'
          maxLength: 50
          minLength: 0
        phone:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: '[0-9a-zA-Z_\-\.\$@\?\,\:\''\/\!\P{InBasicLatin}\s]+|^$'
        countryCode:
          type:
          - string
          - 'null'
          maxLength: 100
          minLength: 0
          pattern: 

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