openapi: 3.0.3
info:
    title: Kube Workspaces API
    description: API for managing container-based workspaces in Kubernetes
    version: 1.0.0
servers:
    - url: http://localhost:8080
paths:
    /healthz:
        get:
            tags:
                - health
            summary: check health
            description: Health check endpoint
            operationId: health#check
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/CheckResponseBody'
                            example:
                                status: ok
    /v1/executions:
        get:
            tags:
                - executions
            summary: list executions
            description: List execution records visible to the actor
            operationId: executions#list
            parameters:
                - name: namespace
                  in: query
                  description: Filter by namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Filter by namespace
                    example: Cum recusandae atque et fugiat.
                  example: Quia aut.
                - name: workspace_name
                  in: query
                  description: Filter by workspace name
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Filter by workspace name
                    example: Eaque veritatis et exercitationem.
                  example: Illum explicabo excepturi distinctio consequatur impedit nemo.
                - name: actor_id
                  in: query
                  description: Filter by actor
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Filter by actor
                    example: Facere libero corporis nulla.
                  example: Accusamus repellat.
                - name: since
                  in: query
                  description: RFC3339 lower bound
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: RFC3339 lower bound
                    example: "1970-10-31T20:21:12Z"
                    format: date-time
                  example: "2000-08-28T02:04:21Z"
                - name: limit
                  in: query
                  description: Max results
                  allowEmptyValue: true
                  schema:
                    type: integer
                    description: Max results
                    default: 100
                    example: 864
                    format: int64
                    minimum: 1
                    maximum: 1000
                  example: 785
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: '#/components/schemas/ExecutionRecord'
                                example:
                                    - actor_id: user@example.com
                                      admission_time: "2026-10-17T00:00:00Z"
                                      admitted: true
                                      deny_reason: ""
                                      durability: none
                                      elevated: false
                                      end_time: "1994-11-29T20:16:33Z"
                                      execution_id: exec_9f82
                                      exit_code: 0
                                      grant_version: "1.0"
                                      mode: ephemeral
                                      namespace: team-a
                                      operation: shell
                                      os_identity: root
                                      recording_id: rec_9f82
                                      recording_lost: false
                                      start_time: "1974-12-05T19:40:29Z"
                                      state: succeeded
                                      termination: graceful
                                      workspace_generation: 3
                                      workspace_name: vm-1
                                      workspace_uid: abc123
                                    - actor_id: user@example.com
                                      admission_time: "2026-10-17T00:00:00Z"
                                      admitted: true
                                      deny_reason: ""
                                      durability: none
                                      elevated: false
                                      end_time: "1994-11-29T20:16:33Z"
                                      execution_id: exec_9f82
                                      exit_code: 0
                                      grant_version: "1.0"
                                      mode: ephemeral
                                      namespace: team-a
                                      operation: shell
                                      os_identity: root
                                      recording_id: rec_9f82
                                      recording_lost: false
                                      start_time: "1974-12-05T19:40:29Z"
                                      state: succeeded
                                      termination: graceful
                                      workspace_generation: 3
                                      workspace_name: vm-1
                                      workspace_uid: abc123
                                    - actor_id: user@example.com
                                      admission_time: "2026-10-17T00:00:00Z"
                                      admitted: true
                                      deny_reason: ""
                                      durability: none
                                      elevated: false
                                      end_time: "1994-11-29T20:16:33Z"
                                      execution_id: exec_9f82
                                      exit_code: 0
                                      grant_version: "1.0"
                                      mode: ephemeral
                                      namespace: team-a
                                      operation: shell
                                      os_identity: root
                                      recording_id: rec_9f82
                                      recording_lost: false
                                      start_time: "1974-12-05T19:40:29Z"
                                      state: succeeded
                                      termination: graceful
                                      workspace_generation: 3
                                      workspace_name: vm-1
                                      workspace_uid: abc123
                                    - actor_id: user@example.com
                                      admission_time: "2026-10-17T00:00:00Z"
                                      admitted: true
                                      deny_reason: ""
                                      durability: none
                                      elevated: false
                                      end_time: "1994-11-29T20:16:33Z"
                                      execution_id: exec_9f82
                                      exit_code: 0
                                      grant_version: "1.0"
                                      mode: ephemeral
                                      namespace: team-a
                                      operation: shell
                                      os_identity: root
                                      recording_id: rec_9f82
                                      recording_lost: false
                                      start_time: "1974-12-05T19:40:29Z"
                                      state: succeeded
                                      termination: graceful
                                      workspace_generation: 3
                                      workspace_name: vm-1
                                      workspace_uid: abc123
                            example:
                                - actor_id: user@example.com
                                  admission_time: "2026-10-17T00:00:00Z"
                                  admitted: true
                                  deny_reason: ""
                                  durability: none
                                  elevated: false
                                  end_time: "1994-11-29T20:16:33Z"
                                  execution_id: exec_9f82
                                  exit_code: 0
                                  grant_version: "1.0"
                                  mode: ephemeral
                                  namespace: team-a
                                  operation: shell
                                  os_identity: root
                                  recording_id: rec_9f82
                                  recording_lost: false
                                  start_time: "1974-12-05T19:40:29Z"
                                  state: succeeded
                                  termination: graceful
                                  workspace_generation: 3
                                  workspace_name: vm-1
                                  workspace_uid: abc123
                                - actor_id: user@example.com
                                  admission_time: "2026-10-17T00:00:00Z"
                                  admitted: true
                                  deny_reason: ""
                                  durability: none
                                  elevated: false
                                  end_time: "1994-11-29T20:16:33Z"
                                  execution_id: exec_9f82
                                  exit_code: 0
                                  grant_version: "1.0"
                                  mode: ephemeral
                                  namespace: team-a
                                  operation: shell
                                  os_identity: root
                                  recording_id: rec_9f82
                                  recording_lost: false
                                  start_time: "1974-12-05T19:40:29Z"
                                  state: succeeded
                                  termination: graceful
                                  workspace_generation: 3
                                  workspace_name: vm-1
                                  workspace_uid: abc123
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Quo nesciunt est est explicabo.
                            example: Distinctio est vel nihil aut occaecati.
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Rerum et amet consequatur est odit non.
                            example: Nobis totam adipisci soluta reiciendis.
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Ut incidunt sunt asperiores.
                            example: Dolorum amet.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Provident recusandae.
                            example: Fugiat pariatur doloremque.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Fugiat eveniet.
                            example: Deserunt temporibus ab laudantium aliquid.
    /v1/executions/{execution_id}:
        get:
            tags:
                - executions
            summary: get executions
            description: Get an execution record and its last known outcome
            operationId: executions#get
            parameters:
                - name: execution_id
                  in: path
                  description: Execution identifier
                  required: true
                  schema:
                    type: string
                    description: Execution identifier
                    example: exec_9f82
                  example: exec_9f82
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/ExecutionRecord'
                            example:
                                actor_id: user@example.com
                                admission_time: "2026-10-17T00:00:00Z"
                                admitted: true
                                deny_reason: ""
                                durability: none
                                elevated: false
                                end_time: "1990-07-17T05:32:18Z"
                                execution_id: exec_9f82
                                exit_code: 0
                                grant_version: "1.0"
                                mode: ephemeral
                                namespace: team-a
                                operation: shell
                                os_identity: root
                                recording_id: rec_9f82
                                recording_lost: false
                                start_time: "2011-12-29T10:03:55Z"
                                state: succeeded
                                termination: graceful
                                workspace_generation: 3
                                workspace_name: vm-1
                                workspace_uid: abc123
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Alias expedita aut illo ullam quia.
                            example: Sunt in optio enim autem ut.
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Consequatur eos sunt facilis possimus cupiditate adipisci.
                            example: Dolore velit libero quibusdam consequatur animi dolore.
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Et velit ab natus consequatur aut sit.
                            example: Aut nam qui iusto hic.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Asperiores molestias occaecati dolor.
                            example: Suscipit sed consequuntur velit soluta voluptas quaerat.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Eos eveniet nesciunt possimus doloribus.
                            example: Perferendis ut dolor id.
    /v1/executions/{execution_id}/recording:
        get:
            tags:
                - executions
            summary: manifest executions
            description: Verify recording integrity and audit protected playback access
            operationId: executions#manifest
            parameters:
                - name: execution_id
                  in: path
                  required: true
                  schema:
                    type: string
                    example: Minus distinctio qui.
                  example: Aliquid et et.
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/ExecutionRecordingManifest'
                            example:
                                chunks: 8424688984786026506
                                plaintext_bytes: 1713810940006498849
                                recording_id: Consequatur autem.
                                verified: true
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Aut voluptas eveniet molestias.
                            example: Quia provident facilis.
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Debitis distinctio ducimus.
                            example: Aspernatur in molestiae.
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Quos sunt dolorum blanditiis fuga.
                            example: Est accusamus.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Qui nihil illum aut quos ea.
                            example: Eum eos illo rerum et.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Eius voluptatibus.
                            example: Est ipsum quasi.
    /v1/executions/{execution_id}/recording/chunks/{index}:
        get:
            tags:
                - executions
            summary: chunk executions
            description: Read a verified recording chunk with fresh scoped recording-read permission
            operationId: executions#chunk
            parameters:
                - name: execution_id
                  in: path
                  required: true
                  schema:
                    type: string
                    example: Laudantium aut dolor.
                  example: Eveniet unde aliquid ad.
                - name: index
                  in: path
                  required: true
                  schema:
                    type: integer
                    example: 13926015707419871942
                    format: int64
                  example: 17837082285978465902
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/ExecutionRecordingChunk'
                            example:
                                data:
                                    - 68
                                    - 111
                                    - 108
                                    - 111
                                    - 114
                                    - 101
                                    - 109
                                    - 32
                                    - 101
                                    - 120
                                    - 101
                                    - 114
                                    - 99
                                    - 105
                                    - 116
                                    - 97
                                    - 116
                                    - 105
                                    - 111
                                    - 110
                                    - 101
                                    - 109
                                    - 32
                                    - 101
                                    - 110
                                    - 105
                                    - 109
                                    - 46
                                index: 0
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Quia ducimus provident id.
                            example: Maxime consequatur tempora nihil odio.
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Aut sequi quisquam voluptatem illo.
                            example: Cupiditate omnis non.
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Consequatur autem repellendus qui impedit voluptas.
                            example: Dolorem fugiat et voluptatem similique.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Officiis officia nobis minus.
                            example: Et voluptatem voluptas.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Qui repellendus dolores quod eligendi soluta repellendus.
                            example: Soluta est et.
    /v1/executions/start:
        post:
            tags:
                - executions
            summary: start executions
            description: Execute one bounded SYSTEM command in an eligible running Windows VM and return its recorded outcome synchronously
            operationId: executions#start
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/StartRequestBody'
                        example:
                            args:
                                - Provident vel dignissimos quibusdam iure eos.
                                - Ut dolore.
                                - Laboriosam rerum facere aut.
                            cwd: C:\Temp
                            deadline_seconds: 11
                            executable: C:\Windows\System32\cmd.exe
                            namespace: team-a
                            workspace_name: vm-1
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/ExecutionCommand'
                            example:
                                admission_time: "2026-10-17T00:00:00Z"
                                denial: transport lost; do not rerun
                                durability: none
                                duration_ms: 120
                                execution_id: exec_9f82
                                exit_code: 0
                                mode: ephemeral
                                namespace: team-a
                                outcome: succeeded
                                recording_id: rec_9f82
                                state: succeeded
                                stderr:
                                    - 83
                                    - 101
                                    - 113
                                    - 117
                                    - 105
                                    - 32
                                    - 115
                                    - 105
                                    - 116
                                    - 46
                                stdout:
                                    - 82
                                    - 101
                                    - 112
                                    - 101
                                    - 108
                                    - 108
                                    - 97
                                    - 116
                                    - 32
                                    - 109
                                    - 97
                                    - 103
                                    - 110
                                    - 105
                                    - 32
                                    - 97
                                    - 108
                                    - 105
                                    - 113
                                    - 117
                                    - 97
                                    - 109
                                    - 32
                                    - 101
                                    - 111
                                    - 115
                                    - 32
                                    - 100
                                    - 111
                                    - 108
                                    - 111
                                    - 114
                                    - 101
                                    - 115
                                    - 32
                                    - 118
                                    - 111
                                    - 108
                                    - 117
                                    - 112
                                    - 116
                                    - 97
                                    - 116
                                    - 101
                                    - 109
                                    - 32
                                    - 100
                                    - 111
                                    - 108
                                    - 111
                                    - 114
                                    - 46
                                truncated: false
                                workspace_name: vm-1
                                workspace_uid: abc123
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Molestiae recusandae aliquam molestiae.
                            example: Ipsum sed.
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Provident magni quia quo.
                            example: Suscipit harum fuga.
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Quia iste molestias qui.
                            example: Minus voluptas rerum.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Sint dolorum illum quia.
                            example: Non architecto minima sunt recusandae est.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Nihil eum et distinctio quia.
                            example: Hic et tenetur.
    /v1/executions/status:
        get:
            tags:
                - executions
            summary: status executions
            description: Get execution management status (policy + storage readiness)
            operationId: executions#status
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/ExecutionStatus'
                            example:
                                allow_elevated: false
                                durable: false
                                enabled: false
                                issuer_ready: false
                                storage_available: false
                                storage_mode: disabled
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Tempora qui.
                            example: Provident laborum alias.
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Sint molestiae.
                            example: Natus quod.
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Quia odit quod temporibus sed cumque.
                            example: Facilis et provident explicabo.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Voluptatem rem repudiandae et iusto.
                            example: Perspiciatis accusantium et.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Quas laborum alias expedita.
                            example: Itaque dolores enim ducimus.
    /v1/images:
        get:
            tags:
                - images
            summary: list images
            description: List available workspace images
            operationId: images#list
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: '#/components/schemas/Image'
                                example:
                                    - category: IDE
                                      cr_name: code-server
                                      default_args:
                                        - --bind-addr
                                        - 0.0.0.0:8080
                                      default_cloud_init: false
                                      default_credentials:
                                        password: changeme
                                        username: coder
                                      default_env:
                                        - name: PASSWORD
                                          value: changeme
                                      default_homedir: /home/coder
                                      default_image_pull_policy: Always
                                      default_password: changeme
                                      default_path: /
                                      default_port: 8080
                                      default_shared_memory: false
                                      default_shell: /bin/bash
                                      default_uid: 1000
                                      default_user: coder
                                      default_user_data: ""
                                      description: Code editor in the browser
                                      homepage_url: https://github.com/coder/code-server
                                      icon: code
                                      image: codercom/code-server:latest
                                      image_homepage_url: https://hub.docker.com/r/codercom/code-server
                                      links:
                                        - title: GitHub
                                          url: https://github.com/coder/code-server
                                        - title: Docker Hub
                                          url: https://hub.docker.com/r/codercom/code-server
                                      memory_limit: Itaque qui repudiandae sunt voluptatem ullam praesentium.
                                      memory_request: Ab corporis quam dicta nam id.
                                      name: Code Server (VS Code)
                                      persistent_root_disk: false
                                      persistent_root_disk_size: Odio occaecati deleniti ut qui quidem.
                                      privileged: false
                                      proxy_config:
                                        custom_request_headers:
                                            x-tenant: workspaces
                                        inject_base_tag: false
                                        needs_noop_sw: false
                                        preserve_path_prefix: true
                                        rewrite_host_absolute_paths: true
                                        tls_insecure: false
                                        websocket_paths:
                                            - /websockify
                                      remote_desktop:
                                        path: /
                                        port: 8080
                                        protocol: agent
                                      source_url: https://github.com/coder/code-server
                                      tags:
                                        - development
                                        - vscode
                                      vm_profile: Sit et vitae ut eum sapiente.
                                      workspace_types:
                                        - container
                                    - category: IDE
                                      cr_name: code-server
                                      default_args:
                                        - --bind-addr
                                        - 0.0.0.0:8080
                                      default_cloud_init: false
                                      default_credentials:
                                        password: changeme
                                        username: coder
                                      default_env:
                                        - name: PASSWORD
                                          value: changeme
                                      default_homedir: /home/coder
                                      default_image_pull_policy: Always
                                      default_password: changeme
                                      default_path: /
                                      default_port: 8080
                                      default_shared_memory: false
                                      default_shell: /bin/bash
                                      default_uid: 1000
                                      default_user: coder
                                      default_user_data: ""
                                      description: Code editor in the browser
                                      homepage_url: https://github.com/coder/code-server
                                      icon: code
                                      image: codercom/code-server:latest
                                      image_homepage_url: https://hub.docker.com/r/codercom/code-server
                                      links:
                                        - title: GitHub
                                          url: https://github.com/coder/code-server
                                        - title: Docker Hub
                                          url: https://hub.docker.com/r/codercom/code-server
                                      memory_limit: Itaque qui repudiandae sunt voluptatem ullam praesentium.
                                      memory_request: Ab corporis quam dicta nam id.
                                      name: Code Server (VS Code)
                                      persistent_root_disk: false
                                      persistent_root_disk_size: Odio occaecati deleniti ut qui quidem.
                                      privileged: false
                                      proxy_config:
                                        custom_request_headers:
                                            x-tenant: workspaces
                                        inject_base_tag: false
                                        needs_noop_sw: false
                                        preserve_path_prefix: true
                                        rewrite_host_absolute_paths: true
                                        tls_insecure: false
                                        websocket_paths:
                                            - /websockify
                                      remote_desktop:
                                        path: /
                                        port: 8080
                                        protocol: agent
                                      source_url: https://github.com/coder/code-server
                                      tags:
                                        - development
                                        - vscode
                                      vm_profile: Sit et vitae ut eum sapiente.
                                      workspace_types:
                                        - container
                            example:
                                - category: IDE
                                  cr_name: code-server
                                  default_args:
                                    - --bind-addr
                                    - 0.0.0.0:8080
                                  default_cloud_init: false
                                  default_credentials:
                                    password: changeme
                                    username: coder
                                  default_env:
                                    - name: PASSWORD
                                      value: changeme
                                  default_homedir: /home/coder
                                  default_image_pull_policy: Always
                                  default_password: changeme
                                  default_path: /
                                  default_port: 8080
                                  default_shared_memory: false
                                  default_shell: /bin/bash
                                  default_uid: 1000
                                  default_user: coder
                                  default_user_data: ""
                                  description: Code editor in the browser
                                  homepage_url: https://github.com/coder/code-server
                                  icon: code
                                  image: codercom/code-server:latest
                                  image_homepage_url: https://hub.docker.com/r/codercom/code-server
                                  links:
                                    - title: GitHub
                                      url: https://github.com/coder/code-server
                                    - title: Docker Hub
                                      url: https://hub.docker.com/r/codercom/code-server
                                  memory_limit: Itaque qui repudiandae sunt voluptatem ullam praesentium.
                                  memory_request: Ab corporis quam dicta nam id.
                                  name: Code Server (VS Code)
                                  persistent_root_disk: false
                                  persistent_root_disk_size: Odio occaecati deleniti ut qui quidem.
                                  privileged: false
                                  proxy_config:
                                    custom_request_headers:
                                        x-tenant: workspaces
                                    inject_base_tag: false
                                    needs_noop_sw: false
                                    preserve_path_prefix: true
                                    rewrite_host_absolute_paths: true
                                    tls_insecure: false
                                    websocket_paths:
                                        - /websockify
                                  remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                  source_url: https://github.com/coder/code-server
                                  tags:
                                    - development
                                    - vscode
                                  vm_profile: Sit et vitae ut eum sapiente.
                                  workspace_types:
                                    - container
                                - category: IDE
                                  cr_name: code-server
                                  default_args:
                                    - --bind-addr
                                    - 0.0.0.0:8080
                                  default_cloud_init: false
                                  default_credentials:
                                    password: changeme
                                    username: coder
                                  default_env:
                                    - name: PASSWORD
                                      value: changeme
                                  default_homedir: /home/coder
                                  default_image_pull_policy: Always
                                  default_password: changeme
                                  default_path: /
                                  default_port: 8080
                                  default_shared_memory: false
                                  default_shell: /bin/bash
                                  default_uid: 1000
                                  default_user: coder
                                  default_user_data: ""
                                  description: Code editor in the browser
                                  homepage_url: https://github.com/coder/code-server
                                  icon: code
                                  image: codercom/code-server:latest
                                  image_homepage_url: https://hub.docker.com/r/codercom/code-server
                                  links:
                                    - title: GitHub
                                      url: https://github.com/coder/code-server
                                    - title: Docker Hub
                                      url: https://hub.docker.com/r/codercom/code-server
                                  memory_limit: Itaque qui repudiandae sunt voluptatem ullam praesentium.
                                  memory_request: Ab corporis quam dicta nam id.
                                  name: Code Server (VS Code)
                                  persistent_root_disk: false
                                  persistent_root_disk_size: Odio occaecati deleniti ut qui quidem.
                                  privileged: false
                                  proxy_config:
                                    custom_request_headers:
                                        x-tenant: workspaces
                                    inject_base_tag: false
                                    needs_noop_sw: false
                                    preserve_path_prefix: true
                                    rewrite_host_absolute_paths: true
                                    tls_insecure: false
                                    websocket_paths:
                                        - /websockify
                                  remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                  source_url: https://github.com/coder/code-server
                                  tags:
                                    - development
                                    - vscode
                                  vm_profile: Sit et vitae ut eum sapiente.
                                  workspace_types:
                                    - container
                                - category: IDE
                                  cr_name: code-server
                                  default_args:
                                    - --bind-addr
                                    - 0.0.0.0:8080
                                  default_cloud_init: false
                                  default_credentials:
                                    password: changeme
                                    username: coder
                                  default_env:
                                    - name: PASSWORD
                                      value: changeme
                                  default_homedir: /home/coder
                                  default_image_pull_policy: Always
                                  default_password: changeme
                                  default_path: /
                                  default_port: 8080
                                  default_shared_memory: false
                                  default_shell: /bin/bash
                                  default_uid: 1000
                                  default_user: coder
                                  default_user_data: ""
                                  description: Code editor in the browser
                                  homepage_url: https://github.com/coder/code-server
                                  icon: code
                                  image: codercom/code-server:latest
                                  image_homepage_url: https://hub.docker.com/r/codercom/code-server
                                  links:
                                    - title: GitHub
                                      url: https://github.com/coder/code-server
                                    - title: Docker Hub
                                      url: https://hub.docker.com/r/codercom/code-server
                                  memory_limit: Itaque qui repudiandae sunt voluptatem ullam praesentium.
                                  memory_request: Ab corporis quam dicta nam id.
                                  name: Code Server (VS Code)
                                  persistent_root_disk: false
                                  persistent_root_disk_size: Odio occaecati deleniti ut qui quidem.
                                  privileged: false
                                  proxy_config:
                                    custom_request_headers:
                                        x-tenant: workspaces
                                    inject_base_tag: false
                                    needs_noop_sw: false
                                    preserve_path_prefix: true
                                    rewrite_host_absolute_paths: true
                                    tls_insecure: false
                                    websocket_paths:
                                        - /websockify
                                  remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                  source_url: https://github.com/coder/code-server
                                  tags:
                                    - development
                                    - vscode
                                  vm_profile: Sit et vitae ut eum sapiente.
                                  workspace_types:
                                    - container
        post:
            tags:
                - images
            summary: create images
            description: Create a new image
            operationId: images#create
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/CreateImagePayload'
                        example:
                            category: IDE
                            default_args:
                                - --bind-addr
                                - 0.0.0.0:8080
                            default_cloud_init: false
                            default_credentials:
                                password: changeme
                                username: coder
                            default_env:
                                - name: PASSWORD
                                  value: changeme
                            default_homedir: /home/coder
                            default_image_pull_policy: Always
                            default_password: changeme
                            default_path: /
                            default_port: 8080
                            default_shared_memory: false
                            default_shell: /bin/bash
                            default_uid: 1000
                            default_user: coder
                            default_user_data: ""
                            description: Code editor in the browser
                            homepage_url: https://github.com/coder/code-server
                            icon: code
                            image: codercom/code-server:latest
                            image_homepage_url: https://hub.docker.com/r/codercom/code-server
                            links:
                                - title: GitHub
                                  url: https://github.com/coder/code-server
                                - title: Docker Hub
                                  url: https://hub.docker.com/r/codercom/code-server
                            memory_limit: Et odit iste deleniti.
                            memory_request: Illo dignissimos.
                            name: Code Server (VS Code)
                            persistent_root_disk: false
                            persistent_root_disk_size: Voluptatem excepturi at necessitatibus optio amet.
                            privileged: false
                            proxy_config:
                                custom_request_headers:
                                    x-tenant: workspaces
                                inject_base_tag: true
                                needs_noop_sw: false
                                preserve_path_prefix: false
                                rewrite_host_absolute_paths: true
                                tls_insecure: false
                                websocket_paths:
                                    - /websockify
                            remote_desktop:
                                path: /
                                port: 8080
                                protocol: agent
                            source_url: https://github.com/coder/code-server
                            tags:
                                - development
                                - vscode
                            vm_profile: windows11-amd64-v1
                            workspace_types:
                                - container
            responses:
                "201":
                    description: Created response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/Image'
                            example:
                                category: IDE
                                cr_name: code-server
                                default_args:
                                    - --bind-addr
                                    - 0.0.0.0:8080
                                default_cloud_init: false
                                default_credentials:
                                    password: changeme
                                    username: coder
                                default_env:
                                    - name: PASSWORD
                                      value: changeme
                                default_homedir: /home/coder
                                default_image_pull_policy: Always
                                default_password: changeme
                                default_path: /
                                default_port: 8080
                                default_shared_memory: false
                                default_shell: /bin/bash
                                default_uid: 1000
                                default_user: coder
                                default_user_data: ""
                                description: Code editor in the browser
                                homepage_url: https://github.com/coder/code-server
                                icon: code
                                image: codercom/code-server:latest
                                image_homepage_url: https://hub.docker.com/r/codercom/code-server
                                links:
                                    - title: GitHub
                                      url: https://github.com/coder/code-server
                                    - title: Docker Hub
                                      url: https://hub.docker.com/r/codercom/code-server
                                memory_limit: Sit minima nostrum et est maxime qui.
                                memory_request: Delectus numquam velit quis dolores.
                                name: Code Server (VS Code)
                                persistent_root_disk: true
                                persistent_root_disk_size: Ullam eos fugit.
                                privileged: false
                                proxy_config:
                                    custom_request_headers:
                                        x-tenant: workspaces
                                    inject_base_tag: false
                                    needs_noop_sw: true
                                    preserve_path_prefix: true
                                    rewrite_host_absolute_paths: true
                                    tls_insecure: false
                                    websocket_paths:
                                        - /websockify
                                remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                source_url: https://github.com/coder/code-server
                                tags:
                                    - development
                                    - vscode
                                vm_profile: Aut facere.
                                workspace_types:
                                    - container
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: default_port must be between 1 and 65535
                            example: default_port must be between 1 and 65535
                "409":
                    description: 'already_exists: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: image "code-server" already exists
                            example: image "code-server" already exists
    /v1/namespaces:
        get:
            tags:
                - namespaces
            summary: list namespaces
            description: List available namespaces
            operationId: namespaces#list
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: '#/components/schemas/Namespace'
                                example:
                                    - created_at: "2025-01-02T15:04:05Z"
                                      name: workspaces
                                      phase: Active
                                    - created_at: "2025-01-02T15:04:05Z"
                                      name: workspaces
                                      phase: Active
                                    - created_at: "2025-01-02T15:04:05Z"
                                      name: workspaces
                                      phase: Active
                                    - created_at: "2025-01-02T15:04:05Z"
                                      name: workspaces
                                      phase: Active
                            example:
                                - created_at: "2025-01-02T15:04:05Z"
                                  name: workspaces
                                  phase: Active
                                - created_at: "2025-01-02T15:04:05Z"
                                  name: workspaces
                                  phase: Active
                                - created_at: "2025-01-02T15:04:05Z"
                                  name: workspaces
                                  phase: Active
    /v1/sshkeys:
        get:
            tags:
                - sshkeys
            summary: list sshkeys
            description: List the user's SSH public keys
            operationId: sshkeys#list
            parameters:
                - name: namespace
                  in: query
                  description: Filter by namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Filter by namespace
                    example: chris-at-fordham-id-au
                  example: chris-at-fordham-id-au
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: '#/components/schemas/Sshkey'
                                example:
                                    - created_at: "2025-01-02T15:04:05Z"
                                      fingerprint: SHA256:aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789
                                      key_name: Laptop 2025
                                      name: laptop-2025
                                      namespace: chris-at-fordham-id-au
                                      public_key: ssh-rsa AAAAB3Nza... user@example.com
                                    - created_at: "2025-01-02T15:04:05Z"
                                      fingerprint: SHA256:aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789
                                      key_name: Laptop 2025
                                      name: laptop-2025
                                      namespace: chris-at-fordham-id-au
                                      public_key: ssh-rsa AAAAB3Nza... user@example.com
                                    - created_at: "2025-01-02T15:04:05Z"
                                      fingerprint: SHA256:aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789
                                      key_name: Laptop 2025
                                      name: laptop-2025
                                      namespace: chris-at-fordham-id-au
                                      public_key: ssh-rsa AAAAB3Nza... user@example.com
                                    - created_at: "2025-01-02T15:04:05Z"
                                      fingerprint: SHA256:aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789
                                      key_name: Laptop 2025
                                      name: laptop-2025
                                      namespace: chris-at-fordham-id-au
                                      public_key: ssh-rsa AAAAB3Nza... user@example.com
                            example:
                                - created_at: "2025-01-02T15:04:05Z"
                                  fingerprint: SHA256:aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789
                                  key_name: Laptop 2025
                                  name: laptop-2025
                                  namespace: chris-at-fordham-id-au
                                  public_key: ssh-rsa AAAAB3Nza... user@example.com
                                - created_at: "2025-01-02T15:04:05Z"
                                  fingerprint: SHA256:aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789
                                  key_name: Laptop 2025
                                  name: laptop-2025
                                  namespace: chris-at-fordham-id-au
                                  public_key: ssh-rsa AAAAB3Nza... user@example.com
        post:
            tags:
                - sshkeys
            summary: create sshkeys
            description: Store a new SSH public key
            operationId: sshkeys#create
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/CreateSSHKeyPayload'
                        example:
                            key_name: Laptop 2025
                            name: laptop-2025
                            namespace: chris-at-fordham-id-au
                            public_key: ssh-ed25519 AAAA... user@host
            responses:
                "201":
                    description: Created response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/Sshkey'
                            example:
                                created_at: "2025-01-02T15:04:05Z"
                                fingerprint: SHA256:aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789
                                key_name: Laptop 2025
                                name: laptop-2025
                                namespace: chris-at-fordham-id-au
                                public_key: ssh-rsa AAAAB3Nza... user@example.com
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: public_key must be a valid SSH public key
                            example: public_key must be a valid SSH public key
                "409":
                    description: 'already_exists: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: ssh key "laptop-2025" already exists
                            example: ssh key "laptop-2025" already exists
    /v1/sshkeys/{name}:
        delete:
            tags:
                - sshkeys
            summary: delete sshkeys
            description: Delete an SSH public key
            operationId: sshkeys#delete
            parameters:
                - name: namespace
                  in: query
                  description: Namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Namespace
                    example: chris-at-fordham-id-au
                  example: chris-at-fordham-id-au
                - name: name
                  in: path
                  description: SSH key name
                  required: true
                  schema:
                    type: string
                    description: SSH key name
                    example: laptop-2025
                  example: laptop-2025
            responses:
                "204":
                    description: No Content response.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: ssh key "laptop-2025" not found
                            example: ssh key "laptop-2025" not found
        get:
            tags:
                - sshkeys
            summary: get sshkeys
            description: Get an SSH public key by name
            operationId: sshkeys#get
            parameters:
                - name: namespace
                  in: query
                  description: Namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Namespace
                    example: chris-at-fordham-id-au
                  example: chris-at-fordham-id-au
                - name: name
                  in: path
                  description: SSH key name
                  required: true
                  schema:
                    type: string
                    description: SSH key name
                    example: laptop-2025
                  example: laptop-2025
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/Sshkey'
                            example:
                                created_at: "2025-01-02T15:04:05Z"
                                fingerprint: SHA256:aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789
                                key_name: Laptop 2025
                                name: laptop-2025
                                namespace: chris-at-fordham-id-au
                                public_key: ssh-rsa AAAAB3Nza... user@example.com
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: ssh key "laptop-2025" not found
                            example: ssh key "laptop-2025" not found
    /v1/vm-gpu-profiles:
        get:
            tags:
                - workspaces
            summary: gpu_profiles workspaces
            description: List validated operator-declared Windows VM GPU profiles; device availability is determined by scheduling
            operationId: workspaces#gpu_profiles
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: '#/components/schemas/VMGPUProfile'
                                example:
                                    - count: 3464132514380386718
                                      display_name: Libero et dolorem quos.
                                      experimental: false
                                      guest_driver_version: Occaecati nobis voluptas quis rerum molestiae sed.
                                      id: Voluptatem aperiam.
                                      kind: pci
                                      node_selector:
                                        Ab consequatur voluptatem a id.: Voluptatem consequatur reiciendis qui voluptates laudantium iusto.
                                        Odio rerum distinctio vero veritatis.: Voluptatem asperiores.
                                      resource_name: Rem voluptates vel eum rem error tempore.
                                    - count: 3464132514380386718
                                      display_name: Libero et dolorem quos.
                                      experimental: false
                                      guest_driver_version: Occaecati nobis voluptas quis rerum molestiae sed.
                                      id: Voluptatem aperiam.
                                      kind: pci
                                      node_selector:
                                        Ab consequatur voluptatem a id.: Voluptatem consequatur reiciendis qui voluptates laudantium iusto.
                                        Odio rerum distinctio vero veritatis.: Voluptatem asperiores.
                                      resource_name: Rem voluptates vel eum rem error tempore.
                            example:
                                - count: 3464132514380386718
                                  display_name: Libero et dolorem quos.
                                  experimental: false
                                  guest_driver_version: Occaecati nobis voluptas quis rerum molestiae sed.
                                  id: Voluptatem aperiam.
                                  kind: pci
                                  node_selector:
                                    Ab consequatur voluptatem a id.: Voluptatem consequatur reiciendis qui voluptates laudantium iusto.
                                    Odio rerum distinctio vero veritatis.: Voluptatem asperiores.
                                  resource_name: Rem voluptates vel eum rem error tempore.
                                - count: 3464132514380386718
                                  display_name: Libero et dolorem quos.
                                  experimental: false
                                  guest_driver_version: Occaecati nobis voluptas quis rerum molestiae sed.
                                  id: Voluptatem aperiam.
                                  kind: pci
                                  node_selector:
                                    Ab consequatur voluptatem a id.: Voluptatem consequatur reiciendis qui voluptates laudantium iusto.
                                    Odio rerum distinctio vero veritatis.: Voluptatem asperiores.
                                  resource_name: Rem voluptates vel eum rem error tempore.
                                - count: 3464132514380386718
                                  display_name: Libero et dolorem quos.
                                  experimental: false
                                  guest_driver_version: Occaecati nobis voluptas quis rerum molestiae sed.
                                  id: Voluptatem aperiam.
                                  kind: pci
                                  node_selector:
                                    Ab consequatur voluptatem a id.: Voluptatem consequatur reiciendis qui voluptates laudantium iusto.
                                    Odio rerum distinctio vero veritatis.: Voluptatem asperiores.
                                  resource_name: Rem voluptates vel eum rem error tempore.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Fugit occaecati consequatur quibusdam aut.
                            example: Consectetur accusantium vitae iure quam quos.
    /v1/volumes:
        get:
            tags:
                - volumes
            summary: list volumes
            description: List all volumes
            operationId: volumes#list
            parameters:
                - name: namespace
                  in: query
                  description: Filter by namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Filter by namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: '#/components/schemas/Volume'
                                example:
                                    - access_mode: ReadWriteOnce
                                      created_at: "2025-01-02T15:04:05Z"
                                      labels:
                                        managed-by: kube-workspaces
                                        workspace: my-workspace
                                      name: my-workspace-data
                                      namespace: workspaces
                                      phase: Bound
                                      size: 10Gi
                                      storage_class: standard
                                      type: pvc
                                    - access_mode: ReadWriteOnce
                                      created_at: "2025-01-02T15:04:05Z"
                                      labels:
                                        managed-by: kube-workspaces
                                        workspace: my-workspace
                                      name: my-workspace-data
                                      namespace: workspaces
                                      phase: Bound
                                      size: 10Gi
                                      storage_class: standard
                                      type: pvc
                                    - access_mode: ReadWriteOnce
                                      created_at: "2025-01-02T15:04:05Z"
                                      labels:
                                        managed-by: kube-workspaces
                                        workspace: my-workspace
                                      name: my-workspace-data
                                      namespace: workspaces
                                      phase: Bound
                                      size: 10Gi
                                      storage_class: standard
                                      type: pvc
                            example:
                                - access_mode: ReadWriteOnce
                                  created_at: "2025-01-02T15:04:05Z"
                                  labels:
                                    managed-by: kube-workspaces
                                    workspace: my-workspace
                                  name: my-workspace-data
                                  namespace: workspaces
                                  phase: Bound
                                  size: 10Gi
                                  storage_class: standard
                                  type: pvc
                                - access_mode: ReadWriteOnce
                                  created_at: "2025-01-02T15:04:05Z"
                                  labels:
                                    managed-by: kube-workspaces
                                    workspace: my-workspace
                                  name: my-workspace-data
                                  namespace: workspaces
                                  phase: Bound
                                  size: 10Gi
                                  storage_class: standard
                                  type: pvc
        post:
            tags:
                - volumes
            summary: create volumes
            description: Create a new volume (PVC)
            operationId: volumes#create
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/CreateVolumePayload'
                        example:
                            access_mode: ReadWriteOnce
                            name: my-data
                            namespace: workspaces
                            size: 10Gi
                            storage_class: standard
                            type: vm-disk
            responses:
                "201":
                    description: Created response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/Volume'
                            example:
                                access_mode: ReadWriteOnce
                                created_at: "2025-01-02T15:04:05Z"
                                labels:
                                    managed-by: kube-workspaces
                                    workspace: my-workspace
                                name: my-workspace-data
                                namespace: workspaces
                                phase: Bound
                                size: 10Gi
                                storage_class: standard
                                type: pvc
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: size must be a valid resource quantity
                            example: size must be a valid resource quantity
                "409":
                    description: 'already_exists: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: volume "my-workspace-data" already exists
                            example: volume "my-workspace-data" already exists
    /v1/volumes/{name}:
        delete:
            tags:
                - volumes
            summary: delete volumes
            description: Delete a volume
            operationId: volumes#delete
            parameters:
                - name: namespace
                  in: query
                  description: Namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Volume name
                  required: true
                  schema:
                    type: string
                    description: Volume name
                    example: my-workspace-data
                  example: my-workspace-data
            responses:
                "204":
                    description: No Content response.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: volume "my-workspace-data" not found
                            example: volume "my-workspace-data" not found
        get:
            tags:
                - volumes
            summary: get volumes
            description: Get a volume by name
            operationId: volumes#get
            parameters:
                - name: namespace
                  in: query
                  description: Namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Volume name
                  required: true
                  schema:
                    type: string
                    description: Volume name
                    example: my-workspace-data
                  example: my-workspace-data
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/Volume'
                            example:
                                access_mode: ReadWriteOnce
                                created_at: "2025-01-02T15:04:05Z"
                                labels:
                                    managed-by: kube-workspaces
                                    workspace: my-workspace
                                name: my-workspace-data
                                namespace: workspaces
                                phase: Bound
                                size: 10Gi
                                storage_class: standard
                                type: pvc
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: volume "my-workspace-data" not found
                            example: volume "my-workspace-data" not found
    /v1/workspaces:
        get:
            tags:
                - workspaces
            summary: list workspaces
            description: List all workspaces
            operationId: workspaces#list
            parameters:
                - name: namespace
                  in: query
                  description: Filter by namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Filter by namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: '#/components/schemas/Workspace'
                                example:
                                    - conditions:
                                        - last_transition_time: "2025-01-02T15:04:05Z"
                                          message: StatefulSet my-workspace is available
                                          reason: MinimumReplicasAvailable
                                          status: "True"
                                          type: Ready
                                      container_state:
                                        message: Container started successfully
                                        reason: Started
                                        started_at: "2025-01-02T15:04:05Z"
                                        state: running
                                      cpu_limit: "1"
                                      cpu_request: 500m
                                      created_at: "2025-01-02T15:04:05Z"
                                      image: codercom/code-server:latest
                                      memory_limit: 2Gi
                                      memory_request: 512Mi
                                      name: my-workspace
                                      namespace: workspaces
                                      port: 8080
                                      provisioned: true
                                      ready_replicas: 1
                                      remote_desktop:
                                        path: /
                                        port: 8080
                                        protocol: agent
                                      stopped: false
                                      type: container
                                      vm_gpu_profile:
                                        count: 8415295335791754653
                                        display_name: Et impedit dicta quo et perferendis qui.
                                        experimental: false
                                        guest_driver_version: Vero quis.
                                        id: Esse consequatur.
                                        kind: pci
                                        node_selector:
                                            Sapiente sit ut at.: Est voluptas et voluptates et.
                                            Sequi iusto excepturi itaque officiis et est.: Voluptates voluptatem nobis ut.
                                        resource_name: Dolor et voluptas quis eum.
                                      vm_profile: Facilis eveniet quo tempore hic voluptates harum.
                                      volume_mounts:
                                        - mount_path: /home/coder
                                          name: my-workspace-data
                                    - conditions:
                                        - last_transition_time: "2025-01-02T15:04:05Z"
                                          message: StatefulSet my-workspace is available
                                          reason: MinimumReplicasAvailable
                                          status: "True"
                                          type: Ready
                                      container_state:
                                        message: Container started successfully
                                        reason: Started
                                        started_at: "2025-01-02T15:04:05Z"
                                        state: running
                                      cpu_limit: "1"
                                      cpu_request: 500m
                                      created_at: "2025-01-02T15:04:05Z"
                                      image: codercom/code-server:latest
                                      memory_limit: 2Gi
                                      memory_request: 512Mi
                                      name: my-workspace
                                      namespace: workspaces
                                      port: 8080
                                      provisioned: true
                                      ready_replicas: 1
                                      remote_desktop:
                                        path: /
                                        port: 8080
                                        protocol: agent
                                      stopped: false
                                      type: container
                                      vm_gpu_profile:
                                        count: 8415295335791754653
                                        display_name: Et impedit dicta quo et perferendis qui.
                                        experimental: false
                                        guest_driver_version: Vero quis.
                                        id: Esse consequatur.
                                        kind: pci
                                        node_selector:
                                            Sapiente sit ut at.: Est voluptas et voluptates et.
                                            Sequi iusto excepturi itaque officiis et est.: Voluptates voluptatem nobis ut.
                                        resource_name: Dolor et voluptas quis eum.
                                      vm_profile: Facilis eveniet quo tempore hic voluptates harum.
                                      volume_mounts:
                                        - mount_path: /home/coder
                                          name: my-workspace-data
                                    - conditions:
                                        - last_transition_time: "2025-01-02T15:04:05Z"
                                          message: StatefulSet my-workspace is available
                                          reason: MinimumReplicasAvailable
                                          status: "True"
                                          type: Ready
                                      container_state:
                                        message: Container started successfully
                                        reason: Started
                                        started_at: "2025-01-02T15:04:05Z"
                                        state: running
                                      cpu_limit: "1"
                                      cpu_request: 500m
                                      created_at: "2025-01-02T15:04:05Z"
                                      image: codercom/code-server:latest
                                      memory_limit: 2Gi
                                      memory_request: 512Mi
                                      name: my-workspace
                                      namespace: workspaces
                                      port: 8080
                                      provisioned: true
                                      ready_replicas: 1
                                      remote_desktop:
                                        path: /
                                        port: 8080
                                        protocol: agent
                                      stopped: false
                                      type: container
                                      vm_gpu_profile:
                                        count: 8415295335791754653
                                        display_name: Et impedit dicta quo et perferendis qui.
                                        experimental: false
                                        guest_driver_version: Vero quis.
                                        id: Esse consequatur.
                                        kind: pci
                                        node_selector:
                                            Sapiente sit ut at.: Est voluptas et voluptates et.
                                            Sequi iusto excepturi itaque officiis et est.: Voluptates voluptatem nobis ut.
                                        resource_name: Dolor et voluptas quis eum.
                                      vm_profile: Facilis eveniet quo tempore hic voluptates harum.
                                      volume_mounts:
                                        - mount_path: /home/coder
                                          name: my-workspace-data
                                    - conditions:
                                        - last_transition_time: "2025-01-02T15:04:05Z"
                                          message: StatefulSet my-workspace is available
                                          reason: MinimumReplicasAvailable
                                          status: "True"
                                          type: Ready
                                      container_state:
                                        message: Container started successfully
                                        reason: Started
                                        started_at: "2025-01-02T15:04:05Z"
                                        state: running
                                      cpu_limit: "1"
                                      cpu_request: 500m
                                      created_at: "2025-01-02T15:04:05Z"
                                      image: codercom/code-server:latest
                                      memory_limit: 2Gi
                                      memory_request: 512Mi
                                      name: my-workspace
                                      namespace: workspaces
                                      port: 8080
                                      provisioned: true
                                      ready_replicas: 1
                                      remote_desktop:
                                        path: /
                                        port: 8080
                                        protocol: agent
                                      stopped: false
                                      type: container
                                      vm_gpu_profile:
                                        count: 8415295335791754653
                                        display_name: Et impedit dicta quo et perferendis qui.
                                        experimental: false
                                        guest_driver_version: Vero quis.
                                        id: Esse consequatur.
                                        kind: pci
                                        node_selector:
                                            Sapiente sit ut at.: Est voluptas et voluptates et.
                                            Sequi iusto excepturi itaque officiis et est.: Voluptates voluptatem nobis ut.
                                        resource_name: Dolor et voluptas quis eum.
                                      vm_profile: Facilis eveniet quo tempore hic voluptates harum.
                                      volume_mounts:
                                        - mount_path: /home/coder
                                          name: my-workspace-data
                            example:
                                - conditions:
                                    - last_transition_time: "2025-01-02T15:04:05Z"
                                      message: StatefulSet my-workspace is available
                                      reason: MinimumReplicasAvailable
                                      status: "True"
                                      type: Ready
                                  container_state:
                                    message: Container started successfully
                                    reason: Started
                                    started_at: "2025-01-02T15:04:05Z"
                                    state: running
                                  cpu_limit: "1"
                                  cpu_request: 500m
                                  created_at: "2025-01-02T15:04:05Z"
                                  image: codercom/code-server:latest
                                  memory_limit: 2Gi
                                  memory_request: 512Mi
                                  name: my-workspace
                                  namespace: workspaces
                                  port: 8080
                                  provisioned: true
                                  ready_replicas: 1
                                  remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                  stopped: false
                                  type: container
                                  vm_gpu_profile:
                                    count: 8415295335791754653
                                    display_name: Et impedit dicta quo et perferendis qui.
                                    experimental: false
                                    guest_driver_version: Vero quis.
                                    id: Esse consequatur.
                                    kind: pci
                                    node_selector:
                                        Sapiente sit ut at.: Est voluptas et voluptates et.
                                        Sequi iusto excepturi itaque officiis et est.: Voluptates voluptatem nobis ut.
                                    resource_name: Dolor et voluptas quis eum.
                                  vm_profile: Facilis eveniet quo tempore hic voluptates harum.
                                  volume_mounts:
                                    - mount_path: /home/coder
                                      name: my-workspace-data
                                - conditions:
                                    - last_transition_time: "2025-01-02T15:04:05Z"
                                      message: StatefulSet my-workspace is available
                                      reason: MinimumReplicasAvailable
                                      status: "True"
                                      type: Ready
                                  container_state:
                                    message: Container started successfully
                                    reason: Started
                                    started_at: "2025-01-02T15:04:05Z"
                                    state: running
                                  cpu_limit: "1"
                                  cpu_request: 500m
                                  created_at: "2025-01-02T15:04:05Z"
                                  image: codercom/code-server:latest
                                  memory_limit: 2Gi
                                  memory_request: 512Mi
                                  name: my-workspace
                                  namespace: workspaces
                                  port: 8080
                                  provisioned: true
                                  ready_replicas: 1
                                  remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                  stopped: false
                                  type: container
                                  vm_gpu_profile:
                                    count: 8415295335791754653
                                    display_name: Et impedit dicta quo et perferendis qui.
                                    experimental: false
                                    guest_driver_version: Vero quis.
                                    id: Esse consequatur.
                                    kind: pci
                                    node_selector:
                                        Sapiente sit ut at.: Est voluptas et voluptates et.
                                        Sequi iusto excepturi itaque officiis et est.: Voluptates voluptatem nobis ut.
                                    resource_name: Dolor et voluptas quis eum.
                                  vm_profile: Facilis eveniet quo tempore hic voluptates harum.
                                  volume_mounts:
                                    - mount_path: /home/coder
                                      name: my-workspace-data
                                - conditions:
                                    - last_transition_time: "2025-01-02T15:04:05Z"
                                      message: StatefulSet my-workspace is available
                                      reason: MinimumReplicasAvailable
                                      status: "True"
                                      type: Ready
                                  container_state:
                                    message: Container started successfully
                                    reason: Started
                                    started_at: "2025-01-02T15:04:05Z"
                                    state: running
                                  cpu_limit: "1"
                                  cpu_request: 500m
                                  created_at: "2025-01-02T15:04:05Z"
                                  image: codercom/code-server:latest
                                  memory_limit: 2Gi
                                  memory_request: 512Mi
                                  name: my-workspace
                                  namespace: workspaces
                                  port: 8080
                                  provisioned: true
                                  ready_replicas: 1
                                  remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                  stopped: false
                                  type: container
                                  vm_gpu_profile:
                                    count: 8415295335791754653
                                    display_name: Et impedit dicta quo et perferendis qui.
                                    experimental: false
                                    guest_driver_version: Vero quis.
                                    id: Esse consequatur.
                                    kind: pci
                                    node_selector:
                                        Sapiente sit ut at.: Est voluptas et voluptates et.
                                        Sequi iusto excepturi itaque officiis et est.: Voluptates voluptatem nobis ut.
                                    resource_name: Dolor et voluptas quis eum.
                                  vm_profile: Facilis eveniet quo tempore hic voluptates harum.
                                  volume_mounts:
                                    - mount_path: /home/coder
                                      name: my-workspace-data
        post:
            tags:
                - workspaces
            summary: create workspaces
            description: Create a new workspace
            operationId: workspaces#create
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/CreateWorkspacePayload'
                        example:
                            container:
                                cpu_limit: "2"
                                cpu_request: 500m
                                gpu_request: "1"
                                gpu_vendor: nvidia.com/gpu
                                image: codercom/code-server:latest
                                memory_limit: 2Gi
                                memory_request: 512Mi
                                name: code-server
                                port: 8080
                            env:
                                - name: PASSWORD
                                  value: changeme
                            image_pull_policy: Always
                            name: my-workspace
                            namespace: workspaces
                            node_selector:
                                nvidia.com/gpu: "true"
                            shared_memory: true
                            tolerations:
                                - effect: NoSchedule
                                  key: nvidia.com/gpu
                                  operator: Equal
                                  value: "true"
                            type: container
                            vm_options:
                                gpu_profile: g7k
                                import_cert_config_map_name: Culpa exercitationem corrupti saepe laboriosam ducimus possimus.
                                import_secret_name: Rem ut a odit blanditiis doloremque.
                                root_disk_size: Nemo at ullam reiciendis nam id.
                                storage_class_name: Illo et vero natus voluptas.
                            volume_mounts:
                                - mount_path: /home/coder
                                  name: my-workspace-data
            responses:
                "201":
                    description: Created response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/Workspace'
                            example:
                                conditions:
                                    - last_transition_time: "2025-01-02T15:04:05Z"
                                      message: StatefulSet my-workspace is available
                                      reason: MinimumReplicasAvailable
                                      status: "True"
                                      type: Ready
                                container_state:
                                    message: Container started successfully
                                    reason: Started
                                    started_at: "2025-01-02T15:04:05Z"
                                    state: running
                                cpu_limit: "1"
                                cpu_request: 500m
                                created_at: "2025-01-02T15:04:05Z"
                                image: codercom/code-server:latest
                                memory_limit: 2Gi
                                memory_request: 512Mi
                                name: my-workspace
                                namespace: workspaces
                                port: 8080
                                provisioned: false
                                ready_replicas: 1
                                remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                stopped: false
                                type: container
                                vm_gpu_profile:
                                    count: 6716878457214357736
                                    display_name: Non placeat enim illum.
                                    experimental: true
                                    guest_driver_version: Accusantium placeat iusto reprehenderit sit vero eligendi.
                                    id: Ad ab.
                                    kind: pci
                                    node_selector:
                                        Qui earum iure dolores sit inventore.: Molestias quasi et ut optio.
                                        Quibusdam rerum eaque praesentium dolor et.: A occaecati fugit consequatur enim.
                                    resource_name: Odio beatae.
                                vm_profile: Eius soluta ullam culpa qui.
                                volume_mounts:
                                    - mount_path: /home/coder
                                      name: my-workspace-data
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: container.image must be a valid container image
                            example: container.image must be a valid container image
                "409":
                    description: 'already_exists: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace" already exists
                            example: workspace "my-workspace" already exists
    /v1/workspaces/{name}:
        delete:
            tags:
                - workspaces
            summary: delete workspaces
            description: Delete a workspace
            operationId: workspaces#delete
            parameters:
                - name: namespace
                  in: query
                  description: Namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
            responses:
                "204":
                    description: No Content response.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace" not found
                            example: workspace "my-workspace" not found
        get:
            tags:
                - workspaces
            summary: get workspaces
            description: Get a workspace by name
            operationId: workspaces#get
            parameters:
                - name: namespace
                  in: query
                  description: Namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/Workspace'
                            example:
                                conditions:
                                    - last_transition_time: "2025-01-02T15:04:05Z"
                                      message: StatefulSet my-workspace is available
                                      reason: MinimumReplicasAvailable
                                      status: "True"
                                      type: Ready
                                container_state:
                                    message: Container started successfully
                                    reason: Started
                                    started_at: "2025-01-02T15:04:05Z"
                                    state: running
                                cpu_limit: "1"
                                cpu_request: 500m
                                created_at: "2025-01-02T15:04:05Z"
                                image: codercom/code-server:latest
                                memory_limit: 2Gi
                                memory_request: 512Mi
                                name: my-workspace
                                namespace: workspaces
                                port: 8080
                                provisioned: true
                                ready_replicas: 1
                                remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                stopped: false
                                type: container
                                vm_gpu_profile:
                                    count: 6716878457214357736
                                    display_name: Non placeat enim illum.
                                    experimental: true
                                    guest_driver_version: Accusantium placeat iusto reprehenderit sit vero eligendi.
                                    id: Ad ab.
                                    kind: pci
                                    node_selector:
                                        Qui earum iure dolores sit inventore.: Molestias quasi et ut optio.
                                        Quibusdam rerum eaque praesentium dolor et.: A occaecati fugit consequatur enim.
                                    resource_name: Odio beatae.
                                vm_profile: Nihil aliquam debitis blanditiis eum voluptatibus sit.
                                volume_mounts:
                                    - mount_path: /home/coder
                                      name: my-workspace-data
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace" not found
                            example: workspace "my-workspace" not found
    /v1/workspaces/{name}/agent-upgrades:
        post:
            tags:
                - agentupgrades
            summary: start agentupgrades
            description: Admit a single explicit upgrade; returns 202 with the durable attempt identity
            operationId: agentupgrades#start
            parameters:
                - name: namespace
                  in: query
                  allowEmptyValue: true
                  required: true
                  schema:
                    type: string
                    default: workspaces
                    example: team-a
                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                    maxLength: 63
                  example: team-a
                - name: name
                  in: path
                  required: true
                  schema:
                    type: string
                    example: vm-1
                    pattern: ^[a-z0-9]([-a-z0-9.]*[a-z0-9])?$
                    maxLength: 253
                  example: vm-1
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/AgentUpgradeStartPayload2'
                        example:
                            allow_reboot: false
                            expected_installed_inventory_sha256: 810151abf0615815b24e01967ec665e0eb583500f1eb5fa456361935b22b183b
                            expected_revocation_epoch: 4
                            expected_vm_uid: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                            idempotency_key: run-2026-10-19-001
                            target_id: windows11-amd64-v2
                            target_manifest_sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
            responses:
                "202":
                    description: Accepted response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/AgentUpgradeAttempt'
                            example:
                                actor_id: user-uid-1
                                admitted_at: "2026-10-19T00:00:00Z"
                                allow_reboot: false
                                attempt_id: upg_9f82c1a0b3d4e5f60718293a
                                awaiting_reboot_at: "2012-06-28T13:44:12Z"
                                cancel_requested: false
                                error_code: ""
                                execution_id: exec_9f82
                                expected_installed_inventory_sha256: 810151abf0615815b24e01967ec665e0eb583500f1eb5fa456361935b22b183b
                                installing_at: "2010-01-17T03:27:45Z"
                                journal_sequence: 0
                                namespace: team-a
                                predecessor_manifest_sha256: c0cc9727c7e3fa2c77c9974848c48a8b8c058c9b4ee42291d2efc20f29132c03
                                predecessor_target_id: windows11-amd64-v1
                                prepared_at: "2006-12-12T15:05:36Z"
                                recording_id: rec_9f82
                                recording_url: /v1/executions/exec_9f82/recording
                                rollback_requested_at: "2005-04-14T11:31:11Z"
                                rolling_back_at: "2009-02-16T09:32:42Z"
                                staging_at: "1980-06-16T11:38:04Z"
                                state: admitted
                                status_url: /v1/workspaces/vm-1/agent-upgrades/upg_9f82c1a0b3d4e5f60718293a?namespace=team-a
                                target_id: windows11-amd64-v2
                                target_manifest_sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
                                terminal_at: "2005-11-10T15:43:22Z"
                                updated_at: "2007-01-23T21:51:55Z"
                                verifying_at: "1976-08-29T11:33:17Z"
                                vm_uid: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                                workspace_name: vm-1
                                workspace_uid: abc123
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Officia ut molestiae eaque optio nisi aut.
                            example: Consequatur rerum dolorem est id.
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Aspernatur laudantium amet ut.
                            example: Quam quis odit nobis nihil labore molestiae.
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Eos et ipsa atque.
                            example: Quia illum.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Atque tenetur consequuntur recusandae quia eum.
                            example: Sunt laudantium ipsa nobis.
                "409":
                    description: 'conflict: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Dolore ducimus eos eveniet non.
                            example: Velit maiores facilis.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Temporibus laborum ut et accusamus soluta.
                            example: Ipsa vitae esse velit.
    /v1/workspaces/{name}/agent-upgrades/{attempt_id}:
        get:
            tags:
                - agentupgrades
            summary: status agentupgrades
            description: Protected attempt metadata/progress/outcome and independently authorized recording links
            operationId: agentupgrades#status
            parameters:
                - name: namespace
                  in: query
                  allowEmptyValue: true
                  schema:
                    type: string
                    default: workspaces
                    example: Ducimus et sed distinctio.
                  example: Aut aut repellat ex id at cum.
                - name: name
                  in: path
                  required: true
                  schema:
                    type: string
                    example: Dolorum modi et voluptas cupiditate quis.
                  example: Fugit voluptatum perferendis fuga est aut delectus.
                - name: attempt_id
                  in: path
                  required: true
                  schema:
                    type: string
                    example: upg_d465669cd04534a32cc5fc7b
                    pattern: ^upg_[0-9a-f]{24}$
                  example: upg_ff4977d860efd5801baf0050
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/AgentUpgradeAttempt'
                            example:
                                actor_id: user-uid-1
                                admitted_at: "2026-10-19T00:00:00Z"
                                allow_reboot: false
                                attempt_id: upg_9f82c1a0b3d4e5f60718293a
                                awaiting_reboot_at: "1984-12-19T07:38:12Z"
                                cancel_requested: false
                                error_code: ""
                                execution_id: exec_9f82
                                expected_installed_inventory_sha256: 810151abf0615815b24e01967ec665e0eb583500f1eb5fa456361935b22b183b
                                installing_at: "1974-05-03T19:29:26Z"
                                journal_sequence: 0
                                namespace: team-a
                                predecessor_manifest_sha256: 6013be0839028464c2e03158aeb127465b51f68c4a52dcc3db47f63079301a76
                                predecessor_target_id: windows11-amd64-v1
                                prepared_at: "2004-11-30T01:46:12Z"
                                recording_id: rec_9f82
                                recording_url: /v1/executions/exec_9f82/recording
                                rollback_requested_at: "2015-11-01T11:03:38Z"
                                rolling_back_at: "1998-11-10T01:21:15Z"
                                staging_at: "2002-07-29T07:46:58Z"
                                state: admitted
                                status_url: /v1/workspaces/vm-1/agent-upgrades/upg_9f82c1a0b3d4e5f60718293a?namespace=team-a
                                target_id: windows11-amd64-v2
                                target_manifest_sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
                                terminal_at: "1975-10-29T15:29:08Z"
                                updated_at: "1974-01-17T05:40:55Z"
                                verifying_at: "1981-03-18T19:13:42Z"
                                vm_uid: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                                workspace_name: vm-1
                                workspace_uid: abc123
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Minus commodi repudiandae necessitatibus veniam iure.
                            example: Sequi id accusantium voluptatum pariatur id doloremque.
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Minima et quisquam quia vel.
                            example: Recusandae libero quibusdam ducimus iste fugiat soluta.
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Doloremque amet.
                            example: Dolores modi dolor architecto sunt.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Sit iusto unde nulla.
                            example: Id iusto vero sed modi eaque.
                "409":
                    description: 'conflict: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Saepe sed dolor rem culpa quia tenetur.
                            example: Nihil nostrum omnis mollitia modi non illum.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Porro hic.
                            example: Praesentium dolor qui.
    /v1/workspaces/{name}/agent-upgrades/{attempt_id}/cancel:
        post:
            tags:
                - agentupgrades
            summary: cancel agentupgrades
            description: Request safe cancellation; never promises to kill an active MSI transaction
            operationId: agentupgrades#cancel
            parameters:
                - name: namespace
                  in: query
                  allowEmptyValue: true
                  schema:
                    type: string
                    default: workspaces
                    example: Laboriosam dolorem reprehenderit.
                  example: Porro non ab ad corrupti consequuntur in.
                - name: name
                  in: path
                  required: true
                  schema:
                    type: string
                    example: Molestiae in.
                  example: Provident repudiandae voluptatum repellat dolor laboriosam.
                - name: attempt_id
                  in: path
                  required: true
                  schema:
                    type: string
                    example: upg_528f729060f3c71517f73ef6
                    pattern: ^upg_[0-9a-f]{24}$
                  example: upg_1577c6486d952fa56821eefe
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/AgentUpgradeAttempt'
                            example:
                                actor_id: user-uid-1
                                admitted_at: "2026-10-19T00:00:00Z"
                                allow_reboot: false
                                attempt_id: upg_9f82c1a0b3d4e5f60718293a
                                awaiting_reboot_at: "2005-09-05T07:37:55Z"
                                cancel_requested: false
                                error_code: ""
                                execution_id: exec_9f82
                                expected_installed_inventory_sha256: 810151abf0615815b24e01967ec665e0eb583500f1eb5fa456361935b22b183b
                                installing_at: "1988-07-30T09:29:44Z"
                                journal_sequence: 0
                                namespace: team-a
                                predecessor_manifest_sha256: 80d517933c24734db9a9e636f5a3d0890d9f965737484ff28e58759a640936a3
                                predecessor_target_id: windows11-amd64-v1
                                prepared_at: "2004-04-03T09:57:56Z"
                                recording_id: rec_9f82
                                recording_url: /v1/executions/exec_9f82/recording
                                rollback_requested_at: "2001-08-26T10:30:36Z"
                                rolling_back_at: "1992-12-31T23:03:07Z"
                                staging_at: "2002-04-15T00:12:55Z"
                                state: admitted
                                status_url: /v1/workspaces/vm-1/agent-upgrades/upg_9f82c1a0b3d4e5f60718293a?namespace=team-a
                                target_id: windows11-amd64-v2
                                target_manifest_sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
                                terminal_at: "1975-12-02T21:18:16Z"
                                updated_at: "1982-10-24T05:13:04Z"
                                verifying_at: "2009-01-05T05:21:16Z"
                                vm_uid: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                                workspace_name: vm-1
                                workspace_uid: abc123
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Velit voluptas sed soluta.
                            example: Modi maxime.
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Fuga incidunt earum iste consequuntur voluptas et.
                            example: Aut ullam voluptate deleniti quia.
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: A illo quis officia.
                            example: Quo eum non totam omnis aut odit.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Dolor ab voluptatem.
                            example: Iusto sint et nobis at commodi iusto.
                "409":
                    description: 'conflict: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Inventore esse tempore numquam ut.
                            example: Laudantium ad dolores.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Sed quia consectetur voluptatem quaerat.
                            example: Fuga aut et.
    /v1/workspaces/{name}/agent-upgrades/{attempt_id}/rollback:
        post:
            tags:
                - agentupgrades
            summary: rollback agentupgrades
            description: Admit a separate, explicit rollback to that attempt's pinned previous payload
            operationId: agentupgrades#rollback
            parameters:
                - name: namespace
                  in: query
                  allowEmptyValue: true
                  schema:
                    type: string
                    default: workspaces
                    example: Atque dolorem quisquam.
                  example: At odit.
                - name: name
                  in: path
                  required: true
                  schema:
                    type: string
                    example: Recusandae natus maxime.
                  example: Saepe tenetur.
                - name: attempt_id
                  in: path
                  required: true
                  schema:
                    type: string
                    example: upg_7cf06ab2670c365167850219
                    pattern: ^upg_[0-9a-f]{24}$
                  example: upg_c7279fdcc2b3c2d852c7f8e9
            responses:
                "202":
                    description: Accepted response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/AgentUpgradeAttempt'
                            example:
                                actor_id: user-uid-1
                                admitted_at: "2026-10-19T00:00:00Z"
                                allow_reboot: false
                                attempt_id: upg_9f82c1a0b3d4e5f60718293a
                                awaiting_reboot_at: "1986-01-04T11:57:59Z"
                                cancel_requested: false
                                error_code: ""
                                execution_id: exec_9f82
                                expected_installed_inventory_sha256: 810151abf0615815b24e01967ec665e0eb583500f1eb5fa456361935b22b183b
                                installing_at: "1984-11-08T11:51:12Z"
                                journal_sequence: 0
                                namespace: team-a
                                predecessor_manifest_sha256: 3723c8ace9ae8dd51139018d9a92ad35db1157e7f350a3a6ac34b106f8f7113d
                                predecessor_target_id: windows11-amd64-v1
                                prepared_at: "1978-08-01T13:07:02Z"
                                recording_id: rec_9f82
                                recording_url: /v1/executions/exec_9f82/recording
                                rollback_requested_at: "1988-12-27T07:53:41Z"
                                rolling_back_at: "1979-06-07T08:39:17Z"
                                staging_at: "1999-07-16T03:55:11Z"
                                state: admitted
                                status_url: /v1/workspaces/vm-1/agent-upgrades/upg_9f82c1a0b3d4e5f60718293a?namespace=team-a
                                target_id: windows11-amd64-v2
                                target_manifest_sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
                                terminal_at: "1970-05-09T21:35:05Z"
                                updated_at: "2004-06-01T18:36:00Z"
                                verifying_at: "1990-12-26T11:42:18Z"
                                vm_uid: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                                workspace_name: vm-1
                                workspace_uid: abc123
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Aperiam rerum tenetur praesentium tempore.
                            example: Unde est labore quis numquam.
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Et pariatur reprehenderit fugiat ipsa impedit.
                            example: Iure dolores aut qui veritatis qui.
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Placeat omnis.
                            example: Et repellat aut vero doloribus mollitia sunt.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Ullam deleniti ipsam quaerat.
                            example: Veritatis quasi minus.
                "409":
                    description: 'conflict: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Eius quae neque.
                            example: Delectus vel quam dolor.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Officiis minima quidem consectetur.
                            example: Nesciunt sed.
    /v1/workspaces/{name}/agent-upgrades/availability:
        get:
            tags:
                - agentupgrades
            summary: availability agentupgrades
            description: Fresh availability for one workspace; administrative access required
            operationId: agentupgrades#availability
            parameters:
                - name: namespace
                  in: query
                  allowEmptyValue: true
                  schema:
                    type: string
                    default: workspaces
                    example: Enim similique.
                  example: Error sed id.
                - name: name
                  in: path
                  required: true
                  schema:
                    type: string
                    example: Exercitationem in nobis provident saepe.
                  example: Mollitia ipsum error facere rerum voluptatem.
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/AgentUpgradeAvailability'
                            example:
                                active_attempt_id: upg_9f82c1a0b3d4e5f60718293a
                                admissible: false
                                deny_reason: policy_disabled
                                inventory_available: false
                                policy_enabled: false
                                storage_available: false
                                vm_uid: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                                workspace_eligible: false
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Accusantium et impedit ut voluptatem voluptas et.
                            example: Qui natus et.
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Recusandae voluptas.
                            example: Assumenda expedita hic veritatis possimus dignissimos.
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Et amet dolorem.
                            example: Expedita cupiditate omnis provident.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Minus repellendus.
                            example: Quod delectus ipsam.
                "409":
                    description: 'conflict: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Error ratione.
                            example: Non nihil libero quasi minus.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Consequatur sunt animi aliquam et ea.
                            example: Deserunt hic temporibus et perspiciatis et quod.
    /v1/workspaces/{name}/agent/attach:
        post:
            tags:
                - agent
            summary: attach agent
            description: Attach a controller to a workspace's guest agent session, minting a short-lived ticket
            operationId: agent#attach
            parameters:
                - name: namespace
                  in: query
                  description: Workspace namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/AgentAttachPayload2'
                        example:
                            participant: chris-laptop
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/AgentTicket'
                            example:
                                id: 8ec18121f4c2409aa7c025487f4e310c
                                protocol: 1
                                ticket: 8ec18121f4c2409aa7c025487f4e310c.eyJ3b3Jrc3BhY2VVaWQiOiJ3cy0xIn0.c2ln
                                ttl_ms: 60000
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: agent sessions are only available for VM workspaces
                            example: agent sessions are only available for VM workspaces
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: authentication required
                            example: authentication required
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: no access to workspace namespace
                            example: no access to workspace namespace
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace" not found
                            example: workspace "my-workspace" not found
    /v1/workspaces/{name}/agent/release:
        post:
            tags:
                - agent
            summary: release agent
            description: Release a workspace guest agent session by its server-side id (best-effort; unknown ids report ok)
            operationId: agent#release
            parameters:
                - name: namespace
                  in: query
                  description: Workspace namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
                - name: X-KW-Agent-Session
                  in: header
                  description: Server-side session identifier from attach
                  allowEmptyValue: true
                  required: true
                  schema:
                    type: string
                    description: Server-side session identifier from attach
                    example: 8ec18121f4c2409aa7c025487f4e310c
                  example: 8ec18121f4c2409aa7c025487f4e310c
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/AgentRelease'
                            example:
                                ok: true
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: authentication required
                            example: authentication required
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: no access to workspace namespace
                            example: no access to workspace namespace
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace" not found
                            example: workspace "my-workspace" not found
    /v1/workspaces/{name}/agent/renew:
        post:
            tags:
                - agent
            summary: renew agent
            description: Renew a workspace guest agent session by its server-side id (X-KW-Agent-Session header)
            operationId: agent#renew
            parameters:
                - name: namespace
                  in: query
                  description: Workspace namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
                - name: X-KW-Agent-Session
                  in: header
                  description: Server-side session identifier from attach
                  allowEmptyValue: true
                  required: true
                  schema:
                    type: string
                    description: Server-side session identifier from attach
                    example: 8ec18121f4c2409aa7c025487f4e310c
                  example: 8ec18121f4c2409aa7c025487f4e310c
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/AgentRenew'
                            example:
                                protocol: 1
                                ttl_ms: 60000
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: authentication required
                            example: authentication required
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: no access to workspace namespace
                            example: no access to workspace namespace
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: agent session for workspace "my-workspace" not found
                            example: agent session for workspace "my-workspace" not found
    /v1/workspaces/{name}/agent/status:
        get:
            tags:
                - agent
            summary: status agent
            description: Report live agent session state for a workspace
            operationId: agent#status
            parameters:
                - name: namespace
                  in: query
                  description: Workspace namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/AgentStatus'
                            example:
                                active: true
                                protocol: 1
                                sessions: 1
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: authentication required
                            example: authentication required
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: no access to workspace namespace
                            example: no access to workspace namespace
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace" not found
                            example: workspace "my-workspace" not found
    /v1/workspaces/{name}/clone:
        post:
            tags:
                - workspaces
            summary: clone workspaces
            description: Clone an existing workspace under a new name, copying its spec and volume mounts
            operationId: workspaces#clone
            parameters:
                - name: namespace
                  in: query
                  description: Namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Source workspace name
                  required: true
                  schema:
                    type: string
                    description: Source workspace name
                    example: my-workspace
                  example: my-workspace
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/CloneRequestBody'
                        example:
                            cpu_limit: "1"
                            cpu_request: 500m
                            image: codercom/code-server:4.96.2
                            memory_limit: 2Gi
                            memory_request: 512Mi
                            new_name: my-workspace-clone
                            port: 8080
            responses:
                "201":
                    description: Created response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/Workspace'
                            example:
                                conditions:
                                    - last_transition_time: "2025-01-02T15:04:05Z"
                                      message: StatefulSet my-workspace is available
                                      reason: MinimumReplicasAvailable
                                      status: "True"
                                      type: Ready
                                container_state:
                                    message: Container started successfully
                                    reason: Started
                                    started_at: "2025-01-02T15:04:05Z"
                                    state: running
                                cpu_limit: "1"
                                cpu_request: 500m
                                created_at: "2025-01-02T15:04:05Z"
                                image: codercom/code-server:latest
                                memory_limit: 2Gi
                                memory_request: 512Mi
                                name: my-workspace
                                namespace: workspaces
                                port: 8080
                                provisioned: true
                                ready_replicas: 1
                                remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                stopped: false
                                type: container
                                vm_gpu_profile:
                                    count: 6716878457214357736
                                    display_name: Non placeat enim illum.
                                    experimental: true
                                    guest_driver_version: Accusantium placeat iusto reprehenderit sit vero eligendi.
                                    id: Ad ab.
                                    kind: pci
                                    node_selector:
                                        Qui earum iure dolores sit inventore.: Molestias quasi et ut optio.
                                        Quibusdam rerum eaque praesentium dolor et.: A occaecati fugit consequatur enim.
                                    resource_name: Odio beatae.
                                vm_profile: Voluptate est est praesentium quis.
                                volume_mounts:
                                    - mount_path: /home/coder
                                      name: my-workspace-data
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: new_name must differ from name
                            example: new_name must differ from name
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace" not found
                            example: workspace "my-workspace" not found
                "409":
                    description: 'already_exists: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace-clone" already exists
                            example: workspace "my-workspace-clone" already exists
    /v1/workspaces/{name}/credentials:
        get:
            tags:
                - workspaces
            summary: credentials workspaces
            description: Retrieve this Windows workspace's unique initial credentials; namespace editors/admins only
            operationId: workspaces#credentials
            parameters:
                - name: namespace
                  in: query
                  allowEmptyValue: true
                  schema:
                    type: string
                    default: workspaces
                    example: Perferendis et non.
                  example: Recusandae nihil vero dignissimos officiis dicta.
                - name: name
                  in: path
                  required: true
                  schema:
                    type: string
                    example: Eius ut eaque temporibus ab est.
                  example: Sint voluptas aut.
            responses:
                "200":
                    description: OK response.
                    headers:
                        Cache-Control:
                            schema:
                                type: string
                                example: Corporis eos incidunt.
                            example: Inventore autem.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/WorkspaceInitialCredentials2'
                            example:
                                password: Illo voluptas.
                                username: Neque animi eligendi.
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Laborum recusandae in quae reiciendis.
                            example: Officia cumque.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Voluptatem ex ea consequuntur exercitationem eligendi.
                            example: Et nulla recusandae est est et autem.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Esse id occaecati.
                            example: Architecto illo.
    /v1/workspaces/{name}/display:
        get:
            tags:
                - display
            summary: capability display
            description: Advertise whether a workspace participates in shared display sessions and with which limits
            operationId: display#capability
            parameters:
                - name: namespace
                  in: query
                  description: Workspace namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/DisplayCapability'
                            example:
                                controller_present: true
                                enabled: false
                                handshake_timeout_ms: 10000
                                max_height: 2160
                                max_participants: 8
                                max_width: 4096
                                participant_ttl_ms: 900000
                                participants: 2
                                protocol: 1
                                transports:
                                    - rfb
                                    - tier1
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: authentication required
                            example: authentication required
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: no access to workspace namespace
                            example: no access to workspace namespace
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace" not found
                            example: workspace "my-workspace" not found
    /v1/workspaces/{name}/display/control/acquire:
        post:
            tags:
                - display
            summary: acquire display
            description: Acquire control of a workspace's shared display session, demoting the current controller to observer when force is set
            operationId: display#acquire
            parameters:
                - name: namespace
                  in: query
                  description: Workspace namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/DisplayControlPayload2'
                        example:
                            force: true
                            participant_id: 97f8c4b7a2
                            to: 3a2d5f8c7f
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/DisplayControl'
                            example:
                                controller:
                                    connected: false
                                    id: 97f8c4b7a2
                                    joined_at: "2026-09-19T15:04:05Z"
                                    role: observer
                                released: false
                                was_held: true
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: participant "97f8c4b7a2" is already the controller
                            example: participant "97f8c4b7a2" is already the controller
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: authentication required
                            example: authentication required
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: no access to workspace namespace
                            example: no access to workspace namespace
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: display session for workspace "my-workspace" has no participant "97f8c4b7a2"
                            example: display session for workspace "my-workspace" has no participant "97f8c4b7a2"
                "409":
                    description: 'conflict: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: display for workspace "my-workspace" is controlled by another participant
                            example: display for workspace "my-workspace" is controlled by another participant
    /v1/workspaces/{name}/display/control/release:
        post:
            tags:
                - display
            summary: release display
            description: Release control of a workspace's shared display session, leaving observers attached
            operationId: display#release
            parameters:
                - name: namespace
                  in: query
                  description: Workspace namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/DisplayControlPayload3'
                        example:
                            force: true
                            participant_id: 97f8c4b7a2
                            to: 3a2d5f8c7f
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/DisplayControl'
                            example:
                                controller:
                                    connected: false
                                    id: 97f8c4b7a2
                                    joined_at: "2026-09-19T15:04:05Z"
                                    role: observer
                                released: false
                                was_held: true
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: authentication required
                            example: authentication required
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: no access to workspace namespace
                            example: no access to workspace namespace
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: display session for workspace "my-workspace" has no participant "97f8c4b7a2"
                            example: display session for workspace "my-workspace" has no participant "97f8c4b7a2"
                "409":
                    description: 'conflict: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: participant "97f8c4b7a2" is not the current controller
                            example: participant "97f8c4b7a2" is not the current controller
    /v1/workspaces/{name}/display/control/transfer:
        post:
            tags:
                - display
            summary: transfer display
            description: Transfer control from the current controller to a named observer, keeping all observers attached
            operationId: display#transfer
            parameters:
                - name: namespace
                  in: query
                  description: Workspace namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/DisplayControlPayload4'
                        example:
                            force: true
                            participant_id: 97f8c4b7a2
                            to: 3a2d5f8c7f
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/DisplayControl'
                            example:
                                controller:
                                    connected: false
                                    id: 97f8c4b7a2
                                    joined_at: "2026-09-19T15:04:05Z"
                                    role: observer
                                released: false
                                was_held: true
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: transfer target must be an observer participant
                            example: transfer target must be an observer participant
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: authentication required
                            example: authentication required
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: no access to workspace namespace
                            example: no access to workspace namespace
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: display session for workspace "my-workspace" has no participant "3a2d5f8c7f"
                            example: display session for workspace "my-workspace" has no participant "3a2d5f8c7f"
                "409":
                    description: 'conflict: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: participant "97f8c4b7a2" is not the current controller
                            example: participant "97f8c4b7a2" is not the current controller
    /v1/workspaces/{name}/display/join:
        post:
            tags:
                - display
            summary: join display
            description: Join a workspace's shared display session as an observer or, when free, as the controller
            operationId: display#join
            parameters:
                - name: namespace
                  in: query
                  description: Workspace namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/JoinDisplayPayload2'
                        example:
                            role: controller
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/DisplayJoin'
                            example:
                                capability:
                                    controller_present: true
                                    enabled: false
                                    handshake_timeout_ms: 10000
                                    max_height: 2160
                                    max_participants: 8
                                    max_width: 4096
                                    participant_ttl_ms: 900000
                                    participants: 2
                                    protocol: 1
                                    transports:
                                        - rfb
                                        - tier1
                                participant:
                                    connected: false
                                    id: 97f8c4b7a2
                                    joined_at: "2026-09-19T15:04:05Z"
                                    role: observer
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: 'cannot join as controller: display is occupied'
                            example: 'cannot join as controller: display is occupied'
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: authentication required
                            example: authentication required
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: no access to workspace namespace
                            example: no access to workspace namespace
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace" not found
                            example: workspace "my-workspace" not found
                "409":
                    description: 'conflict: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: display for workspace "my-workspace" is controlled by another participant
                            example: display for workspace "my-workspace" is controlled by another participant
                "429":
                    description: 'capacity: Too Many Requests response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: display session for workspace "my-workspace" is full (max 8 participants)
                            example: display session for workspace "my-workspace" is full (max 8 participants)
    /v1/workspaces/{name}/display/sessions/{participant_id}:
        delete:
            tags:
                - display
            summary: leave display
            description: Leave a workspace's shared display session, releasing control when the departing participant held it
            operationId: display#leave
            parameters:
                - name: namespace
                  in: query
                  description: Workspace namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
                - name: participant_id
                  in: path
                  description: Participant identifier to remove
                  required: true
                  schema:
                    type: string
                    description: Participant identifier to remove
                    example: 97f8c4b7a2
                  example: 97f8c4b7a2
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/LeaveResponseBody'
                            example:
                                ok: true
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: authentication required
                            example: authentication required
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: no access to workspace namespace
                            example: no access to workspace namespace
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: display session for workspace "my-workspace" has no participant "97f8c4b7a2"
                            example: display session for workspace "my-workspace" has no participant "97f8c4b7a2"
    /v1/workspaces/{name}/display/status:
        get:
            tags:
                - display
            summary: status display
            description: Report live membership and control state of a workspace's shared display session
            operationId: display#status
            parameters:
                - name: namespace
                  in: query
                  description: Workspace namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/DisplayStatus'
                            example:
                                controller:
                                    connected: false
                                    id: 97f8c4b7a2
                                    joined_at: "2026-09-19T15:04:05Z"
                                    role: observer
                                enabled: false
                                epoch: 8f2ac64d91
                                observers:
                                    - connected: false
                                      id: 97f8c4b7a2
                                      joined_at: "2026-09-19T15:04:05Z"
                                      role: observer
                                    - connected: false
                                      id: 97f8c4b7a2
                                      joined_at: "2026-09-19T15:04:05Z"
                                      role: observer
                                participants: 3
                                protocol: 1
                "401":
                    description: 'unauthorized: Unauthorized response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: authentication required
                            example: authentication required
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: no access to workspace namespace
                            example: no access to workspace namespace
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace" not found
                            example: workspace "my-workspace" not found
    /v1/workspaces/{name}/gpu-profile:
        put:
            tags:
                - workspaces
            summary: set_gpu_profile workspaces
            description: Add, change or remove a Windows GPU profile only while its VM is fully stopped; preserves root/EFI/TPM/identity. Empty profile_id restores software graphics.
            operationId: workspaces#set_gpu_profile
            parameters:
                - name: namespace
                  in: query
                  allowEmptyValue: true
                  schema:
                    type: string
                    default: workspaces
                    example: Et voluptatibus laudantium enim placeat nam sed.
                  example: Hic in aut non.
                - name: name
                  in: path
                  required: true
                  schema:
                    type: string
                    example: Est praesentium laboriosam qui beatae.
                  example: Quasi ipsum.
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/SetGpuProfileRequestBody'
                        example:
                            profile_id: jsn
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/Workspace'
                            example:
                                conditions:
                                    - last_transition_time: "2025-01-02T15:04:05Z"
                                      message: StatefulSet my-workspace is available
                                      reason: MinimumReplicasAvailable
                                      status: "True"
                                      type: Ready
                                container_state:
                                    message: Container started successfully
                                    reason: Started
                                    started_at: "2025-01-02T15:04:05Z"
                                    state: running
                                cpu_limit: "1"
                                cpu_request: 500m
                                created_at: "2025-01-02T15:04:05Z"
                                image: codercom/code-server:latest
                                memory_limit: 2Gi
                                memory_request: 512Mi
                                name: my-workspace
                                namespace: workspaces
                                port: 8080
                                provisioned: true
                                ready_replicas: 1
                                remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                stopped: false
                                type: container
                                vm_gpu_profile:
                                    count: 6716878457214357736
                                    display_name: Non placeat enim illum.
                                    experimental: true
                                    guest_driver_version: Accusantium placeat iusto reprehenderit sit vero eligendi.
                                    id: Ad ab.
                                    kind: pci
                                    node_selector:
                                        Qui earum iure dolores sit inventore.: Molestias quasi et ut optio.
                                        Quibusdam rerum eaque praesentium dolor et.: A occaecati fugit consequatur enim.
                                    resource_name: Odio beatae.
                                vm_profile: Et nostrum et eos.
                                volume_mounts:
                                    - mount_path: /home/coder
                                      name: my-workspace-data
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Placeat quas doloribus culpa.
                            example: Vel sapiente maiores eos veritatis.
                "403":
                    description: 'forbidden: Forbidden response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Ratione autem saepe voluptates modi.
                            example: Illo perspiciatis cum voluptatem et.
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Quaerat placeat quisquam quis ullam.
                            example: Corporis accusamus placeat quasi.
                "409":
                    description: 'conflict: Conflict response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Consectetur est dolorem iure.
                            example: Dolore non.
                "503":
                    description: 'unavailable: Service Unavailable response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: Cumque exercitationem explicabo.
                            example: Modi inventore architecto.
    /v1/workspaces/{name}/reset:
        post:
            tags:
                - workspaces
            summary: reset workspaces
            description: Reset a workspace by re-provisioning it from its image
            operationId: workspaces#reset
            parameters:
                - name: namespace
                  in: query
                  description: Namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/Workspace'
                            example:
                                conditions:
                                    - last_transition_time: "2025-01-02T15:04:05Z"
                                      message: StatefulSet my-workspace is available
                                      reason: MinimumReplicasAvailable
                                      status: "True"
                                      type: Ready
                                container_state:
                                    message: Container started successfully
                                    reason: Started
                                    started_at: "2025-01-02T15:04:05Z"
                                    state: running
                                cpu_limit: "1"
                                cpu_request: 500m
                                created_at: "2025-01-02T15:04:05Z"
                                image: codercom/code-server:latest
                                memory_limit: 2Gi
                                memory_request: 512Mi
                                name: my-workspace
                                namespace: workspaces
                                port: 8080
                                provisioned: false
                                ready_replicas: 1
                                remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                stopped: false
                                type: container
                                vm_gpu_profile:
                                    count: 6716878457214357736
                                    display_name: Non placeat enim illum.
                                    experimental: true
                                    guest_driver_version: Accusantium placeat iusto reprehenderit sit vero eligendi.
                                    id: Ad ab.
                                    kind: pci
                                    node_selector:
                                        Qui earum iure dolores sit inventore.: Molestias quasi et ut optio.
                                        Quibusdam rerum eaque praesentium dolor et.: A occaecati fugit consequatur enim.
                                    resource_name: Odio beatae.
                                vm_profile: Corporis voluptatem tempora delectus qui.
                                volume_mounts:
                                    - mount_path: /home/coder
                                      name: my-workspace-data
                "400":
                    description: 'invalid: Bad Request response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: cannot reset a vm workspace
                            example: cannot reset a vm workspace
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace" not found
                            example: workspace "my-workspace" not found
    /v1/workspaces/{name}/start:
        post:
            tags:
                - workspaces
            summary: start workspaces
            description: Start a stopped workspace
            operationId: workspaces#start
            parameters:
                - name: namespace
                  in: query
                  description: Namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/Workspace'
                            example:
                                conditions:
                                    - last_transition_time: "2025-01-02T15:04:05Z"
                                      message: StatefulSet my-workspace is available
                                      reason: MinimumReplicasAvailable
                                      status: "True"
                                      type: Ready
                                container_state:
                                    message: Container started successfully
                                    reason: Started
                                    started_at: "2025-01-02T15:04:05Z"
                                    state: running
                                cpu_limit: "1"
                                cpu_request: 500m
                                created_at: "2025-01-02T15:04:05Z"
                                image: codercom/code-server:latest
                                memory_limit: 2Gi
                                memory_request: 512Mi
                                name: my-workspace
                                namespace: workspaces
                                port: 8080
                                provisioned: false
                                ready_replicas: 1
                                remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                stopped: false
                                type: container
                                vm_gpu_profile:
                                    count: 6716878457214357736
                                    display_name: Non placeat enim illum.
                                    experimental: true
                                    guest_driver_version: Accusantium placeat iusto reprehenderit sit vero eligendi.
                                    id: Ad ab.
                                    kind: pci
                                    node_selector:
                                        Qui earum iure dolores sit inventore.: Molestias quasi et ut optio.
                                        Quibusdam rerum eaque praesentium dolor et.: A occaecati fugit consequatur enim.
                                    resource_name: Odio beatae.
                                vm_profile: Provident et.
                                volume_mounts:
                                    - mount_path: /home/coder
                                      name: my-workspace-data
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace" not found
                            example: workspace "my-workspace" not found
    /v1/workspaces/{name}/stop:
        post:
            tags:
                - workspaces
            summary: stop workspaces
            description: Stop a running workspace
            operationId: workspaces#stop
            parameters:
                - name: namespace
                  in: query
                  description: Namespace
                  allowEmptyValue: true
                  schema:
                    type: string
                    description: Namespace
                    default: workspaces
                    example: workspaces
                  example: workspaces
                - name: name
                  in: path
                  description: Workspace name
                  required: true
                  schema:
                    type: string
                    description: Workspace name
                    example: my-workspace
                  example: my-workspace
            responses:
                "200":
                    description: OK response.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/Workspace'
                            example:
                                conditions:
                                    - last_transition_time: "2025-01-02T15:04:05Z"
                                      message: StatefulSet my-workspace is available
                                      reason: MinimumReplicasAvailable
                                      status: "True"
                                      type: Ready
                                container_state:
                                    message: Container started successfully
                                    reason: Started
                                    started_at: "2025-01-02T15:04:05Z"
                                    state: running
                                cpu_limit: "1"
                                cpu_request: 500m
                                created_at: "2025-01-02T15:04:05Z"
                                image: codercom/code-server:latest
                                memory_limit: 2Gi
                                memory_request: 512Mi
                                name: my-workspace
                                namespace: workspaces
                                port: 8080
                                provisioned: false
                                ready_replicas: 1
                                remote_desktop:
                                    path: /
                                    port: 8080
                                    protocol: agent
                                stopped: false
                                type: container
                                vm_gpu_profile:
                                    count: 6716878457214357736
                                    display_name: Non placeat enim illum.
                                    experimental: true
                                    guest_driver_version: Accusantium placeat iusto reprehenderit sit vero eligendi.
                                    id: Ad ab.
                                    kind: pci
                                    node_selector:
                                        Qui earum iure dolores sit inventore.: Molestias quasi et ut optio.
                                        Quibusdam rerum eaque praesentium dolor et.: A occaecati fugit consequatur enim.
                                    resource_name: Odio beatae.
                                vm_profile: Reiciendis commodi porro magni aut quia.
                                volume_mounts:
                                    - mount_path: /home/coder
                                      name: my-workspace-data
                "404":
                    description: 'not_found: Not Found response.'
                    content:
                        application/json:
                            schema:
                                type: string
                                example: workspace "my-workspace" not found
                            example: workspace "my-workspace" not found
components:
    schemas:
        AgentAttachPayload:
            type: object
            properties:
                name:
                    type: string
                    description: Workspace name
                    example: my-workspace
                namespace:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                participant:
                    type: string
                    description: Viewer-chosen participant label, echoed in session records. Not an authorization boundary
                    example: chris-laptop
            description: Payload for attaching a controller to a workspace's guest agent session
            example:
                name: my-workspace
                namespace: workspaces
                participant: chris-laptop
            required:
                - name
        AgentAttachPayload2:
            type: object
            properties:
                participant:
                    type: string
                    description: Viewer-chosen participant label, echoed in session records. Not an authorization boundary
                    example: chris-laptop
            example:
                participant: chris-laptop
        AgentRelease:
            type: object
            properties:
                ok:
                    type: boolean
                    description: 'Whether the session is gone (unknown ids report ok: best-effort release)'
                    example: true
            description: Result of releasing a workspace guest agent session
            example:
                ok: true
            required:
                - ok
        AgentRenew:
            type: object
            properties:
                protocol:
                    type: integer
                    description: Agent ticket/API revision
                    example: 1
                    format: int64
                ttl_ms:
                    type: integer
                    description: Renewed lifetime in milliseconds
                    example: 60000
                    format: int64
            description: Result of renewing a workspace guest agent session
            example:
                protocol: 1
                ttl_ms: 60000
            required:
                - ttl_ms
                - protocol
        AgentStatus:
            type: object
            properties:
                active:
                    type: boolean
                    description: Whether at least one live agent session is bound to this workspace
                    example: true
                protocol:
                    type: integer
                    description: Agent ticket/API revision
                    example: 1
                    format: int64
                sessions:
                    type: integer
                    description: Live (unexpired) session count for this workspace
                    example: 1
                    format: int64
            description: 'Live agent session state for a workspace: whether any unexpired attach session exists'
            example:
                active: true
                protocol: 1
                sessions: 1
            required:
                - active
                - sessions
                - protocol
        AgentTicket:
            type: object
            properties:
                id:
                    type: string
                    description: Opaque server-side session identifier for renew/release correlation. Never sent to the guest
                    example: 8ec18121f4c2409aa7c025487f4e310c
                protocol:
                    type: integer
                    description: Agent ticket/API revision
                    example: 1
                    format: int64
                ticket:
                    type: string
                    description: Signed bearer ticket (id.payload.signature) to present in the agent attach message
                    example: 8ec18121f4c2409aa7c025487f4e310c.eyJ3b3Jrc3BhY2VVaWQiOiJ3cy0xIn0.c2ln
                ttl_ms:
                    type: integer
                    description: Ticket/session lifetime in milliseconds; renew at half of it
                    example: 60000
                    format: int64
            description: Short-lived attach ticket for a workspace guest agent session
            example:
                id: 8ec18121f4c2409aa7c025487f4e310c
                protocol: 1
                ticket: 8ec18121f4c2409aa7c025487f4e310c.eyJ3b3Jrc3BhY2VVaWQiOiJ3cy0xIn0.c2ln
                ttl_ms: 60000
            required:
                - id
                - ticket
                - ttl_ms
                - protocol
        AgentUpgradeAttempt:
            type: object
            properties:
                actor_id:
                    type: string
                    description: UID of the administrator that admitted the attempt
                    example: user-uid-1
                admitted_at:
                    type: string
                    description: RFC3339 admission timestamp
                    example: "2026-10-19T00:00:00Z"
                    format: date-time
                allow_reboot:
                    type: boolean
                    description: Whether the admitted attempt may run the bounded reboot sequence
                    example: false
                attempt_id:
                    type: string
                    description: Server-minted attempt identifier
                    example: upg_9f82c1a0b3d4e5f60718293a
                    pattern: ^upg_[0-9a-f]{24}$
                awaiting_reboot_at:
                    type: string
                    example: "1988-06-01T15:45:18Z"
                    format: date-time
                cancel_requested:
                    type: boolean
                    description: An administrator requested safe-boundary cancellation
                    example: false
                error_code:
                    type: string
                    description: Bounded machine-readable failure code
                    example: ""
                execution_id:
                    type: string
                    description: Linked execution admission record (recording authorization)
                    example: exec_9f82
                expected_installed_inventory_sha256:
                    type: string
                    example: 810151abf0615815b24e01967ec665e0eb583500f1eb5fa456361935b22b183b
                    pattern: ^[0-9a-f]{64}$
                installing_at:
                    type: string
                    example: "1993-01-15T10:53:28Z"
                    format: date-time
                journal_sequence:
                    type: integer
                    description: Last reconciled guest journal sequence
                    example: 0
                    format: int64
                namespace:
                    type: string
                    example: team-a
                predecessor_manifest_sha256:
                    type: string
                    description: Pinned rollback predecessor manifest digest
                    example: 2bb513c8d2af4981451946f3cc761109fcc5161f2831d1f4e2d855607be7c9ba
                    pattern: ^[0-9a-f]{64}$
                predecessor_target_id:
                    type: string
                    description: Pinned rollback predecessor target
                    example: windows11-amd64-v1
                prepared_at:
                    type: string
                    example: "1973-09-22T14:17:31Z"
                    format: date-time
                recording_id:
                    type: string
                    description: Protected attempt recording
                    example: rec_9f82
                recording_url:
                    type: string
                    description: Independently authorized recording link
                    example: /v1/executions/exec_9f82/recording
                rollback_requested_at:
                    type: string
                    example: "1971-03-22T13:37:43Z"
                    format: date-time
                rolling_back_at:
                    type: string
                    example: "2013-09-28T03:54:15Z"
                    format: date-time
                staging_at:
                    type: string
                    example: "2011-10-03T08:30:43Z"
                    format: date-time
                state:
                    type: string
                    description: Attempt lifecycle state
                    example: admitted
                    enum:
                        - admitted
                        - staging
                        - prepared
                        - installing
                        - verifying
                        - succeeded
                        - awaiting_reboot
                        - rollback_pending
                        - rolling_back
                        - rolled_back
                        - cancelled
                        - failed
                        - manual_recovery_required
                        - unknown
                        - recording_lost
                status_url:
                    type: string
                    description: Canonical status URL for this attempt
                    example: /v1/workspaces/vm-1/agent-upgrades/upg_9f82c1a0b3d4e5f60718293a?namespace=team-a
                target_id:
                    type: string
                    example: windows11-amd64-v2
                target_manifest_sha256:
                    type: string
                    example: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
                    pattern: ^[0-9a-f]{64}$
                terminal_at:
                    type: string
                    example: "1978-08-20T22:54:15Z"
                    format: date-time
                updated_at:
                    type: string
                    example: "1985-03-08T03:21:21Z"
                    format: date-time
                verifying_at:
                    type: string
                    example: "1988-10-05T09:28:48Z"
                    format: date-time
                vm_uid:
                    type: string
                    description: Controller-owned VM UID the reservation is bound to
                    example: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                workspace_name:
                    type: string
                    example: vm-1
                workspace_uid:
                    type: string
                    example: abc123
            description: Admitted agent upgrade attempt with phase progress and outcome
            example:
                actor_id: user-uid-1
                admitted_at: "2026-10-19T00:00:00Z"
                allow_reboot: false
                attempt_id: upg_9f82c1a0b3d4e5f60718293a
                awaiting_reboot_at: "1995-08-26T13:40:22Z"
                cancel_requested: false
                error_code: ""
                execution_id: exec_9f82
                expected_installed_inventory_sha256: 810151abf0615815b24e01967ec665e0eb583500f1eb5fa456361935b22b183b
                installing_at: "1978-02-07T21:57:07Z"
                journal_sequence: 0
                namespace: team-a
                predecessor_manifest_sha256: 41072787927682fc7563d317d006692ebe11c9c96f1c14175dc87d6e18430395
                predecessor_target_id: windows11-amd64-v1
                prepared_at: "1986-12-23T14:06:23Z"
                recording_id: rec_9f82
                recording_url: /v1/executions/exec_9f82/recording
                rollback_requested_at: "2008-08-21T06:53:55Z"
                rolling_back_at: "1976-01-21T18:02:04Z"
                staging_at: "1974-12-09T03:12:34Z"
                state: admitted
                status_url: /v1/workspaces/vm-1/agent-upgrades/upg_9f82c1a0b3d4e5f60718293a?namespace=team-a
                target_id: windows11-amd64-v2
                target_manifest_sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
                terminal_at: "1975-10-31T00:15:48Z"
                updated_at: "1989-07-19T00:08:58Z"
                verifying_at: "2002-11-02T08:44:05Z"
                vm_uid: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                workspace_name: vm-1
                workspace_uid: abc123
            required:
                - attempt_id
                - namespace
                - workspace_name
                - workspace_uid
                - vm_uid
                - actor_id
                - state
                - target_id
                - target_manifest_sha256
                - expected_installed_inventory_sha256
                - allow_reboot
                - cancel_requested
                - execution_id
                - recording_id
                - recording_url
                - status_url
                - journal_sequence
                - admitted_at
                - updated_at
        AgentUpgradeAvailability:
            type: object
            properties:
                active_attempt_id:
                    type: string
                    description: Reservation-holding attempt for this VM, when present
                    example: upg_9f82c1a0b3d4e5f60718293a
                admissible:
                    type: boolean
                    description: A start request would be admitted right now
                    example: false
                deny_reason:
                    type: string
                    description: Why start would be denied; empty when admissible
                    example: policy_disabled
                    enum:
                        - ""
                        - policy_disabled
                        - storage_unavailable
                        - eligibility_unavailable
                        - workspace_not_eligible
                        - attempt_active
                inventory_available:
                    type: boolean
                    description: Fresh authenticated guest inventory is available (guest integration)
                    example: false
                policy_enabled:
                    type: boolean
                    description: Platform policy admits agent upgrades
                    example: false
                storage_available:
                    type: boolean
                    description: Durable attempt/recording storage is ready
                    example: false
                vm_uid:
                    type: string
                    description: Resolved controller-owned VM UID, when eligible
                    example: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                workspace_eligible:
                    type: boolean
                    description: Workspace resolves as an eligible running Windows VM
                    example: false
            description: Fresh agent-upgrade availability for one workspace
            example:
                active_attempt_id: upg_9f82c1a0b3d4e5f60718293a
                admissible: false
                deny_reason: policy_disabled
                inventory_available: false
                policy_enabled: false
                storage_available: false
                vm_uid: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                workspace_eligible: false
            required:
                - policy_enabled
                - storage_available
                - workspace_eligible
                - inventory_available
                - admissible
                - deny_reason
        AgentUpgradeStartPayload:
            type: object
            properties:
                allow_reboot:
                    type: boolean
                    description: Permit the recorded bounded reboot sequence
                    default: false
                    example: false
                expected_installed_inventory_sha256:
                    type: string
                    description: Client-observed installed inventory digest (re-verified before install)
                    example: 810151abf0615815b24e01967ec665e0eb583500f1eb5fa456361935b22b183b
                    pattern: ^[0-9a-f]{64}$
                expected_revocation_epoch:
                    type: integer
                    description: Client-observed execution revocation epoch
                    example: 4
                    format: int64
                expected_vm_uid:
                    type: string
                    description: Client-observed VM UID; must match the current controller-owned UID
                    example: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                    pattern: ^[A-Za-z0-9][A-Za-z0-9._-]{0,255}$
                idempotency_key:
                    type: string
                    description: Client-chosen key; an identical replay returns the original attempt
                    example: run-2026-10-19-001
                    pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$
                name:
                    type: string
                    example: vm-1
                    pattern: ^[a-z0-9]([-a-z0-9.]*[a-z0-9])?$
                    maxLength: 253
                namespace:
                    type: string
                    default: workspaces
                    example: team-a
                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                    maxLength: 63
                target_id:
                    type: string
                    description: Operator-approved immutable target
                    example: windows11-amd64-v2
                    pattern: ^[a-z0-9][a-z0-9._-]{0,127}$
                target_manifest_sha256:
                    type: string
                    description: Expected signed manifest digest for the target
                    example: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
                    pattern: ^[0-9a-f]{64}$
            description: Admit a single explicit agent upgrade. Clients cannot submit URLs, hashes of payloads, install directories or installer flags.
            example:
                allow_reboot: false
                expected_installed_inventory_sha256: 810151abf0615815b24e01967ec665e0eb583500f1eb5fa456361935b22b183b
                expected_revocation_epoch: 4
                expected_vm_uid: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                idempotency_key: run-2026-10-19-001
                name: vm-1
                namespace: team-a
                target_id: windows11-amd64-v2
                target_manifest_sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
            required:
                - namespace
                - name
                - target_id
                - target_manifest_sha256
                - expected_vm_uid
                - expected_revocation_epoch
                - expected_installed_inventory_sha256
                - idempotency_key
                - allow_reboot
        AgentUpgradeStartPayload2:
            type: object
            properties:
                allow_reboot:
                    type: boolean
                    description: Permit the recorded bounded reboot sequence
                    default: false
                    example: false
                expected_installed_inventory_sha256:
                    type: string
                    description: Client-observed installed inventory digest (re-verified before install)
                    example: 810151abf0615815b24e01967ec665e0eb583500f1eb5fa456361935b22b183b
                    pattern: ^[0-9a-f]{64}$
                expected_revocation_epoch:
                    type: integer
                    description: Client-observed execution revocation epoch
                    example: 4
                    format: int64
                expected_vm_uid:
                    type: string
                    description: Client-observed VM UID; must match the current controller-owned UID
                    example: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                    pattern: ^[A-Za-z0-9][A-Za-z0-9._-]{0,255}$
                idempotency_key:
                    type: string
                    description: Client-chosen key; an identical replay returns the original attempt
                    example: run-2026-10-19-001
                    pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$
                target_id:
                    type: string
                    description: Operator-approved immutable target
                    example: windows11-amd64-v2
                    pattern: ^[a-z0-9][a-z0-9._-]{0,127}$
                target_manifest_sha256:
                    type: string
                    description: Expected signed manifest digest for the target
                    example: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
                    pattern: ^[0-9a-f]{64}$
            example:
                allow_reboot: false
                expected_installed_inventory_sha256: 810151abf0615815b24e01967ec665e0eb583500f1eb5fa456361935b22b183b
                expected_revocation_epoch: 4
                expected_vm_uid: 0d3f9a7e-6b1c-4f2a-9e8d-1a2b3c4d5e6f
                idempotency_key: run-2026-10-19-001
                target_id: windows11-amd64-v2
                target_manifest_sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
            required:
                - target_id
                - target_manifest_sha256
                - expected_vm_uid
                - expected_revocation_epoch
                - expected_installed_inventory_sha256
                - idempotency_key
                - allow_reboot
        CheckResponseBody:
            type: object
            properties:
                status:
                    type: string
                    description: Health status
                    example: ok
            example:
                status: ok
            required:
                - status
        CloneRequestBody:
            type: object
            properties:
                cpu_limit:
                    type: string
                    description: Override the CPU limit on the clone
                    example: "1"
                cpu_request:
                    type: string
                    description: Override the CPU request on the clone
                    example: 500m
                image:
                    type: string
                    description: Override the container image on the clone
                    example: codercom/code-server:4.96.2
                memory_limit:
                    type: string
                    description: Override the memory limit on the clone
                    example: 2Gi
                memory_request:
                    type: string
                    description: Override the memory request on the clone
                    example: 512Mi
                new_name:
                    type: string
                    description: Name for the cloned workspace
                    example: my-workspace-clone
                    pattern: ^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$
                    maxLength: 63
                port:
                    type: integer
                    description: Override the container port on the clone
                    example: 8080
                    format: int64
            example:
                cpu_limit: "1"
                cpu_request: 500m
                image: codercom/code-server:4.96.2
                memory_limit: 2Gi
                memory_request: 512Mi
                new_name: my-workspace-clone
                port: 8080
            required:
                - new_name
        ContainerState:
            type: object
            properties:
                message:
                    type: string
                    description: Details about the state
                    example: Container started successfully
                reason:
                    type: string
                    description: Reason for the state
                    example: Started
                started_at:
                    type: string
                    description: Time the container started
                    example: "2025-01-02T15:04:05Z"
                state:
                    type: string
                    description: 'Current state: running, waiting, terminated'
                    example: running
                    enum:
                        - running
                        - waiting
                        - terminated
                        - unknown
            description: State of the workspace container
            example:
                message: Container started successfully
                reason: Started
                started_at: "2025-01-02T15:04:05Z"
                state: running
        CreateImagePayload:
            type: object
            properties:
                category:
                    type: string
                    description: Category for grouping (e.g. Desktop, IDE, Tool, Game)
                    example: IDE
                default_args:
                    type: array
                    items:
                        type: string
                        example: Ut id cumque id.
                    description: Default command-line args
                    example:
                        - --bind-addr
                        - 0.0.0.0:8080
                default_cloud_init:
                    type: boolean
                    description: Set to true when the image has cloud-init baked in, allowing user-data (e.g. a user/password) to be seeded into the guest at first boot
                    example: false
                default_credentials:
                    $ref: '#/components/schemas/ImageCredentials'
                default_env:
                    type: array
                    items:
                        $ref: '#/components/schemas/ImageEnvVar'
                    description: Default environment variables
                    example:
                        - name: PASSWORD
                          value: changeme
                default_homedir:
                    type: string
                    description: Default home directory for the default user
                    example: /home/coder
                default_image_pull_policy:
                    type: string
                    description: Image pull policy for workspace containers created from this image (Always, IfNotPresent, Never). Empty leaves the container field unset so Kubernetes applies its own default
                    example: Always
                    enum:
                        - Always
                        - IfNotPresent
                        - Never
                default_password:
                    type: string
                    description: Known default password for DefaultUser. Only set when the image has a known default password; leave unset when the guest uses no password
                    example: changeme
                default_path:
                    type: string
                    description: Default URL path for connecting
                    example: /
                default_port:
                    type: integer
                    description: Default container port
                    example: 8080
                    format: int64
                default_shared_memory:
                    type: boolean
                    description: Automatically mount /dev/shm as emptyDir with medium=Memory (required for Selkies streaming, Chrome, ML frameworks)
                    example: false
                default_shell:
                    type: string
                    description: Default shell for exec/console sessions (e.g. /bin/bash)
                    example: /bin/bash
                default_uid:
                    type: integer
                    description: UID that the main container runs as (sets runAsUser and fsGroup)
                    example: 1000
                    format: int64
                default_user:
                    type: string
                    description: Default user for this image
                    example: coder
                default_user_data:
                    type: string
                    description: Reserved user-data for the guest (cloud-init). Empty by default; later used to seed first-boot configuration when cloud-init is supported. Not yet consumed
                    example: ""
                description:
                    type: string
                    description: Description of the image
                    example: Code editor in the browser
                homepage_url:
                    type: string
                    description: Project homepage or documentation URL
                    example: https://github.com/coder/code-server
                icon:
                    type: string
                    description: Icon identifier
                    example: code
                image:
                    type: string
                    description: Container image reference
                    example: codercom/code-server:latest
                image_homepage_url:
                    type: string
                    description: Container image registry page (e.g. Docker Hub)
                    example: https://hub.docker.com/r/codercom/code-server
                links:
                    type: array
                    items:
                        $ref: '#/components/schemas/ImageLink'
                    description: Additional relevant URLs for this image
                    example:
                        - title: GitHub
                          url: https://github.com/coder/code-server
                        - title: Docker Hub
                          url: https://hub.docker.com/r/codercom/code-server
                memory_limit:
                    type: string
                    description: Guest memory default
                    example: Soluta mollitia odio aperiam alias nisi aut.
                memory_request:
                    type: string
                    description: Guest memory request default
                    example: Aspernatur atque maxime dolorem.
                name:
                    type: string
                    description: Display name
                    example: Code Server (VS Code)
                persistent_root_disk:
                    type: boolean
                    description: Import a per-workspace persistent root disk
                    example: false
                persistent_root_disk_size:
                    type: string
                    description: Persistent root capacity
                    example: Unde sapiente illum commodi nobis voluptatem.
                privileged:
                    type: boolean
                    description: Run container in privileged mode
                    default: false
                    example: false
                proxy_config:
                    $ref: '#/components/schemas/ImageProxyConfig'
                remote_desktop:
                    $ref: '#/components/schemas/ImageRemoteDesktop'
                source_url:
                    type: string
                    description: Source code repository URL
                    example: https://github.com/coder/code-server
                tags:
                    type: array
                    items:
                        type: string
                        example: Et sit a.
                    description: Tags for filtering/searching images
                    example:
                        - development
                        - vscode
                vm_profile:
                    type: string
                    description: Controller-supported VM guest profile
                    example: windows11-amd64-v1
                    enum:
                        - windows11-amd64-v1
                workspace_types:
                    type: array
                    items:
                        type: string
                        example: Dolor eos autem minus quis quo.
                    description: Workspace types this image supports (container, vm, scratch). Empty means container-only
                    example:
                        - container
            description: Payload for creating a new image
            example:
                category: IDE
                default_args:
                    - --bind-addr
                    - 0.0.0.0:8080
                default_cloud_init: false
                default_credentials:
                    password: changeme
                    username: coder
                default_env:
                    - name: PASSWORD
                      value: changeme
                default_homedir: /home/coder
                default_image_pull_policy: Always
                default_password: changeme
                default_path: /
                default_port: 8080
                default_shared_memory: false
                default_shell: /bin/bash
                default_uid: 1000
                default_user: coder
                default_user_data: ""
                description: Code editor in the browser
                homepage_url: https://github.com/coder/code-server
                icon: code
                image: codercom/code-server:latest
                image_homepage_url: https://hub.docker.com/r/codercom/code-server
                links:
                    - title: GitHub
                      url: https://github.com/coder/code-server
                    - title: Docker Hub
                      url: https://hub.docker.com/r/codercom/code-server
                memory_limit: Omnis ut odit ex quis.
                memory_request: Similique labore quia eligendi.
                name: Code Server (VS Code)
                persistent_root_disk: true
                persistent_root_disk_size: Reiciendis ea vero voluptatem ex quas.
                privileged: false
                proxy_config:
                    custom_request_headers:
                        x-tenant: workspaces
                    inject_base_tag: false
                    needs_noop_sw: false
                    preserve_path_prefix: true
                    rewrite_host_absolute_paths: true
                    tls_insecure: false
                    websocket_paths:
                        - /websockify
                remote_desktop:
                    path: /
                    port: 8080
                    protocol: agent
                source_url: https://github.com/coder/code-server
                tags:
                    - development
                    - vscode
                vm_profile: windows11-amd64-v1
                workspace_types:
                    - container
            required:
                - name
                - image
                - default_port
        CreateSSHKeyPayload:
            type: object
            properties:
                key_name:
                    type: string
                    description: Human-friendly label for the key
                    example: Laptop 2025
                name:
                    type: string
                    description: Resource name for the SshKey CR
                    example: laptop-2025
                    pattern: ^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$
                    maxLength: 63
                namespace:
                    type: string
                    description: Target namespace (defaults to the user's personal namespace)
                    example: chris-at-fordham-id-au
                public_key:
                    type: string
                    description: SSH public key line (e.g. ssh-ed25519 AAAA... user@host)
                    example: ssh-ed25519 AAAA... user@host
            description: Payload for storing a user's SSH public key
            example:
                key_name: Laptop 2025
                name: laptop-2025
                namespace: chris-at-fordham-id-au
                public_key: ssh-ed25519 AAAA... user@host
            required:
                - name
                - public_key
        CreateVolumePayload:
            type: object
            properties:
                access_mode:
                    type: string
                    description: Access mode
                    default: ReadWriteOnce
                    example: ReadWriteOnce
                    enum:
                        - ReadWriteOnce
                        - ReadWriteMany
                        - ReadOnlyMany
                name:
                    type: string
                    description: PVC name
                    example: my-data
                    pattern: ^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$
                    maxLength: 63
                namespace:
                    type: string
                    description: Target namespace
                    default: workspaces
                    example: workspaces
                size:
                    type: string
                    description: Storage size
                    default: 5Gi
                    example: 10Gi
                storage_class:
                    type: string
                    description: Storage class name
                    example: standard
                type:
                    type: string
                    description: 'Volume type: container PVC or reusable CDI blank VM disk'
                    default: pvc
                    example: pvc
                    enum:
                        - pvc
                        - vm-disk
            description: Payload for creating a new PVC
            example:
                access_mode: ReadWriteOnce
                name: my-data
                namespace: workspaces
                size: 10Gi
                storage_class: standard
                type: pvc
            required:
                - name
                - size
        CreateWorkspacePayload:
            type: object
            properties:
                container:
                    $ref: '#/components/schemas/WorkspaceContainer'
                env:
                    type: array
                    items:
                        $ref: '#/components/schemas/EnvVar'
                    description: Custom environment variables to inject into the workspace container
                    example:
                        - name: PASSWORD
                          value: changeme
                image_pull_policy:
                    type: string
                    description: Image pull policy for the workspace container (Always, IfNotPresent, Never). Overrides the image's default. When unset, the image's defaultImagePullPolicy applies; if that is also unset the field is omitted so Kubernetes applies its own default (Always for :latest or untagged references, IfNotPresent otherwise)
                    example: Always
                    enum:
                        - Always
                        - IfNotPresent
                        - Never
                name:
                    type: string
                    description: Workspace name
                    example: my-workspace
                    pattern: ^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$
                    maxLength: 63
                namespace:
                    type: string
                    description: Target namespace
                    default: workspaces
                    example: workspaces
                node_selector:
                    type: object
                    description: Node selector labels for scheduling
                    example:
                        nvidia.com/gpu: "true"
                    additionalProperties:
                        type: string
                        example: Ipsam quis voluptatem.
                shared_memory:
                    type: boolean
                    description: Mount /dev/shm as an emptyDir with medium=Memory (required for Chrome, ML frameworks)
                    default: false
                    example: true
                tolerations:
                    type: array
                    items:
                        $ref: '#/components/schemas/Toleration'
                    description: Pod tolerations for scheduling
                    example:
                        - effect: NoSchedule
                          key: nvidia.com/gpu
                          operator: Equal
                          value: "true"
                type:
                    type: string
                    description: 'Workspace type: ''container'' (default, runs as a StatefulSet), ''vm'' (KubeVirt VirtualMachine booting a containerDisk image), or ''scratch'' (plain Deployment)'
                    default: container
                    example: container
                    enum:
                        - container
                        - vm
                        - scratch
                vm_options:
                    $ref: '#/components/schemas/VMOptions'
                volume_mounts:
                    type: array
                    items:
                        $ref: '#/components/schemas/VolumeMount'
                    description: Volumes to mount
                    example:
                        - mount_path: /home/coder
                          name: my-workspace-data
            description: Payload for creating a new workspace
            example:
                container:
                    cpu_limit: "2"
                    cpu_request: 500m
                    gpu_request: "1"
                    gpu_vendor: nvidia.com/gpu
                    image: codercom/code-server:latest
                    memory_limit: 2Gi
                    memory_request: 512Mi
                    name: code-server
                    port: 8080
                env:
                    - name: PASSWORD
                      value: changeme
                image_pull_policy: Always
                name: my-workspace
                namespace: workspaces
                node_selector:
                    nvidia.com/gpu: "true"
                shared_memory: true
                tolerations:
                    - effect: NoSchedule
                      key: nvidia.com/gpu
                      operator: Equal
                      value: "true"
                type: container
                vm_options:
                    gpu_profile: osm
                    import_cert_config_map_name: Voluptas sint sed.
                    import_secret_name: Iure voluptatibus quo asperiores.
                    root_disk_size: Tempora occaecati ut sunt voluptas praesentium.
                    storage_class_name: Est repudiandae ducimus.
                volume_mounts:
                    - mount_path: /home/coder
                      name: my-workspace-data
            required:
                - name
                - container
        DisplayCapability:
            type: object
            properties:
                controller_present:
                    type: boolean
                    description: Whether a controller is currently attached
                    example: true
                enabled:
                    type: boolean
                    description: Whether shared display sessions are available for this workspace
                    example: false
                handshake_timeout_ms:
                    type: integer
                    description: Display stream handshake timeout in milliseconds
                    example: 10000
                    format: int64
                max_height:
                    type: integer
                    description: Maximum advertised guest framebuffer height
                    example: 2160
                    format: int64
                max_participants:
                    type: integer
                    description: Maximum simultaneous participants (controller + observers)
                    example: 8
                    format: int64
                max_width:
                    type: integer
                    description: Maximum advertised guest framebuffer width
                    example: 4096
                    format: int64
                participant_ttl_ms:
                    type: integer
                    description: Idle membership lifetime in milliseconds
                    example: 900000
                    format: int64
                participants:
                    type: integer
                    description: Current participant count
                    example: 2
                    format: int64
                protocol:
                    type: integer
                    description: Display protocol/API revision
                    example: 1
                    format: int64
                transports:
                    type: array
                    items:
                        type: string
                        example: Facere eum maxime.
                    description: Supported display transports
                    example:
                        - rfb
                        - tier1
            description: Capability advertisement for a workspace's shared display session. Absence of this resource, or enabled=false, means the workspace uses the legacy exclusive display mode
            example:
                controller_present: true
                enabled: false
                handshake_timeout_ms: 10000
                max_height: 2160
                max_participants: 8
                max_width: 4096
                participant_ttl_ms: 900000
                participants: 2
                protocol: 1
                transports:
                    - rfb
                    - tier1
            required:
                - enabled
                - protocol
        DisplayControl:
            type: object
            properties:
                controller:
                    $ref: '#/components/schemas/Participant'
                released:
                    type: boolean
                    description: True when release cleared the controller
                    example: false
                was_held:
                    type: boolean
                    description: Whether a controller was present before the transition
                    example: true
            description: Result of a control transition
            example:
                controller:
                    connected: false
                    id: 97f8c4b7a2
                    joined_at: "2026-09-19T15:04:05Z"
                    role: observer
                released: false
                was_held: true
            required:
                - was_held
                - released
        DisplayControlPayload:
            type: object
            properties:
                force:
                    type: boolean
                    description: Explicit human consent to take or transfer control, demoting the current controller to observer. There is no silent takeover without this
                    default: false
                    example: true
                name:
                    type: string
                    description: Workspace name
                    example: my-workspace
                namespace:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                participant_id:
                    type: string
                    description: Participant performing the transition. Release requires the current controller; acquire may be any participant; transfer requires the current controller
                    example: 97f8c4b7a2
                to:
                    type: string
                    description: Target observer participant identifier for a transfer
                    example: 3a2d5f8c7f
            description: Payload for a control transition (acquire, release or transfer)
            example:
                force: true
                name: my-workspace
                namespace: workspaces
                participant_id: 97f8c4b7a2
                to: 3a2d5f8c7f
            required:
                - name
                - participant_id
        DisplayControlPayload2:
            type: object
            properties:
                force:
                    type: boolean
                    description: Explicit human consent to take or transfer control, demoting the current controller to observer. There is no silent takeover without this
                    default: false
                    example: true
                participant_id:
                    type: string
                    description: Participant performing the transition. Release requires the current controller; acquire may be any participant; transfer requires the current controller
                    example: 97f8c4b7a2
                to:
                    type: string
                    description: Target observer participant identifier for a transfer
                    example: 3a2d5f8c7f
            example:
                force: true
                participant_id: 97f8c4b7a2
                to: 3a2d5f8c7f
            required:
                - participant_id
        DisplayControlPayload3:
            type: object
            properties:
                force:
                    type: boolean
                    description: Explicit human consent to take or transfer control, demoting the current controller to observer. There is no silent takeover without this
                    default: false
                    example: true
                participant_id:
                    type: string
                    description: Participant performing the transition. Release requires the current controller; acquire may be any participant; transfer requires the current controller
                    example: 97f8c4b7a2
                to:
                    type: string
                    description: Target observer participant identifier for a transfer
                    example: 3a2d5f8c7f
            example:
                force: true
                participant_id: 97f8c4b7a2
                to: 3a2d5f8c7f
            required:
                - participant_id
        DisplayControlPayload4:
            type: object
            properties:
                force:
                    type: boolean
                    description: Explicit human consent to take or transfer control, demoting the current controller to observer. There is no silent takeover without this
                    default: false
                    example: true
                participant_id:
                    type: string
                    description: Participant performing the transition. Release requires the current controller; acquire may be any participant; transfer requires the current controller
                    example: 97f8c4b7a2
                to:
                    type: string
                    description: Target observer participant identifier for a transfer
                    example: 3a2d5f8c7f
            example:
                force: true
                participant_id: 97f8c4b7a2
                to: 3a2d5f8c7f
            required:
                - participant_id
        DisplayJoin:
            type: object
            properties:
                capability:
                    $ref: '#/components/schemas/DisplayCapability'
                participant:
                    $ref: '#/components/schemas/Participant'
            description: Result of joining a shared display session
            example:
                capability:
                    controller_present: true
                    enabled: false
                    handshake_timeout_ms: 10000
                    max_height: 2160
                    max_participants: 8
                    max_width: 4096
                    participant_ttl_ms: 900000
                    participants: 2
                    protocol: 1
                    transports:
                        - rfb
                        - tier1
                participant:
                    connected: false
                    id: 97f8c4b7a2
                    joined_at: "2026-09-19T15:04:05Z"
                    role: observer
            required:
                - participant
        DisplayStatus:
            type: object
            properties:
                controller:
                    $ref: '#/components/schemas/Participant'
                enabled:
                    type: boolean
                    description: Whether shared display sessions are available for this workspace
                    example: false
                epoch:
                    type: string
                    description: Capture/broker generation. Changes when a new capture owner is elected
                    example: 8f2ac64d91
                observers:
                    type: array
                    items:
                        $ref: '#/components/schemas/Participant'
                    description: Current observers
                    example:
                        - connected: false
                          id: 97f8c4b7a2
                          joined_at: "2026-09-19T15:04:05Z"
                          role: observer
                        - connected: false
                          id: 97f8c4b7a2
                          joined_at: "2026-09-19T15:04:05Z"
                          role: observer
                participants:
                    type: integer
                    description: Total participant count (controller + observers)
                    example: 3
                    format: int64
                protocol:
                    type: integer
                    description: Display protocol/API revision
                    example: 1
                    format: int64
            description: Live membership and control state of a workspace's shared display session
            example:
                controller:
                    connected: false
                    id: 97f8c4b7a2
                    joined_at: "2026-09-19T15:04:05Z"
                    role: observer
                enabled: false
                epoch: 8f2ac64d91
                observers:
                    - connected: false
                      id: 97f8c4b7a2
                      joined_at: "2026-09-19T15:04:05Z"
                      role: observer
                    - connected: false
                      id: 97f8c4b7a2
                      joined_at: "2026-09-19T15:04:05Z"
                      role: observer
                participants: 3
                protocol: 1
            required:
                - enabled
                - protocol
                - epoch
                - participants
        EnvVar:
            type: object
            properties:
                name:
                    type: string
                    description: Environment variable name
                    example: MY_VAR
                value:
                    type: string
                    description: Environment variable value
                    example: my-value
            description: Custom environment variable for a workspace
            example:
                name: MY_VAR
                value: my-value
            required:
                - name
                - value
        ExecutionCommand:
            type: object
            properties:
                admission_time:
                    type: string
                    description: RFC3339 timestamp
                    example: "2026-10-17T00:00:00Z"
                    format: date-time
                denial:
                    type: string
                    description: Runner denial or transport-loss note
                    example: transport lost; do not rerun
                durability:
                    type: string
                    description: none|durable
                    example: none
                    enum:
                        - none
                        - durable
                duration_ms:
                    type: integer
                    description: Guest-measured duration in milliseconds
                    example: 120
                    format: int64
                execution_id:
                    type: string
                    description: Execution identifier
                    example: exec_9f82
                exit_code:
                    type: integer
                    description: Guest process exit code when known
                    example: 0
                    format: int64
                mode:
                    type: string
                    description: 'Storage mode: ephemeral|external|bundled'
                    example: ephemeral
                    enum:
                        - ephemeral
                        - external
                        - bundled
                namespace:
                    type: string
                    example: team-a
                outcome:
                    type: string
                    description: Final command outcome
                    example: succeeded
                    enum:
                        - succeeded
                        - failed
                        - timed_out
                        - unknown
                recording_id:
                    type: string
                    description: Recording identifier
                    example: rec_9f82
                state:
                    type: string
                    description: Final lifecycle state
                    example: succeeded
                    enum:
                        - succeeded
                        - failed
                        - cancelled
                        - timed_out
                        - revoked
                        - unknown
                        - recording_lost
                stderr:
                    type: string
                    description: Standard error, truncated to the pilot output bound
                    example:
                        - 79
                        - 102
                        - 102
                        - 105
                        - 99
                        - 105
                        - 105
                        - 115
                        - 32
                        - 112
                        - 114
                        - 97
                        - 101
                        - 115
                        - 101
                        - 110
                        - 116
                        - 105
                        - 117
                        - 109
                        - 32
                        - 97
                        - 99
                        - 99
                        - 117
                        - 115
                        - 97
                        - 109
                        - 117
                        - 115
                        - 32
                        - 112
                        - 101
                        - 114
                        - 102
                        - 101
                        - 114
                        - 101
                        - 110
                        - 100
                        - 105
                        - 115
                        - 32
                        - 114
                        - 101
                        - 114
                        - 117
                        - 109
                        - 46
                    format: binary
                stdout:
                    type: string
                    description: Standard output, truncated to the pilot output bound
                    example:
                        - 83
                        - 105
                        - 110
                        - 116
                        - 32
                        - 115
                        - 105
                        - 116
                        - 32
                        - 97
                        - 116
                        - 32
                        - 112
                        - 111
                        - 115
                        - 115
                        - 105
                        - 109
                        - 117
                        - 115
                        - 46
                    format: binary
                truncated:
                    type: boolean
                    description: Output was truncated at the 16 KiB bound
                    example: false
                workspace_name:
                    type: string
                    example: vm-1
                workspace_uid:
                    type: string
                    example: abc123
            description: Synchronous outcome of one pilot command execution
            example:
                admission_time: "2026-10-17T00:00:00Z"
                denial: transport lost; do not rerun
                durability: none
                duration_ms: 120
                execution_id: exec_9f82
                exit_code: 0
                mode: ephemeral
                namespace: team-a
                outcome: succeeded
                recording_id: rec_9f82
                state: succeeded
                stderr:
                    - 79
                    - 109
                    - 110
                    - 105
                    - 115
                    - 32
                    - 100
                    - 101
                    - 108
                    - 101
                    - 110
                    - 105
                    - 116
                    - 105
                    - 32
                    - 99
                    - 111
                    - 114
                    - 114
                    - 117
                    - 112
                    - 116
                    - 105
                    - 32
                    - 113
                    - 117
                    - 111
                    - 115
                    - 32
                    - 118
                    - 111
                    - 108
                    - 117
                    - 112
                    - 116
                    - 97
                    - 116
                    - 117
                    - 109
                    - 32
                    - 101
                    - 120
                    - 101
                    - 114
                    - 99
                    - 105
                    - 116
                    - 97
                    - 116
                    - 105
                    - 111
                    - 110
                    - 101
                    - 109
                    - 32
                    - 118
                    - 111
                    - 108
                    - 117
                    - 112
                    - 116
                    - 97
                    - 116
                    - 105
                    - 98
                    - 117
                    - 115
                    - 46
                stdout:
                    - 68
                    - 111
                    - 108
                    - 111
                    - 114
                    - 105
                    - 98
                    - 117
                    - 115
                    - 32
                    - 115
                    - 105
                    - 116
                    - 46
                truncated: false
                workspace_name: vm-1
                workspace_uid: abc123
            required:
                - execution_id
                - recording_id
                - namespace
                - workspace_name
                - outcome
                - state
        ExecutionGrantPayload:
            type: object
            properties:
                grant:
                    type: string
                    description: Opaque, versioned, guest-verified grant token
                    example: eyJ2IjoiMS4wIn0....
                    minLength: 10
                os_identity:
                    type: string
                    description: Target OS identity (e.g. 'root', 'SYSTEM')
                    example: root
            description: Signed, short-lived grant used to admit an execution request (placeholder)
            example:
                grant: eyJ2IjoiMS4wIn0....
                os_identity: root
            required:
                - grant
        ExecutionRecord:
            type: object
            properties:
                actor_id:
                    type: string
                    description: Actor identifier
                    example: user@example.com
                admission_time:
                    type: string
                    description: RFC3339 timestamp
                    example: "2026-10-17T00:00:00Z"
                    format: date-time
                admitted:
                    type: boolean
                    example: true
                deny_reason:
                    type: string
                    example: ""
                durability:
                    type: string
                    description: none|durable
                    example: none
                    enum:
                        - none
                        - durable
                elevated:
                    type: boolean
                    example: false
                end_time:
                    type: string
                    description: RFC3339 timestamp
                    example: "1992-10-25T15:54:16Z"
                    format: date-time
                execution_id:
                    type: string
                    description: Execution identifier
                    example: exec_9f82
                exit_code:
                    type: integer
                    example: 0
                    format: int64
                grant_version:
                    type: string
                    example: "1.0"
                mode:
                    type: string
                    description: 'Storage mode: ephemeral|external|bundled'
                    example: ephemeral
                    enum:
                        - ephemeral
                        - external
                        - bundled
                namespace:
                    type: string
                    example: team-a
                operation:
                    type: string
                    description: command|script|shell
                    example: shell
                    enum:
                        - command
                        - script
                        - shell
                os_identity:
                    type: string
                    example: root
                recording_id:
                    type: string
                    example: rec_9f82
                recording_lost:
                    type: boolean
                    example: false
                start_time:
                    type: string
                    description: RFC3339 timestamp
                    example: "1981-09-27T06:44:10Z"
                    format: date-time
                state:
                    type: string
                    description: lifecycle state
                    example: succeeded
                    enum:
                        - admitted
                        - running
                        - succeeded
                        - failed
                        - cancelled
                        - timed_out
                        - revoked
                        - unknown
                        - recording_lost
                termination:
                    type: string
                    example: graceful
                workspace_generation:
                    type: integer
                    example: 3
                    format: int64
                workspace_name:
                    type: string
                    example: vm-1
                workspace_uid:
                    type: string
                    example: abc123
            description: Execution admission record and last known outcome
            example:
                actor_id: user@example.com
                admission_time: "2026-10-17T00:00:00Z"
                admitted: true
                deny_reason: ""
                durability: none
                elevated: false
                end_time: "1986-10-11T09:51:30Z"
                execution_id: exec_9f82
                exit_code: 0
                grant_version: "1.0"
                mode: ephemeral
                namespace: team-a
                operation: shell
                os_identity: root
                recording_id: rec_9f82
                recording_lost: false
                start_time: "1979-01-08T16:18:11Z"
                state: succeeded
                termination: graceful
                workspace_generation: 3
                workspace_name: vm-1
                workspace_uid: abc123
            required:
                - execution_id
                - operation
                - namespace
                - workspace_name
                - recording_id
                - mode
                - durability
                - admitted
                - admission_time
        ExecutionRecordingChunk:
            type: object
            properties:
                data:
                    type: string
                    description: Base64-encoded plaintext recording data
                    example:
                        - 81
                        - 117
                        - 105
                        - 115
                        - 32
                        - 101
                        - 116
                        - 32
                        - 97
                        - 109
                        - 101
                        - 116
                        - 32
                        - 102
                        - 97
                        - 99
                        - 105
                        - 108
                        - 105
                        - 115
                        - 32
                        - 100
                        - 111
                        - 108
                        - 111
                        - 114
                        - 32
                        - 110
                        - 111
                        - 98
                        - 105
                        - 115
                        - 32
                        - 114
                        - 101
                        - 114
                        - 117
                        - 109
                        - 46
                    format: binary
                index:
                    type: integer
                    description: Chunk index starting at 0
                    example: 0
                    format: int64
            description: Verified, decrypted recording chunk; sensitive playback content
            example:
                data:
                    - 69
                    - 116
                    - 32
                    - 101
                    - 111
                    - 115
                    - 32
                    - 113
                    - 117
                    - 111
                    - 32
                    - 112
                    - 111
                    - 115
                    - 115
                    - 105
                    - 109
                    - 117
                    - 115
                    - 46
                index: 0
            required:
                - index
                - data
        ExecutionRecordingManifest:
            type: object
            properties:
                chunks:
                    type: integer
                    example: 3556641820793444890
                    format: int64
                plaintext_bytes:
                    type: integer
                    example: 5942406856411262049
                    format: int64
                recording_id:
                    type: string
                    example: Eligendi culpa quas sunt provident facere impedit.
                verified:
                    type: boolean
                    example: true
            example:
                chunks: 9105728414039389454
                plaintext_bytes: 2343903566699577213
                recording_id: Aut quia.
                verified: false
            required:
                - recording_id
                - chunks
                - plaintext_bytes
                - verified
        ExecutionStatus:
            type: object
            properties:
                allow_elevated:
                    type: boolean
                    description: Whether elevated execution is allowed by policy
                    example: false
                durable:
                    type: boolean
                    description: Metadata and recordings are durable (not ephemeral)
                    example: false
                enabled:
                    type: boolean
                    description: Whether VM execution is enabled by policy
                    example: false
                issuer_ready:
                    type: boolean
                    description: Opt-in management issuer prerequisites and initial bootstrap sync are ready; not a guest execution capability
                    example: false
                storage_available:
                    type: boolean
                    description: Store is Ready and can admit work
                    example: false
                storage_mode:
                    type: string
                    description: 'Storage mode: disabled|ephemeral|external|bundled'
                    example: disabled
                    enum:
                        - disabled
                        - ephemeral
                        - external
                        - bundled
            description: Execution management status
            example:
                allow_elevated: false
                durable: false
                enabled: false
                issuer_ready: false
                storage_available: false
                storage_mode: disabled
            required:
                - enabled
                - allow_elevated
                - storage_mode
                - durable
                - storage_available
                - issuer_ready
        Image:
            type: object
            properties:
                category:
                    type: string
                    description: Category for grouping (e.g. Desktop, IDE, Tool, Game)
                    example: IDE
                cr_name:
                    type: string
                    description: Kubernetes resource name (metadata.name)
                    example: code-server
                default_args:
                    type: array
                    items:
                        type: string
                        example: Similique veritatis explicabo error.
                    description: Default command-line args injected at workspace creation
                    example:
                        - --bind-addr
                        - 0.0.0.0:8080
                default_cloud_init:
                    type: boolean
                    description: Set to true when the image has cloud-init baked in, allowing user-data (e.g. a user/password) to be seeded into the guest at first boot
                    example: false
                default_credentials:
                    $ref: '#/components/schemas/ImageCredentials'
                default_env:
                    type: array
                    items:
                        $ref: '#/components/schemas/ImageEnvVar'
                    description: Default environment variables injected at workspace creation
                    example:
                        - name: PASSWORD
                          value: changeme
                default_homedir:
                    type: string
                    description: Default home directory for the default user
                    example: /home/coder
                default_image_pull_policy:
                    type: string
                    description: Image pull policy for workspace containers created from this image (Always, IfNotPresent, Never). Empty means the platform leaves the container field unset so Kubernetes applies its own default
                    example: Always
                default_password:
                    type: string
                    description: Known default password for DefaultUser. Only set when the image has a known default password; leave unset when the guest uses no password
                    example: changeme
                default_path:
                    type: string
                    description: Default URL path for connecting (e.g. /vnc.html?resize=remote)
                    example: /
                default_port:
                    type: integer
                    description: Default container port
                    example: 8080
                    format: int64
                default_shared_memory:
                    type: boolean
                    description: Automatically mount /dev/shm as emptyDir with medium=Memory (required for Selkies streaming, Chrome, ML frameworks)
                    example: false
                default_shell:
                    type: string
                    description: Default shell for exec/console sessions (e.g. /bin/bash)
                    example: /bin/bash
                default_uid:
                    type: integer
                    description: UID that the main container runs as (sets runAsUser and fsGroup)
                    example: 1000
                    format: int64
                default_user:
                    type: string
                    description: Default user for this image
                    example: coder
                default_user_data:
                    type: string
                    description: Reserved user-data for the guest (cloud-init). Empty by default; later used to seed first-boot configuration when cloud-init is supported. Not yet consumed
                    example: ""
                description:
                    type: string
                    description: Description of the image
                    example: Code editor in the browser
                homepage_url:
                    type: string
                    description: Project homepage or documentation URL
                    example: https://github.com/coder/code-server
                icon:
                    type: string
                    description: Icon identifier
                    example: code
                image:
                    type: string
                    description: Full image reference
                    example: codercom/code-server:latest
                image_homepage_url:
                    type: string
                    description: Container image registry page (e.g. Docker Hub)
                    example: https://hub.docker.com/r/codercom/code-server
                links:
                    type: array
                    items:
                        $ref: '#/components/schemas/ImageLink'
                    description: Additional relevant URLs for this image
                    example:
                        - title: GitHub
                          url: https://github.com/coder/code-server
                        - title: Docker Hub
                          url: https://hub.docker.com/r/codercom/code-server
                memory_limit:
                    type: string
                    example: Est eum non vitae.
                memory_request:
                    type: string
                    example: Sed debitis ratione ut sed.
                name:
                    type: string
                    description: Display name
                    example: Code Server (VS Code)
                persistent_root_disk:
                    type: boolean
                    example: true
                persistent_root_disk_size:
                    type: string
                    example: Quia totam rerum fuga sed odio.
                privileged:
                    type: boolean
                    description: Run container in privileged mode
                    example: false
                proxy_config:
                    $ref: '#/components/schemas/ImageProxyConfig'
                remote_desktop:
                    $ref: '#/components/schemas/ImageRemoteDesktop'
                source_url:
                    type: string
                    description: Source code repository URL
                    example: https://github.com/coder/code-server
                tags:
                    type: array
                    items:
                        type: string
                        example: Doloremque ex.
                    description: Tags for filtering/searching images
                    example:
                        - development
                        - vscode
                vm_profile:
                    type: string
                    description: Controller-supported guest profile
                    example: Vitae ut qui.
                workspace_types:
                    type: array
                    items:
                        type: string
                        example: A aliquam.
                    description: Workspace types this image supports (container, vm, scratch). Empty means container-only
                    example:
                        - container
            description: An available workspace image
            example:
                category: IDE
                cr_name: code-server
                default_args:
                    - --bind-addr
                    - 0.0.0.0:8080
                default_cloud_init: false
                default_credentials:
                    password: changeme
                    username: coder
                default_env:
                    - name: PASSWORD
                      value: changeme
                default_homedir: /home/coder
                default_image_pull_policy: Always
                default_password: changeme
                default_path: /
                default_port: 8080
                default_shared_memory: false
                default_shell: /bin/bash
                default_uid: 1000
                default_user: coder
                default_user_data: ""
                description: Code editor in the browser
                homepage_url: https://github.com/coder/code-server
                icon: code
                image: codercom/code-server:latest
                image_homepage_url: https://hub.docker.com/r/codercom/code-server
                links:
                    - title: GitHub
                      url: https://github.com/coder/code-server
                    - title: Docker Hub
                      url: https://hub.docker.com/r/codercom/code-server
                memory_limit: Sed aut hic molestiae qui in.
                memory_request: Iure ullam tempora dolores accusantium.
                name: Code Server (VS Code)
                persistent_root_disk: true
                persistent_root_disk_size: Provident placeat nemo et repellat porro.
                privileged: false
                proxy_config:
                    custom_request_headers:
                        x-tenant: workspaces
                    inject_base_tag: false
                    needs_noop_sw: false
                    preserve_path_prefix: true
                    rewrite_host_absolute_paths: true
                    tls_insecure: false
                    websocket_paths:
                        - /websockify
                remote_desktop:
                    path: /
                    port: 8080
                    protocol: agent
                source_url: https://github.com/coder/code-server
                tags:
                    - development
                    - vscode
                vm_profile: Consequatur dolores fugit.
                workspace_types:
                    - container
            required:
                - cr_name
                - name
                - image
                - default_port
        ImageCredentials:
            type: object
            properties:
                password:
                    type: string
                    description: Default password
                    example: changeme
                username:
                    type: string
                    description: Default username
                    example: coder
            description: Default login credentials for a workspace image
            example:
                password: changeme
                username: coder
        ImageEnvVar:
            type: object
            properties:
                name:
                    type: string
                    description: Name of the environment variable
                    example: PASSWORD
                value:
                    type: string
                    description: Value (supports {{namespace}} and {{name}} placeholders)
                    example: changeme
            description: Environment variable with optional placeholder support
            example:
                name: PASSWORD
                value: changeme
            required:
                - name
                - value
        ImageLink:
            type: object
            properties:
                title:
                    type: string
                    description: Display label for the link
                    example: GitHub
                url:
                    type: string
                    description: Link target URL
                    example: https://github.com/coder/code-server
            description: A named URL link for an image
            example:
                title: GitHub
                url: https://github.com/coder/code-server
            required:
                - title
                - url
        ImageProxyConfig:
            type: object
            properties:
                custom_request_headers:
                    type: object
                    description: Additional headers to inject into proxied requests
                    example:
                        x-tenant: workspaces
                    additionalProperties:
                        type: string
                        example: A cum sit tenetur rem dignissimos laudantium.
                inject_base_tag:
                    type: boolean
                    description: Inject a <base> tag into HTML responses to fix relative path resolution
                    default: false
                    example: true
                needs_noop_sw:
                    type: boolean
                    description: Serve a no-op ServiceWorker at /sw.js to prevent SW registration errors
                    default: false
                    example: false
                preserve_path_prefix:
                    type: boolean
                    description: Forward the full proxy path (including /proxy/{ns}/{name}) to the pod instead of stripping it. Required for apps configured with a base URL matching the proxy prefix.
                    default: false
                    example: true
                rewrite_host_absolute_paths:
                    type: boolean
                    description: Rewrite requests with absolute paths that escape the proxy prefix using Referer header
                    default: false
                    example: true
                tls_insecure:
                    type: boolean
                    description: Connect to backend over HTTPS with skip-verify (for self-signed certs)
                    default: false
                    example: false
                websocket_paths:
                    type: array
                    items:
                        type: string
                        example: Quibusdam velit voluptates ut reprehenderit natus quos.
                    description: Paths that use WebSocket (informational, all paths support WS transparently)
                    example:
                        - /websockify
            description: Proxy configuration hints for a workspace image
            example:
                custom_request_headers:
                    x-tenant: workspaces
                inject_base_tag: true
                needs_noop_sw: true
                preserve_path_prefix: false
                rewrite_host_absolute_paths: false
                tls_insecure: false
                websocket_paths:
                    - /websockify
        ImageRemoteDesktop:
            type: object
            properties:
                path:
                    type: string
                    description: Path relative to the agent's base URL
                    default: /
                    example: /
                port:
                    type: integer
                    description: Guest port the agent listens on
                    example: 8080
                    format: int64
                protocol:
                    type: string
                    description: 'Protocol name: "selkies" (Linux in-guest agent) or "agent" (cross-platform kw-agent)'
                    example: agent
                    enum:
                        - selkies
                        - agent
            description: In-guest remote desktop agent configuration
            example:
                path: /
                port: 8080
                protocol: selkies
            required:
                - protocol
                - port
        JoinDisplayPayload:
            type: object
            properties:
                name:
                    type: string
                    description: Workspace name
                    example: my-workspace
                namespace:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                role:
                    type: string
                    description: Initial role. Defaults to observer
                    default: observer
                    example: observer
                    enum:
                        - observer
                        - controller
            description: Payload for joining a workspace's shared display session
            example:
                name: my-workspace
                namespace: workspaces
                role: controller
            required:
                - name
        JoinDisplayPayload2:
            type: object
            properties:
                role:
                    type: string
                    description: Initial role. Defaults to observer
                    default: observer
                    example: observer
                    enum:
                        - observer
                        - controller
            example:
                role: controller
        LeaveDisplayPayload:
            type: object
            properties:
                name:
                    type: string
                    description: Workspace name
                    example: my-workspace
                namespace:
                    type: string
                    description: Workspace namespace
                    default: workspaces
                    example: workspaces
                participant_id:
                    type: string
                    description: Participant identifier to remove
                    example: 97f8c4b7a2
            description: Payload for leaving a workspace's shared display session
            example:
                name: my-workspace
                namespace: workspaces
                participant_id: 97f8c4b7a2
            required:
                - name
                - participant_id
        LeaveResponseBody:
            type: object
            properties:
                ok:
                    type: boolean
                    description: Whether the participant was removed
                    example: true
            example:
                ok: true
            required:
                - ok
        Namespace:
            type: object
            properties:
                created_at:
                    type: string
                    description: Creation timestamp
                    example: "2025-01-02T15:04:05Z"
                name:
                    type: string
                    description: Namespace name
                    example: workspaces
                phase:
                    type: string
                    description: Namespace phase
                    example: Active
            description: A Kubernetes namespace
            example:
                created_at: "2025-01-02T15:04:05Z"
                name: workspaces
                phase: Active
            required:
                - name
                - phase
        Participant:
            type: object
            properties:
                connected:
                    type: boolean
                    description: Whether the participant is attached to a display stream
                    example: false
                id:
                    type: string
                    description: Opaque server-side participant identifier. A capability, not a credential; never sent to the guest or logged
                    example: 97f8c4b7a2
                joined_at:
                    type: string
                    description: RFC 3339 timestamp when the participant joined
                    example: "2026-09-19T15:04:05Z"
                role:
                    type: string
                    description: 'Current role: observer (view-only) or controller. Server-enforced; a client-side viewOnly flag is not an authorization boundary'
                    example: observer
                    enum:
                        - observer
                        - controller
            description: A participant in a shared display session
            example:
                connected: false
                id: 97f8c4b7a2
                joined_at: "2026-09-19T15:04:05Z"
                role: observer
            required:
                - id
                - role
                - connected
                - joined_at
        SetGpuProfileRequestBody:
            type: object
            properties:
                profile_id:
                    type: string
                    example: 6yx
                    maxLength: 63
            example:
                profile_id: pwe
            required:
                - profile_id
        Sshkey:
            type: object
            properties:
                created_at:
                    type: string
                    description: Creation timestamp
                    example: "2025-01-02T15:04:05Z"
                fingerprint:
                    type: string
                    description: SHA256 fingerprint of the key
                    example: SHA256:aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789
                key_name:
                    type: string
                    description: Human-friendly label
                    example: Laptop 2025
                name:
                    type: string
                    description: Resource name of the SshKey CR
                    example: laptop-2025
                namespace:
                    type: string
                    description: Kubernetes namespace
                    example: chris-at-fordham-id-au
                public_key:
                    type: string
                    description: SSH public key line
                    example: ssh-rsa AAAAB3Nza... user@example.com
            description: A stored SSH public key
            example:
                created_at: "2025-01-02T15:04:05Z"
                fingerprint: SHA256:aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789
                key_name: Laptop 2025
                name: laptop-2025
                namespace: chris-at-fordham-id-au
                public_key: ssh-rsa AAAAB3Nza... user@example.com
            required:
                - name
                - namespace
                - public_key
        StartRequestBody:
            type: object
            properties:
                args:
                    type: array
                    items:
                        type: string
                        example: Fugit voluptas recusandae itaque accusantium.
                    description: Arguments passed to the executable verbatim
                    example:
                        - Optio voluptas aut eveniet.
                        - Itaque qui quia quia placeat non temporibus.
                        - Quaerat molestiae porro quasi.
                    maxItems: 64
                cwd:
                    type: string
                    description: Optional working directory for the new process
                    example: C:\Temp
                    maxLength: 1024
                deadline_seconds:
                    type: integer
                    description: Guest execution deadline in seconds
                    default: 20
                    example: 9
                    format: int64
                    minimum: 1
                    maximum: 20
                executable:
                    type: string
                    description: Absolute path or name of the program to run
                    example: C:\Windows\System32\cmd.exe
                    minLength: 1
                    maxLength: 1024
                namespace:
                    type: string
                    description: Workspace namespace
                    example: team-a
                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
                    maxLength: 63
                workspace_name:
                    type: string
                    description: Workspace name
                    example: vm-1
                    pattern: ^[a-z0-9]([-a-z0-9.]*[a-z0-9])?$
                    maxLength: 253
            example:
                args:
                    - Qui optio quibusdam.
                    - Voluptatem sint non.
                    - Dolor non in eveniet quia non et.
                cwd: C:\Temp
                deadline_seconds: 9
                executable: C:\Windows\System32\cmd.exe
                namespace: team-a
                workspace_name: vm-1
            required:
                - namespace
                - workspace_name
                - executable
                - args
        Toleration:
            type: object
            properties:
                effect:
                    type: string
                    description: 'Taint effect: NoSchedule, PreferNoSchedule, or NoExecute'
                    example: NoSchedule
                    enum:
                        - NoSchedule
                        - PreferNoSchedule
                        - NoExecute
                        - ""
                key:
                    type: string
                    description: Toleration key
                    example: nvidia.com/gpu
                operator:
                    type: string
                    description: 'Operator: Exists or Equal'
                    default: Equal
                    example: Equal
                    enum:
                        - Exists
                        - Equal
                value:
                    type: string
                    description: Toleration value
                    example: "true"
            description: Kubernetes pod toleration
            example:
                effect: NoSchedule
                key: nvidia.com/gpu
                operator: Equal
                value: "true"
            required:
                - key
        VMGPUProfile:
            type: object
            properties:
                count:
                    type: integer
                    example: 5226192139246217692
                    format: int64
                display_name:
                    type: string
                    example: Nisi sapiente natus eos sed aspernatur.
                experimental:
                    type: boolean
                    example: false
                guest_driver_version:
                    type: string
                    example: Et in vero optio.
                id:
                    type: string
                    example: Delectus quia.
                kind:
                    type: string
                    example: mediated
                    enum:
                        - pci
                        - mediated
                node_selector:
                    type: object
                    example:
                        Cum quidem sunt maxime.: Rerum sed et.
                        Similique pariatur necessitatibus.: Expedita dolor molestiae.
                    additionalProperties:
                        type: string
                        example: Assumenda dolor qui ipsa doloribus expedita expedita.
                resource_name:
                    type: string
                    example: Molestias enim ut.
            description: Operator-declared render-only Windows GPU contract; driver version is required configuration, not observed guest readiness
            example:
                count: 5942981717994704409
                display_name: Eveniet non possimus porro dicta dolores.
                experimental: false
                guest_driver_version: Voluptatem libero consectetur ratione nostrum ipsam.
                id: Error sed eum aliquid veritatis natus.
                kind: pci
                node_selector:
                    Eos voluptas fuga aut autem enim accusantium.: Delectus cupiditate harum.
                    Non quo.: Molestiae est sed qui cupiditate iste eum.
                resource_name: Ab qui omnis omnis.
            required:
                - id
                - display_name
                - resource_name
                - kind
                - count
                - node_selector
                - guest_driver_version
                - experimental
        VMOptions:
            type: object
            properties:
                gpu_profile:
                    type: string
                    description: Versioned operator-approved VM GPU profile ID; omitted/empty keeps software graphics
                    example: zh1
                    maxLength: 63
                import_cert_config_map_name:
                    type: string
                    description: Same-namespace registry CA ConfigMap
                    example: Voluptatem voluptatum aut doloremque qui.
                import_secret_name:
                    type: string
                    description: Same-namespace CDI accessKeyId/secretKey Secret
                    example: Et eum voluptate harum.
                root_disk_size:
                    type: string
                    description: Persistent Windows root capacity, at least 80Gi
                    example: In distinctio nihil.
                storage_class_name:
                    type: string
                    description: Persistent root StorageClass; empty uses cluster default
                    example: Exercitationem deserunt laudantium aspernatur deserunt sint.
            description: Namespaced Windows root import settings; credentials remain in Kubernetes Secrets
            example:
                gpu_profile: obk
                import_cert_config_map_name: Quia vitae saepe recusandae.
                import_secret_name: Doloremque necessitatibus ipsa dignissimos dolores quas sed.
                root_disk_size: Ducimus amet explicabo.
                storage_class_name: Possimus dolorem vel quasi et optio.
        Volume:
            type: object
            properties:
                access_mode:
                    type: string
                    description: Access mode
                    example: ReadWriteOnce
                created_at:
                    type: string
                    description: Creation timestamp
                    example: "2025-01-02T15:04:05Z"
                labels:
                    type: object
                    description: Kubernetes labels on the PVC
                    example:
                        managed-by: kube-workspaces
                        workspace: my-workspace
                    additionalProperties:
                        type: string
                        example: Et aut eum.
                name:
                    type: string
                    description: PVC name
                    example: my-workspace-data
                namespace:
                    type: string
                    description: Kubernetes namespace
                    example: workspaces
                phase:
                    type: string
                    description: PVC phase (Bound, Pending, etc.)
                    example: Bound
                size:
                    type: string
                    description: Storage size
                    example: 10Gi
                storage_class:
                    type: string
                    description: Storage class
                    example: standard
                type:
                    type: string
                    description: 'Volume type: pvc or vm-disk'
                    default: pvc
                    example: pvc
                    enum:
                        - pvc
                        - vm-disk
            description: A persistent volume claim
            example:
                access_mode: ReadWriteOnce
                created_at: "2025-01-02T15:04:05Z"
                labels:
                    managed-by: kube-workspaces
                    workspace: my-workspace
                name: my-workspace-data
                namespace: workspaces
                phase: Bound
                size: 10Gi
                storage_class: standard
                type: vm-disk
            required:
                - name
                - namespace
                - size
                - phase
        VolumeMount:
            type: object
            properties:
                bus:
                    type: string
                    description: Disk bus type for VMs when type is 'cdrom' (e.g. 'sata', 'ide'). Ignored for 'disk' type.
                    example: sata
                    enum:
                        - sata
                        - ide
                        - virtio
                        - scsi
                        - usb
                mount_path:
                    type: string
                    description: Mount path in container
                    example: /home/coder
                name:
                    type: string
                    description: Volume/PVC name
                    example: my-workspace-data
                readonly:
                    type: boolean
                    description: Whether the mount is read-only. Omitted defaults to writable for container PVCs and VM data disks, and read-only for VM CD-ROMs.
                    example: true
                type:
                    type: string
                    description: 'Volume mount type for VMs: ''disk'' (virtio disk) or ''cdrom'' (optical disc). Empty/omitted defaults to ''disk'' for VM volume mounts.'
                    example: disk
                    enum:
                        - disk
                        - cdrom
            description: Container PVC mount, or reusable CDI VM data disk with an absolute guest mount path
            example:
                bus: sata
                mount_path: /home/coder
                name: my-workspace-data
                readonly: true
                type: disk
            required:
                - name
                - mount_path
        Workspace:
            type: object
            properties:
                conditions:
                    type: array
                    items:
                        $ref: '#/components/schemas/WorkspaceCondition'
                    description: Workspace conditions
                    example:
                        - last_transition_time: "2025-01-02T15:04:05Z"
                          message: StatefulSet my-workspace is available
                          reason: MinimumReplicasAvailable
                          status: "True"
                          type: Ready
                container_state:
                    $ref: '#/components/schemas/ContainerState'
                cpu_limit:
                    type: string
                    description: CPU limit
                    example: "1"
                cpu_request:
                    type: string
                    description: CPU request
                    example: 500m
                created_at:
                    type: string
                    description: Creation timestamp
                    example: "2025-01-02T15:04:05Z"
                image:
                    type: string
                    description: Container image
                    example: codercom/code-server:latest
                memory_limit:
                    type: string
                    description: Memory limit
                    example: 2Gi
                memory_request:
                    type: string
                    description: Memory request
                    example: 512Mi
                name:
                    type: string
                    description: Workspace name
                    example: my-workspace
                namespace:
                    type: string
                    description: Kubernetes namespace
                    example: workspaces
                port:
                    type: integer
                    description: Container port
                    example: 8080
                    format: int64
                provisioned:
                    type: boolean
                    description: Windows native setup and bootstrap removal have completed
                    example: false
                ready_replicas:
                    type: integer
                    description: Number of ready replicas
                    example: 1
                    format: int64
                remote_desktop:
                    $ref: '#/components/schemas/ImageRemoteDesktop'
                stopped:
                    type: boolean
                    description: Whether the workspace is stopped
                    example: false
                type:
                    type: string
                    description: 'Workspace type: container, vm, or scratch'
                    default: container
                    example: container
                    enum:
                        - container
                        - vm
                        - scratch
                vm_gpu_profile:
                    $ref: '#/components/schemas/VMGPUProfile'
                vm_profile:
                    type: string
                    description: Resolved guest profile; windows11-amd64-v1 uses display-only native provisioning
                    example: Atque quidem veniam perferendis perspiciatis voluptas.
                volume_mounts:
                    type: array
                    items:
                        $ref: '#/components/schemas/VolumeMount'
                    description: Attached volumes
                    example:
                        - mount_path: /home/coder
                          name: my-workspace-data
            description: A workspace resource
            example:
                conditions:
                    - last_transition_time: "2025-01-02T15:04:05Z"
                      message: StatefulSet my-workspace is available
                      reason: MinimumReplicasAvailable
                      status: "True"
                      type: Ready
                container_state:
                    message: Container started successfully
                    reason: Started
                    started_at: "2025-01-02T15:04:05Z"
                    state: running
                cpu_limit: "1"
                cpu_request: 500m
                created_at: "2025-01-02T15:04:05Z"
                image: codercom/code-server:latest
                memory_limit: 2Gi
                memory_request: 512Mi
                name: my-workspace
                namespace: workspaces
                port: 8080
                provisioned: true
                ready_replicas: 1
                remote_desktop:
                    path: /
                    port: 8080
                    protocol: agent
                stopped: false
                type: container
                vm_gpu_profile:
                    count: 8415295335791754653
                    display_name: Et impedit dicta quo et perferendis qui.
                    experimental: false
                    guest_driver_version: Vero quis.
                    id: Esse consequatur.
                    kind: pci
                    node_selector:
                        Sapiente sit ut at.: Est voluptas et voluptates et.
                        Sequi iusto excepturi itaque officiis et est.: Voluptates voluptatem nobis ut.
                    resource_name: Dolor et voluptas quis eum.
                vm_profile: Neque in debitis.
                volume_mounts:
                    - mount_path: /home/coder
                      name: my-workspace-data
            required:
                - name
                - namespace
                - image
                - type
                - ready_replicas
                - stopped
        WorkspaceCondition:
            type: object
            properties:
                last_transition_time:
                    type: string
                    description: Last transition time
                    example: "2025-01-02T15:04:05Z"
                message:
                    type: string
                    description: Detailed message
                    example: StatefulSet my-workspace is available
                reason:
                    type: string
                    description: Brief reason
                    example: MinimumReplicasAvailable
                status:
                    type: string
                    description: Condition status
                    example: "True"
                type:
                    type: string
                    description: Condition type
                    example: Ready
            description: Condition of a workspace
            example:
                last_transition_time: "2025-01-02T15:04:05Z"
                message: StatefulSet my-workspace is available
                reason: MinimumReplicasAvailable
                status: "True"
                type: Ready
        WorkspaceContainer:
            type: object
            properties:
                cpu_limit:
                    type: string
                    description: CPU limit
                    default: "2"
                    example: "2"
                cpu_request:
                    type: string
                    description: CPU request
                    default: 500m
                    example: 500m
                gpu_request:
                    type: string
                    description: GPU resource request count (e.g. "1")
                    example: "1"
                gpu_vendor:
                    type: string
                    description: GPU vendor resource name (e.g. nvidia.com/gpu, amd.com/gpu)
                    default: nvidia.com/gpu
                    example: nvidia.com/gpu
                image:
                    type: string
                    description: Container image
                    example: codercom/code-server:latest
                memory_limit:
                    type: string
                    description: Memory limit
                    default: 2Gi
                    example: 2Gi
                memory_request:
                    type: string
                    description: Memory request
                    default: 512Mi
                    example: 512Mi
                name:
                    type: string
                    description: Container name
                    example: code-server
                port:
                    type: integer
                    description: Container port
                    default: 8080
                    example: 8080
                    format: int64
            description: Container specification for a workspace
            example:
                cpu_limit: "2"
                cpu_request: 500m
                gpu_request: "1"
                gpu_vendor: nvidia.com/gpu
                image: codercom/code-server:latest
                memory_limit: 2Gi
                memory_request: 512Mi
                name: code-server
                port: 8080
            required:
                - name
                - image
        WorkspaceInitialCredentials:
            type: object
            properties:
                cache_control:
                    type: string
                    example: Quisquam repudiandae.
                password:
                    type: string
                    example: Natus quia qui ratione dolor quia.
                username:
                    type: string
                    example: Ut eveniet dolores ex repellendus aut.
            description: Per-workspace initial Windows account, visible only to namespace editors/admins
            example:
                cache_control: Laudantium aut temporibus omnis.
                password: Deleniti consequatur necessitatibus.
                username: Incidunt aut eos dolorum et.
            required:
                - username
                - password
                - cache_control
        WorkspaceInitialCredentials2:
            type: object
            properties:
                password:
                    type: string
                    example: In maiores occaecati dolores velit.
                username:
                    type: string
                    example: Autem officia architecto praesentium aut cupiditate voluptas.
            example:
                password: Et quibusdam molestiae autem repudiandae nostrum doloribus.
                username: Expedita quam totam itaque nam asperiores.
            required:
                - username
                - password
tags:
    - name: agentupgrades
      description: 'Administrator-only agent upgrade admission: availability, start, status, cancel and rollback'
    - name: executions
      description: Scoped execution management status, history and protected recording replay
    - name: workspaces
      description: Workspace management service
    - name: volumes
      description: Volume (PVC) management service
    - name: sshkeys
      description: SSH public key management service
    - name: images
      description: Available workspace images
    - name: namespaces
      description: Namespace management
    - name: health
      description: Health check service
    - name: display
      description: 'Shared display session membership and control: one controller plus view-only observers per VM desktop'
    - name: agent
      description: 'Workspace guest agent sessions: short-lived attach tickets with renew/release for the proxy bridge'
