Files
sim/apps/docs/openapi-v2-tables.json
T
Theodore Li 6d3e484fb3 fix(api): align v2 permissions and resource behavior (#6557)
* fix(api): align v2 permissions and resource behavior

* fix(api): refine resource authorization boundaries

* fix(tables): restore large durable imports

* fix(files): classify missing archive targets
2026-08-11 17:31:27 -04:00

8307 lines
272 KiB
JSON

{
"openapi": "3.1.0",
"info": {
"title": "Sim Tables API v2",
"description": "Manage tables, typed columns, rows, saved views, workflow groups, folders, imports, and exports through the public v2 API. Row data is keyed by column name.",
"version": "2.0.0",
"contact": {
"name": "Sim Support",
"email": "help@sim.ai",
"url": "https://www.sim.ai"
},
"license": {
"name": "Apache 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
}
},
"servers": [
{
"url": "https://www.sim.ai",
"description": "Production"
}
],
"tags": [
{
"name": "Tables",
"description": "Manage tables, columns, rows, views, runs, folders, imports, and exports."
}
],
"security": [
{
"apiKey": []
}
],
"paths": {
"/api/v2/tables": {
"get": {
"operationId": "listTables",
"summary": "List Tables",
"description": "List all tables in a workspace with optional folder filtering, search, sorting, and an opaque cursor envelope.",
"tags": ["Tables"],
"parameters": [
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace whose tables should be listed.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace whose tables should be listed."
}
},
{
"name": "folderPath",
"in": "query",
"required": false,
"description": "Restrict results to tables in this folder.",
"schema": {
"description": "Restrict results to tables in this folder.",
"type": "string"
}
},
{
"name": "search",
"in": "query",
"required": false,
"description": "Case-insensitive substring search on the resource name.",
"schema": {
"description": "Case-insensitive substring search on the resource name.",
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
{
"name": "sortBy",
"in": "query",
"required": false,
"description": "Field used to sort the result.",
"schema": {
"default": "createdAt",
"description": "Field used to sort the result.",
"type": "string",
"enum": ["name", "createdAt", "updatedAt"]
}
},
{
"name": "sortOrder",
"in": "query",
"required": false,
"description": "Sort direction.",
"schema": {
"default": "asc",
"description": "Sort direction.",
"type": "string",
"enum": ["asc", "desc"]
}
},
{
"name": "limit",
"in": "query",
"required": false,
"description": "Maximum tables to return, clamped between 1 and 1000.",
"schema": {
"description": "Maximum tables to return, clamped between 1 and 1000.",
"default": 100,
"type": "number"
}
},
{
"name": "cursor",
"in": "query",
"required": false,
"description": "Opaque cursor from the previous page.",
"schema": {
"description": "Opaque cursor from the previous page.",
"type": "string",
"minLength": 1
}
}
],
"responses": {
"200": {
"description": "The tables in the workspace.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableListResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"post": {
"operationId": "createTable",
"summary": "Create Table",
"description": "Create a table with a typed column schema and optional folder placement.",
"tags": ["Tables"],
"requestBody": {
"required": true,
"description": "Workspace, table metadata, folder placement, and typed columns.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTableRequest"
}
}
}
},
"responses": {
"201": {
"description": "The created table.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2CreateTableResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}": {
"get": {
"operationId": "getTable",
"summary": "Get Table",
"description": "Retrieve a table with its metadata, column schema, locks, and current job.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the table.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the table."
}
}
],
"responses": {
"200": {
"description": "The requested table.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"delete": {
"operationId": "deleteTable",
"summary": "Delete Table",
"description": "Delete a table and return an explicit deletion acknowledgement.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the table.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the table."
}
}
],
"responses": {
"200": {
"description": "Table deletion acknowledgement.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2DeleteTableResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"patch": {
"operationId": "updateTable",
"summary": "Update Table",
"description": "Rename a table, edit its description, or move it to a canonical folder. At least one mutable field is required; lock flags remain read-only.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope and one or more table metadata or placement changes.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTableRequest"
}
}
}
},
"responses": {
"200": {
"description": "The updated table.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2UpdateTableResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}/columns": {
"post": {
"operationId": "addTableColumn",
"summary": "Add Column",
"description": "Add a typed column and return the complete resulting table schema.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope and the typed column to add.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AddTableColumnRequest"
}
}
}
},
"responses": {
"200": {
"description": "The updated table columns.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableColumnsResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"patch": {
"operationId": "updateTableColumn",
"summary": "Update Column",
"description": "Update a column by name and return the complete resulting table schema.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope, current column name, and fields to update.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTableColumnRequest"
}
}
}
},
"responses": {
"200": {
"description": "The updated table columns.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableColumnsResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"delete": {
"operationId": "deleteTableColumn",
"summary": "Delete Column",
"description": "Delete a column by name while preserving at least one table column.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope and column name to delete.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteTableColumnRequest"
}
}
}
},
"responses": {
"200": {
"description": "The surviving table columns.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableColumnsResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}/rows": {
"get": {
"operationId": "listTableRows",
"summary": "List Rows",
"description": "List a plain cursor page in default row order. Use the query endpoint for predicate filtering and sorting.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the table.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the table."
}
},
{
"name": "limit",
"in": "query",
"required": false,
"description": "Maximum rows to return in the current page.",
"schema": {
"description": "Maximum rows to return in the current page.",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
{
"name": "cursor",
"in": "query",
"required": false,
"description": "Opaque cursor returned by the previous page.",
"schema": {
"description": "Opaque cursor returned by the previous page.",
"type": "string",
"minLength": 1
}
}
],
"responses": {
"200": {
"description": "A page of table rows.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableRowListResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"post": {
"operationId": "createTableRows",
"summary": "Create Rows",
"description": "Insert one row with a data object or insert a bounded batch with a rows array. Cell keys are column names.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "A single row or bounded row batch keyed by column name.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTableRowsRequest"
}
}
}
},
"responses": {
"200": {
"description": "The inserted row or rows.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2CreateTableRowsResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"patch": {
"operationId": "updateTableRows",
"summary": "Update Rows by Filter",
"description": "Apply the same partial data patch to every row matching a non-empty predicate.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope, typed predicate, and row-data patch.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTableRowsRequest"
}
}
}
},
"responses": {
"200": {
"description": "The bulk update result.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2UpdateTableRowsResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"delete": {
"operationId": "deleteTableRows",
"summary": "Delete Rows",
"description": "Delete rows by a non-empty predicate or an explicit bounded list of row identifiers.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope and exactly one of a predicate or row identifier list.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteTableRowsRequest"
}
}
}
},
"responses": {
"200": {
"description": "The bulk deletion result.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2DeleteTableRowsResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}/rows/{rowId}": {
"get": {
"operationId": "getTableRow",
"summary": "Get Row",
"description": "Retrieve one row by identifier.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
},
{
"name": "rowId",
"in": "path",
"required": true,
"description": "Unique table row identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table row identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the table.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the table."
}
}
],
"responses": {
"200": {
"description": "The requested table row.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableRowResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"patch": {
"operationId": "updateTableRow",
"summary": "Update Row",
"description": "Merge a partial data patch into one row by identifier.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
},
{
"name": "rowId",
"in": "path",
"required": true,
"description": "Unique table row identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table row identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope and row-data patch keyed by column name.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTableRowRequest"
}
}
}
},
"responses": {
"200": {
"description": "The updated table row.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableRowResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"delete": {
"operationId": "deleteTableRow",
"summary": "Delete Row",
"description": "Delete one row by identifier.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
},
{
"name": "rowId",
"in": "path",
"required": true,
"description": "Unique table row identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table row identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the table.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the table."
}
}
],
"responses": {
"200": {
"description": "The row deletion result.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2DeleteTableRowResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}/rows/upsert": {
"post": {
"operationId": "upsertTableRow",
"summary": "Upsert Row",
"description": "Insert a row or update the existing row that conflicts on a selected unique column.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope, row data, and optional unique-column conflict target.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpsertTableRowRequest"
}
}
}
},
"responses": {
"200": {
"description": "The upserted row and operation performed.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2UpsertTableRowResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}/query": {
"post": {
"operationId": "queryTableRows",
"summary": "Query Rows",
"description": "Query rows with a typed predicate, ordered sort specification, and opaque cursor pagination.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope, optional predicate and sort, and cursor pagination controls.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QueryTableRowsRequest"
}
}
}
},
"responses": {
"200": {
"description": "A page of matching table rows.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2QueryTableRowsResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"413": {
"$ref": "#/components/responses/PayloadTooLarge"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}/views": {
"get": {
"operationId": "listTableViews",
"summary": "List Views",
"description": "List the bounded set of saved table views, with references to removed columns pruned on read.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the table.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the table."
}
}
],
"responses": {
"200": {
"description": "The saved table views.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableViewListResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"post": {
"operationId": "createTableView",
"summary": "Create View",
"description": "Save a filter, sort, and column layout as a named presentation of a table.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope, name, and saved filter, sort, and layout configuration.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTableViewRequest"
}
}
}
},
"responses": {
"201": {
"description": "The created table view.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2CreateTableViewResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}/views/{viewId}": {
"get": {
"operationId": "getTableView",
"summary": "Get View",
"description": "Retrieve one saved table view by identifier.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
},
{
"name": "viewId",
"in": "path",
"required": true,
"description": "Unique saved-view identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique saved-view identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the table.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the table."
}
}
],
"responses": {
"200": {
"description": "The requested table view.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableViewResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"patch": {
"operationId": "updateTableView",
"summary": "Update View",
"description": "Rename a view, replace or shallow-merge its configuration, or promote it to the table default.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
},
{
"name": "viewId",
"in": "path",
"required": true,
"description": "Unique saved-view identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique saved-view identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope and one or more saved-view changes.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTableViewRequest"
}
}
}
},
"responses": {
"200": {
"description": "The updated table view.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableViewResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"delete": {
"operationId": "deleteTableView",
"summary": "Delete View",
"description": "Delete a saved presentation without changing any table rows.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
},
{
"name": "viewId",
"in": "path",
"required": true,
"description": "Unique saved-view identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique saved-view identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the table.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the table."
}
}
],
"responses": {
"200": {
"description": "Table view deletion acknowledgement.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2DeleteTableViewResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}/groups": {
"get": {
"operationId": "listTableWorkflowGroups",
"summary": "List Workflow Groups",
"description": "List the workflow and enrichment groups that can be dispatched for a table.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the table.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the table."
}
}
],
"responses": {
"200": {
"description": "The table workflow groups.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableWorkflowGroupListResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"post": {
"operationId": "addTableWorkflowGroup",
"summary": "Add Workflow Group",
"description": "Bind a workflow or enrichment to the table and create the columns populated by its outputs.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope, producer definition, and output columns.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AddTableWorkflowGroupRequest"
}
}
}
},
"responses": {
"201": {
"description": "The created workflow group and resulting columns.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2AddTableWorkflowGroupResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"patch": {
"operationId": "updateTableWorkflowGroup",
"summary": "Update Workflow Group",
"description": "Restructure a workflow group, its producer, outputs, or execution behavior.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope, workflow group identifier, and producer changes.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTableWorkflowGroupRequest"
}
}
}
},
"responses": {
"200": {
"description": "The updated workflow group and resulting columns.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2UpdateTableWorkflowGroupResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"delete": {
"operationId": "deleteTableWorkflowGroup",
"summary": "Delete Workflow Group",
"description": "Delete a workflow group and every table column populated by that group.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope and workflow group identifier.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteTableWorkflowGroupRequest"
}
}
}
},
"responses": {
"200": {
"description": "Workflow-group deletion acknowledgement and surviving columns.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2DeleteTableWorkflowGroupResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}/columns/run": {
"post": {
"operationId": "runTableColumns",
"summary": "Run Column Groups",
"description": "Asynchronously run workflow or enrichment groups across all rows or a selected row subset.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope, producer groups, execution mode, and optional row scope.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunTableColumnsRequest"
}
}
}
},
"responses": {
"200": {
"description": "The accepted table-column dispatch.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2RunTableColumnsResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}/rows/{rowId}/enrichment/{groupId}": {
"post": {
"operationId": "runRowEnrichment",
"summary": "Run Enrichment For One Row",
"description": "Asynchronously run one workflow or enrichment group for one table row.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
},
{
"name": "rowId",
"in": "path",
"required": true,
"description": "Unique table row identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table row identifier."
}
},
{
"name": "groupId",
"in": "path",
"required": true,
"description": "Workflow or enrichment group to run.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workflow or enrichment group to run."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope for the row enrichment.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunRowEnrichmentRequest"
}
}
}
},
"responses": {
"200": {
"description": "The accepted row enrichment dispatch.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2RunRowEnrichmentResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}/rows/find": {
"post": {
"operationId": "findTableRows",
"summary": "Find Rows",
"description": "Search every cell case-insensitively, optionally within a predicate-filtered and sorted view.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope, substring query, and optional predicate and sort.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FindTableRowsRequest"
}
}
}
},
"responses": {
"200": {
"description": "The matching table cells.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2FindTableRowsResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/imports": {
"post": {
"operationId": "createTableImport",
"summary": "Create Table Import",
"description": "Create a durable CSV import. Upload sources receive signed transfer instructions; workspace-file sources begin processing directly.",
"tags": ["Tables"],
"requestBody": {
"required": true,
"description": "Workspace, CSV source, target table, optional mapping, and timezone.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTableImportRequest"
}
}
}
},
"responses": {
"201": {
"description": "The created table import and optional transfer instructions.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2CreateTableImportResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"413": {
"$ref": "#/components/responses/PayloadTooLarge"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/imports/{importId}": {
"get": {
"operationId": "getTableImport",
"summary": "Get Table Import",
"description": "Read progress and terminal state for a durable table import.",
"tags": ["Tables"],
"parameters": [
{
"name": "importId",
"in": "path",
"required": true,
"description": "Unique table-import identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table-import identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the transfer resource.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the transfer resource."
}
}
],
"responses": {
"200": {
"description": "The requested table import.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableImportResponse"
}
}
}
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"delete": {
"operationId": "cancelTableImport",
"summary": "Cancel Table Import",
"description": "Cancel an upload or processing import without rolling back committed row batches.",
"tags": ["Tables"],
"parameters": [
{
"name": "importId",
"in": "path",
"required": true,
"description": "Unique table-import identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table-import identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the transfer resource.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the transfer resource."
}
},
{
"name": "upload-token",
"in": "header",
"required": false,
"description": "Signed upload control token returned when an upload-backed import was created.",
"schema": {
"description": "Signed upload control token returned when an upload-backed import was created.",
"type": "string",
"minLength": 1
}
}
],
"responses": {
"200": {
"description": "The canceled table import.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2CancelTableImportResponse"
}
}
}
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"410": {
"$ref": "#/components/responses/Gone"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/imports/{importId}/parts": {
"post": {
"operationId": "createTableImportPartUrls",
"summary": "Create Table Import Part URLs",
"description": "Issue short-lived signed PUT URLs for a bounded set of multipart part numbers.",
"tags": ["Tables"],
"parameters": [
{
"name": "importId",
"in": "path",
"required": true,
"description": "Unique table-import identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table-import identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the transfer resource.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the transfer resource."
}
},
{
"name": "upload-token",
"in": "header",
"required": true,
"description": "Signed upload control token returned when the upload session was created.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Signed upload control token returned when the upload session was created."
}
}
],
"requestBody": {
"required": true,
"description": "Multipart part numbers for which signed URLs should be created.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTableImportPartUrlsRequest"
}
}
}
},
"responses": {
"200": {
"description": "The signed multipart upload URLs.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2CreateTableImportPartUrlsResponse"
}
}
}
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"410": {
"$ref": "#/components/responses/Gone"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/imports/{importId}/complete": {
"post": {
"operationId": "completeTableImportUpload",
"summary": "Complete Table Import Upload",
"description": "Verify or assemble the uploaded CSV and begin processing with the same import id.",
"tags": ["Tables"],
"parameters": [
{
"name": "importId",
"in": "path",
"required": true,
"description": "Unique table-import identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table-import identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the transfer resource.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the transfer resource."
}
},
{
"name": "upload-token",
"in": "header",
"required": true,
"description": "Signed upload control token returned when the upload session was created.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Signed upload control token returned when the upload session was created."
}
}
],
"responses": {
"200": {
"description": "The table import after upload completion.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2CompleteTableImportUploadResponse"
}
}
}
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"410": {
"$ref": "#/components/responses/Gone"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}/exports": {
"post": {
"operationId": "createTableExport",
"summary": "Create Table Export",
"description": "Create a durable CSV or JSON export that completes inline for small tables and queues larger work.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope and export format.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTableExportRequest"
}
}
}
},
"responses": {
"201": {
"description": "The created table export.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2CreateTableExportResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/exports/{exportId}": {
"get": {
"operationId": "getTableExport",
"summary": "Get Table Export",
"description": "Read progress and terminal state for a durable table export.",
"tags": ["Tables"],
"parameters": [
{
"name": "exportId",
"in": "path",
"required": true,
"description": "Unique table-export identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table-export identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the transfer resource.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the transfer resource."
}
}
],
"responses": {
"200": {
"description": "The requested table export.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableExportResponse"
}
}
}
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"delete": {
"operationId": "cancelTableExport",
"summary": "Cancel Table Export",
"description": "Cancel an export that has not reached a terminal state.",
"tags": ["Tables"],
"parameters": [
{
"name": "exportId",
"in": "path",
"required": true,
"description": "Unique table-export identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table-export identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the transfer resource.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the transfer resource."
}
}
],
"responses": {
"200": {
"description": "The canceled table export.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2CancelTableExportResponse"
}
}
}
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/exports/{exportId}/download": {
"get": {
"operationId": "downloadTableExport",
"summary": "Download Table Export",
"description": "Return a short-lived signed download URL for a completed table export.",
"tags": ["Tables"],
"parameters": [
{
"name": "exportId",
"in": "path",
"required": true,
"description": "Unique table-export identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table-export identifier."
}
},
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace that owns the transfer resource.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the transfer resource."
}
}
],
"responses": {
"200": {
"description": "Signed table-export download information.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2DownloadTableExportResponse"
}
}
}
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"410": {
"$ref": "#/components/responses/Gone"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/{tableId}/cancel-runs": {
"post": {
"operationId": "cancelTableRuns",
"summary": "Cancel Column Runs",
"description": "Stop in-flight and pending workflow or enrichment cell runs across the table or one selected row.",
"tags": ["Tables"],
"parameters": [
{
"name": "tableId",
"in": "path",
"required": true,
"description": "Unique table identifier.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Unique table identifier."
}
}
],
"requestBody": {
"required": true,
"description": "Workspace scope, cancellation scope, and optional predicate or producer groups.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelTableRunsRequest"
}
}
}
},
"responses": {
"200": {
"description": "The number of canceled cell runs.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2CancelTableRunsResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
},
"/api/v2/tables/folders": {
"get": {
"operationId": "listTablesFolders",
"summary": "List Folders",
"description": "List table folders, optionally restricting the result to direct children of a canonical parent path.",
"tags": ["Tables"],
"parameters": [
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace whose folders should be listed.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace whose folders should be listed."
}
},
{
"name": "parentPath",
"in": "query",
"required": false,
"description": "Restrict results to direct children of this parent path.",
"schema": {
"description": "Restrict results to direct children of this parent path.",
"type": "string"
}
},
{
"name": "search",
"in": "query",
"required": false,
"description": "Case-insensitive substring match against the folder name.",
"schema": {
"description": "Case-insensitive substring match against the folder name.",
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
{
"name": "sortBy",
"in": "query",
"required": false,
"description": "Field used to sort the result.",
"schema": {
"default": "name",
"description": "Field used to sort the result.",
"type": "string",
"enum": ["name", "createdAt", "updatedAt"]
}
},
{
"name": "sortOrder",
"in": "query",
"required": false,
"description": "Sort direction.",
"schema": {
"default": "asc",
"description": "Sort direction.",
"type": "string",
"enum": ["asc", "desc"]
}
}
],
"responses": {
"200": {
"description": "The table folders.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2TableFolderListResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"post": {
"operationId": "createTablesFolder",
"summary": "Create Folder",
"description": "Create one table-folder leaf whose parent path already exists.",
"tags": ["Tables"],
"requestBody": {
"required": true,
"description": "Workspace scope and canonical folder path to create.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTableFolderRequest"
}
}
}
},
"responses": {
"201": {
"description": "The created table folder.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2CreateTableFolderResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"patch": {
"operationId": "relocateTablesFolder",
"summary": "Rename or Move Folder",
"description": "Rename or move a table folder and update all descendant paths.",
"tags": ["Tables"],
"requestBody": {
"required": true,
"description": "Workspace scope, current canonical path, and destination path.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RelocateTableFolderRequest"
}
}
}
},
"responses": {
"200": {
"description": "The relocated table folder.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2RelocateTableFolderResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
},
"delete": {
"operationId": "deleteTablesFolder",
"summary": "Delete Folder",
"description": "Delete an empty table folder, or recursively delete its descendants and tables when explicitly requested.",
"tags": ["Tables"],
"parameters": [
{
"name": "workspaceId",
"in": "query",
"required": true,
"description": "Workspace containing the folder.",
"schema": {
"type": "string",
"minLength": 1,
"description": "Workspace containing the folder."
}
},
{
"name": "path",
"in": "query",
"required": true,
"description": "Path of the folder to delete.",
"schema": {
"description": "Path of the folder to delete.",
"type": "string"
}
},
{
"name": "recursive",
"in": "query",
"required": false,
"description": "Delete nested files and folders when true.",
"schema": {
"description": "Delete nested files and folders when true.",
"default": "false",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Table-folder deletion acknowledgement.",
"headers": {
"X-RateLimit-Limit": {
"$ref": "#/components/headers/X-RateLimit-Limit"
},
"X-RateLimit-Remaining": {
"$ref": "#/components/headers/X-RateLimit-Remaining"
},
"X-RateLimit-Reset": {
"$ref": "#/components/headers/X-RateLimit-Reset"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2DeleteTableFolderResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"409": {
"$ref": "#/components/responses/Conflict"
},
"423": {
"$ref": "#/components/responses/Locked"
},
"429": {
"$ref": "#/components/responses/RateLimited"
},
"500": {
"$ref": "#/components/responses/InternalError"
},
"503": {
"$ref": "#/components/responses/ServiceUnavailable"
}
}
}
}
},
"components": {
"securitySchemes": {
"apiKey": {
"type": "apiKey",
"in": "header",
"name": "X-API-Key",
"description": "Your Sim API key (personal or workspace). Generate one from the Sim dashboard under Settings > API Keys."
}
},
"headers": {
"X-RateLimit-Limit": {
"description": "Maximum requests allowed in the current window.",
"schema": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"title": "Rate limit",
"description": "Maximum requests allowed in the current window."
}
},
"X-RateLimit-Remaining": {
"description": "Requests remaining in the current window.",
"schema": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"title": "Rate limit remaining",
"description": "Requests remaining in the current window."
}
},
"X-RateLimit-Reset": {
"description": "ISO 8601 timestamp when the current rate-limit window resets.",
"schema": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"title": "Rate limit reset",
"description": "ISO 8601 timestamp when the current rate-limit window resets."
}
},
"Retry-After": {
"description": "Seconds to wait before retrying a rate-limited request.",
"schema": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"title": "Retry after",
"description": "Seconds to wait before retrying a rate-limited request."
}
},
"X-Run-Id": {
"description": "Identifier assigned to the workflow run.",
"schema": {
"type": "string",
"minLength": 1,
"title": "Run identifier",
"description": "Identifier assigned to the workflow run."
}
}
},
"responses": {
"BadRequest": {
"description": "The request is invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
},
"Unauthorized": {
"description": "The API key is missing or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
},
"UsageLimitExceeded": {
"description": "The workspace has exceeded its usage or billing limits.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
},
"Forbidden": {
"description": "The caller lacks access to the resource.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
},
"NotFound": {
"description": "The requested resource was not found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
},
"Conflict": {
"description": "The request conflicts with current resource state.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
},
"RunIdConflict": {
"description": "The run identifier is already associated with a different request.",
"headers": {
"X-Run-Id": {
"$ref": "#/components/headers/X-Run-Id"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
},
"Gone": {
"description": "The requested generated resource has expired.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
},
"PayloadTooLarge": {
"description": "The request body exceeds the allowed size.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
},
"UnsupportedMediaType": {
"description": "The request uses an unsupported media type.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
},
"Locked": {
"description": "The resource is locked and cannot be modified.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
},
"RateLimited": {
"description": "The caller exceeded the request rate limit.",
"headers": {
"Retry-After": {
"$ref": "#/components/headers/Retry-After"
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
},
"InternalError": {
"description": "An unexpected server error occurred.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
},
"ServiceUnavailable": {
"description": "A required service is temporarily unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/V2Error"
}
}
}
}
},
"schemas": {
"V2Error": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "Stable machine-readable error code."
},
"message": {
"type": "string",
"description": "Human-readable explanation of the error."
},
"details": {
"description": "Optional structured error details."
}
},
"required": ["code", "message"],
"additionalProperties": false,
"description": "Canonical error details."
}
},
"required": ["error"],
"additionalProperties": false,
"title": "v2 error response",
"description": "Canonical error envelope returned by the public v2 API.",
"examples": [
{
"error": {
"code": "BAD_REQUEST",
"message": "The request is invalid."
}
}
]
},
"V2ApiTable": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique table identifier."
},
"name": {
"type": "string",
"description": "Table name."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Table description, or null when none is set."
},
"ownerEmail": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Current email address of the table owner.",
"examples": ["owner@example.com"]
},
"schema": {
"type": "object",
"properties": {
"columns": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"description": "Stable server-assigned column identifier.",
"type": "string"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"pattern": "^[a-z_][a-z0-9_]*$",
"description": "Column name used as the public row-data key."
},
"type": {
"type": "string",
"enum": ["string", "number", "currency", "boolean", "date", "json", "select"],
"description": "Data type of values stored in the column."
},
"required": {
"default": false,
"description": "Whether inserts require a value for this column.",
"type": "boolean"
},
"unique": {
"default": false,
"description": "Whether values must be unique across table rows.",
"type": "boolean"
},
"workflowGroupId": {
"description": "Workflow group whose output populates this column.",
"type": "string"
},
"options": {
"description": "Options declared for a select column.",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Stable select-option identifier."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Display name of the select option."
}
},
"required": ["id", "name"],
"additionalProperties": false
}
},
"multiple": {
"description": "Whether a select column accepts multiple options.",
"type": "boolean"
},
"currencyCode": {
"description": "ISO 4217 code for a currency column, normalized to uppercase.",
"type": "string",
"pattern": "^[A-Za-z]{3}$"
}
},
"required": ["name", "type", "required", "unique"],
"additionalProperties": false,
"description": "A typed column in a table schema."
},
"description": "Table column definitions."
}
},
"required": ["columns"],
"additionalProperties": false,
"description": "Typed table schema."
},
"rowCount": {
"type": "number",
"description": "Current number of rows in the table."
},
"maxRows": {
"type": "number",
"description": "Maximum rows allowed by the workspace plan."
},
"folderPath": {
"type": "string",
"description": "Canonical slash-prefixed folder path. `/` is the workspace root."
},
"locks": {
"type": "object",
"properties": {
"schemaLocked": {
"type": "boolean",
"description": "Whether column-schema changes are locked."
},
"insertLocked": {
"type": "boolean",
"description": "Whether row insertion is locked."
},
"updateLocked": {
"type": "boolean",
"description": "Whether row updates are locked."
},
"deleteLocked": {
"type": "boolean",
"description": "Whether row and table deletion is locked."
}
},
"required": ["schemaLocked", "insertLocked", "updateLocked", "deleteLocked"],
"additionalProperties": false,
"description": "Read-only table governance locks."
},
"job": {
"anyOf": [
{
"$ref": "#/components/schemas/V2TableJobState"
},
{
"type": "null"
}
],
"description": "Current background job, or null when idle."
},
"createdAt": {
"type": "string",
"description": "ISO 8601 timestamp when the table was created."
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 timestamp when the table was last modified."
}
},
"required": [
"id",
"name",
"description",
"ownerEmail",
"schema",
"rowCount",
"maxRows",
"folderPath",
"locks",
"job",
"createdAt",
"updatedAt"
],
"additionalProperties": false,
"title": "Table",
"description": "A user-defined table with typed columns and governance state."
},
"V2TableJobState": {
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Background job identifier, or null when unavailable."
},
"type": {
"anyOf": [
{
"type": "string",
"enum": ["import", "delete", "export", "backfill", "update"]
},
{
"type": "null"
}
],
"description": "Kind of background table work."
},
"status": {
"type": "string",
"enum": ["running", "ready", "failed", "canceled"],
"description": "Current background job state."
},
"rowsProcessed": {
"type": "number",
"description": "Number of rows processed by the job."
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Failure reason, or null when the job has not failed."
}
},
"required": ["id", "type", "status", "rowsProcessed", "error"],
"additionalProperties": false,
"title": "Table job state",
"description": "Current background work associated with a table."
},
"V2TableListResponse": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/V2ApiTable"
},
"description": "Items in the current page."
},
"nextCursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Opaque cursor for the next page, or null when no more items remain."
}
},
"required": ["data", "nextCursor"],
"additionalProperties": false,
"title": "Table list response",
"description": "A cursor-paginated page of tables."
},
"V2TableData": {
"type": "object",
"properties": {
"table": {
"description": "The requested table.",
"$ref": "#/components/schemas/V2ApiTable"
}
},
"required": ["table"],
"additionalProperties": false,
"title": "Table data",
"description": "A single table payload."
},
"V2CreateTableResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Create table response",
"description": "The created table."
},
"CreateTableRequest": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[a-z_][a-z0-9_]*$",
"description": "Table name."
},
"description": {
"description": "Optional table description.",
"type": "string",
"maxLength": 500
},
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"schema": {
"type": "object",
"properties": {
"columns": {
"minItems": 1,
"maxItems": 1000,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"description": "Optional client-provided column identifier.",
"type": "string"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"pattern": "^[a-z_][a-z0-9_]*$",
"description": "Column name."
},
"type": {
"type": "string",
"enum": ["string", "number", "currency", "boolean", "date", "json", "select"],
"description": "Column data type."
},
"unique": {
"description": "Whether values in the column must be unique.",
"type": "boolean"
},
"options": {
"description": "Select options for select-type columns.",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Stable select-option identifier."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Display name of the select option."
}
},
"required": ["id", "name"]
}
},
"multiple": {
"description": "Whether a select column accepts multiple values.",
"type": "boolean"
},
"currencyCode": {
"description": "ISO 4217 code for currency columns.",
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
"workflowGroupId": {
"description": "Workflow group initially associated with the column.",
"type": "string"
}
},
"required": ["name", "type"],
"additionalProperties": false
},
"description": "Initial table columns."
}
},
"required": ["columns"],
"additionalProperties": false,
"description": "Initial table column definitions."
},
"folderPath": {
"description": "Folder in which to create the table.",
"type": "string"
}
},
"required": ["name", "workspaceId", "schema"],
"additionalProperties": false,
"title": "Create table request",
"description": "Workspace, table metadata, folder placement, and typed columns."
},
"V2TableResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Table response",
"description": "A single table."
},
"V2DeleteTableData": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identifier of the deleted table."
},
"deleted": {
"type": "boolean",
"const": true,
"description": "Confirms that the table was deleted."
}
},
"required": ["id", "deleted"],
"additionalProperties": false,
"title": "Delete table data",
"description": "Table deletion acknowledgement."
},
"V2DeleteTableResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2DeleteTableData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Delete table response",
"description": "Table deletion acknowledgement."
},
"V2UpdateTableResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Update table response",
"description": "The updated table."
},
"UpdateTableRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"name": {
"description": "Replacement table name.",
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[a-z_][a-z0-9_]*$"
},
"description": {
"anyOf": [
{
"description": "Optional table description.",
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Replacement table description, or null to clear it."
},
"folderPath": {
"description": "Folder path. A missing leading slash is normalized before validation.",
"type": "string"
}
},
"required": ["workspaceId"],
"additionalProperties": false,
"title": "Update table request",
"description": "Workspace scope and one or more table metadata or placement changes."
},
"V2TableColumnsData": {
"type": "object",
"properties": {
"columns": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"description": "Stable server-assigned column identifier.",
"type": "string"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"pattern": "^[a-z_][a-z0-9_]*$",
"description": "Column name used as the public row-data key."
},
"type": {
"type": "string",
"enum": ["string", "number", "currency", "boolean", "date", "json", "select"],
"description": "Data type of values stored in the column."
},
"required": {
"default": false,
"description": "Whether inserts require a value for this column.",
"type": "boolean"
},
"unique": {
"default": false,
"description": "Whether values must be unique across table rows.",
"type": "boolean"
},
"workflowGroupId": {
"description": "Workflow group whose output populates this column.",
"type": "string"
},
"options": {
"description": "Options declared for a select column.",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Stable select-option identifier."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Display name of the select option."
}
},
"required": ["id", "name"],
"additionalProperties": false
}
},
"multiple": {
"description": "Whether a select column accepts multiple options.",
"type": "boolean"
},
"currencyCode": {
"description": "ISO 4217 code for a currency column, normalized to uppercase.",
"type": "string",
"pattern": "^[A-Za-z]{3}$"
}
},
"required": ["name", "type", "required", "unique"],
"additionalProperties": false,
"description": "A typed column in a table schema."
},
"description": "Current table columns."
}
},
"required": ["columns"],
"additionalProperties": false,
"title": "Table columns data",
"description": "The table column list after a schema mutation."
},
"V2TableColumnsResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableColumnsData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Table columns response",
"description": "The table column list after a schema mutation."
},
"AddTableColumnRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the table."
},
"column": {
"type": "object",
"properties": {
"id": {
"description": "Optional client-provided column identifier.",
"type": "string"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"pattern": "^[a-z_][a-z0-9_]*$",
"description": "Column name."
},
"type": {
"type": "string",
"enum": ["string", "number", "currency", "boolean", "date", "json", "select"],
"description": "Column data type."
},
"unique": {
"description": "Whether values in the column must be unique.",
"type": "boolean"
},
"options": {
"description": "Select options for select-type columns.",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Stable select-option identifier."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Display name of the select option."
}
},
"required": ["id", "name"]
}
},
"multiple": {
"description": "Whether a select column accepts multiple values.",
"type": "boolean"
},
"currencyCode": {
"description": "ISO 4217 code for currency columns.",
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
"position": {
"description": "Zero-based insertion position for the column.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": ["name", "type"],
"additionalProperties": false,
"description": "Column definition to add."
}
},
"required": ["workspaceId", "column"],
"additionalProperties": false,
"title": "Add table column request",
"description": "Workspace scope and the typed column to add.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"column": {
"name": "plan",
"type": "string"
}
}
]
},
"UpdateTableColumnRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the table."
},
"columnName": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"pattern": "^[a-z_][a-z0-9_]*$",
"description": "Current name of the column to update."
},
"updates": {
"type": "object",
"properties": {
"name": {
"description": "Replacement column name.",
"type": "string",
"minLength": 1,
"maxLength": 50,
"pattern": "^[a-z_][a-z0-9_]*$"
},
"type": {
"description": "Replacement column data type.",
"type": "string",
"enum": ["string", "number", "currency", "boolean", "date", "json", "select"]
},
"unique": {
"description": "Whether values in the column must be unique.",
"type": "boolean"
},
"options": {
"description": "Replacement select options for select-type columns.",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Stable select-option identifier."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Display name of the select option."
}
},
"required": ["id", "name"]
}
},
"multiple": {
"description": "Whether a select column accepts multiple values.",
"type": "boolean"
},
"currencyCode": {
"description": "Replacement ISO 4217 code for a currency column.",
"type": "string",
"pattern": "^[A-Za-z]{3}$"
}
},
"additionalProperties": false,
"description": "Mutable column fields."
}
},
"required": ["workspaceId", "columnName", "updates"],
"additionalProperties": false,
"title": "Update table column request",
"description": "Workspace scope, current column name, and fields to update.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"columnName": "plan",
"updates": {
"name": "subscriptionPlan"
}
}
]
},
"DeleteTableColumnRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"columnName": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"pattern": "^[a-z_][a-z0-9_]*$",
"description": "Name of the column to delete."
}
},
"required": ["workspaceId", "columnName"],
"title": "Delete table column request",
"description": "Workspace scope and column name to delete.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"columnName": "legacyStatus"
}
]
},
"V2ApiTableRow": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique row identifier."
},
"data": {
"description": "Row cells keyed by column name.",
"$ref": "#/components/schemas/V2TableRowData"
},
"createdAt": {
"type": "string",
"description": "ISO 8601 timestamp when the row was created."
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 timestamp when the row was last modified."
}
},
"required": ["id", "data", "createdAt", "updatedAt"],
"additionalProperties": false,
"title": "Table row",
"description": "A table row with user-defined cell values."
},
"V2TableRowData": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"description": "User-defined cell value interpreted by its column definition."
},
"description": "User-defined row cells keyed by column name.",
"title": "Table row data",
"examples": [
{
"email": "jane@example.com",
"name": "Jane Doe",
"age": 30
}
]
},
"V2TableRowListResponse": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/V2ApiTableRow"
},
"description": "Items in the current page."
},
"nextCursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Opaque cursor for the next page, or null when no more items remain."
}
},
"required": ["data", "nextCursor"],
"additionalProperties": false,
"title": "Table row list response",
"description": "A cursor-paginated page of table rows."
},
"V2CreateSingleTableRowResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableRowPayload"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Create single table row response",
"description": "Response returned after inserting one table row."
},
"V2TableRowPayload": {
"type": "object",
"properties": {
"row": {
"description": "The requested table row.",
"$ref": "#/components/schemas/V2ApiTableRow"
}
},
"required": ["row"],
"additionalProperties": false,
"title": "Table row payload",
"description": "A single table row payload."
},
"V2CreateBatchTableRowsResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2BatchInsertRowsData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Create batch table rows response",
"description": "Response returned after inserting a batch of table rows."
},
"V2BatchInsertRowsData": {
"type": "object",
"properties": {
"rows": {
"type": "array",
"items": {
"$ref": "#/components/schemas/V2ApiTableRow"
},
"description": "Inserted table rows."
},
"insertedCount": {
"type": "number",
"description": "Number of inserted rows."
}
},
"required": ["rows", "insertedCount"],
"additionalProperties": false,
"title": "Batch insert rows data",
"description": "Rows created by a batch insert."
},
"V2CreateTableRowsResponse": {
"anyOf": [
{
"$ref": "#/components/schemas/V2CreateSingleTableRowResponse"
},
{
"$ref": "#/components/schemas/V2CreateBatchTableRowsResponse"
}
],
"title": "Create table rows response",
"description": "The inserted single row or inserted batch result."
},
"CreateTableRowsRequest": {
"anyOf": [
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"rows": {
"minItems": 1,
"maxItems": 1000,
"type": "array",
"items": {
"$ref": "#/components/schemas/V2TableRowData"
},
"description": "Rows to insert, with cells keyed by column name."
}
},
"required": ["workspaceId", "rows"]
},
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"data": {
"description": "Row cells keyed by column name.",
"$ref": "#/components/schemas/V2TableRowData"
},
"__privateSecretProvenance": {
"description": "Private encrypted secret provenance for trusted internal callers.",
"type": "object",
"properties": {
"version": {
"type": "number",
"const": 1,
"description": "Private provenance bundle format version."
},
"complete": {
"type": "boolean",
"description": "Whether the private provenance bundle is complete."
},
"selections": {
"maxItems": 10000,
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 4096,
"description": "Selection key carrying provenance."
},
"provenance": {
"type": "object",
"properties": {
"version": {
"type": "number",
"const": 1,
"description": "Secret provenance format version."
},
"complete": {
"type": "boolean",
"description": "Whether the provenance trace is complete."
},
"entries": {
"maxItems": 10000,
"type": "array",
"items": {
"type": "object",
"properties": {
"encryptedValue": {
"type": "string",
"minLength": 1,
"maxLength": 8388608,
"description": "Encrypted secret value carried across the trusted execution boundary."
},
"name": {
"description": "Optional source secret name.",
"type": "string",
"minLength": 1,
"maxLength": 1024
}
},
"required": ["encryptedValue"],
"additionalProperties": false
},
"description": "Encrypted secret provenance entries."
},
"scope": {
"description": "Authorization scope bound to the encrypted provenance.",
"type": "object",
"properties": {
"userId": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"description": "User scope for the encrypted provenance."
},
"workspaceId": {
"description": "Optional workspace scope for the encrypted provenance.",
"type": "string",
"minLength": 1,
"maxLength": 1024
}
},
"required": ["userId"],
"additionalProperties": false
}
},
"required": ["version", "complete", "entries"],
"additionalProperties": false,
"description": "Encrypted provenance for this selection."
}
},
"required": ["key", "provenance"],
"additionalProperties": false
},
"description": "Selections and their encrypted provenance."
}
},
"required": ["version", "complete", "selections"],
"additionalProperties": false
},
"afterRowId": {
"description": "Row after which to insert the new row.",
"type": "string",
"minLength": 1
},
"beforeRowId": {
"description": "Row before which to insert the new row.",
"type": "string",
"minLength": 1
}
},
"required": ["workspaceId", "data"]
}
],
"title": "Create table rows request",
"description": "A single row or bounded row batch keyed by column name.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"data": {
"email": "jane@example.com",
"status": "active"
}
}
]
},
"V2UpdateRowsData": {
"type": "object",
"properties": {
"updatedCount": {
"type": "number",
"description": "Number of updated rows."
},
"updatedRowIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Identifiers of updated rows."
}
},
"required": ["updatedCount", "updatedRowIds"],
"additionalProperties": false,
"title": "Update rows data",
"description": "Result of a bulk row update."
},
"V2UpdateTableRowsResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2UpdateRowsData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Update table rows response",
"description": "Updated row count and identifiers."
},
"UpdateTableRowsRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"filter": {
"description": "Recursive predicate tree with exactly one non-empty `all` or `any` group at each group node."
},
"data": {
"description": "Row-data patch applied to every matching row.",
"$ref": "#/components/schemas/V2TableRowData"
},
"limit": {
"description": "Maximum matching rows to update.",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"__privateSecretProvenance": {
"description": "Private encrypted secret provenance for trusted internal callers.",
"type": "object",
"properties": {
"version": {
"type": "number",
"const": 1,
"description": "Private provenance bundle format version."
},
"complete": {
"type": "boolean",
"description": "Whether the private provenance bundle is complete."
},
"selections": {
"maxItems": 10000,
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 4096,
"description": "Selection key carrying provenance."
},
"provenance": {
"type": "object",
"properties": {
"version": {
"type": "number",
"const": 1,
"description": "Secret provenance format version."
},
"complete": {
"type": "boolean",
"description": "Whether the provenance trace is complete."
},
"entries": {
"maxItems": 10000,
"type": "array",
"items": {
"type": "object",
"properties": {
"encryptedValue": {
"type": "string",
"minLength": 1,
"maxLength": 8388608,
"description": "Encrypted secret value carried across the trusted execution boundary."
},
"name": {
"description": "Optional source secret name.",
"type": "string",
"minLength": 1,
"maxLength": 1024
}
},
"required": ["encryptedValue"],
"additionalProperties": false
},
"description": "Encrypted secret provenance entries."
},
"scope": {
"description": "Authorization scope bound to the encrypted provenance.",
"type": "object",
"properties": {
"userId": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"description": "User scope for the encrypted provenance."
},
"workspaceId": {
"description": "Optional workspace scope for the encrypted provenance.",
"type": "string",
"minLength": 1,
"maxLength": 1024
}
},
"required": ["userId"],
"additionalProperties": false
}
},
"required": ["version", "complete", "entries"],
"additionalProperties": false,
"description": "Encrypted provenance for this selection."
}
},
"required": ["key", "provenance"],
"additionalProperties": false
},
"description": "Selections and their encrypted provenance."
}
},
"required": ["version", "complete", "selections"],
"additionalProperties": false
}
},
"required": ["workspaceId", "filter", "data"],
"title": "Update table rows request",
"description": "Workspace scope, typed predicate, and row-data patch."
},
"V2DeleteRowsData": {
"type": "object",
"properties": {
"deletedCount": {
"type": "number",
"description": "Number of deleted rows."
},
"deletedRowIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Identifiers of deleted rows."
},
"requestedCount": {
"description": "Number of row identifiers requested.",
"type": "number"
},
"missingRowIds": {
"description": "Requested row identifiers not found.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["deletedCount", "deletedRowIds"],
"additionalProperties": false,
"title": "Delete rows data",
"description": "Result of a bulk row deletion."
},
"V2DeleteTableRowsResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2DeleteRowsData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Delete table rows response",
"description": "Deleted row counts, identifiers, and optional missing identifiers."
},
"DeleteTableRowsRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"filter": {
"description": "Recursive predicate tree with exactly one non-empty `all` or `any` group at each group node."
},
"limit": {
"description": "Maximum matching rows to delete.",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"rowIds": {
"description": "Explicit row identifiers to delete.",
"minItems": 1,
"maxItems": 1000,
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
},
"required": ["workspaceId"],
"title": "Delete table rows request",
"description": "Workspace scope and exactly one of a predicate or row identifier list.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"rowIds": ["row_1f3e5d7c9b8a4c2d806e4a6b8d0f2e93"]
}
]
},
"V2TableRowResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableRowPayload"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Table row response",
"description": "A single table row."
},
"UpdateTableRowRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"data": {
"description": "Partial row-data patch keyed by column name.",
"$ref": "#/components/schemas/V2TableRowData"
},
"__privateSecretProvenance": {
"description": "Private encrypted secret provenance for trusted internal callers.",
"type": "object",
"properties": {
"version": {
"type": "number",
"const": 1,
"description": "Private provenance bundle format version."
},
"complete": {
"type": "boolean",
"description": "Whether the private provenance bundle is complete."
},
"selections": {
"maxItems": 10000,
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 4096,
"description": "Selection key carrying provenance."
},
"provenance": {
"type": "object",
"properties": {
"version": {
"type": "number",
"const": 1,
"description": "Secret provenance format version."
},
"complete": {
"type": "boolean",
"description": "Whether the provenance trace is complete."
},
"entries": {
"maxItems": 10000,
"type": "array",
"items": {
"type": "object",
"properties": {
"encryptedValue": {
"type": "string",
"minLength": 1,
"maxLength": 8388608,
"description": "Encrypted secret value carried across the trusted execution boundary."
},
"name": {
"description": "Optional source secret name.",
"type": "string",
"minLength": 1,
"maxLength": 1024
}
},
"required": ["encryptedValue"],
"additionalProperties": false
},
"description": "Encrypted secret provenance entries."
},
"scope": {
"description": "Authorization scope bound to the encrypted provenance.",
"type": "object",
"properties": {
"userId": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"description": "User scope for the encrypted provenance."
},
"workspaceId": {
"description": "Optional workspace scope for the encrypted provenance.",
"type": "string",
"minLength": 1,
"maxLength": 1024
}
},
"required": ["userId"],
"additionalProperties": false
}
},
"required": ["version", "complete", "entries"],
"additionalProperties": false,
"description": "Encrypted provenance for this selection."
}
},
"required": ["key", "provenance"],
"additionalProperties": false
},
"description": "Selections and their encrypted provenance."
}
},
"required": ["version", "complete", "selections"],
"additionalProperties": false
}
},
"required": ["workspaceId", "data"],
"title": "Update table row request",
"description": "Workspace scope and row-data patch keyed by column name.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"data": {
"status": "active"
}
}
]
},
"V2DeleteRowData": {
"type": "object",
"properties": {
"deletedCount": {
"type": "number",
"description": "Number of deleted rows."
},
"deletedRowIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Identifier of the deleted row."
}
},
"required": ["deletedCount", "deletedRowIds"],
"additionalProperties": false,
"title": "Delete row data",
"description": "Result of a single-row deletion."
},
"V2DeleteTableRowResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2DeleteRowData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Delete table row response",
"description": "Deleted row count and identifier."
},
"V2UpsertRowData": {
"type": "object",
"properties": {
"row": {
"description": "The inserted or updated table row.",
"$ref": "#/components/schemas/V2ApiTableRow"
},
"operation": {
"type": "string",
"enum": ["insert", "update"],
"description": "Whether the row was inserted or updated."
}
},
"required": ["row", "operation"],
"additionalProperties": false,
"title": "Upsert row data",
"description": "Row returned by an upsert and the operation performed."
},
"V2UpsertTableRowResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2UpsertRowData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Upsert table row response",
"description": "The resulting row and whether it was inserted or updated."
},
"UpsertTableRowRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"data": {
"description": "Row cells keyed by column name.",
"$ref": "#/components/schemas/V2TableRowData"
},
"conflictTarget": {
"description": "Unique column used to detect a conflict.",
"type": "string",
"minLength": 1
},
"__privateSecretProvenance": {
"description": "Private encrypted secret provenance for trusted internal callers.",
"type": "object",
"properties": {
"version": {
"type": "number",
"const": 1,
"description": "Private provenance bundle format version."
},
"complete": {
"type": "boolean",
"description": "Whether the private provenance bundle is complete."
},
"selections": {
"maxItems": 10000,
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 4096,
"description": "Selection key carrying provenance."
},
"provenance": {
"type": "object",
"properties": {
"version": {
"type": "number",
"const": 1,
"description": "Secret provenance format version."
},
"complete": {
"type": "boolean",
"description": "Whether the provenance trace is complete."
},
"entries": {
"maxItems": 10000,
"type": "array",
"items": {
"type": "object",
"properties": {
"encryptedValue": {
"type": "string",
"minLength": 1,
"maxLength": 8388608,
"description": "Encrypted secret value carried across the trusted execution boundary."
},
"name": {
"description": "Optional source secret name.",
"type": "string",
"minLength": 1,
"maxLength": 1024
}
},
"required": ["encryptedValue"],
"additionalProperties": false
},
"description": "Encrypted secret provenance entries."
},
"scope": {
"description": "Authorization scope bound to the encrypted provenance.",
"type": "object",
"properties": {
"userId": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"description": "User scope for the encrypted provenance."
},
"workspaceId": {
"description": "Optional workspace scope for the encrypted provenance.",
"type": "string",
"minLength": 1,
"maxLength": 1024
}
},
"required": ["userId"],
"additionalProperties": false
}
},
"required": ["version", "complete", "entries"],
"additionalProperties": false,
"description": "Encrypted provenance for this selection."
}
},
"required": ["key", "provenance"],
"additionalProperties": false
},
"description": "Selections and their encrypted provenance."
}
},
"required": ["version", "complete", "selections"],
"additionalProperties": false
}
},
"required": ["workspaceId", "data"],
"title": "Upsert table row request",
"description": "Workspace scope, row data, and optional unique-column conflict target.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"data": {
"email": "jane@example.com",
"status": "active"
},
"conflictTarget": "email"
}
]
},
"V2QueryTableRowsResponse": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/V2ApiTableRow"
},
"description": "Items in the current page."
},
"nextCursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Opaque cursor for the next page, or null when no more items remain."
}
},
"required": ["data", "nextCursor"],
"additionalProperties": false,
"title": "Query table rows response",
"description": "A cursor-paginated page of matching table rows."
},
"QueryTableRowsRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"predicate": {
"description": "Recursive predicate tree with exactly one non-empty `all` or `any` group at each group node."
},
"sort": {
"description": "Ordered table-row sort specification.",
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Column name to sort by."
},
"direction": {
"type": "string",
"enum": ["asc", "desc"],
"description": "Sort direction for this column."
}
},
"required": ["field", "direction"]
}
},
"limit": {
"description": "Maximum rows to return; zero requests an unbounded result.",
"type": "integer",
"minimum": 0,
"maximum": 1000
},
"cursor": {
"description": "Opaque cursor returned by the previous query page.",
"type": "string",
"minLength": 1
}
},
"required": ["workspaceId"],
"title": "Query table rows request",
"description": "Workspace scope, optional predicate and sort, and cursor pagination controls.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"predicate": {
"all": [
{
"field": "status",
"op": "eq",
"value": "active"
}
]
},
"sort": [
{
"field": "createdAt",
"direction": "desc"
}
],
"limit": 100
}
]
},
"V2ApiTableView": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique saved-view identifier."
},
"tableId": {
"type": "string",
"description": "Table to which the view belongs."
},
"name": {
"type": "string",
"description": "Saved-view display name."
},
"config": {
"description": "Saved filter, sort, and column-layout configuration.",
"$ref": "#/components/schemas/V2TableViewConfig"
},
"isDefault": {
"type": "boolean",
"description": "Whether this is the table default view."
},
"createdByEmail": {
"anyOf": [
{
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
{
"type": "null"
}
],
"description": "Current author email, or null when removed."
},
"createdAt": {
"type": "string",
"description": "ISO 8601 timestamp when the view was created."
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 timestamp when the view was last modified."
}
},
"required": [
"id",
"tableId",
"name",
"config",
"isDefault",
"createdByEmail",
"createdAt",
"updatedAt"
],
"additionalProperties": false,
"title": "Table view",
"description": "A named saved presentation of table rows and columns."
},
"V2TableViewConfig": {
"type": "object",
"properties": {
"columnWidths": {
"description": "Column widths keyed by stable column identifier.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number",
"exclusiveMinimum": 0
}
},
"columnOrder": {
"description": "Stable column identifiers in display order.",
"type": "array",
"items": {
"type": "string"
}
},
"pinnedColumns": {
"description": "Stable identifiers of pinned columns.",
"type": "array",
"items": {
"type": "string"
}
},
"hiddenColumns": {
"description": "Stable identifiers of hidden columns.",
"type": "array",
"items": {
"type": "string"
}
},
"filter": {
"description": "Saved row predicate, or null when the view is unfiltered.",
"anyOf": [
{
"description": "Recursive saved predicate tree. Runtime validation uses the canonical predicate schema."
},
{
"type": "null"
}
]
},
"sort": {
"description": "Saved ordered sort specification, or null for default ordering.",
"anyOf": [
{
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Column name to sort by."
},
"direction": {
"type": "string",
"enum": ["asc", "desc"],
"description": "Sort direction for this column."
}
},
"required": ["field", "direction"],
"additionalProperties": false
}
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"title": "Table view configuration",
"description": "Saved filter, sort, and column-layout settings for a table view."
},
"V2TableViewListResponse": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/V2ApiTableView"
},
"description": "Items in the current page."
},
"nextCursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Opaque cursor for the next page, or null when no more items remain."
}
},
"required": ["data", "nextCursor"],
"additionalProperties": false,
"title": "Table view list response",
"description": "A cursor envelope containing the saved views."
},
"V2TableViewData": {
"type": "object",
"properties": {
"view": {
"description": "The requested saved table view.",
"$ref": "#/components/schemas/V2ApiTableView"
}
},
"required": ["view"],
"additionalProperties": false,
"title": "Table view data",
"description": "A single saved table-view payload."
},
"V2CreateTableViewResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableViewData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Create table view response",
"description": "The created saved view."
},
"CreateTableViewRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the table."
},
"name": {
"type": "string",
"minLength": 1,
"description": "Saved-view display name."
},
"config": {
"type": "object",
"properties": {
"columnWidths": {
"description": "Column widths keyed by stable column identifier.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number",
"exclusiveMinimum": 0
}
},
"columnOrder": {
"description": "Stable column identifiers in display order.",
"type": "array",
"items": {
"type": "string"
}
},
"pinnedColumns": {
"description": "Stable identifiers of pinned columns.",
"type": "array",
"items": {
"type": "string"
}
},
"hiddenColumns": {
"description": "Stable identifiers of hidden columns.",
"type": "array",
"items": {
"type": "string"
}
},
"filter": {
"description": "Saved row predicate, or null when the view is unfiltered.",
"anyOf": [
{
"description": "Recursive predicate condition or group, normalized to a grouped predicate after validation."
},
{
"type": "null"
}
]
},
"sort": {
"description": "Saved ordered sort specification, or null for default ordering.",
"anyOf": [
{
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Column name to sort by."
},
"direction": {
"type": "string",
"enum": ["asc", "desc"],
"description": "Sort direction for this column."
}
},
"required": ["field", "direction"]
}
},
{
"type": "null"
}
]
}
},
"description": "Saved filter, sort, and column-layout configuration."
}
},
"required": ["workspaceId", "name", "config"],
"title": "Create table view request",
"description": "Workspace scope, name, and saved filter, sort, and layout configuration."
},
"V2TableViewResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableViewData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Table view response",
"description": "A single saved table view."
},
"UpdateTableViewRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Workspace that owns the table."
},
"name": {
"description": "Replacement saved-view display name.",
"type": "string",
"minLength": 1
},
"config": {
"description": "Complete replacement saved-view configuration.",
"type": "object",
"properties": {
"columnWidths": {
"description": "Column widths keyed by stable column identifier.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number",
"exclusiveMinimum": 0
}
},
"columnOrder": {
"description": "Stable column identifiers in display order.",
"type": "array",
"items": {
"type": "string"
}
},
"pinnedColumns": {
"description": "Stable identifiers of pinned columns.",
"type": "array",
"items": {
"type": "string"
}
},
"hiddenColumns": {
"description": "Stable identifiers of hidden columns.",
"type": "array",
"items": {
"type": "string"
}
},
"filter": {
"description": "Saved row predicate, or null when the view is unfiltered.",
"anyOf": [
{
"description": "Recursive predicate condition or group, normalized to a grouped predicate after validation."
},
{
"type": "null"
}
]
},
"sort": {
"description": "Saved ordered sort specification, or null for default ordering.",
"anyOf": [
{
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Column name to sort by."
},
"direction": {
"type": "string",
"enum": ["asc", "desc"],
"description": "Sort direction for this column."
}
},
"required": ["field", "direction"]
}
},
{
"type": "null"
}
]
}
}
},
"configPatch": {
"description": "Saved-view configuration fields to shallow-merge.",
"type": "object",
"properties": {
"columnWidths": {
"description": "Column widths keyed by stable column identifier.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number",
"exclusiveMinimum": 0
}
},
"columnOrder": {
"description": "Stable column identifiers in display order.",
"type": "array",
"items": {
"type": "string"
}
},
"pinnedColumns": {
"description": "Stable identifiers of pinned columns.",
"type": "array",
"items": {
"type": "string"
}
},
"hiddenColumns": {
"description": "Stable identifiers of hidden columns.",
"type": "array",
"items": {
"type": "string"
}
},
"filter": {
"description": "Saved row predicate, or null when the view is unfiltered.",
"anyOf": [
{
"description": "Recursive predicate condition or group, normalized to a grouped predicate after validation."
},
{
"type": "null"
}
]
},
"sort": {
"description": "Saved ordered sort specification, or null for default ordering.",
"anyOf": [
{
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Column name to sort by."
},
"direction": {
"type": "string",
"enum": ["asc", "desc"],
"description": "Sort direction for this column."
}
},
"required": ["field", "direction"]
}
},
{
"type": "null"
}
]
}
}
},
"isDefault": {
"description": "Whether to promote this view to the table default.",
"type": "boolean"
}
},
"required": ["workspaceId"],
"title": "Update table view request",
"description": "Workspace scope and one or more saved-view changes."
},
"V2DeleteTableViewData": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identifier of the deleted view."
}
},
"required": ["id"],
"additionalProperties": false,
"title": "Delete table view data",
"description": "Saved-view deletion acknowledgement."
},
"V2DeleteTableViewResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2DeleteTableViewData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Delete table view response",
"description": "Saved-view deletion acknowledgement."
},
"V2TableWorkflowGroup": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique workflow-group identifier."
},
"workflowId": {
"type": "string",
"description": "Backing workflow identifier for a manual group."
},
"enrichmentId": {
"description": "Registry enrichment identifier.",
"type": "string"
},
"name": {
"description": "Workflow-group display name.",
"type": "string"
},
"type": {
"description": "Producer type.",
"type": "string",
"enum": ["manual", "enrichment"]
},
"dependencies": {
"description": "Input column dependencies.",
"type": "object",
"properties": {
"columns": {
"description": "Columns required as producer inputs.",
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"outputs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"blockId": {
"type": "string",
"description": "Workflow block producing this output."
},
"path": {
"type": "string",
"description": "Path to the value in the workflow block output."
},
"outputId": {
"description": "Registry enrichment output identifier.",
"type": "string"
},
"columnName": {
"type": "string",
"description": "Table column receiving the output."
}
},
"required": ["blockId", "path", "columnName"],
"additionalProperties": false
},
"description": "Workflow outputs mapped to table columns."
},
"inputMappings": {
"description": "Workflow inputs mapped from table columns.",
"type": "array",
"items": {
"type": "object",
"properties": {
"inputName": {
"type": "string",
"description": "Workflow input name."
},
"columnName": {
"type": "string",
"description": "Source table column name."
}
},
"required": ["inputName", "columnName"],
"additionalProperties": false
}
},
"deploymentMode": {
"description": "Workflow execution mode.",
"type": "string",
"enum": ["live", "deployed"]
},
"autoRun": {
"description": "Whether the group automatically runs for new rows.",
"type": "boolean"
}
},
"required": ["id", "workflowId", "outputs"],
"additionalProperties": false,
"title": "Table workflow group",
"description": "A workflow or enrichment producer and the columns it populates."
},
"V2TableWorkflowGroupListResponse": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/V2TableWorkflowGroup"
},
"description": "Items in the current page."
},
"nextCursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Opaque cursor for the next page, or null when no more items remain."
}
},
"required": ["data", "nextCursor"],
"additionalProperties": false,
"title": "Table workflow group list response",
"description": "A cursor envelope containing the table workflow groups."
},
"V2WorkflowGroupData": {
"type": "object",
"properties": {
"group": {
"description": "The created or updated workflow group.",
"$ref": "#/components/schemas/V2TableWorkflowGroup"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"description": "Stable server-assigned column identifier.",
"type": "string"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"pattern": "^[a-z_][a-z0-9_]*$",
"description": "Column name used as the public row-data key."
},
"type": {
"type": "string",
"enum": ["string", "number", "currency", "boolean", "date", "json", "select"],
"description": "Data type of values stored in the column."
},
"required": {
"default": false,
"description": "Whether inserts require a value for this column.",
"type": "boolean"
},
"unique": {
"default": false,
"description": "Whether values must be unique across table rows.",
"type": "boolean"
},
"workflowGroupId": {
"description": "Workflow group whose output populates this column.",
"type": "string"
},
"options": {
"description": "Options declared for a select column.",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Stable select-option identifier."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Display name of the select option."
}
},
"required": ["id", "name"],
"additionalProperties": false
}
},
"multiple": {
"description": "Whether a select column accepts multiple options.",
"type": "boolean"
},
"currencyCode": {
"description": "ISO 4217 code for a currency column, normalized to uppercase.",
"type": "string",
"pattern": "^[A-Za-z]{3}$"
}
},
"required": ["name", "type", "required", "unique"],
"additionalProperties": false,
"description": "A typed column in a table schema."
},
"description": "Current table columns after the mutation."
}
},
"required": ["group", "columns"],
"additionalProperties": false,
"title": "Workflow group data",
"description": "A workflow group and the resulting table columns."
},
"V2AddTableWorkflowGroupResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2WorkflowGroupData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Add table workflow group response",
"description": "The workflow group and complete resulting table columns."
},
"AddTableWorkflowGroupRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"group": {
"type": "object",
"properties": {
"id": {
"description": "Optional client-provided workflow-group identifier.",
"type": "string",
"minLength": 1
},
"workflowId": {
"default": "",
"description": "Backing workflow identifier for a manual group.",
"type": "string"
},
"enrichmentId": {
"description": "Registry enrichment identifier.",
"type": "string",
"minLength": 1
},
"name": {
"description": "Workflow-group display name.",
"type": "string"
},
"type": {
"description": "Workflow-group producer type.",
"type": "string",
"enum": ["manual", "enrichment"]
},
"dependencies": {
"description": "Producer input dependencies.",
"type": "object",
"properties": {
"columns": {
"description": "Columns required as producer inputs.",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"outputs": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"blockId": {
"default": "",
"description": "Workflow block producing this output.",
"type": "string"
},
"path": {
"default": "",
"description": "Path to the value in the workflow block output.",
"type": "string"
},
"outputId": {
"description": "Registry enrichment output identifier.",
"type": "string"
},
"columnName": {
"type": "string",
"minLength": 1,
"description": "Table column receiving the output."
}
},
"required": ["columnName"]
},
"description": "Producer outputs mapped to columns."
},
"inputMappings": {
"description": "Workflow inputs mapped from table columns.",
"type": "array",
"items": {
"type": "object",
"properties": {
"inputName": {
"type": "string",
"minLength": 1,
"description": "Workflow input name."
},
"columnName": {
"type": "string",
"minLength": 1,
"description": "Source table column name."
}
},
"required": ["inputName", "columnName"]
}
},
"deploymentMode": {
"description": "Workflow state used for cell runs.",
"type": "string",
"enum": ["live", "deployed"]
},
"autoRun": {
"description": "Whether this group automatically runs for new rows.",
"type": "boolean"
}
},
"required": ["outputs"],
"description": "Workflow or enrichment producer definition."
},
"outputColumns": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Output column name."
},
"type": {
"type": "string",
"enum": ["string", "number", "currency", "boolean", "date", "json", "select"],
"description": "Output column data type."
},
"required": {
"description": "Whether the output column is required.",
"type": "boolean"
},
"unique": {
"description": "Whether the output column must be unique.",
"type": "boolean"
}
},
"required": ["name", "type"]
},
"description": "Columns created for producer outputs."
},
"autoRun": {
"default": false,
"description": "Whether to schedule existing rows after group creation.",
"type": "boolean"
}
},
"required": ["workspaceId", "group", "outputColumns"],
"additionalProperties": false,
"title": "Add table workflow group request",
"description": "Workspace scope, producer definition, and output columns.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"group": {
"workflowId": "wf_1b3d5f7a9c2e4680b4d6f8a0c2e4b619",
"name": "Enrich company",
"outputs": [
{
"blockId": "block_lookup",
"path": "output.revenue",
"columnName": "revenue"
}
]
},
"outputColumns": [
{
"name": "revenue",
"type": "number"
}
]
}
]
},
"V2UpdateTableWorkflowGroupResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2WorkflowGroupData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Update table workflow group response",
"description": "The workflow group and complete resulting table columns."
},
"UpdateTableWorkflowGroupRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"groupId": {
"type": "string",
"minLength": 1,
"description": "Workflow group to update."
},
"workflowId": {
"description": "Replacement backing workflow identifier.",
"type": "string",
"minLength": 1
},
"name": {
"description": "Replacement workflow-group display name.",
"type": "string"
},
"dependencies": {
"description": "Replacement input dependencies.",
"type": "object",
"properties": {
"columns": {
"description": "Columns required as producer inputs.",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"outputs": {
"description": "Replacement producer outputs.",
"type": "array",
"items": {
"type": "object",
"properties": {
"blockId": {
"default": "",
"description": "Workflow block producing this output.",
"type": "string"
},
"path": {
"default": "",
"description": "Path to the value in the workflow block output.",
"type": "string"
},
"outputId": {
"description": "Registry enrichment output identifier.",
"type": "string"
},
"columnName": {
"type": "string",
"minLength": 1,
"description": "Table column receiving the output."
}
},
"required": ["columnName"]
}
},
"newOutputColumns": {
"description": "Columns to add for new outputs.",
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Output column name."
},
"type": {
"type": "string",
"enum": ["string", "number", "currency", "boolean", "date", "json", "select"],
"description": "Output column data type."
},
"required": {
"description": "Whether the output column is required.",
"type": "boolean"
},
"unique": {
"description": "Whether the output column must be unique.",
"type": "boolean"
}
},
"required": ["name", "type"]
}
},
"mappingUpdates": {
"description": "Existing output-column mapping changes.",
"type": "array",
"items": {
"type": "object",
"properties": {
"columnName": {
"type": "string",
"minLength": 1,
"description": "Existing output column to remap."
},
"blockId": {
"type": "string",
"minLength": 1,
"description": "New workflow block producing the value."
},
"path": {
"type": "string",
"minLength": 1,
"description": "New path to the workflow output value."
}
},
"required": ["columnName", "blockId", "path"]
}
},
"inputMappings": {
"description": "Replacement workflow input mappings.",
"type": "array",
"items": {
"type": "object",
"properties": {
"inputName": {
"type": "string",
"minLength": 1,
"description": "Workflow input name."
},
"columnName": {
"type": "string",
"minLength": 1,
"description": "Source table column name."
}
},
"required": ["inputName", "columnName"]
}
},
"deploymentMode": {
"description": "Replacement workflow execution mode.",
"type": "string",
"enum": ["live", "deployed"]
},
"type": {
"description": "Replacement workflow-group producer type.",
"type": "string",
"enum": ["manual", "enrichment"]
},
"autoRun": {
"description": "Replacement automatic-run setting.",
"type": "boolean"
}
},
"required": ["workspaceId", "groupId"],
"additionalProperties": false,
"title": "Update table workflow group request",
"description": "Workspace scope, workflow group identifier, and producer changes.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"groupId": "grp_5d8b2f0a6c1e4739a8b3d5f7e9c1a204",
"name": "Company profile enrichment"
}
]
},
"V2DeleteWorkflowGroupData": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identifier of the deleted workflow group."
},
"deleted": {
"type": "boolean",
"const": true,
"description": "Confirms that the workflow group was deleted."
},
"columns": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"description": "Stable server-assigned column identifier.",
"type": "string"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"pattern": "^[a-z_][a-z0-9_]*$",
"description": "Column name used as the public row-data key."
},
"type": {
"type": "string",
"enum": ["string", "number", "currency", "boolean", "date", "json", "select"],
"description": "Data type of values stored in the column."
},
"required": {
"default": false,
"description": "Whether inserts require a value for this column.",
"type": "boolean"
},
"unique": {
"default": false,
"description": "Whether values must be unique across table rows.",
"type": "boolean"
},
"workflowGroupId": {
"description": "Workflow group whose output populates this column.",
"type": "string"
},
"options": {
"description": "Options declared for a select column.",
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Stable select-option identifier."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Display name of the select option."
}
},
"required": ["id", "name"],
"additionalProperties": false
}
},
"multiple": {
"description": "Whether a select column accepts multiple options.",
"type": "boolean"
},
"currencyCode": {
"description": "ISO 4217 code for a currency column, normalized to uppercase.",
"type": "string",
"pattern": "^[A-Za-z]{3}$"
}
},
"required": ["name", "type", "required", "unique"],
"additionalProperties": false,
"description": "A typed column in a table schema."
},
"description": "Surviving table columns."
}
},
"required": ["id", "deleted", "columns"],
"additionalProperties": false,
"title": "Delete workflow group data",
"description": "Workflow-group deletion acknowledgement and surviving columns."
},
"V2DeleteTableWorkflowGroupResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2DeleteWorkflowGroupData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Delete table workflow group response",
"description": "Deletion acknowledgement and surviving table columns."
},
"DeleteTableWorkflowGroupRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"groupId": {
"type": "string",
"minLength": 1,
"description": "Workflow group to delete."
}
},
"required": ["workspaceId", "groupId"],
"additionalProperties": false,
"title": "Delete table workflow group request",
"description": "Workspace scope and workflow group identifier.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"groupId": "grp_5d8b2f0a6c1e4739a8b3d5f7e9c1a204"
}
]
},
"V2RunColumnData": {
"type": "object",
"properties": {
"dispatchId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Background dispatch identifier, or null when execution is inline."
}
},
"required": ["dispatchId"],
"additionalProperties": false,
"title": "Run column data",
"description": "Acknowledgement for a table column run."
},
"V2RunTableColumnsResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2RunColumnData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Run table columns response",
"description": "Accepted background dispatch identifier."
},
"RunTableColumnsRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"groupIds": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Workflow or enrichment groups to run."
},
"runMode": {
"default": "all",
"description": "Whether to run all or only incomplete cells.",
"type": "string",
"enum": ["all", "incomplete"]
},
"rowIds": {
"description": "Explicit row subset to run.",
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"filter": {
"description": "Recursive predicate tree with exactly one non-empty `all` or `any` group at each group node."
},
"excludeRowIds": {
"description": "Rows excluded from a select-all run scope.",
"maxItems": 10000,
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"limit": {
"description": "Optional cap on eligible rows to run.",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "rows",
"description": "Unit constrained by the run cap."
},
"max": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"description": "Maximum eligible rows to run."
}
},
"required": ["type", "max"]
}
},
"required": ["workspaceId", "groupIds"],
"title": "Run table columns request",
"description": "Workspace scope, producer groups, execution mode, and optional row scope.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"groupIds": ["grp_5d8b2f0a6c1e4739a8b3d5f7e9c1a204"]
}
]
},
"V2RunRowEnrichmentResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2RunColumnData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Run row enrichment response",
"description": "Accepted background dispatch identifier."
},
"RunRowEnrichmentRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
}
},
"required": ["workspaceId"],
"title": "Run row enrichment request",
"description": "Workspace scope for the row enrichment.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64"
}
]
},
"V2TableRowMatch": {
"type": "object",
"properties": {
"ordinal": {
"type": "number",
"description": "Zero-based row index in the filtered and sorted view."
},
"rowId": {
"type": "string",
"description": "Identifier of the matching row."
},
"column": {
"type": "string",
"description": "Column name containing the match."
}
},
"required": ["ordinal", "rowId", "column"],
"additionalProperties": false,
"title": "Table row match",
"description": "One matching cell returned by a table row search."
},
"V2FindRowsData": {
"type": "object",
"properties": {
"matches": {
"type": "array",
"items": {
"$ref": "#/components/schemas/V2TableRowMatch"
},
"description": "Matching table cells."
},
"truncated": {
"type": "boolean",
"description": "Whether more matches exist beyond the server cap."
}
},
"required": ["matches", "truncated"],
"additionalProperties": false,
"title": "Find rows data",
"description": "Matching table cells and truncation state."
},
"V2FindTableRowsResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2FindRowsData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Find table rows response",
"description": "Matching table cells and truncation state."
},
"FindTableRowsRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"q": {
"type": "string",
"minLength": 1,
"description": "Case-insensitive cell substring to find."
},
"predicate": {
"description": "Recursive predicate tree with exactly one non-empty `all` or `any` group at each group node."
},
"sort": {
"description": "Ordered table-row sort specification.",
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Column name to sort by."
},
"direction": {
"type": "string",
"enum": ["asc", "desc"],
"description": "Sort direction for this column."
}
},
"required": ["field", "direction"]
}
}
},
"required": ["workspaceId", "q"],
"title": "Find table rows request",
"description": "Workspace scope, substring query, and optional predicate and sort.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"q": "acme",
"predicate": {
"all": [
{
"field": "status",
"op": "eq",
"value": "active"
}
]
}
}
]
},
"V2TableUploadImportSource": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "upload",
"description": "Upload-backed import discriminator."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "CSV filename."
},
"contentType": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "CSV MIME type."
},
"size": {
"type": "integer",
"minimum": 1,
"maximum": 5368709120,
"description": "Exact CSV file size in bytes."
}
},
"required": ["type", "name", "contentType", "size"],
"additionalProperties": false,
"title": "Upload table import source",
"description": "CSV file uploaded through signed transfer instructions."
},
"V2UploadBackedTableImport": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique table-import identifier."
},
"workspaceId": {
"type": "string",
"description": "Workspace that owns the import."
},
"status": {
"type": "string",
"enum": [
"uploading",
"queued",
"processing",
"completed",
"failed",
"canceled",
"expired"
],
"description": "Current import lifecycle state."
},
"source": {
"description": "Uploaded CSV source for this import.",
"$ref": "#/components/schemas/V2TableUploadImportSource"
},
"target": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "new",
"description": "Create-new-table target discriminator."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[a-z_][a-z0-9_]*$",
"description": "Name of the table to create."
},
"folderPath": {
"description": "Folder path. A missing leading slash is normalized before validation.",
"type": "string"
}
},
"required": ["type", "name"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "existing",
"description": "Existing-table target discriminator."
},
"tableId": {
"type": "string",
"minLength": 1,
"description": "Existing target table identifier."
},
"mode": {
"type": "string",
"enum": ["append", "replace"],
"description": "Whether to append rows or replace existing rows."
}
},
"required": ["type", "tableId", "mode"],
"additionalProperties": false
}
],
"description": "New or existing table import target."
},
"tableId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Resulting or target table identifier."
},
"rowsProcessed": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Rows processed so far."
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Terminal failure reason, or null."
},
"createdAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"description": "ISO 8601 creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"description": "ISO 8601 last-update timestamp."
},
"completedAt": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
{
"type": "null"
}
],
"description": "ISO 8601 completion timestamp, or null."
}
},
"required": [
"id",
"workspaceId",
"status",
"source",
"target",
"tableId",
"rowsProcessed",
"error",
"createdAt",
"updatedAt",
"completedAt"
],
"additionalProperties": false,
"title": "Upload-backed table import",
"description": "Table import whose CSV source is uploaded through signed transfer instructions."
},
"V2PutUploadTransfer": {
"type": "object",
"properties": {
"method": {
"type": "string",
"const": "put",
"description": "Upload strategy discriminator."
},
"url": {
"type": "string",
"format": "uri",
"description": "Signed URL to which the file bytes are uploaded."
},
"headers": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
},
"description": "Headers that must be included with the upload request."
}
},
"required": ["method", "url", "headers"],
"additionalProperties": false,
"title": "Direct upload transfer",
"description": "Instructions for uploading bytes to one signed URL."
},
"V2MultipartUploadTransfer": {
"type": "object",
"properties": {
"method": {
"type": "string",
"const": "multipart",
"description": "Upload strategy discriminator."
},
"partSize": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Required size of each non-final part in bytes."
},
"partCount": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 640,
"description": "Total number of upload parts."
}
},
"required": ["method", "partSize", "partCount"],
"additionalProperties": false,
"title": "Multipart upload transfer",
"description": "Instructions for splitting bytes into a multipart upload."
},
"V2TableWorkspaceFileImportSource": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "workspace_file",
"description": "Workspace-file source discriminator."
},
"fileId": {
"type": "string",
"minLength": 1,
"description": "Existing workspace file identifier."
}
},
"required": ["type", "fileId"],
"additionalProperties": false,
"title": "Workspace file table import source",
"description": "Existing workspace file used as a CSV import source."
},
"V2WorkspaceFileTableImport": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique table-import identifier."
},
"workspaceId": {
"type": "string",
"description": "Workspace that owns the import."
},
"status": {
"type": "string",
"enum": [
"uploading",
"queued",
"processing",
"completed",
"failed",
"canceled",
"expired"
],
"description": "Current import lifecycle state."
},
"source": {
"description": "Workspace-file CSV source for this import.",
"$ref": "#/components/schemas/V2TableWorkspaceFileImportSource"
},
"target": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "new",
"description": "Create-new-table target discriminator."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[a-z_][a-z0-9_]*$",
"description": "Name of the table to create."
},
"folderPath": {
"description": "Folder path. A missing leading slash is normalized before validation.",
"type": "string"
}
},
"required": ["type", "name"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "existing",
"description": "Existing-table target discriminator."
},
"tableId": {
"type": "string",
"minLength": 1,
"description": "Existing target table identifier."
},
"mode": {
"type": "string",
"enum": ["append", "replace"],
"description": "Whether to append rows or replace existing rows."
}
},
"required": ["type", "tableId", "mode"],
"additionalProperties": false
}
],
"description": "New or existing table import target."
},
"tableId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Resulting or target table identifier."
},
"rowsProcessed": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Rows processed so far."
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Terminal failure reason, or null."
},
"createdAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"description": "ISO 8601 creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"description": "ISO 8601 last-update timestamp."
},
"completedAt": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
{
"type": "null"
}
],
"description": "ISO 8601 completion timestamp, or null."
}
},
"required": [
"id",
"workspaceId",
"status",
"source",
"target",
"tableId",
"rowsProcessed",
"error",
"createdAt",
"updatedAt",
"completedAt"
],
"additionalProperties": false,
"title": "Workspace-file table import",
"description": "Table import whose CSV source is an existing workspace file."
},
"V2CreateTableImportData": {
"anyOf": [
{
"type": "object",
"properties": {
"session": {
"description": "Created upload-backed import session.",
"$ref": "#/components/schemas/V2UploadBackedTableImport"
},
"uploadToken": {
"type": "string",
"minLength": 1,
"description": "Signed token for upload control requests."
},
"transfer": {
"oneOf": [
{
"$ref": "#/components/schemas/V2PutUploadTransfer"
},
{
"$ref": "#/components/schemas/V2MultipartUploadTransfer"
}
],
"description": "Signed CSV upload instructions."
}
},
"required": ["session", "uploadToken", "transfer"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"session": {
"description": "Created workspace-file import session.",
"$ref": "#/components/schemas/V2WorkspaceFileTableImport"
},
"uploadToken": {
"type": "null",
"description": "Always null for workspace-file imports."
},
"transfer": {
"type": "null",
"description": "Always null for workspace-file imports."
}
},
"required": ["session", "uploadToken", "transfer"],
"additionalProperties": false
}
],
"title": "Create table import data",
"description": "Created import session and upload instructions when the source needs transfer."
},
"V2CreateTableImportResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2CreateTableImportData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Create table import response",
"description": "The import session and upload instructions when transfer is required."
},
"CreateTableImportRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"source": {
"oneOf": [
{
"$ref": "#/components/schemas/V2TableUploadImportSource"
},
{
"$ref": "#/components/schemas/V2TableWorkspaceFileImportSource"
}
],
"description": "CSV source for the import."
},
"target": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "new",
"description": "Create-new-table target discriminator."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[a-z_][a-z0-9_]*$",
"description": "Name of the table to create."
},
"folderPath": {
"description": "Folder path. A missing leading slash is normalized before validation.",
"type": "string"
}
},
"required": ["type", "name"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "existing",
"description": "Existing-table target discriminator."
},
"tableId": {
"type": "string",
"minLength": 1,
"description": "Existing target table identifier."
},
"mode": {
"type": "string",
"enum": ["append", "replace"],
"description": "Whether to append rows or replace existing rows."
}
},
"required": ["type", "tableId", "mode"],
"additionalProperties": false
}
],
"description": "New or existing table import target."
},
"mapping": {
"description": "CSV headers mapped to existing table columns.",
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 50
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 50
},
{
"type": "null"
}
]
}
},
"createColumns": {
"description": "CSV headers for which new columns should be created.",
"maxItems": 1000,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 50
}
},
"timezone": {
"description": "IANA timezone used to interpret local date values.",
"type": "string"
}
},
"required": ["workspaceId", "source", "target"],
"additionalProperties": false,
"title": "Create table import request",
"description": "Workspace, CSV source, target table, optional mapping, and timezone."
},
"V2TableImport": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique table-import identifier."
},
"workspaceId": {
"type": "string",
"description": "Workspace that owns the import."
},
"status": {
"type": "string",
"enum": [
"uploading",
"queued",
"processing",
"completed",
"failed",
"canceled",
"expired"
],
"description": "Current import lifecycle state."
},
"source": {
"oneOf": [
{
"$ref": "#/components/schemas/V2TableUploadImportSource"
},
{
"$ref": "#/components/schemas/V2TableWorkspaceFileImportSource"
}
],
"description": "CSV source for the import."
},
"target": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "new",
"description": "Create-new-table target discriminator."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[a-z_][a-z0-9_]*$",
"description": "Name of the table to create."
},
"folderPath": {
"description": "Folder path. A missing leading slash is normalized before validation.",
"type": "string"
}
},
"required": ["type", "name"],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "existing",
"description": "Existing-table target discriminator."
},
"tableId": {
"type": "string",
"minLength": 1,
"description": "Existing target table identifier."
},
"mode": {
"type": "string",
"enum": ["append", "replace"],
"description": "Whether to append rows or replace existing rows."
}
},
"required": ["type", "tableId", "mode"],
"additionalProperties": false
}
],
"description": "New or existing table import target."
},
"tableId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Resulting or target table identifier."
},
"rowsProcessed": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Rows processed so far."
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Terminal failure reason, or null."
},
"createdAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"description": "ISO 8601 creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"description": "ISO 8601 last-update timestamp."
},
"completedAt": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
{
"type": "null"
}
],
"description": "ISO 8601 completion timestamp, or null."
}
},
"required": [
"id",
"workspaceId",
"status",
"source",
"target",
"tableId",
"rowsProcessed",
"error",
"createdAt",
"updatedAt",
"completedAt"
],
"additionalProperties": false,
"title": "Table import",
"description": "Durable CSV table-import lifecycle resource."
},
"V2TableImportResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableImport"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Table import response",
"description": "A durable table-import lifecycle resource."
},
"V2CancelTableImportResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableImport"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Cancel table import response",
"description": "The canceled table-import lifecycle resource."
},
"V2UploadPartUrl": {
"type": "object",
"properties": {
"partNumber": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "Multipart part number."
},
"url": {
"type": "string",
"format": "uri",
"description": "Signed URL for this upload part."
},
"headers": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
},
"description": "Headers that must be included with the part upload."
},
"expiresAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"description": "ISO 8601 expiration time for the signed URL."
}
},
"required": ["partNumber", "url", "headers", "expiresAt"],
"additionalProperties": false,
"title": "Upload part URL",
"description": "A signed URL and required headers for one multipart upload part."
},
"V2PartUrlsData": {
"type": "object",
"properties": {
"parts": {
"maxItems": 100,
"type": "array",
"items": {
"$ref": "#/components/schemas/V2UploadPartUrl"
},
"description": "Signed URLs for requested parts."
}
},
"required": ["parts"],
"additionalProperties": false,
"title": "Upload part URLs",
"description": "Signed transfer URLs for the requested multipart upload parts."
},
"V2CreateTableImportPartUrlsResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2PartUrlsData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Create table import part URLs response",
"description": "Signed URLs and required headers for each requested upload part."
},
"CreateTableImportPartUrlsRequest": {
"type": "object",
"properties": {
"partNumbers": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"description": "Multipart part numbers for which signed URLs should be created."
}
},
"required": ["partNumbers"],
"additionalProperties": false,
"title": "Create table import part URLs request",
"description": "Multipart part numbers for which signed URLs should be created.",
"examples": [
{
"partNumbers": [1, 2, 3]
}
]
},
"V2CompleteTableImportUploadResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableImport"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Complete table import upload response",
"description": "The import lifecycle resource after processing is queued."
},
"V2TableExport": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique table-export identifier."
},
"tableId": {
"type": "string",
"description": "Exported table identifier."
},
"workspaceId": {
"type": "string",
"description": "Workspace that owns the export."
},
"format": {
"type": "string",
"enum": ["csv", "json"],
"description": "Export file format."
},
"status": {
"type": "string",
"enum": ["queued", "processing", "completed", "failed", "canceled"],
"description": "Current export lifecycle state."
},
"rowsProcessed": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Rows exported so far."
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Terminal failure reason, or null."
},
"createdAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"description": "ISO 8601 creation timestamp."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"description": "ISO 8601 last-update timestamp."
},
"completedAt": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
{
"type": "null"
}
],
"description": "ISO 8601 completion timestamp, or null."
}
},
"required": [
"id",
"tableId",
"workspaceId",
"format",
"status",
"rowsProcessed",
"error",
"createdAt",
"updatedAt",
"completedAt"
],
"additionalProperties": false,
"title": "Table export",
"description": "Durable asynchronous table-export lifecycle resource."
},
"V2CreateTableExportResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableExport"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Create table export response",
"description": "The created durable table-export lifecycle resource."
},
"CreateTableExportRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"format": {
"default": "csv",
"description": "Export file format.",
"type": "string",
"enum": ["csv", "json"]
}
},
"required": ["workspaceId"],
"title": "Create table export request",
"description": "Workspace scope and export format.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"format": "csv"
}
]
},
"V2TableExportResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableExport"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Table export response",
"description": "A durable table-export lifecycle resource."
},
"V2CancelTableExportResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableExport"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Cancel table export response",
"description": "The canceled durable table-export lifecycle resource."
},
"V2TableExportDownloadData": {
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Short-lived signed download URL."
},
"fileName": {
"type": "string",
"description": "Suggested export filename."
},
"expiresAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
"description": "ISO 8601 URL expiration timestamp."
}
},
"required": ["url", "fileName", "expiresAt"],
"additionalProperties": false,
"title": "Table export download data",
"description": "Signed URL and filename for a completed table export."
},
"V2DownloadTableExportResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableExportDownloadData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Download table export response",
"description": "Short-lived signed URL, filename, and expiration timestamp."
},
"V2CancelTableRunsData": {
"type": "object",
"properties": {
"cancelled": {
"type": "number",
"description": "Number of cell runs canceled."
}
},
"required": ["cancelled"],
"additionalProperties": false,
"title": "Cancel table runs data",
"description": "Result of canceling in-flight table cell runs."
},
"V2CancelTableRunsResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2CancelTableRunsData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Cancel table runs response",
"description": "Count of canceled table cell runs."
},
"CancelTableRunsRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Unique workspace identifier."
},
"scope": {
"type": "string",
"enum": ["all", "row"],
"description": "Whether to cancel across the table or one row."
},
"rowId": {
"description": "Row whose runs should be canceled for row scope.",
"type": "string",
"minLength": 1
},
"filter": {
"description": "Recursive predicate tree with exactly one non-empty `all` or `any` group at each group node."
},
"excludeRowIds": {
"description": "Rows excluded from an all-scope cancellation.",
"maxItems": 10000,
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
},
"required": ["workspaceId", "scope"],
"title": "Cancel table runs request",
"description": "Workspace scope, cancellation scope, and optional predicate or producer groups.",
"examples": [
{
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
"scope": "row",
"rowId": "row_1f3e5d7c9b8a4c2d806e4a6b8d0f2e93"
}
]
},
"V2Folder": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Folder name."
},
"path": {
"type": "string",
"description": "Canonical folder path used as the public folder identifier."
},
"parentPath": {
"type": "string",
"description": "Canonical parent path; `/` is the root."
},
"createdAt": {
"type": "string",
"description": "ISO 8601 timestamp when the folder was created.",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 timestamp when the folder was last updated.",
"format": "date-time"
}
},
"required": ["name", "path", "parentPath", "createdAt", "updatedAt"],
"additionalProperties": false,
"title": "Folder",
"description": "A canonical workspace folder."
},
"V2TableFolderListResponse": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/V2Folder"
},
"description": "Items in the current page."
},
"nextCursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Opaque cursor for the next page, or null when no more items remain."
}
},
"required": ["data", "nextCursor"],
"additionalProperties": false,
"title": "Table folder list response",
"description": "A cursor envelope containing table folders."
},
"V2TableFolderData": {
"type": "object",
"properties": {
"folder": {
"description": "The requested table folder.",
"$ref": "#/components/schemas/V2Folder"
}
},
"required": ["folder"],
"additionalProperties": false,
"title": "Table folder data",
"description": "A single table-folder payload."
},
"V2CreateTableFolderResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableFolderData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Create table folder response",
"description": "The created table folder."
},
"CreateTableFolderRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Workspace in which to create the folder."
},
"path": {
"description": "Path of the folder to create.",
"type": "string"
}
},
"required": ["workspaceId", "path"],
"additionalProperties": false,
"title": "Create table folder request",
"description": "Workspace scope and canonical folder path to create."
},
"V2RelocateTableFolderResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2TableFolderData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Relocate table folder response",
"description": "The relocated table folder."
},
"RelocateTableFolderRequest": {
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Workspace containing the folder."
},
"path": {
"description": "Current folder path.",
"type": "string"
},
"destinationPath": {
"description": "New full path for the folder and its descendants.",
"type": "string"
}
},
"required": ["workspaceId", "path", "destinationPath"],
"additionalProperties": false,
"title": "Relocate table folder request",
"description": "Workspace scope, current canonical path, and destination path."
},
"V2DeleteTableFolderData": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Canonical path of the deleted folder."
},
"deleted": {
"type": "boolean",
"const": true,
"description": "Confirms that the folder was deleted."
},
"deletedItems": {
"type": "object",
"properties": {
"folders": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Number of deleted folders."
},
"tables": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Number of deleted tables."
}
},
"required": ["folders", "tables"],
"additionalProperties": false,
"description": "Deleted resource counts."
}
},
"required": ["path", "deleted", "deletedItems"],
"additionalProperties": false,
"title": "Delete table folder data",
"description": "Folder deletion acknowledgement and deleted-resource counts."
},
"V2DeleteTableFolderResponse": {
"type": "object",
"properties": {
"data": {
"description": "Response data.",
"$ref": "#/components/schemas/V2DeleteTableFolderData"
}
},
"required": ["data"],
"additionalProperties": false,
"title": "Delete table folder response",
"description": "Folder deletion acknowledgement and deleted resource counts."
}
}
},
"x-generated-by": "scripts/generate-openapi.ts"
}