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

# Publish an offering's qualification questions

> Compiles and publishes the offering's qualification questions for your brand. Publishing checks that every question is non-medical screening and carries no consent or medical-intake content; anything medical is rejected. It never changes the shared medical intake.



## OpenAPI

````yaml /openapi/public-openapi.json post /v1/account/offerings/{offering_ref}/qualification/publish
openapi: 3.1.0
info:
  title: Purple API
  version: 0.0.0
servers:
  - url: https://api.dev.purplelabelmd.com
security: []
tags:
  - description: Sign a patient in and out and manage the browser session.
    name: Sessions & authentication
  - description: Run the server-driven intake questionnaire question by question.
    name: Intake
  - description: Address autocomplete for the intake flow.
    name: Addresses
  - description: Read the public status of a patient's enrollment.
    name: Enrollment
  - description: Track a client's onboarding progress.
    name: Onboarding
  - description: Read back the platform configuration stored for your brand.
    name: Brand configuration
  - description: Enable offerings for your brand and set their display copy.
    name: Offering configuration
  - description: Start and track payments for an order.
    name: Payments
  - description: Subscribe to platform events and manage delivery endpoints.
    name: Webhooks
paths:
  /v1/account/offerings/{offering_ref}/qualification/publish:
    post:
      tags:
        - Offering configuration
      summary: Publish an offering's qualification questions
      description: >-
        Compiles and publishes the offering's qualification questions for your
        brand. Publishing checks that every question is non-medical screening
        and carries no consent or medical-intake content; anything medical is
        rejected. It never changes the shared medical intake.
      operationId: publishQualificationOverlay
      parameters:
        - in: path
          name: offering_ref
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublishOverlayRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublishOverlayReceipt'
          description: the overlay artifact was compiled and activated
        '400':
          $ref: '#/components/responses/OverlayBadRequest'
        '404':
          $ref: '#/components/responses/OverlayNotFound'
        '422':
          $ref: '#/components/responses/OverlayUnprocessable'
        '503':
          $ref: '#/components/responses/OverlayStoreUnavailable'
      security:
        - apiKey: []
components:
  schemas:
    PublishOverlayRequest:
      properties:
        actor:
          type: string
        mode:
          enum:
            - initial
            - refill
          type: string
      required:
        - mode
      type: object
    PublishOverlayReceipt:
      properties:
        value:
          properties:
            activation:
              description: >-
                the append-only activation audit row for this (brand, offering,
                mode) flip
              nullable: true
              properties:
                actor:
                  type: string
                at:
                  type: string
                from:
                  nullable: true
                  type: string
                mode:
                  type: string
                offering_ref:
                  type: string
                to:
                  type: string
              type: object
            bundle_hash:
              pattern: ^sha256:[0-9a-f]{64}$
              type: string
          required:
            - bundle_hash
          type: object
      required:
        - value
      type: object
    CompileProblem:
      description: RFC 7807 problem, extended with the structured compile issue list
      properties:
        issues:
          items:
            properties:
              code:
                type: string
              message:
                type: string
              where:
                type: string
            required:
              - code
              - where
              - message
            type: object
          type: array
        status:
          type: integer
        title:
          type: string
      required:
        - title
        - status
      type: object
  responses:
    OverlayBadRequest:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CompileProblem'
      description: missing or invalid parameters
    OverlayNotFound:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CompileProblem'
      description: >-
        no shared clinical bundle for that (therapy|offering, mode), or no such
        resource
    OverlayUnprocessable:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CompileProblem'
      description: validation failed — the declare-a-fact wall or the compile bar (422)
    OverlayStoreUnavailable:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/CompileProblem'
      description: >-
        the durable question store did not answer — nothing was written or
        changed; safe to retry once the store recovers
  securitySchemes:
    apiKey:
      description: 'Per-client API key (M2M). Presented as `Authorization: Bearer <key>`.'
      scheme: bearer
      type: http

````