{ "openapi": "3.0.0", "info": { "title": "", "version": "" }, "components": { "schemas": { "A_collection_of_row_objects": { "type": "array", "items": { "type": "object", "additionalProperties": {} }, "description": "A collection of row objects conforming to the schema of the table where keys are the column IDs and values are the column values:\n\n```json\n[\n\t{\n\t\t\"fullName\": \"Alex Bard\",\n\t\t\"invoiceDate\": \"2024-07-29T14:04:15.561Z\",\n\t\t\"totalAmount\": 34.50,\n\t\t\"amountPaid\": 0\n\t},\n\t{\n\t\t\"fullName\": \"Alicia Hines\",\n\t\t\"invoiceDate\": \"2023-06-15T10:30:00.000Z\",\n\t\t\"totalAmount\": 50.75,\n\t\t\"amountPaid\": 20\n\t}\n]\n```", "example": [ { "fullName": "Alex Bard", "invoiceDate": "2024-07-29T14:04:15.561Z", "totalAmount": 34.5, "amountPaid": 0 }, { "fullName": "Alicia Hines", "invoiceDate": "2023-06-15T10:30:00.000Z", "totalAmount": 50.75, "amountPaid": 20 } ] } }, "responses": {}, "parameters": {}, "examples": {}, "requestBodies": {}, "headers": {}, "securitySchemes": { "BearerAuth": { "type": "http", "scheme": "bearer", "description": "Bearer authentication header of the form Bearer ``, where `` is your [auth token](/api-reference/v2/general/authentication)." } }, "links": {}, "callbacks": {} }, "paths": { "/tables": { "get": { "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the table, e.g., `2a1bad8b-cf7c-44437-b8c1-e3782df6`", "example": "2a1bad8b-cf7c-44437-b8c1-e3782df6" }, "name": { "type": "string", "description": "Name of the table, e.g., `Invoices`", "example": "Invoices" } }, "required": [ "id", "name" ], "additionalProperties": false }, "description": "A collection of table objects, each with `id` and `name`" } }, "required": [ "data" ], "additionalProperties": false } } } }, "400": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "type": { "type": "string" }, "message": { "type": "string" } }, "required": [ "type", "message" ], "additionalProperties": false } }, "required": [ "error" ], "additionalProperties": false } } } } }, "description": "Gets all Big Tables in the current team" }, "post": { "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "tableID": { "type": "string", "description": "ID of the table, e.g., `2a1bad8b-cf7c-44437-b8c1-e3782df6`", "example": "2a1bad8b-cf7c-44437-b8c1-e3782df6" }, "rowIDs": { "type": "array", "items": { "type": "string" }, "description": "Row IDs of added rows, e.g., \n\n```json\n[\n\t\"2a1bad8b-cf7c-44437-b8c1-e3782df6\",\n\t\"93a19-cf7c-44437-b8c1-e9acbbb\"\n]\n```", "example": [ "2a1bad8b-cf7c-44437-b8c1-e3782df6", "93a19-cf7c-44437-b8c1-e9acbbb" ] } }, "required": [ "tableID", "rowIDs" ], "additionalProperties": false } }, "required": [ "data" ], "additionalProperties": false } } } }, "400": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "type": { "type": "string" }, "message": { "type": "string" } }, "required": [ "type", "message" ], "additionalProperties": false } }, "required": [ "error" ], "additionalProperties": false } } } }, "422": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "column_id_reserved", "column_id_not_unique", "column_has_invalid_value", "column_id_not_found" ] }, "message": { "type": "string" } }, "required": [ "type", "message" ], "additionalProperties": false } }, "required": [ "error" ], "additionalProperties": false } } } } }, "parameters": [ { "name": "name", "in": "query", "schema": { "type": "string", "description": "Name of the table. Required when the name is not passed in the request body. It is an error to pass a name in both this query parameter and the request body.", "example": "Invoices" }, "required": false }, { "name": "onSchemaError", "in": "query", "schema": { "type": "string", "enum": [ "abort", "dropColumns", "updateSchema" ], "description": "The action to take when the passed data does not match the table schema:\n\n- `abort`: Abort the entire operation and return an error.\n- `dropColumns`: Ignore the data that caused the error, and do not import those columns in the affected rows.\n- `updateSchema`: Update the schema as needed to add any missing columns or widen the data types of existing columns, and then import the data from them.", "example": "updateSchema" }, "required": false } ], "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the table, e.g., `Invoices`", "example": "Invoices" }, "schema": { "type": "object", "properties": { "columns": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Internal ID of the column, e.g., `fullName`. This value cannot be changed once created.", "example": "fullName" }, "displayName": { "type": "string", "description": "Human-readable display name of the column, e.g., `Full Name`. Can be modified once created.", "example": "Full Name" }, "type": { "anyOf": [ { "type": "string", "enum": [ "string", "number", "boolean", "uri", "dateTime" ] }, { "type": "object", "properties": { "kind": { "type": "string", "enum": [ "string", "number", "boolean", "uri", "dateTime" ] } }, "required": [ "kind" ], "additionalProperties": false } ], "description": "The type of the column." } }, "required": [ "id", "type" ], "additionalProperties": false }, "description": "A collection of column definitions, in the order that they are to be displayed in the table." } }, "required": [ "columns" ], "additionalProperties": false, "description": "The schema of the table as a collection of column definitions. If this is not provided, the schema will be inferred from the data.", "example": { "columns": [ { "id": "fullName", "displayName": "Full Name", "type": "string" }, { "id": "invoiceDate", "displayName": "Invoice Date", "type": "dateTime" }, { "id": "totalAmount", "displayName": "Total", "type": "number" }, { "id": "amountPaid", "displayName": "Paid", "type": "number" } ] } }, "rows": { "anyOf": [ { "$ref": "#/components/schemas/A_collection_of_row_objects" }, { "type": "object", "properties": { "$stashID": { "type": "string", "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,255}$", "description": "ID of the stash, e.g., `20240215-job32`", "example": "20240215-job32" } }, "required": [ "$stashID" ], "additionalProperties": false, "description": "A single reference to a [stash](/api-reference/v2/stashing) whose data should be used." } ] } }, "required": [ "name", "rows" ], "additionalProperties": false }, { "$ref": "#/components/schemas/A_collection_of_row_objects" } ] } }, "text/csv": { "schema": { "type": "string", "description": "A CSV string. The first line is column IDs, and each subsequent line is a row of data. The schema will be inferred from the data. The name of the table must be passed in the query parameter `name`.", "example": "Name,Age,Birthday\nAlice,25,2024-08-29T09:46:16.722Z\nBob,30,2020-01-15T09:00:16.722Z" } }, "text/tab-separated-values": { "schema": { "type": "string", "description": "A TSV string. The first line is column IDs, and each subsequent line is a row of data. The schema will be inferred from the data. The name of the table must be passed in the query parameter `name`.", "example": "Name\tAge\tBirthday\nAlice\t25\t2024-08-29T09:46:16.722Z\nBob\t30\t2020-01-15T09:00:16.722Z" } } } }, "description": "Creates a new Big Table" } }, "/tables/{tableID}": { "put": { "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "rowIDs": { "type": "array", "items": { "type": "string" }, "description": "Row IDs of added rows, e.g., \n\n```json\n[\n\t\"2a1bad8b-cf7c-44437-b8c1-e3782df6\",\n\t\"93a19-cf7c-44437-b8c1-e9acbbb\"\n]\n```", "example": [ "2a1bad8b-cf7c-44437-b8c1-e3782df6", "93a19-cf7c-44437-b8c1-e9acbbb" ] } }, "required": [ "rowIDs" ], "additionalProperties": false } }, "required": [ "data" ], "additionalProperties": false } } } }, "400": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "type": { "type": "string" }, "message": { "type": "string" } }, "required": [ "type", "message" ], "additionalProperties": false } }, "required": [ "error" ], "additionalProperties": false } } } }, "404": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "table_not_found", "table_not_big_table" ] }, "message": { "type": "string" } }, "required": [ "type", "message" ], "additionalProperties": false } }, "required": [ "error" ], "additionalProperties": false } } } }, "422": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "column_id_reserved", "column_id_not_unique", "column_has_invalid_value", "column_id_not_found" ] }, "message": { "type": "string" } }, "required": [ "type", "message" ], "additionalProperties": false } }, "required": [ "error" ], "additionalProperties": false } } } } }, "parameters": [ { "name": "tableID", "in": "path", "schema": { "type": "string", "description": "ID of the table, e.g., `2a1bad8b-cf7c-44437-b8c1-e3782df6`", "example": "2a1bad8b-cf7c-44437-b8c1-e3782df6" }, "required": true }, { "name": "onSchemaError", "in": "query", "schema": { "type": "string", "enum": [ "abort", "dropColumns", "updateSchema" ], "description": "The action to take when the passed data does not match the table schema:\n\n- `abort`: Abort the entire operation and return an error.\n- `dropColumns`: Ignore the data that caused the error, and do not import those columns in the affected rows.\n- `updateSchema`: Update the schema as needed to add any missing columns or widen the data types of existing columns, and then import the data from them.", "example": "updateSchema" }, "required": false } ], "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "type": "object", "properties": { "schema": { "type": "object", "properties": { "columns": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Internal ID of the column, e.g., `fullName`. This value cannot be changed once created.", "example": "fullName" }, "displayName": { "type": "string", "description": "Human-readable display name of the column, e.g., `Full Name`. Can be modified once created.", "example": "Full Name" }, "type": { "anyOf": [ { "type": "string", "enum": [ "string", "number", "boolean", "uri", "dateTime" ] }, { "type": "object", "properties": { "kind": { "type": "string", "enum": [ "string", "number", "boolean", "uri", "dateTime" ] } }, "required": [ "kind" ], "additionalProperties": false } ], "description": "The type of the column." } }, "required": [ "id", "type" ], "additionalProperties": false }, "description": "A collection of column definitions, in the order that they are to be displayed in the table." } }, "required": [ "columns" ], "additionalProperties": false, "description": "The schema of the table as a collection of column definitions.", "example": { "columns": [ { "id": "fullName", "displayName": "Full Name", "type": "string" }, { "id": "invoiceDate", "displayName": "Invoice Date", "type": "dateTime" }, { "id": "totalAmount", "displayName": "Total", "type": "number" }, { "id": "amountPaid", "displayName": "Paid", "type": "number" } ] } }, "rows": { "anyOf": [ { "$ref": "#/components/schemas/A_collection_of_row_objects" }, { "type": "object", "properties": { "$stashID": { "type": "string", "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,255}$", "description": "ID of the stash, e.g., `20240215-job32`", "example": "20240215-job32" } }, "required": [ "$stashID" ], "additionalProperties": false, "description": "A single reference to a [stash](/api-reference/v2/stashing) whose data should be used." } ] } }, "required": [ "rows" ], "additionalProperties": false }, { "$ref": "#/components/schemas/A_collection_of_row_objects" } ] } }, "text/csv": { "schema": { "type": "string", "description": "A CSV string. The first line is column IDs, and each subsequent line is a row of data.", "example": "Name,Age,Birthday\nAlice,25,2024-08-29T09:46:16.722Z\nBob,30,2020-01-15T09:00:16.722Z" } }, "text/tab-separated-values": { "schema": { "type": "string", "description": "A TSV string. The first line is column IDs, and each subsequent line is a row of data.", "example": "Name\tAge\tBirthday\nAlice\t25\t2024-08-29T09:46:16.722Z\nBob\t30\t2020-01-15T09:00:16.722Z" } } } }, "description": "Replaces the schema and/or data of a Big Table" } }, "/tables/{tableID}/rows": { "post": { "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "rowIDs": { "type": "array", "items": { "type": "string" }, "description": "Row IDs of added rows, e.g., \n\n```json\n[\n\t\"2a1bad8b-cf7c-44437-b8c1-e3782df6\",\n\t\"93a19-cf7c-44437-b8c1-e9acbbb\"\n]\n```", "example": [ "2a1bad8b-cf7c-44437-b8c1-e3782df6", "93a19-cf7c-44437-b8c1-e9acbbb" ] } }, "required": [ "rowIDs" ], "additionalProperties": false } }, "required": [ "data" ], "additionalProperties": false } } } }, "400": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "type": { "type": "string" }, "message": { "type": "string" } }, "required": [ "type", "message" ], "additionalProperties": false } }, "required": [ "error" ], "additionalProperties": false } } } }, "404": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "table_not_found", "table_not_big_table" ] }, "message": { "type": "string" } }, "required": [ "type", "message" ], "additionalProperties": false } }, "required": [ "error" ], "additionalProperties": false } } } }, "422": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "column_has_invalid_value", "column_id_reserved", "column_id_not_found" ] }, "message": { "type": "string" } }, "required": [ "type", "message" ], "additionalProperties": false } }, "required": [ "error" ], "additionalProperties": false } } } } }, "parameters": [ { "name": "tableID", "in": "path", "schema": { "type": "string", "description": "ID of the table, e.g., `2a1bad8b-cf7c-44437-b8c1-e3782df6`", "example": "2a1bad8b-cf7c-44437-b8c1-e3782df6" }, "required": true }, { "name": "onSchemaError", "in": "query", "schema": { "type": "string", "enum": [ "abort", "dropColumns", "updateSchema" ], "description": "The action to take when the passed data does not match the table schema:\n\n- `abort`: Abort the entire operation and return an error.\n- `dropColumns`: Ignore the data that caused the error, and do not import those columns in the affected rows.\n- `updateSchema`: Update the schema as needed to add any missing columns or widen the data types of existing columns, and then import the data from them.", "example": "updateSchema" }, "required": false } ], "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "type": "array", "items": { "type": "object", "additionalProperties": {} }, "description": "A collection of row objects conforming to the schema of the table where keys are the column IDs and values are the column values:\n\n```json\n[\n\t{\n\t\t\"fullName\": \"Alex Bard\",\n\t\t\"invoiceDate\": \"2024-07-29T14:04:15.561Z\",\n\t\t\"totalAmount\": 34.50,\n\t\t\"amountPaid\": 0\n\t},\n\t{\n\t\t\"fullName\": \"Alicia Hines\",\n\t\t\"invoiceDate\": \"2023-06-15T10:30:00.000Z\",\n\t\t\"totalAmount\": 50.75,\n\t\t\"amountPaid\": 20\n\t}\n]\n```", "example": [ { "fullName": "Alex Bard", "invoiceDate": "2024-07-29T14:04:15.561Z", "totalAmount": 34.5, "amountPaid": 0 }, { "fullName": "Alicia Hines", "invoiceDate": "2023-06-15T10:30:00.000Z", "totalAmount": 50.75, "amountPaid": 20 } ] }, { "type": "object", "properties": { "$stashID": { "type": "string", "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,255}$", "description": "ID of the stash, e.g., `20240215-job32`", "example": "20240215-job32" } }, "required": [ "$stashID" ], "additionalProperties": false, "description": "A single reference to a [stash](/api-reference/v2/stashing) whose data should be used." } ] } }, "text/csv": { "schema": { "type": "string", "description": "A CSV string. The first line is column IDs, and each subsequent line is a row of data.", "example": "Name,Age,Birthday\nAlice,25,2024-08-29T09:46:16.722Z\nBob,30,2020-01-15T09:00:16.722Z" } }, "text/tab-separated-values": { "schema": { "type": "string", "description": "A TSV string. The first line is column IDs, and each subsequent line is a row of data.", "example": "Name\tAge\tBirthday\nAlice\t25\t2024-08-29T09:46:16.722Z\nBob\t30\t2020-01-15T09:00:16.722Z" } } } }, "description": "Adds rows to a Big Table" } }, "/stashes/{stashID}/{serial}": { "put": { "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": {}, "additionalProperties": false, "description": "A 200 HTTP response code indicates that the data was successfully stashed into the stash with the given stash ID." } } } }, "400": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "type": { "type": "string" }, "message": { "type": "string" } }, "required": [ "type", "message" ], "additionalProperties": false } }, "required": [ "error" ], "additionalProperties": false } } } } }, "parameters": [ { "name": "stashID", "in": "path", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,255}$", "description": "ID of the stash. The stash will be created if it doesn't already exist.", "example": "20240215-job32" }, "required": true }, { "name": "serial", "in": "path", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,255}$", "description": "Serial identifier of the chunk of data to set in the stash. If a chunk has already been sent with the same serial, its data will be overwritten. Chunks will be assembled in the sort order of their serials, so utilize ordered identifiers for each chunk if a specific ordering of data in the stash is desired, e.g., `1`, `2`, etc...\nIf the order of data is not important, random, but unique, values can be used, e.g., `c2a4567`.", "example": "1" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": {} }, "description": "A collection of row objects conforming to the schema of the table where keys are the column IDs and values are the column values:\n\n```json\n[\n\t{\n\t\t\"fullName\": \"Alex Bard\",\n\t\t\"invoiceDate\": \"2024-07-29T14:04:15.561Z\",\n\t\t\"totalAmount\": 34.50,\n\t\t\"amountPaid\": 0\n\t},\n\t{\n\t\t\"fullName\": \"Alicia Hines\",\n\t\t\"invoiceDate\": \"2023-06-15T10:30:00.000Z\",\n\t\t\"totalAmount\": 50.75,\n\t\t\"amountPaid\": 20\n\t}\n]\n```", "example": [ { "fullName": "Alex Bard", "invoiceDate": "2024-07-29T14:04:15.561Z", "totalAmount": 34.5, "amountPaid": 0 }, { "fullName": "Alicia Hines", "invoiceDate": "2023-06-15T10:30:00.000Z", "totalAmount": 50.75, "amountPaid": 20 } ] } }, "text/csv": { "schema": { "type": "string", "description": "A CSV string. The first line is column IDs, and each subsequent line is a row of data.", "example": "Name,Age,Birthday\nAlice,25,2024-08-29T09:46:16.722Z\nBob,30,2020-01-15T09:00:16.722Z" } }, "text/tab-separated-values": { "schema": { "type": "string", "description": "A TSV string. The first line is column IDs, and each subsequent line is a row of data.", "example": "Name\tAge\tBirthday\nAlice\t25\t2024-08-29T09:46:16.722Z\nBob\t30\t2020-01-15T09:00:16.722Z" } } } }, "description": "Sets the content of a chunk of data inside a stash" } }, "/stashes/{stashID}": { "delete": { "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": {}, "additionalProperties": false, "description": "A 200 HTTP response code indicates that the stash with the given stash ID was successfully deleted." } } } }, "400": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "type": { "type": "string" }, "message": { "type": "string" } }, "required": [ "type", "message" ], "additionalProperties": false } }, "required": [ "error" ], "additionalProperties": false } } } } }, "parameters": [ { "name": "stashID", "in": "path", "schema": { "type": "string", "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,255}$", "description": "ID of the stash, e.g., `20240215-job32`", "example": "20240215-job32" }, "required": true } ], "description": "Deletes a stash and all its data" } } }, "security": [ { "BearerAuth": [] } ], "tags": [], "servers": [ { "description": "Production", "url": "https://api.glideapps.com" } ] }