openapi: 3.0.3 info: description: Coderd is the service created by running coder server. It is a thin API that connects workspaces, provisioners and users. coderd stores its state in Postgres and is the only service that communicates with Postgres. title: Coder Agents API termsOfService: https://coder.com/legal/terms-of-service contact: name: API Support url: https://coder.com email: support@coder.com license: name: AGPL-3.0 url: https://github.com/coder/coder/blob/main/LICENSE version: '2.0' servers: - url: https://{coderHost}/api/v2 description: Coder instance variables: coderHost: default: coder.example.com description: Your Coder deployment hostname security: - CoderSessionToken: [] tags: - name: Agents paths: /api/v2/debug/{user}/debug-link: get: operationId: debug-oidc-context-for-a-user summary: Debug OIDC context for a user tags: - Agents security: - CoderSessionToken: [] parameters: - name: user in: path required: true description: User ID, name, or me schema: type: string responses: '200': description: Success /api/v2/derp-map: get: operationId: get-derp-map-updates summary: Get DERP map updates tags: - Agents security: - CoderSessionToken: [] responses: '101': description: Switching Protocols /api/v2/tailnet: get: operationId: user-scoped-tailnet-rpc-connection summary: User-scoped tailnet RPC connection tags: - Agents security: - CoderSessionToken: [] responses: '101': description: Switching Protocols /api/v2/workspaceagents/aws-instance-identity: post: operationId: authenticate-agent-on-aws-instance summary: Authenticate agent on AWS instance tags: - Agents security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/agentsdk.AWSInstanceIdentityToken' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/agentsdk.AuthenticateResponse' /api/v2/workspaceagents/azure-instance-identity: post: operationId: authenticate-agent-on-azure-instance summary: Authenticate agent on Azure instance tags: - Agents security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/agentsdk.AzureInstanceIdentityToken' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/agentsdk.AuthenticateResponse' /api/v2/workspaceagents/connection: get: operationId: get-connection-info-for-workspace-agent-generic summary: Get connection info for workspace agent generic tags: - Agents security: - CoderSessionToken: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/workspacesdk.AgentConnectionInfo' /api/v2/workspaceagents/google-instance-identity: post: operationId: authenticate-agent-on-google-cloud-instance summary: Authenticate agent on Google Cloud instance tags: - Agents security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/agentsdk.GoogleInstanceIdentityToken' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/agentsdk.AuthenticateResponse' /api/v2/workspaceagents/me/app-status: patch: operationId: patch-workspace-agent-app-status summary: Patch workspace agent app status tags: - Agents security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/agentsdk.PatchAppStatus' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.Response' /api/v2/workspaceagents/me/external-auth: get: operationId: get-workspace-agent-external-auth summary: Get workspace agent external auth tags: - Agents security: - CoderSessionToken: [] parameters: - name: match in: query required: true description: Match schema: type: string - name: id in: query required: true description: Provider ID schema: type: string - name: listen in: query required: false description: Wait for a new token to be issued schema: type: boolean responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/agentsdk.ExternalAuthResponse' /api/v2/workspaceagents/me/gitauth: get: operationId: removed-get-workspace-agent-git-auth summary: 'Removed: Get workspace agent git auth' tags: - Agents security: - CoderSessionToken: [] parameters: - name: match in: query required: true description: Match schema: type: string - name: id in: query required: true description: Provider ID schema: type: string - name: listen in: query required: false description: Wait for a new token to be issued schema: type: boolean responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/agentsdk.ExternalAuthResponse' /api/v2/workspaceagents/me/gitsshkey: get: operationId: get-workspace-agent-git-ssh-key summary: Get workspace agent Git SSH key tags: - Agents security: - CoderSessionToken: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/agentsdk.GitSSHKey' /api/v2/workspaceagents/me/log-source: post: operationId: post-workspace-agent-log-source summary: Post workspace agent log source tags: - Agents security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/agentsdk.PostLogSourceRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.WorkspaceAgentLogSource' /api/v2/workspaceagents/me/logs: patch: operationId: patch-workspace-agent-logs summary: Patch workspace agent logs tags: - Agents security: - CoderSessionToken: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/agentsdk.PatchLogs' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.Response' /api/v2/workspaceagents/me/reinit: get: operationId: get-workspace-agent-reinitialization summary: Get workspace agent reinitialization tags: - Agents security: - CoderSessionToken: [] parameters: - name: wait in: query required: false description: Opt in to durable reinit checks schema: type: boolean responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/agentsdk.ReinitializationEvent' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/codersdk.Response' /api/v2/workspaceagents/me/rpc: get: operationId: workspace-agent-rpc-api summary: Workspace agent RPC API tags: - Agents security: - CoderSessionToken: [] responses: '101': description: Switching Protocols /api/v2/workspaceagents/{workspaceagent}: get: operationId: get-workspace-agent-by-id summary: Get workspace agent by ID tags: - Agents security: - CoderSessionToken: [] parameters: - name: workspaceagent in: path required: true description: Workspace agent ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.WorkspaceAgent' /api/v2/workspaceagents/{workspaceagent}/connection: get: operationId: get-connection-info-for-workspace-agent summary: Get connection info for workspace agent tags: - Agents security: - CoderSessionToken: [] parameters: - name: workspaceagent in: path required: true description: Workspace agent ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/workspacesdk.AgentConnectionInfo' /api/v2/workspaceagents/{workspaceagent}/containers: get: operationId: get-running-containers-for-workspace-agent summary: Get running containers for workspace agent tags: - Agents security: - CoderSessionToken: [] parameters: - name: workspaceagent in: path required: true description: Workspace agent ID schema: type: string - name: label in: query required: true description: Labels schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.WorkspaceAgentListContainersResponse' /api/v2/workspaceagents/{workspaceagent}/containers/devcontainers/{devcontainer}: delete: operationId: delete-devcontainer-for-workspace-agent summary: Delete devcontainer for workspace agent tags: - Agents security: - CoderSessionToken: [] parameters: - name: workspaceagent in: path required: true description: Workspace agent ID schema: type: string - name: devcontainer in: path required: true description: Devcontainer ID schema: type: string responses: '204': description: No Content /api/v2/workspaceagents/{workspaceagent}/containers/devcontainers/{devcontainer}/recreate: post: operationId: recreate-devcontainer-for-workspace-agent summary: Recreate devcontainer for workspace agent tags: - Agents security: - CoderSessionToken: [] parameters: - name: workspaceagent in: path required: true description: Workspace agent ID schema: type: string - name: devcontainer in: path required: true description: Devcontainer ID schema: type: string responses: '202': description: Accepted content: application/json: schema: $ref: '#/components/schemas/codersdk.Response' /api/v2/workspaceagents/{workspaceagent}/containers/watch: get: operationId: watch-workspace-agent-for-container-updates summary: Watch workspace agent for container updates. tags: - Agents security: - CoderSessionToken: [] parameters: - name: workspaceagent in: path required: true description: Workspace agent ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.WorkspaceAgentListContainersResponse' /api/v2/workspaceagents/{workspaceagent}/coordinate: get: operationId: coordinate-workspace-agent summary: Coordinate workspace agent tags: - Agents security: - CoderSessionToken: [] parameters: - name: workspaceagent in: path required: true description: Workspace agent ID schema: type: string responses: '101': description: Switching Protocols /api/v2/workspaceagents/{workspaceagent}/listening-ports: get: operationId: get-listening-ports-for-workspace-agent summary: Get listening ports for workspace agent tags: - Agents security: - CoderSessionToken: [] parameters: - name: workspaceagent in: path required: true description: Workspace agent ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.WorkspaceAgentListeningPortsResponse' /api/v2/workspaceagents/{workspaceagent}/logs: get: operationId: get-logs-by-workspace-agent summary: Get logs by workspace agent tags: - Agents security: - CoderSessionToken: [] parameters: - name: workspaceagent in: path required: true description: Workspace agent ID schema: type: string - name: before in: query required: false description: Before log id schema: type: integer - name: after in: query required: false description: After log id schema: type: integer - name: follow in: query required: false description: Follow log stream schema: type: boolean - name: no_compression in: query required: false description: Disable compression for WebSocket connection schema: type: boolean - name: format in: query required: false description: 'Log output format. Accepted: ''json'' (default), ''text'' (plain text with RFC3339 timestamps and ANSI colors). Not supported with follow=true.' schema: type: string enum: - json - text responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.WorkspaceAgentLog' /api/v2/workspaceagents/{workspaceagent}/pty: get: operationId: open-pty-to-workspace-agent summary: Open PTY to workspace agent tags: - Agents security: - CoderSessionToken: [] parameters: - name: workspaceagent in: path required: true description: Workspace agent ID schema: type: string responses: '101': description: Switching Protocols /api/v2/workspaceagents/{workspaceagent}/startup-logs: get: operationId: removed-get-logs-by-workspace-agent summary: 'Removed: Get logs by workspace agent' tags: - Agents security: - CoderSessionToken: [] parameters: - name: workspaceagent in: path required: true description: Workspace agent ID schema: type: string - name: before in: query required: false description: Before log id schema: type: integer - name: after in: query required: false description: After log id schema: type: integer - name: follow in: query required: false description: Follow log stream schema: type: boolean - name: no_compression in: query required: false description: Disable compression for WebSocket connection schema: type: boolean responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/codersdk.WorkspaceAgentLog' /api/v2/workspaceagents/{workspaceagent}/watch-metadata: get: operationId: watch-for-workspace-agent-metadata-updates summary: Watch for workspace agent metadata updates tags: - Agents security: - CoderSessionToken: [] parameters: - name: workspaceagent in: path required: true description: Workspace agent ID schema: type: string responses: '200': description: Success /api/v2/workspaceagents/{workspaceagent}/watch-metadata-ws: get: operationId: watch-for-workspace-agent-metadata-updates-via-websockets summary: Watch for workspace agent metadata updates via WebSockets tags: - Agents security: - CoderSessionToken: [] parameters: - name: workspaceagent in: path required: true description: Workspace agent ID schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/codersdk.ServerSentEvent' components: schemas: codersdk.WorkspaceAgentLog: type: object properties: created_at: type: string format: date-time id: type: integer level: $ref: '#/components/schemas/codersdk.LogLevel' output: type: string source_id: type: string format: uuid agentsdk.AuthenticateResponse: type: object properties: session_token: type: string codersdk.WorkspaceAgentListeningPort: type: object properties: network: type: string description: only "tcp" at the moment port: type: integer process_name: type: string description: may be empty codersdk.AgentSubsystem: type: string enum: - envbox - envbuilder - exectrace codersdk.WorkspaceAgentListContainersResponse: type: object properties: containers: type: array description: Containers is a list of containers visible to the workspace agent. items: $ref: '#/components/schemas/codersdk.WorkspaceAgentContainer' devcontainers: type: array description: Devcontainers is a list of devcontainers visible to the workspace agent. items: $ref: '#/components/schemas/codersdk.WorkspaceAgentDevcontainer' warnings: type: array description: 'Warnings is a list of warnings that may have occurred during the process of listing containers. This should not include fatal errors.' items: type: string codersdk.DisplayApp: type: string enum: - vscode - vscode_insiders - web_terminal - port_forwarding_helper - ssh_helper codersdk.WorkspaceAgentHealth: type: object properties: healthy: type: boolean description: Healthy is true if the agent is healthy. example: false reason: type: string description: Reason is a human-readable explanation of the agent's health. It is empty if Healthy is true. example: agent has lost connection agentsdk.GitSSHKey: type: object properties: private_key: type: string public_key: type: string uuid.NullUUID: type: object properties: uuid: type: string valid: type: boolean description: Valid is true if UUID is not NULL codersdk.ServerSentEvent: type: object properties: data: {} type: $ref: '#/components/schemas/codersdk.ServerSentEventType' agentsdk.PatchAppStatus: type: object properties: app_slug: type: string icon: type: string description: 'Deprecated: this field is unused and will be removed in a future version.' message: type: string needs_user_attention: type: boolean description: 'Deprecated: this field is unused and will be removed in a future version.' state: $ref: '#/components/schemas/codersdk.WorkspaceAppStatusState' uri: type: string codersdk.DERPRegion: type: object properties: latency_ms: type: number preferred: type: boolean agentsdk.PatchLogs: type: object properties: log_source_id: type: string logs: type: array items: $ref: '#/components/schemas/agentsdk.Log' codersdk.LogLevel: type: string enum: - trace - debug - info - warn - error codersdk.WorkspaceAgentDevcontainerStatus: type: string enum: - running - stopped - starting - stopping - deleting - error tailcfg.DERPHomeParams: type: object properties: regionScore: type: object description: 'RegionScore scales latencies of DERP regions by a given scaling factor when determining which region to use as the home ("preferred") DERP. Scores in the range (0, 1) will cause this region to be proportionally more preferred, and scores in the range (1, ∞) will penalize a region. If a region is not present in this map, it is treated as having a score of 1.0. Scores should not be 0 or negative; such scores will be ignored. A nil map means no change from the previous value (if any); an empty non-nil map can be sent to reset all scores back to 1.0.' additionalProperties: type: number format: float64 tailcfg.DERPMap: type: object properties: homeParams: description: 'HomeParams, if non-nil, is a change in home parameters. The rest of the DEPRMap fields, if zero, means unchanged.' allOf: - $ref: '#/components/schemas/tailcfg.DERPHomeParams' omitDefaultRegions: type: boolean description: 'OmitDefaultRegions specifies to not use Tailscale''s DERP servers, and only use those specified in this DERPMap. If there are none set outside of the defaults, this is a noop. This field is only meaningful if the Regions map is non-nil (indicating a change).' regions: type: object description: 'Regions is the set of geographic regions running DERP node(s). It''s keyed by the DERPRegion.RegionID. The numbers are not necessarily contiguous.' additionalProperties: $ref: '#/components/schemas/tailcfg.DERPRegion' codersdk.WorkspaceAgentScriptStatus: type: string enum: - ok - exit_failure - timed_out - pipes_left_open codersdk.WorkspaceAgentStartupScriptBehavior: type: string enum: - blocking - non-blocking workspacesdk.AgentConnectionInfo: type: object properties: derp_force_websockets: type: boolean derp_map: $ref: '#/components/schemas/tailcfg.DERPMap' disable_direct_connections: type: boolean hostname_suffix: type: string codersdk.WorkspaceAgentDevcontainerAgent: type: object properties: directory: type: string id: type: string format: uuid name: type: string agentsdk.AzureInstanceIdentityToken: type: object properties: agent_name: type: string description: 'AgentName optionally selects a specific agent when multiple agents share the same instance identity. An empty string is treated as unspecified.' encoding: type: string signature: type: string required: - encoding - signature agentsdk.ExternalAuthResponse: type: object properties: access_token: type: string password: type: string token_extra: type: object additionalProperties: true type: type: string url: type: string username: type: string description: 'Deprecated: Only supported on `/workspaceagents/me/gitauth` for backwards compatibility.' codersdk.WorkspaceApp: type: object properties: command: type: string display_name: type: string description: DisplayName is a friendly name for the app. external: type: boolean description: 'External specifies whether the URL should be opened externally on the client or not.' group: type: string health: $ref: '#/components/schemas/codersdk.WorkspaceAppHealth' healthcheck: description: Healthcheck specifies the configuration for checking app health. allOf: - $ref: '#/components/schemas/codersdk.Healthcheck' hidden: type: boolean icon: type: string description: 'Icon is a relative path or external URL that specifies an icon to be displayed in the dashboard.' id: type: string format: uuid open_in: $ref: '#/components/schemas/codersdk.WorkspaceAppOpenIn' sharing_level: enum: - owner - authenticated - organization - public allOf: - $ref: '#/components/schemas/codersdk.WorkspaceAppSharingLevel' slug: type: string description: Slug is a unique identifier within the agent. statuses: type: array description: Statuses is a list of statuses for the app. items: $ref: '#/components/schemas/codersdk.WorkspaceAppStatus' subdomain: type: boolean description: 'Subdomain denotes whether the app should be accessed via a path on the `coder server` or via a hostname-based dev URL. If this is set to true and there is no app wildcard configured on the server, the app will not be accessible in the UI.' subdomain_name: type: string description: SubdomainName is the application domain exposed on the `coder server`. tooltip: type: string description: 'Tooltip is an optional markdown supported field that is displayed when hovering over workspace apps in the UI.' url: type: string description: 'URL is the address being proxied to inside the workspace. If external is specified, this will be opened on the client.' codersdk.WorkspaceAgentLifecycle: type: string enum: - created - starting - start_timeout - start_error - ready - shutting_down - shutdown_timeout - shutdown_error - 'off' codersdk.WorkspaceAppStatusState: type: string enum: - working - idle - complete - failure codersdk.WorkspaceAppStatus: type: object properties: agent_id: type: string format: uuid app_id: type: string format: uuid created_at: type: string format: date-time icon: type: string description: 'Deprecated: This field is unused and will be removed in a future version. Icon is an external URL to an icon that will be rendered in the UI.' id: type: string format: uuid message: type: string needs_user_attention: type: boolean description: 'Deprecated: This field is unused and will be removed in a future version. NeedsUserAttention specifies whether the status needs user attention.' state: $ref: '#/components/schemas/codersdk.WorkspaceAppStatusState' uri: type: string description: 'URI is the URI of the resource that the status is for. e.g. https://github.com/org/repo/pull/123 e.g. file:///path/to/file' workspace_id: type: string format: uuid codersdk.WorkspaceAgentContainerPort: type: object properties: host_ip: type: string description: 'HostIP is the IP address of the host interface to which the port is bound. Note that this can be an IPv4 or IPv6 address.' host_port: type: integer description: HostPort is the port number *outside* the container. network: type: string description: Network is the network protocol used by the port (tcp, udp, etc). port: type: integer description: Port is the port number *inside* the container. agentsdk.Log: type: object properties: created_at: type: string level: $ref: '#/components/schemas/codersdk.LogLevel' output: type: string codersdk.Response: type: object properties: detail: type: string description: 'Detail is a debug message that provides further insight into why the action failed. This information can be technical and a regular golang err.Error() text. - "database: too many open connections" - "stat: too many open files"' message: type: string description: 'Message is an actionable message that depicts actions the request took. These messages should be fully formed sentences with proper punctuation. Examples: - "A user has been created." - "Failed to create a user."' validations: type: array description: 'Validations are form field-specific friendly error messages. They will be shown on a form field in the UI. These can also be used to add additional context if there is a set of errors in the primary ''Message''.' items: $ref: '#/components/schemas/codersdk.ValidationError' codersdk.WorkspaceAgent: type: object properties: api_version: type: string apps: type: array items: $ref: '#/components/schemas/codersdk.WorkspaceApp' architecture: type: string connection_timeout_seconds: type: integer created_at: type: string format: date-time directory: type: string disconnected_at: type: string format: date-time display_apps: type: array items: $ref: '#/components/schemas/codersdk.DisplayApp' environment_variables: type: object additionalProperties: type: string expanded_directory: type: string first_connected_at: type: string format: date-time health: description: Health reports the health of the agent. allOf: - $ref: '#/components/schemas/codersdk.WorkspaceAgentHealth' id: type: string format: uuid instance_id: type: string last_connected_at: type: string format: date-time latency: type: object description: DERPLatency is mapped by region name (e.g. "New York City", "Seattle"). additionalProperties: $ref: '#/components/schemas/codersdk.DERPRegion' lifecycle_state: $ref: '#/components/schemas/codersdk.WorkspaceAgentLifecycle' log_sources: type: array items: $ref: '#/components/schemas/codersdk.WorkspaceAgentLogSource' logs_length: type: integer logs_overflowed: type: boolean name: type: string operating_system: type: string parent_id: format: uuid allOf: - $ref: '#/components/schemas/uuid.NullUUID' ready_at: type: string format: date-time resource_id: type: string format: uuid scripts: type: array items: $ref: '#/components/schemas/codersdk.WorkspaceAgentScript' started_at: type: string format: date-time startup_script_behavior: description: 'StartupScriptBehavior is a legacy field that is deprecated in favor of the `coder_script` resource. It''s only referenced by old clients. Deprecated: Remove in the future!' allOf: - $ref: '#/components/schemas/codersdk.WorkspaceAgentStartupScriptBehavior' status: $ref: '#/components/schemas/codersdk.WorkspaceAgentStatus' subsystems: type: array items: $ref: '#/components/schemas/codersdk.AgentSubsystem' troubleshooting_url: type: string updated_at: type: string format: date-time version: type: string codersdk.WorkspaceAppHealth: type: string enum: - disabled - initializing - healthy - unhealthy codersdk.WorkspaceAgentScript: type: object properties: cron: type: string display_name: type: string exit_code: type: integer id: type: string format: uuid log_path: type: string log_source_id: type: string format: uuid run_on_start: type: boolean run_on_stop: type: boolean script: type: string start_blocks_login: type: boolean status: $ref: '#/components/schemas/codersdk.WorkspaceAgentScriptStatus' timeout: type: integer codersdk.WorkspaceAgentStatus: type: string enum: - connecting - connected - disconnected - timeout codersdk.WorkspaceAppSharingLevel: type: string enum: - owner - authenticated - organization - public codersdk.WorkspaceAgentContainer: type: object properties: created_at: type: string format: date-time description: CreatedAt is the time the container was created. id: type: string description: ID is the unique identifier of the container. image: type: string description: Image is the name of the container image. labels: type: object description: Labels is a map of key-value pairs of container labels. additionalProperties: type: string name: type: string description: FriendlyName is the human-readable name of the container. ports: type: array description: Ports includes ports exposed by the container. items: $ref: '#/components/schemas/codersdk.WorkspaceAgentContainerPort' running: type: boolean description: Running is true if the container is currently running. status: type: string description: 'Status is the current status of the container. This is somewhat implementation-dependent, but should generally be a human-readable string.' volumes: type: object description: 'Volumes is a map of "things" mounted into the container. Again, this is somewhat implementation-dependent.' additionalProperties: type: string codersdk.ServerSentEventType: type: string enum: - ping - data - error codersdk.WorkspaceAppOpenIn: type: string enum: - slim-window - tab codersdk.WorkspaceAgentLogSource: type: object properties: created_at: type: string format: date-time display_name: type: string icon: type: string id: type: string format: uuid workspace_agent_id: type: string format: uuid agentsdk.ReinitializationReason: type: string enum: - prebuild_claimed codersdk.WorkspaceAgentDevcontainer: type: object properties: agent: $ref: '#/components/schemas/codersdk.WorkspaceAgentDevcontainerAgent' config_path: type: string container: $ref: '#/components/schemas/codersdk.WorkspaceAgentContainer' dirty: type: boolean error: type: string id: type: string format: uuid name: type: string status: description: Additional runtime fields. allOf: - $ref: '#/components/schemas/codersdk.WorkspaceAgentDevcontainerStatus' subagent_id: format: uuid allOf: - $ref: '#/components/schemas/uuid.NullUUID' workspace_folder: type: string tailcfg.DERPRegion: type: object properties: avoid: type: boolean description: 'Avoid is whether the client should avoid picking this as its home region. The region should only be used if a peer is there. Clients already using this region as their home should migrate away to a new region without Avoid set.' embeddedRelay: type: boolean description: 'EmbeddedRelay is true when the region is bundled with the Coder control plane.' nodes: type: array description: 'Nodes are the DERP nodes running in this region, in priority order for the current client. Client TLS connections should ideally only go to the first entry (falling back to the second if necessary). STUN packets should go to the first 1 or 2. If nodes within a region route packets amongst themselves, but not to other regions. That said, each user/domain should get a the same preferred node order, so if all nodes for a user/network pick the first one (as they should, when things are healthy), the inter-cluster routing is minimal to zero.' items: $ref: '#/components/schemas/tailcfg.DERPNode' regionCode: type: string description: 'RegionCode is a short name for the region. It''s usually a popular city or airport code in the region: "nyc", "sf", "sin", "fra", etc.' regionID: type: integer description: 'RegionID is a unique integer for a geographic region. It corresponds to the legacy derpN.tailscale.com hostnames used by older clients. (Older clients will continue to resolve derpN.tailscale.com when contacting peers, rather than use the server-provided DERPMap) RegionIDs must be non-zero, positive, and guaranteed to fit in a JavaScript number. RegionIDs in range 900-999 are reserved for end users to run their own DERP nodes.' regionName: type: string description: 'RegionName is a long English name for the region: "New York City", "San Francisco", "Singapore", "Frankfurt", etc.' codersdk.Healthcheck: type: object properties: interval: type: integer description: Interval specifies the seconds between each health check. threshold: type: integer description: Threshold specifies the number of consecutive failed health checks before returning "unhealthy". url: type: string description: URL specifies the endpoint to check for the app health. agentsdk.AWSInstanceIdentityToken: type: object properties: agent_name: type: string description: 'AgentName optionally selects a specific agent when multiple agents share the same instance identity. An empty string is treated as unspecified.' document: type: string signature: type: string required: - document - signature tailcfg.DERPNode: type: object properties: canPort80: type: boolean description: 'CanPort80 specifies whether this DERP node is accessible over HTTP on port 80 specifically. This is used for captive portal checks.' certName: type: string description: 'CertName optionally specifies the expected TLS cert common name. If empty, HostName is used. If CertName is non-empty, HostName is only used for the TCP dial (if IPv4/IPv6 are not present) + TLS ClientHello.' derpport: type: integer description: 'DERPPort optionally provides an alternate TLS port number for the DERP HTTPS server. If zero, 443 is used.' forceHTTP: type: boolean description: 'ForceHTTP is used by unit tests to force HTTP. It should not be set by users.' hostName: type: string description: 'HostName is the DERP node''s hostname. It is required but need not be unique; multiple nodes may have the same HostName but vary in configuration otherwise.' insecureForTests: type: boolean description: 'InsecureForTests is used by unit tests to disable TLS verification. It should not be set by users.' ipv4: type: string description: 'IPv4 optionally forces an IPv4 address to use, instead of using DNS. If empty, A record(s) from DNS lookups of HostName are used. If the string is not an IPv4 address, IPv4 is not used; the conventional string to disable IPv4 (and not use DNS) is "none".' ipv6: type: string description: 'IPv6 optionally forces an IPv6 address to use, instead of using DNS. If empty, AAAA record(s) from DNS lookups of HostName are used. If the string is not an IPv6 address, IPv6 is not used; the conventional string to disable IPv6 (and not use DNS) is "none".' name: type: string description: 'Name is a unique node name (across all regions). It is not a host name. It''s typically of the form "1b", "2a", "3b", etc. (region ID + suffix within that region)' regionID: type: integer description: 'RegionID is the RegionID of the DERPRegion that this node is running in.' stunonly: type: boolean description: 'STUNOnly marks a node as only a STUN server and not a DERP server.' stunport: type: integer description: 'Port optionally specifies a STUN port to use. Zero means 3478. To disable STUN on this node, use -1.' stuntestIP: type: string description: 'STUNTestIP is used in tests to override the STUN server''s IP. If empty, it''s assumed to be the same as the DERP server.' codersdk.ValidationError: type: object properties: detail: type: string field: type: string required: - detail - field agentsdk.ReinitializationEvent: type: object properties: owner_id: type: string format: uuid reason: $ref: '#/components/schemas/agentsdk.ReinitializationReason' workspace_id: type: string format: uuid codersdk.WorkspaceAgentListeningPortsResponse: type: object properties: ports: type: array description: 'If there are no ports in the list, nothing should be displayed in the UI. There must not be a "no ports available" message or anything similar, as there will always be no ports displayed on platforms where our port detection logic is unsupported.' items: $ref: '#/components/schemas/codersdk.WorkspaceAgentListeningPort' agentsdk.PostLogSourceRequest: type: object properties: display_name: type: string icon: type: string id: type: string description: 'ID is a unique identifier for the log source. It is scoped to a workspace agent, and can be statically defined inside code to prevent duplicate sources from being created for the same agent.' agentsdk.GoogleInstanceIdentityToken: type: object properties: agent_name: type: string description: 'AgentName optionally selects a specific agent when multiple agents share the same instance identity. An empty string is treated as unspecified.' json_web_token: type: string required: - json_web_token securitySchemes: CoderSessionToken: type: apiKey in: header name: Coder-Session-Token externalDocs: {}