{ "openapi": "3.0.0", "info": { "title": "Budibase API", "description": "The public API for Budibase apps and its services.", "version": "1.0.0" }, "servers": [ { "url": "http://budibase.app/api/public/v1", "description": "Budibase Cloud API" }, { "url": "{protocol}://{hostname}:10000/api/public/v1", "description": "Budibase self hosted API" } ], "components": { "examples": { "row": { "value": { "_id": "ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4", "type": "row", "tableId": "ta_5b1649e42a5b41dea4ef7742a36a7a70", "name": "Mike", "age": 30, "relationship": [ { "primaryDisplay": "Joe", "_id": "ro_ta_..." } ] } }, "table": { "value": { "_id": "ta_5b1649e42a5b41dea4ef7742a36a7a70", "name": "People", "schema": { "name": { "type": "string", "name": "name" }, "age": { "type": "number", "name": "age" }, "relationship": { "type": "link", "name": "relationship", "tableId": "ta_...", "fieldName": "relatedColumn", "relationshipType": "many-to-many" } } } } } }, "paths": { "/row/{tableId}/search": { "post": { "summary": "Allows searching for rows within a table.", "parameters": [ { "in": "path", "name": "tableId", "required": true, "description": "The ID of the table which contains the rows which are being searched for.", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "query": { "type": "object", "properties": { "string": { "type": "object", "example": { "columnName1": "value", "columnName2": "value" }, "description": "A map of field name to the string to search for, this will look for rows that have a value starting with the string value.", "additionalProperties": { "type": "string", "description": "The value to search for in the column." } }, "fuzzy": { "type": "object", "description": "A fuzzy search, only supported by internal tables." }, "range": { "type": "object", "description": "Searches within a range, the format of this must be columnName -> [low, high]." }, "equal": { "type": "object", "description": "Searches for rows that have a column value that is exactly the value set." }, "notEqual": { "type": "object", "description": "Searches for any row which does not contain the specified column value." }, "empty": { "type": "object", "description": "Searches for rows which do not contain the specified column. The object should simply contain keys of the column names, these can map to any value." }, "notEmpty": { "type": "object", "description": "Searches for rows which have the specified column." }, "oneOf": { "type": "object", "description": "Searches for rows which have a column value that is any of the specified values. The format of this must be columnName -> [value1, value2]." } } }, "paginate": { "type": "boolean", "description": "Enables pagination, by default this is disabled." }, "bookmark": { "oneOf": [ { "type": "string" }, { "type": "integer" } ], "description": "If retrieving another page, the bookmark from the previous request must be supplied." }, "limit": { "type": "integer", "description": "The maximum number of rows to return, useful when paginating, for internal tables this will be limited to 1000, for SQL tables it will be 5000." }, "sort": { "type": "object", "description": "A set of parameters describing the sort behaviour of the search.", "properties": { "order": { "type": "string", "enum": [ "ascending", "descending" ], "description": "The order of the sort, by default this is ascending." }, "column": { "type": "string", "description": "The name of the column by which the rows will be sorted." }, "type": { "type": "string", "enum": [ "string", "number" ], "description": "Defines whether the column should be treated as a string or as numbers when sorting." } } } } } } } }, "responses": { "200": { "description": "The response will contain an array of rows that match the search parameters.", "content": { "application/json": { "schema": { "type": "object", "properties": { "rows": { "description": "An array of rows, these will each contain an _id field which can be used to update or delete them.", "type": "array", "items": { "type": "object", "example": { "$ref": "#/components/examples/row" } } }, "bookmark": { "oneOf": [ { "type": "string" }, { "type": "integer" } ], "description": "If pagination in use, this should be provided" }, "hasNextPage": { "description": "If pagination in use, this will determine if there is another page to fetch.", "type": "boolean" } } } } } } } } } }, "tags": [] }