openapi: 3.0.0
info:
title: Datastores
version: '3.0'
description: |
Cliq Database serves as an ideal storage interface for building integrations on the Cliq Platform. It allows you to create, modify, store, and synchronize easily accessible data items.
You can access the Cliq Record APIs using the following OAuth scope:
- OAuth Scope for Record APIs: ZohoCliq.Datastores.ALL , ZohoCliq.DatastoreRecords.ALL
- This scope provides basic CRUD (Create, Read, Update, Delete) access to the Record APIs.
servers:
- url: https://cliq.zoho.com/api/v3
description: Zoho Cliq US DC
tags:
- name: datastores
description: Datastores
- name: Platform_storage
description: Manage Cliq Datastores - structured, schema-defined storage tables scoped to an organisation or extension. Datastores allow platform components to persist and query structured data across executions. Each datastore has typed fields and supports CRUD operations, field schema management, bulk record exports, and criteria-based queries.
paths:
/datastores:
post:
summary: Create a datastore
operationId: creating_datastores_for_an_org
description: |
Create a new Datastore for the organisation.
A Datastore is a structured storage table scoped to the organisation (or an extension) that allows platform components to persist and query data across executions.
Threshold limit: 10 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| datastore_creation_limit_exceeded |
The maximum number of datastores allowed for the organisation has been reached. |
| datastore_name_already_exists |
A datastore with the same name already exists in the organisation. |
| datastore_invalid_creation_data |
The request body contains invalid or malformed data for datastore creation. |
| datastore_fields_required |
At least one field definition must be provided to create a datastore. |
| datastore_fields_invalid_value |
One or more field definitions contain an invalid value. |
| datastore_fields_limit_exceeded |
The number of fields exceeds the maximum limit of 19 (plus the default record ID field). |
| datastore_fields_duplicate_column |
Two or more fields share the same column name. Field names must be unique within a datastore. |
| datastore_access_denied |
The authenticated user does not have permission to create a datastore. |
| datastore_unique_key_column_not_found |
A field referenced in a unique key constraint does not exist in the datastore's field definitions. |
| datastore_field_name_reserved |
One or more field names use a reserved keyword that cannot be used as a field name. |
| datastore_field_unique_key_not_supported |
A field of type encrypted-text or large-text was included in a unique key constraint, which is not supported. |
| datastore_field_mask_not_supported |
Masking was specified for a field type that does not support it. Only limited-text and number fields support masking. |
| datastore_invalid |
The datastore data is invalid or in an unexpected state. |
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: []
requestBody:
description: Creates a datastore. Provide `unique_name`, `name`, `description`, and at least one field definition.
content:
application/json:
schema:
$ref: '#/components/schemas/createplatformdatabase_v2'
required: true
responses:
'200':
description: Datastore created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DatastoreResponse'
example:
url: /api/v3/datastores
type: datastore
data:
unique_name: empdir
name: Employee Directory
id: '227828000000132001'
creator:
name: NP NTC
id: '119440882'
status: enabled
fields:
- default_value: ''
masked: false
name: Notes
unique_name: notes
type: large-text
mandatory: false
id: '17202020414617773604009000'
- default_value: '0'
masked: false
name: Employee ID
unique_name: empid
type: number
mandatory: true
id: '17202020414617773604009001'
- default_value: ''
masked: false
name: Employee Name
unique_name: empname
type: limited-text
mandatory: true
id: '17202020414617773604009002'
- default_value: 'true'
masked: false
name: Active Status
unique_name: isactive
type: boolean
mandatory: false
id: '17202020414617773604009003'
type: custom
description: V3 API test datastore
unique_keys:
- - empid
scope: personal
'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:
- Datastores.CREATE
tags:
- Platform_storage
get:
summary: List all datastores
operationId: get_list_of_datastores
description: |
Retrieve a paginated list of all datastores defined for the organisation.
Threshold limit: 30 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| bulk_record_update_failed |
Failed to update one or more records. |
| invalid_record_criteria |
Criteria expression is invalid. |
| datastore_not_found |
Datastore with the given identifier 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/base64_regex'
in: query
name: sync_token
description: |
Return datastores modified after the given sync token. The sync token is returned in the response when fetching the list of datastores, and can be used to retrieve only datastores that were created or updated after that request.
required: false
- schema:
description: ''
type: integer
in: query
name: limit
description: |
Maximum number of datastores to return in the response. Default is 20, maximum allowed value is 100.
required: false
- schema:
description: ''
$ref: '#/components/schemas/base64_regex'
in: query
name: next_token
description: |
Token to retrieve the next page of results. This is returned in the response when the number of datastores exceeds the specified limit. To fetch the next page, include this token in the request.
required: false
responses:
'200':
description: List of datastores returned successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DatastoreResponse'
example:
url: /api/v3/datastores
type: datastore
sync_token: MTB8MTc3NzM2MDM5OTc0OXw=
data:
- unique_name: empdir
name: Employee Directory
id: '227828000000132001'
creator:
name: NP NTC
id: '119440882'
status: enabled
fields:
- default_value: ''
masked: false
name: Notes
unique_name: notes
type: large-text
mandatory: false
id: '17202020414617773604009000'
- default_value: '0'
masked: false
name: Employee ID
unique_name: empid
type: number
mandatory: true
id: '17202020414617773604009001'
- default_value: ''
masked: false
name: Employee Name
unique_name: empname
type: limited-text
mandatory: true
id: '17202020414617773604009002'
- default_value: 'true'
masked: false
name: Active Status
unique_name: isactive
type: boolean
mandatory: false
id: '17202020414617773604009003'
type: custom
description: V3 API test datastore
unique_keys:
- - empid
scope: personal
'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:
- Datastores.READ
tags:
- Platform_storage
/datastores/{DATASTORE_ID}:
patch:
summary: Edit a datastore
operationId: edit_datastores
description: |
Update the metadata (name, description) of an existing datastore.
Threshold limit: 10 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| datastore_not_found |
Datastore with the given identifier does not exist. |
| datastore_name_already_exists |
A datastore with the same name already exists in the organisation. |
| datastore_access_denied |
The authenticated user does not have permission to edit this datastore. |
| datastore_unique_key_column_not_found |
A field referenced in a unique key constraint does not exist in the datastore's field definitions. |
| datastore_field_unique_key_not_supported |
A field of type encrypted-text or large-text was included in a unique key constraint, which is not supported. |
| datastore_invalid |
The datastore data is invalid or in an unexpected state. |
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:
- name: DATASTORE_ID
in: path
required: true
description: Unique numeric identifier of the datastore. To learn how to retrieve this ID, see LONG_ID in the Glossary page.
schema:
$ref: '#/components/schemas/longid_regex'
example: DATASTORE_ID
requestBody:
description: Updates datastore metadata. Send only fields to change, such as `name`, `description`, or `unique_keys`.
content:
application/json:
schema:
$ref: '#/components/schemas/editplatformdatabase_v2'
example:
unique_name: empdir
name: Employee Directory
description: Tracks employee records and department data
unique_keys:
- - empid
- empname
required: true
responses:
'200':
description: Datastore updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DatastoreResponse'
example:
url: /api/v3/datastores/227828000000132001
type: datastore
data:
unique_name: empdir
name: Employee Directory
id: '227828000000132001'
creator:
name: NP NTC
id: '119440882'
status: enabled
fields:
- default_value: ''
masked: false
name: Department
unique_name: department
type: limited-text
mandatory: false
id: '17202020414617773604018030'
- default_value: ''
masked: false
name: Notes
unique_name: notes
type: large-text
mandatory: false
id: '17202020414617773604009000'
- default_value: '0'
masked: false
name: Salary
unique_name: salary
type: number
mandatory: false
id: '17202020414617773604018070'
- default_value: ''
masked: false
name: Employee Name
unique_name: empname
type: limited-text
mandatory: true
id: '17202020414617773604009002'
- default_value: '0'
masked: false
name: Employee ID
unique_name: empid
type: number
mandatory: true
id: '17202020414617773604009001'
- default_value: 'true'
masked: false
name: Active Status
unique_name: isactive
type: boolean
mandatory: false
id: '17202020414617773604009003'
type: custom
description: Tracks employee records and department data
unique_keys:
- - empid
- empname
scope: personal
'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:
- Datastores.UPDATE
tags:
- Platform_storage
get:
summary: Get a datastore
operationId: get_a_datastores
description: |
Retrieve the metadata and field schema of a single datastore identified by its numeric ID. The response includes the datastore name, description, and the list of typed fields (columns) defined in the schema.
Threshold limit: 30 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| record_not_found |
Record with the given ID does not exist. |
| datastore_not_found |
Datastore with the given identifier 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:
- name: DATASTORE_ID
in: path
required: true
description: Unique numeric identifier of the datastore. To learn how to retrieve this ID, see LONG_ID in the Glossary page.
schema:
$ref: '#/components/schemas/longid_regex'
example: DATASTORE_ID
responses:
'200':
description: Datastore details returned successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DatastoreResponse'
example:
url: /api/v3/datastores/227828000000132001
type: datastore
data:
unique_name: empdir
name: Employee Directory
id: '227828000000132001'
creator:
name: NP NTC
id: '119440882'
status: enabled
fields:
- default_value: ''
masked: false
name: Notes
unique_name: notes
type: large-text
mandatory: false
id: '17202020414617773604009000'
- default_value: '0'
masked: false
name: Employee ID
unique_name: empid
type: number
mandatory: true
id: '17202020414617773604009001'
- default_value: ''
masked: false
name: Employee Name
unique_name: empname
type: limited-text
mandatory: true
id: '17202020414617773604009002'
- default_value: 'true'
masked: false
name: Active Status
unique_name: isactive
type: boolean
mandatory: false
id: '17202020414617773604009003'
type: custom
description: V3 API test datastore
unique_keys:
- - empid
scope: personal
'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:
- Datastores.READ
tags:
- Platform_storage
delete:
summary: Delete a datastore
operationId: delete_a_datastore
description: |
Permanently delete a datastore and all its stored records. This operation is irreversible, and all data in the datastore will be lost. Hence, ensure no active platform components depend on this datastore before deleting it.
Threshold limit: 10 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| datastore_not_found |
Datastore with the given identifier does not exist. |
| datastore_access_denied |
The authenticated user does not have permission to delete this datastore. |
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:
- name: DATASTORE_ID
in: path
required: true
description: Unique numeric identifier of the datastore. To learn how to retrieve this ID, see LONG_ID in the Glossary page.
schema:
$ref: '#/components/schemas/longid_regex'
example: DATASTORE_ID
responses:
'204':
description: No Content. Datastore deleted successfully.
'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:
- Datastores.DELETE
tags:
- Platform_storage
/datastores/{DATASTORE_ID}/fields:
patch:
summary: Edit datastore fields
operationId: edit_datastore_fields
description: |
Update the existing fields (columns) in a datastore. The modifiable attributes include the field display name, type, and required field flag. The names of fields cannot be changed after they are created.
Threshold limit: 10 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| datastore_not_found |
Datastore with the given identifier does not exist. |
| datastore_access_denied |
The authenticated user does not have permission to modify this datastore. |
| datastore_field_update_failed |
Failed to update one or more datastore fields. |
| datastore_field_not_found |
A field with the given ID does not exist in this datastore. |
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:
- name: DATASTORE_ID
in: path
required: true
description: |
Unique numeric identifier of the datastore.
To learn how to retrieve this ID, see DATASTORE_ID in the Glossary page.
schema:
$ref: '#/components/schemas/longid_regex'
example: DATASTORE_ID
requestBody:
description: Updates existing datastore fields. Provide `fields` with each field `id` and the attributes to modify.
content:
application/json:
schema:
$ref: '#/components/schemas/edit_platform_db_fields'
example:
fields:
- id: '17202020414617773604009000'
name: Employee Notes
mandatory: false
- id: '17202020414617773604009003'
name: Is Active
mandatory: true
required: true
responses:
'200':
description: Datastore fields updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DatastoreResponse'
example:
url: /api/v3/datastores/227828000000132001/fields
type: datastore
data:
unique_name: empdir
name: Employee Directory
id: '227828000000132001'
creator:
name: NP NTC
id: '119440882'
status: enabled
fields:
- default_value: ''
masked: false
name: Employee Notes
unique_name: notes
type: large-text
mandatory: false
id: '17202020414617773604009000'
- default_value: '0'
masked: false
name: Employee ID
unique_name: empid
type: number
mandatory: true
id: '17202020414617773604009001'
- default_value: ''
masked: false
name: Employee Name
unique_name: empname
type: limited-text
mandatory: true
id: '17202020414617773604009002'
- default_value: 'true'
masked: false
name: Is Active
unique_name: isactive
type: boolean
mandatory: true
id: '17202020414617773604009003'
type: custom
description: Tracks employee records and department data
unique_keys:
- - empid
scope: personal
'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:
- Datastores.UPDATE
tags:
- Platform_storage
post:
summary: Add fields to a datastore
operationId: add_datastore_fields
description: |
Add one or more new fields (columns) to an existing datastore. Existing records will have null for newly added fields unless a default value is specified.
Threshold limit: 10 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| datastore_not_found |
Datastore with the given identifier does not exist. |
| datastore_fields_invalid_value |
One or more field definitions contain an invalid value. |
| datastore_fields_limit_exceeded |
The number of fields exceeds the maximum limit of 19 (plus the default record ID field). |
| datastore_fields_duplicate_column |
Two or more fields in the request share the same column name. |
| datastore_access_denied |
The authenticated user does not have permission to modify this datastore. |
| datastore_field_name_already_exists |
A field with this unique name already exists in the datastore. |
| datastore_field_name_reserved |
One or more field names use a reserved keyword that cannot be used as a field name. |
| datastore_field_mask_not_supported |
Masking was specified for a field type that does not support it. Only limited-text and number fields support masking. |
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:
- name: DATASTORE_ID
in: path
required: true
description: |
Unique numeric identifier of the datastore.
To learn how to retrieve this ID, see DATASTORE_ID in the Glossary page.
schema:
$ref: '#/components/schemas/longid_regex'
example: DATASTORE_ID
requestBody:
description: Adds new datastore fields. Provide one or more field definitions in `fields`.
content:
application/json:
schema:
$ref: '#/components/schemas/add_platform_db_fields'
example:
fields:
- unique_name: join_date
name: Join Date
type: limited-text
mandatory: false
default_value: ''
- unique_name: location
name: Location
type: limited-text
mandatory: false
default_value: ''
required: true
responses:
'200':
description: Datastore fields added successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DatastoreResponse'
example:
url: /api/v3/datastores/227828000000132001/fields
type: datastore
data:
unique_name: empdir
name: Employee Directory
id: '227828000000132001'
creator:
name: NP NTC
id: '119440882'
status: enabled
fields:
- default_value: ''
masked: false
name: Notes
unique_name: notes
type: large-text
mandatory: false
id: '17202020414617773604009000'
- default_value: '0'
masked: false
name: Employee ID
unique_name: empid
type: number
mandatory: true
id: '17202020414617773604009001'
- default_value: ''
masked: false
name: Employee Name
unique_name: empname
type: limited-text
mandatory: true
id: '17202020414617773604009002'
- default_value: 'true'
masked: false
name: Active Status
unique_name: isactive
type: boolean
mandatory: false
id: '17202020414617773604009003'
- default_value: ''
masked: false
name: Join Date
unique_name: join_date
type: limited-text
mandatory: false
id: '17202020414617773604018031'
- default_value: ''
masked: false
name: Location
unique_name: location
type: limited-text
mandatory: false
id: '17202020414617773604018032'
type: custom
description: Tracks employee records and department data
unique_keys:
- - empid
scope: personal
'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:
- Datastores.UPDATE
tags:
- Platform_storage
delete:
summary: Delete fields of a datastore
operationId: delete_datastore_fields
description: |
Remove one or more fields (columns) from a Datastore schema by providing the field IDs in the ids query parameter. All data stored in those fields will be permanently deleted. This action is irreversible.
Threshold limit: 10 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| datastore_not_found |
Datastore with the given identifier does not exist. |
| datastore_column_not_found |
A field with the given ID does not exist in this datastore. |
| datastore_access_denied |
The authenticated user does not have permission to modify this datastore. |
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:
- name: DATASTORE_ID
in: path
required: true
description: |
Unique numeric identifier of the datastore.
To learn how to retrieve this ID, see DATASTORE_ID in the Glossary page.
schema:
$ref: '#/components/schemas/longid_regex'
example: IDS
- name: ids
in: query
required: true
description: |
Comma-separated list of field IDs to delete.
To retrieve field IDs, use the Get Datastore Details API and refer to the id attribute of each field in the response.
Maximum number of fields that can be deleted in a single request is 10
schema:
type: string
responses:
'204':
description: No Content. Datastore fields deleted successfully.
'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:
- Datastores.UPDATE
tags:
- Platform_storage
/datastores/{DATASTORE_UNIQUE_NAME}/records:
patch:
summary: Bulk update records in a datastore
operationId: update_records_in_storage
description: |
Update multiple records in a datastore with a single request. Identify target records by specifying record IDs or a criteria expression in the request body.
Note: To manage records of a datastore bundled with an extension, use the extension-scoped endpoint instead:
v3/extensions/{EXTENSION_ID}/datastores/{DATASTORE_UNIQUE_NAME}/records
and pass the extension_key as a query parameter.
Threshold limit: 30 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| datastore_not_found |
Datastore with the given identifier does not exist. |
| datastore_invalid_criteria |
The criteria expression provided is invalid or malformed. |
| datastore_criteria_invalid_operator |
The criteria expression uses an invalid or unsupported operator. |
| datastore_criteria_limit_exceeded |
The number of conditions in the criteria expression exceeds the allowed limit. |
| datastore_column_not_found |
A field key in values or criteria does not match any field unique_name in this datastore. |
| datastore_update_violates_unique_key |
The update would violate a unique key constraint defined on the datastore. |
| datastore_access_denied |
The authenticated user does not have permission to update records in this datastore. |
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:
- name: DATASTORE_UNIQUE_NAME
in: path
required: true
description: |
Unique name of the datastore.
To learn how to retrieve this, see DATABASE_UNIQUE_NAME in the Glossary page.'
schema:
type: string
example: DATASTORE_UNIQUE_NAME
- name: extension_key
in: query
required: false
description: |
Unique key of the extension that the datastore belongs to. Required if the datastore is owned by an extension. To learn how to retrieve this, see EXTENSION_KEY in the Glossary
schema:
type: string
requestBody:
description: |
Bulk-updates matching records. Provide a `criteria` expression to select records and `values` with the field updates to apply.
content:
application/json:
schema:
type: object
required:
- criteria
- values
properties:
values:
type: object
description: |
Key-value pairs of field unique_name and the new value to update.
additionalProperties: true
example:
isactive: false
empname: John Doe
notes: Moved to inactive status
criteria:
type: string
description: |
Expression to select records for bulk update. Use field unique_names as keys. Supported comparison operators: =, ==, !=, >, >=, <, <=, like, not like, in (max 10 values), not in (max 10 values). Combine conditions with && (AND) or || (OR), and use parentheses for grouping. Max 10 clauses.
example: (department==Engineering) && (isactive==true)
responses:
'204':
description: No Content. Records updated successfully.
'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:
- DatastoreRecords.UPDATE
tags:
- Platform_storage
post:
summary: Add records to a datastore
operationId: insert_record_in_storage
description: |
Insert a record into a datastore.
Note: To manage records of a datastore bundled with an extension, use the extension-scoped endpoint instead:
v3/extensions/{EXTENSION_ID}/datastores/{DATASTORE_UNIQUE_NAME}/records
and pass the extension_key as a query parameter.
Threshold limit: 30 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| datastore_not_found |
Datastore with the given identifier does not exist. |
| datastore_data_limit_exceeded |
The record data exceeds the maximum allowed size (max 20 fields, each value up to 1000 characters, total max 2500 bytes). |
| datastore_column_not_found |
A field key in values does not match any field unique_name in this datastore. |
| datastore_invalid_number_value |
A value provided for a number-type field is not a valid number. |
| datastore_access_denied |
The authenticated user does not have permission to insert records into this datastore. |
| datastore_unique_key_violation |
The record violates a unique key constraint defined on the datastore. |
| datastore_required_field_missing |
A mandatory field was not provided in the request. |
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:
- name: DATASTORE_UNIQUE_NAME
in: path
required: true
description: Unique name of the datastore. To learn how to retrieve this, see DATABASE_UNIQUE_NAME in the Glossary page.
schema:
type: string
example: DATASTORE_UNIQUE_NAME
- name: extension_key
in: query
required: false
description: Encrypted app ID. Required if the target datastore is owned by an extension.
schema:
$ref: '#/components/schemas/encryptedappkey_regex'
requestBody:
description: |
Inserts a single record into the datastore. Provide field values as key-value pairs in the `values` object, where each key is a field `unique_name` from the datastore schema.
| Field |
Type |
Required |
Constraints |
Description |
values |
JSONObject |
Yes |
Max 20 keys; each value max 1000 chars; total max 2500 bytes |
Key-value pairs where keys are field unique_names defined in the datastore schema. |
content:
application/json:
schema:
type: object
required:
- values
properties:
values:
type: object
description: |
Key-value pairs representing field data for the new record.
Keys must match the unique_name of fields defined in the datastore schema. Values must conform to the field type (e.g. string, number, boolean) and respect the datastore's constraints.
Datastore constraints:
- Maximum 20 fields per record
- Each value can be up to 1000 characters
additionalProperties: true
example:
empname: John Doe
empid: 1001
isactive: true
notes: Senior Engineer in Platform Team
required: true
responses:
'200':
description: Record inserted successfully.
content:
application/json:
schema:
type: object
properties:
url:
type: string
example: /api/v3/datastores/empdir/records
type:
type: string
example: datastore_record
data:
type: object
properties:
id:
type: string
example: '227828000000128010'
empname:
type: string
example: John Doe
empid:
type: string
example: '1001'
isactive:
type: boolean
example: true
notes:
type: string
example: Senior Engineer in Platform Team
added_time:
type: string
example: '1777360402254'
modified_time:
type: string
example: '1777360402254'
example:
url: /api/v3/datastores/empdir/records
type: datastore_record
data:
modified_time: '1777360402254'
empid: '1001'
isactive: true
id: '227828000000128010'
empname: John Doe
added_time: '1777360402254'
notes: Senior Engineer in Platform Team
'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:
- DatastoreRecords.CREATE
tags:
- Platform_storage
get:
summary: List records from a datastore
operationId: get_records
description: |
Retrieve records from a datastore with optional filtering, sorting, and pagination.
- Use the
criteria query parameter to filter records based on field values (e.g. (empname=John) && (isactive=true)).
- Use the
sync_token parameter to retrieve records modified before a certain point in time, or the next_token parameter for records modified after a certain point in time. This is useful for incremental synchronization.
- Use the
order_by parameter to sort results by specific fields.
- Use the
limit parameter to restrict the number of records returned.
Note: To manage records of a datastore bundled with an extension, use the extension-scoped endpoint instead:
v3/extensions/{EXTENSION_ID}/datastores/{DATASTORE_UNIQUE_NAME}/records
and pass the extension_key as a query parameter.
Threshold limit: 30 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| datastore_not_found |
Datastore with the given identifier does not exist. |
| datastore_invalid_criteria |
The criteria expression provided is invalid or malformed. |
| datastore_criteria_invalid_operator |
The criteria expression uses an invalid or unsupported operator. |
| datastore_criteria_limit_exceeded |
The number of conditions in the criteria expression exceeds the allowed limit. |
| datastore_column_not_found |
A field used in the criteria does not exist in this datastore. |
| datastore_invalid_next_token |
The next_token value provided is invalid or expired. |
| datastore_invalid_number_value |
A value used in the criteria for a number-type field is not a valid number. |
| datastore_in_query_limit_exceeded |
The number of values in an in query exceeds the allowed limit. |
| datastore_duplicate_sort_field |
The same field was specified more than once in the order_by parameter. |
| datastore_access_denied |
The authenticated user does not have permission to read records from this datastore. |
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:
- name: DATASTORE_UNIQUE_NAME
in: path
required: true
description: |
Unique name of the datastore.
To learn how to retrieve this, see DATABASE_UNIQUE_NAME in the Glossary page.
schema:
type: string
example: DATASTORE_UNIQUE_NAME
- name: criteria
in: query
required: false
description: |
Expression to filter records. Use field unique_names as keys. Wrap each condition in parentheses and combine with && / ||.
Example: (empname=John) && (isactive=true)
Supported Comparison Operators
| Operator |
Meaning |
Notes |
= |
Equal |
|
== |
Equal |
Alias for = |
!= |
Not Equal |
|
> |
Greater Than |
|
>= |
Greater Than or Equal |
|
< |
Less Than |
|
<= |
Less Than or Equal |
|
like |
Like (pattern match) |
Case-insensitive, only for CHAR fields |
not like |
Not Like |
Case-insensitive, only for CHAR fields |
in |
In (multi-value) |
Comma-separated values, max 10 values |
not in |
Not In |
Comma-separated values, max 10 values |
Logical Operators (for combining criteria)
| Operator |
Meaning |
&& |
AND |
|| |
OR |
( ) |
Grouping / parentheses for precedence |
AND has higher priority than OR (standard precedence).
Limits
- Max criteria clauses: 10 (combined with
&& / ||)
- Max values in
in / not in: 10
schema:
type: string
- name: limit
in: query
required: false
description: |
Maximum number of records to return.
Default: 50
Maximum: 100
schema:
type: integer
minimum: 1
maximum: 1000
default: 100
- name: order_by
in: query
required: false
description: |
Comma-separated list of fields to sort by, with optional sort direction (asc or desc).
If sort direction is not specified, ascending order is used by default.
Example: empname desc, empid asc
Example syntax: +timestamp (e.g. +1777360402254) to get records modified before the specified timestamp, or -age (e.g. -3600000) to get records modified within the last hour.
schema:
type: string
- name: sync_token
in: query
required: false
description: |
Token to retrieve records modified before a certain point in time. This is useful for incremental synchronization. The token value should be the sync_token returned in a previous response, which encodes a timestamp. Records modified before that timestamp will be returned.
schema:
type: string
- name: next_token
in: query
required: false
description: |
Token to retrieve records modified after a certain point in time. This is useful for incremental synchronization. The token value should be the sync_token returned in a previous response, which encodes a timestamp. Records modified after that timestamp will be returned.
schema:
type: string
- name: extension_key
in: query
required: false
description: |
Unique key of the extension that the datastore belongs to. Required if the datastore is owned by an extension. To learn how to retrieve this, see EXTENSION_KEY in the Glossary page.
schema:
type: string
responses:
'200':
description: Records returned successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/listrecords_response'
'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:
- DatastoreRecords.READ
tags:
- Platform_storage
delete:
summary: Delete records from a datastore
operationId: delete_records_of_given_ids_in
description: |
Delete one or more records from a datastore. Specify the records to delete by providing comma-separated record ids in the query string, or by providing a criteria expression to match records. Deletions are irreversible.
Note: To manage records of a datastore bundled with an extension, use the extension-scoped endpoint instead:
v3/extensions/{EXTENSION_ID}/datastores/{DATASTORE_UNIQUE_NAME}/records
and pass the extension_key as a query parameter.
Threshold limit: 30 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
parameters:
- name: DATASTORE_UNIQUE_NAME
in: path
required: true
description: Unique name of the datastore. To learn how to retrieve this, see DATABASE_UNIQUE_NAME in the Glossary page.
schema:
type: string
example: DATASTORE_UNIQUE_NAME
- schema:
description: ''
type: string
in: query
name: criteria
description: |
Expression to select records for bulk deletion. Use field unique_names as keys. Supported comparison operators: =, ==, !=, >, >=, <, <=, like, not like, in (max 10 values), not in (max 10 values). Combine conditions with && (AND) or || (OR), and use parentheses for grouping. Max 10 clauses.
required: false
- schema:
description: ''
$ref: '#/components/schemas/multiplelong_regex'
in: query
name: ids
description: ids of the records to be deleted
required: false
- schema:
description: ''
$ref: '#/components/schemas/encryptedappkey_regex'
in: query
name: extension_key
description: Encrypted app id
required: false
responses:
'204':
description: No Content. Records deleted successfully.
'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:
- DatastoreRecords.DELETE
tags:
- Platform_storage
/datastores/{DATASTORE_UNIQUE_NAME}/records/{RECORD_ID}:
patch:
summary: Update a record in a datastore
operationId: update_a_record_in_storage
description: |
Update a single record in a datastore.
Note: To manage records of a datastore bundled with an extension, use the extension-scoped endpoint instead:
v3/extensions/{EXTENSION_ID}/datastores/{DATASTORE_UNIQUE_NAME}/records/{RECORD_ID}
and pass the extension_key as a query parameter.
Threshold limit: 30 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| datastore_record_not_found |
The record with the given ID does not exist in this datastore. |
| datastore_not_found |
Datastore with the given identifier does not exist. |
| datastore_column_not_found |
A field key in values does not match any field unique_name in this datastore. |
| datastore_update_violates_unique_key |
The update would violate a unique key constraint defined on the datastore. |
| datastore_invalid_number_value |
A value provided for a number-type field is not a valid number. |
| datastore_access_denied |
The authenticated user does not have permission to update records in this datastore. |
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:
- name: DATASTORE_UNIQUE_NAME
in: path
required: true
description: Unique name of the datastore. To learn how to retrieve this, see DATABASE_UNIQUE_NAME in the Glossary page.
schema:
type: string
example: DATASTORE_UNIQUE_NAME
- name: RECORD_ID
in: path
required: true
description: |
Unique numeric identifier of the record to update.
To learn how to retrieve this, see RECORD_ID in the Glossary page.
schema:
$ref: '#/components/schemas/longid_regex'
example: RECORD_ID
- name: extension_key
in: query
required: false
description: |
Unique key of the extension that the datastore belongs to. Required if the datastore is owned by an extension.
To learn how to retrieve this, see EXTENSION_KEY in the Glossary page.
schema:
type: string
requestBody:
description: Updates a single record by ID. Provide only the field values to modify in `values`.
content:
application/json:
schema:
$ref: '#/components/schemas/datastores_records_add'
required: true
responses:
'200':
description: Record updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/updaterecord_response'
'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:
- DatastoreRecords.UPDATE
tags:
- Platform_storage
get:
summary: Get a record from a datastore
operationId: get_a_record
description: |
Retrieve a single record from a datastore.
Note: To manage records of a datastore bundled with an extension, use the extension-scoped endpoint instead:
v3/extensions/{EXTENSION_ID}/datastores/{DATASTORE_UNIQUE_NAME}/records/{RECORD_ID}
and pass the extension_key as a query parameter.
Threshold limit: 30 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| datastore_record_not_found |
The record with the given ID does not exist in this datastore. |
| datastore_not_found |
Datastore with the given identifier does not exist. |
| datastore_access_denied |
The authenticated user does not have permission to read records from this datastore. |
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:
- name: DATASTORE_UNIQUE_NAME
in: path
required: true
description: Unique name of the datastore. To learn how to retrieve this, see DATABASE_UNIQUE_NAME in the Glossary page.
schema:
type: string
example: DATASTORE_UNIQUE_NAME
- name: RECORD_ID
in: path
required: true
description: |
Unique numeric identifier of the record to retrieve.
To learn how to retrieve this, see RECORD_ID in the Glossary page.
schema:
$ref: '#/components/schemas/longid_regex'
example: RECORD_ID
- name: extension_key
in: query
required: false
description: |
Unique key of the extension that the datastore belongs to. Required if the datastore is owned by an extension.
To learn how to retrieve this, see EXTENSION_KEY in the Glossary page.
schema:
type: string
responses:
'200':
description: Record returned successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/updaterecord_response'
'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:
- DatastoreRecords.READ
tags:
- Platform_storage
delete:
summary: Delete a record from a datastore
operationId: delete_a_record_in_storage
description: |
Permanently delete a single record from a datastore.
Note: To manage records of a datastore bundled with an extension, use the extension-scoped endpoint instead:
v3/extensions/{EXTENSION_ID}/datastores/{DATASTORE_UNIQUE_NAME}/records/{RECORD_ID}
and pass the extension_key as a query parameter.
Threshold limit: 30 requests per min per user
Number of API calls allowed within a minute.
Lock period: 5 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| datastore_record_not_found |
The record with the given ID does not exist in this datastore. |
| datastore_not_found |
Datastore with the given identifier does not exist. |
| datastore_access_denied |
The authenticated user does not have permission to delete records from this datastore. |
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:
- name: DATASTORE_UNIQUE_NAME
in: path
required: true
description: Unique name of the datastore. To learn how to retrieve this, see DATABASE_UNIQUE_NAME in the Glossary page.
schema:
type: string
example: DATASTORE_UNIQUE_NAME
- name: RECORD_ID
in: path
required: true
description: |
Unique numeric identifier of the record to delete.
To learn how to retrieve this, see RECORD_ID in the Glossary page.
schema:
$ref: '#/components/schemas/longid_regex'
example: RECORD_ID
- name: extension_key
in: query
required: false
description: |
Unique key of the extension that the datastore belongs to. Required if the datastore is owned by an extension.
To learn how to retrieve this, see EXTENSION_KEY in the Glossary page.
schema:
type: string
responses:
'204':
description: No Content. Record deleted successfully.
'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:
- DatastoreRecords.DELETE
tags:
- Platform_storage
/datastores/{DATASTORE_ID}/export:
post:
summary: Export datastore records
operationId: export_datastore_records
description: |
Initiate a bulk export of all records from a datastore, identified by its numeric ID. This export is useful for data migration, backups, or analyzing platform storage data.
Threshold limit: 5 requests per min per user
Number of API calls allowed within a minute.
Lock period: 10 minutes
Wait time before consecutive API requests.
!
Possible Error Codes
Click to expand
| Error Code |
Description |
| datastore_not_found |
Datastore with the given identifier does not exist. |
| datastore_access_denied |
The authenticated user does not have permission to export this datastore. |
| datastore_export_password_missing |
A password is required when password_protected is set to true. |
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:
- name: DATASTORE_ID
in: path
required: true
description: Unique numeric identifier of the datastore. To learn how to retrieve this ID, see LONG_ID in the Glossary page.
schema:
$ref: '#/components/schemas/longid_regex'
example: DATASTORE_ID
requestBody:
description: Starts a datastore export. Specify the output file type and optional password protection.
content:
application/json:
schema:
$ref: '#/components/schemas/platformstorage_records_export'
examples:
without_password:
summary: Export without password
value:
file_type: csv
password_protected: false
with_password:
summary: Export with password
value:
file_type: xlsx
password_protected: true
password: MyS3cureP@ss
required: true
responses:
'204':
description: No Content. Datastore export initiated successfully.
'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:
- Datastores.READ
tags:
- Platform_storage
components:
schemas:
updaterecord_response:
type: object
description: Response envelope returned when a datastore record is retrieved or updated.
properties:
url:
type: string
description: API endpoint URL for the record resource.
example: /api/v3/datastores/shejbwfz/records/227828000000128010
type:
type: string
description: Resource type identifier.
example: datastore_record
data:
type: object
description: The record's field values along with system-managed metadata fields.
properties:
modified_time:
type: string
description: Unix epoch timestamp (ms) when the record was last modified.
example: '1777360403455'
added_time:
type: string
description: Unix epoch timestamp (ms) when the record was first created.
example: '1777360402254'
id:
type: string
description: Unique numeric identifier of the record.
example: '227828000000128010'
additionalProperties: true
example:
url: /api/v3/datastores/shejbwfz/records/227828000000128010
type: datastore_record
data:
modified_time: '1777360403455'
empid: '1001'
isactive: false
salary: '0'
department: ''
id: '227828000000128010'
empname: John Doe Jr.
added_time: '1777360402254'
notes: Senior Engineer in Platform Team
DatastoreResponse:
type: object
description: Datastores API response envelope.
properties:
url:
type: string
example: /api/v3/datastores
type:
type: string
example: datastore
data:
type: object
additionalProperties: true
example:
url: /api/v3/datastores
type: datastore
data:
unique_name: empdir
name: Employee Directory
id: '227828000000132001'
creator:
name: NP NTC
id: '119440882'
status: enabled
fields:
- default_value: ''
masked: false
name: Notes
unique_name: notes
type: large-text
mandatory: false
id: '17202020414617773604009000'
- default_value: '0'
masked: false
name: Employee ID
unique_name: empid
type: number
mandatory: true
id: '17202020414617773604009001'
- default_value: ''
masked: false
name: Employee Name
unique_name: empname
type: limited-text
mandatory: true
id: '17202020414617773604009002'
- default_value: 'true'
masked: false
name: Active Status
unique_name: isactive
type: boolean
mandatory: false
id: '17202020414617773604009003'
type: custom
description: V3 API test datastore
unique_keys:
- - empid
scope: personal
no-response:
type: object
description: Represents an empty server response where no content is returned.
properties:
Response Code:
type: string
description: HTTP response code indicating no content is returned.
example: 204 No response
AddRecordRequest:
type: object
description: Request body schema to add a new record to the products database.
required:
- values
properties:
values:
type: object
description: Key-value pairs representing the product attributes to be added as a new record.
additionalProperties: true
example:
values:
productid: '1001'
productcategory: zylker
instock: true
productsecretcode: secretkey123
productdescription: zylker description
UpdateRecordRequest:
type: object
description: Request body schema to update an existing record in the products database.
required:
- values
properties:
values:
type: object
description: Key-value pairs representing the fields to be updated in the record.
additionalProperties: true
example:
values:
instock: false
productdescription: zylker products
Products-DatabaseResponse:
type: object
description: Response schema representing a single product record in the database.
properties:
productcateogry:
type: string
description: Category of the product.
example: zylker
id:
type: string
description: Unique identifier of the product record in the database.
example: '14756000888008001'
productid:
type: string
description: Product identifier code.
example: '1001'
instock:
type: boolean
description: Indicates whether the product is in stock.
example: true
productsecretcode:
type: string
description: Secret code assigned to the product.
example: secretkey123
productdescription:
type: string
description: Detailed description of the product.
example: zylker description
additionalProperties: true
product-database-list-records:
type: object
description: Response schema containing a list of product records from the database.
properties:
list:
type: array
description: Array of product record objects.
items:
type: object
description: A single product record object.
properties:
productcateogry:
type: string
description: Category of the product.
id:
type: string
description: Unique identifier of the product record.
productid:
type: string
description: Product identifier code.
instock:
type: boolean
description: Indicates whether the product is in stock.
productsecretcode:
type: string
description: Secret code assigned to the product.
productdescription:
type: string
description: Detailed description of the product.
example:
- productcateogry: zylker
id: '14756000000008008'
productid: '1004'
instock: true
productsecretcode: secretkey234
productdescription: zylker description
- productcateogry: zylcal
id: '14756000000008003'
productid: '1003'
instock: false
productsecretcode: secretkey123
productdescription: zylcal description
- productcateogry: zylker
id: '14756000000008004'
productid: '1002'
instock: true
productsecretcode: secretkey123
productdescription: zylker description
- productcateogry: zylker
id: '14756000000008005'
productid: '1001'
instock: true
productsecretcode: secretkey897
productdescription: zylker description
base64_regex:
type: string
description: Base64-encoded pagination or sync token used for cursor-based pagination and incremental data sync.
editplatformdatabase_v2:
type: object
description: Payload for updating datastore metadata.
properties:
unique_name:
type: string
maxLength: 20
description: |
Updated datastore unique name.
Accepts lowercase letters, numbers, and underscores only, and must start with a letter. This is used in API endpoints and should be unique across datastores.
Maximum length: 20 characters.
name:
type: string
maxLength: 20
description: |
Updated datastore display name.
Can contain letters, numbers, and spaces. This is used for display purposes in the UI and can be non-unique.
Maximum length: 20 characters.
description:
type: string
maxLength: 250
description: |
Updated datastore description.
A brief description about the datastore's purpose or contents.
Maximum length: 250 characters.
unique_keys:
type: array
maxItems: 4
description: |
Updated unique key constraints for the datastore. Replaces the existing set of constraints entirely.
- A maximum of 4 unique key constraints can be defined per datastore.
- Each constraint is an array of one or more field
unique_name values that must be collectively unique across all records.
- Fields of type encrypted-text or large-text cannot be included in a unique key constraint.
items:
type: array
description: |
An array of field unique_names that form a single unique key constraint. Each unique key constraint ensures that the combination of values in the specified fields is unique across all records in the datastore.
items:
type: string
example:
unique_name: empdir
name: Employee Directory
description: Tracks employee records and department data
unique_keys:
- - empid
- empname
createplatformdatabase_v2:
type: object
description: Payload for creating a new datastore.
required:
- unique_name
- name
- description
- fields
properties:
unique_name:
type: string
maxLength: 20
description: |
Datastore unique name.
Accepts lowercase letters, numbers, and underscores only, and must start with a letter. This is used in API endpoints and should be unique across datastores.
Maximum length: 20 characters.
name:
type: string
maxLength: 20
description: |
Datastore display name.
Can contain letters, numbers, and spaces. This is used for display purposes in the UI and can be non-unique.
Maximum length: 20 characters.
description:
type: string
maxLength: 250
description: |
Datastore description.
A brief description about the datastore's purpose or contents.
Maximum length: 250 characters.
fields:
type: array
minItems: 1
maxItems: 19
description: |
List of field definitions for the datastore schema.
Each field defines a column in the datastore with specific attributes and constraints.
A datastore can have a maximum of 20 fields including the default record ID field.
items:
type: object
required:
- unique_name
- name
- type
properties:
unique_name:
type: string
maxLength: 20
description: |
Unique name of the field.
Accepts lowercase letters, numbers, and underscores only, and must start with a letter. This is used in API endpoints to reference the field.
Maximum length: 20 characters.
name:
type: string
maxLength: 20
description: |
Display name of the field.
Can contain letters, numbers, and spaces. This is used for display purposes in the UI.
Maximum length: 20 characters.
type:
type: string
description: |
Data type of the field.
Determines the kind of data that can be stored in this field and the operations that can be performed on it.
Allowed values:
- boolean: Stores true/false values.
- number: Stores numeric values. Can be used for mathematical operations.
- limited-text: Stores short text up to 250 characters. Cannot be used for full-text search.
- encrypted-text: Stores sensitive text data in encrypted form. Cannot be included in unique key constraints and does not support masking. Maximum length: 1000 characters.
- large-text: Stores long text data up to 65,535 characters. Suitable for descriptions, comments, etc. Cannot be included in unique key constraints.
Note: The field type cannot be changed after the datastore is created
enum:
- boolean
- number
- limited-text
- encrypted-text
- large-text
mandatory:
type: boolean
description: |
Indicates whether this field is mandatory for each record. If true, a value must be provided for this field when creating or updating records.
masked:
type: boolean
description: |
Indicates whether this field's value should be masked (e.g., for sensitive information).
Note: Masking is not supported for encrypted-text fields. Encrypted fields are already stored in protected form and cannot be additionally masked.
default_value:
type: string
maxLength: 100
description: |
Default value for the field when creating new records. Must be a string representation of a value compatible with the field's data type. For example, "true" for boolean, "123" for number, etc.
Maximum length: 100 characters.
unique_keys:
type: array
maxItems: 4
description: |
Defines unique key constraints for the datastore. Each constraint is an array of field unique_name values that must be collectively unique across all records.
- A maximum of 4 unique key constraints can be defined per datastore.
- Each constraint is an array of one or more field
unique_name values.
- Fields of type encrypted-text or large-text cannot be included in a unique key constraint.
items:
type: array
description: An array of field unique_names that form a single unique key constraint.
items:
type: string
example:
unique_name: empdir
name: Employee Directory
description: V3 API test datastore
fields:
- name: Notes
unique_name: notes
type: large-text
mandatory: false
- name: Employee ID
unique_name: empid
type: number
mandatory: true
- name: Employee Name
unique_name: empname
type: limited-text
mandatory: true
- name: Active Status
unique_name: isactive
type: boolean
mandatory: false
unique_keys:
- - empid
datastores_records_add:
type: object
description: Payload for inserting or updating a single datastore record.
required:
- values
properties:
values:
type: object
description: |
Key-value pairs of field unique_name and the new value to update.
additionalProperties: true
example:
empid: '1001'
empname: John Doe
isactive: true
salary: '50000'
department: Engineering
notes: Senior Engineer in Platform Team
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.
platformstorage_records_export:
type: object
description: Configuration payload for a Datastore bulk export operation. Specifies the fields to include, filter criteria, and output format.
required:
- file_type
properties:
file_type:
type: string
description: |
Format of the exported file.
- csv: Comma-separated values format, suitable for spreadsheets and data analysis tools.
- xlsx: Microsoft Excel format, supports multiple sheets, formatting, and larger data volumes.
- pdf: Portable Document Format, ideal for sharing and printing.
enum:
- csv
- xlsx
- pdf
password_protected:
type: boolean
description: |
Indicates whether the exported file should be protected with a password. If true, the password field must be provided to specify the password to use for protecting the file.
password:
type: string
minLength: 8
maxLength: 20
description: |
Password to protect the exported file. This field is required if password_protected is true.
Must be between 8 and 20 characters in length and should include a mix of letters, numbers, and special characters for better security.
Minimum length: 8 characters
Maximum length: 20 characters
datastores_records_update:
type: object
description: Payload for bulk updating datastore records by criteria.
required:
- values
- criteria
properties:
values:
type: object
description: |
Field name to new value map. All records matching the criteria will have the specified fields updated to these new values. Fields not included in this map will remain unchanged in the matching records.
additionalProperties: true
criteria:
type: string
maxLength: 500
description: |
Expression to identify which records to update. Use field unique_names as keys. Supported comparison operators: =, ==, !=, >, >=, <, <=, like, not like, in (max 10 values), not in (max 10 values). Combine conditions with && (AND) or || (OR), and use parentheses for grouping. Max 10 clauses.
Maximum length: 500 characters.
orderbyfield_regex:
type: string
description: Field name (optionally suffixed with " asc" or " desc") used to sort Datastore records in query results.
multiplelong_regex:
type: string
description: Comma-separated list of numeric long integer IDs (e.g. record IDs or field IDs) used in bulk delete operations.
edit_platform_db_fields:
type: object
description: Payload for editing existing datastore fields.
required:
- fields
properties:
fields:
type: array
minItems: 1
maxItems: 10
description: |
- List of existing fields to edit in the datastore schema.
- Each field must be identified by its numeric ID and can have its name, mandatory status, masked status, and default value updated. The field type cannot be changed.
- Maximum of 10 fields can be edited in a single request.
items:
type: object
required:
- id
properties:
id:
type: string
description: |
Unique identifier of the field to be edited. This is assigned by the system when the field is created and cannot be changed.
unique_name:
type: string
maxLength: 20
description: |
Unique name of the field.
Accepts lowercase letters, numbers, and underscores only, and must start with a letter. This is used in API endpoints to reference the field.
Maximum length: 20 characters.
name:
type: string
maxLength: 20
description: |
Display name of the field.
Can contain letters, numbers, and spaces. This is used for display purposes in the UI.
Maximum length: 20 characters.
mandatory:
type: boolean
description: |
Indicates whether this field is mandatory for each record. If true, a value must be provided for this field when creating or updating records.
masked:
type: boolean
description: |
Indicates whether this field's value should be masked (e.g., for sensitive information).
Note: Masking is not supported for encrypted-text fields. Encrypted fields are already stored in protected form and cannot be additionally masked.
default_value:
type: string
maxLength: 100
description: |
Default value for the field when creating new records. Must be a string representation of a value compatible with the field's data type. For example, "true" for boolean, "123" for number, etc.
Maximum length: 100 characters.
example:
fields:
- id: '17202020414617773604009000'
name: Notes
unique_name: notes
mandatory: false
default_value: ''
- id: '17202020414617773604009001'
name: Employee ID
unique_name: empid
mandatory: true
default_value: '0'
add_platform_db_fields:
type: object
description: Payload for adding new fields to a datastore schema.
required:
- fields
properties:
fields:
type: array
minItems: 1
maxItems: 10
description: |
- List of new fields to add to the datastore.
- Each field must have a unique_name, name, and type. The new fields will be appended to the existing schema and can be used in subsequent record operations.
- Maximum of 10 fields can be added in a single request.
items:
type: object
required:
- unique_name
- name
- type
properties:
unique_name:
type: string
maxLength: 20
description: |
Unique name of the field.
Accepts lowercase letters, numbers, and underscores only, and must start with a letter. This is used in API endpoints to reference the field.
Maximum length: 20 characters.
name:
type: string
maxLength: 20
description: |
Display name of the field.
Can contain letters, numbers, and spaces. This is used for display purposes in the UI.
Maximum length: 20 characters.
type:
type: string
description: |
Data type of the field.
Determines the kind of data that can be stored in this field and the operations that can be performed on it.
Allowed values:
- boolean: Stores true/false values.
- number: Stores numeric values. Can be used for mathematical operations.
- limited-text: Stores short text up to 250 characters. Cannot be used for full-text search.
- encrypted-text: Stores sensitive text data in encrypted form. Cannot be included in unique key constraints and does not support masking. Maximum length: 1000 characters.
- large-text: Stores long text data up to 65,535 characters. Suitable for descriptions, comments, etc. Cannot be included in unique key constraints.
Note: The field type cannot be changed after the datastore is created
enum:
- boolean
- number
- limited-text
- encrypted-text
- large-text
mandatory:
type: boolean
description: |
Indicates whether this field is mandatory for each record. If true, a value must be provided for this field when creating or updating records.
masked:
type: boolean
description: |
Indicates whether this field's value should be masked (e.g., for sensitive information).
Note: Masking is not supported for encrypted-text fields. Encrypted fields are already stored in protected form and cannot be additionally masked.
default_value:
type: string
maxLength: 100
description: |
Default value for the field when creating new records. Must be a string representation of a value compatible with the field's data type. For example, "true" for boolean, "123" for number, etc.
Maximum length: 100 characters.
example:
fields:
- unique_name: join_date
name: Join Date
type: limited-text
mandatory: false
default_value: ''
- unique_name: location
name: Location
type: limited-text
mandatory: false
default_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.
listrecords_response:
type: object
description: Response schema for listing records from a datastore, including pagination information and a list of records.
properties:
url:
type: string
description: API endpoint URL for the records resource.
type:
type: string
description: Resource type identifier.
sync_token:
type: string
description: Opaque token encoding the current sync position; pass as next_token in subsequent requests for incremental sync.
list:
type: array
description: Array of record objects returned from the datastore.
items:
type: object
additionalProperties: true
example:
url: /api/v3/datastores/empdir/records
type: datastore_record
sync_token: MTB8MTc3NzM2MDQwMzQ1NXw=
list:
- productcateogry: zylker
id: '14756000000008008'
productid: '1004'
instock: true
productsecretcode: secretkey234
productdescription: zylker description
- productcateogry: zylcal
id: '14756000000008003'
productid: '1003'
instock: false
productsecretcode: secretkey123
productdescription: zylcal description
- productcateogry: zylker
id: '14756000000008004'
productid: '1002'
instock: true
productsecretcode: secretkey123
productdescription: zylker description
- productcateogry: zylker
id: '14756000000008005'
productid: '1001'
instock: true
productsecretcode: secretkey897
productdescription: zylker description
securitySchemes:
Cliq_Auth:
type: oauth2
x-authorization-example: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f
flows:
implicit:
authorizationUrl: https://accounts.zoho.com/oauth/v2/auth
scopes:
ZohoCliq.Datastores.ALL: Create, Read, Update and Delete Datastores
ZohoCliq.Datastores.CREATE: Create new Datastores with schema definitions.
ZohoCliq.Datastores.READ: Read Datastore metadata, field schemas, and execution logs.
ZohoCliq.Datastores.UPDATE: Update Datastore metadata and field schema definitions.
ZohoCliq.Datastores.DELETE: Permanently delete Datastores and all their records.
ZohoCliq.DatastoreRecords.CREATE: Insert new records into Datastores.
ZohoCliq.DatastoreRecords.READ: Read and query records from Datastores.
ZohoCliq.DatastoreRecords.UPDATE: Update existing records in Datastores.
ZohoCliq.DatastoreRecords.DELETE: Delete records from Datastores.