Zoho Layout API

The Layout API from Zoho — 13 operation(s) for layout.

Operations 17

GET /api/v1/layouts Get Layouts #
POST /api/v1/layouts Create Layout #
GET /api/v1/layouts/standardLayoutFormat Get Standard Layout Format #
POST /api/v1/layouts/{layoutId}/clone Clone Layout #
GET /api/v1/layouts/{layoutId}/fields/{fieldId}/value Export PickList Values #
POST /api/v1/layouts/{layoutId}/deactivate Deactivate Layout #
GET /api/v1/layouts/{layoutId} Get Layout #
DELETE /api/v1/layouts/{layoutId} Delete Layout #
PATCH /api/v1/layouts/{layoutId} Update Layout #
POST /api/v1/layouts/{layoutId}/activate Activate Layout #
POST /api/v1/layouts/{layoutId}/fields/{fieldId}/cloneFieldsInLayout Clone Fields to other Layouts #
GET /api/v1/layouts/{layoutId}/profiles Get Layout Profiles #
PATCH /api/v1/layouts/{layoutId}/profiles Associate Profiles To Layout #
GET /api/v1/myForm Get My Form #
POST /api/v1/layouts/{layoutId}/replaceValues Replace PickList Value #
PATCH /api/v1/layouts/{layoutId}/fields/{fieldId} Update Layout Field #
POST /api/v1/layouts/{layoutId}/fields/{fieldId}/unassociate Remove Field From Layout #

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-layout-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-layout-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Helpcenter Layout API
  version: 1.0.0
tags:
- name: Layout
paths:
  /api/v1/layouts:
    get:
      tags:
      - Layout
      summary: Get Layouts
      description: This API lists all the layouts configured for a module.
      operationId: getLayouts
      parameters:
      - $ref: '#/components/parameters/module'
      - $ref: '#/components/parameters/departmentId'
      - name: id
        in: query
        description: ID of the layout
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          description: ID of the layout
          pattern: ([0-9]+)
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
        '200':
          $ref: '#/components/responses/getLayouts'
      security:
      - iam-oauth2-schema:
        - Desk.basic.READ
      x-audience:
      - external-public
    post:
      tags:
      - Layout
      summary: Create Layout
      description: This API creates the layout
      operationId: createLayout
      parameters:
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/layoutRequestJSON'
      responses:
        '200':
          $ref: '#/components/responses/createLayoutResponse'
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.CREATE
      x-audience:
      - external-public
  /api/v1/layouts/standardLayoutFormat:
    get:
      tags:
      - Layout
      summary: Get Standard Layout Format
      description: This Api provides the standrd layout format for the given module with organisations fields that can be used for create layout
      operationId: getStandardLayoutFormat
      parameters:
      - name: module
        in: query
        required: true
        schema:
          type:
          - string
          - 'null'
          enum:
          - tickets
          - contacts
          - accounts
          - products
          - calls
          - tasks
          - events
          - timeEntry
          maxLength: 100
          minLength: 0
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '200':
          $ref: '#/components/responses/getStandardLayoutFormatResponse'
      security:
      - iam-oauth2-schema:
        - Desk.basic.READ
      x-audience:
      - external-public
  /api/v1/layouts/{layoutId}/clone:
    post:
      tags:
      - Layout
      summary: Clone Layout
      description: This API creates new Layout by cloning existing layout.
      operationId: cloneLayout
      parameters:
      - $ref: '#/components/parameters/layoutId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/cloneLayoutJson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/invalidDataErrorResponse
        '500':
          $ref: ./Common.json#/components/responses/internalErrorResponse
        '200':
          $ref: '#/components/responses/cloneLayoutResponse'
      security:
      - iam-oauth2-schema:
        - Desk.settings.CREATE
      x-audience:
      - external-public
  /api/v1/layouts/{layoutId}/fields/{fieldId}/value:
    get:
      tags:
      - Layout
      summary: Export PickList Values
      description: 'This api behaves as below <br> (i)When Query param _fileType_=_CSV_ is passed  the picklist values gets downloaded in csv file with _*fieldlabel*_ as its name <br> (ii) When header param is not passed _empty 200_ response '
      operationId: exportPickListValues
      parameters:
      - name: fileType
        in: query
        description: Export Format in which format should be shown.This value can be @CSV@
        required: false
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          description: Export Format in which format should be shown.This value can be @CSV@
          enum:
          - CSV
          maxLength: 100
          minLength: 0
      - $ref: '#/components/parameters/layoutId'
      - $ref: '#/components/parameters/fieldId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '400':
          $ref: ./Common.json#/components/responses/badRequestErrorResponse
        '200':
          $ref: ./Common.json#/components/responses/fileResponse
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.READ
      x-audience:
      - external-public
  /api/v1/layouts/{layoutId}/deactivate:
    post:
      tags:
      - Layout
      summary: Deactivate Layout
      description: This Api deactivates existing layout
      operationId: deactivateLayout
      parameters:
      - $ref: '#/components/parameters/layoutId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/deactivateLayoutRequestJson'
      responses:
        '200':
          $ref: '#/components/responses/layoutJson'
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
      x-audience:
      - external-public
  /api/v1/layouts/{layoutId}:
    get:
      tags:
      - Layout
      summary: Get Layout
      description: This API fetches a layout configured for a module
      operationId: getLayout
      parameters:
      - $ref: '#/components/parameters/layoutId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '200':
          $ref: '#/components/responses/getLayoutResponse'
      security:
      - iam-oauth2-schema:
        - Desk.basic.READ
      x-audience:
      - external-public
    delete:
      tags:
      - Layout
      summary: Delete Layout
      description: ' This API deletes a layout'
      operationId: deleteLayout
      parameters:
      - $ref: '#/components/parameters/layoutId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.DELETE
      x-audience:
      - external-public
    patch:
      tags:
      - Layout
      summary: Update Layout
      description: This API updates details of an existing layout.
      operationId: updateLayout
      parameters:
      - $ref: '#/components/parameters/layoutId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/updateLayout_layoutRequestJSON'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '500':
          $ref: ./Common.json#/components/responses/internalErrorResponse
        '200':
          $ref: '#/components/responses/updateLayoutResponse'
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
      x-audience:
      - external-public
  /api/v1/layouts/{layoutId}/activate:
    post:
      tags:
      - Layout
      summary: Activate Layout
      description: This api activates the deactivated Layout.
      operationId: activateLayout
      parameters:
      - $ref: '#/components/parameters/layoutId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/layoutJson'
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
      x-audience:
      - external-public
  /api/v1/layouts/{layoutId}/fields/{fieldId}/cloneFieldsInLayout:
    post:
      tags:
      - Layout
      summary: Clone Fields to other Layouts
      description: This API is to clone a field to other layouts.
      operationId: cloneFieldsToOtherLayouts
      parameters:
      - $ref: '#/components/parameters/layoutId'
      - $ref: '#/components/parameters/fieldId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/layoutIdsJson'
      responses:
        '200':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.CREATE
      x-audience:
      - external-public
  /api/v1/layouts/{layoutId}/profiles:
    get:
      tags:
      - Layout
      summary: Get Layout Profiles
      description: This api returns the profiles associated with a layout
      operationId: getLayoutProfiles
      parameters:
      - $ref: '#/components/parameters/layoutId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: '#/components/responses/layoutProfilesData'
      security:
      - iam-oauth2-schema:
        - Desk.settings.READ
      x-audience:
      - external-public
    patch:
      tags:
      - Layout
      summary: Associate Profiles To Layout
      description: This api Associates the given profiles to the layout
      operationId: associateProfilesToLayout
      parameters:
      - $ref: '#/components/parameters/layoutId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/layoutProfileIdsJsonObject'
      responses:
        '204':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
      x-audience:
      - external-public
  /api/v1/myForm:
    get:
      tags:
      - Layout
      summary: Get My Form
      description: This API fetches details of a layout, based on the profile of the current user.
      operationId: getMyForm
      parameters:
      - name: layoutId
        in: query
        description: ID of the layout
        required: true
        style: form
        explode: true
        schema:
          type:
          - string
          - 'null'
          - integer
          format: int64
          description: ID of the layout
          pattern: ([0-9]+)
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '200':
          $ref: '#/components/responses/getMyFormResponse'
      security:
      - iam-oauth2-schema:
        - Desk.basic.READ
      x-audience:
      - external-public
  /api/v1/layouts/{layoutId}/replaceValues:
    post:
      tags:
      - Layout
      summary: Replace PickList Value
      description: 'This API replaces the old value with the new value for the PickList field type in all existing records only.<p><b>Note</b>: When a value that does not exist in the PickList values is provided as new value, then this API will create the new value without deleting the old one.</p>'
      operationId: replacePickListValue
      parameters:
      - $ref: '#/components/parameters/layoutId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/replaceValueRequestJson'
      responses:
        '422':
          $ref: ./Common.json#/components/responses/multipleUnprocessEntityResponse
        '200':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
      x-audience:
      - external-public
  /api/v1/layouts/{layoutId}/fields/{fieldId}:
    patch:
      tags:
      - Layout
      summary: Update Layout Field
      description: This API updates details of a field in the layout.
      operationId: updateLayoutField
      parameters:
      - name: isMandatory
        in: query
        required: true
        style: form
        explode: true
        schema:
          type:
          - boolean
          - 'null'
      - $ref: '#/components/parameters/layoutId'
      - $ref: '#/components/parameters/fieldId'
      - $ref: ./Common.json#/components/parameters/orgId
      requestBody:
        $ref: '#/components/requestBodies/updateLayoutFieldRequestJson'
      responses:
        '200':
          $ref: '#/components/responses/commonFieldResponse'
      security:
      - iam-oauth2-schema:
        - Desk.settings.UPDATE
      x-audience:
      - external-public
  /api/v1/layouts/{layoutId}/fields/{fieldId}/unassociate:
    post:
      tags:
      - Layout
      summary: Remove Field From Layout
      description: This API is to remove fields from a layout.
      operationId: removeFieldFromLayout
      parameters:
      - $ref: '#/components/parameters/layoutId'
      - $ref: '#/components/parameters/fieldId'
      - $ref: ./Common.json#/components/parameters/orgId
      responses:
        '200':
          $ref: ./Common.json#/components/responses/emptyResponse
      security:
      - iam-oauth2-schema:
        - Desk.settings.CREATE
      x-audience:
      - external-public
components:
  parameters:
    departmentId:
      name: departmentId
      in: query
      description: ID of the department in which the layouts are configured
      required: false
      style: form
      explode: true
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int64
        description: ID of the department in which the layouts are configured
        pattern: ([0-9]+)
    module:
      name: module
      in: query
      description: ' Name of the module whose layouts must be fetched. The allowed values are !@tickets, contacts, accounts, calls, events, tasks, timeEntry, products, and contracts@!'
      required: true
      style: form
      explode: true
      schema:
        type:
        - string
        - 'null'
        description: ' Name of the module whose layouts must be fetched. The allowed values are !@tickets, contacts, accounts, calls, events, tasks, timeEntry, products, and contracts@!'
        enum:
        - tickets
        - contacts
        - contracts
        - accounts
        - products
        - calls
        - tasks
        - events
        - timeEntry
        maxLength: 100
        minLength: 0
    layoutId:
      name: layoutId
      in: path
      required: true
      style: simple
      explode: false
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int64
        pattern: ([0-9]+)
    fieldId:
      name: fieldId
      in: path
      required: true
      style: simple
      explode: false
      schema:
        type:
        - string
        - 'null'
        - integer
        format: int64
        pattern: ([0-9]+)
  requestBodies:
    layoutRequestJSON:
      content:
        application/json:
          schema:
            type:
            - 'null'
            - object
            additionalProperties: false
            properties:
              skipDeptAccessValidation:
                type:
                - boolean
                - 'null'
                description: Key that returns if the layout is common to all profiles of the organisation and not specific to the department
              departmentId:
                type:
                - string
                - 'null'
                - integer
                format: int64
                description: ID of department in which the layout is configured
                pattern: ([0-9]+)
              layoutDisplayName:
                type:
                - string
                - 'null'
                description: Display Name of the layout in HelpCenter
                maxLength: 100
                minLength: 0
                pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
              module:
                type:
                - string
                - 'null'
                description: mdoule name
                enum:
                - tickets
                - contacts
                - accounts
                - tasks
                - calls
                - events
                - timeEntry
                - contracts
                - products
                maxLength: 100
                minLength: 0
              isDefaultLayout:
                type:
                - boolean
                - 'null'
                description: Key that returns if the layout is the default layout in the module
              sections:
                $ref: ./Layout.json#/components/schemas/sectionRequestArr
              layoutName:
                type:
                - string
                - 'null'
                description: Name of the layout
                maxLength: 100
                minLength: 0
                pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
            required:
            - departmentId
            - isDefaultLayout
            - layoutDisplayName
            - layoutName
            - module
            - sections
            - skipDeptAccessValidation
          examples:
            Valid requestBody Definitions:
              value:
                skipDeptAccessValidation: false
                module: accounts
                departmentId: '4000000012710'
                layoutDisplayName: Clonned Account Layout
                layoutDesc: DESC
                sections:
                - name: Account Information
                  i18NLabel: Account Information
                  isCustomSection: false
                  id: 1
                  fields:
                  - id: '4000000000404'
                    isMandatory: true
                  - id: '4000000000408'
                    isMandatory: false
                  - id: '4000000000406'
                    isMandatory: false
                  - id: '4000000000410'
                    isMandatory: false
                  - id: '4000000000438'
                    isMandatory: false
                  - id: '4000000000412'
                    isMandatory: false
                layoutName: 'accounts layout '
    replaceValueRequestJson:
      content:
        application/json:
          schema:
            type:
            - 'null'
            - object
            additionalProperties: false
            properties:
              newValue:
                type:
                - string
                - 'null'
                maxLength: 120
                minLength: 0
                pattern: '[0-9a-zA-Z_\-\.\$@\?\:\/\!\P{InBasicLatin}\s()]+'
              oldValue:
                type:
                - string
                - 'null'
                maxLength: 120
                minLength: 0
                pattern: '[0-9a-zA-Z_\-\.\$@\?\:\/\!\P{InBasicLatin}\s()]+'
              fieldId:
                type:
                - string
                - 'null'
                - integer
                format: int64
                pattern: ([0-9]+)
            required:
            - fieldId
            - newValue
            - oldValue
          examples:
            Valid requestBody Definitions:
              value:
                newValue: Sub Defects1235
                oldValue: Sub Defects
                fieldId: '4000000000423'
    layoutIdsJson:
      content:
        application/json:
          schema:
            type:
            - 'null'
            - object
            additionalProperties: false
            properties:
              layoutIds:
                $ref: ./Layout.json#/components/schemas/layoutIdsArray
            required:
            - layoutIds
          examples:
            Valid requestBody Definitions:
              value:
                layoutIds:
                - '4000000007187'
                - '4000000007197'
    updateLayout_layoutRequestJSON:
      content:
        application/json:
          schema:
            type:
            - 'null'
            - object
            additionalProperties: false
            properties:
              skipDeptAccessValidation:
                type:
                - boolean
                - 'null'
                description: Key that returns if the layout is common to all profiles of the organisation and not specific to the department
              departmentId:
                type:
                - string
                - 'null'
                - integer
                format: int64
                description: ID of department in which the layout is configured
                pattern: ([0-9]+)
              layoutDisplayName:
                type:
                - string
                - 'null'
                description: Display Name of the layout in HelpCenter
                maxLength: 100
                minLength: 0
                pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
              module:
                type:
                - string
                - 'null'
                description: mdoule name
                enum:
                - tickets
                - contacts
                - accounts
                - tasks
                - calls
                - events
                - timeEntry
                - contracts
                - products
                maxLength: 100
                minLength: 0
              isDefaultLayout:
                type:
                - boolean
                - 'null'
                description: Key that returns if the layout is the default layout in the module
              sections:
                $ref: ./Layout.json#/components/schemas/sectionRequestArr
              layoutName:
                type:
                - string
                - 'null'
                description: Name of the layout
                maxLength: 100
                minLength: 0
                pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
            required:
            - departmentId
            - isDefaultLayout
            - layoutName
            - module
            - sections
            - skipDeptAccessValidation
          examples:
            Valid requestBody Definitions:
              value:
                skipDeptAccessValidation: false
                layoutDisplayName: ClonedLayout
                layoutDesc: Layout cloned from default layout
                sections:
                - name: Ticket Information
                  i18NLabel: Ticket Information
                  id: 1
                  fields:
                  - id: '4000000000353'
                    isMandatory: true
                  - id: '4000000000357'
                    isMandatory: true
                  - id: '4000000000355'
                    isMandatory: false
                  - id: '4000000000359'
                    isMandatory: false
                  - id: '4000000000361'
                    isMandatory: false
                  - allowedValues:
                    - 'Education :: University :: Private'
                    - 'Education :: University :: Public'
                    - 'Education :: School :: Private'
                    - 'Education :: School :: Public'
                    defaultValue: 'Education :: University :: Private'
                    isNested: true
                    sortBy: userDefined
                    id: '4000000009999'
                    isMandatory: false
                  - allowedValues:
                    - Sub General
                    - Sub Defects
                    defaultValue: Sub General
                    isNested: false
                    sortBy: userDefined
                    id: '4000000000423'
                    isMandatory: false
                  - allowedValues:
                    - General
                    - Defects
                    defaultValue: General
                    isNested: false
                    id: '4000000000421'
                    isMandatory: false
                  - id: '4000000000363'
                    isMandatory: true
                  - id: '4000000000365'
                    isMandatory: false
                  - allowedValues:
                    - Open
                    - Open_july
                    - On Hold
                    - Escalated
                    - Closed1
                    - Closed
                    - newDeptClosed
                    restoreOnReplyValues:
                    - Open_july
                    - newDeptClosed
                    - Escalated
                    - On Hold
                    - Closed
                    - Closed1
                    - Open
                    defaultValue: Open
                    isNested: false
                    sortBy: userDefined
                    id: '4000000000367'
                    isMandatory: true
                  - id: '4000000000371'
                    isMandatory: false
                  - id: '4000000000369'
                    isMandatory: false
                - name: Additional Information
                  i18NLabel: Additional Information
                  id: 2
                  fields:
                  - id: '4000000000405'
                    isMandatory: false
                  - allowedValues:
                    - -None-
                    - High
                    - Medium
                    - Low
                    defaultValue: -None-
                    isNested: false
                    id: '4000000000407'
                    isMandatory: false
                  - allowedValues:
                    - Phone
                    - Email
                    - Web
                    - Twitter
                    - Facebook
                    - Chat
                    - Forums
                    - Feedback Widget
                    defaultValue: Phone
                    isNested: false
                    sortBy: userDefined
                    id: '4000000000409'
                    isMandatory: false
                  - id: '4000000000411'
                    isMandatory: false
                  - id: '4000000000413'
                    isMandatory: false
                  - allowedValues:
                    - -None-
                    - Question
                    - Problem
                    - Feature
                    - Others
                    defaultValue: -None-
                    isNested: false
                    sortBy: userDefined
                    id: '4000000000415'
                    isMandatory: false
                  - id: '4000000000417'
                    isMandatory: false
                  - id: '4000000000447'
                    isMandatory: false
                layoutName: ClonedLayout
    layoutProfileIdsJsonObject:
      content:
        application/json:
          schema:
            type:
            - 'null'
            - object
            additionalProperties: false
            properties:
              layoutProfileIds:
                $ref: ./Layout.json#/components/schemas/layoutProfileIdsJson
            required:
            - layoutProfileIds
          examples:
            Valid requestBody Definitions:
              value:
                layoutProfileIds:
                - 4000000015183
                - 4000000015186
                - 4000000015189
    updateLayoutFieldRequestJson:
      content:
        application/json:
          schema:
            type:
            - 'null'
            - object
            additionalProperties: false
            properties:
              allowedValues:
                type:
                - 'null'
                - array
                items:
                  type:
                  - string
                  - 'null'
                  maxLength: 120
                  minLength: 0
                  pattern: '[0-9a-zA-Z_\-\.\$@\?\:\/\!\P{InBasicLatin}\s()]+'
                uniqueItems: false
              defaultValue:
                type:
                - string
                - 'null'
                maxLength: 120
                minLength: 0
                pattern: '[0-9a-zA-Z_\-\.\$@\?\:\/\!\P{InBasicLatin}\s()]+'
              sortBy:
                type:
                - string
                - 'null'
                enum:
                - alphabetical
                - userDefined
                maxLength: 100
                minLength: 0
              isMandatory:
                type:
                - boolean
                - 'null'
            required:
            - allowedValues
            - defaultValue
            - isMandatory
            - sortBy
          examples:
            Valid requestBody Definitions:
              value:
                allowedValues:
                - 'Education :: University :: Private'
                - 'Education :: University :: Public'
                - 'Education :: School :: Private'
                - 'Education :: School :: Public'
                defaultValue: 'Education :: University :: Private'
                isNested: true
                sortBy: userDefined
                isMandatory: true
    cloneLayoutJson:
      content:
        application/json:
          schema:
            type:
            - 'null'
            - object
            additionalProperties: false
            properties:
              skipDeptAccessValidation:
                type:
                - boolean
                - 'null'
              layoutDisplayName:
                type:
                - string
                - 'null'
                maxLength: 100
                minLength: 0
                pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
              departmentId:
                type:
                - string
                - 'null'
                - integer
                format: int64
                pattern: ([0-9]+)
              isDefaultLayout:
                type:
                - string
                - 'null'
                enum:
                - 'false'
                maxLength: 100
                minLength: 0
              layoutDesc:
                type:
                - string
                - 'null'
                maxLength: 100
                minLength: 0
                pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
              layoutName:
                type:
                - string
                - 'null'
                maxLength: 100
                minLength: 0
                pattern: ([0-9a-zA-Z_\-\.\$@\?\,\:\'\/\!\P{InBasicLatin}\s])+
            required:
            - layoutName
          examples:
            Valid requestBody Definitions:
              value:
                skipDeptAccessValidation: false
                layoutDisplayName: Clonned Account Layout
                isDefaultLayout: false
                layoutDesc: Layout of the accounts
                layoutName: cloneAccLayout1
    deactivateLayoutRequestJson:
      content:
        application/json:
          schema:
            type:
            - 'null'
            - object
            additionalProperties: false
            properties:
              transferToLayoutId:
                type:
                - string
                - 'null'
                - integer
                format: int64
                pattern: ([0-9]+)
          examples:
            Valid requestBody Definitions:
              value:
                transferToLayoutId: '4000000038039'
  responses:
    getLayoutResponse:
      description: getLayoutResponse template definitions
      content:
        application/json:
          schema:
            anyOf:
            - additionalProperties: false
              allOf:
              - $ref: ./Layout.json#/components/schemas/basicLayoutJson
              - type:
                - 'null'
                - object
                properties:
                  module:
                    type:
                    - string
                    - 'null'
                    enum:
                    - Cases
                    - Contacts
                    - Accounts
                    - Tasks
                    - Calls
                    - Events
                    - TimeEntry
                    - Contracts
                    - Products
                    maxLength: 100
                    minLength: 0
                  sections:
                    $ref: ./Layout.json#/components/schemas/sectionListForLayout
                required:
                - module
                - sections
            - additionalProperties: false
              allOf

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