{ "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": { "parameters": { "tableId": { "in": "path", "name": "tableId", "required": true, "description": "The ID of the table which this request is targeting.", "schema": { "type": "string" } }, "rowId": { "in": "path", "name": "rowId", "required": true, "description": "The ID of the row which this request is targeting.", "schema": { "type": "string" } }, "appId": { "in": "header", "name": "x-budibase-app-id", "required": true, "description": "The ID of the app which this request is targeting.", "schema": { "type": "string" } }, "appIdUrl": { "in": "path", "name": "appId", "required": true, "description": "The ID of the app which this request is targeting.", "schema": { "type": "string" } }, "queryId": { "in": "path", "name": "queryId", "required": true, "description": "The ID of the query which this request is targeting.", "schema": { "type": "string" } }, "userId": { "in": "path", "name": "userId", "required": true, "description": "The ID of the user which this request is targeting.", "schema": { "type": "string" } } }, "examples": { "application": { "value": { "application": { "_id": "app_metadata", "appId": "app_dev_957b12f943d348faa61db7e18e088d0f", "version": "1.0.58-alpha.0", "name": "App name", "url": "/app-url", "tenantId": "default", "updatedAt": "2022-02-22T13:00:54.035Z", "createdAt": "2022-02-11T18:02:26.961Z", "status": "development", "lockedBy": { "_id": "us_693a73206518477283a8d5ae31103252", "email": "test@test.com", "roles": { "app_957b12f943d348faa61db7e18e088d0f": "BASIC" }, "builder": { "global": false }, "admin": { "global": true }, "tenantId": "default", "status": "active", "budibaseAccess": true, "csrfToken": "9c70291d-7137-48f9-9166-99ab5473a3d4", "userId": "us_693a73206518477283a8d5ae31103252", "roleId": "ADMIN", "role": { "_id": "ADMIN", "name": "Admin", "permissionId": "admin", "inherits": "POWER" } } } } }, "applications": { "value": { "applications": [ { "_id": "app_metadata", "appId": "app_dev_957b12f943d348faa61db7e18e088d0f", "version": "1.0.58-alpha.0", "name": "App name", "url": "/app-url", "tenantId": "default", "updatedAt": "2022-02-22T13:00:54.035Z", "createdAt": "2022-02-11T18:02:26.961Z", "status": "development", "lockedBy": { "_id": "us_693a73206518477283a8d5ae31103252", "email": "test@test.com", "roles": { "app_957b12f943d348faa61db7e18e088d0f": "BASIC" }, "builder": { "global": false }, "admin": { "global": true }, "tenantId": "default", "status": "active", "budibaseAccess": true, "csrfToken": "9c70291d-7137-48f9-9166-99ab5473a3d4", "userId": "us_693a73206518477283a8d5ae31103252", "roleId": "ADMIN", "role": { "_id": "ADMIN", "name": "Admin", "permissionId": "admin", "inherits": "POWER" } } } ] } }, "inputRow": { "value": { "_id": "ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4", "type": "row", "tableId": "ta_5b1649e42a5b41dea4ef7742a36a7a70", "name": "Mike", "age": 30, "relationship": [ "ro_ta_..." ] } }, "row": { "value": { "row": { "_id": "ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4", "type": "row", "tableId": "ta_5b1649e42a5b41dea4ef7742a36a7a70", "name": "Mike", "age": 30, "relationship": [ { "primaryDisplay": "Joe", "_id": "ro_ta_..." } ] } } }, "rows": { "value": { "rows": [ { "_id": "ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4", "type": "row", "tableId": "ta_5b1649e42a5b41dea4ef7742a36a7a70", "name": "Mike", "age": 30, "relationship": [ { "primaryDisplay": "Joe", "_id": "ro_ta_..." } ] } ], "hasNextPage": true, "bookmark": 10 } }, "table": { "value": { "table": { "_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" } } } } }, "tables": { "value": { "tables": [ { "_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" } } } ] } }, "query": { "value": { "query": { "_id": "query_datasource_plus_4d8be0c506b9465daf4bf84d890fdab6_454854487c574d45bc4029b1e153219e", "datasourceId": "datasource_plus_4d8be0c506b9465daf4bf84d890fdab6", "parameters": [], "fields": { "sql": "select * from persons" }, "queryVerb": "read", "name": "Help", "schema": { "personid": { "name": "personid", "type": "string" }, "lastname": { "name": "lastname", "type": "string" }, "firstname": { "name": "firstname", "type": "string" }, "address": { "name": "address", "type": "string" }, "city": { "name": "city", "type": "string" } }, "transformer": "return data", "readable": true } } }, "queries": { "value": { "queries": [ { "_id": "query_datasource_plus_4d8be0c506b9465daf4bf84d890fdab6_454854487c574d45bc4029b1e153219e", "datasourceId": "datasource_plus_4d8be0c506b9465daf4bf84d890fdab6", "parameters": [], "fields": { "sql": "select * from persons" }, "queryVerb": "read", "name": "Help", "schema": { "personid": { "name": "personid", "type": "string" }, "lastname": { "name": "lastname", "type": "string" }, "firstname": { "name": "firstname", "type": "string" }, "address": { "name": "address", "type": "string" }, "city": { "name": "city", "type": "string" } }, "transformer": "return data", "readable": true } ] } }, "restResponse": { "value": { "data": [ { "value": "" } ], "pagination": { "cursor": "2" }, "raw": "", "headers": { "content-type": "text/html; charset=ISO-8859-1" } } }, "sqlResponse": { "value": { "data": [ { "personid": 1, "lastname": "Hughes", "firstname": "Mike", "address": "123 Fake Street", "city": "Belfast" }, { "personid": 2, "lastname": "Smith", "firstname": "John", "address": "64 Updown Road", "city": "Dublin" } ] } }, "user": { "value": { "user": { "_id": "us_693a73206518477283a8d5ae31103252", "email": "test@test.com", "roles": { "app_957b12f943d348faa61db7e18e088d0f": "BASIC" }, "builder": { "global": false }, "admin": { "global": true }, "tenantId": "default", "status": "active", "budibaseAccess": true, "csrfToken": "9c70291d-7137-48f9-9166-99ab5473a3d4", "userId": "us_693a73206518477283a8d5ae31103252", "roleId": "ADMIN", "role": { "_id": "ADMIN", "name": "Admin", "permissionId": "admin", "inherits": "POWER" } } } }, "users": { "value": { "users": [ { "_id": "us_693a73206518477283a8d5ae31103252", "email": "test@test.com", "roles": { "app_957b12f943d348faa61db7e18e088d0f": "BASIC" }, "builder": { "global": false }, "admin": { "global": true }, "tenantId": "default", "status": "active", "budibaseAccess": true, "csrfToken": "9c70291d-7137-48f9-9166-99ab5473a3d4", "userId": "us_693a73206518477283a8d5ae31103252", "roleId": "ADMIN", "role": { "_id": "ADMIN", "name": "Admin", "permissionId": "admin", "inherits": "POWER" } } ] } } }, "securitySchemes": { "ApiKeyAuth": { "type": "apiKey", "in": "header", "name": "x-budibase-api-key", "description": "Your individual API key, this will provide access based on the configured RBAC settings of your user." } }, "schemas": { "application": { "type": "object", "properties": { "name": { "type": "string", "required": true }, "url": { "type": "string" } } }, "applicationOutput": { "type": "object", "properties": { "application": { "type": "object", "properties": { "name": { "type": "string", "required": true }, "url": { "type": "string" } } } } }, "row": { "description": "The row to be created/updated, based on the table schema.", "type": "object", "additionalProperties": { "oneOf": [ { "type": "string" }, { "type": "object" }, { "type": "integer" }, { "type": "array" }, { "type": "boolean" } ] } }, "rowOutput": { "type": "object", "properties": { "row": { "description": "The row to be created/updated, based on the table schema.", "type": "object", "additionalProperties": { "oneOf": [ { "type": "string" }, { "type": "object" }, { "type": "integer" }, { "type": "array" }, { "type": "boolean" } ] } } } }, "table": { "description": "The table to be created/updated.", "type": "object", "properties": { "name": { "description": "The name of the table", "type": "string" }, "primaryDisplay": { "type": "string", "description": "The name of the column which should be used in relationship tags when relating to this table." }, "schema": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "link" ], "description": "A relationship column." }, "constraints": { "type": "object", "description": "A constraint can be applied to the column which will be validated against when a row is saved.", "properties": { "type": { "type": "string", "enum": [ "string", "number", "object", "boolean" ] }, "presence": { "type": "boolean", "description": "Defines whether the column is required or not." } } }, "name": { "type": "string", "description": "The name of the column." }, "autocolumn": { "type": "boolean", "description": "Defines whether the column is automatically generated." }, "fieldName": { "type": "string", "description": "The name of the column which a relationship column is related to in another table." }, "tableId": { "type": "string", "description": "The ID of the table which a relationship column is related to." }, "relationshipType": { "type": "string", "enum": [ "one-to-many", "many-to-one", "many-to-many" ], "description": "Defines the type of relationship that this column will be used for." }, "through": { "type": "string", "description": "When using a SQL table that contains many to many relationships this defines the table the relationships are linked through." }, "foreignKey": { "type": "string", "description": "When using a SQL table that contains a one to many relationship this defines the foreign key." }, "throughFrom": { "type": "string", "description": "When using a SQL table that utilises a through table, this defines the primary key in the through table for this table." }, "throughTo": { "type": "string", "description": "When using a SQL table that utilises a through table, this defines the primary key in the through table for the related table." } } }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "formula" ], "description": "A formula column." }, "constraints": { "type": "object", "description": "A constraint can be applied to the column which will be validated against when a row is saved.", "properties": { "type": { "type": "string", "enum": [ "string", "number", "object", "boolean" ] }, "presence": { "type": "boolean", "description": "Defines whether the column is required or not." } } }, "name": { "type": "string", "description": "The name of the column." }, "autocolumn": { "type": "boolean", "description": "Defines whether the column is automatically generated." }, "formula": { "type": "string", "description": "Defines a Handlebars or JavaScript formula to use, note that Javascript formulas are expected to be provided in the base64 format." }, "formulaType": { "type": "string", "enum": [ "static", "dynamic" ], "description": "Defines whether this is a static or dynamic formula." } } }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "string", "longform", "options", "number", "boolean", "array", "datetime", "attachment", "link", "formula", "auto", "json", "internal" ], "description": "Defines the type of the column, most explain themselves, a link column is a relationship." }, "constraints": { "type": "object", "description": "A constraint can be applied to the column which will be validated against when a row is saved.", "properties": { "type": { "type": "string", "enum": [ "string", "number", "object", "boolean" ] }, "presence": { "type": "boolean", "description": "Defines whether the column is required or not." } } }, "name": { "type": "string", "description": "The name of the column." }, "autocolumn": { "type": "boolean", "description": "Defines whether the column is automatically generated." } } } ] } } }, "tableOutput": { "type": "object", "properties": { "table": { "description": "The table to be created/updated.", "type": "object", "properties": { "name": { "description": "The name of the table", "type": "string" }, "primaryDisplay": { "type": "string", "description": "The name of the column which should be used in relationship tags when relating to this table." }, "schema": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "link" ], "description": "A relationship column." }, "constraints": { "type": "object", "description": "A constraint can be applied to the column which will be validated against when a row is saved.", "properties": { "type": { "type": "string", "enum": [ "string", "number", "object", "boolean" ] }, "presence": { "type": "boolean", "description": "Defines whether the column is required or not." } } }, "name": { "type": "string", "description": "The name of the column." }, "autocolumn": { "type": "boolean", "description": "Defines whether the column is automatically generated." }, "fieldName": { "type": "string", "description": "The name of the column which a relationship column is related to in another table." }, "tableId": { "type": "string", "description": "The ID of the table which a relationship column is related to." }, "relationshipType": { "type": "string", "enum": [ "one-to-many", "many-to-one", "many-to-many" ], "description": "Defines the type of relationship that this column will be used for." }, "through": { "type": "string", "description": "When using a SQL table that contains many to many relationships this defines the table the relationships are linked through." }, "foreignKey": { "type": "string", "description": "When using a SQL table that contains a one to many relationship this defines the foreign key." }, "throughFrom": { "type": "string", "description": "When using a SQL table that utilises a through table, this defines the primary key in the through table for this table." }, "throughTo": { "type": "string", "description": "When using a SQL table that utilises a through table, this defines the primary key in the through table for the related table." } } }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "formula" ], "description": "A formula column." }, "constraints": { "type": "object", "description": "A constraint can be applied to the column which will be validated against when a row is saved.", "properties": { "type": { "type": "string", "enum": [ "string", "number", "object", "boolean" ] }, "presence": { "type": "boolean", "description": "Defines whether the column is required or not." } } }, "name": { "type": "string", "description": "The name of the column." }, "autocolumn": { "type": "boolean", "description": "Defines whether the column is automatically generated." }, "formula": { "type": "string", "description": "Defines a Handlebars or JavaScript formula to use, note that Javascript formulas are expected to be provided in the base64 format." }, "formulaType": { "type": "string", "enum": [ "static", "dynamic" ], "description": "Defines whether this is a static or dynamic formula." } } }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "string", "longform", "options", "number", "boolean", "array", "datetime", "attachment", "link", "formula", "auto", "json", "internal" ], "description": "Defines the type of the column, most explain themselves, a link column is a relationship." }, "constraints": { "type": "object", "description": "A constraint can be applied to the column which will be validated against when a row is saved.", "properties": { "type": { "type": "string", "enum": [ "string", "number", "object", "boolean" ] }, "presence": { "type": "boolean", "description": "Defines whether the column is required or not." } } }, "name": { "type": "string", "description": "The name of the column." }, "autocolumn": { "type": "boolean", "description": "Defines whether the column is automatically generated." } } } ] } } } } }, "query": { "type": "object", "properties": {} }, "user": { "type": "object", "properties": {} }, "userOutput": { "type": "object", "properties": { "user": { "type": "object", "properties": {} } } }, "nameSearch": { "type": "object", "properties": { "name": { "type": "string", "description": "The name to be used when searching - this will be used in a case insensitive starts with match." } } } } }, "security": [ { "ApiKeyAuth": [] } ], "paths": {}, "tags": [] }