{"openapi":"3.0.3","info":{"title":"Baseloop API","version":"v1","description":"Read your Baseloop tables and send rows into them."},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"Your organization API key, from Settings > API key in the app."}},"schemas":{}},"paths":{"/workspaces":{"get":{"operationId":"listWorkspaces","summary":"List workspaces","tags":["Workspaces"],"description":"Returns every workspace in your organization with its number of tables.","responses":{"200":{"description":"Your workspaces.","content":{"application/json":{"schema":{"type":"object","properties":{"workspaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"tableCount":{"type":"integer","description":"Tables in this workspace."}},"required":["id","name","tableCount"],"additionalProperties":false}},"total":{"type":"integer"}},"required":["workspaces","total"],"additionalProperties":false,"description":"Your workspaces."}}}},"400":{"description":"A parameter is invalid. `message` says which.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"A parameter is invalid. `message` says which."}}}},"401":{"description":"The API key is missing or wrong.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"The API key is missing or wrong."}}}},"402":{"description":"The subscription is paused.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"The subscription is paused."}}}},"429":{"description":"Too many requests. See \"Rate limits\".","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"Too many requests. See \"Rate limits\"."}}}},"500":{"description":"Something failed on our side. Safe to retry.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"Something failed on our side. Safe to retry."}}}}}}},"/tables":{"get":{"operationId":"listTables","summary":"List tables","tags":["Tables"],"description":"Returns the tables in your organization, or only those in one workspace.","parameters":[{"schema":{"type":"string","minLength":1},"in":"query","name":"workspaceId","required":false,"description":"Only return tables in this workspace."}],"responses":{"200":{"description":"Your tables.","content":{"application/json":{"schema":{"type":"object","properties":{"tables":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Use it as `tableId` in the other table routes."},"name":{"type":"string"},"emoji":{"type":"string","nullable":true,"description":"Emoji shortcode shown next to the name, like `:chart_with_upwards_trend:`."},"workspaceId":{"type":"string"},"workspaceName":{"type":"string"},"rowCount":{"type":"integer"},"fieldCount":{"type":"integer","description":"Number of columns."}},"required":["id","name","emoji","workspaceId","workspaceName","rowCount","fieldCount"],"additionalProperties":false}},"total":{"type":"integer"}},"required":["tables","total"],"additionalProperties":false,"description":"Your tables."}}}},"400":{"description":"A parameter is invalid. `message` says which.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"A parameter is invalid. `message` says which."}}}},"401":{"description":"The API key is missing or wrong.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"The API key is missing or wrong."}}}},"402":{"description":"The subscription is paused.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"The subscription is paused."}}}},"429":{"description":"Too many requests. See \"Rate limits\".","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"Too many requests. See \"Rate limits\"."}}}},"500":{"description":"Something failed on our side. Safe to retry.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"Something failed on our side. Safe to retry."}}}}}}},"/tables/{tableId}/schema":{"get":{"operationId":"getTableSchema","summary":"Get table columns","tags":["Tables"],"description":"Returns the columns of a table. Row cells are keyed by column ID, so use this to put names on them. AI prompts, action settings and credentials are never included.","parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"tableId","required":true,"description":"Table ID from `GET /tables`."}],"responses":{"200":{"description":"The table and its columns.","content":{"application/json":{"schema":{"type":"object","properties":{"table":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"fields":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Row cells are keyed by this ID."},"name":{"type":"string","description":"Internal column name."},"label":{"type":"string","description":"Column name shown in the app."},"type":{"type":"string","description":"Column type: text, number, boolean, date, email, phone_number, url, image, select, multi_select, object, formula, action, webhook, member or input."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"],"additionalProperties":false},"nullable":true,"description":"Choices of a select or multi_select column, otherwise null."},"isSystem":{"type":"boolean","description":"True for columns Baseloop adds, like the creation date."}},"required":["id","name","label","type","options","isSystem"],"additionalProperties":false}}},"required":["table","fields"],"additionalProperties":false,"description":"The table and its columns."}}}},"400":{"description":"A parameter is invalid. `message` says which.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"A parameter is invalid. `message` says which."}}}},"401":{"description":"The API key is missing or wrong.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"The API key is missing or wrong."}}}},"402":{"description":"The subscription is paused.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"The subscription is paused."}}}},"404":{"description":"No table with this ID in your organization.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"No table with this ID in your organization."}}}},"429":{"description":"Too many requests. See \"Rate limits\".","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"Too many requests. See \"Rate limits\"."}}}},"500":{"description":"Something failed on our side. Safe to retry.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"Something failed on our side. Safe to retry."}}}}}}},"/tables/{tableId}/rows":{"get":{"operationId":"listRows","summary":"List rows","tags":["Rows"],"description":"Returns rows newest first, one page at a time. Add q to keep only rows whose cells contain that text. For column filters, use POST /tables/{tableId}/rows/query.","parameters":[{"schema":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":100,"default":100},"in":"query","name":"limit","required":false,"description":"Rows per page, 1 to 100. Default 100."},{"schema":{"type":"string","maxLength":500},"in":"query","name":"cursor","required":false,"description":"`nextCursor` from the previous page. Only valid with the same search and filters."},{"schema":{"type":"string","maxLength":100},"in":"query","name":"q","required":false,"description":"Case-insensitive text search across the row's cells, up to 100 characters. An empty value is ignored."},{"schema":{"type":"string","minLength":1},"in":"path","name":"tableId","required":true,"description":"Table ID from `GET /tables`."}],"responses":{"200":{"description":"One page of rows.","content":{"application/json":{"schema":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"tableId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"createdByUserId":{"type":"string","nullable":true,"description":"ID of the member who added the row, when known."},"cells":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"description":"The cell value: text, number, boolean, object or array depending on the column. null when empty."},"status":{"description":"How the value got there. manual: entered by a person or sent in. success: an action produced it. failed: the action errored (see errorMessage). skipped or stopped: the action did not run. queued, waiting or running: the action is not done yet. null when not set."},"isTruncated":{"type":"boolean","description":"Present and true when the value was cut to 200 characters."},"valuePreview":{"type":"string","description":"The first 200 characters, when the value was cut."},"errorMessage":{"description":"Why the cell failed, when it did."}},"additionalProperties":false},"description":"Cells keyed by column ID. Empty cells are left out. Get column names from the schema route."}},"required":["id","tableId","createdAt","updatedAt","createdByUserId","cells"],"additionalProperties":false}},"limit":{"type":"integer"},"nextCursor":{"type":"string","nullable":true,"description":"Pass it as `cursor` to get the next page. null on the last page."},"hasNextPage":{"type":"boolean"}},"required":["rows","limit","nextCursor","hasNextPage"],"additionalProperties":false,"description":"One page of rows."}}}},"400":{"description":"A parameter is invalid. `message` says which.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"A parameter is invalid. `message` says which."}}}},"401":{"description":"The API key is missing or wrong.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"The API key is missing or wrong."}}}},"402":{"description":"The subscription is paused.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"The subscription is paused."}}}},"404":{"description":"No table with this ID in your organization.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"No table with this ID in your organization."}}}},"429":{"description":"Too many requests. See \"Rate limits\".","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"Too many requests. See \"Rate limits\"."}}}},"500":{"description":"Something failed on our side. Safe to retry.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"Something failed on our side. Safe to retry."}}}}}}},"/tables/{tableId}/rows/query":{"post":{"operationId":"queryRows","summary":"Search and filter rows","tags":["Rows"],"description":"Returns the same rows as GET /tables/{tableId}/rows, narrowed by text search, column filters or both.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":100,"default":100,"description":"Rows per page, 1 to 100. Default 100."},"cursor":{"type":"string","maxLength":500,"description":"`nextCursor` from the previous page. Only valid with the same search and filters."},"q":{"type":"string","maxLength":100,"description":"Same as `query`. When both are sent, `query` wins."},"query":{"type":"string","maxLength":100,"description":"Case-insensitive text search across the row's cells, up to 100 characters."},"filters":{"type":"object","properties":{"combinator":{"type":"string","enum":["and","or"],"description":"\"and\" (default): every rule must match. \"or\": any rule."},"rules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"fieldId":{"type":"string","description":"Column ID from the schema route."},"operator":{"type":"string","enum":["=","!=",">",">=","<","<=","contains","doesNotContain","startsWith","containsAnyOf","doesNotContainAnyOf","in","notIn","null","notNull","isDatePreset","between","hasError","hasNoError","hasNotRun","runConditionNotMet","isFound","isNotFound"],"description":"Which operators a column accepts depends on its type. See \"Filtering rows\"."},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"],"additionalProperties":false}],"description":"What to compare with. Leave it out for null, notNull and the run-status operators. Values that are not text are sent as JSON text."}},"required":["fieldId","operator"],"additionalProperties":false},{"type":"object","properties":{"combinator":{"type":"string","enum":["and","or"],"description":"\"and\" (default): every rule must match. \"or\": any rule."},"rules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"fieldId":{"type":"string","description":"Column ID from the schema route."},"operator":{"type":"string","enum":["=","!=",">",">=","<","<=","contains","doesNotContain","startsWith","containsAnyOf","doesNotContainAnyOf","in","notIn","null","notNull","isDatePreset","between","hasError","hasNoError","hasNotRun","runConditionNotMet","isFound","isNotFound"],"description":"Which operators a column accepts depends on its type. See \"Filtering rows\"."},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"],"additionalProperties":false}],"description":"What to compare with. Leave it out for null, notNull and the run-status operators. Values that are not text are sent as JSON text."}},"required":["fieldId","operator"],"additionalProperties":false},{"type":"object","properties":{"combinator":{"type":"string","enum":["and","or"],"description":"\"and\" (default): every rule must match. \"or\": any rule."},"rules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"fieldId":{"type":"string","description":"Column ID from the schema route."},"operator":{"type":"string","enum":["=","!=",">",">=","<","<=","contains","doesNotContain","startsWith","containsAnyOf","doesNotContainAnyOf","in","notIn","null","notNull","isDatePreset","between","hasError","hasNoError","hasNotRun","runConditionNotMet","isFound","isNotFound"],"description":"Which operators a column accepts depends on its type. See \"Filtering rows\"."},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"],"additionalProperties":false}],"description":"What to compare with. Leave it out for null, notNull and the run-status operators. Values that are not text are sent as JSON text."}},"required":["fieldId","operator"],"additionalProperties":false},{"type":"object","properties":{"combinator":{"type":"string","enum":["and","or"],"description":"\"and\" (default): every rule must match. \"or\": any rule."},"rules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"fieldId":{"type":"string","description":"Column ID from the schema route."},"operator":{"type":"string","enum":["=","!=",">",">=","<","<=","contains","doesNotContain","startsWith","containsAnyOf","doesNotContainAnyOf","in","notIn","null","notNull","isDatePreset","between","hasError","hasNoError","hasNotRun","runConditionNotMet","isFound","isNotFound"],"description":"Which operators a column accepts depends on its type. See \"Filtering rows\"."},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"],"additionalProperties":false}],"description":"What to compare with. Leave it out for null, notNull and the run-status operators. Values that are not text are sent as JSON text."}},"required":["fieldId","operator"],"additionalProperties":false},{"type":"object","properties":{"combinator":{"type":"string","enum":["and","or"],"description":"\"and\" (default): every rule must match. \"or\": any rule."},"rules":{"type":"array","items":{"type":"object","properties":{"fieldId":{"type":"string","description":"Column ID from the schema route."},"operator":{"type":"string","enum":["=","!=",">",">=","<","<=","contains","doesNotContain","startsWith","containsAnyOf","doesNotContainAnyOf","in","notIn","null","notNull","isDatePreset","between","hasError","hasNoError","hasNotRun","runConditionNotMet","isFound","isNotFound"],"description":"Which operators a column accepts depends on its type. See \"Filtering rows\"."},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"],"additionalProperties":false}],"description":"What to compare with. Leave it out for null, notNull and the run-status operators. Values that are not text are sent as JSON text."}},"required":["fieldId","operator"],"additionalProperties":false},"maxItems":25}},"required":["rules"],"additionalProperties":false}]},"maxItems":25}},"required":["rules"],"additionalProperties":false}]},"maxItems":25}},"required":["rules"],"additionalProperties":false}]},"maxItems":25}},"required":["rules"],"additionalProperties":false}]},"maxItems":25,"description":"Rules, or groups of rules. Groups nest up to 5 levels counting this one, with up to 25 entries in each group and 100 across all groups together (a group counts as one entry)."}},"additionalProperties":false,"description":"Column filters."}},"additionalProperties":false,"example":{"limit":25,"query":"acme","filters":{"combinator":"and","rules":[{"fieldId":"<fieldId>","operator":"notNull"}]}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"tableId","required":true,"description":"Table ID from `GET /tables`."}],"responses":{"200":{"description":"One page of matching rows.","content":{"application/json":{"schema":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"tableId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"createdByUserId":{"type":"string","nullable":true,"description":"ID of the member who added the row, when known."},"cells":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"description":"The cell value: text, number, boolean, object or array depending on the column. null when empty."},"status":{"description":"How the value got there. manual: entered by a person or sent in. success: an action produced it. failed: the action errored (see errorMessage). skipped or stopped: the action did not run. queued, waiting or running: the action is not done yet. null when not set."},"isTruncated":{"type":"boolean","description":"Present and true when the value was cut to 200 characters."},"valuePreview":{"type":"string","description":"The first 200 characters, when the value was cut."},"errorMessage":{"description":"Why the cell failed, when it did."}},"additionalProperties":false},"description":"Cells keyed by column ID. Empty cells are left out. Get column names from the schema route."}},"required":["id","tableId","createdAt","updatedAt","createdByUserId","cells"],"additionalProperties":false}},"limit":{"type":"integer"},"nextCursor":{"type":"string","nullable":true,"description":"Pass it as `cursor` to get the next page. null on the last page."},"hasNextPage":{"type":"boolean"}},"required":["rows","limit","nextCursor","hasNextPage"],"additionalProperties":false,"description":"One page of matching rows."}}}},"400":{"description":"A parameter is invalid. `message` says which.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"A parameter is invalid. `message` says which."}}}},"401":{"description":"The API key is missing or wrong.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"The API key is missing or wrong."}}}},"402":{"description":"The subscription is paused.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"The subscription is paused."}}}},"404":{"description":"No table with this ID in your organization.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"No table with this ID in your organization."}}}},"429":{"description":"Too many requests. See \"Rate limits\".","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"Too many requests. See \"Rate limits\"."}}}},"500":{"description":"Something failed on our side. Safe to retry.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Always \"API Error\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"Something failed on our side. Safe to retry."}}}}}}},"/webhook/{id}":{"post":{"operationId":"sendWebhookRows","summary":"Send rows to a table","tags":["Webhooks"],"description":"Adds rows to a table that has a webhook. Send one JSON object, an array of objects, or an object with the array under \"data\". Each object becomes one row: the webhook column keeps the whole object and the columns mapped from it in the app fill in. Up to 500 objects and 1 MB per request. Rows can take up to 10 seconds to appear. No API key: anyone with the URL can add rows, so keep it private.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":{}},{"type":"array","items":{}}],"example":{"email":"jane@acme.com","firstName":"Jane","company":"Acme"}}}}},"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"The last part of the webhook URL shown on the table in the app."}],"security":[],"responses":{"200":{"description":"The rows are queued and appear within 10 seconds.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string","description":"Like \"Processing 3 records\"."}},"required":["success","message"],"additionalProperties":false,"description":"The rows are queued and appear within 10 seconds."}}}},"400":{"description":"The body is empty, has no objects, or has more than 500.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Short name of the error, like \"Bad Request\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"The body is empty, has no objects, or has more than 500."}}}},"404":{"description":"No webhook with this ID.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Short name of the error, like \"Bad Request\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"No webhook with this ID."}}}},"413":{"description":"The body is larger than 1 MB.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Short name of the error, like \"Bad Request\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"The body is larger than 1 MB."}}}},"429":{"description":"More than 100 requests in one second.","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string","description":"Short name of the error, like \"Bad Request\"."},"message":{"type":"string","description":"What went wrong, in plain words."}},"required":["statusCode","error","message"],"additionalProperties":false,"description":"More than 100 requests in one second."}}}}}}}},"servers":[{"url":"https://api-v2.baseloop.io/v1"}],"security":[{"apiKey":[]}],"tags":[{"name":"Workspaces","description":"The workspaces in your organization."},{"name":"Tables","description":"Tables and their columns."},{"name":"Rows","description":"Read, search and filter rows."},{"name":"Webhooks","description":"Send rows into a table."}]}