openapi: 3.2.0 info: title: Hookbase Transforms API version: 1.0.0 description: Official OpenAPI 3.0 specification for the Hookbase webhook relay platform. Generated from the maintained Postman collection. Authenticate with an API key (whr_ prefix) as a Bearer token. contact: name: Hookbase url: https://www.hookbase.app servers: - url: https://api.hookbase.app description: Production security: - bearerAuth: [] tags: - name: Transforms paths: /api/transforms: post: tags: - Transforms summary: Create transform operationId: transforms_create_transform responses: '200': description: Successful response description: Create a reusable payload transform (JSONata, XSLT, Liquid, or JavaScript). requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Required. Transform name. code: type: string description: Required. Transform code (language per transformType). transformType: type: string description: Optional. jsonata | xslt | liquid | javascript (default jsonata). inputFormat: type: string description: Optional. json | xml | text (default json). outputFormat: type: string description: Optional. json | xml | text (default json). description: type: string description: Optional. Freeform description. slug: type: string description: Optional. URL-safe id (auto-generated if omitted). required: - name - code example: name: Flatten GitHub PR code: '{ "id": number, "title": title }' transformType: jsonata inputFormat: json outputFormat: json description: Flattens PR payloads slug: flatten-github-pr get: tags: - Transforms summary: List transforms operationId: transforms_list_transforms parameters: - name: page in: query required: false schema: type: string example: '1' - name: pageSize in: query required: false schema: type: string example: '20' responses: '200': description: Successful response description: List transforms for the org (paginated). /api/transforms/{transformId}: get: tags: - Transforms summary: Get transform by id operationId: transforms_get_transform_by_id parameters: - name: transformId in: path required: true schema: type: string responses: '200': description: Successful response description: Fetch a single transform by id or slug. patch: tags: - Transforms summary: Update transform operationId: transforms_update_transform parameters: - name: transformId in: path required: true schema: type: string responses: '200': description: Successful response description: Update a transform. All fields optional; if `code` changes it is re-validated. requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: Optional. Transform name. code: type: string description: Optional. Transform code. transformType: type: string description: Optional. jsonata | xslt | liquid | javascript. inputFormat: type: string description: Optional. json | xml | text. outputFormat: type: string description: Optional. json | xml | text. description: type: string description: Optional. Freeform description (null to clear). isActive: type: boolean description: Optional. Enable/disable the transform. example: name: Flatten GitHub PR code: '{ "id": number }' transformType: jsonata inputFormat: json outputFormat: json description: Updated description isActive: true /api/transforms/test: post: tags: - Transforms summary: Test transform operationId: transforms_test_transform responses: '200': description: Successful response description: Run transform code against a sample payload and return the output (nothing is saved). requestBody: required: true content: application/json: schema: type: object properties: code: type: string description: Required. Transform code to run. payload: type: object description: Required. Sample input payload. transformType: type: string description: Optional. jsonata | xslt | liquid | javascript (default jsonata). inputFormat: type: string description: Optional. json | xml | text (default json). outputFormat: type: string description: Optional. json | xml | text (default json). required: - code - payload example: code: '{ "id": number, "title": title }' payload: number: 1 title: Fix bug transformType: jsonata inputFormat: json outputFormat: json /api/transforms/generate: post: tags: - Transforms summary: Generate transform with AI (Starter+) operationId: transforms_generate_transform_with_ai_starter responses: '200': description: Successful response description: Generate transform code from a natural-language description (Starter plan and above). requestBody: required: true content: application/json: schema: type: object properties: description: type: string description: Required. What the transform should do. transformType: type: string description: Optional. Target language (default jsonata). sampleInput: type: object description: Optional. Example input to guide generation. sampleOutput: type: object description: Optional. Desired output to guide generation. required: - description example: description: Extract id and title from the PR payload transformType: jsonata sampleInput: number: 1 title: Fix bug sampleOutput: id: 1 title: Fix bug /api/transforms/{transformId}/export: get: tags: - Transforms summary: Export transform operationId: transforms_export_transform parameters: - name: transformId in: path required: true schema: type: string responses: '200': description: Successful response description: Export a single transform as a portable JSON document. /api/transforms/import: post: tags: - Transforms summary: Import transform operationId: transforms_import_transform responses: '200': description: Successful response description: Import a transform from the export format. requestBody: required: true content: application/json: schema: type: object properties: transform: type: object description: Required. Transform config { name, code, transformType?, inputFormat?, outputFormat?, description?, slug? }. overwrite: type: boolean description: Optional. Overwrite an existing transform with the same slug. required: - transform example: transform: name: Flatten GitHub PR code: '{ "id": number }' transformType: jsonata overwrite: false components: securitySchemes: bearerAuth: type: http scheme: bearer description: Hookbase API key with the whr_ prefix.