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

# Update Application Demo Configuration

> Replace the application's saved demo defaults. env and database are replaced wholesale on every PUT. The stack_profile and base_stack blocks are written only when their key is present in the body: an absent key preserves the stored designation, an explicit null clears it, so a client that predates either block cannot silently drop a demo's dependencies. Secret environment values are submitted and echoed as ${SECRET_SLOT:<uuid>} sentinels. A browser session twin is mounted at the same path without the /api/v1 prefix (cookie authentication plus the X-Ankra-CSRF double-submit header).



## OpenAPI

````yaml https://platform.ankra.app/openapi.json put /api/v1/org/applications/{application_id}/demo-config
openapi: 3.1.0
info:
  title: FastAPI
  version: 0.1.0
servers:
  - url: https://platform.ankra.app
security: []
paths:
  /api/v1/org/applications/{application_id}/demo-config:
    put:
      tags:
        - Applications API
      summary: Update Application Demo Configuration
      description: >-
        Replace the application's saved demo defaults. env and database are
        replaced wholesale on every PUT. The stack_profile and base_stack blocks
        are written only when their key is present in the body: an absent key
        preserves the stored designation, an explicit null clears it, so a
        client that predates either block cannot silently drop a demo's
        dependencies. Secret environment values are submitted and echoed as
        ${SECRET_SLOT:<uuid>} sentinels. A browser session twin is mounted at
        the same path without the /api/v1 prefix (cookie authentication plus the
        X-Ankra-CSRF double-submit header).
      operationId: >-
        update_application_demo_configuration_api_v1_org_applications__application_id__demo_config_put
      parameters:
        - in: path
          name: application_id
          required: true
          schema:
            title: Application Id
            type: string
        - in: header
          name: authorization
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Authorization
        - in: header
          name: x-ankra-organisation-id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: X-Ankra-Organisation-Id
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationDemoConfiguration'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationDemoConfiguration'
          description: The saved configuration after the write
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DemoDetailError'
          description: >-
            Validation failure (for example "stack_profile.profile_id must be a
            valid UUID." or "base_stack.id must be a valid UUID.")
        '401':
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DemoDetailError'
          description: '"You do not have permission to configure application demos."'
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DemoDetailError'
          description: Not found ("Application not found")
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
components:
  schemas:
    ApplicationDemoConfiguration:
      description: >-
        The application's saved demo defaults, served and accepted by GET/PUT
        demo-config. On PUT, env and database are replaced wholesale;
        stack_profile, base_stack, migrate_command, and database_extensions are
        written only when their key is present in the body (absent preserves the
        stored value, explicit null/empty clears it).
      properties:
        base_stack:
          anyOf:
            - $ref: '#/components/schemas/DemoConfigurationBaseStack'
            - type: 'null'
          description: >-
            The shared demo base stack demos of this application depend on; null
            keeps demos free of shared infrastructure.
        database:
          type: boolean
        database_extensions:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          description: >-
            Postgres extensions the demo database creates at initdb (plain
            lowercase identifiers, e.g. vector). Requires database=true.
        env:
          items:
            $ref: '#/components/schemas/DemoEnvironmentEntry'
          type: array
        migrate_command:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The command that provisions a fresh demo database's schema; runs
            through sh -c in the application image after the database gate, with
            the demo environment. Requires database=true or a base stack.
        stack_profile:
          anyOf:
            - $ref: '#/components/schemas/DemoConfigurationStackProfile'
            - type: 'null'
          description: The full-stack demo designation; null keeps demos single-service.
      required:
        - env
        - database
      type: object
    DemoDetailError:
      description: >-
        The FastAPI-style detail envelope the demo routes use for
        400/403/404/409/502 responses.
      properties:
        detail:
          type: string
      required:
        - detail
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    DemoConfigurationBaseStack:
      description: >-
        The base-stack reference of a demo configuration. Only id is written on
        PUT; name and status are denormalized onto reads.
      properties:
        id:
          format: uuid
          type: string
        name:
          description: Read-only.
          type: string
        status:
          description: Read-only.
          type: string
      required:
        - id
      type: object
    DemoEnvironmentEntry:
      description: >-
        One demo environment entry. Secret values ride as ${SECRET_SLOT:<uuid>}
        sentinels - the persisted form, safe to echo; resolved secrets never
        ride this surface.
      properties:
        name:
          type: string
        secret:
          type: boolean
        value:
          type: string
      required:
        - name
        - value
        - secret
      type: object
    DemoConfigurationStackProfile:
      description: The stack-profile block of a demo configuration.
      properties:
        enabled:
          type: boolean
        parameters:
          description: >-
            Secret parameter values ride as ${SECRET_SLOT:<uuid>} sentinels.
            Entries with an empty name are dropped on PUT. Always present on
            reads.
          items:
            $ref: '#/components/schemas/DemoStackParameter'
          type: array
        profile_id:
          format: uuid
          type: string
        profile_name:
          description: Denormalized onto reads only; ignored on PUT.
          type: string
        version:
          anyOf:
            - type: integer
            - type: 'null'
          description: Null tracks the profile's current version.
      required:
        - enabled
        - profile_id
      type: object
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
    DemoStackParameter:
      description: >-
        One stack-profile parameter binding. Secret values ride as
        ${SECRET_SLOT:<uuid>} sentinels, never resolved values.
      properties:
        name:
          type: string
        value:
          type: string
      required:
        - name
        - value
      type: object

````