Closes #14716 Closes #14717 Adds a new user-scoped tailnet API endpoint (`api/v2/tailnet`) with a new RPC stream for receiving updates on workspaces owned by a specific user, as defined in #14716. When a stream is started, the `WorkspaceUpdatesProvider` will begin listening on the user-scoped pubsub events implemented in #14964. When a relevant event type is seen (such as a workspace state transition), the provider will query the DB for all the workspaces (and agents) owned by the user. This gets compared against the result of the previous query to produce a set of workspace updates. Workspace updates can be requested for any user ID, however only workspaces the authorised user is permitted to `ActionRead` will have their updates streamed. Opening a tunnel to an agent requires that the user can perform `ActionSSH` against the workspace containing it.
27 KiB
Generated
Agents
Get DERP map updates
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/derp-map \
-H 'Coder-Session-Token: API_KEY'
GET /derp-map
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
101 | Switching Protocols | Switching Protocols |
To perform this operation, you must be authenticated. Learn more.
User-scoped tailnet RPC connection
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/tailnet \
-H 'Coder-Session-Token: API_KEY'
GET /tailnet
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
101 | Switching Protocols | Switching Protocols |
To perform this operation, you must be authenticated. Learn more.
Authenticate agent on AWS instance
Code samples
# Example request using curl
curl -X POST http://coder-server:8080/api/v2/workspaceagents/aws-instance-identity \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
POST /workspaceagents/aws-instance-identity
Body parameter
{
"document": "string",
"signature": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body |
body | agentsdk.AWSInstanceIdentityToken | true | Instance identity token |
Example responses
200 Response
{
"session_token": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | agentsdk.AuthenticateResponse |
To perform this operation, you must be authenticated. Learn more.
Authenticate agent on Azure instance
Code samples
# Example request using curl
curl -X POST http://coder-server:8080/api/v2/workspaceagents/azure-instance-identity \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
POST /workspaceagents/azure-instance-identity
Body parameter
{
"encoding": "string",
"signature": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body |
body | agentsdk.AzureInstanceIdentityToken | true | Instance identity token |
Example responses
200 Response
{
"session_token": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | agentsdk.AuthenticateResponse |
To perform this operation, you must be authenticated. Learn more.
Authenticate agent on Google Cloud instance
Code samples
# Example request using curl
curl -X POST http://coder-server:8080/api/v2/workspaceagents/google-instance-identity \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
POST /workspaceagents/google-instance-identity
Body parameter
{
"json_web_token": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body |
body | agentsdk.GoogleInstanceIdentityToken | true | Instance identity token |
Example responses
200 Response
{
"session_token": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | agentsdk.AuthenticateResponse |
To perform this operation, you must be authenticated. Learn more.
Get workspace agent external auth
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/workspaceagents/me/external-auth?match=string&id=string \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
GET /workspaceagents/me/external-auth
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
match |
query | string | true | Match |
id |
query | string | true | Provider ID |
listen |
query | boolean | false | Wait for a new token to be issued |
Example responses
200 Response
{
"access_token": "string",
"password": "string",
"token_extra": {},
"type": "string",
"url": "string",
"username": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | agentsdk.ExternalAuthResponse |
To perform this operation, you must be authenticated. Learn more.
Removed: Get workspace agent git auth
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/workspaceagents/me/gitauth?match=string&id=string \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
GET /workspaceagents/me/gitauth
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
match |
query | string | true | Match |
id |
query | string | true | Provider ID |
listen |
query | boolean | false | Wait for a new token to be issued |
Example responses
200 Response
{
"access_token": "string",
"password": "string",
"token_extra": {},
"type": "string",
"url": "string",
"username": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | agentsdk.ExternalAuthResponse |
To perform this operation, you must be authenticated. Learn more.
Get workspace agent Git SSH key
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/workspaceagents/me/gitsshkey \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
GET /workspaceagents/me/gitsshkey
Example responses
200 Response
{
"private_key": "string",
"public_key": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | agentsdk.GitSSHKey |
To perform this operation, you must be authenticated. Learn more.
Post workspace agent log source
Code samples
# Example request using curl
curl -X POST http://coder-server:8080/api/v2/workspaceagents/me/log-source \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
POST /workspaceagents/me/log-source
Body parameter
{
"display_name": "string",
"icon": "string",
"id": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body |
body | agentsdk.PostLogSourceRequest | true | Log source request |
Example responses
200 Response
{
"created_at": "2019-08-24T14:15:22Z",
"display_name": "string",
"icon": "string",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"workspace_agent_id": "7ad2e618-fea7-4c1a-b70a-f501566a72f1"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | codersdk.WorkspaceAgentLogSource |
To perform this operation, you must be authenticated. Learn more.
Patch workspace agent logs
Code samples
# Example request using curl
curl -X PATCH http://coder-server:8080/api/v2/workspaceagents/me/logs \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
PATCH /workspaceagents/me/logs
Body parameter
{
"log_source_id": "string",
"logs": [
{
"created_at": "string",
"level": "trace",
"output": "string"
}
]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body |
body | agentsdk.PatchLogs | true | logs |
Example responses
200 Response
{
"detail": "string",
"message": "string",
"validations": [
{
"detail": "string",
"field": "string"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | codersdk.Response |
To perform this operation, you must be authenticated. Learn more.
Get workspace agent by ID
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent} \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
GET /workspaceagents/{workspaceagent}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
workspaceagent |
path | string(uuid) | true | Workspace agent ID |
Example responses
200 Response
{
"api_version": "string",
"apps": [
{
"command": "string",
"display_name": "string",
"external": true,
"health": "disabled",
"healthcheck": {
"interval": 0,
"threshold": 0,
"url": "string"
},
"hidden": true,
"icon": "string",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"sharing_level": "owner",
"slug": "string",
"subdomain": true,
"subdomain_name": "string",
"url": "string"
}
],
"architecture": "string",
"connection_timeout_seconds": 0,
"created_at": "2019-08-24T14:15:22Z",
"directory": "string",
"disconnected_at": "2019-08-24T14:15:22Z",
"display_apps": ["vscode"],
"environment_variables": {
"property1": "string",
"property2": "string"
},
"expanded_directory": "string",
"first_connected_at": "2019-08-24T14:15:22Z",
"health": {
"healthy": false,
"reason": "agent has lost connection"
},
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"instance_id": "string",
"last_connected_at": "2019-08-24T14:15:22Z",
"latency": {
"property1": {
"latency_ms": 0,
"preferred": true
},
"property2": {
"latency_ms": 0,
"preferred": true
}
},
"lifecycle_state": "created",
"log_sources": [
{
"created_at": "2019-08-24T14:15:22Z",
"display_name": "string",
"icon": "string",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"workspace_agent_id": "7ad2e618-fea7-4c1a-b70a-f501566a72f1"
}
],
"logs_length": 0,
"logs_overflowed": true,
"name": "string",
"operating_system": "string",
"ready_at": "2019-08-24T14:15:22Z",
"resource_id": "4d5215ed-38bb-48ed-879a-fdb9ca58522f",
"scripts": [
{
"cron": "string",
"display_name": "string",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"log_path": "string",
"log_source_id": "4197ab25-95cf-4b91-9c78-f7f2af5d353a",
"run_on_start": true,
"run_on_stop": true,
"script": "string",
"start_blocks_login": true,
"timeout": 0
}
],
"started_at": "2019-08-24T14:15:22Z",
"startup_script_behavior": "blocking",
"status": "connecting",
"subsystems": ["envbox"],
"troubleshooting_url": "string",
"updated_at": "2019-08-24T14:15:22Z",
"version": "string"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | codersdk.WorkspaceAgent |
To perform this operation, you must be authenticated. Learn more.
Get connection info for workspace agent
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/connection \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
GET /workspaceagents/{workspaceagent}/connection
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
workspaceagent |
path | string(uuid) | true | Workspace agent ID |
Example responses
200 Response
{
"derp_force_websockets": true,
"derp_map": {
"homeParams": {
"regionScore": {
"property1": 0,
"property2": 0
}
},
"omitDefaultRegions": true,
"regions": {
"property1": {
"avoid": true,
"embeddedRelay": true,
"nodes": [
{
"canPort80": true,
"certName": "string",
"derpport": 0,
"forceHTTP": true,
"hostName": "string",
"insecureForTests": true,
"ipv4": "string",
"ipv6": "string",
"name": "string",
"regionID": 0,
"stunonly": true,
"stunport": 0,
"stuntestIP": "string"
}
],
"regionCode": "string",
"regionID": 0,
"regionName": "string"
},
"property2": {
"avoid": true,
"embeddedRelay": true,
"nodes": [
{
"canPort80": true,
"certName": "string",
"derpport": 0,
"forceHTTP": true,
"hostName": "string",
"insecureForTests": true,
"ipv4": "string",
"ipv6": "string",
"name": "string",
"regionID": 0,
"stunonly": true,
"stunport": 0,
"stuntestIP": "string"
}
],
"regionCode": "string",
"regionID": 0,
"regionName": "string"
}
}
},
"disable_direct_connections": true
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | workspacesdk.AgentConnectionInfo |
To perform this operation, you must be authenticated. Learn more.
Coordinate workspace agent
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/coordinate \
-H 'Coder-Session-Token: API_KEY'
GET /workspaceagents/{workspaceagent}/coordinate
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
workspaceagent |
path | string(uuid) | true | Workspace agent ID |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
101 | Switching Protocols | Switching Protocols |
To perform this operation, you must be authenticated. Learn more.
Get listening ports for workspace agent
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/listening-ports \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
GET /workspaceagents/{workspaceagent}/listening-ports
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
workspaceagent |
path | string(uuid) | true | Workspace agent ID |
Example responses
200 Response
{
"ports": [
{
"network": "string",
"port": 0,
"process_name": "string"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | codersdk.WorkspaceAgentListeningPortsResponse |
To perform this operation, you must be authenticated. Learn more.
Get logs by workspace agent
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/logs \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
GET /workspaceagents/{workspaceagent}/logs
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
workspaceagent |
path | string(uuid) | true | Workspace agent ID |
before |
query | integer | false | Before log id |
after |
query | integer | false | After log id |
follow |
query | boolean | false | Follow log stream |
no_compression |
query | boolean | false | Disable compression for WebSocket connection |
Example responses
200 Response
[
{
"created_at": "2019-08-24T14:15:22Z",
"id": 0,
"level": "trace",
"output": "string",
"source_id": "ae50a35c-df42-4eff-ba26-f8bc28d2af81"
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | array of codersdk.WorkspaceAgentLog |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
[array item] |
array | false | ||
» created_at |
string(date-time) | false | ||
» id |
integer | false | ||
» level |
codersdk.LogLevel | false | ||
» output |
string | false | ||
» source_id |
string(uuid) | false |
Enumerated Values
Property | Value |
---|---|
level |
trace |
level |
debug |
level |
info |
level |
warn |
level |
error |
To perform this operation, you must be authenticated. Learn more.
Open PTY to workspace agent
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/pty \
-H 'Coder-Session-Token: API_KEY'
GET /workspaceagents/{workspaceagent}/pty
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
workspaceagent |
path | string(uuid) | true | Workspace agent ID |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
101 | Switching Protocols | Switching Protocols |
To perform this operation, you must be authenticated. Learn more.
Removed: Get logs by workspace agent
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/startup-logs \
-H 'Accept: application/json' \
-H 'Coder-Session-Token: API_KEY'
GET /workspaceagents/{workspaceagent}/startup-logs
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
workspaceagent |
path | string(uuid) | true | Workspace agent ID |
before |
query | integer | false | Before log id |
after |
query | integer | false | After log id |
follow |
query | boolean | false | Follow log stream |
no_compression |
query | boolean | false | Disable compression for WebSocket connection |
Example responses
200 Response
[
{
"created_at": "2019-08-24T14:15:22Z",
"id": 0,
"level": "trace",
"output": "string",
"source_id": "ae50a35c-df42-4eff-ba26-f8bc28d2af81"
}
]
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | array of codersdk.WorkspaceAgentLog |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
[array item] |
array | false | ||
» created_at |
string(date-time) | false | ||
» id |
integer | false | ||
» level |
codersdk.LogLevel | false | ||
» output |
string | false | ||
» source_id |
string(uuid) | false |
Enumerated Values
Property | Value |
---|---|
level |
trace |
level |
debug |
level |
info |
level |
warn |
level |
error |
To perform this operation, you must be authenticated. Learn more.