openapi: 3.0.0
info:
  title: Message Cards
  description: |
    Message Cards are structured, interactive message formats in Zoho Cliq that go beyond plain text to deliver rich, engaging content inside conversations. They are used to present polls, inline data displays, and interactive prompts directly within a chat or channel - enabling bots and integrations to collect input, display structured information, and drive actions from users without leaving the conversation. <br><br> Message Cards are sent as part of the standard <b>Post Message</b> payload by setting the <code>card</code> object inside the message body. The <code>theme</code> field inside <code>card</code> determines which card type is rendered. <br><br> For more information, refer to the <b><a href="https://www.zoho.com/cliq/help/restapi/v2/#Message_Cards" target="_blank">Message Cards Documentation</a></b>. <br><br> <b>Available Themes</b><br><br> <table style="border-collapse: collapse; width: 100%;">
      <tr>
        <th style="padding: 8px; text-align: left; border: 1px solid #ddd;">Theme</th>
        <th style="padding: 8px; text-align: left; border: 1px solid #ddd;">Description</th>
        <th style="padding: 8px; text-align: left; border: 1px solid #ddd;">Required fields</th>
        <th style="padding: 8px; text-align: left; border: 1px solid #ddd;">Optional fields</th>
      </tr>
      <tr>
        <td style="padding: 8px; border: 1px solid #ddd;"><code>poll</code></td>
        <td style="padding: 8px; border: 1px solid #ddd;">Renders a poll card that lets users vote on one or more options. Tracks and displays live vote counts and percentages.</td>
        <td style="padding: 8px; border: 1px solid #ddd;"><code>theme</code>, <code>title</code>, <code>options</code></td>
        <td style="padding: 8px; border: 1px solid #ddd;">-</td>
      </tr>
      <tr>
        <td style="padding: 8px; border: 1px solid #ddd;"><code>modern-inline</code></td>
        <td style="padding: 8px; border: 1px solid #ddd;">Renders a rich inline card with a header, sections of labeled fields, and optional action buttons. Pair with <code>slides</code> for supporting data.</td>
        <td style="padding: 8px; border: 1px solid #ddd;"><code>theme</code>, <code>title</code></td>
        <td style="padding: 8px; border: 1px solid #ddd;"><code>thumbnail</code>, <code>sections</code>, <code>buttons</code></td>
      </tr>
      <tr>
        <td style="padding: 8px; border: 1px solid #ddd;"><code>prompt</code></td>
        <td style="padding: 8px; border: 1px solid #ddd;">Renders a focused prompt card with a question and a set of quick-reply or action buttons for the user to respond to.</td>
        <td style="padding: 8px; border: 1px solid #ddd;"><code>theme</code>, <code>title</code>, <code>buttons</code></td>
        <td style="padding: 8px; border: 1px solid #ddd;">-</td>
      </tr>
    </table> <br> <b>How Message Cards work</b> <ul>
      <li>Cards are embedded in the message payload using the <code>card</code> object.</li>
      <li>The <code>theme</code> field selects the rendering template.</li>
      <li>Interactive elements (buttons, poll choices) trigger <b>bot handlers</b> or <b>function calls</b> when actioned by a user.</li>
      <li>Cards can be sent to channels, chats, or individual users using the standard Post Message endpoints.</li>
    </ul>
  contact: {}
  version: 1.0.0
externalDocs:
  description: Find out more about Zoho Cliq APIs V2
  url: https://www.zoho.com/cliq/help/restapi/v2/
servers:
  - url: https://cliq.zoho.com/api/v2
    description: Zoho Cliq US Data Centre
  - url: https://{domain}/api/v2
    description: Zoho Cliq API server (domain varies by data centre)
    variables:
      domain:
        default: cliq.zoho.com
        description: 'The Cliq domain for your data centre. Typical values: cliq.zoho.com (US), cliq.zoho.eu (EU), cliq.zoho.in (IN), cliq.zoho.com.au (AU), cliq.zoho.jp (JP).'
tags:
  - name: messagecards
    description: |
      APIs for sending structured interactive message cards - Poll, Modern Inline, and Prompt - inside Zoho Cliq conversations.
paths:
  /channels/{channelName}/message:
    post:
      summary: Post a Message Card to a Channel
      operationId: post_message_card_to_channel
      description: |
        Send a structured Message Card to a specific channel. Depending on the type
        of card you want to send, the <code>card</code> object in the request body
        will differ (i.e., <code>poll</code>, <code>modern-inline</code>, or <code>prompt</code>).
        <br><br>
        <p>
          <b>Threshold limit</b>: 20 requests per min per user<br>
          Number of API calls allowed within a minute.<br><br>
          <b>Lock period</b>: 10 minutes<br>
          Wait time before consecutive API requests.<br>
        </p>
      parameters:
        - name: channelName
          in: path
          required: true
          description: The unique name of the channel to post the message card into To learn how to retrieve this ID, see <a href="/cliq/help/restapi/v2/glossary/#channelName">channelName</a> in the Glossary page.
          schema:
            type: string
            example: announcements
      requestBody:
        required: true
        content:
          application/json:
            examples:
              poll_card:
                summary: Poll Card - Sprint priority vote
                value:
                  text: Sprint 42 - Please vote on which feature we prioritize this cycle.
                  card:
                    theme: poll
                    title: Which feature should we prioritize in Sprint 42?
                    options:
                      - text: OAuth 2.0 support for third-party integrations
                      - text: Bulk export for audit logs
                      - text: Dark mode for the web app
                      - text: Push notifications for mobile
              modern_inline_card:
                summary: Modern Inline Card - Support ticket escalation
                value:
                  text: A critical support ticket has been escalated and requires immediate attention.
                  card:
                    theme: modern-inline
                    title: Ticket Escalated - Payment Gateway Timeout
                  slides:
                    - type: table
                      title: Ticket Details
                      data:
                        headers:
                          - Field
                          - Value
                        rows:
                          - Field: Ticket ID
                            Value: '#TKT-00892'
                          - Field: Priority
                            Value: Critical
                          - Field: Reported By
                            Value: olivia.palmer@zylker.com
                          - Field: Affected Module
                            Value: Payment Gateway
                          - Field: Open Since
                            Value: 2026-04-16 09:14 AM
                  buttons:
                    - label: Assign to Me
                      action:
                        type: invoke.function
                        data:
                          name: assign_ticket
                    - label: View Ticket
                      action:
                        type: open.url
                        data:
                          web: https://desk.zoho.com/tickets/TKT-00892
              prompt_card:
                summary: Prompt Card - Deployment approval request
                value:
                  text: Deployment approval required for release v3.6.1 to production.
                  card:
                    theme: prompt
                    title: Approve deployment of v3.6.1 to production? This release includes 4 bug fixes and 1 migration script.
                  buttons:
                    - label: Approve
                      action:
                        type: invoke.function
                        data:
                          name: approve_deployment
                    - label: Reject
                      action:
                        type: invoke.function
                        data:
                          name: reject_deployment
                    - label: View Diff
                      action:
                        type: open.url
                        data:
                          web: https://git.zylker.com/releases/v3.6.1/diff
            schema:
              type: object
              required:
                - card
              properties:
                text:
                  type: string
                  description: |
                    Fallback plain-text label displayed above the card or in notification
                    previews where cards are not rendered.
                    <br>Used in: <b>Poll</b>, <b>Modern Inline</b>, and <b>Prompt</b> cards.
                card:
                  $ref: '#/components/schemas/CardObject'
                slides:
                  $ref: '#/components/schemas/Slides'
      responses:
        '200':
          description: Message card posted successfully.
          content:
            application/json:
              examples:
                poll_card:
                  summary: Poll Card response
                  value:
                    url: /api/v2/channels/engineering/message
                    type: message
                    data:
                      id: '1701234567890_1234567890'
                      card:
                        theme: poll
                        title: Which feature should we prioritize in Sprint 42?
                        options:
                          - text: OAuth 2.0 support for third-party integrations
                            votes: 0
                          - text: Bulk export for audit logs
                            votes: 0
                          - text: Dark mode for the web app
                            votes: 0
                          - text: Push notifications for mobile
                            votes: 0
                modern_inline_card:
                  summary: Modern Inline Card response
                  value:
                    url: /api/v2/channels/support/message
                    type: message
                    data:
                      id: '1701234567891_1234567891'
                      card:
                        theme: modern-inline
                        title: Ticket Escalated - Payment Gateway Timeout
                      slides:
                        - type: table
                          title: Ticket Details
                          data:
                            headers:
                              - Field
                              - Value
                            rows:
                              - Field: Ticket ID
                                Value: '#TKT-00892'
                              - Field: Priority
                                Value: Critical
                prompt_card:
                  summary: Prompt Card response
                  value:
                    url: /api/v2/channels/devops/message
                    type: message
                    data:
                      id: '1701234567892_1234567892'
                      card:
                        theme: prompt
                        title: Approve deployment of v3.6.1 to production?
              schema:
                $ref: '#/components/schemas/MessageResponse'
        '400':
          description: Bad Request.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The request cannot be performed. Usually because of malformed parameter or missing parameter.
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Request was rejected because of invalid AuthToken.
        '403':
          description: Forbidden.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The user does not have enough permission or possibly not a user of the respective organization to access the resource.
        '404':
          description: Invalid URL.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL.
        '405':
          description: Method Not Allowed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The requested resource does not support the HTTP method used.
        '429':
          description: Too many requests.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Too many requests within a certain time frame.
        '500':
          description: Internal Server Error.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Cliq server encountered an error which prevents it from fulfilling the request.
      security:
        - Cliq_Auth:
            - ZohoCliq.Channels.CREATE
      tags:
        - messagecards
  /buddies/{userEmailOrId}/message:
    post:
      summary: Post a Message Card to a User
      operationId: post_message_card_to_user
      description: |
        Send a structured Message Card as a direct message to a specific user,
        identified by their email address or user ID. Depending on the type of card
        you want to send, the <code>card</code> object in the request body will differ
        (i.e., <code>poll</code>, <code>modern-inline</code>, or <code>prompt</code>).
        <br><br>
        <p>
          <b>Threshold limit</b>: 20 requests per min per user<br>
          Number of API calls allowed within a minute.<br><br>
          <b>Lock period</b>: 10 minutes<br>
          Wait time before consecutive API requests.<br>
        </p>
      parameters:
        - name: userEmailOrId
          in: path
          required: true
          description: The email address or unique user ID of the recipient To learn how to retrieve this ID, see <a href="/cliq/help/restapi/v2/glossary/#userEmailOrId">userEmailOrId</a> in the Glossary page.
          schema:
            type: string
            example: scott.fisher@zylker.com
      requestBody:
        required: true
        content:
          application/json:
            examples:
              poll_card:
                summary: Poll Card - 1-on-1 onboarding preference check
                value:
                  text: Hi Ryan, quick check before your onboarding session tomorrow.
                  card:
                    theme: poll
                    title: Which area would you like to focus on first during onboarding?
                    options:
                      - text: Product walkthrough
                      - text: Setting up integrations
                      - text: Team workflows and channels
                      - text: API and developer setup
              modern_inline_card:
                summary: Modern Inline Card - Personal task summary with table
                value:
                  text: Here's a summary of your open tasks due this week.
                  card:
                    theme: modern-inline
                    title: Your Open Tasks - Week of Apr 14
                  slides:
                    - type: table
                      title: Due This Week
                      data:
                        headers:
                          - Task
                          - Due Date
                          - Priority
                        rows:
                          - Task: Review Q1 expense report
                            Due Date: Apr 17
                            Priority: High
                          - Task: Complete security audit sign-off
                            Due Date: Apr 18
                            Priority: Medium
                          - Task: Submit travel reimbursement
                            Due Date: Apr 19
                            Priority: Low
                  buttons:
                    - label: View All Tasks
                      action:
                        type: open.url
                        data:
                          web: https://projects.zoho.com/mytasks
              prompt_card:
                summary: Prompt Card - Leave approval request to manager
                value:
                  text: You have a pending leave approval request from Scott Fisher.
                  card:
                    theme: prompt
                    title: Scott Fisher has requested leave from Apr 21–23 (3 days). Approve or reject?
                  buttons:
                    - label: Approve
                      action:
                        type: invoke.function
                        data:
                          name: approve_leave
                    - label: Reject
                      action:
                        type: invoke.function
                        data:
                          name: reject_leave
                    - label: View Request
                      action:
                        type: open.url
                        data:
                          web: https://people.zoho.com/leave/requests/8821
            schema:
              type: object
              required:
                - card
              properties:
                text:
                  type: string
                  description: |
                    Fallback plain-text label displayed above the card or in notification
                    previews where cards are not rendered.
                    <br>Used in: <b>Poll</b>, <b>Modern Inline</b>, and <b>Prompt</b> cards.
                card:
                  $ref: '#/components/schemas/CardObject'
                slides:
                  $ref: '#/components/schemas/Slides'
      responses:
        '200':
          description: Message card delivered successfully.
          content:
            application/json:
              examples:
                poll_card:
                  summary: Poll Card response
                  value:
                    url: /api/v2/buddies/ryan.west@zylker.com/message
                    type: message
                    data:
                      id: '1701234567890_1234567890'
                      card:
                        theme: poll
                        title: Which area would you like to focus on first during onboarding?
                        options:
                          - text: Product walkthrough
                            votes: 0
                          - text: Setting up integrations
                            votes: 0
                          - text: Team workflows and channels
                            votes: 0
                          - text: API and developer setup
                            votes: 0
                modern_inline_card:
                  summary: Modern Inline Card response
                  value:
                    url: /api/v2/buddies/scott.fisher@zylker.com/message
                    type: message
                    data:
                      id: '1701234567891_1234567891'
                      card:
                        theme: modern-inline
                        title: Your Open Tasks - Week of Apr 14
                      slides:
                        - type: table
                          title: Due This Week
                          data:
                            headers:
                              - Task
                              - Due Date
                              - Priority
                            rows:
                              - Task: Review Q1 expense report
                                Due Date: Apr 17
                                Priority: High
                prompt_card:
                  summary: Prompt Card response
                  value:
                    url: /api/v2/buddies/olivia.palmer@zylker.com/message
                    type: message
                    data:
                      id: '1701234567892_1234567892'
                      card:
                        theme: prompt
                        title: Scott Fisher has requested leave from Apr 21–23 (3 days). Approve or reject?
              schema:
                $ref: '#/components/schemas/MessageResponse'
        '400':
          description: Bad Request.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The request cannot be performed. Usually because of malformed parameter or missing parameter.
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Request was rejected because of invalid AuthToken.
        '403':
          description: Forbidden.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The user does not have enough permission or possibly not a user of the respective organization to access the resource.
        '404':
          description: Invalid URL.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL.
        '405':
          description: Method Not Allowed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The requested resource does not support the HTTP method used.
        '429':
          description: Too many requests.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Too many requests within a certain time frame.
        '500':
          description: Internal Server Error.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Cliq server encountered an error which prevents it from fulfilling the request.
      security:
        - Cliq_Auth:
            - ZohoCliq.Messages.CREATE
      tags:
        - messagecards
components:
  schemas:
    CardObject:
      type: object
      description: |
        Defines the interactive card to be rendered inside the message. The <code>theme</code> field
        selects the card type and determines which fields are required. For a quick reference of
        required and optional fields per theme, see the <b>Available Themes</b> table in the overview above.
        <br><br>
        <b>Poll card fields</b>
        <ul>
          <li><b>theme</b> <code>string</code> - Must be <code>poll</code>.</li>
          <li><b>title</b> <code>string</code> - The poll question displayed at the top of the card. Maximum 200 characters.</li>
          <li><b>options</b> <code>array</code> - List of voting choices. Minimum 2, maximum 10 items.
            <ul>
              <li><b>options[].text</b> <code>string</code> - Display label for the poll option. Maximum 100 characters.</li>
            </ul>
          </li>
        </ul>
        <b>Modern Inline card fields</b>
        <ul>
          <li><b>theme</b> <code>string</code> - Must be <code>modern-inline</code>.</li>
          <li><b>title</b> <code>string</code> - Card header text displayed at the top of the card. Maximum 200 characters.</li>
          <li><b>thumbnail</b> <code>string</code> - Optional. Publicly accessible HTTPS URL of a thumbnail image shown in the card header.</li>
          <li><b>sections</b> <code>array</code> - Optional. One or more labeled field sections displayed in the card body. Each section groups related key-value pairs under an optional heading.
            <ul>
              <li><b>sections[].title</b> <code>string</code> - Optional section heading displayed above the fields.</li>
              <li><b>sections[].fields</b> <code>array</code> - List of key-value field pairs.
                <ul>
                  <li><b>fields[].title</b> <code>string</code> - Field label (key).</li>
                  <li><b>fields[].value</b> <code>string</code> - Field value.</li>
                </ul>
              </li>
            </ul>
          </li>
          <li><b>buttons</b> <code>array</code> - Optional. Action buttons rendered at the bottom of the card. Maximum 5. See <b>Button fields</b> below.</li>
        </ul>
        <b>Prompt card fields</b>
        <ul>
          <li><b>theme</b> <code>string</code> - Must be <code>prompt</code>.</li>
          <li><b>title</b> <code>string</code> - The prompt question or alert text presented to the user. Maximum 200 characters.</li>
          <li><b>buttons</b> <code>array</code> - Action buttons for the user to respond with. Minimum 1, maximum 5. See <b>Button fields</b> below.</li>
        </ul>
        <b>Button fields</b> (applicable to <code>modern-inline</code> and <code>prompt</code> themes)
        <ul>
          <li><b>buttons[].label</b> <code>string</code> - Text displayed on the button. Maximum 30 characters.</li>
          <li><b>buttons[].action.type</b> <code>string</code> - Determines how Cliq handles the button click. Allowed values:
            <ul>
              <li><code>open.url</code> - Opens a URL in the user's default browser. Requires <code>action.data.web</code> (string).</li>
              <li><code>invoke.function</code> - Triggers a Cliq Function by name. Requires <code>action.data.name</code> (string).</li>
              <li><code>system.api</code> - Calls a Cliq internal system API. Requires <code>action.data.api</code> (string).</li>
              <li><code>invoke.bot</code> - Sends a message to a bot. Requires <code>action.data.bot_name</code> and <code>action.data.message</code>.</li>
              <li><code>preview.url</code> - Opens a URL inside a Cliq preview panel without leaving the conversation. Requires <code>action.data.web</code> (string).</li>
            </ul>
          </li>
          <li><b>buttons[].action.data</b> <code>object</code> - The payload passed to the action handler. Expected fields depend on <code>action.type</code> as listed above.</li>
        </ul>
        <b>Note:</b> To render supporting structured content (such as tables, lists, or labelled records) alongside a card,
        use the top-level <code>slides</code> array in the message payload. <code>slides</code> is independent of the <code>card</code> object
        and can be combined with any card theme. For details on supported slide formats, see
        <a href="https://www.zoho.com/cliq/help/restapi/v2/#Message_Content" target="_blank">Message Content</a>.
      required:
        - theme
        - title
      properties:
        theme:
          type: string
          description: |
            Card theme identifier. Determines the card type to render.
            <br><b>Allowed values</b>: <code>poll</code> | <code>modern-inline</code> | <code>prompt</code>
          enum:
            - poll
            - modern-inline
            - prompt
          example: poll
        title:
          type: string
          description: |
            The card header or question text displayed at the top of the card.
            <br><b>Maximum length:</b> 200 characters.
          maxLength: 200
          example: Where should we have the team lunch?
        options:
          type: array
          description: |
            <i>Applicable for <code>poll</code> theme only.</i><br>
            List of voting options. Each option is rendered as a selectable row
            with a live vote count and percentage bar.
            <br><b>Minimum:</b> 2 options. <b>Maximum:</b> 10 options.
          minItems: 2
          maxItems: 10
          items:
            type: object
            required:
              - text
            properties:
              text:
                type: string
                description: Display label for the poll option.
                maxLength: 100
                example: Italian
        thumbnail:
          type: string
          description: |
            <i>Applicable for <code>modern-inline</code> theme only.</i><br>
            URL of an image to display as a thumbnail in the card header.
            Must be a publicly accessible HTTPS URL.
          example: https://www.zoho.com/cliq/help/restapi/images/poll_icon.png
        sections:
          type: array
          description: |
            <i>Applicable for <code>modern-inline</code> theme only.</i><br>
            List of field sections. Each section groups related labeled key-value
            fields under an optional section title.
          items:
            type: object
            properties:
              title:
                type: string
                description: Optional section heading displayed above the fields.
                example: Summary
              fields:
                type: array
                description: List of key-value field pairs displayed in this section.
                items:
                  type: object
                  required:
                    - title
                    - value
                  properties:
                    title:
                      type: string
                      description: Field label (key).
                      example: Account
                    value:
                      type: string
                      description: Field value.
                      example: Zylker Corp
        buttons:
          type: array
          description: |
            <i>Applicable for <code>modern-inline</code> and <code>prompt</code> themes.</i><br>
            List of action buttons rendered inside the card. Each button executes
            an action when clicked by the user.
            <br><b>Maximum:</b> 5 buttons. Minimum 1 for <code>prompt</code>.
          maxItems: 5
          items:
            $ref: '#/components/schemas/CardButton'
    CardButton:
      type: object
      description: |
        An action button rendered inside a Message Card. When clicked by a user, the button executes the specified <code>action</code>.
      required:
        - label
        - action
      properties:
        label:
          type: string
          description: |
            Display text shown on the button. <br><b>Maximum length:</b> 30 characters.
          maxLength: 30
          example: Approve
        action:
          type: object
          description: |
            Defines the action executed when the button is clicked. The <code>type</code> field determines the action category and the expected structure of the <code>data</code> payload.
          required:
            - type
            - data
          properties:
            type:
              type: string
              description: |
                The action type. Determines how Cliq handles the button click. <br><b>Allowed values:</b> <ul>
                  <li><code>open.url</code>: Opens a URL in the user's browser.</li>
                  <li><code>invoke.function</code>: Calls a Cliq Function by name.</li>
                  <li><code>system.api</code>: Calls a Cliq internal system API.</li>
                  <li><code>invoke.bot</code>: Sends a message to a bot.</li>
                  <li><code>preview.url</code>: Opens a URL in a preview panel inside Cliq.</li>
                </ul>
              enum:
                - open.url
                - invoke.function
                - system.api
                - invoke.bot
                - preview.url
              example: invoke.function
            data:
              type: object
              description: |
                Payload passed to the action handler. The expected fields depend on the <code>type</code>: <ul>
                  <li><b>open.url</b>: Requires <code>web</code> (string - the URL to open).</li>
                  <li><b>invoke.function</b>: Requires <code>name</code> (string - Cliq Function name).</li>
                  <li><b>system.api</b>: Requires <code>api</code> (string - the internal API path).</li>
                  <li><b>invoke.bot</b>: Requires <code>bot_name</code> and <code>message</code>.</li>
                  <li><b>preview.url</b>: Requires <code>web</code> (string - the URL to preview).</li>
                </ul>
              additionalProperties: true
              example:
                name: ack_alert
    MessageResponse:
      type: object
      description: Response returned after a message card is successfully posted.
      properties:
        url:
          type: string
          description: Endpoint URL associated with the response.
          example: /api/v2/channels/announcements/message
        type:
          type: string
          description: Resource type of the response.
          example: message
        data:
          type: object
          description: Payload containing the posted message details.
          properties:
            id:
              type: string
              description: Unique identifier of the posted message.
              example: '1701234567890_1234567890'
            card:
              type: object
              description: The card object as stored by Cliq after posting.
              additionalProperties: true
          additionalProperties: true
    Slides:
      type: array
      description: |
        An array of structured content blocks rendered below the card inside the message.
        <code>slides</code> is a top-level field in the message payload - it sits alongside
        <code>text</code> and <code>card</code>, and is <b>not</b> nested inside <code>card</code>.
        <br><br>
        Multiple slide blocks can be included in a single message, and they are rendered in the
        order they appear in the array. <code>slides</code> is most commonly paired with the
        <code>modern-inline</code> card theme to display supporting data such as tables, lists,
        or labelled records alongside the card header, but it is compatible with all card themes.
        <br><br>
        Each slide block requires a <code>type</code> field that determines how the content is rendered,
        an optional <code>title</code> heading, and a <code>data</code> payload whose structure
        depends on the slide type.
        <br><br>
        <b>Supported slide types</b>
        <table style="border-collapse: collapse; width: 100%;">
          <tr>
            <th style="padding: 8px; text-align: left; border: 1px solid #ddd;">Type</th>
            <th style="padding: 8px; text-align: left; border: 1px solid #ddd;">Renders</th>
            <th style="padding: 8px; text-align: left; border: 1px solid #ddd;"><code>data</code> structure</th>
          </tr>
          <tr>
            <td style="padding: 8px; border: 1px solid #ddd;"><a href="https://www.zoho.com/cliq/help/restapi/v2/#table" target="_blank"><code>table</code></a></td>
            <td style="padding: 8px; border: 1px solid #ddd;">A data table with column headers and rows.</td>
            <td style="padding: 8px; border: 1px solid #ddd;">Object with <code>headers</code> (array of strings) and <code>rows</code> (array of objects where each key maps to a header).</td>
          </tr>
          <tr>
            <td style="padding: 8px; border: 1px solid #ddd;"><a href="https://www.zoho.com/cliq/help/restapi/v2/#list" target="_blank"><code>list</code></a></td>
            <td style="padding: 8px; border: 1px solid #ddd;">A bulleted list of items.</td>
            <td style="padding: 8px; border: 1px solid #ddd;">Array of strings, each representing one list item.</td>
          </tr>
          <tr>
            <td style="padding: 8px; border: 1px solid #ddd;"><a href="https://www.zoho.com/cliq/help/restapi/v2/#label" target="_blank"><code>label</code></a></td>
            <td style="padding: 8px; border: 1px solid #ddd;">Key-value pairs in a definition-list style.</td>
            <td style="padding: 8px; border: 1px solid #ddd;">Array of objects, each with <code>label</code> (string) and <code>value</code> (string).</td>
          </tr>
          <tr>
            <td style="padding: 8px; border: 1px solid #ddd;"><a href="https://www.zoho.com/cliq/help/restapi/v2/#image" target="_blank"><code>images</code></a></td>
            <td style="padding: 8px; border: 1px solid #ddd;">One or more inline images.</td>
            <td style="padding: 8px; border: 1px solid #ddd;">Array of publicly accessible HTTPS image URL strings.</td>
          </tr>
        </table>
        <br>
        For full details on each slide type, including field-level descriptions and payload examples,
        refer to <a href="https://www.zoho.com/cliq/help/restapi/v2/#Message_Content" target="_blank">Message Content</a>.
      items:
        type: object
        required:
          - type
        properties:
          type:
            type: string
            description: |
              The slide content type.
              <br><b>Allowed values</b>: <code>table</code> | <code>list</code> | <code>label</code> | <code>images</code>
            enum:
              - table
              - list
              - label
              - images
            example: table
          title:
            type: string
            description: Optional heading displayed above the slide content.
            example: Ticket Details
          data:
            description: |
              Content payload for the slide. Structure depends on <code>type</code>:
              <ul>
                <li><b>table</b>: Object with <code>headers</code> (array of strings) and <code>rows</code> (array of objects).</li>
                <li><b>list</b>: Array of strings.</li>
                <li><b>label</b>: Array of objects, each with <code>label</code> and <code>value</code>.</li>
                <li><b>images</b>: Array of image URL strings.</li>
              </ul>
            example:
              headers:
                - Field
                - Value
              rows:
                - Field: Ticket ID
                  Value: '#TKT-00892'
                - Field: Priority
                  Value: Critical
    NoResponse:
      type: object
      description: Represents an empty successful response where no payload is returned.
      properties:
        Response Code:
          type: string
          description: HTTP response code indicating no content is returned.
          example: 204 No response
    GenericResponse:
      type: object
      description: Generic successful response envelope.
      properties:
        url:
          type: string
          description: Endpoint URL associated with the response.
        type:
          type: string
          description: Resource type returned by the API.
        data:
          type: object
          description: Resource payload.
          additionalProperties: true
      additionalProperties: true
  securitySchemes:
    Cliq_Auth:
      type: oauth2
      x-authorization-example: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f
      flows:
        implicit:
          authorizationUrl: https://accounts.zoho.com/oauth/v2/auth
          scopes:
            ZohoCliq.Messages.CREATE: Send messages to users and chats
            ZohoCliq.Channels.CREATE: Post messages to channels
            ZohoCliq.Webhooks.CREATE: Post messages via webhooks
