coder/coderd/apidoc/swagger.json

8189 lines
210 KiB
JSON

{
"swagger": "2.0",
"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 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"
},
"basePath": "/api/v2",
"paths": {
"/": {
"get": {
"produces": ["application/json"],
"tags": ["General"],
"summary": "API root handler",
"operationId": "api-root-handler",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Response"
}
}
}
}
},
"/appearance": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Get appearance",
"operationId": "get-appearance",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.AppearanceConfig"
}
}
}
},
"put": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Update appearance",
"operationId": "update-appearance",
"parameters": [
{
"description": "Update appearance request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.UpdateAppearanceConfig"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.UpdateAppearanceConfig"
}
}
}
}
},
"/applications/auth-redirect": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"tags": ["Applications"],
"summary": "Redirect to URI with encrypted API key",
"operationId": "redirect-to-uri-with-encrypted-api-key",
"parameters": [
{
"type": "string",
"description": "Redirect destination",
"name": "redirect_uri",
"in": "query"
}
],
"responses": {
"307": {
"description": "Temporary Redirect"
}
}
}
},
"/applications/host": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Applications"],
"summary": "Get applications host",
"operationId": "get-applications-host",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.AppHostResponse"
}
}
}
}
},
"/audit": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Audit"],
"summary": "Get audit logs",
"operationId": "get-audit-logs",
"parameters": [
{
"type": "string",
"description": "Search query",
"name": "q",
"in": "query",
"required": true
},
{
"type": "string",
"format": "uuid",
"description": "After ID",
"name": "after_id",
"in": "query"
},
{
"type": "integer",
"description": "Page limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page offset",
"name": "offset",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.AuditLogResponse"
}
}
}
}
},
"/audit/testgenerate": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"tags": ["Audit"],
"summary": "Generate fake audit log",
"operationId": "generate-fake-audit-log",
"parameters": [
{
"description": "Audit log request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.CreateTestAuditLogRequest"
}
}
],
"responses": {
"204": {
"description": "No Content"
}
}
}
},
"/authcheck": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Authorization"],
"summary": "Check authorization",
"operationId": "check-authorization",
"parameters": [
{
"description": "Authorization request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.AuthorizationRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.AuthorizationResponse"
}
}
}
}
},
"/buildinfo": {
"get": {
"produces": ["application/json"],
"tags": ["General"],
"summary": "Build info",
"operationId": "build-info",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.BuildInfoResponse"
}
}
}
}
},
"/config/deployment": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["General"],
"summary": "Get deployment config",
"operationId": "get-deployment-config",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.DeploymentConfig"
}
}
}
}
},
"/csp/reports": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"tags": ["General"],
"summary": "Report CSP violations",
"operationId": "report-csp-violations",
"parameters": [
{
"description": "Violation report",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/coderd.cspViolation"
}
}
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/debug/coordinator": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["text/html"],
"tags": ["Debug"],
"summary": "Debug Info Wireguard Coordinator",
"operationId": "debug-info-wireguard-coordinator",
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/entitlements": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Get entitlements",
"operationId": "get-entitlements",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Entitlements"
}
}
}
}
},
"/experiments": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["General"],
"summary": "Get experiments",
"operationId": "get-experiments",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.Experiment"
}
}
}
}
}
},
"/files": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"description": "Swagger notice: Swagger 2.0 doesn't support file upload with a `content-type` different than `application/x-www-form-urlencoded`.",
"consumes": ["application/x-tar"],
"produces": ["application/json"],
"tags": ["Files"],
"summary": "Upload file",
"operationId": "upload-file",
"parameters": [
{
"type": "string",
"default": "application/x-tar",
"description": "Content-Type must be `application/x-tar`",
"name": "Content-Type",
"in": "header",
"required": true
},
{
"type": "file",
"description": "File to be uploaded",
"name": "file",
"in": "formData",
"required": true
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/codersdk.UploadResponse"
}
}
}
}
},
"/files/{fileID}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"tags": ["Files"],
"summary": "Get file by ID",
"operationId": "get-file-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "File ID",
"name": "fileID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/groups": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Get groups",
"operationId": "get-groups",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.Group"
}
}
}
}
}
},
"/groups/{group}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Get group by name",
"operationId": "get-group-by-name",
"parameters": [
{
"type": "string",
"description": "Group name",
"name": "group",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Group"
}
}
}
},
"delete": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Delete group by name",
"operationId": "delete-group-by-name",
"parameters": [
{
"type": "string",
"description": "Group name",
"name": "group",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Group"
}
}
}
},
"patch": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Update group by name",
"operationId": "update-group-by-name",
"parameters": [
{
"type": "string",
"description": "Group name",
"name": "group",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Group"
}
}
}
}
},
"/insights/daus": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Insights"],
"summary": "Get deployment DAUs",
"operationId": "get-deployment-daus",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.DeploymentDAUsResponse"
}
}
}
}
},
"/licenses": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Get licenses",
"operationId": "get-licenses",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.License"
}
}
}
}
},
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Organizations"],
"summary": "Add new license",
"operationId": "add-new-license",
"parameters": [
{
"description": "Add license request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.AddLicenseRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/codersdk.License"
}
}
}
}
},
"/licenses/{id}": {
"delete": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Delete license",
"operationId": "delete-license",
"parameters": [
{
"type": "string",
"format": "number",
"description": "License ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/organizations": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Organizations"],
"summary": "Create organization",
"operationId": "create-organization",
"parameters": [
{
"description": "Create organization request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.CreateOrganizationRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/codersdk.Organization"
}
}
}
}
},
"/organizations/{organization}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Organizations"],
"summary": "Get organization by ID",
"operationId": "get-organization-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Organization"
}
}
}
}
},
"/organizations/{organization}/groups": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Get groups by organization",
"operationId": "get-groups-by-organization",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.Group"
}
}
}
}
},
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Create group for organization",
"operationId": "create-group-for-organization",
"parameters": [
{
"description": "Create group request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.CreateGroupRequest"
}
},
{
"type": "string",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/codersdk.Group"
}
}
}
}
},
"/organizations/{organization}/groups/{groupName}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Get group by organization and group name",
"operationId": "get-group-by-organization-and-group-name",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Group name",
"name": "groupName",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Group"
}
}
}
}
},
"/organizations/{organization}/members/roles": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Members"],
"summary": "Get member roles by organization",
"operationId": "get-member-roles-by-organization",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.AssignableRoles"
}
}
}
}
}
},
"/organizations/{organization}/members/{user}/roles": {
"put": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Members"],
"summary": "Assign role to organization member",
"operationId": "assign-role-to-organization-member",
"parameters": [
{
"type": "string",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
},
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
},
{
"description": "Update roles request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.UpdateRoles"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.OrganizationMember"
}
}
}
}
},
"/organizations/{organization}/members/{user}/workspaces": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Workspaces"],
"summary": "Create user workspace by organization",
"operationId": "create-user-workspace-by-organization",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Username, UUID, or me",
"name": "user",
"in": "path",
"required": true
},
{
"description": "Create workspace request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.CreateWorkspaceRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Workspace"
}
}
}
}
},
"/organizations/{organization}/provisionerdaemons": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Get provisioner daemons",
"operationId": "get-provisioner-daemons",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.ProvisionerDaemon"
}
}
}
}
}
},
"/organizations/{organization}/provisionerdaemons/serve": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"tags": ["Enterprise"],
"summary": "Serve provisioner daemon",
"operationId": "serve-provisioner-daemon",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
}
],
"responses": {
"101": {
"description": "Switching Protocols"
}
}
}
},
"/organizations/{organization}/templates": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get templates by organization",
"operationId": "get-templates-by-organization",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.Template"
}
}
}
}
},
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Create template by organization",
"operationId": "create-template-by-organization",
"parameters": [
{
"description": "Request body",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.CreateTemplateRequest"
}
},
{
"type": "string",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Template"
}
}
}
}
},
"/organizations/{organization}/templates/examples": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get template examples by organization",
"operationId": "get-template-examples-by-organization",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.TemplateExample"
}
}
}
}
}
},
"/organizations/{organization}/templates/{templatename}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get templates by organization and template name",
"operationId": "get-templates-by-organization-and-template-name",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Template name",
"name": "templatename",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Template"
}
}
}
}
},
"/organizations/{organization}/templates/{templatename}/versions/{templateversionname}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get template version by organization, template, and name",
"operationId": "get-template-version-by-organization-template-and-name",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Template name",
"name": "templatename",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Template version name",
"name": "templateversionname",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.TemplateVersion"
}
}
}
}
},
"/organizations/{organization}/templates/{templatename}/versions/{templateversionname}/previous": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get previous template version by organization, template, and name",
"operationId": "get-previous-template-version-by-organization-template-and-name",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Template name",
"name": "templatename",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Template version name",
"name": "templateversionname",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.TemplateVersion"
}
}
}
}
},
"/organizations/{organization}/templateversions": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Create template version by organization",
"operationId": "create-template-version-by-organization",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Organization ID",
"name": "organization",
"in": "path",
"required": true
},
{
"description": "Create template version request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.CreateTemplateVersionRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/codersdk.TemplateVersion"
}
}
}
}
},
"/parameters/{scope}/{id}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Parameters"],
"summary": "Get parameters",
"operationId": "get-parameters",
"parameters": [
{
"enum": ["template", "workspace", "import_job"],
"type": "string",
"description": "Scope",
"name": "scope",
"in": "path",
"required": true
},
{
"type": "string",
"format": "uuid",
"description": "ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.Parameter"
}
}
}
}
},
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Parameters"],
"summary": "Create parameter",
"operationId": "create-parameter",
"parameters": [
{
"description": "Parameter request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.CreateParameterRequest"
}
},
{
"enum": ["template", "workspace", "import_job"],
"type": "string",
"description": "Scope",
"name": "scope",
"in": "path",
"required": true
},
{
"type": "string",
"format": "uuid",
"description": "ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/codersdk.Parameter"
}
}
}
}
},
"/parameters/{scope}/{id}/{name}": {
"delete": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Parameters"],
"summary": "Delete parameter",
"operationId": "delete-parameter",
"parameters": [
{
"enum": ["template", "workspace", "import_job"],
"type": "string",
"description": "Scope",
"name": "scope",
"in": "path",
"required": true
},
{
"type": "string",
"format": "uuid",
"description": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Name",
"name": "name",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Response"
}
}
}
}
},
"/replicas": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Get active replicas",
"operationId": "get-active-replicas",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.Replica"
}
}
}
}
}
},
"/scim/v2/Users": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/scim+json"],
"tags": ["Enterprise"],
"summary": "SCIM 2.0: Get users",
"operationId": "scim-get-users",
"responses": {
"200": {
"description": "OK"
}
}
},
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "SCIM 2.0: Create new user",
"operationId": "scim-create-new-user",
"parameters": [
{
"description": "New user",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/coderd.SCIMUser"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/coderd.SCIMUser"
}
}
}
}
},
"/scim/v2/Users/{id}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/scim+json"],
"tags": ["Enterprise"],
"summary": "SCIM 2.0: Get user by ID",
"operationId": "scim-get-user-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "User ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"404": {
"description": "Not Found"
}
}
},
"patch": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/scim+json"],
"tags": ["Enterprise"],
"summary": "SCIM 2.0: Update user account",
"operationId": "scim-update-user-status",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "User ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Update user request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/coderd.SCIMUser"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.User"
}
}
}
}
},
"/templates/{template}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get template metadata by ID",
"operationId": "get-template-metadata-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template ID",
"name": "template",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Template"
}
}
}
},
"delete": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Delete template by ID",
"operationId": "delete-template-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template ID",
"name": "template",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Response"
}
}
}
},
"patch": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Update template metadata by ID",
"operationId": "update-template-metadata-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template ID",
"name": "template",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Template"
}
}
}
}
},
"/templates/{template}/acl": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Get template ACLs",
"operationId": "get-template-acls",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template ID",
"name": "template",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.TemplateUser"
}
}
}
}
},
"patch": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Update template ACL",
"operationId": "update-template-acl",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template ID",
"name": "template",
"in": "path",
"required": true
},
{
"description": "Update template request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.UpdateTemplateACL"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Response"
}
}
}
}
},
"/templates/{template}/daus": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get template DAUs by ID",
"operationId": "get-template-daus-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template ID",
"name": "template",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.TemplateDAUsResponse"
}
}
}
}
},
"/templates/{template}/versions": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "List template versions by template ID",
"operationId": "list-template-versions-by-template-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template ID",
"name": "template",
"in": "path",
"required": true
},
{
"type": "string",
"format": "uuid",
"description": "After ID",
"name": "after_id",
"in": "query"
},
{
"type": "integer",
"description": "Page limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page offset",
"name": "offset",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.TemplateVersion"
}
}
}
}
},
"patch": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Update active template version by template ID",
"operationId": "update-active-template-version-by-template-id",
"parameters": [
{
"description": "Modified template version",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.UpdateActiveTemplateVersion"
}
},
{
"type": "string",
"format": "uuid",
"description": "Template ID",
"name": "template",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Response"
}
}
}
}
},
"/templates/{template}/versions/{templateversionname}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get template version by template ID and name",
"operationId": "get-template-version-by-template-id-and-name",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template ID",
"name": "template",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Template version name",
"name": "templateversionname",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.TemplateVersion"
}
}
}
}
}
},
"/templateversions/{templateversion}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get template version by ID",
"operationId": "get-template-version-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.TemplateVersion"
}
}
}
}
},
"/templateversions/{templateversion}/cancel": {
"patch": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Cancel template version by ID",
"operationId": "cancel-template-version-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Response"
}
}
}
}
},
"/templateversions/{templateversion}/dry-run": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Create template version dry-run",
"operationId": "create-template-version-dry-run",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
},
{
"description": "Dry-run request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.CreateTemplateVersionDryRunRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/codersdk.ProvisionerJob"
}
}
}
}
},
"/templateversions/{templateversion}/dry-run/{jobID}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get template version dry-run by job ID",
"operationId": "get-template-version-dry-run-by-job-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
},
{
"type": "string",
"format": "uuid",
"description": "Job ID",
"name": "jobID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.ProvisionerJob"
}
}
}
}
},
"/templateversions/{templateversion}/dry-run/{jobID}/cancel": {
"patch": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Cancel template version dry-run by job ID",
"operationId": "cancel-template-version-dry-run-by-job-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Job ID",
"name": "jobID",
"in": "path",
"required": true
},
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Response"
}
}
}
}
},
"/templateversions/{templateversion}/dry-run/{jobID}/logs": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get template version dry-run logs by job ID",
"operationId": "get-template-version-dry-run-logs-by-job-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
},
{
"type": "string",
"format": "uuid",
"description": "Job ID",
"name": "jobID",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Before Unix timestamp",
"name": "before",
"in": "query"
},
{
"type": "integer",
"description": "After Unix timestamp",
"name": "after",
"in": "query"
},
{
"type": "boolean",
"description": "Follow log stream",
"name": "follow",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.ProvisionerJobLog"
}
}
}
}
}
},
"/templateversions/{templateversion}/dry-run/{jobID}/resources": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get template version dry-run resources by job ID",
"operationId": "get-template-version-dry-run-resources-by-job-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
},
{
"type": "string",
"format": "uuid",
"description": "Job ID",
"name": "jobID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.WorkspaceResource"
}
}
}
}
}
},
"/templateversions/{templateversion}/gitauth": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get git auth by template version",
"operationId": "get-git-auth-by-template-version",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.TemplateVersionGitAuth"
}
}
}
}
}
},
"/templateversions/{templateversion}/logs": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get logs by template version",
"operationId": "get-logs-by-template-version",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Before Unix timestamp",
"name": "before",
"in": "query"
},
{
"type": "integer",
"description": "After Unix timestamp",
"name": "after",
"in": "query"
},
{
"type": "boolean",
"description": "Follow log stream",
"name": "follow",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.ProvisionerJobLog"
}
}
}
}
}
},
"/templateversions/{templateversion}/parameters": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get parameters by template version",
"operationId": "get-parameters-by-template-version",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/parameter.ComputedValue"
}
}
}
}
}
},
"/templateversions/{templateversion}/resources": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get resources by template version",
"operationId": "get-resources-by-template-version",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.WorkspaceResource"
}
}
}
}
}
},
"/templateversions/{templateversion}/rich-parameters": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get rich parameters by template version",
"operationId": "get-rich-parameters-by-template-version",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.TemplateVersionParameter"
}
}
}
}
}
},
"/templateversions/{templateversion}/schema": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get schema by template version",
"operationId": "get-schema-by-template-version",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.ParameterSchema"
}
}
}
}
}
},
"/templateversions/{templateversion}/variables": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get template variables by template version",
"operationId": "get-template-variables-by-template-version",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.TemplateVersionVariable"
}
}
}
}
}
},
"/updatecheck": {
"get": {
"produces": ["application/json"],
"tags": ["General"],
"summary": "Update check",
"operationId": "update-check",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.UpdateCheckResponse"
}
}
}
}
},
"/users": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Get users",
"operationId": "get-users",
"parameters": [
{
"type": "string",
"description": "Search query",
"name": "q",
"in": "query"
},
{
"type": "string",
"format": "uuid",
"description": "After ID",
"name": "after_id",
"in": "query"
},
{
"type": "integer",
"description": "Page limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page offset",
"name": "offset",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.GetUsersResponse"
}
}
}
},
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Create new user",
"operationId": "create-new-user",
"parameters": [
{
"description": "Create user request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.CreateUserRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/codersdk.User"
}
}
}
}
},
"/users/authmethods": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Get authentication methods",
"operationId": "get-authentication-methods",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.AuthMethods"
}
}
}
}
},
"/users/first": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Check initial user created",
"operationId": "check-initial-user-created",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Response"
}
}
}
},
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Create initial user",
"operationId": "create-initial-user",
"parameters": [
{
"description": "First user request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.CreateFirstUserRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/codersdk.CreateFirstUserResponse"
}
}
}
}
},
"/users/login": {
"post": {
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Authorization"],
"summary": "Log in user",
"operationId": "log-in-user",
"parameters": [
{
"description": "Login request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.LoginWithPasswordRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/codersdk.LoginWithPasswordResponse"
}
}
}
}
},
"/users/logout": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Log out user",
"operationId": "log-out-user",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Response"
}
}
}
}
},
"/users/oauth2/github/callback": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"tags": ["Users"],
"summary": "OAuth 2.0 GitHub Callback",
"operationId": "oauth-20-github-callback",
"responses": {
"307": {
"description": "Temporary Redirect"
}
}
}
},
"/users/oidc/callback": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"tags": ["Users"],
"summary": "OpenID Connect Callback",
"operationId": "openid-connect-callback",
"responses": {
"307": {
"description": "Temporary Redirect"
}
}
}
},
"/users/roles": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Members"],
"summary": "Get site member roles",
"operationId": "get-site-member-roles",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.AssignableRoles"
}
}
}
}
}
},
"/users/{user}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Get user by name",
"operationId": "get-user-by-name",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.User"
}
}
}
},
"delete": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Delete user",
"operationId": "delete-user",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.User"
}
}
}
}
},
"/users/{user}/gitsshkey": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Get user Git SSH key",
"operationId": "get-user-git-ssh-key",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.GitSSHKey"
}
}
}
},
"put": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Regenerate user SSH key",
"operationId": "regenerate-user-ssh-key",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.GitSSHKey"
}
}
}
}
},
"/users/{user}/keys": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Create new session key",
"operationId": "create-new-session-key",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/codersdk.GenerateAPIKeyResponse"
}
}
}
}
},
"/users/{user}/keys/tokens": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Get user tokens",
"operationId": "get-user-tokens",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.APIKey"
}
}
}
}
},
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Create token API key",
"operationId": "create-token-api-key",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
},
{
"description": "Create token request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.CreateTokenRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/codersdk.GenerateAPIKeyResponse"
}
}
}
}
},
"/users/{user}/keys/tokens/{keyname}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Get API key by token name",
"operationId": "get-api-key-by-token-name",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
},
{
"type": "string",
"format": "string",
"description": "Key Name",
"name": "keyname",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.APIKey"
}
}
}
}
},
"/users/{user}/keys/{keyid}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Get API key by ID",
"operationId": "get-api-key-by-id",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
},
{
"type": "string",
"format": "uuid",
"description": "Key ID",
"name": "keyid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.APIKey"
}
}
}
},
"delete": {
"security": [
{
"CoderSessionToken": []
}
],
"tags": ["Users"],
"summary": "Delete API key",
"operationId": "delete-api-key",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
},
{
"type": "string",
"format": "uuid",
"description": "Key ID",
"name": "keyid",
"in": "path",
"required": true
}
],
"responses": {
"204": {
"description": "No Content"
}
}
}
},
"/users/{user}/organizations": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Get organizations by user",
"operationId": "get-organizations-by-user",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.Organization"
}
}
}
}
}
},
"/users/{user}/organizations/{organizationname}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Get organization by user and organization name",
"operationId": "get-organization-by-user-and-organization-name",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Organization name",
"name": "organizationname",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Organization"
}
}
}
}
},
"/users/{user}/password": {
"put": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"tags": ["Users"],
"summary": "Update user password",
"operationId": "update-user-password",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
},
{
"description": "Update password request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.UpdateUserPasswordRequest"
}
}
],
"responses": {
"204": {
"description": "No Content"
}
}
}
},
"/users/{user}/profile": {
"put": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Update user profile",
"operationId": "update-user-profile",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
},
{
"description": "Updated profile",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.UpdateUserProfileRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.User"
}
}
}
}
},
"/users/{user}/roles": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Get user roles",
"operationId": "get-user-roles",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.User"
}
}
}
},
"put": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Assign role to user",
"operationId": "assign-role-to-user",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
},
{
"description": "Update roles request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.UpdateRoles"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.User"
}
}
}
}
},
"/users/{user}/status/activate": {
"put": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Activate user account",
"operationId": "activate-user-account",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.User"
}
}
}
}
},
"/users/{user}/status/suspend": {
"put": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Users"],
"summary": "Suspend user account",
"operationId": "suspend-user-account",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.User"
}
}
}
}
},
"/users/{user}/workspace/{workspacename}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Workspaces"],
"summary": "Get workspace metadata by user and workspace name",
"operationId": "get-workspace-metadata-by-user-and-workspace-name",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Workspace name",
"name": "workspacename",
"in": "path",
"required": true
},
{
"type": "boolean",
"description": "Return data instead of HTTP 404 if the workspace is deleted",
"name": "include_deleted",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Workspace"
}
}
}
}
},
"/users/{user}/workspace/{workspacename}/builds/{buildnumber}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Builds"],
"summary": "Get workspace build by user, workspace name, and build number",
"operationId": "get-workspace-build-by-user-workspace-name-and-build-number",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Workspace name",
"name": "workspacename",
"in": "path",
"required": true
},
{
"type": "string",
"format": "number",
"description": "Build number",
"name": "buildnumber",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.WorkspaceBuild"
}
}
}
}
},
"/workspace-quota/{user}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Enterprise"],
"summary": "Get workspace quota by user",
"operationId": "get-workspace-quota-by-user",
"parameters": [
{
"type": "string",
"description": "User ID, name, or me",
"name": "user",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.WorkspaceQuota"
}
}
}
}
},
"/workspaceagents/aws-instance-identity": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Agents"],
"summary": "Authenticate agent on AWS instance",
"operationId": "authenticate-agent-on-aws-instance",
"parameters": [
{
"description": "Instance identity token",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/agentsdk.AWSInstanceIdentityToken"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/agentsdk.AuthenticateResponse"
}
}
}
}
},
"/workspaceagents/azure-instance-identity": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Agents"],
"summary": "Authenticate agent on Azure instance",
"operationId": "authenticate-agent-on-azure-instance",
"parameters": [
{
"description": "Instance identity token",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/agentsdk.AzureInstanceIdentityToken"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/agentsdk.AuthenticateResponse"
}
}
}
}
},
"/workspaceagents/google-instance-identity": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Agents"],
"summary": "Authenticate agent on Google Cloud instance",
"operationId": "authenticate-agent-on-google-cloud-instance",
"parameters": [
{
"description": "Instance identity token",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/agentsdk.GoogleInstanceIdentityToken"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/agentsdk.AuthenticateResponse"
}
}
}
}
},
"/workspaceagents/me/app-health": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Agents"],
"summary": "Submit workspace agent application health",
"operationId": "submit-workspace-agent-application-health",
"parameters": [
{
"description": "Application health request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/agentsdk.PostAppHealthsRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/workspaceagents/me/coordinate": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"description": "It accepts a WebSocket connection to an agent that listens to\nincoming connections and publishes node updates.",
"tags": ["Agents"],
"summary": "Coordinate workspace agent via Tailnet",
"operationId": "coordinate-workspace-agent-via-tailnet",
"responses": {
"101": {
"description": "Switching Protocols"
}
}
}
},
"/workspaceagents/me/gitauth": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Agents"],
"summary": "Get workspace agent Git auth",
"operationId": "get-workspace-agent-git-auth",
"parameters": [
{
"type": "string",
"format": "uri",
"description": "Git URL",
"name": "url",
"in": "query",
"required": true
},
{
"type": "boolean",
"description": "Wait for a new token to be issued",
"name": "listen",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/agentsdk.GitAuthResponse"
}
}
}
}
},
"/workspaceagents/me/gitsshkey": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Agents"],
"summary": "Get workspace agent Git SSH key",
"operationId": "get-workspace-agent-git-ssh-key",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/agentsdk.GitSSHKey"
}
}
}
}
},
"/workspaceagents/me/metadata": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Agents"],
"summary": "Get authorized workspace agent metadata",
"operationId": "get-authorized-workspace-agent-metadata",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/agentsdk.Metadata"
}
}
}
}
},
"/workspaceagents/me/report-lifecycle": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"tags": ["Agents"],
"summary": "Submit workspace agent lifecycle state",
"operationId": "submit-workspace-agent-lifecycle-state",
"parameters": [
{
"description": "Workspace agent lifecycle request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/agentsdk.PostLifecycleRequest"
}
}
],
"responses": {
"204": {
"description": "Success"
}
},
"x-apidocgen": {
"skip": true
}
}
},
"/workspaceagents/me/report-stats": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Agents"],
"summary": "Submit workspace agent stats",
"operationId": "submit-workspace-agent-stats",
"parameters": [
{
"description": "Stats request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/agentsdk.Stats"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/agentsdk.StatsResponse"
}
}
}
}
},
"/workspaceagents/me/startup": {
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Agents"],
"summary": "Submit workspace agent startup",
"operationId": "submit-workspace-agent-startup",
"parameters": [
{
"description": "Startup request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/agentsdk.PostStartupRequest"
}
}
],
"responses": {
"200": {
"description": "OK"
}
},
"x-apidocgen": {
"skip": true
}
}
},
"/workspaceagents/{workspaceagent}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Agents"],
"summary": "Get workspace agent by ID",
"operationId": "get-workspace-agent-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Workspace agent ID",
"name": "workspaceagent",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.WorkspaceAgent"
}
}
}
}
},
"/workspaceagents/{workspaceagent}/connection": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Agents"],
"summary": "Get connection info for workspace agent",
"operationId": "get-connection-info-for-workspace-agent",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Workspace agent ID",
"name": "workspaceagent",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.WorkspaceAgentConnectionInfo"
}
}
}
}
},
"/workspaceagents/{workspaceagent}/coordinate": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"tags": ["Agents"],
"summary": "Coordinate workspace agent",
"operationId": "coordinate-workspace-agent",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Workspace agent ID",
"name": "workspaceagent",
"in": "path",
"required": true
}
],
"responses": {
"101": {
"description": "Switching Protocols"
}
}
}
},
"/workspaceagents/{workspaceagent}/listening-ports": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Agents"],
"summary": "Get listening ports for workspace agent",
"operationId": "get-listening-ports-for-workspace-agent",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Workspace agent ID",
"name": "workspaceagent",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.WorkspaceAgentListeningPortsResponse"
}
}
}
}
},
"/workspaceagents/{workspaceagent}/pty": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"tags": ["Agents"],
"summary": "Open PTY to workspace agent",
"operationId": "open-pty-to-workspace-agent",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Workspace agent ID",
"name": "workspaceagent",
"in": "path",
"required": true
}
],
"responses": {
"101": {
"description": "Switching Protocols"
}
}
}
},
"/workspacebuilds/{workspacebuild}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Builds"],
"summary": "Get workspace build",
"operationId": "get-workspace-build",
"parameters": [
{
"type": "string",
"description": "Workspace build ID",
"name": "workspacebuild",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.WorkspaceBuild"
}
}
}
}
},
"/workspacebuilds/{workspacebuild}/cancel": {
"patch": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Builds"],
"summary": "Cancel workspace build",
"operationId": "cancel-workspace-build",
"parameters": [
{
"type": "string",
"description": "Workspace build ID",
"name": "workspacebuild",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Response"
}
}
}
}
},
"/workspacebuilds/{workspacebuild}/logs": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Builds"],
"summary": "Get workspace build logs",
"operationId": "get-workspace-build-logs",
"parameters": [
{
"type": "string",
"description": "Workspace build ID",
"name": "workspacebuild",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Before Unix timestamp",
"name": "before",
"in": "query"
},
{
"type": "integer",
"description": "After Unix timestamp",
"name": "after",
"in": "query"
},
{
"type": "boolean",
"description": "Follow log stream",
"name": "follow",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.ProvisionerJobLog"
}
}
}
}
}
},
"/workspacebuilds/{workspacebuild}/parameters": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Builds"],
"summary": "Get build parameters for workspace build",
"operationId": "get-build-parameters-for-workspace-build",
"parameters": [
{
"type": "string",
"description": "Workspace build ID",
"name": "workspacebuild",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.WorkspaceBuildParameter"
}
}
}
}
}
},
"/workspacebuilds/{workspacebuild}/resources": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Builds"],
"summary": "Get workspace resources for workspace build",
"operationId": "get-workspace-resources-for-workspace-build",
"parameters": [
{
"type": "string",
"description": "Workspace build ID",
"name": "workspacebuild",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.WorkspaceResource"
}
}
}
}
}
},
"/workspacebuilds/{workspacebuild}/state": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Builds"],
"summary": "Get provisioner state for workspace build",
"operationId": "get-provisioner-state-for-workspace-build",
"parameters": [
{
"type": "string",
"description": "Workspace build ID",
"name": "workspacebuild",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.WorkspaceBuild"
}
}
}
}
},
"/workspaces": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Workspaces"],
"summary": "List workspaces",
"operationId": "list-workspaces",
"parameters": [
{
"type": "string",
"description": "Filter by owner username",
"name": "owner",
"in": "query"
},
{
"type": "string",
"description": "Filter by template name",
"name": "template",
"in": "query"
},
{
"type": "string",
"description": "Filter with partial-match by workspace name",
"name": "name",
"in": "query"
},
{
"enum": [
"pending",
"running",
"stopping",
"stopped",
"failed",
"canceling",
"canceled",
"deleted",
"deleting"
],
"type": "string",
"description": "Filter by workspace status",
"name": "status",
"in": "query"
},
{
"enum": ["connected", "connecting", "disconnected", "timeout"],
"type": "string",
"description": "Filter by agent status",
"name": "has_agent",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.WorkspacesResponse"
}
}
}
}
},
"/workspaces/{workspace}": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Workspaces"],
"summary": "Get workspace metadata by ID",
"operationId": "get-workspace-metadata-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Workspace ID",
"name": "workspace",
"in": "path",
"required": true
},
{
"type": "boolean",
"description": "Return data instead of HTTP 404 if the workspace is deleted",
"name": "include_deleted",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Workspace"
}
}
}
},
"patch": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"tags": ["Workspaces"],
"summary": "Update workspace metadata by ID",
"operationId": "update-workspace-metadata-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Workspace ID",
"name": "workspace",
"in": "path",
"required": true
},
{
"description": "Metadata update request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.UpdateWorkspaceRequest"
}
}
],
"responses": {
"204": {
"description": "No Content"
}
}
}
},
"/workspaces/{workspace}/autostart": {
"put": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"tags": ["Workspaces"],
"summary": "Update workspace autostart schedule by ID",
"operationId": "update-workspace-autostart-schedule-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Workspace ID",
"name": "workspace",
"in": "path",
"required": true
},
{
"description": "Schedule update request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.UpdateWorkspaceAutostartRequest"
}
}
],
"responses": {
"204": {
"description": "No Content"
}
}
}
},
"/workspaces/{workspace}/builds": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Builds"],
"summary": "Get workspace builds by workspace ID",
"operationId": "get-workspace-builds-by-workspace-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Workspace ID",
"name": "workspace",
"in": "path",
"required": true
},
{
"type": "string",
"format": "uuid",
"description": "After ID",
"name": "after_id",
"in": "query"
},
{
"type": "integer",
"description": "Page limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page offset",
"name": "offset",
"in": "query"
},
{
"type": "string",
"format": "date-time",
"description": "Since timestamp",
"name": "since",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.WorkspaceBuild"
}
}
}
}
},
"post": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Builds"],
"summary": "Create workspace build",
"operationId": "create-workspace-build",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Workspace ID",
"name": "workspace",
"in": "path",
"required": true
},
{
"description": "Create workspace build request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.CreateWorkspaceBuildRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.WorkspaceBuild"
}
}
}
}
},
"/workspaces/{workspace}/extend": {
"put": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"produces": ["application/json"],
"tags": ["Workspaces"],
"summary": "Extend workspace deadline by ID",
"operationId": "extend-workspace-deadline-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Workspace ID",
"name": "workspace",
"in": "path",
"required": true
},
{
"description": "Extend deadline update request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.PutExtendWorkspaceRequest"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Response"
}
}
}
}
},
"/workspaces/{workspace}/ttl": {
"put": {
"security": [
{
"CoderSessionToken": []
}
],
"consumes": ["application/json"],
"tags": ["Workspaces"],
"summary": "Update workspace TTL by ID",
"operationId": "update-workspace-ttl-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Workspace ID",
"name": "workspace",
"in": "path",
"required": true
},
{
"description": "Workspace TTL update request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/codersdk.UpdateWorkspaceTTLRequest"
}
}
],
"responses": {
"204": {
"description": "No Content"
}
}
}
},
"/workspaces/{workspace}/watch": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["text/event-stream"],
"tags": ["Workspaces"],
"summary": "Watch workspace by ID",
"operationId": "watch-workspace-by-id",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Workspace ID",
"name": "workspace",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/codersdk.Response"
}
}
}
}
}
},
"definitions": {
"agentsdk.AWSInstanceIdentityToken": {
"type": "object",
"required": ["document", "signature"],
"properties": {
"document": {
"type": "string"
},
"signature": {
"type": "string"
}
}
},
"agentsdk.AuthenticateResponse": {
"type": "object",
"properties": {
"session_token": {
"type": "string"
}
}
},
"agentsdk.AzureInstanceIdentityToken": {
"type": "object",
"required": ["encoding", "signature"],
"properties": {
"encoding": {
"type": "string"
},
"signature": {
"type": "string"
}
}
},
"agentsdk.GitAuthResponse": {
"type": "object",
"properties": {
"password": {
"type": "string"
},
"url": {
"type": "string"
},
"username": {
"type": "string"
}
}
},
"agentsdk.GitSSHKey": {
"type": "object",
"properties": {
"private_key": {
"type": "string"
},
"public_key": {
"type": "string"
}
}
},
"agentsdk.GoogleInstanceIdentityToken": {
"type": "object",
"required": ["json_web_token"],
"properties": {
"json_web_token": {
"type": "string"
}
}
},
"agentsdk.Metadata": {
"type": "object",
"properties": {
"apps": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.WorkspaceApp"
}
},
"derpmap": {
"$ref": "#/definitions/tailcfg.DERPMap"
},
"directory": {
"type": "string"
},
"environment_variables": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"git_auth_configs": {
"description": "GitAuthConfigs stores the number of Git configurations\nthe Coder deployment has. If this number is \u003e0, we\nset up special configuration in the workspace.",
"type": "integer"
},
"motd_file": {
"type": "string"
},
"shutdown_script": {
"type": "string"
},
"shutdown_script_timeout": {
"type": "integer"
},
"startup_script": {
"type": "string"
},
"startup_script_timeout": {
"type": "integer"
},
"vscode_port_proxy_uri": {
"type": "string"
}
}
},
"agentsdk.PostAppHealthsRequest": {
"type": "object",
"properties": {
"healths": {
"description": "Healths is a map of the workspace app name and the health of the app.",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/codersdk.WorkspaceAppHealth"
}
}
}
},
"agentsdk.PostLifecycleRequest": {
"type": "object",
"properties": {
"state": {
"$ref": "#/definitions/codersdk.WorkspaceAgentLifecycle"
}
}
},
"agentsdk.PostStartupRequest": {
"type": "object",
"properties": {
"expanded_directory": {
"type": "string"
},
"version": {
"type": "string"
}
}
},
"agentsdk.Stats": {
"type": "object",
"properties": {
"connection_count": {
"description": "ConnectionCount is the number of connections received by an agent.",
"type": "integer"
},
"connection_median_latency_ms": {
"description": "ConnectionMedianLatencyMS is the median latency of all connections in milliseconds.",
"type": "number"
},
"connections_by_proto": {
"description": "ConnectionsByProto is a count of connections by protocol.",
"type": "object",
"additionalProperties": {
"type": "integer"
}
},
"rx_bytes": {
"description": "RxBytes is the number of received bytes.",
"type": "integer"
},
"rx_packets": {
"description": "RxPackets is the number of received packets.",
"type": "integer"
},
"session_count_jetbrains": {
"description": "SessionCountJetBrains is the number of connections received by an agent\nthat are from our JetBrains extension.",
"type": "integer"
},
"session_count_reconnecting_pty": {
"description": "SessionCountReconnectingPTY is the number of connections received by an agent\nthat are from the reconnecting web terminal.",
"type": "integer"
},
"session_count_ssh": {
"description": "SessionCountSSH is the number of connections received by an agent\nthat are normal, non-tagged SSH sessions.",
"type": "integer"
},
"session_count_vscode": {
"description": "SessionCountVSCode is the number of connections received by an agent\nthat are from our VS Code extension.",
"type": "integer"
},
"tx_bytes": {
"description": "TxBytes is the number of transmitted bytes.",
"type": "integer"
},
"tx_packets": {
"description": "TxPackets is the number of transmitted bytes.",
"type": "integer"
}
}
},
"agentsdk.StatsResponse": {
"type": "object",
"properties": {
"report_interval": {
"description": "ReportInterval is the duration after which the agent should send stats\nagain.",
"type": "integer"
}
}
},
"clibase.Annotations": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"clibase.Group": {
"type": "object",
"properties": {
"children": {
"type": "array",
"items": {
"$ref": "#/definitions/clibase.Group"
}
},
"description": {
"type": "string"
},
"name": {
"type": "string"
},
"parent": {
"$ref": "#/definitions/clibase.Group"
}
}
},
"clibase.HostPort": {
"type": "object",
"properties": {
"host": {
"type": "string"
},
"port": {
"type": "string"
}
}
},
"clibase.Option": {
"type": "object",
"properties": {
"annotations": {
"description": "Annotations enable extensions to clibase higher up in the stack. It's useful for\nhelp formatting and documentation generation.",
"allOf": [
{
"$ref": "#/definitions/clibase.Annotations"
}
]
},
"default": {
"description": "Default is parsed into Value if set.",
"type": "string"
},
"description": {
"type": "string"
},
"env": {
"description": "Env is the environment variable used to configure this option. If unset,\nenvironment configuring is disabled.",
"type": "string"
},
"flag": {
"description": "Flag is the long name of the flag used to configure this option. If unset,\nflag configuring is disabled.",
"type": "string"
},
"flag_shorthand": {
"description": "FlagShorthand is the one-character shorthand for the flag. If unset, no\nshorthand is used.",
"type": "string"
},
"group": {
"description": "Group is a group hierarchy that helps organize this option in help, configs\nand other documentation.",
"allOf": [
{
"$ref": "#/definitions/clibase.Group"
}
]
},
"hidden": {
"type": "boolean"
},
"name": {
"type": "string"
},
"use_instead": {
"description": "UseInstead is a list of options that should be used instead of this one.\nThe field is used to generate a deprecation warning.",
"type": "array",
"items": {
"$ref": "#/definitions/clibase.Option"
}
},
"value": {
"description": "Value includes the types listed in values.go."
},
"yaml": {
"description": "YAML is the YAML key used to configure this option. If unset, YAML\nconfiguring is disabled.",
"type": "string"
}
}
},
"clibase.Struct-array_codersdk_GitAuthConfig": {
"type": "object",
"properties": {
"value": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.GitAuthConfig"
}
}
}
},
"clibase.Struct-array_codersdk_LinkConfig": {
"type": "object",
"properties": {
"value": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.LinkConfig"
}
}
}
},
"clibase.URL": {
"type": "object",
"properties": {
"forceQuery": {
"description": "append a query ('?') even if RawQuery is empty",
"type": "boolean"
},
"fragment": {
"description": "fragment for references, without '#'",
"type": "string"
},
"host": {
"description": "host or host:port",
"type": "string"
},
"omitHost": {
"description": "do not emit empty host (authority)",
"type": "boolean"
},
"opaque": {
"description": "encoded opaque data",
"type": "string"
},
"path": {
"description": "path (relative paths may omit leading slash)",
"type": "string"
},
"rawFragment": {
"description": "encoded fragment hint (see EscapedFragment method)",
"type": "string"
},
"rawPath": {
"description": "encoded path hint (see EscapedPath method)",
"type": "string"
},
"rawQuery": {
"description": "encoded query values, without '?'",
"type": "string"
},
"scheme": {
"type": "string"
},
"user": {
"description": "username and password information",
"allOf": [
{
"$ref": "#/definitions/url.Userinfo"
}
]
}
}
},
"coderd.SCIMUser": {
"type": "object",
"properties": {
"active": {
"type": "boolean"
},
"emails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"display": {
"type": "string"
},
"primary": {
"type": "boolean"
},
"type": {
"type": "string"
},
"value": {
"type": "string",
"format": "email"
}
}
}
},
"groups": {
"type": "array",
"items": {}
},
"id": {
"type": "string"
},
"meta": {
"type": "object",
"properties": {
"resourceType": {
"type": "string"
}
}
},
"name": {
"type": "object",
"properties": {
"familyName": {
"type": "string"
},
"givenName": {
"type": "string"
}
}
},
"schemas": {
"type": "array",
"items": {
"type": "string"
}
},
"userName": {
"type": "string"
}
}
},
"coderd.cspViolation": {
"type": "object",
"properties": {
"csp-report": {
"type": "object",
"additionalProperties": true
}
}
},
"codersdk.APIKey": {
"type": "object",
"required": [
"created_at",
"expires_at",
"id",
"last_used",
"lifetime_seconds",
"login_type",
"scope",
"token_name",
"updated_at",
"user_id"
],
"properties": {
"created_at": {
"type": "string",
"format": "date-time"
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"id": {
"type": "string"
},
"last_used": {
"type": "string",
"format": "date-time"
},
"lifetime_seconds": {
"type": "integer"
},
"login_type": {
"enum": ["password", "github", "oidc", "token"],
"allOf": [
{
"$ref": "#/definitions/codersdk.LoginType"
}
]
},
"scope": {
"enum": ["all", "application_connect"],
"allOf": [
{
"$ref": "#/definitions/codersdk.APIKeyScope"
}
]
},
"token_name": {
"type": "string"
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"user_id": {
"type": "string",
"format": "uuid"
}
}
},
"codersdk.APIKeyScope": {
"type": "string",
"enum": ["all", "application_connect"],
"x-enum-varnames": ["APIKeyScopeAll", "APIKeyScopeApplicationConnect"]
},
"codersdk.AddLicenseRequest": {
"type": "object",
"required": ["license"],
"properties": {
"license": {
"type": "string"
}
}
},
"codersdk.AppHostResponse": {
"type": "object",
"properties": {
"host": {
"description": "Host is the externally accessible URL for the Coder instance.",
"type": "string"
}
}
},
"codersdk.AppearanceConfig": {
"type": "object",
"properties": {
"logo_url": {
"type": "string"
},
"service_banner": {
"$ref": "#/definitions/codersdk.ServiceBannerConfig"
},
"support_links": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.LinkConfig"
}
}
}
},
"codersdk.AssignableRoles": {
"type": "object",
"properties": {
"assignable": {
"type": "boolean"
},
"display_name": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"codersdk.AuditAction": {
"type": "string",
"enum": ["create", "write", "delete", "start", "stop", "login", "logout"],
"x-enum-varnames": [
"AuditActionCreate",
"AuditActionWrite",
"AuditActionDelete",
"AuditActionStart",
"AuditActionStop",
"AuditActionLogin",
"AuditActionLogout"
]
},
"codersdk.AuditDiff": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/codersdk.AuditDiffField"
}
},
"codersdk.AuditDiffField": {
"type": "object",
"properties": {
"new": {},
"old": {},
"secret": {
"type": "boolean"
}
}
},
"codersdk.AuditLog": {
"type": "object",
"properties": {
"action": {
"$ref": "#/definitions/codersdk.AuditAction"
},
"additional_fields": {
"type": "array",
"items": {
"type": "integer"
}
},
"description": {
"type": "string"
},
"diff": {
"$ref": "#/definitions/codersdk.AuditDiff"
},
"id": {
"type": "string",
"format": "uuid"
},
"ip": {
"type": "string"
},
"is_deleted": {
"type": "boolean"
},
"organization_id": {
"type": "string",
"format": "uuid"
},
"request_id": {
"type": "string",
"format": "uuid"
},
"resource_icon": {
"type": "string"
},
"resource_id": {
"type": "string",
"format": "uuid"
},
"resource_link": {
"type": "string"
},
"resource_target": {
"description": "ResourceTarget is the name of the resource.",
"type": "string"
},
"resource_type": {
"$ref": "#/definitions/codersdk.ResourceType"
},
"status_code": {
"type": "integer"
},
"time": {
"type": "string",
"format": "date-time"
},
"user": {
"$ref": "#/definitions/codersdk.User"
},
"user_agent": {
"type": "string"
}
}
},
"codersdk.AuditLogResponse": {
"type": "object",
"properties": {
"audit_logs": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.AuditLog"
}
},
"count": {
"type": "integer"
}
}
},
"codersdk.AuthMethod": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
}
}
},
"codersdk.AuthMethods": {
"type": "object",
"properties": {
"github": {
"$ref": "#/definitions/codersdk.AuthMethod"
},
"oidc": {
"$ref": "#/definitions/codersdk.OIDCAuthMethod"
},
"password": {
"$ref": "#/definitions/codersdk.AuthMethod"
}
}
},
"codersdk.AuthorizationCheck": {
"description": "AuthorizationCheck is used to check if the currently authenticated user (or the specified user) can do a given action to a given set of objects.",
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": ["create", "read", "update", "delete"]
},
"object": {
"description": "Object can represent a \"set\" of objects, such as: all workspaces in an organization, all workspaces owned by me, and all workspaces across the entire product.\nWhen defining an object, use the most specific language when possible to\nproduce the smallest set. Meaning to set as many fields on 'Object' as\nyou can. Example, if you want to check if you can update all workspaces\nowned by 'me', try to also add an 'OrganizationID' to the settings.\nOmitting the 'OrganizationID' could produce the incorrect value, as\nworkspaces have both `user` and `organization` owners.",
"allOf": [
{
"$ref": "#/definitions/codersdk.AuthorizationObject"
}
]
}
}
},
"codersdk.AuthorizationObject": {
"description": "AuthorizationObject can represent a \"set\" of objects, such as: all workspaces in an organization, all workspaces owned by me, all workspaces across the entire product.",
"type": "object",
"properties": {
"organization_id": {
"description": "OrganizationID (optional) adds the set constraint to all resources owned by a given organization.",
"type": "string"
},
"owner_id": {
"description": "OwnerID (optional) adds the set constraint to all resources owned by a given user.",
"type": "string"
},
"resource_id": {
"description": "ResourceID (optional) reduces the set to a singular resource. This assigns\na resource ID to the resource type, eg: a single workspace.\nThe rbac library will not fetch the resource from the database, so if you\nare using this option, you should also set the owner ID and organization ID\nif possible. Be as specific as possible using all the fields relevant.",
"type": "string"
},
"resource_type": {
"description": "ResourceType is the name of the resource.\n`./coderd/rbac/object.go` has the list of valid resource types.",
"type": "string"
}
}
},
"codersdk.AuthorizationRequest": {
"type": "object",
"properties": {
"checks": {
"description": "Checks is a map keyed with an arbitrary string to a permission check.\nThe key can be any string that is helpful to the caller, and allows\nmultiple permission checks to be run in a single request.\nThe key ensures that each permission check has the same key in the\nresponse.",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/codersdk.AuthorizationCheck"
}
}
}
},
"codersdk.AuthorizationResponse": {
"type": "object",
"additionalProperties": {
"type": "boolean"
}
},
"codersdk.BuildInfoResponse": {
"type": "object",
"properties": {
"external_url": {
"description": "ExternalURL references the current Coder version.\nFor production builds, this will link directly to a release. For development builds, this will link to a commit.",
"type": "string"
},
"version": {
"description": "Version returns the semantic version of the build.",
"type": "string"
}
}
},
"codersdk.BuildReason": {
"type": "string",
"enum": ["initiator", "autostart", "autostop"],
"x-enum-varnames": [
"BuildReasonInitiator",
"BuildReasonAutostart",
"BuildReasonAutostop"
]
},
"codersdk.CreateFirstUserRequest": {
"type": "object",
"required": ["email", "password", "username"],
"properties": {
"email": {
"type": "string"
},
"password": {
"type": "string"
},
"trial": {
"type": "boolean"
},
"username": {
"type": "string"
}
}
},
"codersdk.CreateFirstUserResponse": {
"type": "object",
"properties": {
"organization_id": {
"type": "string",
"format": "uuid"
},
"user_id": {
"type": "string",
"format": "uuid"
}
}
},
"codersdk.CreateGroupRequest": {
"type": "object",
"properties": {
"avatar_url": {
"type": "string"
},
"name": {
"type": "string"
},
"quota_allowance": {
"type": "integer"
}
}
},
"codersdk.CreateOrganizationRequest": {
"type": "object",
"required": ["name"],
"properties": {
"name": {
"type": "string"
}
}
},
"codersdk.CreateParameterRequest": {
"description": "CreateParameterRequest is a structure used to create a new parameter value for a scope.",
"type": "object",
"required": [
"destination_scheme",
"name",
"source_scheme",
"source_value"
],
"properties": {
"copy_from_parameter": {
"description": "CloneID allows copying the value of another parameter.\nThe other param must be related to the same template_id for this to\nsucceed.\nNo other fields are required if using this, as all fields will be copied\nfrom the other parameter.",
"type": "string",
"format": "uuid"
},
"destination_scheme": {
"enum": ["none", "environment_variable", "provisioner_variable"],
"allOf": [
{
"$ref": "#/definitions/codersdk.ParameterDestinationScheme"
}
]
},
"name": {
"type": "string"
},
"source_scheme": {
"enum": ["none", "data"],
"allOf": [
{
"$ref": "#/definitions/codersdk.ParameterSourceScheme"
}
]
},
"source_value": {
"type": "string"
}
}
},
"codersdk.CreateTemplateRequest": {
"type": "object",
"required": ["name", "template_version_id"],
"properties": {
"allow_user_cancel_workspace_jobs": {
"description": "Allow users to cancel in-progress workspace jobs.\n*bool as the default value is \"true\".",
"type": "boolean"
},
"default_ttl_ms": {
"description": "DefaultTTLMillis allows optionally specifying the default TTL\nfor all workspaces created from this template.",
"type": "integer"
},
"description": {
"description": "Description is a description of what the template contains. It must be\nless than 128 bytes.",
"type": "string"
},
"display_name": {
"description": "DisplayName is the displayed name of the template.",
"type": "string"
},
"icon": {
"description": "Icon is a relative path or external URL that specifies\nan icon to be displayed in the dashboard.",
"type": "string"
},
"max_ttl_ms": {
"description": "MaxTTLMillis allows optionally specifying the max lifetime for\nworkspaces created from this template.",
"type": "integer"
},
"name": {
"description": "Name is the name of the template.",
"type": "string"
},
"parameter_values": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.CreateParameterRequest"
}
},
"template_version_id": {
"description": "VersionID is an in-progress or completed job to use as an initial version\nof the template.\n\nThis is required on creation to enable a user-flow of validating a\ntemplate works. There is no reason the data-model cannot support empty\ntemplates, but it doesn't make sense for users.",
"type": "string",
"format": "uuid"
}
}
},
"codersdk.CreateTemplateVersionDryRunRequest": {
"type": "object",
"properties": {
"parameter_values": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.CreateParameterRequest"
}
},
"rich_parameter_values": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.WorkspaceBuildParameter"
}
},
"user_variable_values": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.VariableValue"
}
},
"workspace_name": {
"type": "string"
}
}
},
"codersdk.CreateTemplateVersionRequest": {
"type": "object",
"required": ["provisioner", "storage_method"],
"properties": {
"example_id": {
"type": "string"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"parameter_values": {
"description": "ParameterValues allows for additional parameters to be provided\nduring the dry-run provision stage.",
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.CreateParameterRequest"
}
},
"provisioner": {
"type": "string",
"enum": ["terraform", "echo"]
},
"storage_method": {
"enum": ["file"],
"allOf": [
{
"$ref": "#/definitions/codersdk.ProvisionerStorageMethod"
}
]
},
"tags": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"template_id": {
"description": "TemplateID optionally associates a version with a template.",
"type": "string",
"format": "uuid"
},
"user_variable_values": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.VariableValue"
}
}
}
},
"codersdk.CreateTestAuditLogRequest": {
"type": "object",
"properties": {
"action": {
"enum": ["create", "write", "delete", "start", "stop"],
"allOf": [
{
"$ref": "#/definitions/codersdk.AuditAction"
}
]
},
"additional_fields": {
"type": "array",
"items": {
"type": "integer"
}
},
"build_reason": {
"enum": ["autostart", "autostop", "initiator"],
"allOf": [
{
"$ref": "#/definitions/codersdk.BuildReason"
}
]
},
"resource_id": {
"type": "string",
"format": "uuid"
},
"resource_type": {
"enum": [
"template",
"template_version",
"user",
"workspace",
"workspace_build",
"git_ssh_key",
"auditable_group"
],
"allOf": [
{
"$ref": "#/definitions/codersdk.ResourceType"
}
]
},
"time": {
"type": "string",
"format": "date-time"
}
}
},
"codersdk.CreateTokenRequest": {
"type": "object",
"properties": {
"lifetime": {
"type": "integer"
},
"scope": {
"enum": ["all", "application_connect"],
"allOf": [
{
"$ref": "#/definitions/codersdk.APIKeyScope"
}
]
},
"token_name": {
"type": "string"
}
}
},
"codersdk.CreateUserRequest": {
"type": "object",
"required": ["email", "organization_id", "password", "username"],
"properties": {
"email": {
"type": "string",
"format": "email"
},
"organization_id": {
"type": "string",
"format": "uuid"
},
"password": {
"type": "string"
},
"username": {
"type": "string"
}
}
},
"codersdk.CreateWorkspaceBuildRequest": {
"type": "object",
"required": ["transition"],
"properties": {
"dry_run": {
"type": "boolean"
},
"orphan": {
"description": "Orphan may be set for the Destroy transition.",
"type": "boolean"
},
"parameter_values": {
"description": "ParameterValues are optional. It will write params to the 'workspace' scope.\nThis will overwrite any existing parameters with the same name.\nThis will not delete old params not included in this list.",
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.CreateParameterRequest"
}
},
"rich_parameter_values": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.WorkspaceBuildParameter"
}
},
"state": {
"type": "array",
"items": {
"type": "integer"
}
},
"template_version_id": {
"type": "string",
"format": "uuid"
},
"transition": {
"enum": ["create", "start", "stop", "delete"],
"allOf": [
{
"$ref": "#/definitions/codersdk.WorkspaceTransition"
}
]
}
}
},
"codersdk.CreateWorkspaceRequest": {
"type": "object",
"required": ["name", "template_id"],
"properties": {
"autostart_schedule": {
"type": "string"
},
"name": {
"type": "string"
},
"parameter_values": {
"description": "ParameterValues allows for additional parameters to be provided\nduring the initial provision.",
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.CreateParameterRequest"
}
},
"rich_parameter_values": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.WorkspaceBuildParameter"
}
},
"template_id": {
"type": "string",
"format": "uuid"
},
"ttl_ms": {
"type": "integer"
}
}
},
"codersdk.DAUEntry": {
"type": "object",
"properties": {
"amount": {
"type": "integer"
},
"date": {
"type": "string",
"format": "date-time"
}
}
},
"codersdk.DERP": {
"type": "object",
"properties": {
"config": {
"$ref": "#/definitions/codersdk.DERPConfig"
},
"server": {
"$ref": "#/definitions/codersdk.DERPServerConfig"
}
}
},
"codersdk.DERPConfig": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"url": {
"type": "string"
}
}
},
"codersdk.DERPRegion": {
"type": "object",
"properties": {
"latency_ms": {
"type": "number"
},
"preferred": {
"type": "boolean"
}
}
},
"codersdk.DERPServerConfig": {
"type": "object",
"properties": {
"enable": {
"type": "boolean"
},
"region_code": {
"type": "string"
},
"region_id": {
"type": "integer"
},
"region_name": {
"type": "string"
},
"relay_url": {
"$ref": "#/definitions/clibase.URL"
},
"stun_addresses": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"codersdk.DangerousConfig": {
"type": "object",
"properties": {
"allow_path_app_sharing": {
"type": "boolean"
},
"allow_path_app_site_owner_access": {
"type": "boolean"
}
}
},
"codersdk.DeploymentConfig": {
"type": "object",
"properties": {
"config": {
"$ref": "#/definitions/codersdk.DeploymentValues"
},
"options": {
"type": "array",
"items": {
"$ref": "#/definitions/clibase.Option"
}
}
}
},
"codersdk.DeploymentDAUsResponse": {
"type": "object",
"properties": {
"entries": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.DAUEntry"
}
}
}
},
"codersdk.DeploymentValues": {
"type": "object",
"properties": {
"access_url": {
"$ref": "#/definitions/clibase.URL"
},
"address": {
"description": "DEPRECATED: Use HTTPAddress or TLS.Address instead.",
"allOf": [
{
"$ref": "#/definitions/clibase.HostPort"
}
]
},
"agent_fallback_troubleshooting_url": {
"$ref": "#/definitions/clibase.URL"
},
"agent_stat_refresh_interval": {
"type": "integer"
},
"audit_logging": {
"type": "boolean"
},
"autobuild_poll_interval": {
"type": "integer"
},
"browser_only": {
"type": "boolean"
},
"cache_directory": {
"type": "string"
},
"config": {
"type": "string"
},
"dangerous": {
"$ref": "#/definitions/codersdk.DangerousConfig"
},
"derp": {
"$ref": "#/definitions/codersdk.DERP"
},
"disable_password_auth": {
"type": "boolean"
},
"disable_path_apps": {
"type": "boolean"
},
"disable_session_expiry_refresh": {
"type": "boolean"
},
"experiments": {
"type": "array",
"items": {
"type": "string"
}
},
"git_auth": {
"$ref": "#/definitions/clibase.Struct-array_codersdk_GitAuthConfig"
},
"http_address": {
"description": "HTTPAddress is a string because it may be set to zero to disable.",
"type": "string"
},
"in_memory_database": {
"type": "boolean"
},
"logging": {
"$ref": "#/definitions/codersdk.LoggingConfig"
},
"max_session_expiry": {
"type": "integer"
},
"max_token_lifetime": {
"type": "integer"
},
"metrics_cache_refresh_interval": {
"type": "integer"
},
"oauth2": {
"$ref": "#/definitions/codersdk.OAuth2Config"
},
"oidc": {
"$ref": "#/definitions/codersdk.OIDCConfig"
},
"pg_connection_url": {
"type": "string"
},
"pprof": {
"$ref": "#/definitions/codersdk.PprofConfig"
},
"prometheus": {
"$ref": "#/definitions/codersdk.PrometheusConfig"
},
"provisioner": {
"$ref": "#/definitions/codersdk.ProvisionerConfig"
},
"proxy_trusted_headers": {
"type": "array",
"items": {
"type": "string"
}
},
"proxy_trusted_origins": {
"type": "array",
"items": {
"type": "string"
}
},
"rate_limit": {
"$ref": "#/definitions/codersdk.RateLimitConfig"
},
"redirect_to_access_url": {
"type": "boolean"
},
"scim_api_key": {
"type": "string"
},
"secure_auth_cookie": {
"type": "boolean"
},
"ssh_keygen_algorithm": {
"type": "string"
},
"strict_transport_security": {
"type": "integer"
},
"strict_transport_security_options": {
"type": "array",
"items": {
"type": "string"
}
},
"support": {
"$ref": "#/definitions/codersdk.SupportConfig"
},
"swagger": {
"$ref": "#/definitions/codersdk.SwaggerConfig"
},
"telemetry": {
"$ref": "#/definitions/codersdk.TelemetryConfig"
},
"tls": {
"$ref": "#/definitions/codersdk.TLSConfig"
},
"trace": {
"$ref": "#/definitions/codersdk.TraceConfig"
},
"update_check": {
"type": "boolean"
},
"verbose": {
"type": "boolean"
},
"wildcard_access_url": {
"$ref": "#/definitions/clibase.URL"
},
"write_config": {
"type": "boolean"
}
}
},
"codersdk.Entitlement": {
"type": "string",
"enum": ["entitled", "grace_period", "not_entitled"],
"x-enum-varnames": [
"EntitlementEntitled",
"EntitlementGracePeriod",
"EntitlementNotEntitled"
]
},
"codersdk.Entitlements": {
"type": "object",
"properties": {
"errors": {
"type": "array",
"items": {
"type": "string"
}
},
"features": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/codersdk.Feature"
}
},
"has_license": {
"type": "boolean"
},
"require_telemetry": {
"type": "boolean"
},
"trial": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"codersdk.Experiment": {
"type": "string",
"enum": ["authz_querier", "template_editor"],
"x-enum-varnames": ["ExperimentAuthzQuerier", "ExperimentTemplateEditor"]
},
"codersdk.Feature": {
"type": "object",
"properties": {
"actual": {
"type": "integer"
},
"enabled": {
"type": "boolean"
},
"entitlement": {
"$ref": "#/definitions/codersdk.Entitlement"
},
"limit": {
"type": "integer"
}
}
},
"codersdk.GenerateAPIKeyResponse": {
"type": "object",
"properties": {
"key": {
"type": "string"
}
}
},
"codersdk.GetUsersResponse": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"users": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.User"
}
}
}
},
"codersdk.GitAuthConfig": {
"type": "object",
"properties": {
"auth_url": {
"type": "string"
},
"client_id": {
"type": "string"
},
"id": {
"type": "string"
},
"no_refresh": {
"type": "boolean"
},
"regex": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"token_url": {
"type": "string"
},
"type": {
"type": "string"
},
"validate_url": {
"type": "string"
}
}
},
"codersdk.GitProvider": {
"type": "string",
"enum": ["azure-devops", "github", "gitlab", "bitbucket"],
"x-enum-varnames": [
"GitProviderAzureDevops",
"GitProviderGitHub",
"GitProviderGitLab",
"GitProviderBitBucket"
]
},
"codersdk.GitSSHKey": {
"type": "object",
"properties": {
"created_at": {
"type": "string",
"format": "date-time"
},
"public_key": {
"type": "string"
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"user_id": {
"type": "string",
"format": "uuid"
}
}
},
"codersdk.Group": {
"type": "object",
"properties": {
"avatar_url": {
"type": "string"
},
"id": {
"type": "string",
"format": "uuid"
},
"members": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.User"
}
},
"name": {
"type": "string"
},
"organization_id": {
"type": "string",
"format": "uuid"
},
"quota_allowance": {
"type": "integer"
}
}
},
"codersdk.Healthcheck": {
"type": "object",
"properties": {
"interval": {
"description": "Interval specifies the seconds between each health check.",
"type": "integer"
},
"threshold": {
"description": "Threshold specifies the number of consecutive failed health checks before returning \"unhealthy\".",
"type": "integer"
},
"url": {
"description": "URL specifies the endpoint to check for the app health.",
"type": "string"
}
}
},
"codersdk.License": {
"type": "object",
"properties": {
"claims": {
"description": "Claims are the JWT claims asserted by the license. Here we use\na generic string map to ensure that all data from the server is\nparsed verbatim, not just the fields this version of Coder\nunderstands.",
"type": "object",
"additionalProperties": true
},
"id": {
"type": "integer"
},
"uploaded_at": {
"type": "string",
"format": "date-time"
},
"uuid": {
"type": "string",
"format": "uuid"
}
}
},
"codersdk.LinkConfig": {
"type": "object",
"properties": {
"icon": {
"type": "string"
},
"name": {
"type": "string"
},
"target": {
"type": "string"
}
}
},
"codersdk.LogLevel": {
"type": "string",
"enum": ["trace", "debug", "info", "warn", "error"],
"x-enum-varnames": [
"LogLevelTrace",
"LogLevelDebug",
"LogLevelInfo",
"LogLevelWarn",
"LogLevelError"
]
},
"codersdk.LogSource": {
"type": "string",
"enum": ["provisioner_daemon", "provisioner"],
"x-enum-varnames": ["LogSourceProvisionerDaemon", "LogSourceProvisioner"]
},
"codersdk.LoggingConfig": {
"type": "object",
"properties": {
"human": {
"type": "string"
},
"json": {
"type": "string"
},
"stackdriver": {
"type": "string"
}
}
},
"codersdk.LoginType": {
"type": "string",
"enum": ["password", "github", "oidc", "token"],
"x-enum-varnames": [
"LoginTypePassword",
"LoginTypeGithub",
"LoginTypeOIDC",
"LoginTypeToken"
]
},
"codersdk.LoginWithPasswordRequest": {
"type": "object",
"required": ["email", "password"],
"properties": {
"email": {
"type": "string",
"format": "email"
},
"password": {
"type": "string"
}
}
},
"codersdk.LoginWithPasswordResponse": {
"type": "object",
"required": ["session_token"],
"properties": {
"session_token": {
"type": "string"
}
}
},
"codersdk.OAuth2Config": {
"type": "object",
"properties": {
"github": {
"$ref": "#/definitions/codersdk.OAuth2GithubConfig"
}
}
},
"codersdk.OAuth2GithubConfig": {
"type": "object",
"properties": {
"allow_everyone": {
"type": "boolean"
},
"allow_signups": {
"type": "boolean"
},
"allowed_orgs": {
"type": "array",
"items": {
"type": "string"
}
},
"allowed_teams": {
"type": "array",
"items": {
"type": "string"
}
},
"client_id": {
"type": "string"
},
"client_secret": {
"type": "string"
},
"enterprise_base_url": {
"type": "string"
}
}
},
"codersdk.OIDCAuthMethod": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"iconUrl": {
"type": "string"
},
"signInText": {
"type": "string"
}
}
},
"codersdk.OIDCConfig": {
"type": "object",
"properties": {
"allow_signups": {
"type": "boolean"
},
"client_id": {
"type": "string"
},
"client_secret": {
"type": "string"
},
"email_domain": {
"type": "array",
"items": {
"type": "string"
}
},
"icon_url": {
"$ref": "#/definitions/clibase.URL"
},
"ignore_email_verified": {
"type": "boolean"
},
"issuer_url": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"sign_in_text": {
"type": "string"
},
"username_field": {
"type": "string"
}
}
},
"codersdk.Organization": {
"type": "object",
"required": ["created_at", "id", "name", "updated_at"],
"properties": {
"created_at": {
"type": "string",
"format": "date-time"
},
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"codersdk.OrganizationMember": {
"type": "object",
"properties": {
"created_at": {
"type": "string",
"format": "date-time"
},
"organization_id": {
"type": "string",
"format": "uuid"
},
"roles": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.Role"
}
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"user_id": {
"type": "string",
"format": "uuid"
}
}
},
"codersdk.Parameter": {
"description": "Parameter represents a set value for the scope.",
"type": "object",
"properties": {
"created_at": {
"type": "string",
"format": "date-time"
},
"destination_scheme": {
"enum": ["none", "environment_variable", "provisioner_variable"],
"allOf": [
{
"$ref": "#/definitions/codersdk.ParameterDestinationScheme"
}
]
},
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"scope": {
"enum": ["template", "workspace", "import_job"],
"allOf": [
{
"$ref": "#/definitions/codersdk.ParameterScope"
}
]
},
"scope_id": {
"type": "string",
"format": "uuid"
},
"source_scheme": {
"enum": ["none", "data"],
"allOf": [
{
"$ref": "#/definitions/codersdk.ParameterSourceScheme"
}
]
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"codersdk.ParameterDestinationScheme": {
"type": "string",
"enum": ["none", "environment_variable", "provisioner_variable"],
"x-enum-varnames": [
"ParameterDestinationSchemeNone",
"ParameterDestinationSchemeEnvironmentVariable",
"ParameterDestinationSchemeProvisionerVariable"
]
},
"codersdk.ParameterSchema": {
"type": "object",
"properties": {
"allow_override_destination": {
"type": "boolean"
},
"allow_override_source": {
"type": "boolean"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"default_destination_scheme": {
"enum": ["none", "environment_variable", "provisioner_variable"],
"allOf": [
{
"$ref": "#/definitions/codersdk.ParameterDestinationScheme"
}
]
},
"default_refresh": {
"type": "string"
},
"default_source_scheme": {
"enum": ["none", "data"],
"allOf": [
{
"$ref": "#/definitions/codersdk.ParameterSourceScheme"
}
]
},
"default_source_value": {
"type": "string"
},
"description": {
"type": "string"
},
"id": {
"type": "string",
"format": "uuid"
},
"job_id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"redisplay_value": {
"type": "boolean"
},
"validation_condition": {
"type": "string"
},
"validation_contains": {
"description": "This is a special array of items provided if the validation condition\nexplicitly states the value must be one of a set.",
"type": "array",
"items": {
"type": "string"
}
},
"validation_error": {
"type": "string"
},
"validation_type_system": {
"type": "string"
},
"validation_value_type": {
"type": "string"
}
}
},
"codersdk.ParameterScope": {
"type": "string",
"enum": ["template", "workspace", "import_job"],
"x-enum-varnames": [
"ParameterTemplate",
"ParameterWorkspace",
"ParameterImportJob"
]
},
"codersdk.ParameterSourceScheme": {
"type": "string",
"enum": ["none", "data"],
"x-enum-varnames": [
"ParameterSourceSchemeNone",
"ParameterSourceSchemeData"
]
},
"codersdk.PprofConfig": {
"type": "object",
"properties": {
"address": {
"$ref": "#/definitions/clibase.HostPort"
},
"enable": {
"type": "boolean"
}
}
},
"codersdk.PrometheusConfig": {
"type": "object",
"properties": {
"address": {
"$ref": "#/definitions/clibase.HostPort"
},
"enable": {
"type": "boolean"
}
}
},
"codersdk.ProvisionerConfig": {
"type": "object",
"properties": {
"daemon_poll_interval": {
"type": "integer"
},
"daemon_poll_jitter": {
"type": "integer"
},
"daemons": {
"type": "integer"
},
"force_cancel_interval": {
"type": "integer"
}
}
},
"codersdk.ProvisionerDaemon": {
"type": "object",
"properties": {
"created_at": {
"type": "string",
"format": "date-time"
},
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"provisioners": {
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"updated_at": {
"format": "date-time",
"allOf": [
{
"$ref": "#/definitions/sql.NullTime"
}
]
}
}
},
"codersdk.ProvisionerJob": {
"type": "object",
"properties": {
"canceled_at": {
"type": "string",
"format": "date-time"
},
"completed_at": {
"type": "string",
"format": "date-time"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"error": {
"type": "string"
},
"file_id": {
"type": "string",
"format": "uuid"
},
"id": {
"type": "string",
"format": "uuid"
},
"started_at": {
"type": "string",
"format": "date-time"
},
"status": {
"enum": [
"pending",
"running",
"succeeded",
"canceling",
"canceled",
"failed"
],
"allOf": [
{
"$ref": "#/definitions/codersdk.ProvisionerJobStatus"
}
]
},
"tags": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"worker_id": {
"type": "string",
"format": "uuid"
}
}
},
"codersdk.ProvisionerJobLog": {
"type": "object",
"properties": {
"created_at": {
"type": "string",
"format": "date-time"
},
"id": {
"type": "integer"
},
"log_level": {
"enum": ["trace", "debug", "info", "warn", "error"],
"allOf": [
{
"$ref": "#/definitions/codersdk.LogLevel"
}
]
},
"log_source": {
"$ref": "#/definitions/codersdk.LogSource"
},
"output": {
"type": "string"
},
"stage": {
"type": "string"
}
}
},
"codersdk.ProvisionerJobStatus": {
"type": "string",
"enum": [
"pending",
"running",
"succeeded",
"canceling",
"canceled",
"failed"
],
"x-enum-varnames": [
"ProvisionerJobPending",
"ProvisionerJobRunning",
"ProvisionerJobSucceeded",
"ProvisionerJobCanceling",
"ProvisionerJobCanceled",
"ProvisionerJobFailed"
]
},
"codersdk.ProvisionerStorageMethod": {
"type": "string",
"enum": ["file"],
"x-enum-varnames": ["ProvisionerStorageMethodFile"]
},
"codersdk.PutExtendWorkspaceRequest": {
"type": "object",
"required": ["deadline"],
"properties": {
"deadline": {
"type": "string",
"format": "date-time"
}
}
},
"codersdk.RateLimitConfig": {
"type": "object",
"properties": {
"api": {
"type": "integer"
},
"disable_all": {
"type": "boolean"
}
}
},
"codersdk.Replica": {
"type": "object",
"properties": {
"created_at": {
"description": "CreatedAt is the timestamp when the replica was first seen.",
"type": "string",
"format": "date-time"
},
"database_latency": {
"description": "DatabaseLatency is the latency in microseconds to the database.",
"type": "integer"
},
"error": {
"description": "Error is the replica error.",
"type": "string"
},
"hostname": {
"description": "Hostname is the hostname of the replica.",
"type": "string"
},
"id": {
"description": "ID is the unique identifier for the replica.",
"type": "string",
"format": "uuid"
},
"region_id": {
"description": "RegionID is the region of the replica.",
"type": "integer"
},
"relay_address": {
"description": "RelayAddress is the accessible address to relay DERP connections.",
"type": "string"
}
}
},
"codersdk.ResourceType": {
"type": "string",
"enum": [
"template",
"template_version",
"user",
"workspace",
"workspace_build",
"git_ssh_key",
"api_key",
"group",
"license"
],
"x-enum-varnames": [
"ResourceTypeTemplate",
"ResourceTypeTemplateVersion",
"ResourceTypeUser",
"ResourceTypeWorkspace",
"ResourceTypeWorkspaceBuild",
"ResourceTypeGitSSHKey",
"ResourceTypeAPIKey",
"ResourceTypeGroup",
"ResourceTypeLicense"
]
},
"codersdk.Response": {
"type": "object",
"properties": {
"detail": {
"description": "Detail is a debug message that provides further insight into why the\naction failed. This information can be technical and a regular golang\nerr.Error() text.\n- \"database: too many open connections\"\n- \"stat: too many open files\"",
"type": "string"
},
"message": {
"description": "Message is an actionable message that depicts actions the request took.\nThese messages should be fully formed sentences with proper punctuation.\nExamples:\n- \"A user has been created.\"\n- \"Failed to create a user.\"",
"type": "string"
},
"validations": {
"description": "Validations are form field-specific friendly error messages. They will be\nshown on a form field in the UI. These can also be used to add additional\ncontext if there is a set of errors in the primary 'Message'.",
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.ValidationError"
}
}
}
},
"codersdk.Role": {
"type": "object",
"properties": {
"display_name": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"codersdk.ServiceBannerConfig": {
"type": "object",
"properties": {
"background_color": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"message": {
"type": "string"
}
}
},
"codersdk.SupportConfig": {
"type": "object",
"properties": {
"links": {
"$ref": "#/definitions/clibase.Struct-array_codersdk_LinkConfig"
}
}
},
"codersdk.SwaggerConfig": {
"type": "object",
"properties": {
"enable": {
"type": "boolean"
}
}
},
"codersdk.TLSConfig": {
"type": "object",
"properties": {
"address": {
"$ref": "#/definitions/clibase.HostPort"
},
"cert_file": {
"type": "array",
"items": {
"type": "string"
}
},
"client_auth": {
"type": "string"
},
"client_ca_file": {
"type": "string"
},
"client_cert_file": {
"type": "string"
},
"client_key_file": {
"type": "string"
},
"enable": {
"type": "boolean"
},
"key_file": {
"type": "array",
"items": {
"type": "string"
}
},
"min_version": {
"type": "string"
},
"redirect_http": {
"type": "boolean"
}
}
},
"codersdk.TelemetryConfig": {
"type": "object",
"properties": {
"enable": {
"type": "boolean"
},
"trace": {
"type": "boolean"
},
"url": {
"$ref": "#/definitions/clibase.URL"
}
}
},
"codersdk.Template": {
"type": "object",
"properties": {
"active_user_count": {
"description": "ActiveUserCount is set to -1 when loading.",
"type": "integer"
},
"active_version_id": {
"type": "string",
"format": "uuid"
},
"allow_user_cancel_workspace_jobs": {
"type": "boolean"
},
"build_time_stats": {
"$ref": "#/definitions/codersdk.TemplateBuildTimeStats"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"created_by_id": {
"type": "string",
"format": "uuid"
},
"created_by_name": {
"type": "string"
},
"default_ttl_ms": {
"type": "integer"
},
"description": {
"type": "string"
},
"display_name": {
"type": "string"
},
"icon": {
"type": "string"
},
"id": {
"type": "string",
"format": "uuid"
},
"max_ttl_ms": {
"description": "MaxTTLMillis is an enterprise feature. It's value is only used if your\nlicense is entitled to use the advanced template scheduling feature.",
"type": "integer"
},
"name": {
"type": "string"
},
"organization_id": {
"type": "string",
"format": "uuid"
},
"provisioner": {
"type": "string",
"enum": ["terraform"]
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"codersdk.TemplateBuildTimeStats": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/codersdk.TransitionStats"
}
},
"codersdk.TemplateDAUsResponse": {
"type": "object",
"properties": {
"entries": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.DAUEntry"
}
}
}
},
"codersdk.TemplateExample": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"icon": {
"type": "string"
},
"id": {
"type": "string",
"format": "uuid"
},
"markdown": {
"type": "string"
},
"name": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": "string"
}
}
},
"codersdk.TemplateRole": {
"type": "string",
"enum": ["admin", "use", ""],
"x-enum-varnames": [
"TemplateRoleAdmin",
"TemplateRoleUse",
"TemplateRoleDeleted"
]
},
"codersdk.TemplateUser": {
"type": "object",
"required": ["created_at", "email", "id", "username"],
"properties": {
"avatar_url": {
"type": "string",
"format": "uri"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"email": {
"type": "string",
"format": "email"
},
"id": {
"type": "string",
"format": "uuid"
},
"last_seen_at": {
"type": "string",
"format": "date-time"
},
"organization_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"role": {
"enum": ["admin", "use"],
"allOf": [
{
"$ref": "#/definitions/codersdk.TemplateRole"
}
]
},
"roles": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.Role"
}
},
"status": {
"enum": ["active", "suspended"],
"allOf": [
{
"$ref": "#/definitions/codersdk.UserStatus"
}
]
},
"username": {
"type": "string"
}
}
},
"codersdk.TemplateVersion": {
"type": "object",
"properties": {
"created_at": {
"type": "string",
"format": "date-time"
},
"created_by": {
"$ref": "#/definitions/codersdk.User"
},
"id": {
"type": "string",
"format": "uuid"
},
"job": {
"$ref": "#/definitions/codersdk.ProvisionerJob"
},
"name": {
"type": "string"
},
"organization_id": {
"type": "string",
"format": "uuid"
},
"readme": {
"type": "string"
},
"template_id": {
"type": "string",
"format": "uuid"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"codersdk.TemplateVersionGitAuth": {
"type": "object",
"properties": {
"authenticate_url": {
"type": "string"
},
"authenticated": {
"type": "boolean"
},
"id": {
"type": "string"
},
"type": {
"$ref": "#/definitions/codersdk.GitProvider"
}
}
},
"codersdk.TemplateVersionParameter": {
"type": "object",
"properties": {
"default_value": {
"type": "string"
},
"description": {
"type": "string"
},
"description_plaintext": {
"type": "string"
},
"icon": {
"type": "string"
},
"mutable": {
"type": "boolean"
},
"name": {
"type": "string"
},
"options": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.TemplateVersionParameterOption"
}
},
"required": {
"type": "boolean"
},
"type": {
"type": "string",
"enum": ["string", "number", "bool"]
},
"validation_error": {
"type": "string"
},
"validation_max": {
"type": "integer"
},
"validation_min": {
"type": "integer"
},
"validation_monotonic": {
"enum": ["increasing", "decreasing"],
"allOf": [
{
"$ref": "#/definitions/codersdk.ValidationMonotonicOrder"
}
]
},
"validation_regex": {
"type": "string"
}
}
},
"codersdk.TemplateVersionParameterOption": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"icon": {
"type": "string"
},
"name": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"codersdk.TemplateVersionVariable": {
"type": "object",
"properties": {
"default_value": {
"type": "string"
},
"description": {
"type": "string"
},
"name": {
"type": "string"
},
"required": {
"type": "boolean"
},
"sensitive": {
"type": "boolean"
},
"type": {
"type": "string",
"enum": ["string", "number", "bool"]
},
"value": {
"type": "string"
}
}
},
"codersdk.TraceConfig": {
"type": "object",
"properties": {
"capture_logs": {
"type": "boolean"
},
"enable": {
"type": "boolean"
},
"honeycomb_api_key": {
"type": "string"
}
}
},
"codersdk.TransitionStats": {
"type": "object",
"properties": {
"p50": {
"type": "integer",
"example": 123
},
"p95": {
"type": "integer",
"example": 146
}
}
},
"codersdk.UpdateActiveTemplateVersion": {
"type": "object",
"required": ["id"],
"properties": {
"id": {
"type": "string",
"format": "uuid"
}
}
},
"codersdk.UpdateAppearanceConfig": {
"type": "object",
"properties": {
"logo_url": {
"type": "string"
},
"service_banner": {
"$ref": "#/definitions/codersdk.ServiceBannerConfig"
}
}
},
"codersdk.UpdateCheckResponse": {
"type": "object",
"properties": {
"current": {
"description": "Current indicates whether the server version is the same as the latest.",
"type": "boolean"
},
"url": {
"description": "URL to download the latest release of Coder.",
"type": "string"
},
"version": {
"description": "Version is the semantic version for the latest release of Coder.",
"type": "string"
}
}
},
"codersdk.UpdateRoles": {
"type": "object",
"properties": {
"roles": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"codersdk.UpdateTemplateACL": {
"type": "object",
"properties": {
"group_perms": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/codersdk.TemplateRole"
}
},
"user_perms": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/codersdk.TemplateRole"
}
}
}
},
"codersdk.UpdateUserPasswordRequest": {
"type": "object",
"required": ["password"],
"properties": {
"old_password": {
"type": "string"
},
"password": {
"type": "string"
}
}
},
"codersdk.UpdateUserProfileRequest": {
"type": "object",
"required": ["username"],
"properties": {
"username": {
"type": "string"
}
}
},
"codersdk.UpdateWorkspaceAutostartRequest": {
"type": "object",
"properties": {
"schedule": {
"type": "string"
}
}
},
"codersdk.UpdateWorkspaceRequest": {
"type": "object",
"properties": {
"name": {
"type": "string"
}
}
},
"codersdk.UpdateWorkspaceTTLRequest": {
"type": "object",
"properties": {
"ttl_ms": {
"type": "integer"
}
}
},
"codersdk.UploadResponse": {
"type": "object",
"properties": {
"hash": {
"type": "string",
"format": "uuid"
}
}
},
"codersdk.User": {
"type": "object",
"required": ["created_at", "email", "id", "username"],
"properties": {
"avatar_url": {
"type": "string",
"format": "uri"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"email": {
"type": "string",
"format": "email"
},
"id": {
"type": "string",
"format": "uuid"
},
"last_seen_at": {
"type": "string",
"format": "date-time"
},
"organization_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"roles": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.Role"
}
},
"status": {
"enum": ["active", "suspended"],
"allOf": [
{
"$ref": "#/definitions/codersdk.UserStatus"
}
]
},
"username": {
"type": "string"
}
}
},
"codersdk.UserStatus": {
"type": "string",
"enum": ["active", "suspended"],
"x-enum-varnames": ["UserStatusActive", "UserStatusSuspended"]
},
"codersdk.ValidationError": {
"type": "object",
"required": ["detail", "field"],
"properties": {
"detail": {
"type": "string"
},
"field": {
"type": "string"
}
}
},
"codersdk.ValidationMonotonicOrder": {
"type": "string",
"enum": ["increasing", "decreasing"],
"x-enum-varnames": [
"MonotonicOrderIncreasing",
"MonotonicOrderDecreasing"
]
},
"codersdk.VariableValue": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"codersdk.Workspace": {
"type": "object",
"properties": {
"autostart_schedule": {
"type": "string"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"id": {
"type": "string",
"format": "uuid"
},
"last_used_at": {
"type": "string",
"format": "date-time"
},
"latest_build": {
"$ref": "#/definitions/codersdk.WorkspaceBuild"
},
"name": {
"type": "string"
},
"outdated": {
"type": "boolean"
},
"owner_id": {
"type": "string",
"format": "uuid"
},
"owner_name": {
"type": "string"
},
"template_allow_user_cancel_workspace_jobs": {
"type": "boolean"
},
"template_display_name": {
"type": "string"
},
"template_icon": {
"type": "string"
},
"template_id": {
"type": "string",
"format": "uuid"
},
"template_name": {
"type": "string"
},
"ttl_ms": {
"type": "integer"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
},
"codersdk.WorkspaceAgent": {
"type": "object",
"properties": {
"apps": {
"type": "array",
"items": {
"$ref": "#/definitions/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"
},
"environment_variables": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"expanded_directory": {
"type": "string"
},
"first_connected_at": {
"type": "string",
"format": "date-time"
},
"id": {
"type": "string",
"format": "uuid"
},
"instance_id": {
"type": "string"
},
"last_connected_at": {
"type": "string",
"format": "date-time"
},
"latency": {
"description": "DERPLatency is mapped by region name (e.g. \"New York City\", \"Seattle\").",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/codersdk.DERPRegion"
}
},
"lifecycle_state": {
"$ref": "#/definitions/codersdk.WorkspaceAgentLifecycle"
},
"login_before_ready": {
"description": "LoginBeforeReady if true, the agent will delay logins until it is ready (e.g. executing startup script has ended).",
"type": "boolean"
},
"name": {
"type": "string"
},
"operating_system": {
"type": "string"
},
"resource_id": {
"type": "string",
"format": "uuid"
},
"shutdown_script": {
"type": "string"
},
"shutdown_script_timeout_seconds": {
"type": "integer"
},
"startup_script": {
"type": "string"
},
"startup_script_timeout_seconds": {
"description": "StartupScriptTimeoutSeconds is the number of seconds to wait for the startup script to complete. If the script does not complete within this time, the agent lifecycle will be marked as start_timeout.",
"type": "integer"
},
"status": {
"$ref": "#/definitions/codersdk.WorkspaceAgentStatus"
},
"troubleshooting_url": {
"type": "string"
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"version": {
"type": "string"
}
}
},
"codersdk.WorkspaceAgentConnectionInfo": {
"type": "object",
"properties": {
"derp_map": {
"$ref": "#/definitions/tailcfg.DERPMap"
}
}
},
"codersdk.WorkspaceAgentLifecycle": {
"type": "string",
"enum": [
"created",
"starting",
"start_timeout",
"start_error",
"ready",
"shutting_down",
"shutdown_timeout",
"shutdown_error",
"off"
],
"x-enum-varnames": [
"WorkspaceAgentLifecycleCreated",
"WorkspaceAgentLifecycleStarting",
"WorkspaceAgentLifecycleStartTimeout",
"WorkspaceAgentLifecycleStartError",
"WorkspaceAgentLifecycleReady",
"WorkspaceAgentLifecycleShuttingDown",
"WorkspaceAgentLifecycleShutdownTimeout",
"WorkspaceAgentLifecycleShutdownError",
"WorkspaceAgentLifecycleOff"
]
},
"codersdk.WorkspaceAgentListeningPort": {
"type": "object",
"properties": {
"network": {
"description": "only \"tcp\" at the moment",
"type": "string"
},
"port": {
"type": "integer"
},
"process_name": {
"description": "may be empty",
"type": "string"
}
}
},
"codersdk.WorkspaceAgentListeningPortsResponse": {
"type": "object",
"properties": {
"ports": {
"description": "If there are no ports in the list, nothing should be displayed in the UI.\nThere must not be a \"no ports available\" message or anything similar, as\nthere will always be no ports displayed on platforms where our port\ndetection logic is unsupported.",
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.WorkspaceAgentListeningPort"
}
}
}
},
"codersdk.WorkspaceAgentStatus": {
"type": "string",
"enum": ["connecting", "connected", "disconnected", "timeout"],
"x-enum-varnames": [
"WorkspaceAgentConnecting",
"WorkspaceAgentConnected",
"WorkspaceAgentDisconnected",
"WorkspaceAgentTimeout"
]
},
"codersdk.WorkspaceApp": {
"type": "object",
"properties": {
"command": {
"type": "string"
},
"display_name": {
"description": "DisplayName is a friendly name for the app.",
"type": "string"
},
"external": {
"description": "External specifies whether the URL should be opened externally on\nthe client or not.",
"type": "boolean"
},
"health": {
"$ref": "#/definitions/codersdk.WorkspaceAppHealth"
},
"healthcheck": {
"description": "Healthcheck specifies the configuration for checking app health.",
"allOf": [
{
"$ref": "#/definitions/codersdk.Healthcheck"
}
]
},
"icon": {
"description": "Icon is a relative path or external URL that specifies\nan icon to be displayed in the dashboard.",
"type": "string"
},
"id": {
"type": "string",
"format": "uuid"
},
"sharing_level": {
"enum": ["owner", "authenticated", "public"],
"allOf": [
{
"$ref": "#/definitions/codersdk.WorkspaceAppSharingLevel"
}
]
},
"slug": {
"description": "Slug is a unique identifier within the agent.",
"type": "string"
},
"subdomain": {
"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.",
"type": "boolean"
},
"url": {
"description": "URL is the address being proxied to inside the workspace.\nIf external is specified, this will be opened on the client.",
"type": "string"
}
}
},
"codersdk.WorkspaceAppHealth": {
"type": "string",
"enum": ["disabled", "initializing", "healthy", "unhealthy"],
"x-enum-varnames": [
"WorkspaceAppHealthDisabled",
"WorkspaceAppHealthInitializing",
"WorkspaceAppHealthHealthy",
"WorkspaceAppHealthUnhealthy"
]
},
"codersdk.WorkspaceAppSharingLevel": {
"type": "string",
"enum": ["owner", "authenticated", "public"],
"x-enum-varnames": [
"WorkspaceAppSharingLevelOwner",
"WorkspaceAppSharingLevelAuthenticated",
"WorkspaceAppSharingLevelPublic"
]
},
"codersdk.WorkspaceBuild": {
"type": "object",
"properties": {
"build_number": {
"type": "integer"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"daily_cost": {
"type": "integer"
},
"deadline": {
"type": "string",
"format": "date-time"
},
"id": {
"type": "string",
"format": "uuid"
},
"initiator_id": {
"type": "string",
"format": "uuid"
},
"initiator_name": {
"type": "string"
},
"job": {
"$ref": "#/definitions/codersdk.ProvisionerJob"
},
"max_deadline": {
"type": "string",
"format": "date-time"
},
"reason": {
"enum": ["initiator", "autostart", "autostop"],
"allOf": [
{
"$ref": "#/definitions/codersdk.BuildReason"
}
]
},
"resources": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.WorkspaceResource"
}
},
"status": {
"enum": [
"pending",
"starting",
"running",
"stopping",
"stopped",
"failed",
"canceling",
"canceled",
"deleting",
"deleted"
],
"allOf": [
{
"$ref": "#/definitions/codersdk.WorkspaceStatus"
}
]
},
"template_version_id": {
"type": "string",
"format": "uuid"
},
"template_version_name": {
"type": "string"
},
"transition": {
"enum": ["start", "stop", "delete"],
"allOf": [
{
"$ref": "#/definitions/codersdk.WorkspaceTransition"
}
]
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"workspace_id": {
"type": "string",
"format": "uuid"
},
"workspace_name": {
"type": "string"
},
"workspace_owner_id": {
"type": "string",
"format": "uuid"
},
"workspace_owner_name": {
"type": "string"
}
}
},
"codersdk.WorkspaceBuildParameter": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"codersdk.WorkspaceQuota": {
"type": "object",
"properties": {
"budget": {
"type": "integer"
},
"credits_consumed": {
"type": "integer"
}
}
},
"codersdk.WorkspaceResource": {
"type": "object",
"properties": {
"agents": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.WorkspaceAgent"
}
},
"created_at": {
"type": "string",
"format": "date-time"
},
"daily_cost": {
"type": "integer"
},
"hide": {
"type": "boolean"
},
"icon": {
"type": "string"
},
"id": {
"type": "string",
"format": "uuid"
},
"job_id": {
"type": "string",
"format": "uuid"
},
"metadata": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.WorkspaceResourceMetadata"
}
},
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"workspace_transition": {
"enum": ["start", "stop", "delete"],
"allOf": [
{
"$ref": "#/definitions/codersdk.WorkspaceTransition"
}
]
}
}
},
"codersdk.WorkspaceResourceMetadata": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"sensitive": {
"type": "boolean"
},
"value": {
"type": "string"
}
}
},
"codersdk.WorkspaceStatus": {
"type": "string",
"enum": [
"pending",
"starting",
"running",
"stopping",
"stopped",
"failed",
"canceling",
"canceled",
"deleting",
"deleted"
],
"x-enum-varnames": [
"WorkspaceStatusPending",
"WorkspaceStatusStarting",
"WorkspaceStatusRunning",
"WorkspaceStatusStopping",
"WorkspaceStatusStopped",
"WorkspaceStatusFailed",
"WorkspaceStatusCanceling",
"WorkspaceStatusCanceled",
"WorkspaceStatusDeleting",
"WorkspaceStatusDeleted"
]
},
"codersdk.WorkspaceTransition": {
"type": "string",
"enum": ["start", "stop", "delete"],
"x-enum-varnames": [
"WorkspaceTransitionStart",
"WorkspaceTransitionStop",
"WorkspaceTransitionDelete"
]
},
"codersdk.WorkspacesResponse": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"workspaces": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.Workspace"
}
}
}
},
"database.ParameterDestinationScheme": {
"type": "string",
"enum": ["none", "environment_variable", "provisioner_variable"],
"x-enum-varnames": [
"ParameterDestinationSchemeNone",
"ParameterDestinationSchemeEnvironmentVariable",
"ParameterDestinationSchemeProvisionerVariable"
]
},
"database.ParameterScope": {
"type": "string",
"enum": ["template", "import_job", "workspace"],
"x-enum-varnames": [
"ParameterScopeTemplate",
"ParameterScopeImportJob",
"ParameterScopeWorkspace"
]
},
"database.ParameterSourceScheme": {
"type": "string",
"enum": ["none", "data"],
"x-enum-varnames": [
"ParameterSourceSchemeNone",
"ParameterSourceSchemeData"
]
},
"parameter.ComputedValue": {
"type": "object",
"properties": {
"created_at": {
"type": "string"
},
"default_source_value": {
"type": "boolean"
},
"destination_scheme": {
"$ref": "#/definitions/database.ParameterDestinationScheme"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"schema_id": {
"type": "string"
},
"scope": {
"$ref": "#/definitions/database.ParameterScope"
},
"scope_id": {
"type": "string"
},
"source_scheme": {
"$ref": "#/definitions/database.ParameterSourceScheme"
},
"source_value": {
"type": "string"
},
"updated_at": {
"type": "string"
}
}
},
"sql.NullTime": {
"type": "object",
"properties": {
"time": {
"type": "string"
},
"valid": {
"description": "Valid is true if Time is not NULL",
"type": "boolean"
}
}
},
"tailcfg.DERPMap": {
"type": "object",
"properties": {
"omitDefaultRegions": {
"description": "OmitDefaultRegions specifies to not use Tailscale's DERP servers, and only use those\nspecified in this DERPMap. If there are none set outside of the defaults, this is a noop.",
"type": "boolean"
},
"regions": {
"description": "Regions is the set of geographic regions running DERP node(s).\n\nIt's keyed by the DERPRegion.RegionID.\n\nThe numbers are not necessarily contiguous.",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/tailcfg.DERPRegion"
}
}
}
},
"tailcfg.DERPNode": {
"type": "object",
"properties": {
"certName": {
"description": "CertName optionally specifies the expected TLS cert common\nname. If empty, HostName is used. If CertName is non-empty,\nHostName is only used for the TCP dial (if IPv4/IPv6 are\nnot present) + TLS ClientHello.",
"type": "string"
},
"derpport": {
"description": "DERPPort optionally provides an alternate TLS port number\nfor the DERP HTTPS server.\n\nIf zero, 443 is used.",
"type": "integer"
},
"forceHTTP": {
"description": "ForceHTTP is used by unit tests to force HTTP.\nIt should not be set by users.",
"type": "boolean"
},
"hostName": {
"description": "HostName is the DERP node's hostname.\n\nIt is required but need not be unique; multiple nodes may\nhave the same HostName but vary in configuration otherwise.",
"type": "string"
},
"insecureForTests": {
"description": "InsecureForTests is used by unit tests to disable TLS verification.\nIt should not be set by users.",
"type": "boolean"
},
"ipv4": {
"description": "IPv4 optionally forces an IPv4 address to use, instead of using DNS.\nIf empty, A record(s) from DNS lookups of HostName are used.\nIf the string is not an IPv4 address, IPv4 is not used; the\nconventional string to disable IPv4 (and not use DNS) is\n\"none\".",
"type": "string"
},
"ipv6": {
"description": "IPv6 optionally forces an IPv6 address to use, instead of using DNS.\nIf empty, AAAA record(s) from DNS lookups of HostName are used.\nIf the string is not an IPv6 address, IPv6 is not used; the\nconventional string to disable IPv6 (and not use DNS) is\n\"none\".",
"type": "string"
},
"name": {
"description": "Name is a unique node name (across all regions).\nIt is not a host name.\nIt's typically of the form \"1b\", \"2a\", \"3b\", etc. (region\nID + suffix within that region)",
"type": "string"
},
"regionID": {
"description": "RegionID is the RegionID of the DERPRegion that this node\nis running in.",
"type": "integer"
},
"stunonly": {
"description": "STUNOnly marks a node as only a STUN server and not a DERP\nserver.",
"type": "boolean"
},
"stunport": {
"description": "Port optionally specifies a STUN port to use.\nZero means 3478.\nTo disable STUN on this node, use -1.",
"type": "integer"
},
"stuntestIP": {
"description": "STUNTestIP is used in tests to override the STUN server's IP.\nIf empty, it's assumed to be the same as the DERP server.",
"type": "string"
}
}
},
"tailcfg.DERPRegion": {
"type": "object",
"properties": {
"avoid": {
"description": "Avoid is whether the client should avoid picking this as its home\nregion. The region should only be used if a peer is there.\nClients already using this region as their home should migrate\naway to a new region without Avoid set.",
"type": "boolean"
},
"embeddedRelay": {
"description": "EmbeddedRelay is true when the region is bundled with the Coder\ncontrol plane.",
"type": "boolean"
},
"nodes": {
"description": "Nodes are the DERP nodes running in this region, in\npriority order for the current client. Client TLS\nconnections should ideally only go to the first entry\n(falling back to the second if necessary). STUN packets\nshould go to the first 1 or 2.\n\nIf nodes within a region route packets amongst themselves,\nbut not to other regions. That said, each user/domain\nshould get a the same preferred node order, so if all nodes\nfor a user/network pick the first one (as they should, when\nthings are healthy), the inter-cluster routing is minimal\nto zero.",
"type": "array",
"items": {
"$ref": "#/definitions/tailcfg.DERPNode"
}
},
"regionCode": {
"description": "RegionCode is a short name for the region. It's usually a popular\ncity or airport code in the region: \"nyc\", \"sf\", \"sin\",\n\"fra\", etc.",
"type": "string"
},
"regionID": {
"description": "RegionID is a unique integer for a geographic region.\n\nIt corresponds to the legacy derpN.tailscale.com hostnames\nused by older clients. (Older clients will continue to resolve\nderpN.tailscale.com when contacting peers, rather than use\nthe server-provided DERPMap)\n\nRegionIDs must be non-zero, positive, and guaranteed to fit\nin a JavaScript number.\n\nRegionIDs in range 900-999 are reserved for end users to run their\nown DERP nodes.",
"type": "integer"
},
"regionName": {
"description": "RegionName is a long English name for the region: \"New York City\",\n\"San Francisco\", \"Singapore\", \"Frankfurt\", etc.",
"type": "string"
}
}
},
"url.Userinfo": {
"type": "object"
}
},
"securityDefinitions": {
"CoderSessionToken": {
"type": "apiKey",
"name": "Coder-Session-Token",
"in": "header"
}
}
}