Zoho Account API

The Account API from Zoho — 12 operation(s) for account.

Operations 14

POST /api/v1/accounts/{accountId}/associateProducts Associate products with an account #
POST /api/v1/accounts/{accountId}/merge Merge Accounts #
GET /api/v1/contacts/{contactId}/accounts List accounts of contact #
GET /api/v1/accounts/{accountId}/statistics Get account statistics #
GET /api/v1/accounts/{accountId}/tickets List tickets by account #
GET /api/v1/accounts List accounts #
POST /api/v1/accounts Create Account #
GET /api/v1/accounts/{accountId}/contracts Get contract #
GET /api/v1/accounts/{accountId} Get Account #
PATCH /api/v1/accounts/{accountId} Update Account #
GET /api/v1/accounts/{accountId}/history Get account history #
POST /api/v1/accounts/moveToTrash Delete Accounts #
GET /api/v1/products/{productId}/accounts List accounts associated with product #
POST /api/v1/accounts/updateMany Update many accounts #

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-account-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-account-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Helpcenter Account API
  version: 1.0.0
tags:
- name: Account
paths:
  /api/v1/accounts/{accountId}/associateProducts:
    post:
      tags:
      - Account
      summary: Associate products with an account
      description: This API associates products with an account. Only a maximum of 10 products can be associated with an account through a single API request.
      operationId: associateProductsWithAccount
      parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/associateProductsWithAccount'
      responses:
        '200':
          $ref: ./MassActionResponse.json#/components/responses/massActionListResponse
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.contacts.UPDATE
      x-audience:
      - external-public
  /api/v1/accounts/{accountId}/merge:
    post:
      tags:
      - Account
      summary: Merge Accounts
      description: This API merges two or more accounts.
      operationId: mergeAccounts
      parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/accountMergeRequest'
      responses:
        '404':
          $ref: ./Common.json#/components/responses/urlNotFoundErrorResponse
        '200':
          $ref: '#/components/responses/accountResponse'
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '500':
          $ref: ./Common.json#/components/responses/internalErrorResponse
        '403':
          $ref: ./Common.json#/components/responses/forbiddenErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.contacts.UPDATE
      x-audience:
      - external-public
  /api/v1/contacts/{contactId}/accounts:
    get:
      tags:
      - Account
      summary: List accounts of contact
      description: This API lists the accounts associated with a particular contact.
      operationId: getAccountsByContact
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/from'
      - name: sortBy
        in: query
        description: 'Sort by a specific attribute: @accountName@ or @createdTime@ or @mappingType@ . The default sorting order is ascending. A @-@ prefix denotes descending order of sorting.'
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: 'Sort by a specific attribute: @accountName@ or @createdTime@ or @mappingType@ . The default sorting order is ascending. A @-@ prefix denotes descending order of sorting.'
          enum:
          - accountName
          - createdTime
          - mappingType
      - $ref: '#/components/parameters/startsWith'
      - $ref: '#/components/parameters/contactId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
        '200':
          $ref: '#/components/responses/accountListWithMappingInfoArray'
      security:
      - iam-oauth2-schema:
        - Desk.contacts.READ
      x-audience:
      - external-public
  /api/v1/accounts/{accountId}/statistics:
    get:
      tags:
      - Account
      summary: Get account statistics
      description: This API fetches the overall statistics of an account.
      operationId: getAccountStatistics
      parameters:
      - $ref: '#/components/parameters/departmentId'
      - $ref: '#/components/parameters/accountId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '404':
          $ref: ./Common.json#/components/responses/urlNotFoundErrorResponse
        '200':
          $ref: ./Statistics.json#/components/responses/statisticsResponse
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '401':
          $ref: ./Common.json#/components/responses/unauthorizedErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.contacts.READ
      x-audience:
      - external-public
  /api/v1/accounts/{accountId}/tickets:
    get:
      tags:
      - Account
      summary: List tickets by account
      description: This API lists tickets received from a specific account.
      operationId: getTicketsByAccount
      parameters:
      - name: include
        in: query
        description: 'Additional information related to the tickets. Values allowed are: contacts, products, departments, team, isRead and assignee. You can pass multiple values by separating them with a comma in the API request.'
        required: false
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          description: 'Additional information related to the tickets. Values allowed are: @contacts@, @products@, @departments@, @team@, @isRead@ and @assignee@. You can pass multiple values by separating them with a comma in the API request.'
          items:
            type:
            - string
            - 'null'
            enum:
            - contacts
            - products
            - departments
            - team
            - assignee
            - isRead
            maxLength: 100
            minLength: 0
          uniqueItems: true
      - $ref: '#/components/parameters/departmentId'
      - name: dueDate
        in: query
        description: Filter by ticket duedate. Values allowed are @overdue@, @tomorrow@, @currentWeek@, @currentMonth@ and @today@. You can include both values by separating them with a comma
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: Filter by ticket duedate. Values allowed are @overdue@, @tomorrow@, @currentWeek@, @currentMonth@ and @today@. You can include both values by separating them with a comma
          enum:
          - overdue
          - tomorrow
          - currentWeek
          - currentMonth
          - today
          maxLength: 100
          minLength: 0
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/from'
      - name: sortBy
        in: query
        description: 'Sort by a specific attribute: @createdTime@ or @modifiedTime@. The default sorting order is ascending. A @-@ prefix denotes descending order of sorting.'
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: 'Sort by a specific attribute: @createdTime@ or @modifiedTime@. The default sorting order is ascending. A @-@ prefix denotes descending order of sorting.'
          enum:
          - createdTime
          - modifiedTime
          maxLength: 100
          minLength: 0
      - name: isSpam
        in: query
        description: Filters Spam tickets
        required: false
        style: form
        explode: true
        schema:
          type:
          - boolean
          - 'null'
          description: Filters Spam tickets
      - $ref: '#/components/parameters/accountId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
        '200':
          $ref: '#/components/responses/getTicketsByAccountResponse'
      security:
      - iam-oauth2-schema:
        - Desk.tickets.READ
        - Desk.search.READ
      x-audience:
      - external-public
  /api/v1/accounts:
    get:
      tags:
      - Account
      summary: List accounts
      description: This API lists a particular number of accounts, based on the limit specified. 
      operationId: getAccounts
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/from'
      - name: sortBy
        in: query
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          enum:
          - website
          - email
          - phone
          - accountName
          - createdTime
          - modifiedTime
          maxLength: 100
          minLength: 0
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/accountListArray'
      security:
      - iam-oauth2-schema:
        - Desk.contacts.READ
      x-audience:
      - external-public
    post:
      tags:
      - Account
      summary: Create Account
      description: This API creates an account in your help desk portal.
      operationId: createAccount
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/accountjson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '500':
          $ref: ./Common.json#/components/responses/internalErrorResponse
        '200':
          $ref: '#/components/responses/accountResponse'
      security:
      - iam-oauth2-schema:
        - Desk.contacts.CREATE
      x-audience:
      - external-public
  /api/v1/accounts/{accountId}/contracts:
    get:
      tags:
      - Account
      summary: Get contract
      description: Getting contracts of an Account
      operationId: getContractsByAccount
      parameters:
      - name: contractStatus
        in: query
        description: Contract Status,Indicates the Current Status of the Contract, Values are @ACTIVE@, @EXPIRED@, @FUTURE@
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: Contract Status,Indicates the Current Status of the Contract, Values are @ACTIVE@, @EXPIRED@, @FUTURE@
          enum:
          - ACTIVE
          - EXPIRED
          - FUTURE
          maxLength: 100
          minLength: 0
      - $ref: '#/components/parameters/departmentId'
      - name: limit
        in: query
        description: Number of contracts to fetch, Ranges from 1-50, DEFAULT 50
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int32
          default: 50
          description: Number of accounts to list
          maximum: 50
          minimum: 1
          pattern: ([0-9]+)
      - $ref: '#/components/parameters/from'
      - $ref: '#/components/parameters/accountId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/getContractsForAccountResponse'
      security:
      - iam-oauth2-schema:
        - Desk.settings.READ
      x-audience:
      - external-public
  /api/v1/accounts/{accountId}:
    get:
      tags:
      - Account
      summary: Get Account
      description: This API fetches an account from your help desk portal.
      operationId: getAccount
      parameters:
      - name: include
        in: query
        description: 'Allowed values are :  @owner@'
        required: false
        style: simple
        explode: true
        schema:
          type:
          - 'null'
          - array
          description: 'Allowed values are :  @owner@'
          items:
            type:
            - string
            - 'null'
            enum:
            - owner
            maxLength: 100
            minLength: 0
          uniqueItems: true
      - $ref: '#/components/parameters/accountId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/accountResponse'
      security:
      - iam-oauth2-schema:
        - Desk.contacts.READ
      x-audience:
      - external-public
    patch:
      tags:
      - Account
      summary: Update Account
      description: This API updates details of an existing account.
      operationId: updateAccount
      parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/updateAccount_accountjson'
      responses:
        '200':
          $ref: '#/components/responses/accountResponse'
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.contacts.UPDATE
      x-audience:
      - external-public
  /api/v1/accounts/{accountId}/history:
    get:
      tags:
      - Account
      summary: Get account history
      description: This API fetches the ticket history of an account.
      operationId: getTicketHistoryByAccount
      parameters:
      - name: agentId
        in: query
        description: Key that filters ticket activities performed by a particular agent
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          description: ' Key that filters ticket activities performed by a particular agent'
          pattern: ([0-9]+)
      - $ref: '#/components/parameters/contactId'
      - $ref: '#/components/parameters/departmentId'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/from'
      - $ref: '#/components/parameters/accountId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '404':
          $ref: ./Common.json#/components/responses/urlNotFoundErrorResponse
        '200':
          $ref: ./TicketHistory.json#/components/responses/accountContactHistoryResponse
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '401':
          $ref: ./Common.json#/components/responses/unauthorizedErrorResponse
      security:
      - iam-oauth2-schema:
        - Desk.contacts.READ
        - Desk.tickets.READ
      x-audience:
      - external-public
  /api/v1/accounts/moveToTrash:
    post:
      tags:
      - Account
      summary: Delete Accounts
      description: This API moves the accounts specified to the Recycle Bin.
      operationId: deleteAccount
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/accountsrecyclebinjson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.contacts.DELETE
      x-audience:
      - external-public
  /api/v1/products/{productId}/accounts:
    get:
      tags:
      - Account
      summary: List accounts associated with product
      description: This API lists the accounts associated with a product
      operationId: getAccountsByProduct
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/from'
      - name: sortBy
        in: query
        description: 'Key that sorts the accounts by a specific attribute: @accountName@ or @createdTime@.The default sorting order is ascending. A @-@ prefix denotes descending order of sorting'
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: 'Key that sorts the accounts by a specific attribute: @accountName@ or @createdTime@.The default sorting order is ascending. A @-@ prefix denotes descending order of sorting'
          enum:
          - website
          - email
          - phone
          - accountName
          - createdTime
          - modifiedTime
          maxLength: 100
          minLength: 0
      - name: productId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          pattern: ([0-9]+)
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
        '200':
          $ref: '#/components/responses/accountListArray'
      security:
      - iam-oauth2-schema:
        - Desk.settings.READ
        - Desk.contacts.READ
      x-audience:
      - external-public
  /api/v1/accounts/updateMany:
    post:
      tags:
      - Account
      summary: Update many accounts
      description: This API updates multiple accounts at once.
      operationId: bulkUpdateAccounts
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/account_massupdate'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '200':
          $ref: '#/components/responses/updateManyResponse'
      security:
      - iam-oauth2-schema:
        - Desk.contacts.UPDATE
      x-audience:
      - external-public
components:
  parameters:
    contactId:
      name: contactId
      in: path
      description: Unique ID of the contact
      required: true
      style: simple
      explode: false
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int64
        description: Key that filters ticket activities related to a particular contact
        pattern: ([0-9]+)
    departmentId:
      name: departmentId
      in: query
      description: Unique ID of the department
      required: false
      style: form
      explode: true
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int64
        description: ID of the department from which the statistics must be fetched. If you do not pass this parameter in the API request, statistics from all permitted departments will be fetched.
        pattern: ([0-9]+)
    limit:
      name: limit
      in: query
      description: Number of accounts to fetch
      required: false
      style: form
      explode: true
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int32
        description: Number of accounts to list
        maximum: 99
        minimum: 1
        pattern: ([0-9]+)
    startsWith:
      name: startsWith
      in: query
      description: Letter with which the names of the accounts must start
      required: false
      style: form
      explode: true
      schema:
        type:
        - string
        - 'null'
        description: Letter with which the names of the accounts must start
        maxLength: 100
        minLength: 0
    accountId:
      name: accountId
      in: path
      description: Unique ID of the account
      required: true
      style: simple
      explode: false
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int64
        pattern: ([0-9]+)
    from:
      name: from
      in: query
      description: Index number, starting from which the accounts must be fetched
      required: false
      style: form
      explode: true
      schema:
        type: integer
        format: int32
        default: 1
        description: Index number, starting from which the accounts must be fetched
        minimum: 1
  responses:
    updateManyResponse:
      description: updateManyResponse template definitions
      content:
        application/json:
          schema:
            oneOf:
            - type:
              - 'null'
              - object
              additionalProperties: false
              properties:
                results:
                  $ref: ./MassActionResponse.json#/components/schemas/results
              required:
              - results
            - additionalProperties: false
              allOf:
              - $ref: ./errors.json#/components/schemas/commonErrorResponse
              - type:
                - 'null'
                - object
                properties:
                  errors:
                    type:
                    - 'null'
                    - array
                    items:
                      type:
                      - 'null'
                      - object
                      additionalProperties: false
                      maxProperties: 3
                      minProperties: 3
                      properties:
                        fieldName:
                          type:
                          - string
                          - 'null'
                          maxLength: 100
                          minLength: 0
                        errorType:
                          type:
                          - string
                          - 'null'
                          enum:
                          - invalid
                          - duplicate
                          - missing
                          maxLength: 100
                          minLength: 0
                        errorMessage:
                          type:
                          - string
                          - 'null'
                          maxLength: 100
                          minLength: 0
                      required:
                      - errorMessage
                      - errorType
                      - fieldName
                    uniqueItems: false
                required:
                - errors
            - type:
              - 'null'
              - object
              additionalProperties: false
              properties:
                errorCode:
                  type:
                  - string
                  - 'null'
                  enum:
                  - URL_NOT_FOUND
                  - UNAUTHORIZED
                  - INVALID_OAUTH
                  - SCOPE_MISMATCH
                  - FORBIDDEN
                  - LICENSE_ACCESS_LIMITED
                  - METHOD_NOT_ALLOWED
                  - RESOURCE_SIZE_EXCEEDED
                  - UNSUPPORTED_MEDIA_TYPE
                  - INVALID_DATA
                  - UNPROCESSABLE_ENTITY
                  - ONLY_LIVECHAT_USER
                  - INTEGRATION_ADMIN_ERROR
                  - THRESHOLD_EXCEEDED
                  - INTERNAL_SERVER_ERROR
                  - EMPTY_PAYLOAD
                  maxLength: 100
                  minLength: 0
                message:
                  type:
                  - string
                  - 'null'
                  maxLength: 255
                  minLength: 0
              required:
              - errorCode
              - message
            - type:
              - 'null'
              - object
              additionalProperties: false
              properties:
                errorCode:
                  type:
                  - string
                  - 'null'
                  enum:
                  - URL_NOT_FOUND
                  - UNAUTHORIZED
                  - INVALID_OAUTH
                  - SCOPE_MISMATCH
                  - FORBIDDEN
                  - LICENSE_ACCESS_LIMITED
                  - METHOD_NOT_ALLOWED
                  - RESOURCE_SIZE_EXCEEDED
                  - UNSUPPORTED_MEDIA_TYPE
                  - INVALID_DATA
                  - UNPROCESSABLE_ENTITY
                  - ONLY_LIVECHAT_USER
                  - INTEGRATION_ADMIN_ERROR
                  - THRESHOLD_EXCEEDED
                  - INTERNAL_SERVER_ERROR
                  - EMPTY_PAYLOAD
                  maxLength: 100
                  minLength: 0
                message:
                  type:
                  - string
                  - 'null'
                  maxLength: 255
                  minLength: 0
              required:
              - errorCode
              - message
          examples:
            Valid responses Definitions:
              value:
                results:
                - success: true
                  id: '1892000000093303'
                  errors: null
                - success: true
                  id: '1892000000085009'
                  errors: null
                - success: false
                  id: '1892000000050003'
                  errors:
                    errorCode: UNPROCESSABLE_ENTITY
                    httpCode: '422'
    getTicketsByAccountResponse:
      description: getTicketsByAccountResponse template definitions
      content:
        application/json:
          schema:
            allOf:
            - type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      product:
                        type:
                        - 'null'
                        - object
                        additionalProperties: false
                        maxProperties: 2
                        minProperties: 2
                        properties:
                          id:
                            type:
                            - string
                            - 'null'
                            - integer
                            format: int64
                            pattern: ([0-9]+)
                          productName:
                            type:
                            - string
                            - 'null'
                            maxLength: 200
                            minLength: 0
                        required:
                        - id
                        - productName
                      contact:
                        type:
                        - 'null'
                        - object
                        additionalProperties: false
                        maxProperties: 8
                        minProperties: 8
                        properties:
                          lastName:
                            type:
                            - string
                            - 'null'
                            maxLength: 200
                            minLength: 0
                          firstName:
                            type:
                            - string
                            - 'null'
                            maxLength: 40
                            minLength: 0
                          phone:
                            type:
                            - string
                            - 'null'
                            maxLength: 50
                            minLength: 0
                            pattern: '[0-9a-zA-Z_\+\-\.\(\)\$@\?\,\:\''\/\!\P{InBasicLatin}\s]+'
                          mobile:
                            type:
                            - string
                            - 'null'
                            maxLength: 50
                            minLength: 0
                            pattern: '[0-9a-zA-Z_\+\-\.\(\)\$@\?\,\:\''\/\!\P{InBasicLatin}\s]+'
                          id:
                            type:
                            - string
                            - 'null'
                            - integer
                            format: int64
                            pattern: ([0-9]+)
                          type:
                            type:
                            - string
                            - 'null'
                            x-dynamic-enum: true
                          email:
                            type:
                            - string
                            - 'null'
                            maxLength: 255
                            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}$
                          account:
                            type:
                            - 'null'
                            - object
                            additionalProperties: false
                            maxProperties: 3
                            minProperties: 3
                            properties:
                              website:
                                type:
                                - string
                                - 'null'
                                maxLength: 120
                                minLength: 0
                              accountName:
                                type:
                                - string
                                - 'null'
                                maxLength: 200
                                minLength: 0
                              id:
                                type:
                                - string
                                - 'null'
                                - integer
                                format: int64
                                pattern: ([0-9]+)
                            required:
                            - accountName
                            - id
                            - website
                        required:
                        - account
                        - email
                        - firstName
                        - id
                        - lastName
                        - mobile
                        - phone
                        - type
                      isRead:
                        type:
                        - boolean
                        - 'null'
                      team:
                        type:
                        - 'null'
                        - object
                        additionalProperties: false
                        maxProperties: 3
                        minProperties: 3
                        properties:
                          name:
                            type:
                            - string
                            - 'null'
                            maxLength: 50
                            minLength: 1
                            pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
                          id:
                            type:
                            - string
                            - 'null'
                            - integer
                            format: int64
                            pattern: ([0-9]+)
                          logoUrl:
                            type:
                            - string
                            - 'null'
                            maxLength: 200
                            minLength: 0
                            pattern: (^(ht|f)tp(s?)\://[-.\w]*(/?)([a-zA-Z0-9\-\.\?\,\:\'/\\+=&%\$#_@]*)?$)
                        required:
                        - id
                        - logoUrl
                        - name
                      assignee:
                        type:
                        - 'null'
                        - object
                        additionalProperties: false
                        maxProperties: 5
                        minProperties: 5
                        properties:
                          firstName:
                            type:
                            - string
                            - 'null'
                            maxLength: 50
                            minLength: 0
                          photoURL:
                            type:
                            - string
                            - 'null'
                            maxLength: 200
                            minLength: 0
                            pattern: (^(ht|f)tp(s?)\://[-.\w]*(/?)([a-zA-Z0-9\-\.\?\,\:\'/\\+=&%\$#_@]*)?$)
                          lastName:
                            type:
                            - string
                            - 'null'
                            maxLength: 50
                            minLength: 0
                          id:
                            type:
                            - string
                            - 'null'
                            - integer
                            format: int64
                            pattern: ([0-9]+)
                          email:
                            type:
                            - string
                            - 'null'
                            maxLength: 100
                            minLength: 0
                            pattern: ^[a-zA-Z0-9\_]([a-zA-Z0-9\_\+\-\.

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