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

# Publish a version

> Make a version the one this decision evaluates.

Only approved versions can be published, so this is the single gate
between authoring and what runs. Rolling back is this same call with
an earlier version — it is recorded as a rollback in the history.

Publishing is a pointer write, never an export and re-import, which
would duplicate version rows and break the audit chain.

**Required roles**: `approver` or `workspace_admin`



## OpenAPI

````yaml post /api/decisions/{workspace}/{key}/publish
openapi: 3.1.0
info:
  title: Nx1 AI API
  description: |

    AI API for Nx1 Data Platform Management and Automated Data Tasks.

    Authentication is required via PSK in Authorization header.

    Default PSK is | [ask a friend] |
  version: 0.10.2
servers: []
security: []
paths:
  /api/decisions/{workspace}/{key}/publish:
    post:
      tags:
        - Decisions
      summary: Publish a version
      description: |-
        Make a version the one this decision evaluates.

        Only approved versions can be published, so this is the single gate
        between authoring and what runs. Rolling back is this same call with
        an earlier version — it is recorded as a rollback in the history.

        Publishing is a pointer write, never an export and re-import, which
        would duplicate version rows and break the audit chain.

        **Required roles**: `approver` or `workspace_admin`
      operationId: publish_api_decisions__workspace___key__publish_post
      parameters:
        - name: workspace
          in: path
          required: true
          schema:
            type: string
            maxLength: 64
            pattern: ^[a-z0-9][a-z0-9-]{0,63}$
            description: Workspace slug.
            title: Workspace
          description: Workspace slug.
        - name: key
          in: path
          required: true
          schema:
            type: string
            maxLength: 64
            pattern: ^[a-z0-9][a-z0-9-]{0,63}$
            description: Decision key — a flat slug, never a path.
            title: Key
          description: Decision key — a flat slug, never a path.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublishRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicationDetailResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Conflict
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - OAuth2AuthorizationCodeBearer: []
        - APIKeyHeader: []
components:
  schemas:
    PublishRequest:
      properties:
        version:
          type: integer
          minimum: 1
          title: Version
          description: >-
            Version to make live. Rolling back is publishing an earlier version
            — there is no separate action.
      type: object
      required:
        - version
      title: PublishRequest
    PublicationDetailResponse:
      properties:
        workspace:
          type: string
          title: Workspace
        key:
          type: string
          title: Key
        version:
          type: integer
          title: Version
        previous_version:
          anyOf:
            - type: integer
            - type: 'null'
          title: Previous Version
        action:
          $ref: '#/components/schemas/PublicationActionEnum'
        published_by:
          type: string
          title: Published By
        published_at:
          type: string
          format: date-time
          title: Published At
      type: object
      required:
        - workspace
        - key
        - version
        - action
        - published_by
        - published_at
      title: PublicationDetailResponse
    ErrorResponse:
      properties:
        error:
          type: string
          title: Error
          description: A brief description of the error that occurred.
        code:
          type: integer
          title: Code
          description: The HTTP status code associated with the error.
          default: 500
      type: object
      required:
        - error
      title: ErrorResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    PublicationActionEnum:
      type: string
      enum:
        - publish
        - rollback
      title: PublicationActionEnum
      description: What a ``rules_publication_history`` row records.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    OAuth2AuthorizationCodeBearer:
      type: oauth2
      flows:
        authorizationCode:
          scopes: {}
          authorizationUrl: >-
            https://sso-rapid.rapid.nx1cloud.com/realms/rapid/protocol/openid-connect/auth
          tokenUrl: >-
            https://sso-rapid.rapid.nx1cloud.com/realms/rapid/protocol/openid-connect/token
    APIKeyHeader:
      type: apiKey
      in: header
      name: Authorization-PSK

````