{
  "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.AppearanceConfig"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/codersdk.AppearanceConfig"
            }
          }
        }
      }
    },
    "/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.GetAppHostResponse"
            }
          }
        }
      }
    },
    "/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"
          }
        }
      }
    },
    "/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": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "/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"
            }
          }
        }
      }
    },
    "/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": []
          }
        ],
        "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
          }
        ],
        "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}/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.CreateTemplateVersionDryRunRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/codersdk.TemplateVersion"
            }
          }
        }
      }
    },
    "/organizations/{organization}/templateversions/{templateversionname}": {
      "get": {
        "security": [
          {
            "CoderSessionToken": []
          }
        ],
        "produces": ["application/json"],
        "tags": ["Templates"],
        "summary": "Get template version by organization and name",
        "operationId": "get-template-version-by-organization-and-name",
        "parameters": [
          {
            "type": "string",
            "format": "uuid",
            "description": "Organization ID",
            "name": "organization",
            "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/{templateversionname}/previous": {
      "get": {
        "security": [
          {
            "CoderSessionToken": []
          }
        ],
        "produces": ["application/json"],
        "tags": ["Templates"],
        "summary": "Get previous template version by organization and name",
        "operationId": "get-previous-template-version-by-organization-and-name",
        "parameters": [
          {
            "type": "string",
            "format": "uuid",
            "description": "Organization ID",
            "name": "organization",
            "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"
            }
          }
        }
      }
    },
    "/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}/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/parameter.ComputedValue"
              }
            }
          }
        }
      }
    },
    "/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"
              }
            }
          }
        }
      }
    },
    "/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": {
        "security": [
          {
            "CoderSessionToken": []
          }
        ],
        "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/{keyid}": {
      "get": {
        "security": [
          {
            "CoderSessionToken": []
          }
        ],
        "produces": ["application/json"],
        "tags": ["Users"],
        "summary": "Get API key",
        "operationId": "get-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": {
          "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/codersdk.AWSInstanceIdentityToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/codersdk.WorkspaceAgentAuthenticateResponse"
            }
          }
        }
      }
    },
    "/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/codersdk.AzureInstanceIdentityToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/codersdk.WorkspaceAgentAuthenticateResponse"
            }
          }
        }
      }
    },
    "/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/codersdk.GoogleInstanceIdentityToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/codersdk.WorkspaceAgentAuthenticateResponse"
            }
          }
        }
      }
    },
    "/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/codersdk.PostWorkspaceAppHealthsRequest"
            }
          }
        ],
        "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/codersdk.WorkspaceAgentGitAuthResponse"
            }
          }
        }
      }
    },
    "/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/codersdk.AgentGitSSHKey"
            }
          }
        }
      }
    },
    "/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/codersdk.WorkspaceAgentMetadata"
            }
          }
        }
      }
    },
    "/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/codersdk.AgentStats"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/codersdk.AgentStatsResponse"
            }
          }
        }
      }
    },
    "/workspaceagents/me/version": {
      "post": {
        "security": [
          {
            "CoderSessionToken": []
          }
        ],
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Agents"],
        "summary": "Submit workspace agent version",
        "operationId": "submit-workspace-agent-version",
        "parameters": [
          {
            "description": "Version request",
            "name": "request",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/codersdk.PostWorkspaceAgentVersionRequest"
            }
          }
        ],
        "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.ListeningPortsResponse"
            }
          }
        }
      }
    },
    "/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": {
    "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",
        "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"
            }
          ]
        },
        "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.AWSInstanceIdentityToken": {
      "type": "object",
      "required": ["document", "signature"],
      "properties": {
        "document": {
          "type": "string"
        },
        "signature": {
          "type": "string"
        }
      }
    },
    "codersdk.AddLicenseRequest": {
      "type": "object",
      "required": ["license"],
      "properties": {
        "license": {
          "type": "string"
        }
      }
    },
    "codersdk.AgentGitSSHKey": {
      "type": "object",
      "properties": {
        "private_key": {
          "type": "string"
        },
        "public_key": {
          "type": "string"
        }
      }
    },
    "codersdk.AgentStats": {
      "type": "object",
      "properties": {
        "conns_by_proto": {
          "description": "ConnsByProto is a count of connections by protocol.",
          "type": "object",
          "additionalProperties": {
            "type": "integer"
          }
        },
        "num_comms": {
          "description": "NumConns is the number of connections received by an agent.",
          "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"
        },
        "tx_bytes": {
          "description": "TxBytes is the number of transmitted bytes.",
          "type": "integer"
        },
        "tx_packets": {
          "description": "TxPackets is the number of transmitted bytes.",
          "type": "integer"
        }
      }
    },
    "codersdk.AgentStatsResponse": {
      "type": "object",
      "properties": {
        "report_interval": {
          "description": "ReportInterval is the duration after which the agent should send stats\nagain.",
          "type": "integer"
        }
      }
    },
    "codersdk.AppearanceConfig": {
      "type": "object",
      "properties": {
        "logo_url": {
          "type": "string"
        },
        "service_banner": {
          "$ref": "#/definitions/codersdk.ServiceBannerConfig"
        }
      }
    },
    "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"],
      "x-enum-varnames": [
        "AuditActionCreate",
        "AuditActionWrite",
        "AuditActionDelete",
        "AuditActionStart",
        "AuditActionStop"
      ]
    },
    "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.AuthMethods": {
      "type": "object",
      "properties": {
        "github": {
          "type": "boolean"
        },
        "oidc": {
          "type": "boolean"
        },
        "password": {
          "type": "boolean"
        }
      }
    },
    "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.AzureInstanceIdentityToken": {
      "type": "object",
      "required": ["encoding", "signature"],
      "properties": {
        "encoding": {
          "type": "string"
        },
        "signature": {
          "type": "string"
        }
      }
    },
    "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"
        },
        "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"
          }
        },
        "workspace_name": {
          "type": "string"
        }
      }
    },
    "codersdk.CreateTestAuditLogRequest": {
      "type": "object",
      "properties": {
        "action": {
          "enum": ["create", "write", "delete", "start", "stop"],
          "allOf": [
            {
              "$ref": "#/definitions/codersdk.AuditAction"
            }
          ]
        },
        "resource_id": {
          "type": "string",
          "format": "uuid"
        },
        "resource_type": {
          "enum": [
            "organization",
            "template",
            "template_version",
            "user",
            "workspace",
            "workspace_build",
            "git_ssh_key",
            "api_key",
            "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"
            }
          ]
        }
      }
    },
    "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.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": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "url": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        }
      }
    },
    "codersdk.DERPRegion": {
      "type": "object",
      "properties": {
        "latency_ms": {
          "type": "number"
        },
        "preferred": {
          "type": "boolean"
        }
      }
    },
    "codersdk.DERPServerConfig": {
      "type": "object",
      "properties": {
        "enable": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "region_code": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "region_id": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-int"
        },
        "region_name": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "relay_url": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "stun_addresses": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-array_string"
        }
      }
    },
    "codersdk.DangerousConfig": {
      "type": "object",
      "properties": {
        "allow_path_app_sharing": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "allow_path_app_site_owner_access": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        }
      }
    },
    "codersdk.DeploymentConfig": {
      "type": "object",
      "properties": {
        "access_url": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "address": {
          "description": "DEPRECATED: Use HTTPAddress or TLS.Address instead.",
          "allOf": [
            {
              "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
            }
          ]
        },
        "agent_fallback_troubleshooting_url": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "agent_stat_refresh_interval": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-time_Duration"
        },
        "audit_logging": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "autobuild_poll_interval": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-time_Duration"
        },
        "browser_only": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "cache_directory": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "dangerous": {
          "$ref": "#/definitions/codersdk.DangerousConfig"
        },
        "derp": {
          "$ref": "#/definitions/codersdk.DERP"
        },
        "disable_path_apps": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "experimental": {
          "description": "DEPRECATED: Use Experiments instead.",
          "allOf": [
            {
              "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
            }
          ]
        },
        "experiments": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-array_string"
        },
        "gitauth": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-array_codersdk_GitAuthConfig"
        },
        "http_address": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "in_memory_database": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "logging": {
          "$ref": "#/definitions/codersdk.LoggingConfig"
        },
        "max_token_lifetime": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-time_Duration"
        },
        "metrics_cache_refresh_interval": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-time_Duration"
        },
        "oauth2": {
          "$ref": "#/definitions/codersdk.OAuth2Config"
        },
        "oidc": {
          "$ref": "#/definitions/codersdk.OIDCConfig"
        },
        "pg_connection_url": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "pprof": {
          "$ref": "#/definitions/codersdk.PprofConfig"
        },
        "prometheus": {
          "$ref": "#/definitions/codersdk.PrometheusConfig"
        },
        "provisioner": {
          "$ref": "#/definitions/codersdk.ProvisionerConfig"
        },
        "proxy_trusted_headers": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-array_string"
        },
        "proxy_trusted_origins": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-array_string"
        },
        "rate_limit": {
          "$ref": "#/definitions/codersdk.RateLimitConfig"
        },
        "scim_api_key": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "secure_auth_cookie": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "ssh_keygen_algorithm": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "swagger": {
          "$ref": "#/definitions/codersdk.SwaggerConfig"
        },
        "telemetry": {
          "$ref": "#/definitions/codersdk.TelemetryConfig"
        },
        "tls": {
          "$ref": "#/definitions/codersdk.TLSConfig"
        },
        "trace": {
          "$ref": "#/definitions/codersdk.TraceConfig"
        },
        "update_check": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "wildcard_access_url": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        }
      }
    },
    "codersdk.DeploymentConfigField-array_codersdk_GitAuthConfig": {
      "type": "object",
      "properties": {
        "default": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/codersdk.GitAuthConfig"
          }
        },
        "enterprise": {
          "type": "boolean"
        },
        "flag": {
          "type": "string"
        },
        "hidden": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "secret": {
          "type": "boolean"
        },
        "shorthand": {
          "type": "string"
        },
        "usage": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/codersdk.GitAuthConfig"
          }
        }
      }
    },
    "codersdk.DeploymentConfigField-array_string": {
      "type": "object",
      "properties": {
        "default": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "enterprise": {
          "type": "boolean"
        },
        "flag": {
          "type": "string"
        },
        "hidden": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "secret": {
          "type": "boolean"
        },
        "shorthand": {
          "type": "string"
        },
        "usage": {
          "type": "string"
        },
        "value": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "codersdk.DeploymentConfigField-bool": {
      "type": "object",
      "properties": {
        "default": {
          "type": "boolean"
        },
        "enterprise": {
          "type": "boolean"
        },
        "flag": {
          "type": "string"
        },
        "hidden": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "secret": {
          "type": "boolean"
        },
        "shorthand": {
          "type": "string"
        },
        "usage": {
          "type": "string"
        },
        "value": {
          "type": "boolean"
        }
      }
    },
    "codersdk.DeploymentConfigField-int": {
      "type": "object",
      "properties": {
        "default": {
          "type": "integer"
        },
        "enterprise": {
          "type": "boolean"
        },
        "flag": {
          "type": "string"
        },
        "hidden": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "secret": {
          "type": "boolean"
        },
        "shorthand": {
          "type": "string"
        },
        "usage": {
          "type": "string"
        },
        "value": {
          "type": "integer"
        }
      }
    },
    "codersdk.DeploymentConfigField-string": {
      "type": "object",
      "properties": {
        "default": {
          "type": "string"
        },
        "enterprise": {
          "type": "boolean"
        },
        "flag": {
          "type": "string"
        },
        "hidden": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "secret": {
          "type": "boolean"
        },
        "shorthand": {
          "type": "string"
        },
        "usage": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "codersdk.DeploymentConfigField-time_Duration": {
      "type": "object",
      "properties": {
        "default": {
          "type": "integer"
        },
        "enterprise": {
          "type": "boolean"
        },
        "flag": {
          "type": "string"
        },
        "hidden": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "secret": {
          "type": "boolean"
        },
        "shorthand": {
          "type": "string"
        },
        "usage": {
          "type": "string"
        },
        "value": {
          "type": "integer"
        }
      }
    },
    "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"
          }
        },
        "experimental": {
          "description": "DEPRECATED: use Experiments instead.",
          "type": "boolean"
        },
        "features": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/codersdk.Feature"
          }
        },
        "has_license": {
          "type": "boolean"
        },
        "trial": {
          "type": "boolean"
        },
        "warnings": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "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.GetAppHostResponse": {
      "type": "object",
      "properties": {
        "host": {
          "description": "Host is the externally accessible URL for the Coder instance.",
          "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.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.GoogleInstanceIdentityToken": {
      "type": "object",
      "required": ["json_web_token"],
      "properties": {
        "json_web_token": {
          "type": "string"
        }
      }
    },
    "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.ListeningPort": {
      "type": "object",
      "properties": {
        "network": {
          "description": "only \"tcp\" at the moment",
          "allOf": [
            {
              "$ref": "#/definitions/codersdk.ListeningPortNetwork"
            }
          ]
        },
        "port": {
          "type": "integer"
        },
        "process_name": {
          "description": "may be empty",
          "type": "string"
        }
      }
    },
    "codersdk.ListeningPortNetwork": {
      "type": "string",
      "enum": ["tcp"],
      "x-enum-varnames": ["ListeningPortNetworkTCP"]
    },
    "codersdk.ListeningPortsResponse": {
      "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.ListeningPort"
          }
        }
      }
    },
    "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": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "json": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "stackdriver": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-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": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "allow_signups": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "allowed_orgs": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-array_string"
        },
        "allowed_teams": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-array_string"
        },
        "client_id": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "client_secret": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "enterprise_base_url": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        }
      }
    },
    "codersdk.OIDCConfig": {
      "type": "object",
      "properties": {
        "allow_signups": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "client_id": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "client_secret": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "email_domain": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-array_string"
        },
        "ignore_email_verified": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "issuer_url": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "scopes": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-array_string"
        },
        "username_field": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-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.PostWorkspaceAgentVersionRequest": {
      "description": "x-apidocgen:skip",
      "type": "object",
      "properties": {
        "version": {
          "type": "string"
        }
      }
    },
    "codersdk.PostWorkspaceAppHealthsRequest": {
      "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"
          }
        }
      }
    },
    "codersdk.PprofConfig": {
      "type": "object",
      "properties": {
        "address": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "enable": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        }
      }
    },
    "codersdk.PrometheusConfig": {
      "type": "object",
      "properties": {
        "address": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "enable": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        }
      }
    },
    "codersdk.ProvisionerConfig": {
      "type": "object",
      "properties": {
        "daemon_poll_interval": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-time_Duration"
        },
        "daemon_poll_jitter": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-time_Duration"
        },
        "daemons": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-int"
        },
        "force_cancel_interval": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-time_Duration"
        }
      }
    },
    "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.PutExtendWorkspaceRequest": {
      "type": "object",
      "required": ["deadline"],
      "properties": {
        "deadline": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "codersdk.RateLimitConfig": {
      "type": "object",
      "properties": {
        "api": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-int"
        },
        "disable_all": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        }
      }
    },
    "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": [
        "organization",
        "template",
        "template_version",
        "user",
        "workspace",
        "workspace_build",
        "git_ssh_key",
        "api_key",
        "group"
      ],
      "x-enum-varnames": [
        "ResourceTypeOrganization",
        "ResourceTypeTemplate",
        "ResourceTypeTemplateVersion",
        "ResourceTypeUser",
        "ResourceTypeWorkspace",
        "ResourceTypeWorkspaceBuild",
        "ResourceTypeGitSSHKey",
        "ResourceTypeAPIKey",
        "ResourceTypeGroup"
      ]
    },
    "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.SwaggerConfig": {
      "type": "object",
      "properties": {
        "enable": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        }
      }
    },
    "codersdk.TLSConfig": {
      "type": "object",
      "properties": {
        "address": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "cert_file": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-array_string"
        },
        "client_auth": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "client_ca_file": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "client_cert_file": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "client_key_file": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "enable": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "key_file": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-array_string"
        },
        "min_version": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        },
        "redirect_http": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        }
      }
    },
    "codersdk.TelemetryConfig": {
      "type": "object",
      "properties": {
        "enable": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "trace": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "url": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-string"
        }
      }
    },
    "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"
        },
        "name": {
          "type": "string"
        },
        "organization_id": {
          "type": "string",
          "format": "uuid"
        },
        "provisioner": {
          "type": "string",
          "enum": ["terraform"]
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "workspace_owner_count": {
          "type": "integer"
        }
      }
    },
    "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.TraceConfig": {
      "type": "object",
      "properties": {
        "capture_logs": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "enable": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-bool"
        },
        "honeycomb_api_key": {
          "$ref": "#/definitions/codersdk.DeploymentConfigField-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.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.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"
          }
        },
        "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"
          }
        },
        "name": {
          "type": "string"
        },
        "operating_system": {
          "type": "string"
        },
        "resource_id": {
          "type": "string",
          "format": "uuid"
        },
        "startup_script": {
          "type": "string"
        },
        "status": {
          "enum": ["connecting", "connected", "disconnected", "timeout"],
          "allOf": [
            {
              "$ref": "#/definitions/codersdk.WorkspaceAgentStatus"
            }
          ]
        },
        "troubleshooting_url": {
          "type": "string"
        },
        "updated_at": {
          "type": "string",
          "format": "date-time"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "codersdk.WorkspaceAgentAuthenticateResponse": {
      "type": "object",
      "properties": {
        "session_token": {
          "type": "string"
        }
      }
    },
    "codersdk.WorkspaceAgentConnectionInfo": {
      "type": "object",
      "properties": {
        "derp_map": {
          "$ref": "#/definitions/tailcfg.DERPMap"
        }
      }
    },
    "codersdk.WorkspaceAgentGitAuthResponse": {
      "type": "object",
      "properties": {
        "password": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "username": {
          "type": "string"
        }
      }
    },
    "codersdk.WorkspaceAgentMetadata": {
      "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"
        },
        "startup_script": {
          "type": "string"
        },
        "vscode_port_proxy_uri": {
          "type": "string"
        }
      }
    },
    "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"
        },
        "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"
        }
      }
    }
  },
  "securityDefinitions": {
    "CoderSessionToken": {
      "type": "apiKey",
      "name": "Coder-Session-Token",
      "in": "header"
    }
  }
}
