naftiko: 1.0.0-alpha2 info: label: Bubble Data API — Data description: 'Bubble Data API — Data. 8 operations. Lead operation: Get Data Type Metadata. Self-contained Naftiko capability covering one Bubble business surface.' tags: - Bubble - Data created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: BUBBLE_API_KEY: BUBBLE_API_KEY capability: consumes: - type: http namespace: data-data baseUri: https://{appname}.bubbleapps.io/api/1.1 description: Bubble Data API — Data business capability. Self-contained, no shared references. resources: - name: meta path: /meta operations: - name: getmetadata method: GET description: Get Data Type Metadata outputRawFormat: json outputParameters: - name: result type: object value: $. - name: obj-typename path: /obj/{typename} operations: - name: searchthings method: GET description: Search Things outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: constraints in: query type: string description: JSON-encoded array of search constraints. Each constraint is an object - name: cursor in: query type: integer description: Zero-based start position for the page. - name: limit in: query type: integer description: Maximum results per request (default and max 100 per page). - name: sort_field in: query type: string description: Field name to sort the results by. - name: descending in: query type: boolean description: Sort direction. `true` for descending, `false` for ascending. - name: additional_sort_fields in: query type: string description: JSON-encoded array of additional sort fields and directions. - name: exclude_remaining in: query type: boolean description: Skip total-record counting for performance. - name: creatething method: POST description: Create Thing outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: obj-typename-bulk path: /obj/{typename}/bulk operations: - name: bulkcreatethings method: POST description: Bulk Create Things outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: obj-typename-uid path: /obj/{typename}/{uid} operations: - name: getthing method: GET description: Get Thing outputRawFormat: json outputParameters: - name: result type: object value: $. - name: modifything method: PATCH description: Modify Thing outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: replacething method: PUT description: Replace Thing outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: deletething method: DELETE description: Delete Thing outputRawFormat: json outputParameters: - name: result type: object value: $. authentication: type: bearer token: '{{env.BUBBLE_API_KEY}}' exposes: - type: rest namespace: data-data-rest port: 8080 description: REST adapter for Bubble Data API — Data. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/meta name: meta description: REST surface for meta. operations: - method: GET name: getmetadata description: Get Data Type Metadata call: data-data.getmetadata outputParameters: - type: object mapping: $. - path: /v1/obj/{typename} name: obj-typename description: REST surface for obj-typename. operations: - method: GET name: searchthings description: Search Things call: data-data.searchthings with: constraints: rest.constraints cursor: rest.cursor limit: rest.limit sort_field: rest.sort_field descending: rest.descending additional_sort_fields: rest.additional_sort_fields exclude_remaining: rest.exclude_remaining outputParameters: - type: object mapping: $. - method: POST name: creatething description: Create Thing call: data-data.creatething with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/obj/{typename}/bulk name: obj-typename-bulk description: REST surface for obj-typename-bulk. operations: - method: POST name: bulkcreatethings description: Bulk Create Things call: data-data.bulkcreatethings with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/obj/{typename}/{uid} name: obj-typename-uid description: REST surface for obj-typename-uid. operations: - method: GET name: getthing description: Get Thing call: data-data.getthing outputParameters: - type: object mapping: $. - method: PATCH name: modifything description: Modify Thing call: data-data.modifything with: body: rest.body outputParameters: - type: object mapping: $. - method: PUT name: replacething description: Replace Thing call: data-data.replacething with: body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletething description: Delete Thing call: data-data.deletething outputParameters: - type: object mapping: $. - type: mcp namespace: data-data-mcp port: 9090 transport: http description: MCP adapter for Bubble Data API — Data. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-data-type-metadata description: Get Data Type Metadata hints: readOnly: true destructive: false idempotent: true call: data-data.getmetadata outputParameters: - type: object mapping: $. - name: search-things description: Search Things hints: readOnly: true destructive: false idempotent: true call: data-data.searchthings with: constraints: tools.constraints cursor: tools.cursor limit: tools.limit sort_field: tools.sort_field descending: tools.descending additional_sort_fields: tools.additional_sort_fields exclude_remaining: tools.exclude_remaining outputParameters: - type: object mapping: $. - name: create-thing description: Create Thing hints: readOnly: false destructive: false idempotent: false call: data-data.creatething with: body: tools.body outputParameters: - type: object mapping: $. - name: bulk-create-things description: Bulk Create Things hints: readOnly: false destructive: false idempotent: false call: data-data.bulkcreatethings with: body: tools.body outputParameters: - type: object mapping: $. - name: get-thing description: Get Thing hints: readOnly: true destructive: false idempotent: true call: data-data.getthing outputParameters: - type: object mapping: $. - name: modify-thing description: Modify Thing hints: readOnly: false destructive: false idempotent: true call: data-data.modifything with: body: tools.body outputParameters: - type: object mapping: $. - name: replace-thing description: Replace Thing hints: readOnly: false destructive: false idempotent: true call: data-data.replacething with: body: tools.body outputParameters: - type: object mapping: $. - name: delete-thing description: Delete Thing hints: readOnly: false destructive: true idempotent: true call: data-data.deletething outputParameters: - type: object mapping: $.