B3

B3 Templates API

The Templates API from B3 — 10 operation(s) for templates.

Operations 12

GET /v1/templates
POST /v1/templates
GET /v1/templates/by-source-workflow/{workflowId}
DELETE /v1/templates/{id}
PUT /v1/templates/{id}/promote
PUT /v1/templates/{id}/unpromote
PATCH /v1/templates/{templateId}
POST /v1/templates/{templateId}/rollback
GET /v1/templates/{templateId}/versions
GET /v1/templates/{templateId}/versions/count
GET /v1/templates/{templateId}/versions/{versionNumber}
GET /v1/templates/recommended

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/b3-templates-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

b3-templates-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: B3 Templates API
  version: '1.0'
  description: 'Operations tagged Templates across 2 of this provider''s published API definitions: b3-b3os-workflow-openapi.json, b3-templates-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.b3os.org/v1
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Templates
paths:
  /v1/templates:
    get:
      description: List templates by category and tags
      parameters:
      - description: Template category (promoted, public, org, all)
        in: query
        name: category
        schema:
          default: all
          type: string
      - description: Tag slugs to filter by (can specify multiple)
        in: query
        name: tags
        schema:
          items:
            type: string
          type: array
      - description: Number of items (default 20, max 100)
        in: query
        name: limit
        schema:
          type: integer
      - description: Offset for pagination (default 0)
        in: query
        name: offset
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.SuccessResponse'
          description: OK
      tags:
      - Templates
    post:
      description: Create a new workflow template
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - type: object
              - $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_service_workflowtemplate.CreateWorkflowTemplateRequest'
                summary: request
                description: Template details
        description: Template details
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.SuccessResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Bad Request
      tags:
      - Templates
  /v1/templates/by-source-workflow/{workflowId}:
    get:
      description: Get template by source workflow ID. Returns 200 with null data when no template exists for the workflow.
      parameters:
      - description: Source workflow ID
        in: path
        name: workflowId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.SuccessResponse'
          description: OK
      tags:
      - Templates
  /v1/templates/{id}:
    delete:
      description: Delete a template (admin only)
      parameters:
      - description: Template ID
        in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.SuccessResponse'
          description: OK
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Not Found
      tags:
      - Templates
  /v1/templates/{id}/promote:
    put:
      description: Promote a template (admin only)
      parameters:
      - description: Template ID
        in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.SuccessResponse'
          description: OK
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Not Found
      tags:
      - Templates
  /v1/templates/{id}/unpromote:
    put:
      description: Unpromote a template (admin only)
      parameters:
      - description: Template ID
        in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.SuccessResponse'
          description: OK
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Not Found
      tags:
      - Templates
  /v1/templates/{templateId}:
    patch:
      description: Update an existing workflow template
      parameters:
      - description: Template ID
        in: path
        name: templateId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - type: object
              - $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_service_workflowtemplate.UpdateWorkflowTemplateRequest'
                summary: request
                description: Template update details
        description: Template update details
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.SuccessResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Not Found
      tags:
      - Templates
  /v1/templates/{templateId}/rollback:
    post:
      description: Rollback template to a previous version
      parameters:
      - description: Template ID
        in: path
        name: templateId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - type: object
              - $ref: '#/components/schemas/RollbackTemplateParams'
                summary: body
                description: Rollback params
        description: Rollback params
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RollbackTemplateSuccessResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Not Found
      tags:
      - Templates
  /v1/templates/{templateId}/versions:
    get:
      description: List all versions of a template
      parameters:
      - description: Template ID
        in: path
        name: templateId
        required: true
        schema:
          type: string
      - description: Number of items (default 20, max 100)
        in: query
        name: limit
        schema:
          type: integer
      - description: Offset for pagination (default 0)
        in: query
        name: offset
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListTemplateVersionsSuccessResponse'
          description: OK
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Not Found
      tags:
      - Templates
  /v1/templates/{templateId}/versions/count:
    get:
      description: Count total versions for a specific template
      parameters:
      - description: Template ID
        in: path
        name: templateId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountTemplateVersionsSuccessResponse'
          description: OK
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Not Found
      tags:
      - Templates
  /v1/templates/{templateId}/versions/{versionNumber}:
    get:
      description: Get a specific version of a template by version number
      parameters:
      - description: Template ID
        in: path
        name: templateId
        required: true
        schema:
          type: string
      - description: Version number
        in: path
        name: versionNumber
        required: true
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTemplateVersionSuccessResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Not Found
      tags:
      - Templates
  /v1/templates/recommended:
    get:
      description: Get personalized template recommendations based on user's tag interests
      parameters:
      - description: 'Template category: ''promoted'', ''public'', ''org'', ''all'''
        in: query
        name: category
        required: true
        schema:
          type: string
      - description: 'Maximum number of templates to return (default: 20, max: 100)'
        in: query
        name: limit
        schema:
          type: integer
      - description: 'Recommendation strategy: ''strong_match'', ''interest_based'' (default), ''popular_with_interest'''
        in: query
        name: strategy
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecommendTemplatesSuccessResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Unauthorized
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Internal Server Error
      tags:
      - Templates
components:
  schemas:
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.CommentReply:
      properties:
        createdAt:
          type: string
        createdBy:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNoteUser'
        id:
          type: string
        text:
          type: string
        updatedAt:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNoteSize:
      properties:
        height:
          type: number
        width:
          type: number
      type: object
    TemplateVersionCount:
      properties:
        total:
          type: integer
      type: object
    TemplateVersionsData:
      properties:
        currentVersion:
          type: integer
        hasMore:
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.Template'
          type: array
          uniqueItems: false
        limit:
          type: integer
        offset:
          type: integer
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowInput:
      properties:
        description:
          type: string
        key:
          type: string
        required:
          type: boolean
        type:
          description: '"string", "number", "boolean", "object", "array"'
          type: string
      type: object
    RollbackTemplateParams:
      properties:
        targetVersion:
          minimum: 1
          type: integer
      required:
      - targetVersion
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowNode:
      properties:
        blockContext:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockNodeContext'
        branch:
          description: '"then"/"else" (if parent), "resumed"/"timed_out" (wait parent)'
          type: string
        children:
          items:
            type: string
          type: array
          uniqueItems: false
        connector:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ConnectorReference'
        description:
          description: AI-generated 1-sentence description
          type: string
        loopBody:
          description: Loop body nodes (only for for-each nodes)
          items:
            type: string
          type: array
          uniqueItems: false
        payload:
          additionalProperties: {}
          type: object
        resultSchema:
          additionalProperties: {}
          description: 'ResultSchema describes the output structure of this node (populated dynamically for x402 endpoints).

            This is used by the frontend to show available output variables in the variable picker.'
          type: object
        titleOverride:
          description: AI-generated short title (2-6 words), only when more descriptive than default
          type: string
        type:
          type: string
      required:
      - payload
      - type
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse:
      properties:
        code:
          type: integer
        details:
          items: {}
          type: array
          uniqueItems: false
        message:
          type: string
        requestId:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockOutputProperty:
      properties:
        description:
          type: string
        properties:
          additionalProperties:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockOutputProperty'
          type: object
        type:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropVisibleWhen:
      description: 'VisibleWhen controls conditional visibility: show this prop only when

        the referenced prop has the specified value.'
      properties:
        propKey:
          type: string
        value: {}
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSchemaSummaryAggregate:
      properties:
        column:
          description: Column key in PropSchema.Columns.
          type: string
        label:
          description: 'Optional override for the displayed label. If empty, the frontend

            derives a label from the column + reducer (e.g. "Total amount").'
          type: string
        reduce:
          description: 'Reducer name. Matches the key in the frontend cell-spec''s

            `aggregate` map (currently: "sum", "count"). Unknown reducers are

            silently skipped on the frontend.'
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TemplateProp:
      properties:
        default: {}
        description:
          type: string
        key:
          type: string
        name:
          type: string
        properties:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSchema'
        required:
          type: boolean
        sensitive:
          type: boolean
        type:
          description: '"string", "number", "integer", "boolean", "object" (for csvTable)'
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TemplateVisibility:
      enum:
      - org
      - public
      - org
      - public
      type: string
      x-enum-comments:
        TemplateVisibilityOrg: Only visible to organization members
        TemplateVisibilityPublic: Visible to everyone
      x-enum-varnames:
      - TemplateVisibilityOrg
      - TemplateVisibilityPublic
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSource:
      properties:
        fieldPath:
          type: string
        nodeId:
          type: string
        nodeLabel:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNote:
      properties:
        color:
          type: string
        createdAt:
          type: string
        createdBy:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNoteUser'
        id:
          type: string
        position:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.NodePosition'
        size:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNoteSize'
        text:
          type: string
        updatedAt:
          type: string
        zIndex:
          type: integer
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowDefinition:
      description: 'Definition is the inline workflow graph to analyze. Same shape as a

        saved workflow''s definition. Unlike the ephemeral-run endpoint there

        is no trigger restriction — analysis is read-only and method-agnostic.'
      properties:
        blockExpansions:
          additionalProperties:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockExpansionMeta'
          description: Set on run snapshots only (not workflow DB)
          type: object
        inputSchema:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowInput'
          type: array
          uniqueItems: false
        nodes:
          additionalProperties:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowNode'
          type: object
        sensitivePropKeys:
          description: 'Legacy: kept for old runs; no longer populated for new workflows'
          items:
            type: string
          type: array
          uniqueItems: false
        triggerNodeIds:
          description: 'TriggerNodeIDs lists the node IDs that are trigger (root) nodes. Every

            workflow declares this — single-trigger workflows ship ["root"] (the

            legacy node id), multi-trigger workflows list every trigger node id.

            Treating single-trigger as a forest-of-1 removes the two-path branching

            throughout the BE + FE; older rows without the field are backfilled by

            migration 000282 and the field-missing path stays as a read-side safety

            net (see FindTriggerNodeIDs) but is no longer exercised by saves.


            "root" is also a runtime alias for "the trigger that fired this run" —

            {{root.X}} variable references resolve to the firing trigger regardless

            of which trigger fired. Don''t repurpose the literal "root" as a trigger

            id on a multi-trigger workflow.'
          items:
            type: string
          type: array
          uniqueItems: false
        variableDefs:
          description: 'VariableDefs is a snapshot of the workflow''s declared variables at run

            creation time. The canonical source lives on the workflows row

            (Workflow.VariableDefs column). Snapshotted into the run definition

            so the worker can resolve {{$vars.x}} lookups and route variable-action

            writes to the right scope without an extra DB round trip.'
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.VariableDef'
          type: array
          uniqueItems: false
      required:
      - nodes
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.BlockNodeContext:
      description: 'BlockContext is set on nodes that were expanded from a block.

        It traces the node back to its source block and carries the inputMapping

        needed to resolve {{$inputs.key}} references at execution time.'
      properties:
        blockId:
          description: Block entity ID
          type: string
        blockNodeId:
          description: Original block node ID in the workflow
          type: string
        blockVersion:
          description: Pinned block version
          type: integer
        inputMapping:
          additionalProperties: {}
          description: From block node payload (consumer-authored)
          type: object
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSchemaSummary:
      description: 'Summary drives the csvTable footer summary. Nil means no summary is

        rendered. See PropSchemaSummary for details.'
      properties:
        aggregates:
          description: Aggregates declared in display order, left-to-right.
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSchemaSummaryAggregate'
          type: array
          uniqueItems: false
        position:
          description: 'Position in the grid. "footer" (default) renders inline under the

            table. "none" suppresses even when aggregates are declared — use to

            disable inherited summaries. Other values reserved.'
          type: string
      type: object
    GetTemplateVersionSuccessResponse:
      properties:
        code:
          example: 200
          type: integer
        data:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.Template'
        message:
          example: success
          type: string
        requestId:
          example: abc-123
          type: string
      type: object
    RollbackTemplateSuccessResponse:
      properties:
        code:
          example: 200
          type: integer
        data:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.Template'
        message:
          example: success
          type: string
        requestId:
          example: abc-123
          type: string
      type: object
    ? github_com_b3-fun_b3-mono_services_b3os-workflow_PaginatedData-github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity_Template
    : properties:
        hasMore:
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.Template'
          type: array
          uniqueItems: false
        limit:
          type: integer
        offset:
          type: integer
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.StickyNoteUser:
      properties:
        clientId:
          type: string
        name:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_service_workflowtemplate.CreateWorkflowTemplateRequest:
      properties:
        category:
          description: 'Deprecated: use Tags instead'
          type: string
        cooldownMs:
          type: integer
        definition:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowDefinition'
        description:
          maxLength: 2000
          type: string
        maxRuns:
          type: integer
        name:
          maxLength: 255
          type: string
        sourceWorkflowId:
          type: string
        tableSchemas:
          additionalProperties:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TableSchema'
          type: object
        tags:
          items:
            type: string
          type: array
          uniqueItems: false
        templateProps:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TemplateProp'
          type: array
          uniqueItems: false
        uiMetadata:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowUIMetadata'
        visibility:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TemplateVisibility'
      required:
      - definition
      - description
      - name
      - tags
      - visibility
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.SuccessResponse:
      allOf:
      - $ref: '#/components/schemas/data'
      properties:
        code:
          type: integer
        data: {}
        message:
          type: string
        requestId:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_service_workflowtemplate.UpdateWorkflowTemplateRequest:
      properties:
        cooldownMs:
          type: integer
        definition:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowDefinition'
        description:
          type: string
        maxRuns:
          type: integer
        name:
          type: string
        slug:
          type: string
        tableSchemas:
          additionalProperties:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TableSchema'
          description: Pointer-to-map so PATCH can distinguish omit-and-preserve (nil) from replace-with-empty.
          type: object
        tags:
          items:
            type: string
          type: array
          uniqueItems: false
        templateProps:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TemplateProp'
          type: array
          uniqueItems: false
        uiMetadata:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowUIMetadata'
        visibility:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TemplateVisibility'
      type: object
    CountTemplateVersionsSuccessResponse:
      properties:
        code:
          example: 0
          type: integer
        data:
          $ref: '#/components/schemas/TemplateVersionCount'
        message:
          example: successfully
          type: string
        requestId:
          example: abc-123
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.TableSchema:
      properties:
        columns:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ColumnSchema'
          type: array
          uniqueItems: false
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.VariableDef:
      properties:
        default: {}
        description:
          type: string
        lifetime:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.VariableLifetime'
        name:
          type: string
        type:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.VariableType'
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.PropSchema:
      properties:
        accountType:
          description: 'AccountType filters the wallet picker by account type on

            inputType="walletConnector" fields (e.g. "polymarket_deposit_wallet").'
          type: string
        allowWalletPicker:
          description: 'AllowWalletPicker controls the org-wallet picker on inputType="address"

            fields. When false, the frontend hides the inline "Wallets" badge and

            the org-wallet autocomplete popover. Use for third-party address fields

            (e.g. a deployer filter) where suggesting org wallets is misleading.

            Pointer so explicit false survives JSON round-trip (default true on FE).'
          type: boolean
        allowedChannels:
          description: 'AllowedChannels constrains the notification-channel picker

            (inputType: "notification-channel") to a subset of channels. Used by

            templates whose downstream nodes only work with one channel type

            (e.g. ["slack"] for a Slack-only approval flow). Frontend ignores

            unknown keys; a length-1 list auto-selects in the picker.'
          items:
            type: string
    

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