Budibase Public API

The complete Budibase Public API as Budibase itself publishes it — OpenAPI 3.1.0, info.version 3.3.0, 44 operations across workspaces, applications, tables, rows, views, users, roles, queries and metrics. Harvested verbatim on 2026-09-04 from packages/server/specs/openapi.yaml in the Budibase monorepo, the location Budibase's own Public API documentation directs integrators to. Supersedes the five per-tag splits below in coverage: those describe 26 operations and omit workspaces, views, roles and metrics entirely.

Operations 44

POST /applications Create an application #
PUT /applications/{appId} Update an application #
DELETE /applications/{appId} Delete an application #
GET /applications/{appId} Retrieve an application #
POST /applications/{appId}/unpublish Unpublish an application #
POST /applications/{appId}/publish Publish an application #
POST /applications/{appId}/import Import an app to an existing app 🔒 #
POST /applications/{appId}/export Export an app 🔒 #
POST /applications/search Search for applications #
GET /metrics Retrieve Budibase tenant metrics #
POST /queries/{queryId} Execute a query #
POST /queries/search Search for queries #
POST /roles/assign Assign a role to a list of users #
POST /roles/unassign Un-assign a role from a list of users #
POST /tables/{tableId}/rows Create a row #
PUT /tables/{tableId}/rows/{rowId} Update a row #
DELETE /tables/{tableId}/rows/{rowId} Delete a row #
GET /tables/{tableId}/rows/{rowId} Retrieve a row #
POST /tables/{tableId}/rows/search Search for rows #
POST /views/{viewId}/rows/search Search for rows in a view #
POST /tables Create a table #
PUT /tables/{tableId} Update a table #
DELETE /tables/{tableId} Delete a table #
GET /tables/{tableId} Retrieve a table #
POST /tables/search Search for tables #
POST /users Create a user #
PUT /users/{userId} Update a user #
DELETE /users/{userId} Delete a user #
GET /users/{userId} Retrieve a user #
POST /users/search Search for users #
POST /views Create a view #
PUT /views/{viewId} Update a view #
DELETE /views/{viewId} Delete a view #
GET /views/{viewId} Retrieve a view #
POST /views/search Search for views #
POST /workspaces Create a workspace #
PUT /workspaces/{workspaceId} Update a workspace #
DELETE /workspaces/{workspaceId} Delete a workspace #
GET /workspaces/{workspaceId} Retrieve a workspace #
POST /workspaces/{workspaceId}/publish Publish a workspace #
POST /workspaces/{workspaceId}/unpublish Unpublish a workspace #
POST /workspaces/{workspaceId}/import Import a workspace to an existing workspace 🔒 #
POST /workspaces/{workspaceId}/export Export a workspace 🔒 #
POST /workspaces/search Search for workspaces #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/budibase-public-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

budibase-public-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Budibase API
  description: The public API for Budibase apps and its services.
  version: 3.3.0
servers:
  - url: https://budibase.app/api/public/v1
    description: Budibase Cloud API
    variables:
      apiKey:
        default: <user API key>
        description: The API key of the user to assume for API call.
      appId:
        default: <App ID>
        description: The ID of the app the calls will be executed within the context of,
          this should start with app_ (production) or app_dev (development).
components:
  parameters:
    appId:
      in: header
      name: x-budibase-app-id
      required: true
      description: The ID of the app which this request is targeting.
      schema:
        default: "{{appId}}"
        type: string
    appIdUrl:
      in: path
      name: appId
      required: true
      description: The ID of the app which this request is targeting.
      schema:
        default: "{{appId}}"
        type: string
    queryId:
      in: path
      name: queryId
      required: true
      description: The ID of the query 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
    tableId:
      in: path
      name: tableId
      required: true
      description: The ID of the table 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
    viewId:
      in: path
      name: viewId
      required: true
      description: The ID of the view which this request is targeting.
      schema:
        type: string
    workspaceId:
      in: path
      name: workspaceId
      required: true
      description: The ID of the workspace which this request is targeting.
      schema:
        default: "{{workspaceId}}"
        type: string
  examples:
    application:
      value:
        data:
          _id: app_metadata
          appId: app_dev_957b12f943d348faa61db7e18e088d0f
          version: 1.0.58-alpha.0
          name: App name
          url: /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: /url
            tenantId: default
            updatedAt: 2022-02-22T13:00:54.035Z
            createdAt: 2022-02-11T18:02:26.961Z
            status: development
    workspace:
      value:
        data:
          _id: app_metadata
          appId: app_dev_957b12f943d348faa61db7e18e088d0f
          version: 1.0.58-alpha.0
          name: App name
          url: /url
          tenantId: default
          updatedAt: 2022-02-22T13:00:54.035Z
          createdAt: 2022-02-11T18:02:26.961Z
          status: development
    workspaces:
      value:
        data:
          - _id: app_metadata
            appId: app_dev_957b12f943d348faa61db7e18e088d0f
            version: 1.0.58-alpha.0
            name: App name
            url: /url
            tenantId: default
            updatedAt: 2022-02-22T13:00:54.035Z
            createdAt: 2022-02-11T18:02:26.961Z
            status: development
    deploymentOutput:
      value:
        data:
          _id: ef12381f934b4f129675cdbb76eff3c2
          status: SUCCESS
          appUrl: /app-url
    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@example.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@example.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
    metrics:
      value: >
        # HELP budibase_os_uptime Time in seconds that the host operating system
        has been up.

        # TYPE budibase_os_uptime counter

        budibase_os_uptime 54958

        # HELP budibase_os_free_mem Bytes of memory free for usage on the host operating system.

        # TYPE budibase_os_free_mem gauge

        budibase_os_free_mem 804507648

        # HELP budibase_os_total_mem Total bytes of memory on the host operating system.

        # TYPE budibase_os_total_mem gauge

        budibase_os_total_mem 16742404096

        # HELP budibase_os_used_mem Total bytes of memory in use on the host operating system.

        # TYPE budibase_os_used_mem gauge

        budibase_os_used_mem 15937896448

        # HELP budibase_os_load1 Host operating system load average.

        # TYPE budibase_os_load1 gauge

        budibase_os_load1 1.91

        # HELP budibase_os_load5 Host operating system load average.

        # TYPE budibase_os_load5 gauge

        budibase_os_load5 1.75

        # HELP budibase_os_load15 Host operating system load average.

        # TYPE budibase_os_load15 gauge

        budibase_os_load15 1.56

        # HELP budibase_tenant_user_count The number of users created.

        # TYPE budibase_tenant_user_count gauge

        budibase_tenant_user_count 1

        # HELP budibase_tenant_app_count The number of apps created by a user.

        # TYPE budibase_tenant_app_count gauge

        budibase_tenant_app_count 2

        # HELP budibase_tenant_production_app_count The number of apps a user has published.

        # TYPE budibase_tenant_production_app_count gauge

        budibase_tenant_production_app_count 1

        # HELP budibase_tenant_dev_app_count The number of apps a user has unpublished in development.

        # TYPE budibase_tenant_dev_app_count gauge

        budibase_tenant_dev_app_count 1

        # HELP budibase_tenant_db_count The number of couchdb databases including global tables such as _users.

        # TYPE budibase_tenant_db_count gauge

        budibase_tenant_db_count 3

        # HELP budibase_quota_usage_apps The number of apps created.

        # TYPE budibase_quota_usage_apps gauge

        budibase_quota_usage_apps 1

        # HELP budibase_quota_limit_apps The limit on the number of apps that can be created.

        # TYPE budibase_quota_limit_apps gauge

        budibase_quota_limit_apps 9007199254740991

        # HELP budibase_quota_usage_rows The number of database rows used from the quota.

        # TYPE budibase_quota_usage_rows gauge

        budibase_quota_usage_rows 0

        # HELP budibase_quota_limit_rows The limit on the number of rows that can be created.

        # TYPE budibase_quota_limit_rows gauge

        budibase_quota_limit_rows 9007199254740991

        # HELP budibase_quota_usage_plugins The number of plugins in use.

        # TYPE budibase_quota_usage_plugins gauge

        budibase_quota_usage_plugins 0

        # HELP budibase_quota_limit_plugins The limit on the number of plugins that can be created.

        # TYPE budibase_quota_limit_plugins gauge

        budibase_quota_limit_plugins 9007199254740991

        # HELP budibase_quota_usage_user_groups The number of user groups created.

        # TYPE budibase_quota_usage_user_groups gauge

        budibase_quota_usage_user_groups 0

        # HELP budibase_quota_limit_user_groups The limit on the number of user groups that can be created.

        # TYPE budibase_quota_limit_user_groups gauge

        budibase_quota_limit_user_groups 9007199254740991

        # HELP budibase_quota_usage_queries The number of queries used in the current month.

        # TYPE budibase_quota_usage_queries gauge

        budibase_quota_usage_queries 0

        # HELP budibase_quota_limit_queries The limit on the number of queries for the current month.

        # TYPE budibase_quota_limit_queries gauge

        budibase_quota_limit_queries 9007199254740991

        # HELP budibase_quota_usage_automations The number of automations used in the current month.

        # TYPE budibase_quota_usage_automations gauge

        budibase_quota_usage_automations 0

        # HELP budibase_quota_limit_automations The limit on the number of automations that can be created.

        # TYPE budibase_quota_limit_automations gauge

        budibase_quota_limit_automations 9007199254740991
    view:
      value:
        data:
          name: peopleView
          tableId: ta_896a325f7e8147d2a2cda93c5d236511
          schema:
            name:
              visible: true
              readonly: false
              order: 1
              width: 300
            age:
              visible: true
              readonly: true
              order: 2
              width: 200
            salary:
              visible: false
              readonly: false
          query:
            logicalOperator: all
            onEmptyFilter: none
            groups:
              - logicalOperator: any
                filters:
                  - operator: string
                    field: name
                    value: John
                  - operator: range
                    field: age
                    value:
                      low: 18
                      high: 100
          primaryDisplay: name
    views:
      value:
        data:
          - name: peopleView
            tableId: ta_896a325f7e8147d2a2cda93c5d236511
            schema:
              name:
                visible: true
                readonly: false
                order: 1
                width: 300
              age:
                visible: true
                readonly: true
                order: 2
                width: 200
              salary:
                visible: false
                readonly: false
            query:
              logicalOperator: all
              onEmptyFilter: none
              groups:
                - logicalOperator: any
                  filters:
                    - operator: string
                      field: name
                      value: John
                    - operator: range
                      field: age
                      value:
                        low: 18
                        high: 100
            primaryDisplay: name
  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:
          description: The name of the app.
          type: string
        url:
          description: The URL by which the app is accessed, this must be URL encoded.
          type: string
      required:
        - name
    workspace:
      type: object
      properties:
        name:
          description: The name of the app.
          type: string
        url:
          description: The URL by which the app is accessed, this must be URL encoded.
          type: string
      required:
        - name
    applicationOutput:
      type: object
      properties:
        data:
          type: object
          properties:
            name:
              description: The name of the app.
              type: string
            url:
              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
            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
          required:
            - _id
            - name
            - url
            - status
            - createdAt
            - updatedAt
            - version
      required:
        - data
    workspaceOutput:
      type: object
      properties:
        data:
          type: object
          properties:
            name:
              description: The name of the app.
              type: string
            url:
              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
            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
          required:
            - _id
            - name
            - url
            - status
            - createdAt
            - updatedAt
            - version
      required:
        - data
    applicationSearch:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              name:
                description: The name of the app.
                type: string
              url:
                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
              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
            required:
              - _id
              - name
              - url
              - status
              - createdAt
              - updatedAt
              - version
      required:
        - data
    workspaceSearch:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              name:
                description: The name of the app.
                type: string
              url:
                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
              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
            required:
              - _id
              - name
              - url
              - status
              - createdAt
              - updatedAt
              - version
      required:
        - data
    deploymentOutput:
      type: object
      properties:
        data:
          type: object
          properties:
            _id:
              description: The ID of the app.
              type: string
            status:
              description: Status of the deployment, whether it succeeded or failed
              type: string
              enum:
                - SUCCESS
                - FAILURE
            appUrl:
              description: The URL of the published app
              type: string
          required:
            - _id
            - status
            - appUrl
      required:
        - data
    appExport:
      type: object
      properties:
        encryptPassword:
          description: An optional password used to encrypt the export.
          type: string
        excludeRows:
          description: Set whether the internal table rows should be excluded from the
            export.
          type: boolean
      required:
        - encryptPassword
        - excludeRows
    workspaceExport:
      type: object
      properties:
        encryptPassword:
          description: An optional password used to encrypt the export.
          type: string
        excludeRows:
          description: Set whether the internal table rows should be excluded from the
            export.
          type: boolean
      required:
        - encryptPassword
        - excludeRows
    row:
      description: The row to be created/updated, based on the table schema.
      type: object
      additionalProperties:
        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:
            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
    table:
      description: The table to be created/updated.
      type: object
      required:
        - name
        - schema
      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
                      presence:
                        oneOf:
                          - type: boolean
                            description: Defines whether the column is required or not.
                          - type: object
                            description: Defines whether the column is required or not.
                            properties:
                              allowEmpty:
                                type: boolean
                                description: Defines whether the value is allowed to be empty or not.
                      inclusion:
                        type: array
                        description: Defines the valid values for this column.
                  name:
                    type: string
                    description: The name of the column.
                  autocolumn:
                    type: boolean
                    description: Defines whether the column is automatically generated.
                  width:
                    type: number
                    description: Defines the width of the column in the data UI.
                  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
                      presence:
                        oneOf:
                          - type: boolean
                            description: Defines whether the column is required or not.
                          - type: object
                            description: Defines whether the column is required or not.
                            properties:
                              allowEmpty:
                                type: boolean
                                description: Defines whether the value is allowed to be empty or not.
                      inclusion:
                        type: array
                        description: Defines the valid values for this column.
                  name:
                    type: string
                    description: The name of the column.
                  autocolumn:
                    type: boolean
                    description: Defines whether the column is automatically generated.
                  width:
                    type: number
                    description: Defines the width of the column in the data UI.
                  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
              

# --- truncated at 32 KB (130 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/budibase/refs/heads/main/openapi/budibase-public-api-openapi.yml