openapi: 3.0.0 info: title: Extensions version: '3.0' description: | The Extensions API gives you programmatic control over the full lifecycle of Zoho Cliq Extension installations. Use it to install an Extension into your organization or teams, upgrade it to the latest version, and manage the runtime configuration properties that power your extension's behavior - all without touching the Cliq UI.

What you can do?
externalDocs: description: Find out more about Zoho Cliq Platform APIs url: https://www.zoho.com/cliq/help/platform/getting-started-with-cliq-platform.html servers: - url: https://cliq.zoho.com/api/v3 description: Zoho Cliq US DC tags: - name: Extensions description: Extensions Module paths: /extensions/{EXTENSION_ID}/installation: post: summary: Install an extension operationId: install_an_extension description: | Install a Cliq extension in an organisation. After installation, the extension's bundled platform components (bots, commands, message actions, etc.) become available to users.

Threshold limit: 10 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.

! Possible Error Codes Click to expand
Error Code Description
extension_plan_limit_exceeded Extension plan installation limit has been reached.
extension_install_restricted_non_marketplace Organization policy restricts installing non-marketplace extensions.
extension_install_restricted User is not allowed to install this extension.
operation_failed General installation failure.
Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed above) and message is a human-readable explanation of what went wrong.

parameters: - schema: description: '' $ref: '#/components/schemas/longid_regex' example: EXTENSION_ID in: path name: EXTENSION_ID description: Unique numeric identifier for the installed Extension (Application) in Cliq. To learn how to retrieve this ID, see EXTENSION_ID in the Glossary page. required: true - schema: description: '' $ref: '#/components/schemas/encryptedappkey_regex' in: query name: extension_key description: Encrypted identifier for the Extension (Application). Generated when the extension is registered on the Cliq Developer Platform. Used as an authentication credential for all Extension API requests. Refer to EXTENSION_KEY in the Glossary page. required: true requestBody: description: Installs an extension in the selected scope. Set scope to organization for org-wide install, or team with team_ids for team-scoped install. content: application/json: schema: $ref: '#/components/schemas/extensioninstall_V3' examples: install_organization: summary: Install for entire organization value: scope: organization install_team: summary: Install for specific teams value: scope: team team_ids: - 1234567890 - 9876543210 required: true responses: '204': description: Extension installed successfully. No response body. '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 an 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. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '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.Extensions.CREATE tags: - Extensions put: summary: Upgrade an extension operationId: update_extension description: | Upgrade an already-installed Cliq Extension to a newer version.

Threshold limit: 10 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 10 minutes
Cooldown period applied after threshold exhaustion.

! Possible Error Codes Click to expand
Error Code Description
extension_error_not_installed Extension is not installed.
app_disabled_by_owner Extension is disabled by owner/developer.
extension_disabled Extension is disabled by organization admin.
extension_already_installed Extension is already installed at organization scope.
extension_install_restricted User is not allowed to upgrade this extension.
operation_failed General upgrade failure.
Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed above) and message is a human-readable explanation of what went wrong.

parameters: - schema: description: '' $ref: '#/components/schemas/encryptedappkey_regex' in: query name: extension_key description: Encrypted identifier for the Extension (Application). Generated when the extension is registered on the Cliq Developer Platform. Used as an authentication credential for all Extension API requests. Refer to EXTENSION_KEY in the Glossary page. required: true - schema: description: '' $ref: '#/components/schemas/longid_regex' example: EXTENSION_ID in: path name: EXTENSION_ID description: Unique numeric identifier for the installed Extension (Application) in Cliq. To learn how to retrieve this ID, see EXTENSION_ID in the Glossary page. required: true requestBody: description: Upgrades an installed extension. Provide the target scope. Use organization to expand from team to org scope, or team to keep at team scope during version upgrade. content: application/json: schema: $ref: '#/components/schemas/extensionupgrade_V3' examples: upgrade_keep_team: summary: Upgrade while keeping team scope value: scope: team upgrade_to_organization: summary: Upgrade and expand to organization scope value: scope: organization required: true responses: '204': description: Extension upgraded successfully. No response body. '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 an 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. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '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.Extensions.UPDATE tags: - Extensions /extensions/{EXTENSION_ID}/properties: patch: summary: Add or update extension properties operationId: add_or_update_extension_proper description: | Add new or update existing configuration properties for an installed Extension. Extension properties are key-value pairs used to store extension-level settings (e.g. API keys, configuration flags) that are accessible to the extension's platform components. The `extension_key` parameter is required.

Threshold limit: 30 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.

! Possible Error Codes Click to expand
Error Code Description
extension_property_key_length_exceeded Property key length exceeds the allowed limit.
Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed above) and message is a human-readable explanation of what went wrong.

parameters: - schema: description: '' $ref: '#/components/schemas/encryptedappkey_regex' in: query name: extension_key description: Encrypted identifier for the Extension (Application). Generated when the extension is registered on the Cliq Developer Platform. Used as an authentication credential for all Extension API requests. Refer to EXTENSION_KEY in the Glossary page. required: true requestBody: description: Sets extension properties. Keys supplied are created or updated. Keys must match the pattern ([a-z_]+), max 30 characters. Values accept any string - use them to store API keys, webhook URLs, region identifiers, feature flags, or any other runtime configuration your extension requires. Max 1000 characters per value. Maximum 10 properties total per extension. content: application/json: schema: $ref: '#/components/schemas/appproperties' examples: set_single: summary: Set a single property value: properties: api_key: my_secret_api_key_value set_multiple: summary: Set multiple properties value: properties: api_key: my_secret_api_key_value region: us-east max_retries: '3' required: true responses: '200': description: Extension properties updated successfully. Returns only the properties that were added or updated in this request. content: application/json: schema: $ref: '#/components/schemas/ExtensionPropertiesUpdateResponse' examples: set_single: summary: Single property set value: api_key: my_secret_api_key_value set_multiple: summary: Multiple properties set value: api_key: my_secret_api_key_value region: us-east max_retries: '3' '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 an 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. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '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.Extensions.UPDATE tags: - Extensions get: summary: Get extension properties operationId: get_extension_properties description: | Retrieve one or more application properties of an installed Extension.

What are extension properties?

Extension properties are values associated with the extension. They are quite similar to regular data properties, wherein you map a key of type string with a value string. The main purpose is to store data configurations for the extension. They can be added, retrieved for use and deleted and even the Organization admin does not have access to view these configurations. These properties should be created and updated during extension installation and used in the extension code. Cliq supports a maximum of 10 properties per extension.

Threshold limit: 30 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.

! Possible Error Codes Click to expand
Error Code Description
invalid_inputs No valid property keys were supplied.
Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed above) and message is a human-readable explanation of what went wrong.

parameters: - schema: description: '' $ref: '#/components/schemas/smallalphawithspl_regex' in: query name: keys description: Comma-separated list of property key names to retrieve. Each key must match the pattern ([a-z_]+), max 30 characters per key. Maximum 10 keys per request. required: true - schema: description: '' $ref: '#/components/schemas/encryptedappkey_regex' in: query name: extension_key description: Encrypted identifier for the Extension (Application). Generated when the extension is registered on the Cliq Developer Platform. Used as an authentication credential for all Extension API requests. Refer to EXTENSION_KEY in the Glossary page. required: true responses: '200': description: Extension properties returned successfully. content: application/json: schema: $ref: '#/components/schemas/ExtensionPropertiesGetResponse' '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 an 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. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '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.Extensions.READ tags: - Extensions /extensions/{EXTENSION_ID}/properties/{EXTENSION_PROPERTY_KEY_NAME}: get: summary: Get a specific extension property operationId: get_extension_property description: | Retrieve a single extension property of an installed extension.

Threshold limit: 30 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.

! Possible Error Codes Click to expand
Error Code Description
extension_property_invalid_key Property key is invalid, empty, or does not exist.
Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed above) and message is a human-readable explanation of what went wrong.

parameters: - schema: description: '' $ref: '#/components/schemas/smallalphawithspl_regex' example: EXTENSION_PROPERTY_KEY_NAME in: path name: EXTENSION_PROPERTY_KEY_NAME description: The string key uniquely identifying a single extension property. Must match the pattern ([a-z_]+), max 30 characters. To learn more, see EXTENSION_PROPERTY_KEY_NAME in the Glossary page. required: true - schema: description: '' $ref: '#/components/schemas/encryptedappkey_regex' in: query name: extension_key description: Encrypted identifier for the Extension (Application). Generated when the extension is registered on the Cliq Developer Platform. Used as an authentication credential for all Extension API requests. Refer to EXTENSION_KEY in the Glossary page. required: true responses: '200': description: Extension property returned successfully. content: application/json: schema: $ref: '#/components/schemas/ExtensionPropertySingleResponse' '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 an 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. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '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: - Extensions.READ tags: - Extensions delete: summary: Delete a specific extension property operationId: delete_extension_property description: | Permanently delete a single extension property of an installed extension.
Deleted properties cannot be recovered, but new properties with the same key can be created after deletion.

Threshold limit: 30 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.

! Possible Error Codes Click to expand
Error Code Description
extension_property_invalid_key Property key is invalid or empty.
Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed above) and message is a human-readable explanation of what went wrong.

parameters: - schema: description: '' $ref: '#/components/schemas/smallalphawithspl_regex' example: EXTENSION_PROPERTY_KEY_NAME in: path name: EXTENSION_PROPERTY_KEY_NAME description: The string key uniquely identifying a single extension property to delete. Must match the pattern ([a-z_]+), max 30 characters. To learn more, see EXTENSION_PROPERTY_KEY_NAME in the Glossary page. required: true - schema: description: '' $ref: '#/components/schemas/encryptedappkey_regex' in: query name: extension_key description: Encrypted identifier for the Extension (Application). Generated when the extension is registered on the Cliq Developer Platform. Used as an authentication credential for all Extension API requests. Refer to EXTENSION_KEY in the Glossary page. required: true responses: '204': description: Extension property deleted successfully. No response body. '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 an 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. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '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: - Extensions.UPDATE tags: - Extensions components: schemas: ExtensionPropertySingleResponse: type: object description: Response returned when retrieving a single extension property. properties: api_key: type: string example: my_secret_api_key_value example: api_key: my_secret_api_key_value ExtensionPropertiesGetResponse: type: object description: Response returned when retrieving multiple extension properties. Keys are property names; values are their current string values. properties: api_key: type: string example: my_secret_api_key_value region: type: string example: us-east max_retries: type: string example: '3' example: api_key: my_secret_api_key_value region: us-east max_retries: '3' ExtensionPropertiesUpdateResponse: type: object description: Response returned after adding or updating extension properties. Contains only the key-value pairs that were submitted in the request. additionalProperties: type: string example: api_key: my_secret_api_key_value longid_regex: type: string description: Numeric long integer identifier used to reference platform components such as Commands, Functions, Widgets, Message Actions, Schedulers, and Extensions. extensioninstall_V3: type: object description: Payload for installing an extension. required: - scope properties: scope: type: string enum: - organization - team description: | Installlation scope for the extension.
Allowable values:
team_ids: type: array maxItems: 4 description: | List of team_ids to which the extension should be installed. Required if scope is set to team. Maximum of 4 team IDs allowed. items: type: integer encryptedappkey_regex: type: string description: Encrypted application key (appkey or EXTENSION_KEY) issued to a bot or extension, used as an alternative to OAuth for webhook-style authentication. extensionupgrade_V3: type: object description: Payload for upgrading an installed extension. required: - scope properties: scope: type: string enum: - organization - team description: Upgrade scope for the extension. appproperties: type: object description: Payload for setting extension properties. required: - properties properties: properties: type: object description: Map of extension property keys to values. properties: api_key: type: string example: my_secret_api_key_value smallalphawithspl_regex: type: string description: Lowercase alphanumeric string with allowed special characters (hyphens and underscores) used as extension property keys. securitySchemes: Cliq_Auth: type: oauth2 x-authorization-example: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f flows: implicit: authorizationUrl: '' scopes: ZohoCliq.Extensions.UPDATE: Update extension configurations, handlers, and properties; manage extension lifecycle. ZohoCliq.Extensions.CREATE: Install Extensions (Applications) into an organisation or network scope. ZohoCliq.Extensions.READ: Read extension configurations, handlers, properties, and execution logs.