{"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/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":"U2VxdWkgc2l0Lg==","stdout":"UmVwZWxsYXQgbWFnbmkgYWxpcXVhbSBlb3MgZG9sb3JlcyB2b2x1cHRhdGVtIGRvbG9yLg==","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/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":"RG9sb3JlbSBleGVyY2l0YXRpb25lbSBlbmltLg==","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/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/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-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/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":"T2ZmaWNpaXMgcHJhZXNlbnRpdW0gYWNjdXNhbXVzIHBlcmZlcmVuZGlzIHJlcnVtLg==","format":"binary"},"stdout":{"type":"string","description":"Standard output, truncated to the pilot output bound","example":"U2ludCBzaXQgYXQgcG9zc2ltdXMu","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":"T21uaXMgZGVsZW5pdGkgY29ycnVwdGkgcXVvcyB2b2x1cHRhdHVtIGV4ZXJjaXRhdGlvbmVtIHZvbHVwdGF0aWJ1cy4=","stdout":"RG9sb3JpYnVzIHNpdC4=","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":"UXVpcyBldCBhbWV0IGZhY2lsaXMgZG9sb3Igbm9iaXMgcmVydW0u","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":"RXQgZW9zIHF1byBwb3NzaW11cy4=","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 \u003cbase\u003e 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"}]}