> ## Documentation Index
> Fetch the complete documentation index at: https://openworklabs.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create an immutable Workflow version using the immediately preceding matching test receipt and unchanged draft



## OpenAPI

````yaml /openapi.json post /v1/workflows/{configObjectId}/versions
openapi: 3.1.0
info:
  title: Den API
  description: >-
    OpenAPI spec for the Den control plane API.


    Authentication:

    - Use `Authorization: Bearer <session-token>` for user-authenticated routes
    that require a Den session.

    - Use `x-api-key: <den-api-key>` for API-key-authenticated routes that
    accept organization API keys.

    - Public routes like health and documentation do not require authentication.


    Swagger tip: use the security schemes in the Authorize dialog to set either
    `bearerAuth` or `denApiKey` before trying protected endpoints.
  version: dev
servers:
  - url: http://api.den.local
security: []
tags:
  - name: System
    description: Service health and operational routes.
  - name: Organizations
    description: Top-level organization creation and context routes.
  - name: Invitations
    description: Invitation preview, acceptance, creation, and cancellation routes.
  - name: API Keys
    description: Organization API key management routes.
  - name: SCIM
    description: Organization SCIM connector management routes.
  - name: SSO
    description: Organization single sign-on connector management routes.
  - name: Members
    description: Organization member management routes.
  - name: Roles
    description: Organization custom role management routes.
  - name: Teams
    description: Organization team management routes.
  - name: Templates
    description: Organization shared template routes.
  - name: LLM Providers
    description: Organization LLM provider catalog, configuration, and access routes.
  - name: Workers
    description: Worker lifecycle, billing, and runtime routes.
  - name: Worker Runtime
    description: Worker runtime inspection and upgrade routes.
  - name: Worker Activity
    description: Worker heartbeat and activity reporting routes.
  - name: Telemetry
    description: Telemetry event ingestion and adoption analytics.
  - name: Admin
    description: Administrative reporting routes.
  - name: Users
    description: Current user and membership routes.
  - name: Bootstrap
    description: Agent-first provisional workspace setup routes.
paths:
  /v1/workflows/{configObjectId}/versions:
    post:
      tags:
        - Workflows
      summary: >-
        Create an immutable Workflow version using the immediately preceding
        matching test receipt and unchanged draft
      operationId: postV1WorkflowsByConfigObjectIdVersions
      parameters:
        - schema:
            type: string
          in: path
          name: configObjectId
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                description:
                  type: string
                  maxLength: 4000
                code:
                  type: string
                  minLength: 1
                  maxLength: 200000
                exampleInput: {}
                inputSchema: {}
                outputSchema:
                  description: >-
                    Optional JSON Schema for the value returned by this
                    Workflow.
                requiredCapabilities:
                  maxItems: 100
                  type: array
                  items:
                    type: object
                    properties:
                      capabilityName:
                        type: string
                        minLength: 1
                        maxLength: 255
                      scriptPath:
                        type: string
                        minLength: 1
                        maxLength: 255
                    required:
                      - capabilityName
                      - scriptPath
                receiptId:
                  type: string
                  minLength: 1
                  maxLength: 160
                  description: >-
                    Copy receiptId from the immediately preceding successful
                    draft test. Submit the exact same name, description, code,
                    exampleInput, inputSchema, outputSchema, and
                    requiredCapabilities used by that test.
              required:
                - name
                - code
                - requiredCapabilities
                - receiptId
      responses:
        '201':
          description: Workflow version created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  pluginId:
                    type: string
                    minLength: 1
                    maxLength: 160
                  configObjectId:
                    type: string
                    minLength: 1
                    maxLength: 160
                  title:
                    type: string
                    minLength: 1
                    maxLength: 255
                  description:
                    anyOf:
                      - type: string
                      - type: 'null'
                  canRun:
                    type: boolean
                  canManage:
                    type: boolean
                  currentVersion:
                    type: object
                    properties:
                      id:
                        type: string
                        minLength: 1
                        maxLength: 160
                      code:
                        anyOf:
                          - type: string
                          - type: 'null'
                      inputSchema:
                        anyOf:
                          - {}
                          - type: 'null'
                      outputSchema:
                        anyOf:
                          - {}
                          - type: 'null'
                      exampleInput:
                        anyOf:
                          - {}
                          - type: 'null'
                      requiredCapabilities:
                        type: array
                        items:
                          type: object
                          properties:
                            capabilityName:
                              type: string
                              minLength: 1
                              maxLength: 255
                            scriptPath:
                              type: string
                              minLength: 1
                              maxLength: 255
                          required:
                            - capabilityName
                            - scriptPath
                      codeDigest:
                        type: string
                        pattern: ^sha256:[a-f0-9]{64}$
                      inputSchemaDigest:
                        anyOf:
                          - type: string
                            pattern: ^sha256:[a-f0-9]{64}$
                          - type: 'null'
                      outputSchemaDigest:
                        anyOf:
                          - type: string
                            pattern: ^sha256:[a-f0-9]{64}$
                          - type: 'null'
                      createdAt:
                        type: string
                        format: date-time
                        pattern: >-
                          ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                      automationReferences:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              minLength: 1
                              maxLength: 160
                            name:
                              type: string
                              minLength: 1
                              maxLength: 120
                            state:
                              type: string
                              enum:
                                - active
                                - inactive
                                - needs_attention
                                - archived
                            configObjectVersionId:
                              type: string
                              minLength: 1
                              maxLength: 160
                            input: {}
                          required:
                            - id
                            - name
                            - state
                            - configObjectVersionId
                    required:
                      - id
                      - code
                      - inputSchema
                      - outputSchema
                      - requiredCapabilities
                      - codeDigest
                      - inputSchemaDigest
                      - outputSchemaDigest
                      - createdAt
                      - automationReferences
                  versions:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          minLength: 1
                          maxLength: 160
                        code:
                          anyOf:
                            - type: string
                            - type: 'null'
                        inputSchema:
                          anyOf:
                            - {}
                            - type: 'null'
                        outputSchema:
                          anyOf:
                            - {}
                            - type: 'null'
                        exampleInput:
                          anyOf:
                            - {}
                            - type: 'null'
                        requiredCapabilities:
                          type: array
                          items:
                            type: object
                            properties:
                              capabilityName:
                                type: string
                                minLength: 1
                                maxLength: 255
                              scriptPath:
                                type: string
                                minLength: 1
                                maxLength: 255
                            required:
                              - capabilityName
                              - scriptPath
                        codeDigest:
                          type: string
                          pattern: ^sha256:[a-f0-9]{64}$
                        inputSchemaDigest:
                          anyOf:
                            - type: string
                              pattern: ^sha256:[a-f0-9]{64}$
                            - type: 'null'
                        outputSchemaDigest:
                          anyOf:
                            - type: string
                              pattern: ^sha256:[a-f0-9]{64}$
                            - type: 'null'
                        createdAt:
                          type: string
                          format: date-time
                          pattern: >-
                            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                        automationReferences:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                                minLength: 1
                                maxLength: 160
                              name:
                                type: string
                                minLength: 1
                                maxLength: 120
                              state:
                                type: string
                                enum:
                                  - active
                                  - inactive
                                  - needs_attention
                                  - archived
                              configObjectVersionId:
                                type: string
                                minLength: 1
                                maxLength: 160
                              input: {}
                            required:
                              - id
                              - name
                              - state
                              - configObjectVersionId
                      required:
                        - id
                        - code
                        - inputSchema
                        - outputSchema
                        - requiredCapabilities
                        - codeDigest
                        - inputSchemaDigest
                        - outputSchemaDigest
                        - createdAt
                        - automationReferences
                  latestSnapshot:
                    anyOf:
                      - type: object
                        properties:
                          receiptId:
                            type: string
                            minLength: 1
                            maxLength: 160
                          pluginId:
                            type: string
                            minLength: 1
                            maxLength: 160
                          configObjectId:
                            type: string
                            minLength: 1
                            maxLength: 160
                          configObjectVersionId:
                            type: string
                            minLength: 1
                            maxLength: 160
                          automationRunId:
                            anyOf:
                              - type: string
                                minLength: 1
                                maxLength: 160
                              - type: 'null'
                          value:
                            anyOf:
                              - {}
                              - type: 'null'
                          markdown:
                            anyOf:
                              - type: string
                              - type: 'null'
                          codeDigest:
                            type: string
                            pattern: ^sha256:[a-f0-9]{64}$
                          resultDigest:
                            anyOf:
                              - type: string
                                pattern: ^sha256:[a-f0-9]{64}$
                              - type: 'null'
                          inputSchemaDigest:
                            anyOf:
                              - type: string
                                pattern: ^sha256:[a-f0-9]{64}$
                              - type: 'null'
                          outputSchemaDigest:
                            anyOf:
                              - type: string
                                pattern: ^sha256:[a-f0-9]{64}$
                              - type: 'null'
                          rendererVersion:
                            anyOf:
                              - type: string
                                const: codemode-markdown-v1
                              - type: 'null'
                          status:
                            type: string
                            enum:
                              - succeeded
                              - failed
                          errorKind:
                            anyOf:
                              - type: string
                              - type: 'null'
                          errorMessage:
                            anyOf:
                              - type: string
                              - type: 'null'
                          source:
                            type: string
                            enum:
                              - manual
                              - scheduled
                          startedAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                          finishedAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                          contentDeletedAt:
                            anyOf:
                              - type: string
                                format: date-time
                                pattern: >-
                                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                              - type: 'null'
                        required:
                          - receiptId
                          - pluginId
                          - configObjectId
                          - configObjectVersionId
                          - automationRunId
                          - value
                          - markdown
                          - codeDigest
                          - resultDigest
                          - inputSchemaDigest
                          - outputSchemaDigest
                          - rendererVersion
                          - status
                          - errorKind
                          - errorMessage
                          - source
                          - startedAt
                          - finishedAt
                          - contentDeletedAt
                      - type: 'null'
                  latestSuccessfulSnapshot:
                    anyOf:
                      - type: object
                        properties:
                          receiptId:
                            type: string
                            minLength: 1
                            maxLength: 160
                          pluginId:
                            type: string
                            minLength: 1
                            maxLength: 160
                          configObjectId:
                            type: string
                            minLength: 1
                            maxLength: 160
                          configObjectVersionId:
                            type: string
                            minLength: 1
                            maxLength: 160
                          automationRunId:
                            anyOf:
                              - type: string
                                minLength: 1
                                maxLength: 160
                              - type: 'null'
                          value:
                            anyOf:
                              - {}
                              - type: 'null'
                          markdown:
                            anyOf:
                              - type: string
                              - type: 'null'
                          codeDigest:
                            type: string
                            pattern: ^sha256:[a-f0-9]{64}$
                          resultDigest:
                            anyOf:
                              - type: string
                                pattern: ^sha256:[a-f0-9]{64}$
                              - type: 'null'
                          inputSchemaDigest:
                            anyOf:
                              - type: string
                                pattern: ^sha256:[a-f0-9]{64}$
                              - type: 'null'
                          outputSchemaDigest:
                            anyOf:
                              - type: string
                                pattern: ^sha256:[a-f0-9]{64}$
                              - type: 'null'
                          rendererVersion:
                            anyOf:
                              - type: string
                                const: codemode-markdown-v1
                              - type: 'null'
                          status:
                            type: string
                            enum:
                              - succeeded
                              - failed
                          errorKind:
                            anyOf:
                              - type: string
                              - type: 'null'
                          errorMessage:
                            anyOf:
                              - type: string
                              - type: 'null'
                          source:
                            type: string
                            enum:
                              - manual
                              - scheduled
                          startedAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                          finishedAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                          contentDeletedAt:
                            anyOf:
                              - type: string
                                format: date-time
                                pattern: >-
                                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                              - type: 'null'
                        required:
                          - receiptId
                          - pluginId
                          - configObjectId
                          - configObjectVersionId
                          - automationRunId
                          - value
                          - markdown
                          - codeDigest
                          - resultDigest
                          - inputSchemaDigest
                          - outputSchemaDigest
                          - rendererVersion
                          - status
                          - errorKind
                          - errorMessage
                          - source
                          - startedAt
                          - finishedAt
                          - contentDeletedAt
                      - type: 'null'
                  freshness:
                    oneOf:
                      - type: object
                        properties:
                          state:
                            type: string
                            const: never_run
                        required:
                          - state
                      - type: object
                        properties:
                          state:
                            type: string
                            const: fresh
                          ageMs:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                        required:
                          - state
                          - ageMs
                      - type: object
                        properties:
                          state:
                            type: string
                            const: stale
                          ageMs:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                          maxAgeMs:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                        required:
                          - state
                          - ageMs
                          - maxAgeMs
                      - type: object
                        properties:
                          state:
                            type: string
                            const: needs_attention
                          ageMs:
                            anyOf:
                              - type: integer
                                minimum: 0
                                maximum: 9007199254740991
                              - type: 'null'
                          lastSuccessfulReceiptId:
                            anyOf:
                              - type: string
                                minLength: 1
                                maxLength: 160
                              - type: 'null'
                          reason:
                            type: string
                            minLength: 1
                            maxLength: 2000
                        required:
                          - state
                          - ageMs
                          - lastSuccessfulReceiptId
                          - reason
                required:
                  - pluginId
                  - configObjectId
                  - title
                  - description
                  - canRun
                  - canManage
                  - currentVersion
                  - versions
                  - latestSnapshot
                  - latestSuccessfulSnapshot
                  - freshness
        '400':
          description: Version rejected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidRequestError'
components:
  schemas:
    InvalidRequestError:
      type: object
      properties:
        error:
          type: string
          const: invalid_request
        details:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
              path:
                type: array
                items:
                  anyOf:
                    - type: string
                    - type: number
            required:
              - message
            additionalProperties: {}
      required:
        - error
        - details

````