mirror of
https://github.com/simstudioai/sim.git
synced 2026-08-31 01:11:53 +08:00
6d3e484fb3
* 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
8307 lines
272 KiB
JSON
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"
|
|
}
|