{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Zoho Cliq Messagecards Schemas",
"definitions": {
"CardObject": {
"type": "object",
"description": "Defines the interactive card to be rendered inside the message. The theme field\nselects the card type and determines which fields are required. For a quick reference of\nrequired and optional fields per theme, see the Available Themes table in the overview above.\n
\nPoll card fields\n
string: Must be poll.string: The poll question displayed at the top of the card. Maximum 200 characters.array: List of voting choices. Minimum 2, maximum 10 items.\n string: Display label for the poll option. Maximum 100 characters.string: Must be modern-inline.string: Card header text displayed at the top of the card. Maximum 200 characters.string: Optional. Publicly accessible HTTPS URL of a thumbnail image shown in the card header.array: Optional. One or more labeled field sections displayed in the card body. Each section groups related key-value pairs under an optional heading.\n string: Optional section heading displayed above the fields.array: List of key-value field pairs.\n string: Field label (key).string: Field value.array: Optional. Action buttons rendered at the bottom of the card. Maximum 5. See Button fields below.string: Must be prompt.string: The prompt question or alert text presented to the user. Maximum 200 characters.array: Action buttons for the user to respond with. Minimum 1, maximum 5. See Button fields below.modern-inline and prompt themes)\nstring: Text displayed on the button. Maximum 30 characters.string: Determines how Cliq handles the button click.\n open.url: Opens a URL in the user's default browser. Requires action.data.web (string).invoke.function: Triggers a Cliq Function by name. Requires action.data.name (string).system.api: Calls a Cliq internal system API. Requires action.data.api (string).invoke.bot: Sends a message to a bot. Requires action.data.bot_name and action.data.message.preview.url: Opens a URL inside a Cliq preview panel without leaving the conversation. Requires action.data.web (string).object: The payload passed to the action handler. Expected fields depend on action.type as listed above.slides array in the message payload. slides is independent of the card object\nand can be combined with any card theme. For details on supported slide formats, see\nMessage Content.\n",
"required": [
"theme",
"title"
],
"properties": {
"theme": {
"type": "string",
"enum": [
"poll",
"modern-inline",
"prompt"
],
"description": "Card theme identifier. Determines the card type to render.poll: Renders a poll card with voting options, live vote counts, and percentages.modern-inline: Renders a rich inline card with a header, optional field sections, and action buttons.prompt: Renders a focused prompt card with a question and quick-reply action buttons.poll theme only.modern-inline theme only.modern-inline theme only.modern-inline and prompt themes.prompt.\n",
"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 action.",
"required": [
"label",
"action"
],
"properties": {
"label": {
"type": "string",
"maxLength": 30,
"description": "Display text shown on the button.type field determines the action category and the expected structure of the data payload.\n",
"required": [
"type",
"data"
],
"properties": {
"type": {
"type": "string",
"enum": [
"open.url",
"invoke.function",
"system.api",
"invoke.bot",
"preview.url"
],
"description": "The action type. Determines how Cliq handles the button click.open.url: Opens a URL in the user's default browser. Requires action.data.web (string).invoke.function: Triggers a Cliq Function by name. Requires action.data.name (string).system.api: Calls a Cliq internal system API. Requires action.data.api (string).invoke.bot: Sends a message to a bot. Requires action.data.bot_name and action.data.message.preview.url: Opens a URL inside a Cliq preview panel without leaving the conversation. Requires action.data.web (string).type:web (string - the URL to open).name (string - Cliq Function name).api (string - the internal API path).bot_name and message.web (string - the URL to preview).slides is a top-level field in the message payload - it sits alongside\ntext and card, and is not nested inside card.\nslides is most commonly paired with the\nmodern-inline card theme to display supporting data such as tables, lists,\nor labelled records alongside the card header, but it is compatible with all card themes.\ntype field that determines how the content is rendered,\nan optional title heading, and a data payload whose structure\ndepends on the slide type.\n| Type | \nRenders | \ndata structure | \n
|---|---|---|
table | \n A data table with column headers and rows. | \nObject with headers (array of strings) and rows (array of objects where each key maps to a header). | \n
list | \n A bulleted list of items. | \nArray of strings, each representing one list item. | \n
label | \n Key-value pairs in a definition-list style. | \nArray of objects, each with label (string) and value (string). | \n
images | \n One or more inline images. | \nArray of publicly accessible HTTPS image URL strings. | \n
text | \n A plain or formatted text block. | \nA string containing the text content to display. | \n
data payload is rendered.table: Renders a data table with column headers and rows.list: Renders a bulleted list of items.label: Renders key-value pairs in a definition-list style.images: Renders one or more inline images from HTTPS URLs.text: Renders a plain or formatted text block.type:headers (array of strings) and rows (array of objects).label and value.