openapi: 3.0.3 info: title: Bubble Data Action Element API description: 'The Bubble Data API exposes the database of a Bubble app as a REST interface. External systems can read, search, create, modify, replace, and delete records of any data type defined in a Bubble app, with optional pagination, sorting, and search constraints. Authentication uses bearer tokens (admin API tokens bypass privacy rules; user tokens enforce them). Endpoints exist for live and development (`version-test`) environments. ' version: '1.1' contact: name: Bubble Support url: https://bubble.io/contact license: name: Bubble Terms of Service url: https://bubble.io/legal/terms-of-service servers: - url: https://{appname}.bubbleapps.io/api/1.1 description: Live App on Bubble subdomain variables: appname: default: myapp description: Bubble app name - url: https://{appname}.bubbleapps.io/version-test/api/1.1 description: Development (version-test) on Bubble subdomain variables: appname: default: myapp description: Bubble app name - url: https://{customDomain}/api/1.1 description: Live App on a custom domain variables: customDomain: default: example.com description: Custom domain pointing to the Bubble app security: - BearerAuth: [] tags: - name: Element description: Visual element lifecycle hooks invoked by the Bubble page renderer. paths: /elements/{elementName}/initialize: post: tags: - Element summary: Initialize Element description: 'Element initialize hook. Receives `(instance, context)`. Use to set up DOM state, allocate resources, and register state. ' operationId: initializeElement parameters: - name: elementName in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: instance: $ref: '#/components/schemas/ElementInstance' context: $ref: '#/components/schemas/ClientContext' responses: '200': description: Initialization complete. /elements/{elementName}/update: post: tags: - Element summary: Update Element description: 'Element update hook. Receives `(instance, properties, context)`. Triggered when any of the element''s bound properties change. ' operationId: updateElement parameters: - name: elementName in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: instance: $ref: '#/components/schemas/ElementInstance' properties: $ref: '#/components/schemas/ActionProperties' context: $ref: '#/components/schemas/ClientContext' responses: '200': description: Update applied. components: schemas: ActionProperties: type: object description: Map of property names to values, defined by the plugin author in the editor. additionalProperties: true ElementInstance: type: object description: Element instance handle for setting state, publishing values, and triggering events. additionalProperties: true ClientContext: type: object description: Client-side context passed to actions and element hooks. additionalProperties: true securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: API Token description: 'Send the API token in the `Authorization` header as `Bearer `. Admin tokens bypass privacy rules; user tokens (returned by the `Log the User in` workflow action) enforce privacy rules per user. '