Zone Operations / Tables
Tables
Cell, row, and column operations on table objects, and typed database_table records and schema.
GET
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphtext
Get paragraph text for a table cell by paragraph index range
Get paragraph text for a table cell by paragraph index range
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.READPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Query parameters table_query
| Name | Type | Description |
|---|---|---|
| table_queryREQUIRED | string (JSON) |
`table_query` — JSON-encoded GetCellParagraphText request: table, cell, payload.text.range. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
"payload": {
"text": {
"range": {
"end_paragraph_index": "42",
"start_paragraph_index": "42"
}
}
}
}
URL-encoded, as sent
%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22end_paragraph_index%22%3A%2242%22%2C%22start_paragraph_index%22%3A%2242%22%7D%7D%7D%7D |
Request
GET
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphtext?table_query=%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22end_paragraph_index%22%3A%2242%22%2C%22start_paragraph_index%22%3A%2242%22%7D%7D%7D%7D" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphtext?table_query=%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22end_paragraph_index%22%3A%2242%22%2C%22start_paragraph_index%22%3A%2242%22%7D%7D%7D%7D"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphtext?table_query=%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22end_paragraph_index%22%3A%2242%22%2C%22start_paragraph_index%22%3A%2242%22%7D%7D%7D%7D'),
method: 'GET',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphtext?table_query=%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22end_paragraph_index%22%3A%2242%22%2C%22start_paragraph_index%22%3A%2242%22%7D%7D%7D%7D"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
HttpRequest request = requestBuilder
.GET(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphtext?table_query=%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22end_paragraph_index%22%3A%2242%22%2C%22start_paragraph_index%22%3A%2242%22%7D%7D%7D%7D";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphtext?table_query=%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22end_paragraph_index%22%3A%2242%22%2C%22start_paragraph_index%22%3A%2242%22%7D%7D%7D%7D"
type: GET
headers: headers
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphtext"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphtext",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphtext",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphtext",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphtext",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphtext",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
GET
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size
Report a table object's current dimensions as a row count and a column count. Call it first to bound row and column indexes before reading, editing, inserting or deleting.
Report a table object's current dimensions as a row count and a column count. Call it first to bound row and column indexes before reading, editing, inserting or deleting.
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.READPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Query parameters table_query
| Name | Type | Description |
|---|---|---|
| table_queryREQUIRED | string (JSON) |
`table_query` — JSON-encoded GetTableSize request: table. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
"table": {
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"object_id": "60712000000123456",
"frame_id": "60712000000123456"
}
}
URL-encoded, as sent
%7B%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D |
Request
GET
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size?table_query=%7B%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size?table_query=%7B%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size?table_query=%7B%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D'),
method: 'GET',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size?table_query=%7B%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
HttpRequest request = requestBuilder
.GET(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size?table_query=%7B%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size?table_query=%7B%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"
type: GET
headers: headers
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
GET
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount
Report how many paragraphs one table cell's text contains. Use to bound a paragraph index before getTableCellParagraphText.
Report how many paragraphs one table cell's text contains. Use to bound a paragraph index before getTableCellParagraphText.
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.READPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Query parameters table_query
| Name | Type | Description |
|---|---|---|
| table_queryREQUIRED | string (JSON) |
`table_query` — JSON-encoded GetCellParagraphCount request: table, cell. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
"cell": {
"row_index": "42",
"column_index": "42"
},
"table": {
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"object_id": "60712000000123456",
"frame_id": "60712000000123456"
}
}
URL-encoded, as sent
%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D |
Request
GET
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount?table_query=%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount?table_query=%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount?table_query=%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D'),
method: 'GET',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount?table_query=%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
HttpRequest request = requestBuilder
.GET(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount?table_query=%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount?table_query=%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"
type: GET
headers: headers
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
GET
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength
Report the character count of one table cell's text without returning the text itself. Use to bound a character range before reading or mutating that cell.
Report the character count of one table cell's text without returning the text itself. Use to bound a character range before reading or mutating that cell.
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.READPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Query parameters table_query
| Name | Type | Description |
|---|---|---|
| table_queryREQUIRED | string (JSON) |
`table_query` — JSON-encoded GetCellTextLength request: table, cell. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
"cell": {
"row_index": "42",
"column_index": "42"
},
"table": {
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"object_id": "60712000000123456",
"frame_id": "60712000000123456"
}
}
URL-encoded, as sent
%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D |
Request
GET
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength?table_query=%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength?table_query=%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength?table_query=%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D'),
method: 'GET',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength?table_query=%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
HttpRequest request = requestBuilder
.GET(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength?table_query=%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength?table_query=%7B%22cell%22%3A%7B%22row_index%22%3A%2242%22%2C%22column_index%22%3A%2242%22%7D%2C%22table%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"
type: GET
headers: headers
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
GET
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text
Read the plain text held in one table cell, addressed by row and column index, either whole or over a character range. Returns text with formatting flattened away.
Read the plain text held in one table cell, addressed by row and column index, either whole or over a character range. Returns text with formatting flattened away.
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.READPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Query parameters table_query
| Name | Type | Description |
|---|---|---|
| table_queryREQUIRED | string (JSON) |
`table_query` — JSON-encoded GetCellText request: table, cell, optional payload.text (range or all_text). Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
"payload": {
"text": {
"range": {
"start_index": "42",
"end_index": "42"
}
}
}
}
URL-encoded, as sent
%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22start_index%22%3A%2242%22%2C%22end_index%22%3A%2242%22%7D%7D%7D%7D |
Request
GET
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text?table_query=%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22start_index%22%3A%2242%22%2C%22end_index%22%3A%2242%22%7D%7D%7D%7D" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text?table_query=%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22start_index%22%3A%2242%22%2C%22end_index%22%3A%2242%22%7D%7D%7D%7D"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text?table_query=%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22start_index%22%3A%2242%22%2C%22end_index%22%3A%2242%22%7D%7D%7D%7D'),
method: 'GET',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text?table_query=%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22start_index%22%3A%2242%22%2C%22end_index%22%3A%2242%22%7D%7D%7D%7D"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
HttpRequest request = requestBuilder
.GET(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text?table_query=%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22start_index%22%3A%2242%22%2C%22end_index%22%3A%2242%22%7D%7D%7D%7D";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text?table_query=%7B%22payload%22%3A%7B%22text%22%3A%7B%22range%22%3A%7B%22start_index%22%3A%2242%22%2C%22end_index%22%3A%2242%22%7D%7D%7D%7D"
type: GET
headers: headers
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge
Merge a rectangular block of table cells into a single cell, given start and end row and column indexes. Reverse it with unmergeTableCells.
Merge a rectangular block of table cells into a single cell, given start and end row and column indexes. Reverse it with unmergeTableCells.
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| payload REQUIRED | object | MergeCells payload | |
| range REQUIRED | object | Rectangular cell range to merge | |
| end_column_index REQUIRED | integer | Exclusive end column index | |
| start_column_index REQUIRED | integer | Inclusive start column index | |
| start_row_index REQUIRED | integer | Inclusive start row index | |
| end_row_index REQUIRED | integer | Exclusive end row index | |
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"range": {
"end_column_index": 1,
"start_column_index": 1,
"start_row_index": 1,
"end_row_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"payload": {
"range": {
"end_column_index": 1,
"start_column_index": 1,
"start_row_index": 1,
"end_row_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"payload": {
"range": {
"end_column_index": 1,
"start_column_index": 1,
"start_row_index": 1,
"end_row_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"payload\":{\"range\":{\"end_column_index\":1,\"start_column_index\":1,\"start_row_index\":1,\"end_row_index\":1}},\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"payload": {"range": {"end_column_index": 1, "start_column_index": 1, "start_row_index": 1, "end_row_index": 1}}, "table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"payload": {
"range": {
"end_column_index": 1,
"start_column_index": 1,
"start_row_index": 1,
"end_row_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert
Insert rows before or after an anchor row index
Insert rows before or after an anchor row index
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| payload REQUIRED | object | InsertRows payload | |
| anchor_index REQUIRED | integer | Anchor row index in [0, row_count - 1] | |
| count | integer | Number of rows to insert (> 0) | |
| position | string |
Insert position relative to anchor_index (max length 40)
INSERT_POSITION_UNSPECIFIEDBEFOREAFTER
|
|
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"anchor_index": 1,
"count": 1,
"position": "INSERT_POSITION_UNSPECIFIED"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"payload": {
"anchor_index": 1,
"count": 1,
"position": "INSERT_POSITION_UNSPECIFIED"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"payload": {
"anchor_index": 1,
"count": 1,
"position": "INSERT_POSITION_UNSPECIFIED"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"payload\":{\"anchor_index\":1,\"count\":1,\"position\":\"INSERT_POSITION_UNSPECIFIED\"},\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"payload": {"anchor_index": 1, "count": 1, "position": "INSERT_POSITION_UNSPECIFIED"}, "table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"payload": {
"anchor_index": 1,
"count": 1,
"position": "INSERT_POSITION_UNSPECIFIED"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete
Remove a contiguous band of table rows given a half-open row index range (start inclusive, end exclusive). Rows below shift up, so re-read the table size before the next index-based call.
destructive
Remove a contiguous band of table rows given a half-open row index range (start inclusive, end exclusive). Rows below shift up, so re-read the table size before the next index-based call.
OperationDELETE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| payload REQUIRED | object | DeleteRows payload | |
| range REQUIRED | object | Row range to delete | |
| start_index REQUIRED | integer | Inclusive start table index (row or column) | |
| end_index REQUIRED | integer | Exclusive end table index | |
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"range": {
"start_index": 1,
"end_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"payload": {
"range": {
"start_index": 1,
"end_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"payload": {
"range": {
"start_index": 1,
"end_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"payload\":{\"range\":{\"start_index\":1,\"end_index\":1}},\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"payload": {"range": {"start_index": 1, "end_index": 1}}, "table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"payload": {
"range": {
"start_index": 1,
"end_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext
Apply text mutation (range/cursor/all_text) to a table cell
Apply text mutation (range/cursor/all_text) to a table cell
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| payload REQUIRED | object | EditCellText payload | |
| text REQUIRED | object | Text mutation payload (exactly one of range, cursor, or all_text) | |
| cursor | object | Cursor-scoped insert/delete mutation one of one of these — choosing this clears the others | |
| cursor_index REQUIRED | integer | Cursor index on flattened text | |
| text | string | Text to insert (required when operation=CURSOR_TEXT_OPERATION_INSERT_TEXT) (max length 500000) | |
| operation REQUIRED | string |
Cursor mutation operation (max length 50)
CURSOR_TEXT_OPERATION_UNSPECIFIEDCURSOR_TEXT_OPERATION_INSERT_TEXTCURSOR_TEXT_OPERATION_INSERT_NEWLINECURSOR_TEXT_OPERATION_DELETE_NEWLINE
|
|
| all_text | object | Full-text replace/delete mutation one of one of these — choosing this clears the others | |
| replacement_text | string | Replacement text (required when operation=ALL_TEXT_OPERATION_REPLACE) (max length 500000) | |
| operation REQUIRED | string |
Full-text mutation operation (max length 50)
ALL_TEXT_OPERATION_UNSPECIFIEDALL_TEXT_OPERATION_REPLACEALL_TEXT_OPERATION_DELETE
|
|
| range | object | Range-scoped replace/delete mutation one of one of these — choosing this clears the others | |
| replacement_text | string | Replacement text (required when operation=RANGE_TEXT_OPERATION_REPLACE) (max length 500000) | |
| range REQUIRED | object | Target range in flattened text | |
| start_index REQUIRED | integer | Inclusive start index on flattened text (>= 0) | |
| end_index REQUIRED | integer | Exclusive end index on flattened text (> start_index) | |
| operation REQUIRED | string |
Range mutation operation (max length 50)
RANGE_TEXT_OPERATION_UNSPECIFIEDRANGE_TEXT_OPERATION_REPLACERANGE_TEXT_OPERATION_DELETE
|
|
| cell REQUIRED | object | Target cell reference | |
| row_index | integer | Zero-based row index | |
| column_index | integer | Zero-based column index | |
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"text": {
"cursor": {
"cursor_index": 1,
"operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
"text": "Hello Vani"
}
}
},
"cell": {
"row_index": 1,
"column_index": 1
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"payload": {
"text": {
"cursor": {
"cursor_index": 1,
"operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
"text": "Hello Vani"
}
}
},
"cell": {
"row_index": 1,
"column_index": 1
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"payload": {
"text": {
"cursor": {
"cursor_index": 1,
"operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
"text": "Hello Vani"
}
}
},
"cell": {
"row_index": 1,
"column_index": 1
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"payload\":{\"text\":{\"cursor\":{\"cursor_index\":1,\"operation\":\"CURSOR_TEXT_OPERATION_UNSPECIFIED\",\"text\":\"Hello Vani\"}}},\"cell\":{\"row_index\":1,\"column_index\":1},\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"payload": {"text": {"cursor": {"cursor_index": 1, "operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED", "text": "Hello Vani"}}}, "cell": {"row_index": 1, "column_index": 1}, "table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"payload": {
"text": {
"cursor": {
"cursor_index": 1,
"operation": "CURSOR_TEXT_OPERATION_UNSPECIFIED",
"text": "Hello Vani"
}
}
},
"cell": {
"row_index": 1,
"column_index": 1
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert
Insert columns before or after an anchor column index
Insert columns before or after an anchor column index
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| payload REQUIRED | object | InsertColumns payload | |
| anchor_index REQUIRED | integer | Anchor column index in [0, column_count - 1] | |
| count | integer | Number of columns to insert (> 0) | |
| position | string |
Insert position relative to anchor_index (max length 40)
INSERT_POSITION_UNSPECIFIEDBEFOREAFTER
|
|
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"anchor_index": 1,
"count": 1,
"position": "INSERT_POSITION_UNSPECIFIED"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"payload": {
"anchor_index": 1,
"count": 1,
"position": "INSERT_POSITION_UNSPECIFIED"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"payload": {
"anchor_index": 1,
"count": 1,
"position": "INSERT_POSITION_UNSPECIFIED"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"payload\":{\"anchor_index\":1,\"count\":1,\"position\":\"INSERT_POSITION_UNSPECIFIED\"},\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"payload": {"anchor_index": 1, "count": 1, "position": "INSERT_POSITION_UNSPECIFIED"}, "table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"payload": {
"anchor_index": 1,
"count": 1,
"position": "INSERT_POSITION_UNSPECIFIED"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge
Unmerge a merged region of table cells
Unmerge a merged region of table cells
Pass the table reference and payload.cell ({row_index, column_index}) identifying any cell inside the merged area. The payload takes a single cell reference, not a range.
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| payload REQUIRED | object | UnmergeCell payload. Must contain 'cell' ({row_index, column_index}) — do NOT use 'range'. Example: {"cell": {"row_index": 0, "column_index": 1}} | |
| cell REQUIRED | object | Any cell within the merged region to unmerge, specified as {row_index, column_index}. This must be a 'cell' object — do NOT use a 'range' object here. | |
| row_index | integer | Zero-based row index | |
| column_index | integer | Zero-based column index | |
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"cell": {
"row_index": 1,
"column_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"payload": {
"cell": {
"row_index": 1,
"column_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"payload": {
"cell": {
"row_index": 1,
"column_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"payload\":{\"cell\":{\"row_index\":1,\"column_index\":1}},\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"payload": {"cell": {"row_index": 1, "column_index": 1}}, "table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"payload": {
"cell": {
"row_index": 1,
"column_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete
Delete columns in a specified column index range
destructive
Delete columns in a specified column index range
OperationDELETE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| payload REQUIRED | object | DeleteColumns payload | |
| range REQUIRED | object | Column range to delete | |
| start_index REQUIRED | integer | Inclusive start table index (row or column) | |
| end_index REQUIRED | integer | Exclusive end table index | |
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"range": {
"start_index": 1,
"end_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"payload": {
"range": {
"start_index": 1,
"end_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"payload": {
"range": {
"start_index": 1,
"end_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"payload\":{\"range\":{\"start_index\":1,\"end_index\":1}},\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"payload": {"range": {"start_index": 1, "end_index": 1}}, "table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"payload": {
"range": {
"start_index": 1,
"end_index": 1
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
PUT
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text
Overwrite one table cell's entire text with a supplied string. Whole-cell replacement - use editTableCellText for a range, cursor or otherwise partial mutation.
Overwrite one table cell's entire text with a supplied string. Whole-cell replacement - use editTableCellText for a range, cursor or otherwise partial mutation.
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.UPDATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| payload REQUIRED | object | SetCellText payload | |
| text REQUIRED | string | Full replacement text for the cell (max length 500000) | |
| cell REQUIRED | object | Target cell reference | |
| row_index | integer | Zero-based row index | |
| column_index | integer | Zero-based column index | |
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
PUT
curl -X PUT "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"text": "Hello Vani"
},
"cell": {
"row_index": 1,
"column_index": 1
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"payload": {
"text": "Hello Vani"
},
"cell": {
"row_index": 1,
"column_index": 1
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
response = requests.put(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text'),
method: 'PUT',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"payload": {
"text": "Hello Vani"
},
"cell": {
"row_index": 1,
"column_index": 1
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"payload\":{\"text\":\"Hello Vani\"},\"cell\":{\"row_index\":1,\"column_index\":1},\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
HttpRequest request = requestBuilder
.PUT(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"payload": {"text": "Hello Vani"}, "cell": {"row_index": 1, "column_index": 1}, "table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text"
type: PUT
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"payload": {
"text": "Hello Vani"
},
"cell": {
"row_index": 1,
"column_index": 1
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "string",
"data": {},
"message": "string",
"request_uri": "string"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
GET
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/type/feasibility
Dry-run a column type change: feasibility and convertible/incompatible counts
Dry-run a column type change: feasibility and convertible/incompatible counts
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.READPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Query parameters object_id · column_id · target_type
| Name | Type | Description |
|---|---|---|
| object_idREQUIRED | string | Database table object id |
| column_idREQUIRED | string | Column id to test |
| target_typeREQUIRED | string | Target ColumnType enum name (e.g. NUMBER) |
Request
GET
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/type/feasibility?object_id=60712000000123456&column_id=60712000000123456&target_type=string" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/type/feasibility?object_id=60712000000123456&column_id=60712000000123456&target_type=string"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/type/feasibility?object_id=60712000000123456&column_id=60712000000123456&target_type=string'),
method: 'GET',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/type/feasibility?object_id=60712000000123456&column_id=60712000000123456&target_type=string"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
HttpRequest request = requestBuilder
.GET(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/type/feasibility?object_id=60712000000123456&column_id=60712000000123456&target_type=string";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/type/feasibility?object_id=60712000000123456&column_id=60712000000123456&target_type=string"
type: GET
headers: headers
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}
Response
Successful response
{
"status": "string",
"data": {},
"message": "string",
"request_uri": "string"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/type/feasibility",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/type/feasibility",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/type/feasibility",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/type/feasibility",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/type/feasibility",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
GET
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/schema
Read database_table column schema (id, type, name, option lists) and row count
Read database_table column schema (id, type, name, option lists) and row count
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.READPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Query parameters object_id
| Name | Type | Description |
|---|---|---|
| object_idREQUIRED | string | Database table object id (mint-time UUID) |
Request
GET
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/schema?object_id=60712000000123456" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/schema?object_id=60712000000123456"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/schema?object_id=60712000000123456'),
method: 'GET',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/schema?object_id=60712000000123456"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
HttpRequest request = requestBuilder
.GET(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/schema?object_id=60712000000123456";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/schema?object_id=60712000000123456"
type: GET
headers: headers
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}
Response
Successful response
{
"status": "string",
"data": {},
"message": "string",
"request_uri": "string"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/schema",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/schema",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/schema",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/schema",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/schema",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns
Add a column (appended); applies its default to existing rows
Add a column (appended); applies its default to existing rows
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| column REQUIRED | object | Column spec (name, type, options, default, constraints) | |
| lookup | object | LOOKUP configuration | |
| source_column_id | string | Column read from the related table (max length 200) | |
| relation_column_id | string | RELATION column to follow (max length 200) | |
| unique | boolean | Values must be unique across rows | |
| name | string | Column header (max length 500) | |
| options | array of object | SELECT / MULTI_SELECT options (min 2, max 2) | |
| color | object | Option colour | |
| hsb | object | HSB color value one of one of these — choosing this clears the others | |
| saturation | number | Saturation 0-1 | |
| brightness | number | Brightness 0-1 | |
| hue | number | Hue in degrees | |
| hex | object | Hex color value one of one of these — choosing this clears the others | |
| value | string | Hex color literal such as #8B4513 (max length 50) | |
| rgb | object | RGB color value one of one of these — choosing this clears the others | |
| red | integer | Red channel 0-255 | |
| green | integer | Green channel 0-255 | |
| blue | integer | Blue channel 0-255 | |
| id | string | Option id — equal to the option's current label; send it to rename (max length 500) | |
| value | string | Option label (max length 500) | |
| default_value | object | Default applied when a cell is absent | |
| value | object | The typed cell value | |
| date | string | DATE value (max length 100) | |
| select | string | SELECT: chosen ColumnOption id (max length 500) | |
| rating | integer | RATING value | |
| toggle | boolean | TOGGLE value | |
| url | string | URL value (max length 2000) | |
| relation | object | RELATION: linked row ids | |
| row_ids | array of string | Linked row ids in the related table (min 2, max 2) | |
| number | number | NUMBER value | |
| multi_select | object | MULTI_SELECT: chosen option ids | |
| option_ids | array of string | Selected ColumnOption ids (min 2, max 2) | |
| phone | string | PHONE value (max length 100) | |
| person | string | PERSON value (max length 500) | |
| checkbox | boolean | CHECKBOX value | |
| text | string | TEXT value (max length 50000) | |
| category | string | CATEGORY: chosen ColumnOption id (max length 500) | |
| string | EMAIL value (max length 500) | ||
| type | string |
Column type (max length 40)
TEXTNUMBERCHECKBOXTOGGLESELECTMULTI_SELECTCATEGORYDATEPERSONPHONEEMAILURLRATINGRELATIONLOOKUPROLLUP
|
|
| required | boolean | Value must be present | |
| relation | object | RELATION configuration | |
| reciprocal_column_id | string | Paired RELATION column on the related table (two-way) (max length 200) | |
| allow_multiple | boolean | Single vs multiple linked rows | |
| related_table_id | string | Table this column links rows to (max length 200) | |
| rollup | object | ROLLUP configuration | |
| source_column_id | string | Column aggregated on the related table (max length 200) | |
| relation_column_id | string | RELATION column to follow (max length 200) | |
| aggregate | object | Summary function | |
| date | string |
DATE columns (max length 40)
EARLIESTLATESTDATE_RANGE
|
|
| number | string |
NUMBER / RATING columns (max length 40)
SUMAVGMINMAXMEDIANRANGE
|
|
| boolean | string |
CHECKBOX / TOGGLE columns (max length 40)
CHECKEDUNCHECKEDPERCENT_CHECKEDPERCENT_UNCHECKED
|
|
| common | string |
Applies to any column type (max length 40)
COUNTCOUNT_EMPTYCOUNT_NOT_EMPTYCOUNT_UNIQUEPERCENT_EMPTYPERCENT_NOT_EMPTY
|
|
| text | string |
Text and string-like columns (max length 40)
CONCATCONCAT_UNIQUE
|
|
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"column": {
"lookup": {
"source_column_id": "60712000000123456",
"relation_column_id": "60712000000123456"
},
"unique": true,
"name": "Sample name",
"options": [
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
},
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
}
],
"default_value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
},
"type": "TEXT",
"required": true,
"relation": {
"reciprocal_column_id": "60712000000123456",
"allow_multiple": true,
"related_table_id": "60712000000123456"
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"column": {
"lookup": {
"source_column_id": "60712000000123456",
"relation_column_id": "60712000000123456"
},
"unique": true,
"name": "Sample name",
"options": [
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
},
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
}
],
"default_value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
},
"type": "TEXT",
"required": true,
"relation": {
"reciprocal_column_id": "60712000000123456",
"allow_multiple": true,
"related_table_id": "60712000000123456"
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"column": {
"lookup": {
"source_column_id": "60712000000123456",
"relation_column_id": "60712000000123456"
},
"unique": true,
"name": "Sample name",
"options": [
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
},
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
}
],
"default_value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
},
"type": "TEXT",
"required": true,
"relation": {
"reciprocal_column_id": "60712000000123456",
"allow_multiple": true,
"related_table_id": "60712000000123456"
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"column\":{\"lookup\":{\"source_column_id\":\"60712000000123456\",\"relation_column_id\":\"60712000000123456\"},\"unique\":true,\"name\":\"Sample name\",\"options\":[{\"color\":{\"hsb\":{\"saturation\":1.5,\"brightness\":1.5,\"hue\":1.5}},\"id\":\"60712000000123456\",\"value\":\"string\"},{\"color\":{\"hsb\":{\"saturation\":1.5,\"brightness\":1.5,\"hue\":1.5}},\"id\":\"60712000000123456\",\"value\":\"string\"}],\"default_value\":{\"value\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[\"string\",\"string\"]},\"number\":1.5,\"multi_select\":{\"option_ids\":[\"string\",\"string\"]}}},\"type\":\"TEXT\",\"required\":true,\"relation\":{\"reciprocal_column_id\":\"60712000000123456\",\"allow_multiple\":true,\"related_table_id\":\"60712000000123456\"}},\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"column": {"lookup": {"source_column_id": "60712000000123456", "relation_column_id": "60712000000123456"}, "unique": true, "name": "Sample name", "options": {{"color": {"hsb": {"saturation": 1.5, "brightness": 1.5, "hue": 1.5}}, "id": "60712000000123456", "value": "string"}, {"color": {"hsb": {"saturation": 1.5, "brightness": 1.5, "hue": 1.5}}, "id": "60712000000123456", "value": "string"}}, "default_value": {"value": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {"string", "string"}}, "number": 1.5, "multi_select": {"option_ids": {"string", "string"}}}}, "type": "TEXT", "required": true, "relation": {"reciprocal_column_id": "60712000000123456", "allow_multiple": true, "related_table_id": "60712000000123456"}}, "table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"column": {
"lookup": {
"source_column_id": "60712000000123456",
"relation_column_id": "60712000000123456"
},
"unique": true,
"name": "Sample name",
"options": [
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
},
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
}
],
"default_value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
},
"type": "TEXT",
"required": true,
"relation": {
"reciprocal_column_id": "60712000000123456",
"allow_multiple": true,
"related_table_id": "60712000000123456"
}
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "string",
"data": {},
"message": "string",
"request_uri": "string"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/delete
Delete all records matching the (non-empty) filters
destructive
Delete all records matching the (non-empty) filters
OperationDELETE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| filter REQUIRED | object | Non-empty filter selecting rows to delete | |
| mode | string |
AND (default) / OR (max length 5)
ANDOR
|
|
| conditions | array of object | Conditions combined by mode (min 2, max 2) | |
| text_match | object | Substring match | |
| op | string |
CONTAINS / STARTS_WITH / ENDS_WITH (max length 20)
CONTAINSSTARTS_WITHENDS_WITH
|
|
| case_sensitive | boolean | Default false (case-insensitive) | |
| text | string | Search text (max length 5000) | |
| comparison | object | Scalar comparison | |
| op | string |
EQ / NEQ / GT / GTE / LT / LTE (max length 10)
EQNEQGTGTELTLTE
|
|
| operand | object | Right-hand side | |
| column | object | Another column in this table nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| value | object | Literal comparand nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| emptiness | object | Empty / not-empty | |
| op | string |
IS_EMPTY / IS_NOT_EMPTY (max length 20)
IS_EMPTYIS_NOT_EMPTY
|
|
| column REQUIRED | object | Column under test | |
| column_id REQUIRED | string | Column id (max length 200) | |
| membership | object | Multi-select / relation contains | |
| mode | string |
HAS_ANY / HAS_ALL / HAS_NONE (max length 20)
HAS_ANYHAS_ALLHAS_NONE
|
|
| values | array of object | Option ids or linked row ids (min 2, max 2) | |
| date | string | DATE value (max length 100) | |
| select | string | SELECT: chosen ColumnOption id (max length 500) | |
| rating | integer | RATING value | |
| toggle | boolean | TOGGLE value | |
| url | string | URL value (max length 2000) | |
| relation | object | RELATION: linked row ids nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| number | number | NUMBER value | |
| multi_select | object | MULTI_SELECT: chosen option ids nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| phone | string | PHONE value (max length 100) | |
| person | string | PERSON value (max length 500) | |
| checkbox | boolean | CHECKBOX value | |
| text | string | TEXT value (max length 50000) | |
| category | string | CATEGORY: chosen ColumnOption id (max length 500) | |
| string | EMAIL value (max length 500) | ||
| between | object | Inclusive range | |
| high | object | Inclusive upper bound | |
| date | string | DATE value (max length 100) | |
| select | string | SELECT: chosen ColumnOption id (max length 500) | |
| rating | integer | RATING value | |
| toggle | boolean | TOGGLE value | |
| url | string | URL value (max length 2000) | |
| relation | object | RELATION: linked row ids nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| number | number | NUMBER value | |
| multi_select | object | MULTI_SELECT: chosen option ids nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| phone | string | PHONE value (max length 100) | |
| person | string | PERSON value (max length 500) | |
| checkbox | boolean | CHECKBOX value | |
| text | string | TEXT value (max length 50000) | |
| category | string | CATEGORY: chosen ColumnOption id (max length 500) | |
| string | EMAIL value (max length 500) | ||
| low | object | Inclusive lower bound | |
| date | string | DATE value (max length 100) | |
| select | string | SELECT: chosen ColumnOption id (max length 500) | |
| rating | integer | RATING value | |
| toggle | boolean | TOGGLE value | |
| url | string | URL value (max length 2000) | |
| relation | object | RELATION: linked row ids nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| number | number | NUMBER value | |
| multi_select | object | MULTI_SELECT: chosen option ids nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| phone | string | PHONE value (max length 100) | |
| person | string | PERSON value (max length 500) | |
| checkbox | boolean | CHECKBOX value | |
| text | string | TEXT value (max length 50000) | |
| category | string | CATEGORY: chosen ColumnOption id (max length 500) | |
| string | EMAIL value (max length 500) | ||
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/delete" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filter": {
"mode": "AND",
"conditions": [
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "60712000000123456"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
},
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "60712000000123456"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
]
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/delete"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"filter": {
"mode": "AND",
"conditions": [
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "60712000000123456"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
},
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "60712000000123456"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
]
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/delete'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"filter": {
"mode": "AND",
"conditions": [
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "60712000000123456"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
},
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "60712000000123456"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
]
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/delete"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"filter\":{\"mode\":\"AND\",\"conditions\":[{\"column\":{\"column_id\":\"60712000000123456\"},\"text_match\":{\"op\":\"CONTAINS\",\"case_sensitive\":true,\"text\":\"Hello Vani\"},\"comparison\":{\"op\":\"EQ\",\"operand\":{\"column\":{\"column_id\":\"60712000000123456\"},\"value\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[]},\"number\":1.5,\"multi_select\":{\"option_ids\":[]}}}},\"emptiness\":{\"op\":\"IS_EMPTY\"},\"membership\":{\"mode\":\"HAS_ANY\",\"values\":[{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[]},\"number\":1.5,\"multi_select\":{\"option_ids\":[]}},{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[]},\"number\":1.5,\"multi_select\":{\"option_ids\":[]}}]},\"between\":{\"high\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[\"string\",\"string\"]},\"number\":1.5,\"multi_select\":{\"option_ids\":[\"string\",\"string\"]}},\"low\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[\"string\",\"string\"]},\"number\":1.5,\"multi_select\":{\"option_ids\":[\"string\",\"string\"]}}}},{\"column\":{\"column_id\":\"60712000000123456\"},\"text_match\":{\"op\":\"CONTAINS\",\"case_sensitive\":true,\"text\":\"Hello Vani\"},\"comparison\":{\"op\":\"EQ\",\"operand\":{\"column\":{\"column_id\":\"60712000000123456\"},\"value\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[]},\"number\":1.5,\"multi_select\":{\"option_ids\":[]}}}},\"emptiness\":{\"op\":\"IS_EMPTY\"},\"membership\":{\"mode\":\"HAS_ANY\",\"values\":[{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[]},\"number\":1.5,\"multi_select\":{\"option_ids\":[]}},{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[]},\"number\":1.5,\"multi_select\":{\"option_ids\":[]}}]},\"between\":{\"high\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[\"string\",\"string\"]},\"number\":1.5,\"multi_select\":{\"option_ids\":[\"string\",\"string\"]}},\"low\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[\"string\",\"string\"]},\"number\":1.5,\"multi_select\":{\"option_ids\":[\"string\",\"string\"]}}}}]},\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/delete";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"filter": {"mode": "AND", "conditions": {{"column": {"column_id": "60712000000123456"}, "text_match": {"op": "CONTAINS", "case_sensitive": true, "text": "Hello Vani"}, "comparison": {"op": "EQ", "operand": {"column": {"column_id": "60712000000123456"}, "value": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {}}, "number": 1.5, "multi_select": {"option_ids": {}}}}}, "emptiness": {"op": "IS_EMPTY"}, "membership": {"mode": "HAS_ANY", "values": {{"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {}}, "number": 1.5, "multi_select": {"option_ids": {}}}, {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {}}, "number": 1.5, "multi_select": {"option_ids": {}}}}}, "between": {"high": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {"string", "string"}}, "number": 1.5, "multi_select": {"option_ids": {"string", "string"}}}, "low": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {"string", "string"}}, "number": 1.5, "multi_select": {"option_ids": {"string", "string"}}}}}, {"column": {"column_id": "60712000000123456"}, "text_match": {"op": "CONTAINS", "case_sensitive": true, "text": "Hello Vani"}, "comparison": {"op": "EQ", "operand": {"column": {"column_id": "60712000000123456"}, "value": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {}}, "number": 1.5, "multi_select": {"option_ids": {}}}}}, "emptiness": {"op": "IS_EMPTY"}, "membership": {"mode": "HAS_ANY", "values": {{"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {}}, "number": 1.5, "multi_select": {"option_ids": {}}}, {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {}}, "number": 1.5, "multi_select": {"option_ids": {}}}}}, "between": {"high": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {"string", "string"}}, "number": 1.5, "multi_select": {"option_ids": {"string", "string"}}}, "low": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {"string", "string"}}, "number": 1.5, "multi_select": {"option_ids": {"string", "string"}}}}}}}, "table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/delete"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"filter": {
"mode": "AND",
"conditions": [
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "60712000000123456"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
},
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "60712000000123456"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
]
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "string",
"data": {},
"message": "string",
"request_uri": "string"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/delete",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/delete",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/delete",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/delete",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/delete",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/update
Sparse update of an existing record's cells (set or clear)
Sparse update of an existing record's cells (set or clear)
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| cells REQUIRED | array of object | Cell assignments to set or clear (min 1, max 1) | |
| column_id | string | Target column id (max length 200) | |
| column | object | Target column ref | |
| column_id REQUIRED | string | Column id (max length 200) | |
| clear | object | Clear the cell | |
| value | object | Value to set | |
| value | object | The typed cell value | |
| date | string | DATE value (max length 100) | |
| select | string | SELECT: chosen ColumnOption id (max length 500) | |
| rating | integer | RATING value | |
| toggle | boolean | TOGGLE value | |
| url | string | URL value (max length 2000) | |
| relation | object | RELATION: linked row ids | |
| row_ids | array of string | Linked row ids in the related table (min 2, max 2) | |
| number | number | NUMBER value | |
| multi_select | object | MULTI_SELECT: chosen option ids | |
| option_ids | array of string | Selected ColumnOption ids (min 2, max 2) | |
| phone | string | PHONE value (max length 100) | |
| person | string | PERSON value (max length 500) | |
| checkbox | boolean | CHECKBOX value | |
| text | string | TEXT value (max length 50000) | |
| category | string | CATEGORY: chosen ColumnOption id (max length 500) | |
| string | EMAIL value (max length 500) | ||
| record REQUIRED | object | Record ref (row id) | |
| row_id REQUIRED | string | Row id (max length 200) | |
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/update" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"cells": [
{
"column_id": "60712000000123456",
"column": {
"column_id": "60712000000123456"
},
"clear": {},
"value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
],
"record": {
"row_id": "60712000000123456"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/update"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"cells": [
{
"column_id": "60712000000123456",
"column": {
"column_id": "60712000000123456"
},
"clear": {},
"value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
],
"record": {
"row_id": "60712000000123456"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/update'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"cells": [
{
"column_id": "60712000000123456",
"column": {
"column_id": "60712000000123456"
},
"clear": {},
"value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
],
"record": {
"row_id": "60712000000123456"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/update"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"cells\":[{\"column_id\":\"60712000000123456\",\"column\":{\"column_id\":\"60712000000123456\"},\"clear\":{},\"value\":{\"value\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[\"string\",\"string\"]},\"number\":1.5,\"multi_select\":{\"option_ids\":[\"string\",\"string\"]}}}}],\"record\":{\"row_id\":\"60712000000123456\"},\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/update";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"cells": {{"column_id": "60712000000123456", "column": {"column_id": "60712000000123456"}, "clear": {}, "value": {"value": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {"string", "string"}}, "number": 1.5, "multi_select": {"option_ids": {"string", "string"}}}}}}, "record": {"row_id": "60712000000123456"}, "table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/update"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"cells": [
{
"column_id": "60712000000123456",
"column": {
"column_id": "60712000000123456"
},
"clear": {},
"value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
],
"record": {
"row_id": "60712000000123456"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "string",
"data": {},
"message": "string",
"request_uri": "string"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/update",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/update",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/update",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/update",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/update",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/update
Apply one change to a column: rename, retype, set options, default, or constraints
Apply one change to a column: rename, retype, set options, default, or constraints
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| set_constraints | object | Set-constraints change (required/unique) | |
| unique | boolean | Values must be unique across rows | |
| required | boolean | Value must be present | |
| retype | object | Retype change (target type) | |
| new_type REQUIRED | string |
New column type (max length 40)
TEXTNUMBERCHECKBOXTOGGLESELECTMULTI_SELECTCATEGORYDATEPERSONPHONEEMAILURLRATINGRELATIONLOOKUPROLLUP
|
|
| rename | string | New column name (rename change) (max length 2000) | |
| column REQUIRED | object | Column ref (column id) | |
| column_id REQUIRED | string | Column id (max length 200) | |
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) | |
| set_options | object | Set-options change (full option list) | |
| options REQUIRED | array of object | Full option list (min 2, max 2) | |
| color | object | Option colour | |
| hsb | object | HSB color value one of one of these — choosing this clears the others | |
| saturation | number | Saturation 0-1 | |
| brightness | number | Brightness 0-1 | |
| hue | number | Hue in degrees | |
| hex | object | Hex color value one of one of these — choosing this clears the others | |
| value | string | Hex color literal such as #8B4513 (max length 50) | |
| rgb | object | RGB color value one of one of these — choosing this clears the others | |
| red | integer | Red channel 0-255 | |
| green | integer | Green channel 0-255 | |
| blue | integer | Blue channel 0-255 | |
| id | string | Option id — equal to the option's current label; send it to rename (max length 500) | |
| value | string | Option label (max length 500) | |
| set_default | object | Set-default change: the default cell value itself | |
| value | object | The typed cell value | |
| date | string | DATE value (max length 100) | |
| select | string | SELECT: chosen ColumnOption id (max length 500) | |
| rating | integer | RATING value | |
| toggle | boolean | TOGGLE value | |
| url | string | URL value (max length 2000) | |
| relation | object | RELATION: linked row ids | |
| row_ids | array of string | Linked row ids in the related table (min 2, max 2) | |
| number | number | NUMBER value | |
| multi_select | object | MULTI_SELECT: chosen option ids | |
| option_ids | array of string | Selected ColumnOption ids (min 2, max 2) | |
| phone | string | PHONE value (max length 100) | |
| person | string | PERSON value (max length 500) | |
| checkbox | boolean | CHECKBOX value | |
| text | string | TEXT value (max length 50000) | |
| category | string | CATEGORY: chosen ColumnOption id (max length 500) | |
| string | EMAIL value (max length 500) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/update" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"column": {
"column_id": "60712000000123456"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"set_constraints": {
"unique": true,
"required": true
},
"retype": {
"new_type": "TEXT"
},
"rename": "Sample name",
"set_options": {
"options": [
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
},
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
}
]
},
"set_default": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/update"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"column": {
"column_id": "60712000000123456"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"set_constraints": {
"unique": true,
"required": true
},
"retype": {
"new_type": "TEXT"
},
"rename": "Sample name",
"set_options": {
"options": [
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
},
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
}
]
},
"set_default": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/update'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"column": {
"column_id": "60712000000123456"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"set_constraints": {
"unique": true,
"required": true
},
"retype": {
"new_type": "TEXT"
},
"rename": "Sample name",
"set_options": {
"options": [
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
},
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
}
]
},
"set_default": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/update"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"column\":{\"column_id\":\"60712000000123456\"},\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"},\"set_constraints\":{\"unique\":true,\"required\":true},\"retype\":{\"new_type\":\"TEXT\"},\"rename\":\"Sample name\",\"set_options\":{\"options\":[{\"color\":{\"hsb\":{\"saturation\":1.5,\"brightness\":1.5,\"hue\":1.5}},\"id\":\"60712000000123456\",\"value\":\"string\"},{\"color\":{\"hsb\":{\"saturation\":1.5,\"brightness\":1.5,\"hue\":1.5}},\"id\":\"60712000000123456\",\"value\":\"string\"}]},\"set_default\":{\"value\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[\"string\",\"string\"]},\"number\":1.5,\"multi_select\":{\"option_ids\":[\"string\",\"string\"]}}}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/update";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"column": {"column_id": "60712000000123456"}, "table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}, "set_constraints": {"unique": true, "required": true}, "retype": {"new_type": "TEXT"}, "rename": "Sample name", "set_options": {"options": {{"color": {"hsb": {"saturation": 1.5, "brightness": 1.5, "hue": 1.5}}, "id": "60712000000123456", "value": "string"}, {"color": {"hsb": {"saturation": 1.5, "brightness": 1.5, "hue": 1.5}}, "id": "60712000000123456", "value": "string"}}}, "set_default": {"value": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {"string", "string"}}, "number": 1.5, "multi_select": {"option_ids": {"string", "string"}}}}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/update"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"column": {
"column_id": "60712000000123456"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"set_constraints": {
"unique": true,
"required": true
},
"retype": {
"new_type": "TEXT"
},
"rename": "Sample name",
"set_options": {
"options": [
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
},
{
"color": {
"hsb": {
"saturation": 1.5,
"brightness": 1.5,
"hue": 1.5
}
},
"id": "60712000000123456",
"value": "string"
}
]
},
"set_default": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
Response
Successful response
{
"status": "string",
"data": {},
"message": "string",
"request_uri": "string"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/update",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/update",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/update",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/update",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/update",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/query
Query database_table rows, or group and aggregate, in one call
Query database_table rows, or group and aggregate, in one call
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| query | object | Query spec (filter / selection / page) | |
| filter | object | Row filter; unset = all rows one of one of these — choosing this clears the others | |
| mode | string |
AND (default) / OR (max length 5)
ANDOR
|
|
| conditions | array of object | Conditions combined by mode (min 2, max 2) | |
| text_match | object | Substring match | |
| op | string |
CONTAINS / STARTS_WITH / ENDS_WITH (max length 20)
CONTAINSSTARTS_WITHENDS_WITH
|
|
| case_sensitive | boolean | Default false (case-insensitive) | |
| text | string | Search text (max length 5000) | |
| comparison | object | Scalar comparison | |
| op | string |
EQ / NEQ / GT / GTE / LT / LTE (max length 10)
EQNEQGTGTELTLTE
|
|
| operand | object | Right-hand side nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| emptiness | object | Empty / not-empty | |
| op | string |
IS_EMPTY / IS_NOT_EMPTY (max length 20)
IS_EMPTYIS_NOT_EMPTY
|
|
| column REQUIRED | object | Column under test | |
| column_id REQUIRED | string | Column id (max length 200) | |
| membership | object | Multi-select / relation contains | |
| mode | string |
HAS_ANY / HAS_ALL / HAS_NONE (max length 20)
HAS_ANYHAS_ALLHAS_NONE
|
|
| values | array of object | Option ids or linked row ids (min 2, max 2) nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| between | object | Inclusive range | |
| high | object | Inclusive upper bound nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| low | object | Inclusive lower bound nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| page | object | Paging one of one of these — choosing this clears the others | |
| offset | integer | Rows to skip | |
| limit | integer | Max rows; 0 = server default | |
| rows | object | Row selection arm one of one of these — choosing this clears the others | |
| columns | array of object | Projection; empty = all columns (min 2, max 2) | |
| column_id REQUIRED | string | Column id (max length 200) | |
| sort | array of object | Sort order (min 2, max 2) | |
| column | object | Sort column | |
| column_id REQUIRED | string | Column id (max length 200) | |
| order | string |
ASC (default) / DESC (max length 5)
ASCDESC
|
|
| aggregate | object | Aggregate selection arm one of one of these — choosing this clears the others | |
| having | array of object | Post-aggregation filter (min 2, max 2) | |
| op | string |
Comparison operator (max length 10)
EQNEQGTGTELTLTE
|
|
| aggregation | object | Aggregate under test | |
| concat_separator | string | Separator for CONCAT / CONCAT_UNIQUE (max length 20) | |
| fn | object | Summary function nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| column | object | Column aggregated nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| value | object | Comparand | |
| date | string | DATE value (max length 100) | |
| select | string | SELECT: chosen ColumnOption id (max length 500) | |
| rating | integer | RATING value | |
| toggle | boolean | TOGGLE value | |
| url | string | URL value (max length 2000) | |
| relation | object | RELATION: linked row ids nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| number | number | NUMBER value | |
| multi_select | object | MULTI_SELECT: chosen option ids nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| phone | string | PHONE value (max length 100) | |
| person | string | PERSON value (max length 500) | |
| checkbox | boolean | CHECKBOX value | |
| text | string | TEXT value (max length 50000) | |
| category | string | CATEGORY: chosen ColumnOption id (max length 500) | |
| string | EMAIL value (max length 500) | ||
| group_by | array of object | Grouping columns (min 2, max 2) | |
| column_id REQUIRED | string | Column id (max length 200) | |
| sort | array of object | Group ordering (min 2, max 2) | |
| group_by_column | object | Order by a grouping column | |
| column_id REQUIRED | string | Column id (max length 200) | |
| aggregation | object | Order by an aggregate | |
| concat_separator | string | Separator for CONCAT / CONCAT_UNIQUE (max length 20) | |
| fn | object | Summary function nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| column | object | Column aggregated nests further — this shape is recursive; see the Schema Catalog or the OpenAPI document | |
| order | string |
ASC / DESC (max length 5)
ASCDESC
|
|
| aggregations | array of object | Summary functions (min 2, max 2) | |
| concat_separator | string | Separator for CONCAT / CONCAT_UNIQUE (max length 20) | |
| fn | object | Summary function | |
| date | string |
DATE columns (max length 40)
EARLIESTLATESTDATE_RANGE
|
|
| number | string |
NUMBER / RATING columns (max length 40)
SUMAVGMINMAXMEDIANRANGE
|
|
| boolean | string |
CHECKBOX / TOGGLE columns (max length 40)
CHECKEDUNCHECKEDPERCENT_CHECKEDPERCENT_UNCHECKED
|
|
| common | string |
Applies to any column type (max length 40)
COUNTCOUNT_EMPTYCOUNT_NOT_EMPTYCOUNT_UNIQUEPERCENT_EMPTYPERCENT_NOT_EMPTY
|
|
| text | string |
Text and string-like columns (max length 40)
CONCATCONCAT_UNIQUE
|
|
| column | object | Column aggregated | |
| column_id REQUIRED | string | Column id (max length 200) | |
| include_record_ids | boolean | Return each group's row ids | |
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/query" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"query": {
"filter": {
"mode": "AND",
"conditions": [
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "string"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
},
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "string"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
}
]
}
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/query"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"query": {
"filter": {
"mode": "AND",
"conditions": [
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "string"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
},
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "string"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
}
]
}
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/query'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"query": {
"filter": {
"mode": "AND",
"conditions": [
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "string"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
},
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "string"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
}
]
}
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/query"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"},\"query\":{\"filter\":{\"mode\":\"AND\",\"conditions\":[{\"column\":{\"column_id\":\"60712000000123456\"},\"text_match\":{\"op\":\"CONTAINS\",\"case_sensitive\":true,\"text\":\"Hello Vani\"},\"comparison\":{\"op\":\"EQ\",\"operand\":{\"column\":{\"column_id\":\"string\"},\"value\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{},\"number\":1,\"multi_select\":{}}}},\"emptiness\":{\"op\":\"IS_EMPTY\"},\"membership\":{\"mode\":\"HAS_ANY\",\"values\":[{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{},\"number\":1,\"multi_select\":{}},{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{},\"number\":1,\"multi_select\":{}}]},\"between\":{\"high\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[]},\"number\":1.5,\"multi_select\":{\"option_ids\":[]}},\"low\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[]},\"number\":1.5,\"multi_select\":{\"option_ids\":[]}}}},{\"column\":{\"column_id\":\"60712000000123456\"},\"text_match\":{\"op\":\"CONTAINS\",\"case_sensitive\":true,\"text\":\"Hello Vani\"},\"comparison\":{\"op\":\"EQ\",\"operand\":{\"column\":{\"column_id\":\"string\"},\"value\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{},\"number\":1,\"multi_select\":{}}}},\"emptiness\":{\"op\":\"IS_EMPTY\"},\"membership\":{\"mode\":\"HAS_ANY\",\"values\":[{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{},\"number\":1,\"multi_select\":{}},{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{},\"number\":1,\"multi_select\":{}}]},\"between\":{\"high\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[]},\"number\":1.5,\"multi_select\":{\"option_ids\":[]}},\"low\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[]},\"number\":1.5,\"multi_select\":{\"option_ids\":[]}}}}]}}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/query";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}, "query": {"filter": {"mode": "AND", "conditions": {{"column": {"column_id": "60712000000123456"}, "text_match": {"op": "CONTAINS", "case_sensitive": true, "text": "Hello Vani"}, "comparison": {"op": "EQ", "operand": {"column": {"column_id": "string"}, "value": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {}, "number": 1, "multi_select": {}}}}, "emptiness": {"op": "IS_EMPTY"}, "membership": {"mode": "HAS_ANY", "values": {{"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {}, "number": 1, "multi_select": {}}, {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {}, "number": 1, "multi_select": {}}}}, "between": {"high": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {}}, "number": 1.5, "multi_select": {"option_ids": {}}}, "low": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {}}, "number": 1.5, "multi_select": {"option_ids": {}}}}}, {"column": {"column_id": "60712000000123456"}, "text_match": {"op": "CONTAINS", "case_sensitive": true, "text": "Hello Vani"}, "comparison": {"op": "EQ", "operand": {"column": {"column_id": "string"}, "value": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {}, "number": 1, "multi_select": {}}}}, "emptiness": {"op": "IS_EMPTY"}, "membership": {"mode": "HAS_ANY", "values": {{"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {}, "number": 1, "multi_select": {}}, {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {}, "number": 1, "multi_select": {}}}}, "between": {"high": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {}}, "number": 1.5, "multi_select": {"option_ids": {}}}, "low": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {}}, "number": 1.5, "multi_select": {"option_ids": {}}}}}}}}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/query"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"query": {
"filter": {
"mode": "AND",
"conditions": [
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "string"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
},
{
"column": {
"column_id": "60712000000123456"
},
"text_match": {
"op": "CONTAINS",
"case_sensitive": true,
"text": "Hello Vani"
},
"comparison": {
"op": "EQ",
"operand": {
"column": {
"column_id": "string"
},
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
}
},
"emptiness": {
"op": "IS_EMPTY"
},
"membership": {
"mode": "HAS_ANY",
"values": [
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
},
{
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {},
"number": 1,
"multi_select": {}
}
]
},
"between": {
"high": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
},
"low": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": []
},
"number": 1.5,
"multi_select": {
"option_ids": []
}
}
}
}
]
}
}
}
Response
Successful response
{
"status": "string",
"data": {},
"message": "string",
"request_uri": "string"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/query",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/query",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/query",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/query",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/query",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records
Append a record from keyed cell assignments (partial allowed)
Append a record from keyed cell assignments (partial allowed)
OperationCREATE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| cells | array of object | Keyed cell assignments (partial allowed) (min 2, max 2) | |
| column_id | string | Target column id (max length 200) | |
| column | object | Target column ref | |
| column_id REQUIRED | string | Column id (max length 200) | |
| clear | object | Clear the cell | |
| value | object | Value to set | |
| value | object | The typed cell value | |
| date | string | DATE value (max length 100) | |
| select | string | SELECT: chosen ColumnOption id (max length 500) | |
| rating | integer | RATING value | |
| toggle | boolean | TOGGLE value | |
| url | string | URL value (max length 2000) | |
| relation | object | RELATION: linked row ids | |
| row_ids | array of string | Linked row ids in the related table (min 2, max 2) | |
| number | number | NUMBER value | |
| multi_select | object | MULTI_SELECT: chosen option ids | |
| option_ids | array of string | Selected ColumnOption ids (min 2, max 2) | |
| phone | string | PHONE value (max length 100) | |
| person | string | PERSON value (max length 500) | |
| checkbox | boolean | CHECKBOX value | |
| text | string | TEXT value (max length 50000) | |
| category | string | CATEGORY: chosen ColumnOption id (max length 500) | |
| string | EMAIL value (max length 500) | ||
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"cells": [
{
"column_id": "60712000000123456",
"column": {
"column_id": "60712000000123456"
},
"clear": {},
"value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
},
{
"column_id": "60712000000123456",
"column": {
"column_id": "60712000000123456"
},
"clear": {},
"value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
]
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"cells": [
{
"column_id": "60712000000123456",
"column": {
"column_id": "60712000000123456"
},
"clear": {},
"value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
},
{
"column_id": "60712000000123456",
"column": {
"column_id": "60712000000123456"
},
"clear": {},
"value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
]
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"cells": [
{
"column_id": "60712000000123456",
"column": {
"column_id": "60712000000123456"
},
"clear": {},
"value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
},
{
"column_id": "60712000000123456",
"column": {
"column_id": "60712000000123456"
},
"clear": {},
"value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
]
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"},\"cells\":[{\"column_id\":\"60712000000123456\",\"column\":{\"column_id\":\"60712000000123456\"},\"clear\":{},\"value\":{\"value\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[\"string\",\"string\"]},\"number\":1.5,\"multi_select\":{\"option_ids\":[\"string\",\"string\"]}}}},{\"column_id\":\"60712000000123456\",\"column\":{\"column_id\":\"60712000000123456\"},\"clear\":{},\"value\":{\"value\":{\"date\":\"string\",\"select\":\"string\",\"rating\":1,\"toggle\":true,\"url\":\"string\",\"relation\":{\"row_ids\":[\"string\",\"string\"]},\"number\":1.5,\"multi_select\":{\"option_ids\":[\"string\",\"string\"]}}}}]}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}, "cells": {{"column_id": "60712000000123456", "column": {"column_id": "60712000000123456"}, "clear": {}, "value": {"value": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {"string", "string"}}, "number": 1.5, "multi_select": {"option_ids": {"string", "string"}}}}}, {"column_id": "60712000000123456", "column": {"column_id": "60712000000123456"}, "clear": {}, "value": {"value": {"date": "string", "select": "string", "rating": 1, "toggle": true, "url": "string", "relation": {"row_ids": {"string", "string"}}, "number": 1.5, "multi_select": {"option_ids": {"string", "string"}}}}}}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"cells": [
{
"column_id": "60712000000123456",
"column": {
"column_id": "60712000000123456"
},
"clear": {},
"value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
},
{
"column_id": "60712000000123456",
"column": {
"column_id": "60712000000123456"
},
"clear": {},
"value": {
"value": {
"date": "string",
"select": "string",
"rating": 1,
"toggle": true,
"url": "string",
"relation": {
"row_ids": [
"string",
"string"
]
},
"number": 1.5,
"multi_select": {
"option_ids": [
"string",
"string"
]
}
}
}
}
]
}
Response
Successful response
{
"status": "string",
"data": {},
"message": "string",
"request_uri": "string"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
POST
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete
Delete a column (and its cells across all rows)
destructive
Delete a column (and its cells across all rows)
OperationDELETE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.CREATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| column REQUIRED | object | Column ref (column id) | |
| column_id REQUIRED | string | Column id (max length 200) | |
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) |
Request
POST
curl -X POST "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"column": {
"column_id": "60712000000123456"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"column": {
"column_id": "60712000000123456"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete'),
method: 'POST',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"column": {
"column_id": "60712000000123456"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"column\":{\"column_id\":\"60712000000123456\"},\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"}}";
HttpRequest request = requestBuilder
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"column": {"column_id": "60712000000123456"}, "table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete"
type: POST
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"column": {
"column_id": "60712000000123456"
},
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}
}
Response
Successful response
{
"status": "success",
"data": {},
"message": "Request completed successfully",
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed
PUT
/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/reorder
Reorder the table's columns to the given full order
Reorder the table's columns to the given full order
OperationUPDATE
Rate limit60 requests / minute · per user
OAuth scopes
Vani.spaces.UPDATEPath parameters edition_id · space_id · zone_id
| Name | Type | Description |
|---|---|---|
| edition_idREQUIRED | string | The unique identifier of the edition |
| space_idREQUIRED | string | The unique identifier of the space |
| zone_idREQUIRED | string | The unique identifier of the zone |
Request body application/json
Tick a field to put it in the sample payload, and set what it carries in the Value column. Every field is optional unless it is marked REQUIRED, and those are always sent.
| Field | Type | Description | Value |
|---|---|---|---|
| table REQUIRED | object | Table object reference | |
| zone_id | string | Zone containing the table (optional; defaults to the zone in the request path) (max length 200) | |
| object_id REQUIRED | string | Table object id (max length 200) | |
| frame_id | string | Frame containing the table (optional; auto-resolved if omitted) (max length 200) | |
| order REQUIRED | array of object | Full desired column order (column refs) (min 1, max 1) | |
| column_id REQUIRED | string | Column id (max length 200) |
Request
PUT
curl -X PUT "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/reorder" \
-H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"order": [
{
"column_id": "60712000000123456"
}
]
}'import requests
url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/reorder"
headers = {
"Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"order": [
{
"column_id": "60712000000123456"
}
]
}
response = requests.put(url, headers=headers, json=data)
data = response.json()
print(data)const https = require('https');
const url = require('url');
const options = {
...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/reorder'),
method: 'PUT',
headers: {
'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
const result = JSON.parse(data);
// Process the response data
});
});
req.write(JSON.stringify({
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"order": [
{
"column_id": "60712000000123456"
}
]
}));
req.end();import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;
public class ApiClient {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/reorder"))
.header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
.timeout(Duration.ofSeconds(30));
.header("Content-Type", "application/json")
String requestBody = "{\"table\":{\"object_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"zone_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\"frame_id\":\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"},\"order\":[{\"column_id\":\"60712000000123456\"}]}";
HttpRequest request = requestBuilder
.PUT(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/reorder";
headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");
requestData = {"table": {"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"}, "order": {{"column_id": "60712000000123456"}}};
response = invokeurl
[
url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/reorder"
type: PUT
headers: headers
parameters: requestData
];
if (response.get("status_code") == 200) {
info "Request successful";
responseData = response.get("response");
info responseData;
} else {
info "Request failed with status: " + response.get("status_code");
info response.get("response");
}{
"table": {
"object_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"frame_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
},
"order": [
{
"column_id": "60712000000123456"
}
]
}
Response
Successful response
{
"status": "string",
"data": {},
"message": "string",
"request_uri": "string"
}
Invalid request - validation failed
{
"error": {
"details": {
"error_code": "IAM1031",
"message": "Invalid request - validation failed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/reorder",
"status": "error"
}
Unauthorized - missing or invalid access token
{
"error": {
"details": {
"error_code": "IAM1100",
"message": "Unauthorized - missing or invalid access token"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/reorder",
"status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
"error": {
"details": {
"error_code": "IAM1001",
"message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/reorder",
"status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
"error": {
"details": {
"error_code": "IAM1055",
"message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/reorder",
"status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
"error": {
"details": {
"error_code": "U1001",
"message": "Internal server error - the request was well-formed but could not be completed"
}
},
"request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/reorder",
"status": "error"
}
Errors
5 status codes
400 Invalid request - validation failed 401 Unauthorized - missing or invalid access token 404 Not found - a resource named in the path does not exist, or is not visible to the caller 429 Rate limit exceeded - this operation allows 60 requests per minute per user 500 Internal server error - the request was well-formed but could not be completed