{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://coder.com/schemas/codersdk-workspaceagent.json", "title": "WorkspaceAgent", "$defs": { "codersdk.AgentSubsystem": { "type": "string", "enum": [ "envbox", "envbuilder", "exectrace" ] }, "codersdk.DERPRegion": { "type": "object", "properties": { "latency_ms": { "type": "number" }, "preferred": { "type": "boolean" } } }, "codersdk.DisplayApp": { "type": "string", "enum": [ "vscode", "vscode_insiders", "web_terminal", "port_forwarding_helper", "ssh_helper" ] }, "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." } } }, "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" } } }, "codersdk.WorkspaceAgentLifecycle": { "type": "string", "enum": [ "created", "starting", "start_timeout", "start_error", "ready", "shutting_down", "shutdown_timeout", "shutdown_error", "off" ] }, "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" } } }, "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": "#/$defs/codersdk.WorkspaceAgentScriptStatus" }, "timeout": { "type": "integer" } } }, "codersdk.WorkspaceAgentScriptStatus": { "type": "string", "enum": [ "ok", "exit_failure", "timed_out", "pipes_left_open" ] }, "codersdk.WorkspaceAgentStartupScriptBehavior": { "type": "string", "enum": [ "blocking", "non-blocking" ] }, "codersdk.WorkspaceAgentStatus": { "type": "string", "enum": [ "connecting", "connected", "disconnected", "timeout" ] }, "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\nthe client or not." }, "group": { "type": "string" }, "health": { "$ref": "#/$defs/codersdk.WorkspaceAppHealth" }, "healthcheck": { "description": "Healthcheck specifies the configuration for checking app health.", "allOf": [ { "$ref": "#/$defs/codersdk.Healthcheck" } ] }, "hidden": { "type": "boolean" }, "icon": { "type": "string", "description": "Icon is a relative path or external URL that specifies\nan icon to be displayed in the dashboard." }, "id": { "type": "string", "format": "uuid" }, "open_in": { "$ref": "#/$defs/codersdk.WorkspaceAppOpenIn" }, "sharing_level": { "enum": [ "owner", "authenticated", "organization", "public" ], "allOf": [ { "$ref": "#/$defs/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": "#/$defs/codersdk.WorkspaceAppStatus" } }, "subdomain": { "type": "boolean", "description": "Subdomain denotes whether the app should be accessed via a path on the\n`coder server` or via a hostname-based dev URL. If this is set to true\nand there is no app wildcard configured on the server, the app will not\nbe 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\nwhen hovering over workspace apps in the UI." }, "url": { "type": "string", "description": "URL is the address being proxied to inside the workspace.\nIf external is specified, this will be opened on the client." } } }, "codersdk.WorkspaceAppHealth": { "type": "string", "enum": [ "disabled", "initializing", "healthy", "unhealthy" ] }, "codersdk.WorkspaceAppOpenIn": { "type": "string", "enum": [ "slim-window", "tab" ] }, "codersdk.WorkspaceAppSharingLevel": { "type": "string", "enum": [ "owner", "authenticated", "organization", "public" ] }, "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.\nIcon 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.\nNeedsUserAttention specifies whether the status needs user attention." }, "state": { "$ref": "#/$defs/codersdk.WorkspaceAppStatusState" }, "uri": { "type": "string", "description": "URI is the URI of the resource that the status is for.\ne.g. https://github.com/org/repo/pull/123\ne.g. file:///path/to/file" }, "workspace_id": { "type": "string", "format": "uuid" } } }, "codersdk.WorkspaceAppStatusState": { "type": "string", "enum": [ "working", "idle", "complete", "failure" ] }, "uuid.NullUUID": { "type": "object", "properties": { "uuid": { "type": "string" }, "valid": { "type": "boolean", "description": "Valid is true if UUID is not NULL" } } } }, "type": "object", "properties": { "api_version": { "type": "string" }, "apps": { "type": "array", "items": { "$ref": "#/$defs/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": "#/$defs/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": "#/$defs/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": "#/$defs/codersdk.DERPRegion" } }, "lifecycle_state": { "$ref": "#/$defs/codersdk.WorkspaceAgentLifecycle" }, "log_sources": { "type": "array", "items": { "$ref": "#/$defs/codersdk.WorkspaceAgentLogSource" } }, "logs_length": { "type": "integer" }, "logs_overflowed": { "type": "boolean" }, "name": { "type": "string" }, "operating_system": { "type": "string" }, "parent_id": { "format": "uuid", "allOf": [ { "$ref": "#/$defs/uuid.NullUUID" } ] }, "ready_at": { "type": "string", "format": "date-time" }, "resource_id": { "type": "string", "format": "uuid" }, "scripts": { "type": "array", "items": { "$ref": "#/$defs/codersdk.WorkspaceAgentScript" } }, "started_at": { "type": "string", "format": "date-time" }, "startup_script_behavior": { "description": "StartupScriptBehavior is a legacy field that is deprecated in favor\nof the `coder_script` resource. It's only referenced by old clients.\nDeprecated: Remove in the future!", "allOf": [ { "$ref": "#/$defs/codersdk.WorkspaceAgentStartupScriptBehavior" } ] }, "status": { "$ref": "#/$defs/codersdk.WorkspaceAgentStatus" }, "subsystems": { "type": "array", "items": { "$ref": "#/$defs/codersdk.AgentSubsystem" } }, "troubleshooting_url": { "type": "string" }, "updated_at": { "type": "string", "format": "date-time" }, "version": { "type": "string" } } }