budibase/packages/server/specs/openapi.yaml

1531 lines
51 KiB
YAML
Raw Normal View History

2022-02-17 19:58:09 +01:00
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
2022-02-17 19:58:09 +01:00
examples:
application:
2022-02-17 19:58:09 +01:00
value:
data:
_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
applications:
value:
data:
- _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
inputRow:
value:
_id: ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4
type: row
tableId: ta_5b1649e42a5b41dea4ef7742a36a7a70
name: Mike
age: 30
relationship:
- ro_ta_...
row:
value:
data:
_id: ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4
type: row
tableId: ta_5b1649e42a5b41dea4ef7742a36a7a70
name: Mike
age: 30
relationship:
- primaryDisplay: Joe
_id: ro_ta_...
enrichedRow:
value:
data:
_id: ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4
name: eg
tableId: ta_5b1649e42a5b41dea4ef7742a36a7a70
type: row
relationship:
- _id: ro_ta_users_us_8f3d717147d74d759d8cef5b6712062f
name: Joe
tableId: ta_users
internal:
- _id: ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4
primaryDisplay: eg
rows:
value:
data:
- _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:
data:
_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:
data:
- _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:
data:
_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:
data:
- _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: <html lang='en-GB'></html>
pagination:
cursor: "2"
raw: <html lang='en-GB'></html>
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:
data:
_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:
data:
- _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
2022-02-24 16:42:59 +01:00
properties:
name:
2022-02-28 12:29:48 +01:00
description: The name of the app.
2022-02-24 16:42:59 +01:00
type: string
url:
2022-02-28 12:29:48 +01:00
description: The URL by which the app is accessed, this must be URL encoded.
2022-02-24 16:42:59 +01:00
type: string
2022-02-24 19:15:13 +01:00
required:
- name
- url
applicationOutput:
type: object
properties:
data:
type: object
2022-02-24 16:42:59 +01:00
properties:
name:
2022-02-28 12:29:48 +01:00
description: The name of the app.
2022-02-24 16:42:59 +01:00
type: string
url:
2022-02-28 12:29:48 +01:00
description: The URL by which the app is accessed, this must be URL encoded.
type: string
_id:
description: The ID of the app.
type: string
2022-02-28 12:29:48 +01:00
status:
description: The status of the app, stating it if is the development or
published version.
type: string
enum:
- development
- published
createdAt:
description: States when the app was created, will be constant. Stored in ISO
format.
type: string
updatedAt:
description: States the last time the app was updated - stored in ISO format.
type: string
version:
description: States the version of the Budibase client this app is currently
based on.
type: string
tenantId:
description: In a multi-tenant environment this will state the tenant this app
is within.
type: string
lockedBy:
description: The user this app is currently being built by.
type: object
2022-02-24 19:15:13 +01:00
required:
- _id
2022-02-24 19:15:13 +01:00
- name
- url
2022-02-28 12:29:48 +01:00
- status
- createdAt
- updatedAt
- version
required:
- data
row:
description: The row to be created/updated, based on the table schema.
type: object
additionalProperties:
2022-03-01 23:37:42 +01:00
description: Key value properties of any type, depending on the table schema.
searchOutput:
type: object
required:
- data
properties:
data:
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
bookmark:
description: If pagination in use, this should be provided.
oneOf:
- type: string
- type: integer
hasNextPage:
description: If pagination in use, this will determine if there is another page
to fetch.
type: boolean
rowOutput:
type: object
properties:
data:
description: The row to be created/updated, based on the table schema.
type: object
additionalProperties:
2022-03-01 23:37:42 +01:00
description: Key value properties of any type, depending on the table schema.
properties:
_id:
description: The ID of the row.
type: string
tableId:
description: The ID of the table this row comes from.
type: string
required:
- tableId
- _id
required:
- data
2022-02-18 19:06:58 +01:00
table:
description: The table to be created/updated.
type: object
required:
- name
- schema
2022-02-18 19:06:58 +01:00
properties:
name:
description: The name of the table.
2022-02-18 19:06:58 +01:00
type: string
primaryDisplay:
type: string
description: The name of the column which should be used in relationship tags
when relating to this table.
2022-02-18 19:06:58 +01:00
schema:
type: object
additionalProperties:
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:
data:
description: The table to be created/updated.
type: object
required:
- name
- schema
- _id
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:
type: object
additionalProperties:
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.
_id:
description: The ID of the table.
type: string
required:
- data
executeQuery:
description: The query body must contain the required parameters for the query,
this depends on query type, setup and bindings.
type: object
additionalProperties:
2022-03-01 23:37:42 +01:00
description: Key value properties of any type, depending on the query output schema.
executeQueryOutput:
type: object
properties:
data:
description: The data response from the query.
type: array
items:
type: object
extra:
description: Extra information that is not part of the main data, e.g. headers.
type: object
properties:
headers:
description: If carrying out a REST request, this will contain the response
headers.
type: object
raw:
description: The raw query response, as a string.
type: string
pagination:
description: If pagination is supported, this will contain the bookmark/anchor
information for it.
type: object
required:
- data
query:
type: object
properties:
_id:
description: The ID of the query.
type: string
datasourceId:
description: The ID of the data source the query belongs to.
type: string
parameters:
description: The bindings which are required to perform this query.
type: array
items:
type: string
fields:
description: The fields that are used to perform this query, e.g. the sql
statement
type: object
queryVerb:
description: The verb that describes this query.
enum:
- create
- read
- update
- delete
name:
description: The name of the query.
type: string
schema:
description: The schema of the data returned when the query is executed.
type: object
transformer:
description: The JavaScript transformer function, applied after the query
responds with data.
type: string
readable:
description: Whether the query has readable data.
type: boolean
required:
- name
- schema
- _id
user:
type: object
properties:
email:
description: The email address of the user, this must be unique.
type: string
password:
description: The password of the user if using password based login - this will
never be returned. This can be left out of subsequent requests
(updates) and will be enriched back into the user structure.
type: string
status:
description: The status of the user, if they are active.
type: string
enum:
- active
firstName:
description: The first name of the user
type: string
lastName:
description: The last name of the user
type: string
forceResetPassword:
description: If set to true forces the user to reset their password on first
login.
type: boolean
builder:
description: Describes if the user is a builder user or not.
type: object
properties:
global:
description: If set to true the user will be able to build any app in the
system.
type: boolean
admin:
description: Describes if the user is an admin user or not.
type: object
properties:
global:
description: If set to true the user will be able to administrate the system.
type: boolean
roles:
description: Contains the roles of the user per app (assuming they are not a
builder user).
type: object
additionalProperties:
type: string
description: A map of app ID (production app ID, minus the _dev component) to a
role ID, e.g. ADMIN.
required:
- email
- roles
userOutput:
type: object
properties:
data:
type: object
properties:
email:
description: The email address of the user, this must be unique.
type: string
password:
description: The password of the user if using password based login - this will
never be returned. This can be left out of subsequent requests
(updates) and will be enriched back into the user structure.
type: string
status:
description: The status of the user, if they are active.
type: string
enum:
- active
firstName:
description: The first name of the user
type: string
lastName:
description: The last name of the user
type: string
forceResetPassword:
description: If set to true forces the user to reset their password on first
login.
type: boolean
builder:
description: Describes if the user is a builder user or not.
type: object
properties:
global:
description: If set to true the user will be able to build any app in the
system.
type: boolean
admin:
description: Describes if the user is an admin user or not.
type: object
properties:
global:
description: If set to true the user will be able to administrate the system.
type: boolean
roles:
description: Contains the roles of the user per app (assuming they are not a
builder user).
type: object
additionalProperties:
type: string
description: A map of app ID (production app ID, minus the _dev component) to a
role ID, e.g. ADMIN.
_id:
description: The ID of the user.
type: string
required:
- email
- roles
- _id
required:
- data
2022-02-22 15:28:57 +01:00
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.
required:
- name
security:
- ApiKeyAuth: []
2022-02-24 19:15:13 +01:00
paths:
/applications:
post:
summary: Create an application
2022-02-24 19:15:13 +01:00
tags:
- applications
parameters:
- $ref: "#/components/parameters/appId"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/application"
responses:
"200":
description: Returns the created application.
content:
application/json:
schema:
$ref: "#/components/schemas/applicationOutput"
examples:
application:
$ref: "#/components/examples/application"
"/applications/{appId}":
put:
summary: Update an application
2022-02-24 19:15:13 +01:00
tags:
- applications
parameters:
- $ref: "#/components/parameters/appIdUrl"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/application"
responses:
"200":
description: Returns the updated application.
content:
application/json:
schema:
$ref: "#/components/schemas/applicationOutput"
examples:
application:
$ref: "#/components/examples/application"
delete:
summary: Delete an application
2022-02-24 19:15:13 +01:00
tags:
- applications
parameters:
- $ref: "#/components/parameters/appIdUrl"
responses:
"200":
description: Returns the deleted application.
content:
application/json:
schema:
$ref: "#/components/schemas/applicationOutput"
examples:
application:
$ref: "#/components/examples/application"
get:
summary: Retrieve an application
2022-02-24 19:15:13 +01:00
tags:
- applications
parameters:
- $ref: "#/components/parameters/appIdUrl"
responses:
"200":
description: Returns the retrieved application.
content:
application/json:
schema:
$ref: "#/components/schemas/applicationOutput"
examples:
application:
$ref: "#/components/examples/application"
/applications/search:
2022-02-24 19:15:13 +01:00
post:
summary: Search for applications
description: Based on application properties (currently only name) search for
applications.
2022-02-24 19:15:13 +01:00
tags:
- applications
2022-02-24 19:15:13 +01:00
parameters:
- $ref: "#/components/parameters/appId"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/nameSearch"
responses:
"200":
description: Returns the applications that were found based on the search
parameters.
2022-02-24 19:15:13 +01:00
content:
application/json:
schema:
type: object
required:
- data
2022-02-24 19:15:13 +01:00
properties:
data:
2022-02-24 19:15:13 +01:00
type: array
items:
$ref: "#/components/schemas/application"
2022-02-24 19:15:13 +01:00
examples:
applications:
$ref: "#/components/examples/applications"
2022-02-24 19:15:13 +01:00
"/queries/{queryId}":
post:
summary: Execute a query
description: Queries which have been created within a Budibase app can be
executed using this,
tags:
- queries
2022-02-24 19:15:13 +01:00
parameters:
- $ref: "#/components/parameters/queryId"
- $ref: "#/components/parameters/appId"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/executeQuery"
2022-02-24 19:15:13 +01:00
responses:
"200":
description: Returns the result of the query execution.
content:
application/json:
schema:
$ref: "#/components/schemas/executeQueryOutput"
2022-02-24 19:15:13 +01:00
examples:
REST:
$ref: "#/components/examples/restResponse"
SQL:
$ref: "#/components/examples/sqlResponse"
/queries/search:
2022-02-24 19:15:13 +01:00
post:
summary: Search for queries
description: Based on query properties (currently only name) search for queries.
2022-02-24 19:15:13 +01:00
tags:
- queries
2022-02-24 19:15:13 +01:00
parameters:
- $ref: "#/components/parameters/appId"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/nameSearch"
2022-02-24 19:15:13 +01:00
responses:
"200":
description: Returns the queries found based on the search parameters.
2022-02-24 19:15:13 +01:00
content:
application/json:
schema:
type: object
required:
- data
2022-02-24 19:15:13 +01:00
properties:
data:
2022-02-24 19:15:13 +01:00
type: array
items:
$ref: "#/components/schemas/query"
2022-02-24 19:15:13 +01:00
examples:
queries:
$ref: "#/components/examples/queries"
2022-02-24 19:15:13 +01:00
"/tables/{tableId}/rows":
post:
summary: Create a row
description: Creates a row within the specified table.
2022-02-24 19:15:13 +01:00
tags:
- rows
parameters:
- $ref: "#/components/parameters/tableId"
- $ref: "#/components/parameters/appId"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/row"
examples:
row:
$ref: "#/components/examples/inputRow"
responses:
"200":
description: Returns the created row, including the ID which has been generated
for it. This can be found in the Budibase portal, viewed under the
developer information.
content:
application/json:
schema:
$ref: "#/components/schemas/rowOutput"
examples:
row:
$ref: "#/components/examples/row"
"/tables/{tableId}/rows/{rowId}":
put:
summary: Update a row
description: Updates a row within the specified table.
2022-02-24 19:15:13 +01:00
tags:
- rows
parameters:
- $ref: "#/components/parameters/tableId"
- $ref: "#/components/parameters/rowId"
- $ref: "#/components/parameters/appId"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/row"
examples:
row:
$ref: "#/components/examples/inputRow"
responses:
"200":
description: Returns the created row, including the ID which has been generated
for it.
content:
application/json:
schema:
$ref: "#/components/schemas/rowOutput"
examples:
row:
$ref: "#/components/examples/row"
delete:
summary: Delete a row
description: Deletes a row within the specified table.
2022-02-24 19:15:13 +01:00
tags:
- rows
parameters:
- $ref: "#/components/parameters/tableId"
- $ref: "#/components/parameters/rowId"
- $ref: "#/components/parameters/appId"
responses:
"200":
description: Returns the deleted row, including the ID which has been generated
for it.
content:
application/json:
schema:
$ref: "#/components/schemas/rowOutput"
examples:
row:
$ref: "#/components/examples/row"
get:
summary: Retrieve a row
description: This gets a single row, it will be enriched with the full related
rows, rather than the squashed "primaryDisplay" format returned by the
search endpoint.
2022-02-24 19:15:13 +01:00
tags:
- rows
parameters:
- $ref: "#/components/parameters/tableId"
- $ref: "#/components/parameters/rowId"
- $ref: "#/components/parameters/appId"
responses:
"200":
description: Returns the retrieved row.
content:
application/json:
schema:
$ref: "#/components/schemas/rowOutput"
examples:
enrichedRow:
$ref: "#/components/examples/enrichedRow"
"/tables/{tableId}/rows/search":
2022-02-24 19:15:13 +01:00
post:
summary: Search for rows
2022-02-24 19:15:13 +01:00
tags:
- rows
2022-02-24 19:15:13 +01:00
parameters:
- $ref: "#/components/parameters/tableId"
2022-02-24 19:15:13 +01:00
- $ref: "#/components/parameters/appId"
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- query
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].
example:
columnName1:
- 10
- 20
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.
example:
columnName1: ""
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.
2022-02-24 19:15:13 +01:00
responses:
"200":
description: The response will contain an array of rows that match the search
parameters.
2022-02-24 19:15:13 +01:00
content:
application/json:
schema:
$ref: "#/components/schemas/searchOutput"
2022-02-24 19:15:13 +01:00
examples:
search:
$ref: "#/components/examples/rows"
2022-02-24 19:15:13 +01:00
/tables:
post:
summary: Create a table
description: Create a table, this could be internal or external.
2022-02-24 19:15:13 +01:00
tags:
- tables
parameters:
- $ref: "#/components/parameters/appId"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/table"
examples:
table:
$ref: "#/components/examples/table"
responses:
"200":
description: Returns the created table, including the ID which has been
generated for it. This can be internal or external data sources.
content:
application/json:
schema:
$ref: "#/components/schemas/tableOutput"
examples:
table:
$ref: "#/components/examples/table"
"/tables/{tableId}":
put:
summary: Update a table
description: Update a table, this could be internal or external.
2022-02-24 19:15:13 +01:00
tags:
- tables
parameters:
- $ref: "#/components/parameters/tableId"
- $ref: "#/components/parameters/appId"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/table"
examples:
table:
$ref: "#/components/examples/table"
responses:
"200":
description: Returns the updated table.
content:
application/json:
schema:
$ref: "#/components/schemas/tableOutput"
examples:
table:
$ref: "#/components/examples/table"
delete:
summary: Delete a table
description: Delete a table, this could be internal or external.
2022-02-24 19:15:13 +01:00
tags:
- tables
parameters:
- $ref: "#/components/parameters/tableId"
- $ref: "#/components/parameters/appId"
responses:
"200":
description: Returns the deleted table.
content:
application/json:
schema:
$ref: "#/components/schemas/tableOutput"
examples:
table:
$ref: "#/components/examples/table"
get:
summary: Retrieve a table
description: Lookup a table, this could be internal or external.
2022-02-24 19:15:13 +01:00
tags:
- tables
parameters:
- $ref: "#/components/parameters/tableId"
- $ref: "#/components/parameters/appId"
responses:
"200":
description: Returns the retrieved table.
content:
application/json:
schema:
$ref: "#/components/schemas/tableOutput"
examples:
table:
$ref: "#/components/examples/table"
/tables/search:
2022-02-24 19:15:13 +01:00
post:
summary: Search for tables
description: Based on table properties (currently only name) search for tables.
This could be an internal or an external table.
2022-02-24 19:15:13 +01:00
tags:
- tables
2022-02-24 19:15:13 +01:00
parameters:
- $ref: "#/components/parameters/appId"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/nameSearch"
responses:
"200":
description: Returns the found tables, based on the search parameters.
2022-02-24 19:15:13 +01:00
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: "#/components/schemas/table"
2022-02-24 19:15:13 +01:00
examples:
tables:
$ref: "#/components/examples/tables"
2022-02-24 19:15:13 +01:00
/users:
post:
summary: Create a user
2022-02-24 19:15:13 +01:00
tags:
- users
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/user"
responses:
"200":
description: Returns the created user.
content:
application/json:
schema:
$ref: "#/components/schemas/userOutput"
examples:
user:
$ref: "#/components/examples/user"
"/users/{userId}":
put:
summary: Update a user
2022-02-24 19:15:13 +01:00
tags:
- users
parameters:
- $ref: "#/components/parameters/userId"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/user"
responses:
"200":
description: Returns the updated user.
content:
application/json:
schema:
$ref: "#/components/schemas/userOutput"
examples:
user:
$ref: "#/components/examples/user"
delete:
summary: Delete a user
2022-02-24 19:15:13 +01:00
tags:
- users
parameters:
- $ref: "#/components/parameters/userId"
responses:
"200":
description: Returns the deleted user.
content:
application/json:
schema:
$ref: "#/components/schemas/userOutput"
examples:
user:
$ref: "#/components/examples/user"
get:
summary: Retrieve a user
2022-02-24 19:15:13 +01:00
tags:
- users
parameters:
- $ref: "#/components/parameters/userId"
responses:
"200":
description: Returns the retrieved user.
content:
application/json:
schema:
$ref: "#/components/schemas/userOutput"
examples:
user:
$ref: "#/components/examples/user"
/users/search:
post:
summary: Search for users
description: Based on user properties (currently only name) search for users.
tags:
- users
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/nameSearch"
responses:
"200":
description: Returns the found users based on search parameters.
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: "#/components/schemas/user"
examples:
users:
$ref: "#/components/examples/users"
2022-02-17 19:58:09 +01:00
tags: []