fix: correct SCIM Swagger try it out URLs (#24779)

This commit is contained in:
Atif Ali
2026-05-05 02:54:03 +05:00
committed by GitHub
parent f0fd2111fd
commit fad69df710
97 changed files with 21313 additions and 21246 deletions
+10 -10
View File
@@ -44,7 +44,7 @@ import (
// @Param user path string true "Username, user ID, or 'me' for the authenticated user" // @Param user path string true "Username, user ID, or 'me' for the authenticated user"
// @Param request body codersdk.CreateTaskRequest true "Create task request" // @Param request body codersdk.CreateTaskRequest true "Create task request"
// @Success 201 {object} codersdk.Task // @Success 201 {object} codersdk.Task
// @Router /tasks/{user} [post] // @Router /api/v2/tasks/{user} [post]
func (api *API) tasksCreate(rw http.ResponseWriter, r *http.Request) { func (api *API) tasksCreate(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -401,7 +401,7 @@ func deriveTaskCurrentState(
// @Tags Tasks // @Tags Tasks
// @Param q query string false "Search query for filtering tasks. Supports: owner:<username/uuid/me>, organization:<org-name/uuid>, status:<status>" // @Param q query string false "Search query for filtering tasks. Supports: owner:<username/uuid/me>, organization:<org-name/uuid>, status:<status>"
// @Success 200 {object} codersdk.TasksListResponse // @Success 200 {object} codersdk.TasksListResponse
// @Router /tasks [get] // @Router /api/v2/tasks [get]
func (api *API) tasksList(rw http.ResponseWriter, r *http.Request) { func (api *API) tasksList(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
apiKey := httpmw.APIKey(r) apiKey := httpmw.APIKey(r)
@@ -511,7 +511,7 @@ func (api *API) convertTasks(ctx context.Context, requesterID uuid.UUID, dbTasks
// @Param user path string true "Username, user ID, or 'me' for the authenticated user" // @Param user path string true "Username, user ID, or 'me' for the authenticated user"
// @Param task path string true "Task ID, or task name" // @Param task path string true "Task ID, or task name"
// @Success 200 {object} codersdk.Task // @Success 200 {object} codersdk.Task
// @Router /tasks/{user}/{task} [get] // @Router /api/v2/tasks/{user}/{task} [get]
func (api *API) taskGet(rw http.ResponseWriter, r *http.Request) { func (api *API) taskGet(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
apiKey := httpmw.APIKey(r) apiKey := httpmw.APIKey(r)
@@ -585,7 +585,7 @@ func (api *API) taskGet(rw http.ResponseWriter, r *http.Request) {
// @Param user path string true "Username, user ID, or 'me' for the authenticated user" // @Param user path string true "Username, user ID, or 'me' for the authenticated user"
// @Param task path string true "Task ID, or task name" // @Param task path string true "Task ID, or task name"
// @Success 202 // @Success 202
// @Router /tasks/{user}/{task} [delete] // @Router /api/v2/tasks/{user}/{task} [delete]
func (api *API) taskDelete(rw http.ResponseWriter, r *http.Request) { func (api *API) taskDelete(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
apiKey := httpmw.APIKey(r) apiKey := httpmw.APIKey(r)
@@ -659,7 +659,7 @@ func (api *API) taskDelete(rw http.ResponseWriter, r *http.Request) {
// @Param task path string true "Task ID, or task name" // @Param task path string true "Task ID, or task name"
// @Param request body codersdk.UpdateTaskInputRequest true "Update task input request" // @Param request body codersdk.UpdateTaskInputRequest true "Update task input request"
// @Success 204 // @Success 204
// @Router /tasks/{user}/{task}/input [patch] // @Router /api/v2/tasks/{user}/{task}/input [patch]
func (api *API) taskUpdateInput(rw http.ResponseWriter, r *http.Request) { func (api *API) taskUpdateInput(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -739,7 +739,7 @@ func (api *API) taskUpdateInput(rw http.ResponseWriter, r *http.Request) {
// @Param task path string true "Task ID, or task name" // @Param task path string true "Task ID, or task name"
// @Param request body codersdk.TaskSendRequest true "Task input request" // @Param request body codersdk.TaskSendRequest true "Task input request"
// @Success 204 // @Success 204
// @Router /tasks/{user}/{task}/send [post] // @Router /api/v2/tasks/{user}/{task}/send [post]
func (api *API) taskSend(rw http.ResponseWriter, r *http.Request) { func (api *API) taskSend(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
task := httpmw.TaskParam(r) task := httpmw.TaskParam(r)
@@ -831,7 +831,7 @@ func convertAgentAPIMessagesToLogEntries(messages []agentapisdk.Message) ([]code
// @Param user path string true "Username, user ID, or 'me' for the authenticated user" // @Param user path string true "Username, user ID, or 'me' for the authenticated user"
// @Param task path string true "Task ID, or task name" // @Param task path string true "Task ID, or task name"
// @Success 200 {object} codersdk.TaskLogsResponse // @Success 200 {object} codersdk.TaskLogsResponse
// @Router /tasks/{user}/{task}/logs [get] // @Router /api/v2/tasks/{user}/{task}/logs [get]
func (api *API) taskLogs(rw http.ResponseWriter, r *http.Request) { func (api *API) taskLogs(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
task := httpmw.TaskParam(r) task := httpmw.TaskParam(r)
@@ -1117,7 +1117,7 @@ type TaskLogSnapshotEnvelope struct {
// @Param format query string true "Snapshot format" enums(agentapi) // @Param format query string true "Snapshot format" enums(agentapi)
// @Param request body object true "Raw snapshot payload (structure depends on format parameter)" // @Param request body object true "Raw snapshot payload (structure depends on format parameter)"
// @Success 204 // @Success 204
// @Router /workspaceagents/me/tasks/{task}/log-snapshot [post] // @Router /api/v2/workspaceagents/me/tasks/{task}/log-snapshot [post]
func (api *API) postWorkspaceAgentTaskLogSnapshot(rw http.ResponseWriter, r *http.Request) { func (api *API) postWorkspaceAgentTaskLogSnapshot(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1266,7 +1266,7 @@ func (api *API) postWorkspaceAgentTaskLogSnapshot(rw http.ResponseWriter, r *htt
// @Param user path string true "Username, user ID, or 'me' for the authenticated user" // @Param user path string true "Username, user ID, or 'me' for the authenticated user"
// @Param task path string true "Task ID" format(uuid) // @Param task path string true "Task ID" format(uuid)
// @Success 202 {object} codersdk.PauseTaskResponse // @Success 202 {object} codersdk.PauseTaskResponse
// @Router /tasks/{user}/{task}/pause [post] // @Router /api/v2/tasks/{user}/{task}/pause [post]
func (api *API) pauseTask(rw http.ResponseWriter, r *http.Request) { func (api *API) pauseTask(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1343,7 +1343,7 @@ func (api *API) pauseTask(rw http.ResponseWriter, r *http.Request) {
// @Param user path string true "Username, user ID, or 'me' for the authenticated user" // @Param user path string true "Username, user ID, or 'me' for the authenticated user"
// @Param task path string true "Task ID" format(uuid) // @Param task path string true "Task ID" format(uuid)
// @Success 202 {object} codersdk.ResumeTaskResponse // @Success 202 {object} codersdk.ResumeTaskResponse
// @Router /tasks/{user}/{task}/resume [post] // @Router /api/v2/tasks/{user}/{task}/resume [post]
func (api *API) resumeTask(rw http.ResponseWriter, r *http.Request) { func (api *API) resumeTask(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
+10479 -10479
View File
File diff suppressed because it is too large Load Diff
+9314 -9314
View File
File diff suppressed because it is too large Load Diff
+8 -8
View File
@@ -36,7 +36,7 @@ import (
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Param request body codersdk.CreateTokenRequest true "Create token request" // @Param request body codersdk.CreateTokenRequest true "Create token request"
// @Success 201 {object} codersdk.GenerateAPIKeyResponse // @Success 201 {object} codersdk.GenerateAPIKeyResponse
// @Router /users/{user}/keys/tokens [post] // @Router /api/v2/users/{user}/keys/tokens [post]
func (api *API) postToken(rw http.ResponseWriter, r *http.Request) { func (api *API) postToken(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -190,7 +190,7 @@ func (api *API) postToken(rw http.ResponseWriter, r *http.Request) {
// @Tags Users // @Tags Users
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 201 {object} codersdk.GenerateAPIKeyResponse // @Success 201 {object} codersdk.GenerateAPIKeyResponse
// @Router /users/{user}/keys [post] // @Router /api/v2/users/{user}/keys [post]
func (api *API) postAPIKey(rw http.ResponseWriter, r *http.Request) { func (api *API) postAPIKey(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -244,7 +244,7 @@ func (api *API) postAPIKey(rw http.ResponseWriter, r *http.Request) {
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Param keyid path string true "Key ID" format(string) // @Param keyid path string true "Key ID" format(string)
// @Success 200 {object} codersdk.APIKey // @Success 200 {object} codersdk.APIKey
// @Router /users/{user}/keys/{keyid} [get] // @Router /api/v2/users/{user}/keys/{keyid} [get]
func (api *API) apiKeyByID(rw http.ResponseWriter, r *http.Request) { func (api *API) apiKeyByID(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -273,7 +273,7 @@ func (api *API) apiKeyByID(rw http.ResponseWriter, r *http.Request) {
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Param keyname path string true "Key Name" format(string) // @Param keyname path string true "Key Name" format(string)
// @Success 200 {object} codersdk.APIKey // @Success 200 {object} codersdk.APIKey
// @Router /users/{user}/keys/tokens/{keyname} [get] // @Router /api/v2/users/{user}/keys/tokens/{keyname} [get]
func (api *API) apiKeyByName(rw http.ResponseWriter, r *http.Request) { func (api *API) apiKeyByName(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -308,7 +308,7 @@ func (api *API) apiKeyByName(rw http.ResponseWriter, r *http.Request) {
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {array} codersdk.APIKey // @Success 200 {array} codersdk.APIKey
// @Param include_expired query bool false "Include expired tokens in the list" // @Param include_expired query bool false "Include expired tokens in the list"
// @Router /users/{user}/keys/tokens [get] // @Router /api/v2/users/{user}/keys/tokens [get]
func (api *API) tokens(rw http.ResponseWriter, r *http.Request) { func (api *API) tokens(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -391,7 +391,7 @@ func (api *API) tokens(rw http.ResponseWriter, r *http.Request) {
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Param keyid path string true "Key ID" format(string) // @Param keyid path string true "Key ID" format(string)
// @Success 204 // @Success 204
// @Router /users/{user}/keys/{keyid} [delete] // @Router /api/v2/users/{user}/keys/{keyid} [delete]
func (api *API) deleteAPIKey(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteAPIKey(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -436,7 +436,7 @@ func (api *API) deleteAPIKey(rw http.ResponseWriter, r *http.Request) {
// @Success 204 // @Success 204
// @Failure 404 {object} codersdk.Response // @Failure 404 {object} codersdk.Response
// @Failure 500 {object} codersdk.Response // @Failure 500 {object} codersdk.Response
// @Router /users/{user}/keys/{keyid}/expire [put] // @Router /api/v2/users/{user}/keys/{keyid}/expire [put]
func (api *API) expireAPIKey(rw http.ResponseWriter, r *http.Request) { func (api *API) expireAPIKey(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -497,7 +497,7 @@ func (api *API) expireAPIKey(rw http.ResponseWriter, r *http.Request) {
// @Tags General // @Tags General
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {object} codersdk.TokenConfig // @Success 200 {object} codersdk.TokenConfig
// @Router /users/{user}/keys/tokens/tokenconfig [get] // @Router /api/v2/users/{user}/keys/tokens/tokenconfig [get]
func (api *API) tokenConfig(rw http.ResponseWriter, r *http.Request) { func (api *API) tokenConfig(rw http.ResponseWriter, r *http.Request) {
user := httpmw.UserParam(r) user := httpmw.UserParam(r)
maxLifetime, err := api.getMaxTokenLifetime(r.Context(), user.ID) maxLifetime, err := api.getMaxTokenLifetime(r.Context(), user.ID)
+1 -1
View File
@@ -12,7 +12,7 @@ import (
// @Produce json // @Produce json
// @Tags General // @Tags General
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router / [get] // @Router /api/v2/ [get]
func apiRoot(w http.ResponseWriter, r *http.Request) { func apiRoot(w http.ResponseWriter, r *http.Request) {
httpapi.Write(r.Context(), w, http.StatusOK, codersdk.Response{ httpapi.Write(r.Context(), w, http.StatusOK, codersdk.Response{
//nolint:gocritic //nolint:gocritic
+2 -2
View File
@@ -40,7 +40,7 @@ const auditLogCountCap = 2000
// @Param limit query int true "Page limit" // @Param limit query int true "Page limit"
// @Param offset query int false "Page offset" // @Param offset query int false "Page offset"
// @Success 200 {object} codersdk.AuditLogResponse // @Success 200 {object} codersdk.AuditLogResponse
// @Router /audit [get] // @Router /api/v2/audit [get]
func (api *API) auditLogs(rw http.ResponseWriter, r *http.Request) { func (api *API) auditLogs(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
apiKey := httpmw.APIKey(r) apiKey := httpmw.APIKey(r)
@@ -115,7 +115,7 @@ func (api *API) auditLogs(rw http.ResponseWriter, r *http.Request) {
// @Tags Audit // @Tags Audit
// @Param request body codersdk.CreateTestAuditLogRequest true "Audit log request" // @Param request body codersdk.CreateTestAuditLogRequest true "Audit log request"
// @Success 204 // @Success 204
// @Router /audit/testgenerate [post] // @Router /api/v2/audit/testgenerate [post]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) generateFakeAuditLog(rw http.ResponseWriter, r *http.Request) { func (api *API) generateFakeAuditLog(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+1 -1
View File
@@ -165,7 +165,7 @@ func (h *HTTPAuthorizer) AuthorizeSQLFilterContext(ctx context.Context, action p
// @Tags Authorization // @Tags Authorization
// @Param request body codersdk.AuthorizationRequest true "Authorization request" // @Param request body codersdk.AuthorizationRequest true "Authorization request"
// @Success 200 {object} codersdk.AuthorizationResponse // @Success 200 {object} codersdk.AuthorizationResponse
// @Router /authcheck [post] // @Router /api/v2/authcheck [post]
func (api *API) checkAuthorization(rw http.ResponseWriter, r *http.Request) { func (api *API) checkAuthorization(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
auth := httpmw.UserAuthorization(r.Context()) auth := httpmw.UserAuthorization(r.Context())
+10 -11
View File
@@ -5,6 +5,7 @@ import (
"crypto/tls" "crypto/tls"
"crypto/x509" "crypto/x509"
"database/sql" "database/sql"
_ "embed"
"errors" "errors"
"expvar" "expvar"
"flag" "flag"
@@ -115,6 +116,9 @@ import (
// See https://github.com/swaggo/http-swagger/issues/78 // See https://github.com/swaggo/http-swagger/issues/78
var globalHTTPSwaggerHandler http.HandlerFunc var globalHTTPSwaggerHandler http.HandlerFunc
//go:embed swagger_request_interceptor.js
var swaggerRequestInterceptor string
func init() { func init() {
globalHTTPSwaggerHandler = httpSwagger.Handler( globalHTTPSwaggerHandler = httpSwagger.Handler(
httpSwagger.URL("/swagger/doc.json"), httpSwagger.URL("/swagger/doc.json"),
@@ -130,16 +134,11 @@ func init() {
// So remove authenticating via a cookie, and rely on the authorization // So remove authenticating via a cookie, and rely on the authorization
// header passed in. // header passed in.
httpSwagger.UIConfig(map[string]string{ httpSwagger.UIConfig(map[string]string{
// Pulled from https://swagger.io/docs/open-source-tools/swagger-ui/usage/configuration/ // The interceptor source lives in swagger_request_interceptor.js so
// 'withCredentials' should disable fetch sending browser credentials, but // it can be edited as real JavaScript.
// for whatever reason it does not. // See https://swagger.io/docs/open-source-tools/swagger-ui/usage/configuration/.
// So this `requestInterceptor` ensures browser credentials are "requestInterceptor": swaggerRequestInterceptor,
// omitted from all requests. "withCredentials": "false",
"requestInterceptor": `(a => {
a.credentials = "omit";
return a;
})`,
"withCredentials": "false",
})) }))
} }
@@ -310,7 +309,7 @@ type Options struct {
// @license.name AGPL-3.0 // @license.name AGPL-3.0
// @license.url https://github.com/coder/coder/blob/main/LICENSE // @license.url https://github.com/coder/coder/blob/main/LICENSE
// @BasePath /api/v2 // @BasePath /
// @securitydefinitions.apiKey Authorization // @securitydefinitions.apiKey Authorization
// @in header // @in header
+21 -2
View File
@@ -2,6 +2,7 @@ package coderd_test
import ( import (
"context" "context"
"encoding/json"
"flag" "flag"
"fmt" "fmt"
"io" "io"
@@ -280,7 +281,9 @@ func TestSwagger(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
defer resp.Body.Close() defer resp.Body.Close()
require.Contains(t, string(body), "Swagger UI") bodyString := string(body)
require.Contains(t, bodyString, "Swagger UI")
require.Contains(t, bodyString, "requestInterceptor")
}) })
t.Run("doc.json exposed", func(t *testing.T) { t.Run("doc.json exposed", func(t *testing.T) {
t.Parallel() t.Parallel()
@@ -299,7 +302,23 @@ func TestSwagger(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
defer resp.Body.Close() defer resp.Body.Close()
require.Contains(t, string(body), `"swagger": "2.0"`) bodyString := string(body)
require.NotContains(t, bodyString, `"/api/v2/scim/v2`)
var doc struct {
Swagger string `json:"swagger"`
BasePath string `json:"basePath"`
Paths map[string]map[string]json.RawMessage `json:"paths"`
}
require.NoError(t, json.Unmarshal(body, &doc))
require.Equal(t, "2.0", doc.Swagger)
require.Equal(t, "/", doc.BasePath)
require.Contains(t, doc.Paths, "/api/v2/users")
require.Contains(t, doc.Paths, "/api/v2/oauth2-provider/apps")
require.Contains(t, doc.Paths, "/api/experimental/watch-all-workspacebuilds")
require.Contains(t, doc.Paths, "/.well-known/oauth-authorization-server")
require.Contains(t, doc.Paths, "/oauth2/tokens")
require.Contains(t, doc.Paths, "/scim/v2/Users")
}) })
t.Run("endpoint disabled by default", func(t *testing.T) { t.Run("endpoint disabled by default", func(t *testing.T) {
t.Parallel() t.Parallel()
+1 -1
View File
@@ -21,7 +21,7 @@ func TestEndpointsDocumented(t *testing.T) {
require.NotEmpty(t, swaggerComments, "swagger comments must be present") require.NotEmpty(t, swaggerComments, "swagger comments must be present")
_, _, api := coderdtest.NewWithAPI(t, nil) _, _, api := coderdtest.NewWithAPI(t, nil)
coderdtest.VerifySwaggerDefinitions(t, api.APIHandler, swaggerComments) coderdtest.VerifySwaggerDefinitions(t, api.APIHandler, swaggerComments, coderdtest.WithSwaggerRoutePrefix("/api/v2"))
} }
func TestSDKFieldsFormatted(t *testing.T) { func TestSDKFieldsFormatted(t *testing.T) {
+53 -19
View File
@@ -147,11 +147,33 @@ func parseSwaggerComment(commentGroup *ast.CommentGroup) SwaggerComment {
return c return c
} }
func isExperimentalEndpoint(route string) bool { // SwaggerOption configures VerifySwaggerDefinitions.
return strings.HasPrefix(route, "/workspaceagents/me/experimental/") type SwaggerOption func(*swaggerOptions)
type swaggerOptions struct {
routePrefix string
} }
func VerifySwaggerDefinitions(t *testing.T, router chi.Router, swaggerComments []SwaggerComment) { // WithSwaggerRoutePrefix prepends the given prefix to every route walked from
// the chi router. Use this when calling VerifySwaggerDefinitions with a
// subrouter (for example api.APIHandler at /api/v2) so that routes line up
// with the absolute paths used in @Router annotations.
func WithSwaggerRoutePrefix(prefix string) SwaggerOption {
return func(o *swaggerOptions) {
o.routePrefix = prefix
}
}
func isExperimentalEndpoint(route string) bool {
return strings.HasPrefix(route, "/api/v2/workspaceagents/me/experimental/")
}
func VerifySwaggerDefinitions(t *testing.T, router chi.Router, swaggerComments []SwaggerComment, opts ...SwaggerOption) {
cfg := swaggerOptions{}
for _, opt := range opts {
opt(&cfg)
}
assertUniqueRoutes(t, swaggerComments) assertUniqueRoutes(t, swaggerComments)
assertSingleAnnotations(t, swaggerComments) assertSingleAnnotations(t, swaggerComments)
@@ -161,6 +183,18 @@ func VerifySwaggerDefinitions(t *testing.T, router chi.Router, swaggerComments [
route = route[:len(route)-1] route = route[:len(route)-1]
} }
// chi.Walk yields routes relative to the router that
// VerifySwaggerDefinitions was called with. Prepend the configured
// mount prefix so routes match the absolute paths used in @Router
// annotations.
if cfg.routePrefix != "" {
if route == "/" {
route = cfg.routePrefix + "/"
} else {
route = cfg.routePrefix + route
}
}
t.Run(method+" "+route, func(t *testing.T) { t.Run(method+" "+route, func(t *testing.T) {
t.Parallel() t.Parallel()
@@ -313,14 +347,14 @@ func assertSecurityDefined(t *testing.T, comment SwaggerComment) {
"CoderProvisionerKey", "CoderProvisionerKey",
} }
if comment.router == "/updatecheck" || if comment.router == "/api/v2/updatecheck" ||
comment.router == "/buildinfo" || comment.router == "/api/v2/buildinfo" ||
comment.router == "/" || comment.router == "/api/v2/" ||
comment.router == "/auth/scopes" || comment.router == "/api/v2/auth/scopes" ||
comment.router == "/users/login" || comment.router == "/api/v2/users/login" ||
comment.router == "/users/otp/request" || comment.router == "/api/v2/users/otp/request" ||
comment.router == "/users/otp/change-password" || comment.router == "/api/v2/users/otp/change-password" ||
comment.router == "/init-script/{os}/{arch}" { comment.router == "/api/v2/init-script/{os}/{arch}" {
return // endpoints do not require authorization return // endpoints do not require authorization
} }
assert.Containsf(t, authorizedSecurityTags, comment.security, "@Security must be either of these options: %v", authorizedSecurityTags) assert.Containsf(t, authorizedSecurityTags, comment.security, "@Security must be either of these options: %v", authorizedSecurityTags)
@@ -365,14 +399,14 @@ func assertProduce(t *testing.T, comment SwaggerComment) {
assert.True(t, comment.produce != "", "Route must have @Produce annotation as it responds with a model structure") assert.True(t, comment.produce != "", "Route must have @Produce annotation as it responds with a model structure")
assert.Contains(t, allowedProduceTypes, comment.produce, "@Produce value is limited to specific types: %s", strings.Join(allowedProduceTypes, ",")) assert.Contains(t, allowedProduceTypes, comment.produce, "@Produce value is limited to specific types: %s", strings.Join(allowedProduceTypes, ","))
} else { } else {
if (comment.router == "/workspaceagents/me/app-health" && comment.method == "post") || if (comment.router == "/api/v2/workspaceagents/me/app-health" && comment.method == "post") ||
(comment.router == "/workspaceagents/me/startup" && comment.method == "post") || (comment.router == "/api/v2/workspaceagents/me/startup" && comment.method == "post") ||
(comment.router == "/workspaceagents/me/startup/logs" && comment.method == "patch") || (comment.router == "/api/v2/workspaceagents/me/startup/logs" && comment.method == "patch") ||
(comment.router == "/licenses/{id}" && comment.method == "delete") || (comment.router == "/api/v2/licenses/{id}" && comment.method == "delete") ||
(comment.router == "/debug/coordinator" && comment.method == "get") || (comment.router == "/api/v2/debug/coordinator" && comment.method == "get") ||
(comment.router == "/debug/tailnet" && comment.method == "get") || (comment.router == "/api/v2/debug/tailnet" && comment.method == "get") ||
(comment.router == "/workspaces/{workspace}/acl" && comment.method == "patch") || (comment.router == "/api/v2/workspaces/{workspace}/acl" && comment.method == "patch") ||
(comment.router == "/init-script/{os}/{arch}" && comment.method == "get") { (comment.router == "/api/v2/init-script/{os}/{arch}" && comment.method == "get") {
return // Exception: HTTP 200 is returned without response entity return // Exception: HTTP 200 is returned without response entity
} }
+1 -1
View File
@@ -22,7 +22,7 @@ type cspViolation struct {
// @Tags General // @Tags General
// @Param request body cspViolation true "Violation report" // @Param request body cspViolation true "Violation report"
// @Success 200 // @Success 200
// @Router /csp/reports [post] // @Router /api/v2/csp/reports [post]
func (api *API) logReportCSPViolations(rw http.ResponseWriter, r *http.Request) { func (api *API) logReportCSPViolations(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
var v cspViolation var v cspViolation
+15 -15
View File
@@ -38,7 +38,7 @@ import (
// @Produce text/html // @Produce text/html
// @Tags Debug // @Tags Debug
// @Success 200 // @Success 200
// @Router /debug/coordinator [get] // @Router /api/v2/debug/coordinator [get]
func (api *API) debugCoordinator(rw http.ResponseWriter, r *http.Request) { func (api *API) debugCoordinator(rw http.ResponseWriter, r *http.Request) {
(*api.TailnetCoordinator.Load()).ServeHTTPDebug(rw, r) (*api.TailnetCoordinator.Load()).ServeHTTPDebug(rw, r)
} }
@@ -49,7 +49,7 @@ func (api *API) debugCoordinator(rw http.ResponseWriter, r *http.Request) {
// @Produce text/html // @Produce text/html
// @Tags Debug // @Tags Debug
// @Success 200 // @Success 200
// @Router /debug/tailnet [get] // @Router /api/v2/debug/tailnet [get]
func (api *API) debugTailnet(rw http.ResponseWriter, r *http.Request) { func (api *API) debugTailnet(rw http.ResponseWriter, r *http.Request) {
api.agentProvider.ServeHTTPDebug(rw, r) api.agentProvider.ServeHTTPDebug(rw, r)
} }
@@ -60,7 +60,7 @@ func (api *API) debugTailnet(rw http.ResponseWriter, r *http.Request) {
// @Produce json // @Produce json
// @Tags Debug // @Tags Debug
// @Success 200 {object} healthsdk.HealthcheckReport // @Success 200 {object} healthsdk.HealthcheckReport
// @Router /debug/health [get] // @Router /api/v2/debug/health [get]
// @Param force query boolean false "Force a healthcheck to run" // @Param force query boolean false "Force a healthcheck to run"
func (api *API) debugDeploymentHealth(rw http.ResponseWriter, r *http.Request) { func (api *API) debugDeploymentHealth(rw http.ResponseWriter, r *http.Request) {
apiKey := httpmw.APITokenFromRequest(r) apiKey := httpmw.APITokenFromRequest(r)
@@ -168,7 +168,7 @@ func formatHealthcheck(ctx context.Context, rw http.ResponseWriter, r *http.Requ
// @Produce json // @Produce json
// @Tags Debug // @Tags Debug
// @Success 200 {object} healthsdk.HealthSettings // @Success 200 {object} healthsdk.HealthSettings
// @Router /debug/health/settings [get] // @Router /api/v2/debug/health/settings [get]
func (api *API) deploymentHealthSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) deploymentHealthSettings(rw http.ResponseWriter, r *http.Request) {
settingsJSON, err := api.Database.GetHealthSettings(r.Context()) settingsJSON, err := api.Database.GetHealthSettings(r.Context())
if err != nil { if err != nil {
@@ -204,7 +204,7 @@ func (api *API) deploymentHealthSettings(rw http.ResponseWriter, r *http.Request
// @Tags Debug // @Tags Debug
// @Param request body healthsdk.UpdateHealthSettings true "Update health settings" // @Param request body healthsdk.UpdateHealthSettings true "Update health settings"
// @Success 200 {object} healthsdk.UpdateHealthSettings // @Success 200 {object} healthsdk.UpdateHealthSettings
// @Router /debug/health/settings [put] // @Router /api/v2/debug/health/settings [put]
func (api *API) putDeploymentHealthSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) putDeploymentHealthSettings(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -297,7 +297,7 @@ func validateHealthSettings(settings healthsdk.HealthSettings) error {
// @Produce json // @Produce json
// @Tags Debug // @Tags Debug
// @Success 201 {object} codersdk.Response // @Success 201 {object} codersdk.Response
// @Router /debug/ws [get] // @Router /api/v2/debug/ws [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func _debugws(http.ResponseWriter, *http.Request) {} //nolint:unused func _debugws(http.ResponseWriter, *http.Request) {} //nolint:unused
@@ -307,7 +307,7 @@ func _debugws(http.ResponseWriter, *http.Request) {} //nolint:unused
// @Produce json // @Produce json
// @Success 200 {array} derp.BytesSentRecv // @Success 200 {array} derp.BytesSentRecv
// @Tags Debug // @Tags Debug
// @Router /debug/derp/traffic [get] // @Router /api/v2/debug/derp/traffic [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func _debugDERPTraffic(http.ResponseWriter, *http.Request) {} //nolint:unused func _debugDERPTraffic(http.ResponseWriter, *http.Request) {} //nolint:unused
@@ -317,7 +317,7 @@ func _debugDERPTraffic(http.ResponseWriter, *http.Request) {} //nolint:unused
// @Produce json // @Produce json
// @Tags Debug // @Tags Debug
// @Success 200 {object} map[string]any // @Success 200 {object} map[string]any
// @Router /debug/expvar [get] // @Router /api/v2/debug/expvar [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func _debugExpVar(http.ResponseWriter, *http.Request) {} //nolint:unused func _debugExpVar(http.ResponseWriter, *http.Request) {} //nolint:unused
@@ -415,7 +415,7 @@ const (
// @Security CoderSessionToken // @Security CoderSessionToken
// @Tags Debug // @Tags Debug
// @Success 200 // @Success 200
// @Router /debug/profile [post] // @Router /api/v2/debug/profile [post]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) debugCollectProfile(rw http.ResponseWriter, r *http.Request) { func (api *API) debugCollectProfile(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -634,7 +634,7 @@ func (api *API) debugCollectProfile(rw http.ResponseWriter, r *http.Request) {
// @Security CoderSessionToken // @Security CoderSessionToken
// @Success 200 // @Success 200
// @Tags Debug // @Tags Debug
// @Router /debug/pprof [get] // @Router /api/v2/debug/pprof [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func _debugPprofIndex(http.ResponseWriter, *http.Request) {} //nolint:unused func _debugPprofIndex(http.ResponseWriter, *http.Request) {} //nolint:unused
@@ -643,7 +643,7 @@ func _debugPprofIndex(http.ResponseWriter, *http.Request) {} //nolint:unused
// @Security CoderSessionToken // @Security CoderSessionToken
// @Success 200 // @Success 200
// @Tags Debug // @Tags Debug
// @Router /debug/pprof/cmdline [get] // @Router /api/v2/debug/pprof/cmdline [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func _debugPprofCmdline(http.ResponseWriter, *http.Request) {} //nolint:unused func _debugPprofCmdline(http.ResponseWriter, *http.Request) {} //nolint:unused
@@ -652,7 +652,7 @@ func _debugPprofCmdline(http.ResponseWriter, *http.Request) {} //nolint:unused
// @Security CoderSessionToken // @Security CoderSessionToken
// @Success 200 // @Success 200
// @Tags Debug // @Tags Debug
// @Router /debug/pprof/profile [get] // @Router /api/v2/debug/pprof/profile [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func _debugPprofProfile(http.ResponseWriter, *http.Request) {} //nolint:unused func _debugPprofProfile(http.ResponseWriter, *http.Request) {} //nolint:unused
@@ -661,7 +661,7 @@ func _debugPprofProfile(http.ResponseWriter, *http.Request) {} //nolint:unused
// @Security CoderSessionToken // @Security CoderSessionToken
// @Success 200 // @Success 200
// @Tags Debug // @Tags Debug
// @Router /debug/pprof/symbol [get] // @Router /api/v2/debug/pprof/symbol [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func _debugPprofSymbol(http.ResponseWriter, *http.Request) {} //nolint:unused func _debugPprofSymbol(http.ResponseWriter, *http.Request) {} //nolint:unused
@@ -670,7 +670,7 @@ func _debugPprofSymbol(http.ResponseWriter, *http.Request) {} //nolint:unused
// @Security CoderSessionToken // @Security CoderSessionToken
// @Success 200 // @Success 200
// @Tags Debug // @Tags Debug
// @Router /debug/pprof/trace [get] // @Router /api/v2/debug/pprof/trace [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func _debugPprofTrace(http.ResponseWriter, *http.Request) {} //nolint:unused func _debugPprofTrace(http.ResponseWriter, *http.Request) {} //nolint:unused
@@ -679,6 +679,6 @@ func _debugPprofTrace(http.ResponseWriter, *http.Request) {} //nolint:unused
// @Security CoderSessionToken // @Security CoderSessionToken
// @Success 200 // @Success 200
// @Tags Debug // @Tags Debug
// @Router /debug/metrics [get] // @Router /api/v2/debug/metrics [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func _debugMetrics(http.ResponseWriter, *http.Request) {} //nolint:unused func _debugMetrics(http.ResponseWriter, *http.Request) {} //nolint:unused
+4 -4
View File
@@ -15,7 +15,7 @@ import (
// @Produce json // @Produce json
// @Tags General // @Tags General
// @Success 200 {object} codersdk.DeploymentConfig // @Success 200 {object} codersdk.DeploymentConfig
// @Router /deployment/config [get] // @Router /api/v2/deployment/config [get]
func (api *API) deploymentValues(rw http.ResponseWriter, r *http.Request) { func (api *API) deploymentValues(rw http.ResponseWriter, r *http.Request) {
if !api.Authorize(r, policy.ActionRead, rbac.ResourceDeploymentConfig) { if !api.Authorize(r, policy.ActionRead, rbac.ResourceDeploymentConfig) {
httpapi.Forbidden(rw) httpapi.Forbidden(rw)
@@ -43,7 +43,7 @@ func (api *API) deploymentValues(rw http.ResponseWriter, r *http.Request) {
// @Produce json // @Produce json
// @Tags General // @Tags General
// @Success 200 {object} codersdk.DeploymentStats // @Success 200 {object} codersdk.DeploymentStats
// @Router /deployment/stats [get] // @Router /api/v2/deployment/stats [get]
func (api *API) deploymentStats(rw http.ResponseWriter, r *http.Request) { func (api *API) deploymentStats(rw http.ResponseWriter, r *http.Request) {
if !api.Authorize(r, policy.ActionRead, rbac.ResourceDeploymentStats) { if !api.Authorize(r, policy.ActionRead, rbac.ResourceDeploymentStats) {
httpapi.Forbidden(rw) httpapi.Forbidden(rw)
@@ -66,7 +66,7 @@ func (api *API) deploymentStats(rw http.ResponseWriter, r *http.Request) {
// @Produce json // @Produce json
// @Tags General // @Tags General
// @Success 200 {object} codersdk.BuildInfoResponse // @Success 200 {object} codersdk.BuildInfoResponse
// @Router /buildinfo [get] // @Router /api/v2/buildinfo [get]
func buildInfoHandler(resp codersdk.BuildInfoResponse) http.HandlerFunc { func buildInfoHandler(resp codersdk.BuildInfoResponse) http.HandlerFunc {
// This is in a handler so that we can generate API docs info. // This is in a handler so that we can generate API docs info.
return func(rw http.ResponseWriter, r *http.Request) { return func(rw http.ResponseWriter, r *http.Request) {
@@ -80,7 +80,7 @@ func buildInfoHandler(resp codersdk.BuildInfoResponse) http.HandlerFunc {
// @Produce json // @Produce json
// @Tags General // @Tags General
// @Success 200 {object} codersdk.SSHConfigResponse // @Success 200 {object} codersdk.SSHConfigResponse
// @Router /deployment/ssh [get] // @Router /api/v2/deployment/ssh [get]
func (api *API) sshConfig(rw http.ResponseWriter, r *http.Request) { func (api *API) sshConfig(rw http.ResponseWriter, r *http.Request) {
httpapi.Write(r.Context(), rw, http.StatusOK, api.SSHConfig) httpapi.Write(r.Context(), rw, http.StatusOK, api.SSHConfig)
} }
+5 -5
View File
@@ -14,7 +14,7 @@ import (
// @Tags Templates // @Tags Templates
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Success 200 // @Success 200
// @Router /templateversions/{templateversion}/parameters [get] // @Router /api/v2/templateversions/{templateversion}/parameters [get]
func templateVersionParametersDeprecated(rw http.ResponseWriter, r *http.Request) { func templateVersionParametersDeprecated(rw http.ResponseWriter, r *http.Request) {
httpapi.Write(r.Context(), rw, http.StatusOK, []struct{}{}) httpapi.Write(r.Context(), rw, http.StatusOK, []struct{}{})
} }
@@ -25,7 +25,7 @@ func templateVersionParametersDeprecated(rw http.ResponseWriter, r *http.Request
// @Tags Templates // @Tags Templates
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Success 200 // @Success 200
// @Router /templateversions/{templateversion}/schema [get] // @Router /api/v2/templateversions/{templateversion}/schema [get]
func templateVersionSchemaDeprecated(rw http.ResponseWriter, r *http.Request) { func templateVersionSchemaDeprecated(rw http.ResponseWriter, r *http.Request) {
httpapi.Write(r.Context(), rw, http.StatusOK, []struct{}{}) httpapi.Write(r.Context(), rw, http.StatusOK, []struct{}{})
} }
@@ -41,7 +41,7 @@ func templateVersionSchemaDeprecated(rw http.ResponseWriter, r *http.Request) {
// @Param follow query bool false "Follow log stream" // @Param follow query bool false "Follow log stream"
// @Param no_compression query bool false "Disable compression for WebSocket connection" // @Param no_compression query bool false "Disable compression for WebSocket connection"
// @Success 200 {array} codersdk.WorkspaceAgentLog // @Success 200 {array} codersdk.WorkspaceAgentLog
// @Router /workspaceagents/{workspaceagent}/startup-logs [get] // @Router /api/v2/workspaceagents/{workspaceagent}/startup-logs [get]
func (api *API) workspaceAgentLogsDeprecated(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentLogsDeprecated(rw http.ResponseWriter, r *http.Request) {
api.workspaceAgentLogs(rw, r) api.workspaceAgentLogs(rw, r)
} }
@@ -55,7 +55,7 @@ func (api *API) workspaceAgentLogsDeprecated(rw http.ResponseWriter, r *http.Req
// @Param id query string true "Provider ID" // @Param id query string true "Provider ID"
// @Param listen query bool false "Wait for a new token to be issued" // @Param listen query bool false "Wait for a new token to be issued"
// @Success 200 {object} agentsdk.ExternalAuthResponse // @Success 200 {object} agentsdk.ExternalAuthResponse
// @Router /workspaceagents/me/gitauth [get] // @Router /api/v2/workspaceagents/me/gitauth [get]
func (api *API) workspaceAgentsGitAuth(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentsGitAuth(rw http.ResponseWriter, r *http.Request) {
api.workspaceAgentsExternalAuth(rw, r) api.workspaceAgentsExternalAuth(rw, r)
} }
@@ -67,7 +67,7 @@ func (api *API) workspaceAgentsGitAuth(rw http.ResponseWriter, r *http.Request)
// @Tags Builds // @Tags Builds
// @Param workspacebuild path string true "Workspace build ID" // @Param workspacebuild path string true "Workspace build ID"
// @Success 200 {array} codersdk.WorkspaceResource // @Success 200 {array} codersdk.WorkspaceResource
// @Router /workspacebuilds/{workspacebuild}/resources [get] // @Router /api/v2/workspacebuilds/{workspacebuild}/resources [get]
// @Deprecated this endpoint is unused and will be removed in future. // @Deprecated this endpoint is unused and will be removed in future.
func (api *API) workspaceBuildResourcesDeprecated(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceBuildResourcesDeprecated(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+3 -3
View File
@@ -4486,7 +4486,7 @@ func (api *API) putChatWorkspaceTTL(rw http.ResponseWriter, r *http.Request) {
// @Tags Chats // @Tags Chats
// @Produce json // @Produce json
// @Success 200 {object} codersdk.ChatRetentionDaysResponse // @Success 200 {object} codersdk.ChatRetentionDaysResponse
// @Router /experimental/chats/config/retention-days [get] // @Router /api/experimental/chats/config/retention-days [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
// //
//nolint:revive // get-return: revive assumes get* must be a getter, but this is an HTTP handler. //nolint:revive // get-return: revive assumes get* must be a getter, but this is an HTTP handler.
@@ -4516,7 +4516,7 @@ const retentionDaysMaximum = 3650 // ~10 years
// @Accept json // @Accept json
// @Param request body codersdk.UpdateChatRetentionDaysRequest true "Request body" // @Param request body codersdk.UpdateChatRetentionDaysRequest true "Request body"
// @Success 204 // @Success 204
// @Router /experimental/chats/config/retention-days [put] // @Router /api/experimental/chats/config/retention-days [put]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) putChatRetentionDays(rw http.ResponseWriter, r *http.Request) { func (api *API) putChatRetentionDays(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -6941,7 +6941,7 @@ func (api *API) hasEffectiveCentralProviderAPIKey(
// @Param start_date query string true "Start date (RFC3339)" // @Param start_date query string true "Start date (RFC3339)"
// @Param end_date query string true "End date (RFC3339)" // @Param end_date query string true "End date (RFC3339)"
// @Success 200 {object} codersdk.PRInsightsResponse // @Success 200 {object} codersdk.PRInsightsResponse
// @Router /chats/insights/pull-requests [get] // @Router /api/experimental/chats/insights/pull-requests [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) prInsights(rw http.ResponseWriter, r *http.Request) { func (api *API) prInsights(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+2 -2
View File
@@ -13,7 +13,7 @@ import (
// @Produce json // @Produce json
// @Tags General // @Tags General
// @Success 200 {array} codersdk.Experiment // @Success 200 {array} codersdk.Experiment
// @Router /experiments [get] // @Router /api/v2/experiments [get]
func (api *API) handleExperimentsGet(rw http.ResponseWriter, r *http.Request) { func (api *API) handleExperimentsGet(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
httpapi.Write(ctx, rw, http.StatusOK, api.Experiments) httpapi.Write(ctx, rw, http.StatusOK, api.Experiments)
@@ -25,7 +25,7 @@ func (api *API) handleExperimentsGet(rw http.ResponseWriter, r *http.Request) {
// @Produce json // @Produce json
// @Tags General // @Tags General
// @Success 200 {array} codersdk.Experiment // @Success 200 {array} codersdk.Experiment
// @Router /experiments/available [get] // @Router /api/v2/experiments/available [get]
func handleExperimentsAvailable(rw http.ResponseWriter, r *http.Request) { func handleExperimentsAvailable(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
httpapi.Write(ctx, rw, http.StatusOK, codersdk.AvailableExperiments{ httpapi.Write(ctx, rw, http.StatusOK, codersdk.AvailableExperiments{
+5 -5
View File
@@ -27,7 +27,7 @@ import (
// @Produce json // @Produce json
// @Param externalauth path string true "Git Provider ID" format(string) // @Param externalauth path string true "Git Provider ID" format(string)
// @Success 200 {object} codersdk.ExternalAuth // @Success 200 {object} codersdk.ExternalAuth
// @Router /external-auth/{externalauth} [get] // @Router /api/v2/external-auth/{externalauth} [get]
func (api *API) externalAuthByID(w http.ResponseWriter, r *http.Request) { func (api *API) externalAuthByID(w http.ResponseWriter, r *http.Request) {
config := httpmw.ExternalAuthParam(r) config := httpmw.ExternalAuthParam(r)
apiKey := httpmw.APIKey(r) apiKey := httpmw.APIKey(r)
@@ -89,7 +89,7 @@ func (api *API) externalAuthByID(w http.ResponseWriter, r *http.Request) {
// @Produce json // @Produce json
// @Param externalauth path string true "Git Provider ID" format(string) // @Param externalauth path string true "Git Provider ID" format(string)
// @Success 200 {object} codersdk.DeleteExternalAuthByIDResponse // @Success 200 {object} codersdk.DeleteExternalAuthByIDResponse
// @Router /external-auth/{externalauth} [delete] // @Router /api/v2/external-auth/{externalauth} [delete]
func (api *API) deleteExternalAuthByID(w http.ResponseWriter, r *http.Request) { func (api *API) deleteExternalAuthByID(w http.ResponseWriter, r *http.Request) {
config := httpmw.ExternalAuthParam(r) config := httpmw.ExternalAuthParam(r)
apiKey := httpmw.APIKey(r) apiKey := httpmw.APIKey(r)
@@ -142,7 +142,7 @@ func (api *API) deleteExternalAuthByID(w http.ResponseWriter, r *http.Request) {
// @Tags Git // @Tags Git
// @Param externalauth path string true "External Provider ID" format(string) // @Param externalauth path string true "External Provider ID" format(string)
// @Success 204 // @Success 204
// @Router /external-auth/{externalauth}/device [post] // @Router /api/v2/external-auth/{externalauth}/device [post]
func (api *API) postExternalAuthDeviceByID(rw http.ResponseWriter, r *http.Request) { func (api *API) postExternalAuthDeviceByID(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
apiKey := httpmw.APIKey(r) apiKey := httpmw.APIKey(r)
@@ -232,7 +232,7 @@ func (api *API) postExternalAuthDeviceByID(rw http.ResponseWriter, r *http.Reque
// @Tags Git // @Tags Git
// @Param externalauth path string true "Git Provider ID" format(string) // @Param externalauth path string true "Git Provider ID" format(string)
// @Success 200 {object} codersdk.ExternalAuthDevice // @Success 200 {object} codersdk.ExternalAuthDevice
// @Router /external-auth/{externalauth}/device [get] // @Router /api/v2/external-auth/{externalauth}/device [get]
func (*API) externalAuthDeviceByID(rw http.ResponseWriter, r *http.Request) { func (*API) externalAuthDeviceByID(rw http.ResponseWriter, r *http.Request) {
config := httpmw.ExternalAuthParam(r) config := httpmw.ExternalAuthParam(r)
ctx := r.Context() ctx := r.Context()
@@ -345,7 +345,7 @@ func (api *API) externalAuthCallback(externalAuthConfig *externalauth.Config) ht
// @Produce json // @Produce json
// @Tags Git // @Tags Git
// @Success 200 {object} codersdk.ExternalAuthLink // @Success 200 {object} codersdk.ExternalAuthLink
// @Router /external-auth [get] // @Router /api/v2/external-auth [get]
func (api *API) listUserExternalAuths(rw http.ResponseWriter, r *http.Request) { func (api *API) listUserExternalAuths(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
key := httpmw.APIKey(r) key := httpmw.APIKey(r)
+2 -2
View File
@@ -43,7 +43,7 @@ const (
// @Param file formData file true "File to be uploaded. If using tar format, file must conform to ustar (pax may cause problems)." // @Param file formData file true "File to be uploaded. If using tar format, file must conform to ustar (pax may cause problems)."
// @Success 200 {object} codersdk.UploadResponse "Returns existing file if duplicate" // @Success 200 {object} codersdk.UploadResponse "Returns existing file if duplicate"
// @Success 201 {object} codersdk.UploadResponse "Returns newly created file" // @Success 201 {object} codersdk.UploadResponse "Returns newly created file"
// @Router /files [post] // @Router /api/v2/files [post]
func (api *API) postFile(rw http.ResponseWriter, r *http.Request) { func (api *API) postFile(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
apiKey := httpmw.APIKey(r) apiKey := httpmw.APIKey(r)
@@ -149,7 +149,7 @@ func (api *API) postFile(rw http.ResponseWriter, r *http.Request) {
// @Tags Files // @Tags Files
// @Param fileID path string true "File ID" format(uuid) // @Param fileID path string true "File ID" format(uuid)
// @Success 200 // @Success 200
// @Router /files/{fileID} [get] // @Router /api/v2/files/{fileID} [get]
func (api *API) fileByID(rw http.ResponseWriter, r *http.Request) { func (api *API) fileByID(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
+3 -3
View File
@@ -20,7 +20,7 @@ import (
// @Tags Users // @Tags Users
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {object} codersdk.GitSSHKey // @Success 200 {object} codersdk.GitSSHKey
// @Router /users/{user}/gitsshkey [put] // @Router /api/v2/users/{user}/gitsshkey [put]
func (api *API) regenerateGitSSHKey(rw http.ResponseWriter, r *http.Request) { func (api *API) regenerateGitSSHKey(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -84,7 +84,7 @@ func (api *API) regenerateGitSSHKey(rw http.ResponseWriter, r *http.Request) {
// @Tags Users // @Tags Users
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {object} codersdk.GitSSHKey // @Success 200 {object} codersdk.GitSSHKey
// @Router /users/{user}/gitsshkey [get] // @Router /api/v2/users/{user}/gitsshkey [get]
func (api *API) gitSSHKey(rw http.ResponseWriter, r *http.Request) { func (api *API) gitSSHKey(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
user := httpmw.UserParam(r) user := httpmw.UserParam(r)
@@ -113,7 +113,7 @@ func (api *API) gitSSHKey(rw http.ResponseWriter, r *http.Request) {
// @Produce json // @Produce json
// @Tags Agents // @Tags Agents
// @Success 200 {object} agentsdk.GitSSHKey // @Success 200 {object} agentsdk.GitSSHKey
// @Router /workspaceagents/me/gitsshkey [get] // @Router /api/v2/workspaceagents/me/gitsshkey [get]
func (api *API) agentGitSSHKey(rw http.ResponseWriter, r *http.Request) { func (api *API) agentGitSSHKey(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
agent := httpmw.WorkspaceAgent(r) agent := httpmw.WorkspaceAgent(r)
+4 -4
View File
@@ -115,7 +115,7 @@ func convertInboxNotificationResponse(ctx context.Context, logger slog.Logger, n
// @Param read_status query string false "Filter notifications by read status. Possible values: read, unread, all" // @Param read_status query string false "Filter notifications by read status. Possible values: read, unread, all"
// @Param format query string false "Define the output format for notifications title and body." enums(plaintext,markdown) // @Param format query string false "Define the output format for notifications title and body." enums(plaintext,markdown)
// @Success 200 {object} codersdk.GetInboxNotificationResponse // @Success 200 {object} codersdk.GetInboxNotificationResponse
// @Router /notifications/inbox/watch [get] // @Router /api/v2/notifications/inbox/watch [get]
func (api *API) watchInboxNotifications(rw http.ResponseWriter, r *http.Request) { func (api *API) watchInboxNotifications(rw http.ResponseWriter, r *http.Request) {
p := httpapi.NewQueryParamParser() p := httpapi.NewQueryParamParser()
vals := r.URL.Query() vals := r.URL.Query()
@@ -286,7 +286,7 @@ func (api *API) watchInboxNotifications(rw http.ResponseWriter, r *http.Request)
// @Param read_status query string false "Filter notifications by read status. Possible values: read, unread, all" // @Param read_status query string false "Filter notifications by read status. Possible values: read, unread, all"
// @Param starting_before query string false "ID of the last notification from the current page. Notifications returned will be older than the associated one" format(uuid) // @Param starting_before query string false "ID of the last notification from the current page. Notifications returned will be older than the associated one" format(uuid)
// @Success 200 {object} codersdk.ListInboxNotificationsResponse // @Success 200 {object} codersdk.ListInboxNotificationsResponse
// @Router /notifications/inbox [get] // @Router /api/v2/notifications/inbox [get]
func (api *API) listInboxNotifications(rw http.ResponseWriter, r *http.Request) { func (api *API) listInboxNotifications(rw http.ResponseWriter, r *http.Request) {
p := httpapi.NewQueryParamParser() p := httpapi.NewQueryParamParser()
vals := r.URL.Query() vals := r.URL.Query()
@@ -372,7 +372,7 @@ func (api *API) listInboxNotifications(rw http.ResponseWriter, r *http.Request)
// @Tags Notifications // @Tags Notifications
// @Param id path string true "id of the notification" // @Param id path string true "id of the notification"
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /notifications/inbox/{id}/read-status [put] // @Router /api/v2/notifications/inbox/{id}/read-status [put]
func (api *API) updateInboxNotificationReadStatus(rw http.ResponseWriter, r *http.Request) { func (api *API) updateInboxNotificationReadStatus(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -440,7 +440,7 @@ func (api *API) updateInboxNotificationReadStatus(rw http.ResponseWriter, r *htt
// @Security CoderSessionToken // @Security CoderSessionToken
// @Tags Notifications // @Tags Notifications
// @Success 204 // @Success 204
// @Router /notifications/inbox/mark-all-as-read [put] // @Router /api/v2/notifications/inbox/mark-all-as-read [put]
func (api *API) markAllInboxNotificationsAsRead(rw http.ResponseWriter, r *http.Request) { func (api *API) markAllInboxNotificationsAsRead(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
+1 -1
View File
@@ -21,7 +21,7 @@ import (
// @Param os path string true "Operating system" // @Param os path string true "Operating system"
// @Param arch path string true "Architecture" // @Param arch path string true "Architecture"
// @Success 200 "Success" // @Success 200 "Success"
// @Router /init-script/{os}/{arch} [get] // @Router /api/v2/init-script/{os}/{arch} [get]
func (api *API) initScript(rw http.ResponseWriter, r *http.Request) { func (api *API) initScript(rw http.ResponseWriter, r *http.Request) {
os := strings.ToLower(chi.URLParam(r, "os")) os := strings.ToLower(chi.URLParam(r, "os"))
arch := strings.ToLower(chi.URLParam(r, "arch")) arch := strings.ToLower(chi.URLParam(r, "arch"))
+5 -5
View File
@@ -33,7 +33,7 @@ const insightsTimeLayout = time.RFC3339
// @Tags Insights // @Tags Insights
// @Param tz_offset query int true "Time-zone offset (e.g. -2)" // @Param tz_offset query int true "Time-zone offset (e.g. -2)"
// @Success 200 {object} codersdk.DAUsResponse // @Success 200 {object} codersdk.DAUsResponse
// @Router /insights/daus [get] // @Router /api/v2/insights/daus [get]
func (api *API) deploymentDAUs(rw http.ResponseWriter, r *http.Request) { func (api *API) deploymentDAUs(rw http.ResponseWriter, r *http.Request) {
if !api.Authorize(r, policy.ActionRead, rbac.ResourceDeploymentConfig) { if !api.Authorize(r, policy.ActionRead, rbac.ResourceDeploymentConfig) {
httpapi.Forbidden(rw) httpapi.Forbidden(rw)
@@ -106,7 +106,7 @@ func (api *API) returnDAUsInternal(rw http.ResponseWriter, r *http.Request, temp
// @Param end_time query string true "End time" format(date-time) // @Param end_time query string true "End time" format(date-time)
// @Param template_ids query []string false "Template IDs" collectionFormat(csv) // @Param template_ids query []string false "Template IDs" collectionFormat(csv)
// @Success 200 {object} codersdk.UserActivityInsightsResponse // @Success 200 {object} codersdk.UserActivityInsightsResponse
// @Router /insights/user-activity [get] // @Router /api/v2/insights/user-activity [get]
func (api *API) insightsUserActivity(rw http.ResponseWriter, r *http.Request) { func (api *API) insightsUserActivity(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -209,7 +209,7 @@ func (api *API) insightsUserActivity(rw http.ResponseWriter, r *http.Request) {
// @Param end_time query string true "End time" format(date-time) // @Param end_time query string true "End time" format(date-time)
// @Param template_ids query []string false "Template IDs" collectionFormat(csv) // @Param template_ids query []string false "Template IDs" collectionFormat(csv)
// @Success 200 {object} codersdk.UserLatencyInsightsResponse // @Success 200 {object} codersdk.UserLatencyInsightsResponse
// @Router /insights/user-latency [get] // @Router /api/v2/insights/user-latency [get]
func (api *API) insightsUserLatency(rw http.ResponseWriter, r *http.Request) { func (api *API) insightsUserLatency(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -301,7 +301,7 @@ func (api *API) insightsUserLatency(rw http.ResponseWriter, r *http.Request) {
// @Param timezone query string false "IANA timezone name (e.g. America/St_Johns)" // @Param timezone query string false "IANA timezone name (e.g. America/St_Johns)"
// @Param tz_offset query int false "Deprecated: Time-zone offset (e.g. -2). Use timezone instead." // @Param tz_offset query int false "Deprecated: Time-zone offset (e.g. -2). Use timezone instead."
// @Success 200 {object} codersdk.GetUserStatusCountsResponse // @Success 200 {object} codersdk.GetUserStatusCountsResponse
// @Router /insights/user-status-counts [get] // @Router /api/v2/insights/user-status-counts [get]
func (api *API) insightsUserStatusCounts(rw http.ResponseWriter, r *http.Request) { func (api *API) insightsUserStatusCounts(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -396,7 +396,7 @@ func (api *API) insightsUserStatusCounts(rw http.ResponseWriter, r *http.Request
// @Param interval query string true "Interval" enums(week,day) // @Param interval query string true "Interval" enums(week,day)
// @Param template_ids query []string false "Template IDs" collectionFormat(csv) // @Param template_ids query []string false "Template IDs" collectionFormat(csv)
// @Success 200 {object} codersdk.TemplateInsightsResponse // @Success 200 {object} codersdk.TemplateInsightsResponse
// @Router /insights/templates [get] // @Router /api/v2/insights/templates [get]
func (api *API) insightsTemplates(rw http.ResponseWriter, r *http.Request) { func (api *API) insightsTemplates(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+6 -6
View File
@@ -30,7 +30,7 @@ import (
// @Param organization path string true "Organization ID" // @Param organization path string true "Organization ID"
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {object} codersdk.OrganizationMember // @Success 200 {object} codersdk.OrganizationMember
// @Router /organizations/{organization}/members/{user} [post] // @Router /api/v2/organizations/{organization}/members/{user} [post]
func (api *API) postOrganizationMember(rw http.ResponseWriter, r *http.Request) { func (api *API) postOrganizationMember(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -97,7 +97,7 @@ func (api *API) postOrganizationMember(rw http.ResponseWriter, r *http.Request)
// @Param organization path string true "Organization ID" // @Param organization path string true "Organization ID"
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 204 // @Success 204
// @Router /organizations/{organization}/members/{user} [delete] // @Router /api/v2/organizations/{organization}/members/{user} [delete]
func (api *API) deleteOrganizationMember(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteOrganizationMember(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -154,7 +154,7 @@ func (api *API) deleteOrganizationMember(rw http.ResponseWriter, r *http.Request
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {object} codersdk.OrganizationMemberWithUserData // @Success 200 {object} codersdk.OrganizationMemberWithUserData
// @Produce json // @Produce json
// @Router /organizations/{organization}/members/{user} [get] // @Router /api/v2/organizations/{organization}/members/{user} [get]
func (api *API) organizationMember(rw http.ResponseWriter, r *http.Request) { func (api *API) organizationMember(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -212,7 +212,7 @@ func (api *API) organizationMember(rw http.ResponseWriter, r *http.Request) {
// @Tags Members // @Tags Members
// @Param organization path string true "Organization ID" // @Param organization path string true "Organization ID"
// @Success 200 {object} []codersdk.OrganizationMemberWithUserData // @Success 200 {object} []codersdk.OrganizationMemberWithUserData
// @Router /organizations/{organization}/members [get] // @Router /api/v2/organizations/{organization}/members [get]
func (api *API) listMembers(rw http.ResponseWriter, r *http.Request) { func (api *API) listMembers(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -272,7 +272,7 @@ func (api *API) listMembers(rw http.ResponseWriter, r *http.Request) {
// @Param limit query int false "Page limit, if 0 returns all members" // @Param limit query int false "Page limit, if 0 returns all members"
// @Param offset query int false "Page offset" // @Param offset query int false "Page offset"
// @Success 200 {object} []codersdk.PaginatedMembersResponse // @Success 200 {object} []codersdk.PaginatedMembersResponse
// @Router /organizations/{organization}/paginated-members [get] // @Router /api/v2/organizations/{organization}/paginated-members [get]
func (api *API) paginatedMembers(rw http.ResponseWriter, r *http.Request) { func (api *API) paginatedMembers(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -403,7 +403,7 @@ func getAISeatSetByUserIDs(ctx context.Context, db database.Store, userIDs []uui
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Param request body codersdk.UpdateRoles true "Update roles request" // @Param request body codersdk.UpdateRoles true "Update roles request"
// @Success 200 {object} codersdk.OrganizationMember // @Success 200 {object} codersdk.OrganizationMember
// @Router /organizations/{organization}/members/{user}/roles [put] // @Router /api/v2/organizations/{organization}/members/{user}/roles [put]
func (api *API) putMemberRoles(rw http.ResponseWriter, r *http.Request) { func (api *API) putMemberRoles(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
+9 -9
View File
@@ -27,7 +27,7 @@ import (
// @Produce json // @Produce json
// @Tags Notifications // @Tags Notifications
// @Success 200 {object} codersdk.NotificationsSettings // @Success 200 {object} codersdk.NotificationsSettings
// @Router /notifications/settings [get] // @Router /api/v2/notifications/settings [get]
func (api *API) notificationsSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) notificationsSettings(rw http.ResponseWriter, r *http.Request) {
settingsJSON, err := api.Database.GetNotificationsSettings(r.Context()) settingsJSON, err := api.Database.GetNotificationsSettings(r.Context())
if err != nil { if err != nil {
@@ -61,7 +61,7 @@ func (api *API) notificationsSettings(rw http.ResponseWriter, r *http.Request) {
// @Param request body codersdk.NotificationsSettings true "Notifications settings request" // @Param request body codersdk.NotificationsSettings true "Notifications settings request"
// @Success 200 {object} codersdk.NotificationsSettings // @Success 200 {object} codersdk.NotificationsSettings
// @Success 304 // @Success 304
// @Router /notifications/settings [put] // @Router /api/v2/notifications/settings [put]
func (api *API) putNotificationsSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) putNotificationsSettings(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -149,7 +149,7 @@ func (api *API) notificationTemplatesByKind(rw http.ResponseWriter, r *http.Requ
// @Tags Notifications // @Tags Notifications
// @Success 200 {array} codersdk.NotificationTemplate // @Success 200 {array} codersdk.NotificationTemplate
// @Failure 500 {object} codersdk.Response "Failed to retrieve 'system' notifications template" // @Failure 500 {object} codersdk.Response "Failed to retrieve 'system' notifications template"
// @Router /notifications/templates/system [get] // @Router /api/v2/notifications/templates/system [get]
func (api *API) systemNotificationTemplates(rw http.ResponseWriter, r *http.Request) { func (api *API) systemNotificationTemplates(rw http.ResponseWriter, r *http.Request) {
api.notificationTemplatesByKind(rw, r, database.NotificationTemplateKindSystem) api.notificationTemplatesByKind(rw, r, database.NotificationTemplateKindSystem)
} }
@@ -161,7 +161,7 @@ func (api *API) systemNotificationTemplates(rw http.ResponseWriter, r *http.Requ
// @Tags Notifications // @Tags Notifications
// @Success 200 {array} codersdk.NotificationTemplate // @Success 200 {array} codersdk.NotificationTemplate
// @Failure 500 {object} codersdk.Response "Failed to retrieve 'custom' notifications template" // @Failure 500 {object} codersdk.Response "Failed to retrieve 'custom' notifications template"
// @Router /notifications/templates/custom [get] // @Router /api/v2/notifications/templates/custom [get]
func (api *API) customNotificationTemplates(rw http.ResponseWriter, r *http.Request) { func (api *API) customNotificationTemplates(rw http.ResponseWriter, r *http.Request) {
api.notificationTemplatesByKind(rw, r, database.NotificationTemplateKindCustom) api.notificationTemplatesByKind(rw, r, database.NotificationTemplateKindCustom)
} }
@@ -172,7 +172,7 @@ func (api *API) customNotificationTemplates(rw http.ResponseWriter, r *http.Requ
// @Produce json // @Produce json
// @Tags Notifications // @Tags Notifications
// @Success 200 {array} codersdk.NotificationMethodsResponse // @Success 200 {array} codersdk.NotificationMethodsResponse
// @Router /notifications/dispatch-methods [get] // @Router /api/v2/notifications/dispatch-methods [get]
func (api *API) notificationDispatchMethods(rw http.ResponseWriter, r *http.Request) { func (api *API) notificationDispatchMethods(rw http.ResponseWriter, r *http.Request) {
var methods []string var methods []string
for _, nm := range database.AllNotificationMethodValues() { for _, nm := range database.AllNotificationMethodValues() {
@@ -195,7 +195,7 @@ func (api *API) notificationDispatchMethods(rw http.ResponseWriter, r *http.Requ
// @Security CoderSessionToken // @Security CoderSessionToken
// @Tags Notifications // @Tags Notifications
// @Success 200 // @Success 200
// @Router /notifications/test [post] // @Router /api/v2/notifications/test [post]
func (api *API) postTestNotification(rw http.ResponseWriter, r *http.Request) { func (api *API) postTestNotification(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -244,7 +244,7 @@ func (api *API) postTestNotification(rw http.ResponseWriter, r *http.Request) {
// @Tags Notifications // @Tags Notifications
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {array} codersdk.NotificationPreference // @Success 200 {array} codersdk.NotificationPreference
// @Router /users/{user}/notifications/preferences [get] // @Router /api/v2/users/{user}/notifications/preferences [get]
func (api *API) userNotificationPreferences(rw http.ResponseWriter, r *http.Request) { func (api *API) userNotificationPreferences(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -276,7 +276,7 @@ func (api *API) userNotificationPreferences(rw http.ResponseWriter, r *http.Requ
// @Param request body codersdk.UpdateUserNotificationPreferences true "Preferences" // @Param request body codersdk.UpdateUserNotificationPreferences true "Preferences"
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {array} codersdk.NotificationPreference // @Success 200 {array} codersdk.NotificationPreference
// @Router /users/{user}/notifications/preferences [put] // @Router /api/v2/users/{user}/notifications/preferences [put]
func (api *API) putUserNotificationPreferences(rw http.ResponseWriter, r *http.Request) { func (api *API) putUserNotificationPreferences(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -353,7 +353,7 @@ func (api *API) putUserNotificationPreferences(rw http.ResponseWriter, r *http.R
// @Failure 400 {object} codersdk.Response "Invalid request body" // @Failure 400 {object} codersdk.Response "Invalid request body"
// @Failure 403 {object} codersdk.Response "System users cannot send custom notifications" // @Failure 403 {object} codersdk.Response "System users cannot send custom notifications"
// @Failure 500 {object} codersdk.Response "Failed to send custom notification" // @Failure 500 {object} codersdk.Response "Failed to send custom notification"
// @Router /notifications/custom [post] // @Router /api/v2/notifications/custom [post]
func (api *API) postCustomNotification(rw http.ResponseWriter, r *http.Request) { func (api *API) postCustomNotification(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
+8 -8
View File
@@ -13,7 +13,7 @@ import (
// @Tags Enterprise // @Tags Enterprise
// @Param user_id query string false "Filter by applications authorized for a user" // @Param user_id query string false "Filter by applications authorized for a user"
// @Success 200 {array} codersdk.OAuth2ProviderApp // @Success 200 {array} codersdk.OAuth2ProviderApp
// @Router /oauth2-provider/apps [get] // @Router /api/v2/oauth2-provider/apps [get]
func (api *API) oAuth2ProviderApps() http.HandlerFunc { func (api *API) oAuth2ProviderApps() http.HandlerFunc {
return oauth2provider.ListApps(api.Database, api.AccessURL) return oauth2provider.ListApps(api.Database, api.AccessURL)
} }
@@ -25,7 +25,7 @@ func (api *API) oAuth2ProviderApps() http.HandlerFunc {
// @Tags Enterprise // @Tags Enterprise
// @Param app path string true "App ID" // @Param app path string true "App ID"
// @Success 200 {object} codersdk.OAuth2ProviderApp // @Success 200 {object} codersdk.OAuth2ProviderApp
// @Router /oauth2-provider/apps/{app} [get] // @Router /api/v2/oauth2-provider/apps/{app} [get]
func (api *API) oAuth2ProviderApp() http.HandlerFunc { func (api *API) oAuth2ProviderApp() http.HandlerFunc {
return oauth2provider.GetApp(api.AccessURL) return oauth2provider.GetApp(api.AccessURL)
} }
@@ -38,7 +38,7 @@ func (api *API) oAuth2ProviderApp() http.HandlerFunc {
// @Tags Enterprise // @Tags Enterprise
// @Param request body codersdk.PostOAuth2ProviderAppRequest true "The OAuth2 application to create." // @Param request body codersdk.PostOAuth2ProviderAppRequest true "The OAuth2 application to create."
// @Success 200 {object} codersdk.OAuth2ProviderApp // @Success 200 {object} codersdk.OAuth2ProviderApp
// @Router /oauth2-provider/apps [post] // @Router /api/v2/oauth2-provider/apps [post]
func (api *API) postOAuth2ProviderApp() http.HandlerFunc { func (api *API) postOAuth2ProviderApp() http.HandlerFunc {
return oauth2provider.CreateApp(api.Database, api.AccessURL, api.Auditor.Load(), api.Logger) return oauth2provider.CreateApp(api.Database, api.AccessURL, api.Auditor.Load(), api.Logger)
} }
@@ -52,7 +52,7 @@ func (api *API) postOAuth2ProviderApp() http.HandlerFunc {
// @Param app path string true "App ID" // @Param app path string true "App ID"
// @Param request body codersdk.PutOAuth2ProviderAppRequest true "Update an OAuth2 application." // @Param request body codersdk.PutOAuth2ProviderAppRequest true "Update an OAuth2 application."
// @Success 200 {object} codersdk.OAuth2ProviderApp // @Success 200 {object} codersdk.OAuth2ProviderApp
// @Router /oauth2-provider/apps/{app} [put] // @Router /api/v2/oauth2-provider/apps/{app} [put]
func (api *API) putOAuth2ProviderApp() http.HandlerFunc { func (api *API) putOAuth2ProviderApp() http.HandlerFunc {
return oauth2provider.UpdateApp(api.Database, api.AccessURL, api.Auditor.Load(), api.Logger) return oauth2provider.UpdateApp(api.Database, api.AccessURL, api.Auditor.Load(), api.Logger)
} }
@@ -63,7 +63,7 @@ func (api *API) putOAuth2ProviderApp() http.HandlerFunc {
// @Tags Enterprise // @Tags Enterprise
// @Param app path string true "App ID" // @Param app path string true "App ID"
// @Success 204 // @Success 204
// @Router /oauth2-provider/apps/{app} [delete] // @Router /api/v2/oauth2-provider/apps/{app} [delete]
func (api *API) deleteOAuth2ProviderApp() http.HandlerFunc { func (api *API) deleteOAuth2ProviderApp() http.HandlerFunc {
return oauth2provider.DeleteApp(api.Database, api.Auditor.Load(), api.Logger) return oauth2provider.DeleteApp(api.Database, api.Auditor.Load(), api.Logger)
} }
@@ -75,7 +75,7 @@ func (api *API) deleteOAuth2ProviderApp() http.HandlerFunc {
// @Tags Enterprise // @Tags Enterprise
// @Param app path string true "App ID" // @Param app path string true "App ID"
// @Success 200 {array} codersdk.OAuth2ProviderAppSecret // @Success 200 {array} codersdk.OAuth2ProviderAppSecret
// @Router /oauth2-provider/apps/{app}/secrets [get] // @Router /api/v2/oauth2-provider/apps/{app}/secrets [get]
func (api *API) oAuth2ProviderAppSecrets() http.HandlerFunc { func (api *API) oAuth2ProviderAppSecrets() http.HandlerFunc {
return oauth2provider.GetAppSecrets(api.Database) return oauth2provider.GetAppSecrets(api.Database)
} }
@@ -87,7 +87,7 @@ func (api *API) oAuth2ProviderAppSecrets() http.HandlerFunc {
// @Tags Enterprise // @Tags Enterprise
// @Param app path string true "App ID" // @Param app path string true "App ID"
// @Success 200 {array} codersdk.OAuth2ProviderAppSecretFull // @Success 200 {array} codersdk.OAuth2ProviderAppSecretFull
// @Router /oauth2-provider/apps/{app}/secrets [post] // @Router /api/v2/oauth2-provider/apps/{app}/secrets [post]
func (api *API) postOAuth2ProviderAppSecret() http.HandlerFunc { func (api *API) postOAuth2ProviderAppSecret() http.HandlerFunc {
return oauth2provider.CreateAppSecret(api.Database, api.Auditor.Load(), api.Logger) return oauth2provider.CreateAppSecret(api.Database, api.Auditor.Load(), api.Logger)
} }
@@ -99,7 +99,7 @@ func (api *API) postOAuth2ProviderAppSecret() http.HandlerFunc {
// @Param app path string true "App ID" // @Param app path string true "App ID"
// @Param secretID path string true "Secret ID" // @Param secretID path string true "Secret ID"
// @Success 204 // @Success 204
// @Router /oauth2-provider/apps/{app}/secrets/{secretID} [delete] // @Router /api/v2/oauth2-provider/apps/{app}/secrets/{secretID} [delete]
func (api *API) deleteOAuth2ProviderAppSecret() http.HandlerFunc { func (api *API) deleteOAuth2ProviderAppSecret() http.HandlerFunc {
return oauth2provider.DeleteAppSecret(api.Database, api.Auditor.Load(), api.Logger) return oauth2provider.DeleteAppSecret(api.Database, api.Auditor.Load(), api.Logger)
} }
+2 -2
View File
@@ -17,7 +17,7 @@ import (
// @Produce json // @Produce json
// @Tags Organizations // @Tags Organizations
// @Success 200 {object} []codersdk.Organization // @Success 200 {object} []codersdk.Organization
// @Router /organizations [get] // @Router /api/v2/organizations [get]
func (api *API) organizations(rw http.ResponseWriter, r *http.Request) { func (api *API) organizations(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
organizations, err := api.Database.GetOrganizations(ctx, database.GetOrganizationsParams{}) organizations, err := api.Database.GetOrganizations(ctx, database.GetOrganizationsParams{})
@@ -43,7 +43,7 @@ func (api *API) organizations(rw http.ResponseWriter, r *http.Request) {
// @Tags Organizations // @Tags Organizations
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Success 200 {object} codersdk.Organization // @Success 200 {object} codersdk.Organization
// @Router /organizations/{organization} [get] // @Router /api/v2/organizations/{organization} [get]
func (*API) organization(rw http.ResponseWriter, r *http.Request) { func (*API) organization(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
organization := httpmw.OrganizationParam(r) organization := httpmw.OrganizationParam(r)
+2 -2
View File
@@ -27,7 +27,7 @@ import (
// @Produce json // @Produce json
// @Param request body codersdk.DynamicParametersRequest true "Initial parameter values" // @Param request body codersdk.DynamicParametersRequest true "Initial parameter values"
// @Success 200 {object} codersdk.DynamicParametersResponse // @Success 200 {object} codersdk.DynamicParametersResponse
// @Router /templateversions/{templateversion}/dynamic-parameters/evaluate [post] // @Router /api/v2/templateversions/{templateversion}/dynamic-parameters/evaluate [post]
func (api *API) templateVersionDynamicParametersEvaluate(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionDynamicParametersEvaluate(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
var req codersdk.DynamicParametersRequest var req codersdk.DynamicParametersRequest
@@ -44,7 +44,7 @@ func (api *API) templateVersionDynamicParametersEvaluate(rw http.ResponseWriter,
// @Tags Templates // @Tags Templates
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Success 101 // @Success 101
// @Router /templateversions/{templateversion}/dynamic-parameters [get] // @Router /api/v2/templateversions/{templateversion}/dynamic-parameters [get]
func (api *API) templateVersionDynamicParametersWebsocket(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionDynamicParametersWebsocket(rw http.ResponseWriter, r *http.Request) {
apikey := httpmw.APIKey(r) apikey := httpmw.APIKey(r)
userID := apikey.UserID userID := apikey.UserID
+1 -1
View File
@@ -16,7 +16,7 @@ import (
// @Tags Templates // @Tags Templates
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Success 200 {array} codersdk.Preset // @Success 200 {array} codersdk.Preset
// @Router /templateversions/{templateversion}/presets [get] // @Router /api/v2/templateversions/{templateversion}/presets [get]
func (api *API) templateVersionPresets(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionPresets(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
templateVersion := httpmw.TemplateVersionParam(r) templateVersion := httpmw.TemplateVersionParam(r)
+1 -1
View File
@@ -28,7 +28,7 @@ import (
// @Param status query codersdk.ProvisionerJobStatus false "Filter results by status" enums(pending,running,succeeded,canceling,canceled,failed) // @Param status query codersdk.ProvisionerJobStatus false "Filter results by status" enums(pending,running,succeeded,canceling,canceled,failed)
// @Param tags query object false "Provisioner tags to filter by (JSON of the form {'tag1':'value1','tag2':'value2'})" // @Param tags query object false "Provisioner tags to filter by (JSON of the form {'tag1':'value1','tag2':'value2'})"
// @Success 200 {array} codersdk.ProvisionerDaemon // @Success 200 {array} codersdk.ProvisionerDaemon
// @Router /organizations/{organization}/provisionerdaemons [get] // @Router /api/v2/organizations/{organization}/provisionerdaemons [get]
func (api *API) provisionerDaemons(rw http.ResponseWriter, r *http.Request) { func (api *API) provisionerDaemons(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
+2 -2
View File
@@ -38,7 +38,7 @@ import (
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Param job path string true "Job ID" format(uuid) // @Param job path string true "Job ID" format(uuid)
// @Success 200 {object} codersdk.ProvisionerJob // @Success 200 {object} codersdk.ProvisionerJob
// @Router /organizations/{organization}/provisionerjobs/{job} [get] // @Router /api/v2/organizations/{organization}/provisionerjobs/{job} [get]
func (api *API) provisionerJob(rw http.ResponseWriter, r *http.Request) { func (api *API) provisionerJob(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -78,7 +78,7 @@ func (api *API) provisionerJob(rw http.ResponseWriter, r *http.Request) {
// @Param tags query object false "Provisioner tags to filter by (JSON of the form {'tag1':'value1','tag2':'value2'})" // @Param tags query object false "Provisioner tags to filter by (JSON of the form {'tag1':'value1','tag2':'value2'})"
// @Param initiator query string false "Filter results by initiator" format(uuid) // @Param initiator query string false "Filter results by initiator" format(uuid)
// @Success 200 {array} codersdk.ProvisionerJob // @Success 200 {array} codersdk.ProvisionerJob
// @Router /organizations/{organization}/provisionerjobs [get] // @Router /api/v2/organizations/{organization}/provisionerjobs [get]
func (api *API) provisionerJobs(rw http.ResponseWriter, r *http.Request) { func (api *API) provisionerJobs(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+2 -2
View File
@@ -22,7 +22,7 @@ import (
// @Produce json // @Produce json
// @Tags Members // @Tags Members
// @Success 200 {array} codersdk.AssignableRoles // @Success 200 {array} codersdk.AssignableRoles
// @Router /users/roles [get] // @Router /api/v2/users/roles [get]
func (api *API) AssignableSiteRoles(rw http.ResponseWriter, r *http.Request) { func (api *API) AssignableSiteRoles(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
actorRoles := httpmw.UserAuthorization(r.Context()) actorRoles := httpmw.UserAuthorization(r.Context())
@@ -58,7 +58,7 @@ func (api *API) AssignableSiteRoles(rw http.ResponseWriter, r *http.Request) {
// @Tags Members // @Tags Members
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Success 200 {array} codersdk.AssignableRoles // @Success 200 {array} codersdk.AssignableRoles
// @Router /organizations/{organization}/members/roles [get] // @Router /api/v2/organizations/{organization}/members/roles [get]
func (api *API) assignableOrgRoles(rw http.ResponseWriter, r *http.Request) { func (api *API) assignableOrgRoles(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
organization := httpmw.OrganizationParam(r) organization := httpmw.OrganizationParam(r)
+1 -1
View File
@@ -16,7 +16,7 @@ import (
// @Tags Authorization // @Tags Authorization
// @Produce json // @Produce json
// @Success 200 {object} codersdk.ExternalAPIKeyScopes // @Success 200 {object} codersdk.ExternalAPIKeyScopes
// @Router /auth/scopes [get] // @Router /api/v2/auth/scopes [get]
func (*API) listExternalScopes(rw http.ResponseWriter, r *http.Request) { func (*API) listExternalScopes(rw http.ResponseWriter, r *http.Request) {
scopes := rbac.ExternalScopeNames() scopes := rbac.ExternalScopeNames()
external := make([]codersdk.APIKeyScope, 0, len(scopes)) external := make([]codersdk.APIKeyScope, 0, len(scopes))
+15
View File
@@ -0,0 +1,15 @@
// Swagger UI requestInterceptor.
//
// Returned to Swagger UI as the value of the `requestInterceptor` config
// option. Swagger UI evaluates this string as a JavaScript expression that
// must produce a function which receives a request object and returns the
// (possibly mutated) request.
//
// `withCredentials: false` should disable fetch sending browser credentials,
// but for whatever reason it does not. So this interceptor explicitly omits
// browser credentials from every request to avoid the cookie auth and the
// header auth competing.
(request => {
request.credentials = "omit";
return request;
})
+10 -10
View File
@@ -44,7 +44,7 @@ import (
// @Tags Templates // @Tags Templates
// @Param template path string true "Template ID" format(uuid) // @Param template path string true "Template ID" format(uuid)
// @Success 200 {object} codersdk.Template // @Success 200 {object} codersdk.Template
// @Router /templates/{template} [get] // @Router /api/v2/templates/{template} [get]
func (api *API) template(rw http.ResponseWriter, r *http.Request) { func (api *API) template(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
template := httpmw.TemplateParam(r) template := httpmw.TemplateParam(r)
@@ -59,7 +59,7 @@ func (api *API) template(rw http.ResponseWriter, r *http.Request) {
// @Tags Templates // @Tags Templates
// @Param template path string true "Template ID" format(uuid) // @Param template path string true "Template ID" format(uuid)
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /templates/{template} [delete] // @Router /api/v2/templates/{template} [delete]
func (api *API) deleteTemplate(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteTemplate(rw http.ResponseWriter, r *http.Request) {
var ( var (
apiKey = httpmw.APIKey(r) apiKey = httpmw.APIKey(r)
@@ -177,7 +177,7 @@ func (api *API) notifyTemplateDeleted(ctx context.Context, template database.Tem
// @Param request body codersdk.CreateTemplateRequest true "Request body" // @Param request body codersdk.CreateTemplateRequest true "Request body"
// @Param organization path string true "Organization ID" // @Param organization path string true "Organization ID"
// @Success 200 {object} codersdk.Template // @Success 200 {object} codersdk.Template
// @Router /organizations/{organization}/templates [post] // @Router /api/v2/organizations/{organization}/templates [post]
func (api *API) postTemplateByOrganization(rw http.ResponseWriter, r *http.Request) { func (api *API) postTemplateByOrganization(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -528,7 +528,7 @@ func (api *API) postTemplateByOrganization(rw http.ResponseWriter, r *http.Reque
// @Tags Templates // @Tags Templates
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Success 200 {array} codersdk.Template // @Success 200 {array} codersdk.Template
// @Router /organizations/{organization}/templates [get] // @Router /api/v2/organizations/{organization}/templates [get]
func (api *API) templatesByOrganization() http.HandlerFunc { func (api *API) templatesByOrganization() http.HandlerFunc {
// TODO: Should deprecate this endpoint and make it akin to /workspaces with // TODO: Should deprecate this endpoint and make it akin to /workspaces with
// a filter. There isn't a need to make the organization filter argument // a filter. There isn't a need to make the organization filter argument
@@ -549,7 +549,7 @@ func (api *API) templatesByOrganization() http.HandlerFunc {
// @Produce json // @Produce json
// @Tags Templates // @Tags Templates
// @Success 200 {array} codersdk.Template // @Success 200 {array} codersdk.Template
// @Router /templates [get] // @Router /api/v2/templates [get]
func (api *API) fetchTemplates(mutate func(r *http.Request, arg *database.GetTemplatesWithFilterParams)) http.HandlerFunc { func (api *API) fetchTemplates(mutate func(r *http.Request, arg *database.GetTemplatesWithFilterParams)) http.HandlerFunc {
return func(rw http.ResponseWriter, r *http.Request) { return func(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -613,7 +613,7 @@ func (api *API) fetchTemplates(mutate func(r *http.Request, arg *database.GetTem
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Param templatename path string true "Template name" // @Param templatename path string true "Template name"
// @Success 200 {object} codersdk.Template // @Success 200 {object} codersdk.Template
// @Router /organizations/{organization}/templates/{templatename} [get] // @Router /api/v2/organizations/{organization}/templates/{templatename} [get]
func (api *API) templateByOrganizationAndName(rw http.ResponseWriter, r *http.Request) { func (api *API) templateByOrganizationAndName(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
organization := httpmw.OrganizationParam(r) organization := httpmw.OrganizationParam(r)
@@ -647,7 +647,7 @@ func (api *API) templateByOrganizationAndName(rw http.ResponseWriter, r *http.Re
// @Param template path string true "Template ID" format(uuid) // @Param template path string true "Template ID" format(uuid)
// @Param request body codersdk.UpdateTemplateMeta true "Patch template settings request" // @Param request body codersdk.UpdateTemplateMeta true "Patch template settings request"
// @Success 200 {object} codersdk.Template // @Success 200 {object} codersdk.Template
// @Router /templates/{template} [patch] // @Router /api/v2/templates/{template} [patch]
func (api *API) patchTemplateMeta(rw http.ResponseWriter, r *http.Request) { func (api *API) patchTemplateMeta(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -998,7 +998,7 @@ func (api *API) notifyUsersOfTemplateDeprecation(ctx context.Context, template d
// @Tags Templates // @Tags Templates
// @Param template path string true "Template ID" format(uuid) // @Param template path string true "Template ID" format(uuid)
// @Success 200 {object} codersdk.DAUsResponse // @Success 200 {object} codersdk.DAUsResponse
// @Router /templates/{template}/daus [get] // @Router /api/v2/templates/{template}/daus [get]
func (api *API) templateDAUs(rw http.ResponseWriter, r *http.Request) { func (api *API) templateDAUs(rw http.ResponseWriter, r *http.Request) {
template := httpmw.TemplateParam(r) template := httpmw.TemplateParam(r)
@@ -1012,7 +1012,7 @@ func (api *API) templateDAUs(rw http.ResponseWriter, r *http.Request) {
// @Tags Templates // @Tags Templates
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Success 200 {array} codersdk.TemplateExample // @Success 200 {array} codersdk.TemplateExample
// @Router /organizations/{organization}/templates/examples [get] // @Router /api/v2/organizations/{organization}/templates/examples [get]
// @Deprecated Use /templates/examples instead // @Deprecated Use /templates/examples instead
func (api *API) templateExamplesByOrganization(rw http.ResponseWriter, r *http.Request) { func (api *API) templateExamplesByOrganization(rw http.ResponseWriter, r *http.Request) {
var ( var (
@@ -1043,7 +1043,7 @@ func (api *API) templateExamplesByOrganization(rw http.ResponseWriter, r *http.R
// @Produce json // @Produce json
// @Tags Templates // @Tags Templates
// @Success 200 {array} codersdk.TemplateExample // @Success 200 {array} codersdk.TemplateExample
// @Router /templates/examples [get] // @Router /api/v2/templates/examples [get]
func (api *API) templateExamples(rw http.ResponseWriter, r *http.Request) { func (api *API) templateExamples(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+23 -23
View File
@@ -52,7 +52,7 @@ import (
// @Tags Templates // @Tags Templates
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Success 200 {object} codersdk.TemplateVersion // @Success 200 {object} codersdk.TemplateVersion
// @Router /templateversions/{templateversion} [get] // @Router /api/v2/templateversions/{templateversion} [get]
func (api *API) templateVersion(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersion(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
templateVersion := httpmw.TemplateVersionParam(r) templateVersion := httpmw.TemplateVersionParam(r)
@@ -114,7 +114,7 @@ func (api *API) templateVersion(rw http.ResponseWriter, r *http.Request) {
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Param request body codersdk.PatchTemplateVersionRequest true "Patch template version request" // @Param request body codersdk.PatchTemplateVersionRequest true "Patch template version request"
// @Success 200 {object} codersdk.TemplateVersion // @Success 200 {object} codersdk.TemplateVersion
// @Router /templateversions/{templateversion} [patch] // @Router /api/v2/templateversions/{templateversion} [patch]
func (api *API) patchTemplateVersion(rw http.ResponseWriter, r *http.Request) { func (api *API) patchTemplateVersion(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
templateVersion := httpmw.TemplateVersionParam(r) templateVersion := httpmw.TemplateVersionParam(r)
@@ -227,7 +227,7 @@ func (api *API) patchTemplateVersion(rw http.ResponseWriter, r *http.Request) {
// @Tags Templates // @Tags Templates
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /templateversions/{templateversion}/cancel [patch] // @Router /api/v2/templateversions/{templateversion}/cancel [patch]
func (api *API) patchCancelTemplateVersion(rw http.ResponseWriter, r *http.Request) { func (api *API) patchCancelTemplateVersion(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
templateVersion := httpmw.TemplateVersionParam(r) templateVersion := httpmw.TemplateVersionParam(r)
@@ -283,7 +283,7 @@ func (api *API) patchCancelTemplateVersion(rw http.ResponseWriter, r *http.Reque
// @Tags Templates // @Tags Templates
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Success 200 {array} codersdk.TemplateVersionParameter // @Success 200 {array} codersdk.TemplateVersionParameter
// @Router /templateversions/{templateversion}/rich-parameters [get] // @Router /api/v2/templateversions/{templateversion}/rich-parameters [get]
func (api *API) templateVersionRichParameters(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionRichParameters(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
templateVersion := httpmw.TemplateVersionParam(r) templateVersion := httpmw.TemplateVersionParam(r)
@@ -329,7 +329,7 @@ func (api *API) templateVersionRichParameters(rw http.ResponseWriter, r *http.Re
// @Tags Templates // @Tags Templates
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Success 200 {array} codersdk.TemplateVersionExternalAuth // @Success 200 {array} codersdk.TemplateVersionExternalAuth
// @Router /templateversions/{templateversion}/external-auth [get] // @Router /api/v2/templateversions/{templateversion}/external-auth [get]
func (api *API) templateVersionExternalAuth(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionExternalAuth(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
var ( var (
@@ -423,7 +423,7 @@ func (api *API) templateVersionExternalAuth(rw http.ResponseWriter, r *http.Requ
// @Tags Templates // @Tags Templates
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Success 200 {array} codersdk.TemplateVersionVariable // @Success 200 {array} codersdk.TemplateVersionVariable
// @Router /templateversions/{templateversion}/variables [get] // @Router /api/v2/templateversions/{templateversion}/variables [get]
func (api *API) templateVersionVariables(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionVariables(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
templateVersion := httpmw.TemplateVersionParam(r) templateVersion := httpmw.TemplateVersionParam(r)
@@ -463,7 +463,7 @@ func (api *API) templateVersionVariables(rw http.ResponseWriter, r *http.Request
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Param request body codersdk.CreateTemplateVersionDryRunRequest true "Dry-run request" // @Param request body codersdk.CreateTemplateVersionDryRunRequest true "Dry-run request"
// @Success 201 {object} codersdk.ProvisionerJob // @Success 201 {object} codersdk.ProvisionerJob
// @Router /templateversions/{templateversion}/dry-run [post] // @Router /api/v2/templateversions/{templateversion}/dry-run [post]
func (api *API) postTemplateVersionDryRun(rw http.ResponseWriter, r *http.Request) { func (api *API) postTemplateVersionDryRun(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
var ( var (
@@ -580,7 +580,7 @@ func (api *API) postTemplateVersionDryRun(rw http.ResponseWriter, r *http.Reques
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Param jobID path string true "Job ID" format(uuid) // @Param jobID path string true "Job ID" format(uuid)
// @Success 200 {object} codersdk.ProvisionerJob // @Success 200 {object} codersdk.ProvisionerJob
// @Router /templateversions/{templateversion}/dry-run/{jobID} [get] // @Router /api/v2/templateversions/{templateversion}/dry-run/{jobID} [get]
func (api *API) templateVersionDryRun(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionDryRun(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
job, ok := api.fetchTemplateVersionDryRunJob(rw, r) job, ok := api.fetchTemplateVersionDryRunJob(rw, r)
@@ -599,7 +599,7 @@ func (api *API) templateVersionDryRun(rw http.ResponseWriter, r *http.Request) {
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Param jobID path string true "Job ID" format(uuid) // @Param jobID path string true "Job ID" format(uuid)
// @Success 200 {object} codersdk.MatchedProvisioners // @Success 200 {object} codersdk.MatchedProvisioners
// @Router /templateversions/{templateversion}/dry-run/{jobID}/matched-provisioners [get] // @Router /api/v2/templateversions/{templateversion}/dry-run/{jobID}/matched-provisioners [get]
func (api *API) templateVersionDryRunMatchedProvisioners(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionDryRunMatchedProvisioners(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
job, ok := api.fetchTemplateVersionDryRunJob(rw, r) job, ok := api.fetchTemplateVersionDryRunJob(rw, r)
@@ -636,7 +636,7 @@ func (api *API) templateVersionDryRunMatchedProvisioners(rw http.ResponseWriter,
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Param jobID path string true "Job ID" format(uuid) // @Param jobID path string true "Job ID" format(uuid)
// @Success 200 {array} codersdk.WorkspaceResource // @Success 200 {array} codersdk.WorkspaceResource
// @Router /templateversions/{templateversion}/dry-run/{jobID}/resources [get] // @Router /api/v2/templateversions/{templateversion}/dry-run/{jobID}/resources [get]
func (api *API) templateVersionDryRunResources(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionDryRunResources(rw http.ResponseWriter, r *http.Request) {
job, ok := api.fetchTemplateVersionDryRunJob(rw, r) job, ok := api.fetchTemplateVersionDryRunJob(rw, r)
if !ok { if !ok {
@@ -658,7 +658,7 @@ func (api *API) templateVersionDryRunResources(rw http.ResponseWriter, r *http.R
// @Param follow query bool false "Follow log stream" // @Param follow query bool false "Follow log stream"
// @Param format query string false "Log output format. Accepted: 'json' (default), 'text' (plain text with RFC3339 timestamps and ANSI colors). Not supported with follow=true." Enums(json,text) // @Param format query string false "Log output format. Accepted: 'json' (default), 'text' (plain text with RFC3339 timestamps and ANSI colors). Not supported with follow=true." Enums(json,text)
// @Success 200 {array} codersdk.ProvisionerJobLog // @Success 200 {array} codersdk.ProvisionerJobLog
// @Router /templateversions/{templateversion}/dry-run/{jobID}/logs [get] // @Router /api/v2/templateversions/{templateversion}/dry-run/{jobID}/logs [get]
func (api *API) templateVersionDryRunLogs(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionDryRunLogs(rw http.ResponseWriter, r *http.Request) {
job, ok := api.fetchTemplateVersionDryRunJob(rw, r) job, ok := api.fetchTemplateVersionDryRunJob(rw, r)
if !ok { if !ok {
@@ -676,7 +676,7 @@ func (api *API) templateVersionDryRunLogs(rw http.ResponseWriter, r *http.Reques
// @Param jobID path string true "Job ID" format(uuid) // @Param jobID path string true "Job ID" format(uuid)
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /templateversions/{templateversion}/dry-run/{jobID}/cancel [patch] // @Router /api/v2/templateversions/{templateversion}/dry-run/{jobID}/cancel [patch]
func (api *API) patchTemplateVersionDryRunCancel(rw http.ResponseWriter, r *http.Request) { func (api *API) patchTemplateVersionDryRunCancel(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
templateVersion := httpmw.TemplateVersionParam(r) templateVersion := httpmw.TemplateVersionParam(r)
@@ -804,7 +804,7 @@ func (api *API) fetchTemplateVersionDryRunJob(rw http.ResponseWriter, r *http.Re
// @Param limit query int false "Page limit" // @Param limit query int false "Page limit"
// @Param offset query int false "Page offset" // @Param offset query int false "Page offset"
// @Success 200 {array} codersdk.TemplateVersion // @Success 200 {array} codersdk.TemplateVersion
// @Router /templates/{template}/versions [get] // @Router /api/v2/templates/{template}/versions [get]
func (api *API) templateVersionsByTemplate(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionsByTemplate(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
template := httpmw.TemplateParam(r) template := httpmw.TemplateParam(r)
@@ -925,7 +925,7 @@ func (api *API) templateVersionsByTemplate(rw http.ResponseWriter, r *http.Reque
// @Param template path string true "Template ID" format(uuid) // @Param template path string true "Template ID" format(uuid)
// @Param templateversionname path string true "Template version name" // @Param templateversionname path string true "Template version name"
// @Success 200 {array} codersdk.TemplateVersion // @Success 200 {array} codersdk.TemplateVersion
// @Router /templates/{template}/versions/{templateversionname} [get] // @Router /api/v2/templates/{template}/versions/{templateversionname} [get]
func (api *API) templateVersionByName(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionByName(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
template := httpmw.TemplateParam(r) template := httpmw.TemplateParam(r)
@@ -990,7 +990,7 @@ func (api *API) templateVersionByName(rw http.ResponseWriter, r *http.Request) {
// @Param templatename path string true "Template name" // @Param templatename path string true "Template name"
// @Param templateversionname path string true "Template version name" // @Param templateversionname path string true "Template version name"
// @Success 200 {object} codersdk.TemplateVersion // @Success 200 {object} codersdk.TemplateVersion
// @Router /organizations/{organization}/templates/{templatename}/versions/{templateversionname} [get] // @Router /api/v2/organizations/{organization}/templates/{templatename}/versions/{templateversionname} [get]
func (api *API) templateVersionByOrganizationTemplateAndName(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionByOrganizationTemplateAndName(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
organization := httpmw.OrganizationParam(r) organization := httpmw.OrganizationParam(r)
@@ -1075,7 +1075,7 @@ func (api *API) templateVersionByOrganizationTemplateAndName(rw http.ResponseWri
// @Param templateversionname path string true "Template version name" // @Param templateversionname path string true "Template version name"
// @Success 200 {object} codersdk.TemplateVersion // @Success 200 {object} codersdk.TemplateVersion
// @Success 204 // @Success 204
// @Router /organizations/{organization}/templates/{templatename}/versions/{templateversionname}/previous [get] // @Router /api/v2/organizations/{organization}/templates/{templatename}/versions/{templateversionname}/previous [get]
func (api *API) previousTemplateVersionByOrganizationTemplateAndName(rw http.ResponseWriter, r *http.Request) { func (api *API) previousTemplateVersionByOrganizationTemplateAndName(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
organization := httpmw.OrganizationParam(r) organization := httpmw.OrganizationParam(r)
@@ -1178,7 +1178,7 @@ func (api *API) previousTemplateVersionByOrganizationTemplateAndName(rw http.Res
// @Param template path string true "Template ID" format(uuid) // @Param template path string true "Template ID" format(uuid)
// @Param request body codersdk.ArchiveTemplateVersionsRequest true "Archive request" // @Param request body codersdk.ArchiveTemplateVersionsRequest true "Archive request"
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /templates/{template}/versions/archive [post] // @Router /api/v2/templates/{template}/versions/archive [post]
func (api *API) postArchiveTemplateVersions(rw http.ResponseWriter, r *http.Request) { func (api *API) postArchiveTemplateVersions(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1243,7 +1243,7 @@ func (api *API) postArchiveTemplateVersions(rw http.ResponseWriter, r *http.Requ
// @Tags Templates // @Tags Templates
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /templateversions/{templateversion}/archive [post] // @Router /api/v2/templateversions/{templateversion}/archive [post]
func (api *API) postArchiveTemplateVersion() func(rw http.ResponseWriter, r *http.Request) { func (api *API) postArchiveTemplateVersion() func(rw http.ResponseWriter, r *http.Request) {
return api.setArchiveTemplateVersion(true) return api.setArchiveTemplateVersion(true)
} }
@@ -1255,7 +1255,7 @@ func (api *API) postArchiveTemplateVersion() func(rw http.ResponseWriter, r *htt
// @Tags Templates // @Tags Templates
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /templateversions/{templateversion}/unarchive [post] // @Router /api/v2/templateversions/{templateversion}/unarchive [post]
func (api *API) postUnarchiveTemplateVersion() func(rw http.ResponseWriter, r *http.Request) { func (api *API) postUnarchiveTemplateVersion() func(rw http.ResponseWriter, r *http.Request) {
return api.setArchiveTemplateVersion(false) return api.setArchiveTemplateVersion(false)
} }
@@ -1345,7 +1345,7 @@ func (api *API) setArchiveTemplateVersion(archive bool) func(rw http.ResponseWri
// @Param request body codersdk.UpdateActiveTemplateVersion true "Modified template version" // @Param request body codersdk.UpdateActiveTemplateVersion true "Modified template version"
// @Param template path string true "Template ID" format(uuid) // @Param template path string true "Template ID" format(uuid)
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /templates/{template}/versions [patch] // @Router /api/v2/templates/{template}/versions [patch]
func (api *API) patchActiveTemplateVersion(rw http.ResponseWriter, r *http.Request) { func (api *API) patchActiveTemplateVersion(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1448,7 +1448,7 @@ func (api *API) patchActiveTemplateVersion(rw http.ResponseWriter, r *http.Reque
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Param request body codersdk.CreateTemplateVersionRequest true "Create template version request" // @Param request body codersdk.CreateTemplateVersionRequest true "Create template version request"
// @Success 201 {object} codersdk.TemplateVersion // @Success 201 {object} codersdk.TemplateVersion
// @Router /organizations/{organization}/templateversions [post] // @Router /api/v2/organizations/{organization}/templateversions [post]
func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *http.Request) { func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1905,7 +1905,7 @@ func (api *API) classicTemplateVersionTags(ctx context.Context, rw http.Response
// @Tags Templates // @Tags Templates
// @Param templateversion path string true "Template version ID" format(uuid) // @Param templateversion path string true "Template version ID" format(uuid)
// @Success 200 {array} codersdk.WorkspaceResource // @Success 200 {array} codersdk.WorkspaceResource
// @Router /templateversions/{templateversion}/resources [get] // @Router /api/v2/templateversions/{templateversion}/resources [get]
func (api *API) templateVersionResources(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionResources(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1939,7 +1939,7 @@ func (api *API) templateVersionResources(rw http.ResponseWriter, r *http.Request
// @Param follow query bool false "Follow log stream" // @Param follow query bool false "Follow log stream"
// @Param format query string false "Log output format. Accepted: 'json' (default), 'text' (plain text with RFC3339 timestamps and ANSI colors). Not supported with follow=true." Enums(json,text) // @Param format query string false "Log output format. Accepted: 'json' (default), 'text' (plain text with RFC3339 timestamps and ANSI colors). Not supported with follow=true." Enums(json,text)
// @Success 200 {array} codersdk.ProvisionerJobLog // @Success 200 {array} codersdk.ProvisionerJobLog
// @Router /templateversions/{templateversion}/logs [get] // @Router /api/v2/templateversions/{templateversion}/logs [get]
func (api *API) templateVersionLogs(rw http.ResponseWriter, r *http.Request) { func (api *API) templateVersionLogs(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
+1 -1
View File
@@ -18,7 +18,7 @@ import (
// @Produce json // @Produce json
// @Tags General // @Tags General
// @Success 200 {object} codersdk.UpdateCheckResponse // @Success 200 {object} codersdk.UpdateCheckResponse
// @Router /updatecheck [get] // @Router /api/v2/updatecheck [get]
func (api *API) updateCheck(rw http.ResponseWriter, r *http.Request) { func (api *API) updateCheck(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+10 -10
View File
@@ -86,7 +86,7 @@ func (o *OAuthConvertStateClaims) Validate(e jwt.Expected) error {
// @Param request body codersdk.ConvertLoginRequest true "Convert request" // @Param request body codersdk.ConvertLoginRequest true "Convert request"
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 201 {object} codersdk.OAuthConversionResponse // @Success 201 {object} codersdk.OAuthConversionResponse
// @Router /users/{user}/convert-login [post] // @Router /api/v2/users/{user}/convert-login [post]
func (api *API) postConvertLoginType(rw http.ResponseWriter, r *http.Request) { func (api *API) postConvertLoginType(rw http.ResponseWriter, r *http.Request) {
var ( var (
user = httpmw.UserParam(r) user = httpmw.UserParam(r)
@@ -225,7 +225,7 @@ func (api *API) postConvertLoginType(rw http.ResponseWriter, r *http.Request) {
// @Tags Authorization // @Tags Authorization
// @Param request body codersdk.RequestOneTimePasscodeRequest true "One-time passcode request" // @Param request body codersdk.RequestOneTimePasscodeRequest true "One-time passcode request"
// @Success 204 // @Success 204
// @Router /users/otp/request [post] // @Router /api/v2/users/otp/request [post]
func (api *API) postRequestOneTimePasscode(rw http.ResponseWriter, r *http.Request) { func (api *API) postRequestOneTimePasscode(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -331,7 +331,7 @@ func (api *API) notifyUserRequestedOneTimePasscode(ctx context.Context, user dat
// @Tags Authorization // @Tags Authorization
// @Param request body codersdk.ChangePasswordWithOneTimePasscodeRequest true "Change password request" // @Param request body codersdk.ChangePasswordWithOneTimePasscodeRequest true "Change password request"
// @Success 204 // @Success 204
// @Router /users/otp/change-password [post] // @Router /api/v2/users/otp/change-password [post]
func (api *API) postChangePasswordWithOneTimePasscode(rw http.ResponseWriter, r *http.Request) { func (api *API) postChangePasswordWithOneTimePasscode(rw http.ResponseWriter, r *http.Request) {
var ( var (
err error err error
@@ -465,7 +465,7 @@ func (api *API) postChangePasswordWithOneTimePasscode(rw http.ResponseWriter, r
// @Tags Authorization // @Tags Authorization
// @Param request body codersdk.ValidateUserPasswordRequest true "Validate user password request" // @Param request body codersdk.ValidateUserPasswordRequest true "Validate user password request"
// @Success 200 {object} codersdk.ValidateUserPasswordResponse // @Success 200 {object} codersdk.ValidateUserPasswordResponse
// @Router /users/validate-password [post] // @Router /api/v2/users/validate-password [post]
func (*API) validateUserPassword(rw http.ResponseWriter, r *http.Request) { func (*API) validateUserPassword(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -499,7 +499,7 @@ func (*API) validateUserPassword(rw http.ResponseWriter, r *http.Request) {
// @Tags Authorization // @Tags Authorization
// @Param request body codersdk.LoginWithPasswordRequest true "Login request" // @Param request body codersdk.LoginWithPasswordRequest true "Login request"
// @Success 201 {object} codersdk.LoginWithPasswordResponse // @Success 201 {object} codersdk.LoginWithPasswordResponse
// @Router /users/login [post] // @Router /api/v2/users/login [post]
func (api *API) postLogin(rw http.ResponseWriter, r *http.Request) { func (api *API) postLogin(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -684,7 +684,7 @@ func ActivateDormantUser(logger slog.Logger, auditor *atomic.Pointer[audit.Audit
// @Produce json // @Produce json
// @Tags Users // @Tags Users
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /users/logout [post] // @Router /api/v2/users/logout [post]
func (api *API) postLogout(rw http.ResponseWriter, r *http.Request) { func (api *API) postLogout(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -796,7 +796,7 @@ func (c *GithubOAuth2Config) AuthCodeURL(state string, opts ...oauth2.AuthCodeOp
// @Produce json // @Produce json
// @Tags Users // @Tags Users
// @Success 200 {object} codersdk.AuthMethods // @Success 200 {object} codersdk.AuthMethods
// @Router /users/authmethods [get] // @Router /api/v2/users/authmethods [get]
func (api *API) userAuthMethods(rw http.ResponseWriter, r *http.Request) { func (api *API) userAuthMethods(rw http.ResponseWriter, r *http.Request) {
var signInText string var signInText string
var iconURL string var iconURL string
@@ -831,7 +831,7 @@ func (api *API) userAuthMethods(rw http.ResponseWriter, r *http.Request) {
// @Produce json // @Produce json
// @Tags Users // @Tags Users
// @Success 200 {object} codersdk.ExternalAuthDevice // @Success 200 {object} codersdk.ExternalAuthDevice
// @Router /users/oauth2/github/device [get] // @Router /api/v2/users/oauth2/github/device [get]
func (api *API) userOAuth2GithubDevice(rw http.ResponseWriter, r *http.Request) { func (api *API) userOAuth2GithubDevice(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -877,7 +877,7 @@ func (api *API) userOAuth2GithubDevice(rw http.ResponseWriter, r *http.Request)
// @Security CoderSessionToken // @Security CoderSessionToken
// @Tags Users // @Tags Users
// @Success 307 // @Success 307
// @Router /users/oauth2/github/callback [get] // @Router /api/v2/users/oauth2/github/callback [get]
func (api *API) userOAuth2Github(rw http.ResponseWriter, r *http.Request) { func (api *API) userOAuth2Github(rw http.ResponseWriter, r *http.Request) {
var ( var (
// userOAuth2Github is a system function. // userOAuth2Github is a system function.
@@ -1192,7 +1192,7 @@ func (o *OIDCConfig) PKCESupported() []promoauth.Oauth2PKCEChallengeMethod {
// @Security CoderSessionToken // @Security CoderSessionToken
// @Tags Users // @Tags Users
// @Success 307 // @Success 307
// @Router /users/oidc/callback [get] // @Router /api/v2/users/oidc/callback [get]
func (api *API) userOIDC(rw http.ResponseWriter, r *http.Request) { func (api *API) userOIDC(rw http.ResponseWriter, r *http.Request) {
var ( var (
// userOIDC is a system function. // userOIDC is a system function.
+22 -22
View File
@@ -42,7 +42,7 @@ import (
// @Tags Agents // @Tags Agents
// @Success 200 "Success" // @Success 200 "Success"
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Router /debug/{user}/debug-link [get] // @Router /api/v2/debug/{user}/debug-link [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) userDebugOIDC(rw http.ResponseWriter, r *http.Request) { func (api *API) userDebugOIDC(rw http.ResponseWriter, r *http.Request) {
var ( var (
@@ -80,7 +80,7 @@ func (api *API) userDebugOIDC(rw http.ResponseWriter, r *http.Request) {
// @Produce json // @Produce json
// @Tags Users // @Tags Users
// @Success 200 {object} codersdk.OIDCClaimsResponse // @Success 200 {object} codersdk.OIDCClaimsResponse
// @Router /users/oidc-claims [get] // @Router /api/v2/users/oidc-claims [get]
func (api *API) userOIDCClaims(rw http.ResponseWriter, r *http.Request) { func (api *API) userOIDCClaims(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -138,7 +138,7 @@ func (api *API) userOIDCClaims(rw http.ResponseWriter, r *http.Request) {
// @Produce json // @Produce json
// @Tags Users // @Tags Users
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /users/first [get] // @Router /api/v2/users/first [get]
func (api *API) firstUser(rw http.ResponseWriter, r *http.Request) { func (api *API) firstUser(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
// nolint:gocritic // Getting user count is a system function. // nolint:gocritic // Getting user count is a system function.
@@ -173,7 +173,7 @@ func (api *API) firstUser(rw http.ResponseWriter, r *http.Request) {
// @Tags Users // @Tags Users
// @Param request body codersdk.CreateFirstUserRequest true "First user request" // @Param request body codersdk.CreateFirstUserRequest true "First user request"
// @Success 201 {object} codersdk.CreateFirstUserResponse // @Success 201 {object} codersdk.CreateFirstUserResponse
// @Router /users/first [post] // @Router /api/v2/users/first [post]
func (api *API) postFirstUser(rw http.ResponseWriter, r *http.Request) { func (api *API) postFirstUser(rw http.ResponseWriter, r *http.Request) {
// The first user can also be created via oidc, so if making changes to the flow, // The first user can also be created via oidc, so if making changes to the flow,
// ensure that the oidc flow is also updated. // ensure that the oidc flow is also updated.
@@ -312,7 +312,7 @@ func (api *API) postFirstUser(rw http.ResponseWriter, r *http.Request) {
// @Param limit query int false "Page limit" // @Param limit query int false "Page limit"
// @Param offset query int false "Page offset" // @Param offset query int false "Page offset"
// @Success 200 {object} codersdk.GetUsersResponse // @Success 200 {object} codersdk.GetUsersResponse
// @Router /users [get] // @Router /api/v2/users [get]
func (api *API) users(rw http.ResponseWriter, r *http.Request) { func (api *API) users(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
users, userCount, ok := api.GetUsers(rw, r) users, userCount, ok := api.GetUsers(rw, r)
@@ -432,7 +432,7 @@ func (api *API) GetUsers(rw http.ResponseWriter, r *http.Request) ([]database.Us
// @Tags Users // @Tags Users
// @Param request body codersdk.CreateUserRequestWithOrgs true "Create user request" // @Param request body codersdk.CreateUserRequestWithOrgs true "Create user request"
// @Success 201 {object} codersdk.User // @Success 201 {object} codersdk.User
// @Router /users [post] // @Router /api/v2/users [post]
func (api *API) postUser(rw http.ResponseWriter, r *http.Request) { func (api *API) postUser(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
auditor := *api.Auditor.Load() auditor := *api.Auditor.Load()
@@ -650,7 +650,7 @@ func (api *API) postUser(rw http.ResponseWriter, r *http.Request) {
// @Tags Users // @Tags Users
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 // @Success 200
// @Router /users/{user} [delete] // @Router /api/v2/users/{user} [delete]
func (api *API) deleteUser(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteUser(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
auditor := *api.Auditor.Load() auditor := *api.Auditor.Load()
@@ -756,7 +756,7 @@ func (api *API) deleteUser(rw http.ResponseWriter, r *http.Request) {
// @Tags Users // @Tags Users
// @Param user path string true "User ID, username, or me" // @Param user path string true "User ID, username, or me"
// @Success 200 {object} codersdk.User // @Success 200 {object} codersdk.User
// @Router /users/{user} [get] // @Router /api/v2/users/{user} [get]
func (api *API) userByName(rw http.ResponseWriter, r *http.Request) { func (api *API) userByName(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
user := httpmw.UserParam(r) user := httpmw.UserParam(r)
@@ -784,7 +784,7 @@ func (api *API) userByName(rw http.ResponseWriter, r *http.Request) {
// @Param user path string true "User ID, username, or me" // @Param user path string true "User ID, username, or me"
// @Param template_id query string true "Template ID" // @Param template_id query string true "Template ID"
// @Success 200 {array} codersdk.UserParameter // @Success 200 {array} codersdk.UserParameter
// @Router /users/{user}/autofill-parameters [get] // @Router /api/v2/users/{user}/autofill-parameters [get]
func (api *API) userAutofillParameters(rw http.ResponseWriter, r *http.Request) { func (api *API) userAutofillParameters(rw http.ResponseWriter, r *http.Request) {
user := httpmw.UserParam(r) user := httpmw.UserParam(r)
@@ -835,7 +835,7 @@ func (api *API) userAutofillParameters(rw http.ResponseWriter, r *http.Request)
// @Tags Users // @Tags Users
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {object} codersdk.UserLoginType // @Success 200 {object} codersdk.UserLoginType
// @Router /users/{user}/login-type [get] // @Router /api/v2/users/{user}/login-type [get]
func (*API) userLoginType(rw http.ResponseWriter, r *http.Request) { func (*API) userLoginType(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -865,7 +865,7 @@ func (*API) userLoginType(rw http.ResponseWriter, r *http.Request) {
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Param request body codersdk.UpdateUserProfileRequest true "Updated profile" // @Param request body codersdk.UpdateUserProfileRequest true "Updated profile"
// @Success 200 {object} codersdk.User // @Success 200 {object} codersdk.User
// @Router /users/{user}/profile [put] // @Router /api/v2/users/{user}/profile [put]
func (api *API) putUserProfile(rw http.ResponseWriter, r *http.Request) { func (api *API) putUserProfile(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -956,7 +956,7 @@ func (api *API) putUserProfile(rw http.ResponseWriter, r *http.Request) {
// @Tags Users // @Tags Users
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {object} codersdk.User // @Success 200 {object} codersdk.User
// @Router /users/{user}/status/suspend [put] // @Router /api/v2/users/{user}/status/suspend [put]
func (api *API) putSuspendUserAccount() func(rw http.ResponseWriter, r *http.Request) { func (api *API) putSuspendUserAccount() func(rw http.ResponseWriter, r *http.Request) {
return api.putUserStatus(database.UserStatusSuspended) return api.putUserStatus(database.UserStatusSuspended)
} }
@@ -968,7 +968,7 @@ func (api *API) putSuspendUserAccount() func(rw http.ResponseWriter, r *http.Req
// @Tags Users // @Tags Users
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {object} codersdk.User // @Success 200 {object} codersdk.User
// @Router /users/{user}/status/activate [put] // @Router /api/v2/users/{user}/status/activate [put]
func (api *API) putActivateUserAccount() func(rw http.ResponseWriter, r *http.Request) { func (api *API) putActivateUserAccount() func(rw http.ResponseWriter, r *http.Request) {
return api.putUserStatus(database.UserStatusActive) return api.putUserStatus(database.UserStatusActive)
} }
@@ -1117,7 +1117,7 @@ func (api *API) notifyUserStatusChanged(ctx context.Context, actingUserName stri
// @Tags Users // @Tags Users
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {object} codersdk.UserAppearanceSettings // @Success 200 {object} codersdk.UserAppearanceSettings
// @Router /users/{user}/appearance [get] // @Router /api/v2/users/{user}/appearance [get]
func (api *API) userAppearanceSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) userAppearanceSettings(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1165,7 +1165,7 @@ func (api *API) userAppearanceSettings(rw http.ResponseWriter, r *http.Request)
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Param request body codersdk.UpdateUserAppearanceSettingsRequest true "New appearance settings" // @Param request body codersdk.UpdateUserAppearanceSettingsRequest true "New appearance settings"
// @Success 200 {object} codersdk.UserAppearanceSettings // @Success 200 {object} codersdk.UserAppearanceSettings
// @Router /users/{user}/appearance [put] // @Router /api/v2/users/{user}/appearance [put]
func (api *API) putUserAppearanceSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) putUserAppearanceSettings(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1221,7 +1221,7 @@ func (api *API) putUserAppearanceSettings(rw http.ResponseWriter, r *http.Reques
// @Tags Users // @Tags Users
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {object} codersdk.UserPreferenceSettings // @Success 200 {object} codersdk.UserPreferenceSettings
// @Router /users/{user}/preferences [get] // @Router /api/v2/users/{user}/preferences [get]
func (api *API) userPreferenceSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) userPreferenceSettings(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1263,7 +1263,7 @@ func (api *API) userPreferenceSettings(rw http.ResponseWriter, r *http.Request)
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Param request body codersdk.UpdateUserPreferenceSettingsRequest true "New preference settings" // @Param request body codersdk.UpdateUserPreferenceSettingsRequest true "New preference settings"
// @Success 200 {object} codersdk.UserPreferenceSettings // @Success 200 {object} codersdk.UserPreferenceSettings
// @Router /users/{user}/preferences [put] // @Router /api/v2/users/{user}/preferences [put]
func (api *API) putUserPreferenceSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) putUserPreferenceSettings(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1363,7 +1363,7 @@ func isValidFontName(font codersdk.TerminalFontName) bool {
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Param request body codersdk.UpdateUserPasswordRequest true "Update password request" // @Param request body codersdk.UpdateUserPasswordRequest true "Update password request"
// @Success 204 // @Success 204
// @Router /users/{user}/password [put] // @Router /api/v2/users/{user}/password [put]
func (api *API) putUserPassword(rw http.ResponseWriter, r *http.Request) { func (api *API) putUserPassword(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1498,7 +1498,7 @@ func (api *API) putUserPassword(rw http.ResponseWriter, r *http.Request) {
// @Tags Users // @Tags Users
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {object} codersdk.User // @Success 200 {object} codersdk.User
// @Router /users/{user}/roles [get] // @Router /api/v2/users/{user}/roles [get]
func (api *API) userRoles(rw http.ResponseWriter, r *http.Request) { func (api *API) userRoles(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
user := httpmw.UserParam(r) user := httpmw.UserParam(r)
@@ -1544,7 +1544,7 @@ func (api *API) userRoles(rw http.ResponseWriter, r *http.Request) {
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Param request body codersdk.UpdateRoles true "Update roles request" // @Param request body codersdk.UpdateRoles true "Update roles request"
// @Success 200 {object} codersdk.User // @Success 200 {object} codersdk.User
// @Router /users/{user}/roles [put] // @Router /api/v2/users/{user}/roles [put]
func (api *API) putUserRoles(rw http.ResponseWriter, r *http.Request) { func (api *API) putUserRoles(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1621,7 +1621,7 @@ func (api *API) putUserRoles(rw http.ResponseWriter, r *http.Request) {
// @Tags Users // @Tags Users
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {array} codersdk.Organization // @Success 200 {array} codersdk.Organization
// @Router /users/{user}/organizations [get] // @Router /api/v2/users/{user}/organizations [get]
func (api *API) organizationsByUser(rw http.ResponseWriter, r *http.Request) { func (api *API) organizationsByUser(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
user := httpmw.UserParam(r) user := httpmw.UserParam(r)
@@ -1663,7 +1663,7 @@ func (api *API) organizationsByUser(rw http.ResponseWriter, r *http.Request) {
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Param organizationname path string true "Organization name" // @Param organizationname path string true "Organization name"
// @Success 200 {object} codersdk.Organization // @Success 200 {object} codersdk.Organization
// @Router /users/{user}/organizations/{organizationname} [get] // @Router /api/v2/users/{user}/organizations/{organizationname} [get]
func (api *API) organizationByUserAndName(rw http.ResponseWriter, r *http.Request) { func (api *API) organizationByUserAndName(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
organizationName := chi.URLParam(r, "organizationname") organizationName := chi.URLParam(r, "organizationname")
+5 -5
View File
@@ -26,7 +26,7 @@ import (
// @Param user path string true "User ID, username, or me" // @Param user path string true "User ID, username, or me"
// @Param request body codersdk.CreateUserSecretRequest true "Create secret request" // @Param request body codersdk.CreateUserSecretRequest true "Create secret request"
// @Success 201 {object} codersdk.UserSecret // @Success 201 {object} codersdk.UserSecret
// @Router /users/{user}/secrets [post] // @Router /api/v2/users/{user}/secrets [post]
func (api *API) postUserSecret(rw http.ResponseWriter, r *http.Request) { func (api *API) postUserSecret(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -116,7 +116,7 @@ func (api *API) postUserSecret(rw http.ResponseWriter, r *http.Request) {
// @Tags Secrets // @Tags Secrets
// @Param user path string true "User ID, username, or me" // @Param user path string true "User ID, username, or me"
// @Success 200 {array} codersdk.UserSecret // @Success 200 {array} codersdk.UserSecret
// @Router /users/{user}/secrets [get] // @Router /api/v2/users/{user}/secrets [get]
func (api *API) getUserSecrets(rw http.ResponseWriter, r *http.Request) { //nolint:revive // Method name matches route. func (api *API) getUserSecrets(rw http.ResponseWriter, r *http.Request) { //nolint:revive // Method name matches route.
ctx := r.Context() ctx := r.Context()
user := httpmw.UserParam(r) user := httpmw.UserParam(r)
@@ -141,7 +141,7 @@ func (api *API) getUserSecrets(rw http.ResponseWriter, r *http.Request) { //noli
// @Param user path string true "User ID, username, or me" // @Param user path string true "User ID, username, or me"
// @Param name path string true "Secret name" // @Param name path string true "Secret name"
// @Success 200 {object} codersdk.UserSecret // @Success 200 {object} codersdk.UserSecret
// @Router /users/{user}/secrets/{name} [get] // @Router /api/v2/users/{user}/secrets/{name} [get]
func (api *API) getUserSecret(rw http.ResponseWriter, r *http.Request) { //nolint:revive // Method name matches route. func (api *API) getUserSecret(rw http.ResponseWriter, r *http.Request) { //nolint:revive // Method name matches route.
ctx := r.Context() ctx := r.Context()
user := httpmw.UserParam(r) user := httpmw.UserParam(r)
@@ -176,7 +176,7 @@ func (api *API) getUserSecret(rw http.ResponseWriter, r *http.Request) { //nolin
// @Param name path string true "Secret name" // @Param name path string true "Secret name"
// @Param request body codersdk.UpdateUserSecretRequest true "Update secret request" // @Param request body codersdk.UpdateUserSecretRequest true "Update secret request"
// @Success 200 {object} codersdk.UserSecret // @Success 200 {object} codersdk.UserSecret
// @Router /users/{user}/secrets/{name} [patch] // @Router /api/v2/users/{user}/secrets/{name} [patch]
func (api *API) patchUserSecret(rw http.ResponseWriter, r *http.Request) { func (api *API) patchUserSecret(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -313,7 +313,7 @@ func (api *API) patchUserSecret(rw http.ResponseWriter, r *http.Request) {
// @Param user path string true "User ID, username, or me" // @Param user path string true "User ID, username, or me"
// @Param name path string true "Secret name" // @Param name path string true "Secret name"
// @Success 204 // @Success 204
// @Router /users/{user}/secrets/{name} [delete] // @Router /api/v2/users/{user}/secrets/{name} [delete]
func (api *API) deleteUserSecret(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteUserSecret(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
+3 -3
View File
@@ -28,7 +28,7 @@ import (
// @Tags Notifications // @Tags Notifications
// @Param request body codersdk.WebpushSubscription true "Webpush subscription" // @Param request body codersdk.WebpushSubscription true "Webpush subscription"
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Router /users/{user}/webpush/subscription [post] // @Router /api/v2/users/{user}/webpush/subscription [post]
// @Success 204 // @Success 204
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) postUserWebpushSubscription(rw http.ResponseWriter, r *http.Request) { func (api *API) postUserWebpushSubscription(rw http.ResponseWriter, r *http.Request) {
@@ -117,7 +117,7 @@ func validateWebpushEndpoint(rawEndpoint string) error {
// @Tags Notifications // @Tags Notifications
// @Param request body codersdk.DeleteWebpushSubscription true "Webpush subscription" // @Param request body codersdk.DeleteWebpushSubscription true "Webpush subscription"
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Router /users/{user}/webpush/subscription [delete] // @Router /api/v2/users/{user}/webpush/subscription [delete]
// @Success 204 // @Success 204
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) deleteUserWebpushSubscription(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteUserWebpushSubscription(rw http.ResponseWriter, r *http.Request) {
@@ -176,7 +176,7 @@ func (api *API) deleteUserWebpushSubscription(rw http.ResponseWriter, r *http.Re
// @Tags Notifications // @Tags Notifications
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 204 // @Success 204
// @Router /users/{user}/webpush/test [post] // @Router /api/v2/users/{user}/webpush/test [post]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) postUserPushNotificationTest(rw http.ResponseWriter, r *http.Request) { func (api *API) postUserPushNotificationTest(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+3 -3
View File
@@ -21,7 +21,7 @@ import (
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Param request body codersdk.UpsertWorkspaceAgentPortShareRequest true "Upsert port sharing level request" // @Param request body codersdk.UpsertWorkspaceAgentPortShareRequest true "Upsert port sharing level request"
// @Success 200 {object} codersdk.WorkspaceAgentPortShare // @Success 200 {object} codersdk.WorkspaceAgentPortShare
// @Router /workspaces/{workspace}/port-share [post] // @Router /api/v2/workspaces/{workspace}/port-share [post]
func (api *API) postWorkspaceAgentPortShare(rw http.ResponseWriter, r *http.Request) { func (api *API) postWorkspaceAgentPortShare(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
workspace := httpmw.WorkspaceParam(r) workspace := httpmw.WorkspaceParam(r)
@@ -119,7 +119,7 @@ func (api *API) postWorkspaceAgentPortShare(rw http.ResponseWriter, r *http.Requ
// @Tags PortSharing // @Tags PortSharing
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Success 200 {object} codersdk.WorkspaceAgentPortShares // @Success 200 {object} codersdk.WorkspaceAgentPortShares
// @Router /workspaces/{workspace}/port-share [get] // @Router /api/v2/workspaces/{workspace}/port-share [get]
func (api *API) workspaceAgentPortShares(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentPortShares(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
workspace := httpmw.WorkspaceParam(r) workspace := httpmw.WorkspaceParam(r)
@@ -143,7 +143,7 @@ func (api *API) workspaceAgentPortShares(rw http.ResponseWriter, r *http.Request
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Param request body codersdk.DeleteWorkspaceAgentPortShareRequest true "Delete port sharing level request" // @Param request body codersdk.DeleteWorkspaceAgentPortShareRequest true "Delete port sharing level request"
// @Success 200 // @Success 200
// @Router /workspaces/{workspace}/port-share [delete] // @Router /api/v2/workspaces/{workspace}/port-share [delete]
func (api *API) deleteWorkspaceAgentPortShare(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteWorkspaceAgentPortShare(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
workspace := httpmw.WorkspaceParam(r) workspace := httpmw.WorkspaceParam(r)
+19 -19
View File
@@ -61,7 +61,7 @@ import (
// @Tags Agents // @Tags Agents
// @Param workspaceagent path string true "Workspace agent ID" format(uuid) // @Param workspaceagent path string true "Workspace agent ID" format(uuid)
// @Success 200 {object} codersdk.WorkspaceAgent // @Success 200 {object} codersdk.WorkspaceAgent
// @Router /workspaceagents/{workspaceagent} [get] // @Router /api/v2/workspaceagents/{workspaceagent} [get]
func (api *API) workspaceAgent(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgent(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -138,7 +138,7 @@ const AgentAPIVersionREST = "1.0"
// @Tags Agents // @Tags Agents
// @Param request body agentsdk.PatchLogs true "logs" // @Param request body agentsdk.PatchLogs true "logs"
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /workspaceagents/me/logs [patch] // @Router /api/v2/workspaceagents/me/logs [patch]
func (api *API) patchWorkspaceAgentLogs(rw http.ResponseWriter, r *http.Request) { func (api *API) patchWorkspaceAgentLogs(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
workspaceAgent := httpmw.WorkspaceAgent(r) workspaceAgent := httpmw.WorkspaceAgent(r)
@@ -295,7 +295,7 @@ func (api *API) patchWorkspaceAgentLogs(rw http.ResponseWriter, r *http.Request)
// @Tags Agents // @Tags Agents
// @Param request body agentsdk.PatchAppStatus true "app status" // @Param request body agentsdk.PatchAppStatus true "app status"
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /workspaceagents/me/app-status [patch] // @Router /api/v2/workspaceagents/me/app-status [patch]
// @Deprecated Use UpdateAppStatus on the Agent API instead. // @Deprecated Use UpdateAppStatus on the Agent API instead.
func (api *API) patchWorkspaceAgentAppStatus(rw http.ResponseWriter, r *http.Request) { func (api *API) patchWorkspaceAgentAppStatus(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -378,7 +378,7 @@ func (api *API) patchWorkspaceAgentAppStatus(rw http.ResponseWriter, r *http.Req
// @Param no_compression query bool false "Disable compression for WebSocket connection" // @Param no_compression query bool false "Disable compression for WebSocket connection"
// @Param format query string false "Log output format. Accepted: 'json' (default), 'text' (plain text with RFC3339 timestamps and ANSI colors). Not supported with follow=true." Enums(json,text) // @Param format query string false "Log output format. Accepted: 'json' (default), 'text' (plain text with RFC3339 timestamps and ANSI colors). Not supported with follow=true." Enums(json,text)
// @Success 200 {array} codersdk.WorkspaceAgentLog // @Success 200 {array} codersdk.WorkspaceAgentLog
// @Router /workspaceagents/{workspaceagent}/logs [get] // @Router /api/v2/workspaceagents/{workspaceagent}/logs [get]
func (api *API) workspaceAgentLogs(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentLogs(rw http.ResponseWriter, r *http.Request) {
// This mostly copies how provisioner job logs are streamed! // This mostly copies how provisioner job logs are streamed!
var ( var (
@@ -686,7 +686,7 @@ func (api *API) workspaceAgentLogs(rw http.ResponseWriter, r *http.Request) {
// @Tags Agents // @Tags Agents
// @Param workspaceagent path string true "Workspace agent ID" format(uuid) // @Param workspaceagent path string true "Workspace agent ID" format(uuid)
// @Success 200 {object} codersdk.WorkspaceAgentListeningPortsResponse // @Success 200 {object} codersdk.WorkspaceAgentListeningPortsResponse
// @Router /workspaceagents/{workspaceagent}/listening-ports [get] // @Router /api/v2/workspaceagents/{workspaceagent}/listening-ports [get]
func (api *API) workspaceAgentListeningPorts(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentListeningPorts(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
waws := httpmw.WorkspaceAgentAndWorkspaceParam(r) waws := httpmw.WorkspaceAgentAndWorkspaceParam(r)
@@ -796,7 +796,7 @@ func (api *API) workspaceAgentListeningPorts(rw http.ResponseWriter, r *http.Req
// @Tags Agents // @Tags Agents
// @Param workspaceagent path string true "Workspace agent ID" format(uuid) // @Param workspaceagent path string true "Workspace agent ID" format(uuid)
// @Success 200 {object} codersdk.WorkspaceAgentListContainersResponse // @Success 200 {object} codersdk.WorkspaceAgentListContainersResponse
// @Router /workspaceagents/{workspaceagent}/containers/watch [get] // @Router /api/v2/workspaceagents/{workspaceagent}/containers/watch [get]
func (api *API) watchWorkspaceAgentContainers(rw http.ResponseWriter, r *http.Request) { func (api *API) watchWorkspaceAgentContainers(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -904,7 +904,7 @@ func (api *API) watchWorkspaceAgentContainers(rw http.ResponseWriter, r *http.Re
// @Param workspaceagent path string true "Workspace agent ID" format(uuid) // @Param workspaceagent path string true "Workspace agent ID" format(uuid)
// @Param label query string true "Labels" format(key=value) // @Param label query string true "Labels" format(key=value)
// @Success 200 {object} codersdk.WorkspaceAgentListContainersResponse // @Success 200 {object} codersdk.WorkspaceAgentListContainersResponse
// @Router /workspaceagents/{workspaceagent}/containers [get] // @Router /api/v2/workspaceagents/{workspaceagent}/containers [get]
func (api *API) workspaceAgentListContainers(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentListContainers(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
waws := httpmw.WorkspaceAgentAndWorkspaceParam(r) waws := httpmw.WorkspaceAgentAndWorkspaceParam(r)
@@ -1001,7 +1001,7 @@ func (api *API) workspaceAgentListContainers(rw http.ResponseWriter, r *http.Req
// @Param workspaceagent path string true "Workspace agent ID" format(uuid) // @Param workspaceagent path string true "Workspace agent ID" format(uuid)
// @Param devcontainer path string true "Devcontainer ID" // @Param devcontainer path string true "Devcontainer ID"
// @Success 204 // @Success 204
// @Router /workspaceagents/{workspaceagent}/containers/devcontainers/{devcontainer} [delete] // @Router /api/v2/workspaceagents/{workspaceagent}/containers/devcontainers/{devcontainer} [delete]
func (api *API) workspaceAgentDeleteDevcontainer(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentDeleteDevcontainer(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
waws := httpmw.WorkspaceAgentAndWorkspaceParam(r) waws := httpmw.WorkspaceAgentAndWorkspaceParam(r)
@@ -1091,7 +1091,7 @@ func (api *API) workspaceAgentDeleteDevcontainer(rw http.ResponseWriter, r *http
// @Param workspaceagent path string true "Workspace agent ID" format(uuid) // @Param workspaceagent path string true "Workspace agent ID" format(uuid)
// @Param devcontainer path string true "Devcontainer ID" // @Param devcontainer path string true "Devcontainer ID"
// @Success 202 {object} codersdk.Response // @Success 202 {object} codersdk.Response
// @Router /workspaceagents/{workspaceagent}/containers/devcontainers/{devcontainer}/recreate [post] // @Router /api/v2/workspaceagents/{workspaceagent}/containers/devcontainers/{devcontainer}/recreate [post]
func (api *API) workspaceAgentRecreateDevcontainer(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentRecreateDevcontainer(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
waws := httpmw.WorkspaceAgentAndWorkspaceParam(r) waws := httpmw.WorkspaceAgentAndWorkspaceParam(r)
@@ -1176,7 +1176,7 @@ func (api *API) workspaceAgentRecreateDevcontainer(rw http.ResponseWriter, r *ht
// @Tags Agents // @Tags Agents
// @Param workspaceagent path string true "Workspace agent ID" format(uuid) // @Param workspaceagent path string true "Workspace agent ID" format(uuid)
// @Success 200 {object} workspacesdk.AgentConnectionInfo // @Success 200 {object} workspacesdk.AgentConnectionInfo
// @Router /workspaceagents/{workspaceagent}/connection [get] // @Router /api/v2/workspaceagents/{workspaceagent}/connection [get]
func (api *API) workspaceAgentConnection(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentConnection(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -1197,7 +1197,7 @@ func (api *API) workspaceAgentConnection(rw http.ResponseWriter, r *http.Request
// @Produce json // @Produce json
// @Tags Agents // @Tags Agents
// @Success 200 {object} workspacesdk.AgentConnectionInfo // @Success 200 {object} workspacesdk.AgentConnectionInfo
// @Router /workspaceagents/connection [get] // @Router /api/v2/workspaceagents/connection [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) workspaceAgentConnectionGeneric(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentConnectionGeneric(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -1215,7 +1215,7 @@ func (api *API) workspaceAgentConnectionGeneric(rw http.ResponseWriter, r *http.
// @Security CoderSessionToken // @Security CoderSessionToken
// @Tags Agents // @Tags Agents
// @Success 101 // @Success 101
// @Router /derp-map [get] // @Router /api/v2/derp-map [get]
func (api *API) derpMapUpdates(rw http.ResponseWriter, r *http.Request) { func (api *API) derpMapUpdates(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -1297,7 +1297,7 @@ func (api *API) derpMapUpdates(rw http.ResponseWriter, r *http.Request) {
// @Tags Agents // @Tags Agents
// @Param workspaceagent path string true "Workspace agent ID" format(uuid) // @Param workspaceagent path string true "Workspace agent ID" format(uuid)
// @Success 101 // @Success 101
// @Router /workspaceagents/{workspaceagent}/coordinate [get] // @Router /api/v2/workspaceagents/{workspaceagent}/coordinate [get]
func (api *API) workspaceAgentClientCoordinate(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentClientCoordinate(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -1421,7 +1421,7 @@ func (api *API) handleResumeToken(ctx context.Context, rw http.ResponseWriter, r
// @Tags Agents // @Tags Agents
// @Param request body agentsdk.PostLogSourceRequest true "Log source request" // @Param request body agentsdk.PostLogSourceRequest true "Log source request"
// @Success 200 {object} codersdk.WorkspaceAgentLogSource // @Success 200 {object} codersdk.WorkspaceAgentLogSource
// @Router /workspaceagents/me/log-source [post] // @Router /api/v2/workspaceagents/me/log-source [post]
func (api *API) workspaceAgentPostLogSource(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentPostLogSource(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
var req agentsdk.PostLogSourceRequest var req agentsdk.PostLogSourceRequest
@@ -1471,7 +1471,7 @@ func (api *API) workspaceAgentPostLogSource(rw http.ResponseWriter, r *http.Requ
// @Param wait query bool false "Opt in to durable reinit checks" // @Param wait query bool false "Opt in to durable reinit checks"
// @Success 200 {object} agentsdk.ReinitializationEvent // @Success 200 {object} agentsdk.ReinitializationEvent
// @Failure 409 {object} codersdk.Response // @Failure 409 {object} codersdk.Response
// @Router /workspaceagents/me/reinit [get] // @Router /api/v2/workspaceagents/me/reinit [get]
func (api *API) workspaceAgentReinit(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentReinit(rw http.ResponseWriter, r *http.Request) {
// Allow us to interrupt watch via cancel. // Allow us to interrupt watch via cancel.
ctx, cancel := context.WithCancel(r.Context()) ctx, cancel := context.WithCancel(r.Context())
@@ -1648,7 +1648,7 @@ func convertScripts(dbScripts []database.GetWorkspaceAgentScriptsByAgentIDsRow)
// @Tags Agents // @Tags Agents
// @Success 200 "Success" // @Success 200 "Success"
// @Param workspaceagent path string true "Workspace agent ID" format(uuid) // @Param workspaceagent path string true "Workspace agent ID" format(uuid)
// @Router /workspaceagents/{workspaceagent}/watch-metadata [get] // @Router /api/v2/workspaceagents/{workspaceagent}/watch-metadata [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
// @Deprecated Use /workspaceagents/{workspaceagent}/watch-metadata-ws instead // @Deprecated Use /workspaceagents/{workspaceagent}/watch-metadata-ws instead
func (api *API) watchWorkspaceAgentMetadataSSE(rw http.ResponseWriter, r *http.Request) { func (api *API) watchWorkspaceAgentMetadataSSE(rw http.ResponseWriter, r *http.Request) {
@@ -1662,7 +1662,7 @@ func (api *API) watchWorkspaceAgentMetadataSSE(rw http.ResponseWriter, r *http.R
// @Tags Agents // @Tags Agents
// @Success 200 {object} codersdk.ServerSentEvent // @Success 200 {object} codersdk.ServerSentEvent
// @Param workspaceagent path string true "Workspace agent ID" format(uuid) // @Param workspaceagent path string true "Workspace agent ID" format(uuid)
// @Router /workspaceagents/{workspaceagent}/watch-metadata-ws [get] // @Router /api/v2/workspaceagents/{workspaceagent}/watch-metadata-ws [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) watchWorkspaceAgentMetadataWS(rw http.ResponseWriter, r *http.Request) { func (api *API) watchWorkspaceAgentMetadataWS(rw http.ResponseWriter, r *http.Request) {
api.watchWorkspaceAgentMetadata(rw, r, httpapi.OneWayWebSocketEventSender(api.Logger)) api.watchWorkspaceAgentMetadata(rw, r, httpapi.OneWayWebSocketEventSender(api.Logger))
@@ -1922,7 +1922,7 @@ func convertWorkspaceAgentMetadata(db []database.WorkspaceAgentMetadatum) []code
// @Param id query string true "Provider ID" // @Param id query string true "Provider ID"
// @Param listen query bool false "Wait for a new token to be issued" // @Param listen query bool false "Wait for a new token to be issued"
// @Success 200 {object} agentsdk.ExternalAuthResponse // @Success 200 {object} agentsdk.ExternalAuthResponse
// @Router /workspaceagents/me/external-auth [get] // @Router /api/v2/workspaceagents/me/external-auth [get]
func (api *API) workspaceAgentsExternalAuth(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentsExternalAuth(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
query := r.URL.Query() query := r.URL.Query()
@@ -2203,7 +2203,7 @@ func (api *API) workspaceAgentsExternalAuthListen(ctx context.Context, rw http.R
// @Security CoderSessionToken // @Security CoderSessionToken
// @Tags Agents // @Tags Agents
// @Success 101 // @Success 101
// @Router /tailnet [get] // @Router /api/v2/tailnet [get]
func (api *API) tailnetRPCConn(rw http.ResponseWriter, r *http.Request) { func (api *API) tailnetRPCConn(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+1 -1
View File
@@ -36,7 +36,7 @@ import (
// @Security CoderSessionToken // @Security CoderSessionToken
// @Tags Agents // @Tags Agents
// @Success 101 // @Success 101
// @Router /workspaceagents/me/rpc [get] // @Router /api/v2/workspaceagents/me/rpc [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+2 -2
View File
@@ -29,7 +29,7 @@ import (
// @Produce json // @Produce json
// @Tags Applications // @Tags Applications
// @Success 200 {object} codersdk.AppHostResponse // @Success 200 {object} codersdk.AppHostResponse
// @Router /applications/host [get] // @Router /api/v2/applications/host [get]
// @Deprecated use api/v2/regions and see the primary proxy. // @Deprecated use api/v2/regions and see the primary proxy.
func (api *API) appHost(rw http.ResponseWriter, r *http.Request) { func (api *API) appHost(rw http.ResponseWriter, r *http.Request) {
httpapi.Write(r.Context(), rw, http.StatusOK, codersdk.AppHostResponse{ httpapi.Write(r.Context(), rw, http.StatusOK, codersdk.AppHostResponse{
@@ -50,7 +50,7 @@ func (api *API) appHost(rw http.ResponseWriter, r *http.Request) {
// @Tags Applications // @Tags Applications
// @Param redirect_uri query string false "Redirect destination" // @Param redirect_uri query string false "Redirect destination"
// @Success 307 // @Success 307
// @Router /applications/auth-redirect [get] // @Router /api/v2/applications/auth-redirect [get]
func (api *API) workspaceApplicationAuth(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceApplicationAuth(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
apiKey := httpmw.APIKey(r) apiKey := httpmw.APIKey(r)
+1 -1
View File
@@ -701,7 +701,7 @@ func (s *Server) proxyWorkspaceApp(rw http.ResponseWriter, r *http.Request, appT
// @Tags Agents // @Tags Agents
// @Param workspaceagent path string true "Workspace agent ID" format(uuid) // @Param workspaceagent path string true "Workspace agent ID" format(uuid)
// @Success 101 // @Success 101
// @Router /workspaceagents/{workspaceagent}/pty [get] // @Router /api/v2/workspaceagents/{workspaceagent}/pty [get]
func (s *Server) workspaceAgentPTY(rw http.ResponseWriter, r *http.Request) { func (s *Server) workspaceAgentPTY(rw http.ResponseWriter, r *http.Request) {
ctx, cancel := context.WithCancel(r.Context()) ctx, cancel := context.WithCancel(r.Context())
defer cancel() defer cancel()
+10 -10
View File
@@ -44,7 +44,7 @@ import (
// @Tags Builds // @Tags Builds
// @Param workspacebuild path string true "Workspace build ID" // @Param workspacebuild path string true "Workspace build ID"
// @Success 200 {object} codersdk.WorkspaceBuild // @Success 200 {object} codersdk.WorkspaceBuild
// @Router /workspacebuilds/{workspacebuild} [get] // @Router /api/v2/workspacebuilds/{workspacebuild} [get]
func (api *API) workspaceBuild(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceBuild(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
workspaceBuild := httpmw.WorkspaceBuildParam(r) workspaceBuild := httpmw.WorkspaceBuildParam(r)
@@ -113,7 +113,7 @@ func (api *API) workspaceBuild(rw http.ResponseWriter, r *http.Request) {
// @Param offset query int false "Page offset" // @Param offset query int false "Page offset"
// @Param since query string false "Since timestamp" format(date-time) // @Param since query string false "Since timestamp" format(date-time)
// @Success 200 {array} codersdk.WorkspaceBuild // @Success 200 {array} codersdk.WorkspaceBuild
// @Router /workspaces/{workspace}/builds [get] // @Router /api/v2/workspaces/{workspace}/builds [get]
func (api *API) workspaceBuilds(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceBuilds(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
workspace := httpmw.WorkspaceParam(r) workspace := httpmw.WorkspaceParam(r)
@@ -230,7 +230,7 @@ func (api *API) workspaceBuilds(rw http.ResponseWriter, r *http.Request) {
// @Param workspacename path string true "Workspace name" // @Param workspacename path string true "Workspace name"
// @Param buildnumber path string true "Build number" format(number) // @Param buildnumber path string true "Build number" format(number)
// @Success 200 {object} codersdk.WorkspaceBuild // @Success 200 {object} codersdk.WorkspaceBuild
// @Router /users/{user}/workspace/{workspacename}/builds/{buildnumber} [get] // @Router /api/v2/users/{user}/workspace/{workspacename}/builds/{buildnumber} [get]
func (api *API) workspaceBuildByBuildNumber(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceBuildByBuildNumber(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
mems := httpmw.OrganizationMembersParam(r) mems := httpmw.OrganizationMembersParam(r)
@@ -324,7 +324,7 @@ func (api *API) workspaceBuildByBuildNumber(rw http.ResponseWriter, r *http.Requ
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Param request body codersdk.CreateWorkspaceBuildRequest true "Create workspace build request" // @Param request body codersdk.CreateWorkspaceBuildRequest true "Create workspace build request"
// @Success 200 {object} codersdk.WorkspaceBuild // @Success 200 {object} codersdk.WorkspaceBuild
// @Router /workspaces/{workspace}/builds [post] // @Router /api/v2/workspaces/{workspace}/builds [post]
func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) { func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
apiKey := httpmw.APIKey(r) apiKey := httpmw.APIKey(r)
@@ -662,7 +662,7 @@ func (api *API) notifyWorkspaceUpdated(
// @Param workspacebuild path string true "Workspace build ID" // @Param workspacebuild path string true "Workspace build ID"
// @Param expect_status query string false "Expected status of the job. If expect_status is supplied, the request will be rejected with 412 Precondition Failed if the job doesn't match the state when performing the cancellation." Enums(running, pending) // @Param expect_status query string false "Expected status of the job. If expect_status is supplied, the request will be rejected with 412 Precondition Failed if the job doesn't match the state when performing the cancellation." Enums(running, pending)
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /workspacebuilds/{workspacebuild}/cancel [patch] // @Router /api/v2/workspacebuilds/{workspacebuild}/cancel [patch]
func (api *API) patchCancelWorkspaceBuild(rw http.ResponseWriter, r *http.Request) { func (api *API) patchCancelWorkspaceBuild(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -817,7 +817,7 @@ func verifyUserCanCancelWorkspaceBuilds(ctx context.Context, store database.Stor
// @Tags Builds // @Tags Builds
// @Param workspacebuild path string true "Workspace build ID" // @Param workspacebuild path string true "Workspace build ID"
// @Success 200 {array} codersdk.WorkspaceBuildParameter // @Success 200 {array} codersdk.WorkspaceBuildParameter
// @Router /workspacebuilds/{workspacebuild}/parameters [get] // @Router /api/v2/workspacebuilds/{workspacebuild}/parameters [get]
func (api *API) workspaceBuildParameters(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceBuildParameters(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
workspaceBuild := httpmw.WorkspaceBuildParam(r) workspaceBuild := httpmw.WorkspaceBuildParam(r)
@@ -845,7 +845,7 @@ func (api *API) workspaceBuildParameters(rw http.ResponseWriter, r *http.Request
// @Param follow query bool false "Follow log stream" // @Param follow query bool false "Follow log stream"
// @Param format query string false "Log output format. Accepted: 'json' (default), 'text' (plain text with RFC3339 timestamps and ANSI colors). Not supported with follow=true." Enums(json,text) // @Param format query string false "Log output format. Accepted: 'json' (default), 'text' (plain text with RFC3339 timestamps and ANSI colors). Not supported with follow=true." Enums(json,text)
// @Success 200 {array} codersdk.ProvisionerJobLog // @Success 200 {array} codersdk.ProvisionerJobLog
// @Router /workspacebuilds/{workspacebuild}/logs [get] // @Router /api/v2/workspacebuilds/{workspacebuild}/logs [get]
func (api *API) workspaceBuildLogs(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceBuildLogs(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
workspaceBuild := httpmw.WorkspaceBuildParam(r) workspaceBuild := httpmw.WorkspaceBuildParam(r)
@@ -868,7 +868,7 @@ func (api *API) workspaceBuildLogs(rw http.ResponseWriter, r *http.Request) {
// @Tags Builds // @Tags Builds
// @Param workspacebuild path string true "Workspace build ID" // @Param workspacebuild path string true "Workspace build ID"
// @Success 200 {object} codersdk.WorkspaceBuild // @Success 200 {object} codersdk.WorkspaceBuild
// @Router /workspacebuilds/{workspacebuild}/state [get] // @Router /api/v2/workspacebuilds/{workspacebuild}/state [get]
func (api *API) workspaceBuildState(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceBuildState(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
workspaceBuild := httpmw.WorkspaceBuildParam(r) workspaceBuild := httpmw.WorkspaceBuildParam(r)
@@ -900,7 +900,7 @@ func (api *API) workspaceBuildState(rw http.ResponseWriter, r *http.Request) {
// @Param workspacebuild path string true "Workspace build ID" format(uuid) // @Param workspacebuild path string true "Workspace build ID" format(uuid)
// @Param request body codersdk.UpdateWorkspaceBuildStateRequest true "Request body" // @Param request body codersdk.UpdateWorkspaceBuildStateRequest true "Request body"
// @Success 204 // @Success 204
// @Router /workspacebuilds/{workspacebuild}/state [put] // @Router /api/v2/workspacebuilds/{workspacebuild}/state [put]
func (api *API) workspaceBuildUpdateState(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceBuildUpdateState(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
workspaceBuild := httpmw.WorkspaceBuildParam(r) workspaceBuild := httpmw.WorkspaceBuildParam(r)
@@ -956,7 +956,7 @@ func (api *API) workspaceBuildUpdateState(rw http.ResponseWriter, r *http.Reques
// @Tags Builds // @Tags Builds
// @Param workspacebuild path string true "Workspace build ID" format(uuid) // @Param workspacebuild path string true "Workspace build ID" format(uuid)
// @Success 200 {object} codersdk.WorkspaceBuildTimings // @Success 200 {object} codersdk.WorkspaceBuildTimings
// @Router /workspacebuilds/{workspacebuild}/timings [get] // @Router /api/v2/workspacebuilds/{workspacebuild}/timings [get]
func (api *API) workspaceBuildTimings(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceBuildTimings(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
+1 -1
View File
@@ -74,7 +74,7 @@ func (api *API) PrimaryWorkspaceProxy(ctx context.Context) (database.WorkspacePr
// @Produce json // @Produce json
// @Tags WorkspaceProxies // @Tags WorkspaceProxies
// @Success 200 {object} codersdk.RegionsResponse[codersdk.Region] // @Success 200 {object} codersdk.RegionsResponse[codersdk.Region]
// @Router /regions [get] // @Router /api/v2/regions [get]
func (api *API) regions(rw http.ResponseWriter, r *http.Request) { func (api *API) regions(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
//nolint:gocritic // this route intentionally requests resources that users //nolint:gocritic // this route intentionally requests resources that users
+3 -3
View File
@@ -31,7 +31,7 @@ import (
// @Tags Agents // @Tags Agents
// @Param request body agentsdk.AzureInstanceIdentityToken true "Instance identity token. The optional agent_name field disambiguates when multiple agents share the same instance ID." // @Param request body agentsdk.AzureInstanceIdentityToken true "Instance identity token. The optional agent_name field disambiguates when multiple agents share the same instance ID."
// @Success 200 {object} agentsdk.AuthenticateResponse // @Success 200 {object} agentsdk.AuthenticateResponse
// @Router /workspaceagents/azure-instance-identity [post] // @Router /api/v2/workspaceagents/azure-instance-identity [post]
func (api *API) postWorkspaceAuthAzureInstanceIdentity(rw http.ResponseWriter, r *http.Request) { func (api *API) postWorkspaceAuthAzureInstanceIdentity(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
var req agentsdk.AzureInstanceIdentityToken var req agentsdk.AzureInstanceIdentityToken
@@ -63,7 +63,7 @@ func (api *API) postWorkspaceAuthAzureInstanceIdentity(rw http.ResponseWriter, r
// @Tags Agents // @Tags Agents
// @Param request body agentsdk.AWSInstanceIdentityToken true "Instance identity token. The optional agent_name field disambiguates when multiple agents share the same instance ID." // @Param request body agentsdk.AWSInstanceIdentityToken true "Instance identity token. The optional agent_name field disambiguates when multiple agents share the same instance ID."
// @Success 200 {object} agentsdk.AuthenticateResponse // @Success 200 {object} agentsdk.AuthenticateResponse
// @Router /workspaceagents/aws-instance-identity [post] // @Router /api/v2/workspaceagents/aws-instance-identity [post]
func (api *API) postWorkspaceAuthAWSInstanceIdentity(rw http.ResponseWriter, r *http.Request) { func (api *API) postWorkspaceAuthAWSInstanceIdentity(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
var req agentsdk.AWSInstanceIdentityToken var req agentsdk.AWSInstanceIdentityToken
@@ -93,7 +93,7 @@ func (api *API) postWorkspaceAuthAWSInstanceIdentity(rw http.ResponseWriter, r *
// @Tags Agents // @Tags Agents
// @Param request body agentsdk.GoogleInstanceIdentityToken true "Instance identity token. The optional agent_name field disambiguates when multiple agents share the same instance ID." // @Param request body agentsdk.GoogleInstanceIdentityToken true "Instance identity token. The optional agent_name field disambiguates when multiple agents share the same instance ID."
// @Success 200 {object} agentsdk.AuthenticateResponse // @Success 200 {object} agentsdk.AuthenticateResponse
// @Router /workspaceagents/google-instance-identity [post] // @Router /api/v2/workspaceagents/google-instance-identity [post]
func (api *API) postWorkspaceAuthGoogleInstanceIdentity(rw http.ResponseWriter, r *http.Request) { func (api *API) postWorkspaceAuthGoogleInstanceIdentity(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
var req agentsdk.GoogleInstanceIdentityToken var req agentsdk.GoogleInstanceIdentityToken
+23 -23
View File
@@ -65,7 +65,7 @@ var (
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Param include_deleted query bool false "Return data instead of HTTP 404 if the workspace is deleted" // @Param include_deleted query bool false "Return data instead of HTTP 404 if the workspace is deleted"
// @Success 200 {object} codersdk.Workspace // @Success 200 {object} codersdk.Workspace
// @Router /workspaces/{workspace} [get] // @Router /api/v2/workspaces/{workspace} [get]
func (api *API) workspace(rw http.ResponseWriter, r *http.Request) { func (api *API) workspace(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
workspace := httpmw.WorkspaceParam(r) workspace := httpmw.WorkspaceParam(r)
@@ -146,7 +146,7 @@ func (api *API) workspace(rw http.ResponseWriter, r *http.Request) {
// @Param limit query int false "Page limit" // @Param limit query int false "Page limit"
// @Param offset query int false "Page offset" // @Param offset query int false "Page offset"
// @Success 200 {object} codersdk.WorkspacesResponse // @Success 200 {object} codersdk.WorkspacesResponse
// @Router /workspaces [get] // @Router /api/v2/workspaces [get]
func (api *API) workspaces(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaces(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
apiKey := httpmw.APIKey(r) apiKey := httpmw.APIKey(r)
@@ -269,7 +269,7 @@ func (api *API) workspaces(rw http.ResponseWriter, r *http.Request) {
// @Param workspacename path string true "Workspace name" // @Param workspacename path string true "Workspace name"
// @Param include_deleted query bool false "Return data instead of HTTP 404 if the workspace is deleted" // @Param include_deleted query bool false "Return data instead of HTTP 404 if the workspace is deleted"
// @Success 200 {object} codersdk.Workspace // @Success 200 {object} codersdk.Workspace
// @Router /users/{user}/workspace/{workspacename} [get] // @Router /api/v2/users/{user}/workspace/{workspacename} [get]
func (api *API) workspaceByOwnerAndName(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceByOwnerAndName(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -371,7 +371,7 @@ func (api *API) workspaceByOwnerAndName(rw http.ResponseWriter, r *http.Request)
// @Param user path string true "Username, UUID, or me" // @Param user path string true "Username, UUID, or me"
// @Param request body codersdk.CreateWorkspaceRequest true "Create workspace request" // @Param request body codersdk.CreateWorkspaceRequest true "Create workspace request"
// @Success 200 {object} codersdk.Workspace // @Success 200 {object} codersdk.Workspace
// @Router /organizations/{organization}/members/{user}/workspaces [post] // @Router /api/v2/organizations/{organization}/members/{user}/workspaces [post]
func (api *API) postWorkspacesByOrganization(rw http.ResponseWriter, r *http.Request) { func (api *API) postWorkspacesByOrganization(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -432,7 +432,7 @@ func (api *API) postWorkspacesByOrganization(rw http.ResponseWriter, r *http.Req
// @Param user path string true "Username, UUID, or me" // @Param user path string true "Username, UUID, or me"
// @Param request body codersdk.CreateWorkspaceRequest true "Create workspace request" // @Param request body codersdk.CreateWorkspaceRequest true "Create workspace request"
// @Success 200 {object} codersdk.Workspace // @Success 200 {object} codersdk.Workspace
// @Router /users/{user}/workspaces [post] // @Router /api/v2/users/{user}/workspaces [post]
func (api *API) postUserWorkspaces(rw http.ResponseWriter, r *http.Request) { func (api *API) postUserWorkspaces(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1048,7 +1048,7 @@ func (api *API) notifyWorkspaceCreated(
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Param request body codersdk.UpdateWorkspaceRequest true "Metadata update request" // @Param request body codersdk.UpdateWorkspaceRequest true "Metadata update request"
// @Success 204 // @Success 204
// @Router /workspaces/{workspace} [patch] // @Router /api/v2/workspaces/{workspace} [patch]
func (api *API) patchWorkspace(rw http.ResponseWriter, r *http.Request) { func (api *API) patchWorkspace(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1143,7 +1143,7 @@ func (api *API) patchWorkspace(rw http.ResponseWriter, r *http.Request) {
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Param request body codersdk.UpdateWorkspaceAutostartRequest true "Schedule update request" // @Param request body codersdk.UpdateWorkspaceAutostartRequest true "Schedule update request"
// @Success 204 // @Success 204
// @Router /workspaces/{workspace}/autostart [put] // @Router /api/v2/workspaces/{workspace}/autostart [put]
func (api *API) putWorkspaceAutostart(rw http.ResponseWriter, r *http.Request) { func (api *API) putWorkspaceAutostart(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1246,7 +1246,7 @@ func (api *API) putWorkspaceAutostart(rw http.ResponseWriter, r *http.Request) {
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Param request body codersdk.UpdateWorkspaceTTLRequest true "Workspace TTL update request" // @Param request body codersdk.UpdateWorkspaceTTLRequest true "Workspace TTL update request"
// @Success 204 // @Success 204
// @Router /workspaces/{workspace}/ttl [put] // @Router /api/v2/workspaces/{workspace}/ttl [put]
func (api *API) putWorkspaceTTL(rw http.ResponseWriter, r *http.Request) { func (api *API) putWorkspaceTTL(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1375,7 +1375,7 @@ func (api *API) putWorkspaceTTL(rw http.ResponseWriter, r *http.Request) {
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Param request body codersdk.UpdateWorkspaceDormancy true "Make a workspace dormant or active" // @Param request body codersdk.UpdateWorkspaceDormancy true "Make a workspace dormant or active"
// @Success 200 {object} codersdk.Workspace // @Success 200 {object} codersdk.Workspace
// @Router /workspaces/{workspace}/dormant [put] // @Router /api/v2/workspaces/{workspace}/dormant [put]
func (api *API) putWorkspaceDormant(rw http.ResponseWriter, r *http.Request) { func (api *API) putWorkspaceDormant(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1547,7 +1547,7 @@ func (api *API) putWorkspaceDormant(rw http.ResponseWriter, r *http.Request) {
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Param request body codersdk.PutExtendWorkspaceRequest true "Extend deadline update request" // @Param request body codersdk.PutExtendWorkspaceRequest true "Extend deadline update request"
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /workspaces/{workspace}/extend [put] // @Router /api/v2/workspaces/{workspace}/extend [put]
func (api *API) putExtendWorkspace(rw http.ResponseWriter, r *http.Request) { func (api *API) putExtendWorkspace(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
workspace := httpmw.WorkspaceParam(r) workspace := httpmw.WorkspaceParam(r)
@@ -1655,7 +1655,7 @@ func (api *API) putExtendWorkspace(rw http.ResponseWriter, r *http.Request) {
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Param request body codersdk.PostWorkspaceUsageRequest false "Post workspace usage request" // @Param request body codersdk.PostWorkspaceUsageRequest false "Post workspace usage request"
// @Success 204 // @Success 204
// @Router /workspaces/{workspace}/usage [post] // @Router /api/v2/workspaces/{workspace}/usage [post]
func (api *API) postWorkspaceUsage(rw http.ResponseWriter, r *http.Request) { func (api *API) postWorkspaceUsage(rw http.ResponseWriter, r *http.Request) {
workspace := httpmw.WorkspaceParam(r) workspace := httpmw.WorkspaceParam(r)
if !api.Authorize(r, policy.ActionUpdate, workspace) { if !api.Authorize(r, policy.ActionUpdate, workspace) {
@@ -1769,7 +1769,7 @@ func (api *API) postWorkspaceUsage(rw http.ResponseWriter, r *http.Request) {
// @Tags Workspaces // @Tags Workspaces
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Success 204 // @Success 204
// @Router /workspaces/{workspace}/favorite [put] // @Router /api/v2/workspaces/{workspace}/favorite [put]
func (api *API) putFavoriteWorkspace(rw http.ResponseWriter, r *http.Request) { func (api *API) putFavoriteWorkspace(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1816,7 +1816,7 @@ func (api *API) putFavoriteWorkspace(rw http.ResponseWriter, r *http.Request) {
// @Tags Workspaces // @Tags Workspaces
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Success 204 // @Success 204
// @Router /workspaces/{workspace}/favorite [delete] // @Router /api/v2/workspaces/{workspace}/favorite [delete]
func (api *API) deleteFavoriteWorkspace(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteFavoriteWorkspace(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1865,7 +1865,7 @@ func (api *API) deleteFavoriteWorkspace(rw http.ResponseWriter, r *http.Request)
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Param request body codersdk.UpdateWorkspaceAutomaticUpdatesRequest true "Automatic updates request" // @Param request body codersdk.UpdateWorkspaceAutomaticUpdatesRequest true "Automatic updates request"
// @Success 204 // @Success 204
// @Router /workspaces/{workspace}/autoupdates [put] // @Router /api/v2/workspaces/{workspace}/autoupdates [put]
func (api *API) putWorkspaceAutoupdates(rw http.ResponseWriter, r *http.Request) { func (api *API) putWorkspaceAutoupdates(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -1925,7 +1925,7 @@ func (api *API) putWorkspaceAutoupdates(rw http.ResponseWriter, r *http.Request)
// @Tags Workspaces // @Tags Workspaces
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Success 200 {object} codersdk.ResolveAutostartResponse // @Success 200 {object} codersdk.ResolveAutostartResponse
// @Router /workspaces/{workspace}/resolve-autostart [get] // @Router /api/v2/workspaces/{workspace}/resolve-autostart [get]
func (api *API) resolveAutostart(rw http.ResponseWriter, r *http.Request) { func (api *API) resolveAutostart(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -2019,7 +2019,7 @@ func (api *API) resolveAutostart(rw http.ResponseWriter, r *http.Request) {
// @Tags Workspaces // @Tags Workspaces
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /workspaces/{workspace}/watch [get] // @Router /api/v2/workspaces/{workspace}/watch [get]
// @Deprecated Use /workspaces/{workspace}/watch-ws instead // @Deprecated Use /workspaces/{workspace}/watch-ws instead
func (api *API) watchWorkspaceSSE(rw http.ResponseWriter, r *http.Request) { func (api *API) watchWorkspaceSSE(rw http.ResponseWriter, r *http.Request) {
api.watchWorkspace(rw, r, httpapi.ServerSentEventSender) api.watchWorkspace(rw, r, httpapi.ServerSentEventSender)
@@ -2032,7 +2032,7 @@ func (api *API) watchWorkspaceSSE(rw http.ResponseWriter, r *http.Request) {
// @Tags Workspaces // @Tags Workspaces
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Success 200 {object} codersdk.ServerSentEvent // @Success 200 {object} codersdk.ServerSentEvent
// @Router /workspaces/{workspace}/watch-ws [get] // @Router /api/v2/workspaces/{workspace}/watch-ws [get]
func (api *API) watchWorkspaceWS(rw http.ResponseWriter, r *http.Request) { func (api *API) watchWorkspaceWS(rw http.ResponseWriter, r *http.Request) {
api.watchWorkspace(rw, r, httpapi.OneWayWebSocketEventSender(api.Logger)) api.watchWorkspace(rw, r, httpapi.OneWayWebSocketEventSender(api.Logger))
} }
@@ -2184,7 +2184,7 @@ func (api *API) watchWorkspace(
// @Produce json // @Produce json
// @Tags Workspaces // @Tags Workspaces
// @Success 101 // @Success 101
// @Router /experimental/watch-all-workspacebuilds [get] // @Router /api/experimental/watch-all-workspacebuilds [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) watchAllWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) { func (api *API) watchAllWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -2257,7 +2257,7 @@ func (api *API) watchAllWorkspaceBuilds(rw http.ResponseWriter, r *http.Request)
// @Tags Workspaces // @Tags Workspaces
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Success 200 {object} codersdk.WorkspaceBuildTimings // @Success 200 {object} codersdk.WorkspaceBuildTimings
// @Router /workspaces/{workspace}/timings [get] // @Router /api/v2/workspaces/{workspace}/timings [get]
func (api *API) workspaceTimings(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceTimings(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -2292,7 +2292,7 @@ func (api *API) workspaceTimings(rw http.ResponseWriter, r *http.Request) {
// @Tags Workspaces // @Tags Workspaces
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Success 200 {object} codersdk.WorkspaceACL // @Success 200 {object} codersdk.WorkspaceACL
// @Router /workspaces/{workspace}/acl [get] // @Router /api/v2/workspaces/{workspace}/acl [get]
func (api *API) workspaceACL(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceACL(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -2403,7 +2403,7 @@ func (api *API) workspaceACL(rw http.ResponseWriter, r *http.Request) {
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Param request body codersdk.UpdateWorkspaceACL true "Update workspace ACL request" // @Param request body codersdk.UpdateWorkspaceACL true "Update workspace ACL request"
// @Success 204 // @Success 204
// @Router /workspaces/{workspace}/acl [patch] // @Router /api/v2/workspaces/{workspace}/acl [patch]
func (api *API) patchWorkspaceACL(rw http.ResponseWriter, r *http.Request) { func (api *API) patchWorkspaceACL(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -2514,7 +2514,7 @@ type workspaceData struct {
// @Tags Workspaces // @Tags Workspaces
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Success 204 // @Success 204
// @Router /workspaces/{workspace}/acl [delete] // @Router /api/v2/workspaces/{workspace}/acl [delete]
func (api *API) deleteWorkspaceACL(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteWorkspaceACL(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -3024,7 +3024,7 @@ func convertToWorkspaceRole(actions []policy.Action) codersdk.WorkspaceRole {
// @Param limit query int false "Limit results" // @Param limit query int false "Limit results"
// @Param offset query int false "Offset for pagination" // @Param offset query int false "Offset for pagination"
// @Success 200 {array} codersdk.MinimalUser // @Success 200 {array} codersdk.MinimalUser
// @Router /organizations/{organization}/members/{user}/workspaces/available-users [get] // @Router /api/v2/organizations/{organization}/members/{user}/workspaces/available-users [get]
func (api *API) workspaceAvailableUsers(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceAvailableUsers(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
organization := httpmw.OrganizationParam(r) organization := httpmw.OrganizationParam(r)
+23 -23
View File
@@ -10,7 +10,7 @@ curl -X GET http://coder-server:8080/api/v2/derp-map \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /derp-map` `GET /api/v2/derp-map`
### Responses ### Responses
@@ -30,7 +30,7 @@ curl -X GET http://coder-server:8080/api/v2/tailnet \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /tailnet` `GET /api/v2/tailnet`
### Responses ### Responses
@@ -52,7 +52,7 @@ curl -X POST http://coder-server:8080/api/v2/workspaceagents/aws-instance-identi
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /workspaceagents/aws-instance-identity` `POST /api/v2/workspaceagents/aws-instance-identity`
> Body parameter > Body parameter
@@ -100,7 +100,7 @@ curl -X POST http://coder-server:8080/api/v2/workspaceagents/azure-instance-iden
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /workspaceagents/azure-instance-identity` `POST /api/v2/workspaceagents/azure-instance-identity`
> Body parameter > Body parameter
@@ -148,7 +148,7 @@ curl -X POST http://coder-server:8080/api/v2/workspaceagents/google-instance-ide
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /workspaceagents/google-instance-identity` `POST /api/v2/workspaceagents/google-instance-identity`
> Body parameter > Body parameter
@@ -195,7 +195,7 @@ curl -X PATCH http://coder-server:8080/api/v2/workspaceagents/me/app-status \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PATCH /workspaceagents/me/app-status` `PATCH /api/v2/workspaceagents/me/app-status`
> Body parameter > Body parameter
@@ -252,7 +252,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaceagents/me/external-auth?mat
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaceagents/me/external-auth` `GET /api/v2/workspaceagents/me/external-auth`
### Parameters ### Parameters
@@ -296,7 +296,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaceagents/me/gitauth?match=str
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaceagents/me/gitauth` `GET /api/v2/workspaceagents/me/gitauth`
### Parameters ### Parameters
@@ -340,7 +340,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaceagents/me/gitsshkey \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaceagents/me/gitsshkey` `GET /api/v2/workspaceagents/me/gitsshkey`
### Example responses ### Example responses
@@ -373,7 +373,7 @@ curl -X POST http://coder-server:8080/api/v2/workspaceagents/me/log-source \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /workspaceagents/me/log-source` `POST /api/v2/workspaceagents/me/log-source`
> Body parameter > Body parameter
@@ -425,7 +425,7 @@ curl -X PATCH http://coder-server:8080/api/v2/workspaceagents/me/logs \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PATCH /workspaceagents/me/logs` `PATCH /api/v2/workspaceagents/me/logs`
> Body parameter > Body parameter
@@ -484,7 +484,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaceagents/me/reinit \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaceagents/me/reinit` `GET /api/v2/workspaceagents/me/reinit`
### Parameters ### Parameters
@@ -524,7 +524,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaceagents/{workspaceagent}` `GET /api/v2/workspaceagents/{workspaceagent}`
### Parameters ### Parameters
@@ -675,7 +675,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/con
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaceagents/{workspaceagent}/connection` `GET /api/v2/workspaceagents/{workspaceagent}/connection`
### Parameters ### Parameters
@@ -773,7 +773,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/con
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaceagents/{workspaceagent}/containers` `GET /api/v2/workspaceagents/{workspaceagent}/containers`
### Parameters ### Parameters
@@ -882,7 +882,7 @@ curl -X DELETE http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`DELETE /workspaceagents/{workspaceagent}/containers/devcontainers/{devcontainer}` `DELETE /api/v2/workspaceagents/{workspaceagent}/containers/devcontainers/{devcontainer}`
### Parameters ### Parameters
@@ -910,7 +910,7 @@ curl -X POST http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/co
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /workspaceagents/{workspaceagent}/containers/devcontainers/{devcontainer}/recreate` `POST /api/v2/workspaceagents/{workspaceagent}/containers/devcontainers/{devcontainer}/recreate`
### Parameters ### Parameters
@@ -955,7 +955,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/con
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaceagents/{workspaceagent}/containers/watch` `GET /api/v2/workspaceagents/{workspaceagent}/containers/watch`
### Parameters ### Parameters
@@ -1063,7 +1063,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/coo
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaceagents/{workspaceagent}/coordinate` `GET /api/v2/workspaceagents/{workspaceagent}/coordinate`
### Parameters ### Parameters
@@ -1090,7 +1090,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/lis
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaceagents/{workspaceagent}/listening-ports` `GET /api/v2/workspaceagents/{workspaceagent}/listening-ports`
### Parameters ### Parameters
@@ -1133,7 +1133,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/log
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaceagents/{workspaceagent}/logs` `GET /api/v2/workspaceagents/{workspaceagent}/logs`
### Parameters ### Parameters
@@ -1205,7 +1205,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/pty
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaceagents/{workspaceagent}/pty` `GET /api/v2/workspaceagents/{workspaceagent}/pty`
### Parameters ### Parameters
@@ -1232,7 +1232,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaceagents/{workspaceagent}/sta
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaceagents/{workspaceagent}/startup-logs` `GET /api/v2/workspaceagents/{workspaceagent}/startup-logs`
### Parameters ### Parameters
+5 -5
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/aibridge/clients \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /aibridge/clients` `GET /api/v2/aibridge/clients`
### Example responses ### Example responses
@@ -44,7 +44,7 @@ curl -X GET http://coder-server:8080/api/v2/aibridge/interceptions \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /aibridge/interceptions` `GET /api/v2/aibridge/interceptions`
### Parameters ### Parameters
@@ -152,7 +152,7 @@ curl -X GET http://coder-server:8080/api/v2/aibridge/models \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /aibridge/models` `GET /api/v2/aibridge/models`
### Example responses ### Example responses
@@ -185,7 +185,7 @@ curl -X GET http://coder-server:8080/api/v2/aibridge/sessions \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /aibridge/sessions` `GET /api/v2/aibridge/sessions`
### Parameters ### Parameters
@@ -258,7 +258,7 @@ curl -X GET http://coder-server:8080/api/v2/aibridge/sessions/{session_id} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /aibridge/sessions/{session_id}` `GET /api/v2/aibridge/sessions/{session_id}`
### Parameters ### Parameters
+2 -2
View File
@@ -10,7 +10,7 @@ curl -X GET http://coder-server:8080/api/v2/applications/auth-redirect \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /applications/auth-redirect` `GET /api/v2/applications/auth-redirect`
### Parameters ### Parameters
@@ -37,7 +37,7 @@ curl -X GET http://coder-server:8080/api/v2/applications/host \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /applications/host` `GET /api/v2/applications/host`
### Example responses ### Example responses
+1 -1
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/audit?limit=0 \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /audit` `GET /api/v2/audit`
### Parameters ### Parameters
+7 -7
View File
@@ -10,7 +10,7 @@ curl -X GET http://coder-server:8080/api/v2/auth/scopes \
-H 'Accept: application/json' -H 'Accept: application/json'
``` ```
`GET /auth/scopes` `GET /api/v2/auth/scopes`
### Example responses ### Example responses
@@ -42,7 +42,7 @@ curl -X POST http://coder-server:8080/api/v2/authcheck \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /authcheck` `POST /api/v2/authcheck`
> Body parameter > Body parameter
@@ -109,7 +109,7 @@ curl -X POST http://coder-server:8080/api/v2/users/login \
-H 'Accept: application/json' -H 'Accept: application/json'
``` ```
`POST /users/login` `POST /api/v2/users/login`
> Body parameter > Body parameter
@@ -152,7 +152,7 @@ curl -X POST http://coder-server:8080/api/v2/users/otp/change-password \
-H 'Content-Type: application/json' -H 'Content-Type: application/json'
``` ```
`POST /users/otp/change-password` `POST /api/v2/users/otp/change-password`
> Body parameter > Body parameter
@@ -186,7 +186,7 @@ curl -X POST http://coder-server:8080/api/v2/users/otp/request \
-H 'Content-Type: application/json' -H 'Content-Type: application/json'
``` ```
`POST /users/otp/request` `POST /api/v2/users/otp/request`
> Body parameter > Body parameter
@@ -220,7 +220,7 @@ curl -X POST http://coder-server:8080/api/v2/users/validate-password \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /users/validate-password` `POST /api/v2/users/validate-password`
> Body parameter > Body parameter
@@ -267,7 +267,7 @@ curl -X POST http://coder-server:8080/api/v2/users/{user}/convert-login \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /users/{user}/convert-login` `POST /api/v2/users/{user}/convert-login`
> Body parameter > Body parameter
+11 -11
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/workspace/{workspacenam
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/workspace/{workspacename}/builds/{buildnumber}` `GET /api/v2/users/{user}/workspace/{workspacename}/builds/{buildnumber}`
### Parameters ### Parameters
@@ -256,7 +256,7 @@ curl -X GET http://coder-server:8080/api/v2/workspacebuilds/{workspacebuild} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspacebuilds/{workspacebuild}` `GET /api/v2/workspacebuilds/{workspacebuild}`
### Parameters ### Parameters
@@ -499,7 +499,7 @@ curl -X PATCH http://coder-server:8080/api/v2/workspacebuilds/{workspacebuild}/c
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PATCH /workspacebuilds/{workspacebuild}/cancel` `PATCH /api/v2/workspacebuilds/{workspacebuild}/cancel`
### Parameters ### Parameters
@@ -550,7 +550,7 @@ curl -X GET http://coder-server:8080/api/v2/workspacebuilds/{workspacebuild}/log
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspacebuilds/{workspacebuild}/logs` `GET /api/v2/workspacebuilds/{workspacebuild}/logs`
### Parameters ### Parameters
@@ -625,7 +625,7 @@ curl -X GET http://coder-server:8080/api/v2/workspacebuilds/{workspacebuild}/par
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspacebuilds/{workspacebuild}/parameters` `GET /api/v2/workspacebuilds/{workspacebuild}/parameters`
### Parameters ### Parameters
@@ -675,7 +675,7 @@ curl -X GET http://coder-server:8080/api/v2/workspacebuilds/{workspacebuild}/res
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspacebuilds/{workspacebuild}/resources` `GET /api/v2/workspacebuilds/{workspacebuild}/resources`
### Parameters ### Parameters
@@ -971,7 +971,7 @@ curl -X GET http://coder-server:8080/api/v2/workspacebuilds/{workspacebuild}/sta
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspacebuilds/{workspacebuild}/state` `GET /api/v2/workspacebuilds/{workspacebuild}/state`
### Parameters ### Parameters
@@ -1214,7 +1214,7 @@ curl -X PUT http://coder-server:8080/api/v2/workspacebuilds/{workspacebuild}/sta
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /workspacebuilds/{workspacebuild}/state` `PUT /api/v2/workspacebuilds/{workspacebuild}/state`
> Body parameter > Body parameter
@@ -1252,7 +1252,7 @@ curl -X GET http://coder-server:8080/api/v2/workspacebuilds/{workspacebuild}/tim
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspacebuilds/{workspacebuild}/timings` `GET /api/v2/workspacebuilds/{workspacebuild}/timings`
### Parameters ### Parameters
@@ -1320,7 +1320,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaces/{workspace}/builds \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaces/{workspace}/builds` `GET /api/v2/workspaces/{workspace}/builds`
### Parameters ### Parameters
@@ -1759,7 +1759,7 @@ curl -X POST http://coder-server:8080/api/v2/workspaces/{workspace}/builds \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /workspaces/{workspace}/builds` `POST /api/v2/workspaces/{workspace}/builds`
> Body parameter > Body parameter
+5 -5
View File
@@ -10,7 +10,7 @@ curl -X GET http://coder-server:8080/api/v2/debug/coordinator \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /debug/coordinator` `GET /api/v2/debug/coordinator`
### Responses ### Responses
@@ -31,7 +31,7 @@ curl -X GET http://coder-server:8080/api/v2/debug/health \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /debug/health` `GET /api/v2/debug/health`
### Parameters ### Parameters
@@ -434,7 +434,7 @@ curl -X GET http://coder-server:8080/api/v2/debug/health/settings \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /debug/health/settings` `GET /api/v2/debug/health/settings`
### Example responses ### Example responses
@@ -468,7 +468,7 @@ curl -X PUT http://coder-server:8080/api/v2/debug/health/settings \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /debug/health/settings` `PUT /api/v2/debug/health/settings`
> Body parameter > Body parameter
@@ -516,7 +516,7 @@ curl -X GET http://coder-server:8080/api/v2/debug/tailnet \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /debug/tailnet` `GET /api/v2/debug/tailnet`
### Responses ### Responses
+874 -874
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -12,7 +12,7 @@ curl -X POST http://coder-server:8080/api/v2/files \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /files` `POST /api/v2/files`
> Body parameter > Body parameter
@@ -58,7 +58,7 @@ curl -X GET http://coder-server:8080/api/v2/files/{fileID} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /files/{fileID}` `GET /api/v2/files/{fileID}`
### Parameters ### Parameters
+10 -10
View File
@@ -10,7 +10,7 @@ curl -X GET http://coder-server:8080/api/v2/ \
-H 'Accept: application/json' -H 'Accept: application/json'
``` ```
`GET /` `GET /api/v2/`
### Example responses ### Example responses
@@ -45,7 +45,7 @@ curl -X GET http://coder-server:8080/api/v2/buildinfo \
-H 'Accept: application/json' -H 'Accept: application/json'
``` ```
`GET /buildinfo` `GET /api/v2/buildinfo`
### Example responses ### Example responses
@@ -83,7 +83,7 @@ curl -X POST http://coder-server:8080/api/v2/csp/reports \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /csp/reports` `POST /api/v2/csp/reports`
> Body parameter > Body parameter
@@ -118,7 +118,7 @@ curl -X GET http://coder-server:8080/api/v2/deployment/config \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /deployment/config` `GET /api/v2/deployment/config`
### Example responses ### Example responses
@@ -687,7 +687,7 @@ curl -X GET http://coder-server:8080/api/v2/deployment/ssh \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /deployment/ssh` `GET /api/v2/deployment/ssh`
### Example responses ### Example responses
@@ -723,7 +723,7 @@ curl -X GET http://coder-server:8080/api/v2/deployment/stats \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /deployment/stats` `GET /api/v2/deployment/stats`
### Example responses ### Example responses
@@ -775,7 +775,7 @@ curl -X GET http://coder-server:8080/api/v2/experiments \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /experiments` `GET /api/v2/experiments`
### Example responses ### Example responses
@@ -814,7 +814,7 @@ curl -X GET http://coder-server:8080/api/v2/experiments/available \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /experiments/available` `GET /api/v2/experiments/available`
### Example responses ### Example responses
@@ -852,7 +852,7 @@ curl -X GET http://coder-server:8080/api/v2/updatecheck \
-H 'Accept: application/json' -H 'Accept: application/json'
``` ```
`GET /updatecheck` `GET /api/v2/updatecheck`
### Example responses ### Example responses
@@ -883,7 +883,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/keys/tokens/tokenconfig
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/keys/tokens/tokenconfig` `GET /api/v2/users/{user}/keys/tokens/tokenconfig`
### Parameters ### Parameters
+5 -5
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/external-auth \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /external-auth` `GET /api/v2/external-auth`
### Example responses ### Example responses
@@ -48,7 +48,7 @@ curl -X GET http://coder-server:8080/api/v2/external-auth/{externalauth} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /external-auth/{externalauth}` `GET /api/v2/external-auth/{externalauth}`
### Parameters ### Parameters
@@ -110,7 +110,7 @@ curl -X DELETE http://coder-server:8080/api/v2/external-auth/{externalauth} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`DELETE /external-auth/{externalauth}` `DELETE /api/v2/external-auth/{externalauth}`
### Parameters ### Parameters
@@ -148,7 +148,7 @@ curl -X GET http://coder-server:8080/api/v2/external-auth/{externalauth}/device
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /external-auth/{externalauth}/device` `GET /api/v2/external-auth/{externalauth}/device`
### Parameters ### Parameters
@@ -188,7 +188,7 @@ curl -X POST http://coder-server:8080/api/v2/external-auth/{externalauth}/device
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /external-auth/{externalauth}/device` `POST /api/v2/external-auth/{externalauth}/device`
### Parameters ### Parameters
+1 -1
View File
@@ -10,7 +10,7 @@ curl -X GET http://coder-server:8080/api/v2/init-script/{os}/{arch}
``` ```
`GET /init-script/{os}/{arch}` `GET /api/v2/init-script/{os}/{arch}`
### Parameters ### Parameters
+5 -5
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/insights/daus?tz_offset=0 \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /insights/daus` `GET /api/v2/insights/daus`
### Parameters ### Parameters
@@ -54,7 +54,7 @@ curl -X GET http://coder-server:8080/api/v2/insights/templates?start_time=2019-0
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /insights/templates` `GET /api/v2/insights/templates`
### Parameters ### Parameters
@@ -156,7 +156,7 @@ curl -X GET http://coder-server:8080/api/v2/insights/user-activity?start_time=20
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /insights/user-activity` `GET /api/v2/insights/user-activity`
### Parameters ### Parameters
@@ -212,7 +212,7 @@ curl -X GET http://coder-server:8080/api/v2/insights/user-latency?start_time=201
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /insights/user-latency` `GET /api/v2/insights/user-latency`
### Parameters ### Parameters
@@ -271,7 +271,7 @@ curl -X GET http://coder-server:8080/api/v2/insights/user-status-counts \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /insights/user-status-counts` `GET /api/v2/insights/user-status-counts`
### Parameters ### Parameters
+11 -11
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/members
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}/members` `GET /api/v2/organizations/{organization}/members`
### Parameters ### Parameters
@@ -113,7 +113,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/members
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}/members/roles` `GET /api/v2/organizations/{organization}/members/roles`
### Parameters ### Parameters
@@ -212,7 +212,7 @@ curl -X PUT http://coder-server:8080/api/v2/organizations/{organization}/members
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /organizations/{organization}/members/roles` `PUT /api/v2/organizations/{organization}/members/roles`
> Body parameter > Body parameter
@@ -345,7 +345,7 @@ curl -X POST http://coder-server:8080/api/v2/organizations/{organization}/member
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /organizations/{organization}/members/roles` `POST /api/v2/organizations/{organization}/members/roles`
> Body parameter > Body parameter
@@ -477,7 +477,7 @@ curl -X DELETE http://coder-server:8080/api/v2/organizations/{organization}/memb
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`DELETE /organizations/{organization}/members/roles/{roleName}` `DELETE /api/v2/organizations/{organization}/members/roles/{roleName}`
### Parameters ### Parameters
@@ -572,7 +572,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/members
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}/members/{user}` `GET /api/v2/organizations/{organization}/members/{user}`
### Parameters ### Parameters
@@ -638,7 +638,7 @@ curl -X POST http://coder-server:8080/api/v2/organizations/{organization}/member
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /organizations/{organization}/members/{user}` `POST /api/v2/organizations/{organization}/members/{user}`
### Parameters ### Parameters
@@ -685,7 +685,7 @@ curl -X DELETE http://coder-server:8080/api/v2/organizations/{organization}/memb
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`DELETE /organizations/{organization}/members/{user}` `DELETE /api/v2/organizations/{organization}/members/{user}`
### Parameters ### Parameters
@@ -714,7 +714,7 @@ curl -X PUT http://coder-server:8080/api/v2/organizations/{organization}/members
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /organizations/{organization}/members/{user}/roles` `PUT /api/v2/organizations/{organization}/members/{user}/roles`
> Body parameter > Body parameter
@@ -773,7 +773,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/paginat
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}/paginated-members` `GET /api/v2/organizations/{organization}/paginated-members`
### Parameters ### Parameters
@@ -886,7 +886,7 @@ curl -X GET http://coder-server:8080/api/v2/users/roles \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/roles` `GET /api/v2/users/roles`
### Example responses ### Example responses
+13 -13
View File
@@ -12,7 +12,7 @@ curl -X POST http://coder-server:8080/api/v2/notifications/custom \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /notifications/custom` `POST /api/v2/notifications/custom`
> Body parameter > Body parameter
@@ -70,7 +70,7 @@ curl -X GET http://coder-server:8080/api/v2/notifications/dispatch-methods \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /notifications/dispatch-methods` `GET /api/v2/notifications/dispatch-methods`
### Example responses ### Example responses
@@ -116,7 +116,7 @@ curl -X GET http://coder-server:8080/api/v2/notifications/inbox \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /notifications/inbox` `GET /api/v2/notifications/inbox`
### Parameters ### Parameters
@@ -176,7 +176,7 @@ curl -X PUT http://coder-server:8080/api/v2/notifications/inbox/mark-all-as-read
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /notifications/inbox/mark-all-as-read` `PUT /api/v2/notifications/inbox/mark-all-as-read`
### Responses ### Responses
@@ -197,7 +197,7 @@ curl -X GET http://coder-server:8080/api/v2/notifications/inbox/watch \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /notifications/inbox/watch` `GET /api/v2/notifications/inbox/watch`
### Parameters ### Parameters
@@ -262,7 +262,7 @@ curl -X PUT http://coder-server:8080/api/v2/notifications/inbox/{id}/read-status
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /notifications/inbox/{id}/read-status` `PUT /api/v2/notifications/inbox/{id}/read-status`
### Parameters ### Parameters
@@ -306,7 +306,7 @@ curl -X GET http://coder-server:8080/api/v2/notifications/settings \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /notifications/settings` `GET /api/v2/notifications/settings`
### Example responses ### Example responses
@@ -338,7 +338,7 @@ curl -X PUT http://coder-server:8080/api/v2/notifications/settings \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /notifications/settings` `PUT /api/v2/notifications/settings`
> Body parameter > Body parameter
@@ -384,7 +384,7 @@ curl -X GET http://coder-server:8080/api/v2/notifications/templates/custom \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /notifications/templates/custom` `GET /api/v2/notifications/templates/custom`
### Example responses ### Example responses
@@ -443,7 +443,7 @@ curl -X GET http://coder-server:8080/api/v2/notifications/templates/system \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /notifications/templates/system` `GET /api/v2/notifications/templates/system`
### Example responses ### Example responses
@@ -501,7 +501,7 @@ curl -X POST http://coder-server:8080/api/v2/notifications/test \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /notifications/test` `POST /api/v2/notifications/test`
### Responses ### Responses
@@ -522,7 +522,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/notifications/preferenc
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/notifications/preferences` `GET /api/v2/users/{user}/notifications/preferences`
### Parameters ### Parameters
@@ -575,7 +575,7 @@ curl -X PUT http://coder-server:8080/api/v2/users/{user}/notifications/preferenc
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /users/{user}/notifications/preferences` `PUT /api/v2/users/{user}/notifications/preferences`
> Body parameter > Body parameter
+7 -7
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations` `GET /api/v2/organizations`
### Example responses ### Example responses
@@ -68,7 +68,7 @@ curl -X POST http://coder-server:8080/api/v2/organizations \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /organizations` `POST /api/v2/organizations`
> Body parameter > Body parameter
@@ -123,7 +123,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}` `GET /api/v2/organizations/{organization}`
### Parameters ### Parameters
@@ -167,7 +167,7 @@ curl -X DELETE http://coder-server:8080/api/v2/organizations/{organization} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`DELETE /organizations/{organization}` `DELETE /api/v2/organizations/{organization}`
### Parameters ### Parameters
@@ -212,7 +212,7 @@ curl -X PATCH http://coder-server:8080/api/v2/organizations/{organization} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PATCH /organizations/{organization}` `PATCH /api/v2/organizations/{organization}`
> Body parameter > Body parameter
@@ -268,7 +268,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}/provisionerjobs` `GET /api/v2/organizations/{organization}/provisionerjobs`
### Parameters ### Parameters
@@ -406,7 +406,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}/provisionerjobs/{job}` `GET /api/v2/organizations/{organization}/provisionerjobs/{job}`
### Parameters ### Parameters
+3 -3
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaces/{workspace}/port-share \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaces/{workspace}/port-share` `GET /api/v2/workspaces/{workspace}/port-share`
### Parameters ### Parameters
@@ -57,7 +57,7 @@ curl -X POST http://coder-server:8080/api/v2/workspaces/{workspace}/port-share \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /workspaces/{workspace}/port-share` `POST /api/v2/workspaces/{workspace}/port-share`
> Body parameter > Body parameter
@@ -110,7 +110,7 @@ curl -X DELETE http://coder-server:8080/api/v2/workspaces/{workspace}/port-share
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`DELETE /workspaces/{workspace}/port-share` `DELETE /api/v2/workspaces/{workspace}/port-share`
> Body parameter > Body parameter
+2 -2
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/prebuilds/settings \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /prebuilds/settings` `GET /api/v2/prebuilds/settings`
### Example responses ### Example responses
@@ -43,7 +43,7 @@ curl -X PUT http://coder-server:8080/api/v2/prebuilds/settings \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /prebuilds/settings` `PUT /api/v2/prebuilds/settings`
> Body parameter > Body parameter
+1 -1
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}/provisionerdaemons` `GET /api/v2/organizations/{organization}/provisionerdaemons`
### Parameters ### Parameters
+5 -5
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/secrets \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/secrets` `GET /api/v2/users/{user}/secrets`
### Parameters ### Parameters
@@ -72,7 +72,7 @@ curl -X POST http://coder-server:8080/api/v2/users/{user}/secrets \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /users/{user}/secrets` `POST /api/v2/users/{user}/secrets`
> Body parameter > Body parameter
@@ -128,7 +128,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/secrets/{name} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/secrets/{name}` `GET /api/v2/users/{user}/secrets/{name}`
### Parameters ### Parameters
@@ -171,7 +171,7 @@ curl -X DELETE http://coder-server:8080/api/v2/users/{user}/secrets/{name} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`DELETE /users/{user}/secrets/{name}` `DELETE /api/v2/users/{user}/secrets/{name}`
### Parameters ### Parameters
@@ -200,7 +200,7 @@ curl -X PATCH http://coder-server:8080/api/v2/users/{user}/secrets/{name} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PATCH /users/{user}/secrets/{name}` `PATCH /api/v2/users/{user}/secrets/{name}`
> Body parameter > Body parameter
+10 -10
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/tasks \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /tasks` `GET /api/v2/tasks`
### Parameters ### Parameters
@@ -95,7 +95,7 @@ curl -X POST http://coder-server:8080/api/v2/tasks/{user} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /tasks/{user}` `POST /api/v2/tasks/{user}`
> Body parameter > Body parameter
@@ -186,7 +186,7 @@ curl -X GET http://coder-server:8080/api/v2/tasks/{user}/{task} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /tasks/{user}/{task}` `GET /api/v2/tasks/{user}/{task}`
### Parameters ### Parameters
@@ -264,7 +264,7 @@ curl -X DELETE http://coder-server:8080/api/v2/tasks/{user}/{task} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`DELETE /tasks/{user}/{task}` `DELETE /api/v2/tasks/{user}/{task}`
### Parameters ### Parameters
@@ -292,7 +292,7 @@ curl -X PATCH http://coder-server:8080/api/v2/tasks/{user}/{task}/input \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PATCH /tasks/{user}/{task}/input` `PATCH /api/v2/tasks/{user}/{task}/input`
> Body parameter > Body parameter
@@ -329,7 +329,7 @@ curl -X GET http://coder-server:8080/api/v2/tasks/{user}/{task}/logs \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /tasks/{user}/{task}/logs` `GET /api/v2/tasks/{user}/{task}/logs`
### Parameters ### Parameters
@@ -376,7 +376,7 @@ curl -X POST http://coder-server:8080/api/v2/tasks/{user}/{task}/pause \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /tasks/{user}/{task}/pause` `POST /api/v2/tasks/{user}/{task}/pause`
### Parameters ### Parameters
@@ -622,7 +622,7 @@ curl -X POST http://coder-server:8080/api/v2/tasks/{user}/{task}/resume \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /tasks/{user}/{task}/resume` `POST /api/v2/tasks/{user}/{task}/resume`
### Parameters ### Parameters
@@ -868,7 +868,7 @@ curl -X POST http://coder-server:8080/api/v2/tasks/{user}/{task}/send \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /tasks/{user}/{task}/send` `POST /api/v2/tasks/{user}/{task}/send`
> Body parameter > Body parameter
@@ -905,7 +905,7 @@ curl -X POST http://coder-server:8080/api/v2/workspaceagents/me/tasks/{task}/log
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /workspaceagents/me/tasks/{task}/log-snapshot` `POST /api/v2/workspaceagents/me/tasks/{task}/log-snapshot`
> Body parameter > Body parameter
+38 -38
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/templat
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}/templates` `GET /api/v2/organizations/{organization}/templates`
Returns a list of templates for the specified organization. Returns a list of templates for the specified organization.
By default, only non-deprecated templates are returned. By default, only non-deprecated templates are returned.
@@ -165,7 +165,7 @@ curl -X POST http://coder-server:8080/api/v2/organizations/{organization}/templa
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /organizations/{organization}/templates` `POST /api/v2/organizations/{organization}/templates`
> Body parameter > Body parameter
@@ -291,7 +291,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/templat
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}/templates/examples` `GET /api/v2/organizations/{organization}/templates/examples`
### Parameters ### Parameters
@@ -353,7 +353,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/templat
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}/templates/{templatename}` `GET /api/v2/organizations/{organization}/templates/{templatename}`
### Parameters ### Parameters
@@ -443,7 +443,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/templat
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}/templates/{templatename}/versions/{templateversionname}` `GET /api/v2/organizations/{organization}/templates/{templatename}/versions/{templateversionname}`
### Parameters ### Parameters
@@ -546,7 +546,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/templat
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}/templates/{templatename}/versions/{templateversionname}/previous` `GET /api/v2/organizations/{organization}/templates/{templatename}/versions/{templateversionname}/previous`
### Parameters ### Parameters
@@ -651,7 +651,7 @@ curl -X POST http://coder-server:8080/api/v2/organizations/{organization}/templa
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /organizations/{organization}/templateversions` `POST /api/v2/organizations/{organization}/templateversions`
> Body parameter > Body parameter
@@ -777,7 +777,7 @@ curl -X GET http://coder-server:8080/api/v2/templates \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templates` `GET /api/v2/templates`
Returns a list of templates. Returns a list of templates.
By default, only non-deprecated templates are returned. By default, only non-deprecated templates are returned.
@@ -924,7 +924,7 @@ curl -X GET http://coder-server:8080/api/v2/templates/examples \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templates/examples` `GET /api/v2/templates/examples`
### Example responses ### Example responses
@@ -980,7 +980,7 @@ curl -X GET http://coder-server:8080/api/v2/templates/{template} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templates/{template}` `GET /api/v2/templates/{template}`
### Parameters ### Parameters
@@ -1069,7 +1069,7 @@ curl -X DELETE http://coder-server:8080/api/v2/templates/{template} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`DELETE /templates/{template}` `DELETE /api/v2/templates/{template}`
### Parameters ### Parameters
@@ -1114,7 +1114,7 @@ curl -X PATCH http://coder-server:8080/api/v2/templates/{template} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PATCH /templates/{template}` `PATCH /api/v2/templates/{template}`
> Body parameter > Body parameter
@@ -1243,7 +1243,7 @@ curl -X GET http://coder-server:8080/api/v2/templates/{template}/daus \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templates/{template}/daus` `GET /api/v2/templates/{template}/daus`
### Parameters ### Parameters
@@ -1286,7 +1286,7 @@ curl -X GET http://coder-server:8080/api/v2/templates/{template}/versions \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templates/{template}/versions` `GET /api/v2/templates/{template}/versions`
### Parameters ### Parameters
@@ -1465,7 +1465,7 @@ curl -X PATCH http://coder-server:8080/api/v2/templates/{template}/versions \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PATCH /templates/{template}/versions` `PATCH /api/v2/templates/{template}/versions`
> Body parameter > Body parameter
@@ -1519,7 +1519,7 @@ curl -X POST http://coder-server:8080/api/v2/templates/{template}/versions/archi
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /templates/{template}/versions/archive` `POST /api/v2/templates/{template}/versions/archive`
> Body parameter > Body parameter
@@ -1572,7 +1572,7 @@ curl -X GET http://coder-server:8080/api/v2/templates/{template}/versions/{templ
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templates/{template}/versions/{templateversionname}` `GET /api/v2/templates/{template}/versions/{templateversionname}`
### Parameters ### Parameters
@@ -1747,7 +1747,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}` `GET /api/v2/templateversions/{templateversion}`
### Parameters ### Parameters
@@ -1849,7 +1849,7 @@ curl -X PATCH http://coder-server:8080/api/v2/templateversions/{templateversion}
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PATCH /templateversions/{templateversion}` `PATCH /api/v2/templateversions/{templateversion}`
> Body parameter > Body parameter
@@ -1960,7 +1960,7 @@ curl -X POST http://coder-server:8080/api/v2/templateversions/{templateversion}/
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /templateversions/{templateversion}/archive` `POST /api/v2/templateversions/{templateversion}/archive`
### Parameters ### Parameters
@@ -2004,7 +2004,7 @@ curl -X PATCH http://coder-server:8080/api/v2/templateversions/{templateversion}
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PATCH /templateversions/{templateversion}/cancel` `PATCH /api/v2/templateversions/{templateversion}/cancel`
### Parameters ### Parameters
@@ -2049,7 +2049,7 @@ curl -X POST http://coder-server:8080/api/v2/templateversions/{templateversion}/
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /templateversions/{templateversion}/dry-run` `POST /api/v2/templateversions/{templateversion}/dry-run`
> Body parameter > Body parameter
@@ -2145,7 +2145,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/d
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}/dry-run/{jobID}` `GET /api/v2/templateversions/{templateversion}/dry-run/{jobID}`
### Parameters ### Parameters
@@ -2221,7 +2221,7 @@ curl -X PATCH http://coder-server:8080/api/v2/templateversions/{templateversion}
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PATCH /templateversions/{templateversion}/dry-run/{jobID}/cancel` `PATCH /api/v2/templateversions/{templateversion}/dry-run/{jobID}/cancel`
### Parameters ### Parameters
@@ -2266,7 +2266,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/d
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}/dry-run/{jobID}/logs` `GET /api/v2/templateversions/{templateversion}/dry-run/{jobID}/logs`
### Parameters ### Parameters
@@ -2342,7 +2342,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/d
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}/dry-run/{jobID}/matched-provisioners` `GET /api/v2/templateversions/{templateversion}/dry-run/{jobID}/matched-provisioners`
### Parameters ### Parameters
@@ -2382,7 +2382,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/d
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}/dry-run/{jobID}/resources` `GET /api/v2/templateversions/{templateversion}/dry-run/{jobID}/resources`
### Parameters ### Parameters
@@ -2678,7 +2678,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/d
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}/dynamic-parameters` `GET /api/v2/templateversions/{templateversion}/dynamic-parameters`
### Parameters ### Parameters
@@ -2706,7 +2706,7 @@ curl -X POST http://coder-server:8080/api/v2/templateversions/{templateversion}/
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /templateversions/{templateversion}/dynamic-parameters/evaluate` `POST /api/v2/templateversions/{templateversion}/dynamic-parameters/evaluate`
> Body parameter > Body parameter
@@ -2833,7 +2833,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/e
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}/external-auth` `GET /api/v2/templateversions/{templateversion}/external-auth`
### Parameters ### Parameters
@@ -2893,7 +2893,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/l
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}/logs` `GET /api/v2/templateversions/{templateversion}/logs`
### Parameters ### Parameters
@@ -2967,7 +2967,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/p
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}/parameters` `GET /api/v2/templateversions/{templateversion}/parameters`
### Parameters ### Parameters
@@ -2994,7 +2994,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/p
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}/presets` `GET /api/v2/templateversions/{templateversion}/presets`
### Parameters ### Parameters
@@ -3061,7 +3061,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/r
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}/resources` `GET /api/v2/templateversions/{templateversion}/resources`
### Parameters ### Parameters
@@ -3357,7 +3357,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/r
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}/rich-parameters` `GET /api/v2/templateversions/{templateversion}/rich-parameters`
### Parameters ### Parameters
@@ -3455,7 +3455,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/s
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}/schema` `GET /api/v2/templateversions/{templateversion}/schema`
### Parameters ### Parameters
@@ -3482,7 +3482,7 @@ curl -X POST http://coder-server:8080/api/v2/templateversions/{templateversion}/
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /templateversions/{templateversion}/unarchive` `POST /api/v2/templateversions/{templateversion}/unarchive`
### Parameters ### Parameters
@@ -3526,7 +3526,7 @@ curl -X GET http://coder-server:8080/api/v2/templateversions/{templateversion}/v
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /templateversions/{templateversion}/variables` `GET /api/v2/templateversions/{templateversion}/variables`
### Parameters ### Parameters
+35 -35
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/users \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users` `GET /api/v2/users`
### Parameters ### Parameters
@@ -79,7 +79,7 @@ curl -X POST http://coder-server:8080/api/v2/users \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /users` `POST /api/v2/users`
> Body parameter > Body parameter
@@ -158,7 +158,7 @@ curl -X GET http://coder-server:8080/api/v2/users/authmethods \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/authmethods` `GET /api/v2/users/authmethods`
### Example responses ### Example responses
@@ -201,7 +201,7 @@ curl -X GET http://coder-server:8080/api/v2/users/first \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/first` `GET /api/v2/users/first`
### Example responses ### Example responses
@@ -240,7 +240,7 @@ curl -X POST http://coder-server:8080/api/v2/users/first \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /users/first` `POST /api/v2/users/first`
> Body parameter > Body parameter
@@ -303,7 +303,7 @@ curl -X POST http://coder-server:8080/api/v2/users/logout \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /users/logout` `POST /api/v2/users/logout`
### Example responses ### Example responses
@@ -340,7 +340,7 @@ curl -X GET http://coder-server:8080/api/v2/users/oauth2/github/callback \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/oauth2/github/callback` `GET /api/v2/users/oauth2/github/callback`
### Responses ### Responses
@@ -361,7 +361,7 @@ curl -X GET http://coder-server:8080/api/v2/users/oauth2/github/device \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/oauth2/github/device` `GET /api/v2/users/oauth2/github/device`
### Example responses ### Example responses
@@ -396,7 +396,7 @@ curl -X GET http://coder-server:8080/api/v2/users/oidc-claims \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/oidc-claims` `GET /api/v2/users/oidc-claims`
### Example responses ### Example responses
@@ -426,7 +426,7 @@ curl -X GET http://coder-server:8080/api/v2/users/oidc/callback \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/oidc/callback` `GET /api/v2/users/oidc/callback`
### Responses ### Responses
@@ -447,7 +447,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}` `GET /api/v2/users/{user}`
### Parameters ### Parameters
@@ -505,7 +505,7 @@ curl -X DELETE http://coder-server:8080/api/v2/users/{user} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`DELETE /users/{user}` `DELETE /api/v2/users/{user}`
### Parameters ### Parameters
@@ -532,7 +532,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/appearance \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/appearance` `GET /api/v2/users/{user}/appearance`
### Parameters ### Parameters
@@ -571,7 +571,7 @@ curl -X PUT http://coder-server:8080/api/v2/users/{user}/appearance \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /users/{user}/appearance` `PUT /api/v2/users/{user}/appearance`
> Body parameter > Body parameter
@@ -619,7 +619,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/autofill-parameters?tem
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/autofill-parameters` `GET /api/v2/users/{user}/autofill-parameters`
### Parameters ### Parameters
@@ -670,7 +670,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/gitsshkey \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/gitsshkey` `GET /api/v2/users/{user}/gitsshkey`
### Parameters ### Parameters
@@ -710,7 +710,7 @@ curl -X PUT http://coder-server:8080/api/v2/users/{user}/gitsshkey \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /users/{user}/gitsshkey` `PUT /api/v2/users/{user}/gitsshkey`
### Parameters ### Parameters
@@ -750,7 +750,7 @@ curl -X POST http://coder-server:8080/api/v2/users/{user}/keys \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /users/{user}/keys` `POST /api/v2/users/{user}/keys`
### Parameters ### Parameters
@@ -787,7 +787,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/keys/tokens \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/keys/tokens` `GET /api/v2/users/{user}/keys/tokens`
### Parameters ### Parameters
@@ -876,7 +876,7 @@ curl -X POST http://coder-server:8080/api/v2/users/{user}/keys/tokens \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /users/{user}/keys/tokens` `POST /api/v2/users/{user}/keys/tokens`
> Body parameter > Body parameter
@@ -933,7 +933,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/keys/tokens/{keyname} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/keys/tokens/{keyname}` `GET /api/v2/users/{user}/keys/tokens/{keyname}`
### Parameters ### Parameters
@@ -989,7 +989,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/keys/{keyid} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/keys/{keyid}` `GET /api/v2/users/{user}/keys/{keyid}`
### Parameters ### Parameters
@@ -1044,7 +1044,7 @@ curl -X DELETE http://coder-server:8080/api/v2/users/{user}/keys/{keyid} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`DELETE /users/{user}/keys/{keyid}` `DELETE /api/v2/users/{user}/keys/{keyid}`
### Parameters ### Parameters
@@ -1072,7 +1072,7 @@ curl -X PUT http://coder-server:8080/api/v2/users/{user}/keys/{keyid}/expire \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /users/{user}/keys/{keyid}/expire` `PUT /api/v2/users/{user}/keys/{keyid}/expire`
### Parameters ### Parameters
@@ -1106,7 +1106,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/login-type \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/login-type` `GET /api/v2/users/{user}/login-type`
### Parameters ### Parameters
@@ -1143,7 +1143,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/organizations \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/organizations` `GET /api/v2/users/{user}/organizations`
### Parameters ### Parameters
@@ -1205,7 +1205,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/organizations/{organiza
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/organizations/{organizationname}` `GET /api/v2/users/{user}/organizations/{organizationname}`
### Parameters ### Parameters
@@ -1250,7 +1250,7 @@ curl -X PUT http://coder-server:8080/api/v2/users/{user}/password \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /users/{user}/password` `PUT /api/v2/users/{user}/password`
> Body parameter > Body parameter
@@ -1287,7 +1287,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/preferences \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/preferences` `GET /api/v2/users/{user}/preferences`
### Parameters ### Parameters
@@ -1326,7 +1326,7 @@ curl -X PUT http://coder-server:8080/api/v2/users/{user}/preferences \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /users/{user}/preferences` `PUT /api/v2/users/{user}/preferences`
> Body parameter > Body parameter
@@ -1375,7 +1375,7 @@ curl -X PUT http://coder-server:8080/api/v2/users/{user}/profile \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /users/{user}/profile` `PUT /api/v2/users/{user}/profile`
> Body parameter > Body parameter
@@ -1444,7 +1444,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/roles \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/roles` `GET /api/v2/users/{user}/roles`
### Parameters ### Parameters
@@ -1504,7 +1504,7 @@ curl -X PUT http://coder-server:8080/api/v2/users/{user}/roles \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /users/{user}/roles` `PUT /api/v2/users/{user}/roles`
> Body parameter > Body parameter
@@ -1574,7 +1574,7 @@ curl -X PUT http://coder-server:8080/api/v2/users/{user}/status/activate \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /users/{user}/status/activate` `PUT /api/v2/users/{user}/status/activate`
### Parameters ### Parameters
@@ -1633,7 +1633,7 @@ curl -X PUT http://coder-server:8080/api/v2/users/{user}/status/suspend \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /users/{user}/status/suspend` `PUT /api/v2/users/{user}/status/suspend`
### Parameters ### Parameters
+1 -1
View File
@@ -11,7 +11,7 @@ curl -X GET http://coder-server:8080/api/v2/regions \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /regions` `GET /api/v2/regions`
### Example responses ### Example responses
+22 -22
View File
@@ -12,7 +12,7 @@ curl -X POST http://coder-server:8080/api/v2/organizations/{organization}/member
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /organizations/{organization}/members/{user}/workspaces` `POST /api/v2/organizations/{organization}/members/{user}/workspaces`
Create a new workspace using a template. The request must Create a new workspace using a template. The request must
specify either the Template ID or the Template Version ID, specify either the Template ID or the Template Version ID,
@@ -345,7 +345,7 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/members
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /organizations/{organization}/members/{user}/workspaces/available-users` `GET /api/v2/organizations/{organization}/members/{user}/workspaces/available-users`
### Parameters ### Parameters
@@ -403,7 +403,7 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/workspace/{workspacenam
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /users/{user}/workspace/{workspacename}` `GET /api/v2/users/{user}/workspace/{workspacename}`
### Parameters ### Parameters
@@ -712,7 +712,7 @@ curl -X POST http://coder-server:8080/api/v2/users/{user}/workspaces \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /users/{user}/workspaces` `POST /api/v2/users/{user}/workspaces`
Create a new workspace using a template. The request must Create a new workspace using a template. The request must
specify either the Template ID or the Template Version ID, specify either the Template ID or the Template Version ID,
@@ -1044,7 +1044,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaces \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaces` `GET /api/v2/workspaces`
### Parameters ### Parameters
@@ -1340,7 +1340,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaces/{workspace} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaces/{workspace}` `GET /api/v2/workspaces/{workspace}`
### Parameters ### Parameters
@@ -1647,7 +1647,7 @@ curl -X PATCH http://coder-server:8080/api/v2/workspaces/{workspace} \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PATCH /workspaces/{workspace}` `PATCH /api/v2/workspaces/{workspace}`
> Body parameter > Body parameter
@@ -1683,7 +1683,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaces/{workspace}/acl \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaces/{workspace}/acl` `GET /api/v2/workspaces/{workspace}/acl`
### Parameters ### Parameters
@@ -1758,7 +1758,7 @@ curl -X DELETE http://coder-server:8080/api/v2/workspaces/{workspace}/acl \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`DELETE /workspaces/{workspace}/acl` `DELETE /api/v2/workspaces/{workspace}/acl`
### Parameters ### Parameters
@@ -1785,7 +1785,7 @@ curl -X PATCH http://coder-server:8080/api/v2/workspaces/{workspace}/acl \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PATCH /workspaces/{workspace}/acl` `PATCH /api/v2/workspaces/{workspace}/acl`
> Body parameter > Body parameter
@@ -1828,7 +1828,7 @@ curl -X PUT http://coder-server:8080/api/v2/workspaces/{workspace}/autostart \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /workspaces/{workspace}/autostart` `PUT /api/v2/workspaces/{workspace}/autostart`
> Body parameter > Body parameter
@@ -1864,7 +1864,7 @@ curl -X PUT http://coder-server:8080/api/v2/workspaces/{workspace}/autoupdates \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /workspaces/{workspace}/autoupdates` `PUT /api/v2/workspaces/{workspace}/autoupdates`
> Body parameter > Body parameter
@@ -1901,7 +1901,7 @@ curl -X PUT http://coder-server:8080/api/v2/workspaces/{workspace}/dormant \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /workspaces/{workspace}/dormant` `PUT /api/v2/workspaces/{workspace}/dormant`
> Body parameter > Body parameter
@@ -2217,7 +2217,7 @@ curl -X PUT http://coder-server:8080/api/v2/workspaces/{workspace}/extend \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /workspaces/{workspace}/extend` `PUT /api/v2/workspaces/{workspace}/extend`
> Body parameter > Body parameter
@@ -2269,7 +2269,7 @@ curl -X PUT http://coder-server:8080/api/v2/workspaces/{workspace}/favorite \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /workspaces/{workspace}/favorite` `PUT /api/v2/workspaces/{workspace}/favorite`
### Parameters ### Parameters
@@ -2295,7 +2295,7 @@ curl -X DELETE http://coder-server:8080/api/v2/workspaces/{workspace}/favorite \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`DELETE /workspaces/{workspace}/favorite` `DELETE /api/v2/workspaces/{workspace}/favorite`
### Parameters ### Parameters
@@ -2322,7 +2322,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaces/{workspace}/resolve-autos
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaces/{workspace}/resolve-autostart` `GET /api/v2/workspaces/{workspace}/resolve-autostart`
### Parameters ### Parameters
@@ -2359,7 +2359,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaces/{workspace}/timings \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaces/{workspace}/timings` `GET /api/v2/workspaces/{workspace}/timings`
### Parameters ### Parameters
@@ -2427,7 +2427,7 @@ curl -X PUT http://coder-server:8080/api/v2/workspaces/{workspace}/ttl \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`PUT /workspaces/{workspace}/ttl` `PUT /api/v2/workspaces/{workspace}/ttl`
> Body parameter > Body parameter
@@ -2463,7 +2463,7 @@ curl -X POST http://coder-server:8080/api/v2/workspaces/{workspace}/usage \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`POST /workspaces/{workspace}/usage` `POST /api/v2/workspaces/{workspace}/usage`
> Body parameter > Body parameter
@@ -2500,7 +2500,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaces/{workspace}/watch \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaces/{workspace}/watch` `GET /api/v2/workspaces/{workspace}/watch`
### Parameters ### Parameters
@@ -2531,7 +2531,7 @@ curl -X GET http://coder-server:8080/api/v2/workspaces/{workspace}/watch-ws \
-H 'Coder-Session-Token: API_KEY' -H 'Coder-Session-Token: API_KEY'
``` ```
`GET /workspaces/{workspace}/watch-ws` `GET /api/v2/workspaces/{workspace}/watch-ws`
### Parameters ### Parameters
+5 -5
View File
@@ -107,7 +107,7 @@ func aibridgeHandler(api *API, middlewares ...func(http.Handler) http.Handler) f
// @Param after_id query string false "Cursor pagination after ID (cannot be used with offset)" // @Param after_id query string false "Cursor pagination after ID (cannot be used with offset)"
// @Param offset query int false "Offset pagination (cannot be used with after_id)" // @Param offset query int false "Offset pagination (cannot be used with after_id)"
// @Success 200 {object} codersdk.AIBridgeListInterceptionsResponse // @Success 200 {object} codersdk.AIBridgeListInterceptionsResponse
// @Router /aibridge/interceptions [get] // @Router /api/v2/aibridge/interceptions [get]
// @Deprecated Use /aibridge/sessions instead. // @Deprecated Use /aibridge/sessions instead.
func (api *API) aiBridgeListInterceptions(rw http.ResponseWriter, r *http.Request) { func (api *API) aiBridgeListInterceptions(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -221,7 +221,7 @@ func (api *API) aiBridgeListInterceptions(rw http.ResponseWriter, r *http.Reques
// @Param after_session_id query string false "Cursor pagination after session ID (cannot be used with offset)" // @Param after_session_id query string false "Cursor pagination after session ID (cannot be used with offset)"
// @Param offset query int false "Offset pagination (cannot be used with after_session_id)" // @Param offset query int false "Offset pagination (cannot be used with after_session_id)"
// @Success 200 {object} codersdk.AIBridgeListSessionsResponse // @Success 200 {object} codersdk.AIBridgeListSessionsResponse
// @Router /aibridge/sessions [get] // @Router /api/v2/aibridge/sessions [get]
func (api *API) aiBridgeListSessions(rw http.ResponseWriter, r *http.Request) { func (api *API) aiBridgeListSessions(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
apiKey := httpmw.APIKey(r) apiKey := httpmw.APIKey(r)
@@ -346,7 +346,7 @@ func (api *API) aiBridgeListSessions(rw http.ResponseWriter, r *http.Request) {
// @Param before_id query string false "Thread pagination cursor (backward/newer)" // @Param before_id query string false "Thread pagination cursor (backward/newer)"
// @Param limit query int false "Number of threads per page (default 50)" // @Param limit query int false "Number of threads per page (default 50)"
// @Success 200 {object} codersdk.AIBridgeSessionThreadsResponse // @Success 200 {object} codersdk.AIBridgeSessionThreadsResponse
// @Router /aibridge/sessions/{session_id} [get] // @Router /api/v2/aibridge/sessions/{session_id} [get]
func (api *API) aiBridgeGetSessionThreads(rw http.ResponseWriter, r *http.Request) { func (api *API) aiBridgeGetSessionThreads(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -533,7 +533,7 @@ func (api *API) aiBridgeGetSessionThreads(rw http.ResponseWriter, r *http.Reques
// @Produce json // @Produce json
// @Tags AI Bridge // @Tags AI Bridge
// @Success 200 {array} string // @Success 200 {array} string
// @Router /aibridge/models [get] // @Router /api/v2/aibridge/models [get]
func (api *API) aiBridgeListModels(rw http.ResponseWriter, r *http.Request) { func (api *API) aiBridgeListModels(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -585,7 +585,7 @@ func (api *API) aiBridgeListModels(rw http.ResponseWriter, r *http.Request) {
// @Produce json // @Produce json
// @Tags AI Bridge // @Tags AI Bridge
// @Success 200 {array} string // @Success 200 {array} string
// @Router /aibridge/clients [get] // @Router /api/v2/aibridge/clients [get]
func (api *API) aiBridgeListClients(rw http.ResponseWriter, r *http.Request) { func (api *API) aiBridgeListClients(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+2 -2
View File
@@ -26,7 +26,7 @@ import (
// @Produce json // @Produce json
// @Tags Enterprise // @Tags Enterprise
// @Success 200 {object} codersdk.AppearanceConfig // @Success 200 {object} codersdk.AppearanceConfig
// @Router /appearance [get] // @Router /api/v2/appearance [get]
func (api *API) appearance(rw http.ResponseWriter, r *http.Request) { func (api *API) appearance(rw http.ResponseWriter, r *http.Request) {
af := *api.AGPL.AppearanceFetcher.Load() af := *api.AGPL.AppearanceFetcher.Load()
cfg, err := af.Fetch(r.Context()) cfg, err := af.Fetch(r.Context())
@@ -141,7 +141,7 @@ func validateHexColor(color string) error {
// @Tags Enterprise // @Tags Enterprise
// @Param request body codersdk.UpdateAppearanceConfig true "Update appearance request" // @Param request body codersdk.UpdateAppearanceConfig true "Update appearance request"
// @Success 200 {object} codersdk.UpdateAppearanceConfig // @Success 200 {object} codersdk.UpdateAppearanceConfig
// @Router /appearance [put] // @Router /api/v2/appearance [put]
func (api *API) putAppearance(rw http.ResponseWriter, r *http.Request) { func (api *API) putAppearance(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+1 -1
View File
@@ -1288,7 +1288,7 @@ func derpMapper(logger slog.Logger, proxyHealth *proxyhealth.ProxyHealth) func(*
// @Produce json // @Produce json
// @Tags Enterprise // @Tags Enterprise
// @Success 200 {object} codersdk.Entitlements // @Success 200 {object} codersdk.Entitlements
// @Router /entitlements [get] // @Router /api/v2/entitlements [get]
func (api *API) serveEntitlements(rw http.ResponseWriter, r *http.Request) { func (api *API) serveEntitlements(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
httpapi.Write(ctx, rw, http.StatusOK, api.Entitlements.AsJSON()) httpapi.Write(ctx, rw, http.StatusOK, api.Entitlements.AsJSON())
@@ -18,5 +18,5 @@ func TestEnterpriseEndpointsDocumented(t *testing.T) {
//nolint: dogsled //nolint: dogsled
_, _, api, _ := coderdenttest.NewWithAPI(t, nil) _, _, api, _ := coderdenttest.NewWithAPI(t, nil)
coderdtest.VerifySwaggerDefinitions(t, api.AGPL.APIHandler, swaggerComments) coderdtest.VerifySwaggerDefinitions(t, api.AGPL.APIHandler, swaggerComments, coderdtest.WithSwaggerRoutePrefix("/api/v2"))
} }
+1 -1
View File
@@ -28,7 +28,7 @@ const connectionLogCountCap = 2000
// @Param limit query int true "Page limit" // @Param limit query int true "Page limit"
// @Param offset query int false "Page offset" // @Param offset query int false "Page offset"
// @Success 200 {object} codersdk.ConnectionLogResponse // @Success 200 {object} codersdk.ConnectionLogResponse
// @Router /connectionlog [get] // @Router /api/v2/connectionlog [get]
func (api *API) connectionLogs(rw http.ResponseWriter, r *http.Request) { func (api *API) connectionLogs(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
apiKey := httpmw.APIKey(r) apiKey := httpmw.APIKey(r)
+9 -9
View File
@@ -29,7 +29,7 @@ import (
// @Param request body codersdk.CreateGroupRequest true "Create group request" // @Param request body codersdk.CreateGroupRequest true "Create group request"
// @Param organization path string true "Organization ID" // @Param organization path string true "Organization ID"
// @Success 201 {object} codersdk.Group // @Success 201 {object} codersdk.Group
// @Router /organizations/{organization}/groups [post] // @Router /api/v2/organizations/{organization}/groups [post]
func (api *API) postGroupByOrganization(rw http.ResponseWriter, r *http.Request) { func (api *API) postGroupByOrganization(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -98,7 +98,7 @@ func (api *API) postGroupByOrganization(rw http.ResponseWriter, r *http.Request)
// @Param group path string true "Group name" // @Param group path string true "Group name"
// @Param request body codersdk.PatchGroupRequest true "Patch group request" // @Param request body codersdk.PatchGroupRequest true "Patch group request"
// @Success 200 {object} codersdk.Group // @Success 200 {object} codersdk.Group
// @Router /groups/{group} [patch] // @Router /api/v2/groups/{group} [patch]
func (api *API) patchGroup(rw http.ResponseWriter, r *http.Request) { func (api *API) patchGroup(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -332,7 +332,7 @@ func (api *API) patchGroup(rw http.ResponseWriter, r *http.Request) {
// @Tags Enterprise // @Tags Enterprise
// @Param group path string true "Group name" // @Param group path string true "Group name"
// @Success 200 {object} codersdk.Group // @Success 200 {object} codersdk.Group
// @Router /groups/{group} [delete] // @Router /api/v2/groups/{group} [delete]
func (api *API) deleteGroup(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteGroup(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -385,7 +385,7 @@ func (api *API) deleteGroup(rw http.ResponseWriter, r *http.Request) {
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Param groupName path string true "Group name" // @Param groupName path string true "Group name"
// @Success 200 {object} codersdk.Group // @Success 200 {object} codersdk.Group
// @Router /organizations/{organization}/groups/{groupName} [get] // @Router /api/v2/organizations/{organization}/groups/{groupName} [get]
func (api *API) groupByOrganization(rw http.ResponseWriter, r *http.Request) { func (api *API) groupByOrganization(rw http.ResponseWriter, r *http.Request) {
api.group(rw, r) api.group(rw, r)
} }
@@ -398,7 +398,7 @@ func (api *API) groupByOrganization(rw http.ResponseWriter, r *http.Request) {
// @Param group path string true "Group id" // @Param group path string true "Group id"
// @Param exclude_members query bool false "Exclude members from the response" // @Param exclude_members query bool false "Exclude members from the response"
// @Success 200 {object} codersdk.Group // @Success 200 {object} codersdk.Group
// @Router /groups/{group} [get] // @Router /api/v2/groups/{group} [get]
func (api *API) group(rw http.ResponseWriter, r *http.Request) { func (api *API) group(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -452,7 +452,7 @@ func (api *API) group(rw http.ResponseWriter, r *http.Request) {
// @Param limit query int false "Page limit" // @Param limit query int false "Page limit"
// @Param offset query int false "Page offset" // @Param offset query int false "Page offset"
// @Success 200 {object} codersdk.GroupMembersResponse // @Success 200 {object} codersdk.GroupMembersResponse
// @Router /organizations/{organization}/groups/{groupName}/members [get] // @Router /api/v2/organizations/{organization}/groups/{groupName}/members [get]
func (api *API) groupMembersByOrganization(rw http.ResponseWriter, r *http.Request) { func (api *API) groupMembersByOrganization(rw http.ResponseWriter, r *http.Request) {
api.groupMembers(rw, r) api.groupMembers(rw, r)
} }
@@ -468,7 +468,7 @@ func (api *API) groupMembersByOrganization(rw http.ResponseWriter, r *http.Reque
// @Param limit query int false "Page limit" // @Param limit query int false "Page limit"
// @Param offset query int false "Page offset" // @Param offset query int false "Page offset"
// @Success 200 {object} codersdk.GroupMembersResponse // @Success 200 {object} codersdk.GroupMembersResponse
// @Router /groups/{group}/members [get] // @Router /api/v2/groups/{group}/members [get]
func (api *API) groupMembers(rw http.ResponseWriter, r *http.Request) { func (api *API) groupMembers(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -536,7 +536,7 @@ func (api *API) groupMembers(rw http.ResponseWriter, r *http.Request) {
// @Tags Enterprise // @Tags Enterprise
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Success 200 {array} codersdk.Group // @Success 200 {array} codersdk.Group
// @Router /organizations/{organization}/groups [get] // @Router /api/v2/organizations/{organization}/groups [get]
func (api *API) groupsByOrganization(rw http.ResponseWriter, r *http.Request) { func (api *API) groupsByOrganization(rw http.ResponseWriter, r *http.Request) {
org := httpmw.OrganizationParam(r) org := httpmw.OrganizationParam(r)
@@ -556,7 +556,7 @@ func (api *API) groupsByOrganization(rw http.ResponseWriter, r *http.Request) {
// @Param has_member query string true "User ID or name" // @Param has_member query string true "User ID or name"
// @Param group_ids query string true "Comma separated list of group IDs" // @Param group_ids query string true "Comma separated list of group IDs"
// @Success 200 {array} codersdk.Group // @Success 200 {array} codersdk.Group
// @Router /groups [get] // @Router /api/v2/groups [get]
func (api *API) groups(rw http.ResponseWriter, r *http.Request) { func (api *API) groups(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+16 -16
View File
@@ -26,7 +26,7 @@ import (
// @Tags Enterprise // @Tags Enterprise
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Success 200 {object} codersdk.GroupSyncSettings // @Success 200 {object} codersdk.GroupSyncSettings
// @Router /organizations/{organization}/settings/idpsync/groups [get] // @Router /api/v2/organizations/{organization}/settings/idpsync/groups [get]
func (api *API) groupIDPSyncSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) groupIDPSyncSettings(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
org := httpmw.OrganizationParam(r) org := httpmw.OrganizationParam(r)
@@ -56,7 +56,7 @@ func (api *API) groupIDPSyncSettings(rw http.ResponseWriter, r *http.Request) {
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Param request body codersdk.GroupSyncSettings true "New settings" // @Param request body codersdk.GroupSyncSettings true "New settings"
// @Success 200 {object} codersdk.GroupSyncSettings // @Success 200 {object} codersdk.GroupSyncSettings
// @Router /organizations/{organization}/settings/idpsync/groups [patch] // @Router /api/v2/organizations/{organization}/settings/idpsync/groups [patch]
func (api *API) patchGroupIDPSyncSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) patchGroupIDPSyncSettings(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
org := httpmw.OrganizationParam(r) org := httpmw.OrganizationParam(r)
@@ -140,7 +140,7 @@ func (api *API) patchGroupIDPSyncSettings(rw http.ResponseWriter, r *http.Reques
// @Success 200 {object} codersdk.GroupSyncSettings // @Success 200 {object} codersdk.GroupSyncSettings
// @Param organization path string true "Organization ID or name" format(uuid) // @Param organization path string true "Organization ID or name" format(uuid)
// @Param request body codersdk.PatchGroupIDPSyncConfigRequest true "New config values" // @Param request body codersdk.PatchGroupIDPSyncConfigRequest true "New config values"
// @Router /organizations/{organization}/settings/idpsync/groups/config [patch] // @Router /api/v2/organizations/{organization}/settings/idpsync/groups/config [patch]
func (api *API) patchGroupIDPSyncConfig(rw http.ResponseWriter, r *http.Request) { func (api *API) patchGroupIDPSyncConfig(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
org := httpmw.OrganizationParam(r) org := httpmw.OrganizationParam(r)
@@ -213,7 +213,7 @@ func (api *API) patchGroupIDPSyncConfig(rw http.ResponseWriter, r *http.Request)
// @Success 200 {object} codersdk.GroupSyncSettings // @Success 200 {object} codersdk.GroupSyncSettings
// @Param organization path string true "Organization ID or name" format(uuid) // @Param organization path string true "Organization ID or name" format(uuid)
// @Param request body codersdk.PatchGroupIDPSyncMappingRequest true "Description of the mappings to add and remove" // @Param request body codersdk.PatchGroupIDPSyncMappingRequest true "Description of the mappings to add and remove"
// @Router /organizations/{organization}/settings/idpsync/groups/mapping [patch] // @Router /api/v2/organizations/{organization}/settings/idpsync/groups/mapping [patch]
func (api *API) patchGroupIDPSyncMapping(rw http.ResponseWriter, r *http.Request) { func (api *API) patchGroupIDPSyncMapping(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
org := httpmw.OrganizationParam(r) org := httpmw.OrganizationParam(r)
@@ -285,7 +285,7 @@ func (api *API) patchGroupIDPSyncMapping(rw http.ResponseWriter, r *http.Request
// @Tags Enterprise // @Tags Enterprise
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Success 200 {object} codersdk.RoleSyncSettings // @Success 200 {object} codersdk.RoleSyncSettings
// @Router /organizations/{organization}/settings/idpsync/roles [get] // @Router /api/v2/organizations/{organization}/settings/idpsync/roles [get]
func (api *API) roleIDPSyncSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) roleIDPSyncSettings(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
org := httpmw.OrganizationParam(r) org := httpmw.OrganizationParam(r)
@@ -315,7 +315,7 @@ func (api *API) roleIDPSyncSettings(rw http.ResponseWriter, r *http.Request) {
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Param request body codersdk.RoleSyncSettings true "New settings" // @Param request body codersdk.RoleSyncSettings true "New settings"
// @Success 200 {object} codersdk.RoleSyncSettings // @Success 200 {object} codersdk.RoleSyncSettings
// @Router /organizations/{organization}/settings/idpsync/roles [patch] // @Router /api/v2/organizations/{organization}/settings/idpsync/roles [patch]
func (api *API) patchRoleIDPSyncSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) patchRoleIDPSyncSettings(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
org := httpmw.OrganizationParam(r) org := httpmw.OrganizationParam(r)
@@ -380,7 +380,7 @@ func (api *API) patchRoleIDPSyncSettings(rw http.ResponseWriter, r *http.Request
// @Success 200 {object} codersdk.RoleSyncSettings // @Success 200 {object} codersdk.RoleSyncSettings
// @Param organization path string true "Organization ID or name" format(uuid) // @Param organization path string true "Organization ID or name" format(uuid)
// @Param request body codersdk.PatchRoleIDPSyncConfigRequest true "New config values" // @Param request body codersdk.PatchRoleIDPSyncConfigRequest true "New config values"
// @Router /organizations/{organization}/settings/idpsync/roles/config [patch] // @Router /api/v2/organizations/{organization}/settings/idpsync/roles/config [patch]
func (api *API) patchRoleIDPSyncConfig(rw http.ResponseWriter, r *http.Request) { func (api *API) patchRoleIDPSyncConfig(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
org := httpmw.OrganizationParam(r) org := httpmw.OrganizationParam(r)
@@ -447,7 +447,7 @@ func (api *API) patchRoleIDPSyncConfig(rw http.ResponseWriter, r *http.Request)
// @Success 200 {object} codersdk.RoleSyncSettings // @Success 200 {object} codersdk.RoleSyncSettings
// @Param organization path string true "Organization ID or name" format(uuid) // @Param organization path string true "Organization ID or name" format(uuid)
// @Param request body codersdk.PatchRoleIDPSyncMappingRequest true "Description of the mappings to add and remove" // @Param request body codersdk.PatchRoleIDPSyncMappingRequest true "Description of the mappings to add and remove"
// @Router /organizations/{organization}/settings/idpsync/roles/mapping [patch] // @Router /api/v2/organizations/{organization}/settings/idpsync/roles/mapping [patch]
func (api *API) patchRoleIDPSyncMapping(rw http.ResponseWriter, r *http.Request) { func (api *API) patchRoleIDPSyncMapping(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
org := httpmw.OrganizationParam(r) org := httpmw.OrganizationParam(r)
@@ -512,7 +512,7 @@ func (api *API) patchRoleIDPSyncMapping(rw http.ResponseWriter, r *http.Request)
// @Produce json // @Produce json
// @Tags Enterprise // @Tags Enterprise
// @Success 200 {object} codersdk.OrganizationSyncSettings // @Success 200 {object} codersdk.OrganizationSyncSettings
// @Router /settings/idpsync/organization [get] // @Router /api/v2/settings/idpsync/organization [get]
func (api *API) organizationIDPSyncSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) organizationIDPSyncSettings(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -544,7 +544,7 @@ func (api *API) organizationIDPSyncSettings(rw http.ResponseWriter, r *http.Requ
// @Tags Enterprise // @Tags Enterprise
// @Success 200 {object} codersdk.OrganizationSyncSettings // @Success 200 {object} codersdk.OrganizationSyncSettings
// @Param request body codersdk.OrganizationSyncSettings true "New settings" // @Param request body codersdk.OrganizationSyncSettings true "New settings"
// @Router /settings/idpsync/organization [patch] // @Router /api/v2/settings/idpsync/organization [patch]
func (api *API) patchOrganizationIDPSyncSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) patchOrganizationIDPSyncSettings(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
auditor := *api.AGPL.Auditor.Load() auditor := *api.AGPL.Auditor.Load()
@@ -608,7 +608,7 @@ func (api *API) patchOrganizationIDPSyncSettings(rw http.ResponseWriter, r *http
// @Tags Enterprise // @Tags Enterprise
// @Success 200 {object} codersdk.OrganizationSyncSettings // @Success 200 {object} codersdk.OrganizationSyncSettings
// @Param request body codersdk.PatchOrganizationIDPSyncConfigRequest true "New config values" // @Param request body codersdk.PatchOrganizationIDPSyncConfigRequest true "New config values"
// @Router /settings/idpsync/organization/config [patch] // @Router /api/v2/settings/idpsync/organization/config [patch]
func (api *API) patchOrganizationIDPSyncConfig(rw http.ResponseWriter, r *http.Request) { func (api *API) patchOrganizationIDPSyncConfig(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
auditor := *api.AGPL.Auditor.Load() auditor := *api.AGPL.Auditor.Load()
@@ -674,7 +674,7 @@ func (api *API) patchOrganizationIDPSyncConfig(rw http.ResponseWriter, r *http.R
// @Tags Enterprise // @Tags Enterprise
// @Success 200 {object} codersdk.OrganizationSyncSettings // @Success 200 {object} codersdk.OrganizationSyncSettings
// @Param request body codersdk.PatchOrganizationIDPSyncMappingRequest true "Description of the mappings to add and remove" // @Param request body codersdk.PatchOrganizationIDPSyncMappingRequest true "Description of the mappings to add and remove"
// @Router /settings/idpsync/organization/mapping [patch] // @Router /api/v2/settings/idpsync/organization/mapping [patch]
func (api *API) patchOrganizationIDPSyncMapping(rw http.ResponseWriter, r *http.Request) { func (api *API) patchOrganizationIDPSyncMapping(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
auditor := *api.AGPL.Auditor.Load() auditor := *api.AGPL.Auditor.Load()
@@ -740,7 +740,7 @@ func (api *API) patchOrganizationIDPSyncMapping(rw http.ResponseWriter, r *http.
// @Tags Enterprise // @Tags Enterprise
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Success 200 {array} string // @Success 200 {array} string
// @Router /organizations/{organization}/settings/idpsync/available-fields [get] // @Router /api/v2/organizations/{organization}/settings/idpsync/available-fields [get]
func (api *API) organizationIDPSyncClaimFields(rw http.ResponseWriter, r *http.Request) { func (api *API) organizationIDPSyncClaimFields(rw http.ResponseWriter, r *http.Request) {
org := httpmw.OrganizationParam(r) org := httpmw.OrganizationParam(r)
api.idpSyncClaimFields(org.ID, rw, r) api.idpSyncClaimFields(org.ID, rw, r)
@@ -753,7 +753,7 @@ func (api *API) organizationIDPSyncClaimFields(rw http.ResponseWriter, r *http.R
// @Tags Enterprise // @Tags Enterprise
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Success 200 {array} string // @Success 200 {array} string
// @Router /settings/idpsync/available-fields [get] // @Router /api/v2/settings/idpsync/available-fields [get]
func (api *API) deploymentIDPSyncClaimFields(rw http.ResponseWriter, r *http.Request) { func (api *API) deploymentIDPSyncClaimFields(rw http.ResponseWriter, r *http.Request) {
// nil uuid implies all organizations // nil uuid implies all organizations
api.idpSyncClaimFields(uuid.Nil, rw, r) api.idpSyncClaimFields(uuid.Nil, rw, r)
@@ -788,7 +788,7 @@ func (api *API) idpSyncClaimFields(orgID uuid.UUID, rw http.ResponseWriter, r *h
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Param claimField query string true "Claim Field" format(string) // @Param claimField query string true "Claim Field" format(string)
// @Success 200 {array} string // @Success 200 {array} string
// @Router /organizations/{organization}/settings/idpsync/field-values [get] // @Router /api/v2/organizations/{organization}/settings/idpsync/field-values [get]
func (api *API) organizationIDPSyncClaimFieldValues(rw http.ResponseWriter, r *http.Request) { func (api *API) organizationIDPSyncClaimFieldValues(rw http.ResponseWriter, r *http.Request) {
org := httpmw.OrganizationParam(r) org := httpmw.OrganizationParam(r)
api.idpSyncClaimFieldValues(org.ID, rw, r) api.idpSyncClaimFieldValues(org.ID, rw, r)
@@ -802,7 +802,7 @@ func (api *API) organizationIDPSyncClaimFieldValues(rw http.ResponseWriter, r *h
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Param claimField query string true "Claim Field" format(string) // @Param claimField query string true "Claim Field" format(string)
// @Success 200 {array} string // @Success 200 {array} string
// @Router /settings/idpsync/field-values [get] // @Router /api/v2/settings/idpsync/field-values [get]
func (api *API) deploymentIDPSyncClaimFieldValues(rw http.ResponseWriter, r *http.Request) { func (api *API) deploymentIDPSyncClaimFieldValues(rw http.ResponseWriter, r *http.Request) {
// nil uuid implies all organizations // nil uuid implies all organizations
api.idpSyncClaimFieldValues(uuid.Nil, rw, r) api.idpSyncClaimFieldValues(uuid.Nil, rw, r)
+4 -4
View File
@@ -62,7 +62,7 @@ var Keys = map[string]ed25519.PublicKey{"2022-08-12": ed25519.PublicKey(key20220
// @Tags Enterprise // @Tags Enterprise
// @Param request body codersdk.AddLicenseRequest true "Add license request" // @Param request body codersdk.AddLicenseRequest true "Add license request"
// @Success 201 {object} codersdk.License // @Success 201 {object} codersdk.License
// @Router /licenses [post] // @Router /api/v2/licenses [post]
func (api *API) postLicense(rw http.ResponseWriter, r *http.Request) { func (api *API) postLicense(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -165,7 +165,7 @@ func (api *API) postLicense(rw http.ResponseWriter, r *http.Request) {
// @Produce json // @Produce json
// @Tags Enterprise // @Tags Enterprise
// @Success 201 {object} codersdk.Response // @Success 201 {object} codersdk.Response
// @Router /licenses/refresh-entitlements [post] // @Router /api/v2/licenses/refresh-entitlements [post]
func (api *API) postRefreshEntitlements(rw http.ResponseWriter, r *http.Request) { func (api *API) postRefreshEntitlements(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -231,7 +231,7 @@ func (api *API) refreshEntitlements(ctx context.Context) error {
// @Produce json // @Produce json
// @Tags Enterprise // @Tags Enterprise
// @Success 200 {array} codersdk.License // @Success 200 {array} codersdk.License
// @Router /licenses [get] // @Router /api/v2/licenses [get]
func (api *API) licenses(rw http.ResponseWriter, r *http.Request) { func (api *API) licenses(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
licenses, err := api.Database.GetLicenses(ctx) licenses, err := api.Database.GetLicenses(ctx)
@@ -273,7 +273,7 @@ func (api *API) licenses(rw http.ResponseWriter, r *http.Request) {
// @Tags Enterprise // @Tags Enterprise
// @Param id path string true "License ID" format(number) // @Param id path string true "License ID" format(number)
// @Success 200 // @Success 200
// @Router /licenses/{id} [delete] // @Router /api/v2/licenses/{id} [delete]
func (api *API) deleteLicense(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteLicense(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
+1 -1
View File
@@ -22,7 +22,7 @@ import (
// @Tags Enterprise // @Tags Enterprise
// @Success 200 "Success" // @Success 200 "Success"
// @Success 304 "Not modified" // @Success 304 "Not modified"
// @Router /notifications/templates/{notification_template}/method [put] // @Router /api/v2/notifications/templates/{notification_template}/method [put]
func (api *API) updateNotificationTemplateMethod(rw http.ResponseWriter, r *http.Request) { func (api *API) updateNotificationTemplateMethod(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
+3 -3
View File
@@ -29,7 +29,7 @@ import (
// @Param organization path string true "Organization ID or name" // @Param organization path string true "Organization ID or name"
// @Param request body codersdk.UpdateOrganizationRequest true "Patch organization request" // @Param request body codersdk.UpdateOrganizationRequest true "Patch organization request"
// @Success 200 {object} codersdk.Organization // @Success 200 {object} codersdk.Organization
// @Router /organizations/{organization} [patch] // @Router /api/v2/organizations/{organization} [patch]
func (api *API) patchOrganization(rw http.ResponseWriter, r *http.Request) { func (api *API) patchOrganization(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -129,7 +129,7 @@ func (api *API) patchOrganization(rw http.ResponseWriter, r *http.Request) {
// @Tags Organizations // @Tags Organizations
// @Param organization path string true "Organization ID or name" // @Param organization path string true "Organization ID or name"
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /organizations/{organization} [delete] // @Router /api/v2/organizations/{organization} [delete]
func (api *API) deleteOrganization(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteOrganization(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -216,7 +216,7 @@ func (api *API) deleteOrganization(rw http.ResponseWriter, r *http.Request) {
// @Tags Organizations // @Tags Organizations
// @Param request body codersdk.CreateOrganizationRequest true "Create organization request" // @Param request body codersdk.CreateOrganizationRequest true "Create organization request"
// @Success 201 {object} codersdk.Organization // @Success 201 {object} codersdk.Organization
// @Router /organizations [post] // @Router /api/v2/organizations [post]
func (api *API) postOrganizations(rw http.ResponseWriter, r *http.Request) { func (api *API) postOrganizations(rw http.ResponseWriter, r *http.Request) {
var ( var (
// organizationID is required before the audit log entry is created. // organizationID is required before the audit log entry is created.
+2 -2
View File
@@ -21,7 +21,7 @@ import (
// @Produce json // @Produce json
// @Tags Prebuilds // @Tags Prebuilds
// @Success 200 {object} codersdk.PrebuildsSettings // @Success 200 {object} codersdk.PrebuildsSettings
// @Router /prebuilds/settings [get] // @Router /api/v2/prebuilds/settings [get]
func (api *API) prebuildsSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) prebuildsSettings(rw http.ResponseWriter, r *http.Request) {
settingsJSON, err := api.Database.GetPrebuildsSettings(r.Context()) settingsJSON, err := api.Database.GetPrebuildsSettings(r.Context())
if err != nil { if err != nil {
@@ -55,7 +55,7 @@ func (api *API) prebuildsSettings(rw http.ResponseWriter, r *http.Request) {
// @Param request body codersdk.PrebuildsSettings true "Prebuilds settings request" // @Param request body codersdk.PrebuildsSettings true "Prebuilds settings request"
// @Success 200 {object} codersdk.PrebuildsSettings // @Success 200 {object} codersdk.PrebuildsSettings
// @Success 304 // @Success 304
// @Router /prebuilds/settings [put] // @Router /api/v2/prebuilds/settings [put]
func (api *API) putPrebuildsSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) putPrebuildsSettings(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+1 -1
View File
@@ -153,7 +153,7 @@ func (p *provisionerDaemonAuth) authorize(r *http.Request, org database.Organiza
// @Tags Enterprise // @Tags Enterprise
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Success 101 // @Success 101
// @Router /organizations/{organization}/provisionerdaemons/serve [get] // @Router /api/v2/organizations/{organization}/provisionerdaemons/serve [get]
func (api *API) provisionerDaemonServe(rw http.ResponseWriter, r *http.Request) { func (api *API) provisionerDaemonServe(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+5 -5
View File
@@ -23,7 +23,7 @@ import (
// @Tags Enterprise // @Tags Enterprise
// @Param organization path string true "Organization ID" // @Param organization path string true "Organization ID"
// @Success 201 {object} codersdk.CreateProvisionerKeyResponse // @Success 201 {object} codersdk.CreateProvisionerKeyResponse
// @Router /organizations/{organization}/provisionerkeys [post] // @Router /api/v2/organizations/{organization}/provisionerkeys [post]
func (api *API) postProvisionerKey(rw http.ResponseWriter, r *http.Request) { func (api *API) postProvisionerKey(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
organization := httpmw.OrganizationParam(r) organization := httpmw.OrganizationParam(r)
@@ -104,7 +104,7 @@ func (api *API) postProvisionerKey(rw http.ResponseWriter, r *http.Request) {
// @Tags Enterprise // @Tags Enterprise
// @Param organization path string true "Organization ID" // @Param organization path string true "Organization ID"
// @Success 200 {object} []codersdk.ProvisionerKey // @Success 200 {object} []codersdk.ProvisionerKey
// @Router /organizations/{organization}/provisionerkeys [get] // @Router /api/v2/organizations/{organization}/provisionerkeys [get]
func (api *API) provisionerKeys(rw http.ResponseWriter, r *http.Request) { func (api *API) provisionerKeys(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
organization := httpmw.OrganizationParam(r) organization := httpmw.OrganizationParam(r)
@@ -125,7 +125,7 @@ func (api *API) provisionerKeys(rw http.ResponseWriter, r *http.Request) {
// @Tags Enterprise // @Tags Enterprise
// @Param organization path string true "Organization ID" // @Param organization path string true "Organization ID"
// @Success 200 {object} []codersdk.ProvisionerKeyDaemons // @Success 200 {object} []codersdk.ProvisionerKeyDaemons
// @Router /organizations/{organization}/provisionerkeys/daemons [get] // @Router /api/v2/organizations/{organization}/provisionerkeys/daemons [get]
func (api *API) provisionerKeyDaemons(rw http.ResponseWriter, r *http.Request) { func (api *API) provisionerKeyDaemons(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
organization := httpmw.OrganizationParam(r) organization := httpmw.OrganizationParam(r)
@@ -191,7 +191,7 @@ func (api *API) provisionerKeyDaemons(rw http.ResponseWriter, r *http.Request) {
// @Param organization path string true "Organization ID" // @Param organization path string true "Organization ID"
// @Param provisionerkey path string true "Provisioner key name" // @Param provisionerkey path string true "Provisioner key name"
// @Success 204 // @Success 204
// @Router /organizations/{organization}/provisionerkeys/{provisionerkey} [delete] // @Router /api/v2/organizations/{organization}/provisionerkeys/{provisionerkey} [delete]
func (api *API) deleteProvisionerKey(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteProvisionerKey(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
provisionerKey := httpmw.ProvisionerKeyParam(r) provisionerKey := httpmw.ProvisionerKeyParam(r)
@@ -221,7 +221,7 @@ func (api *API) deleteProvisionerKey(rw http.ResponseWriter, r *http.Request) {
// @Tags Enterprise // @Tags Enterprise
// @Param provisionerkey path string true "Provisioner Key" // @Param provisionerkey path string true "Provisioner Key"
// @Success 200 {object} codersdk.ProvisionerKey // @Success 200 {object} codersdk.ProvisionerKey
// @Router /provisionerkeys/{provisionerkey} [get] // @Router /api/v2/provisionerkeys/{provisionerkey} [get]
func (*API) fetchProvisionerKey(rw http.ResponseWriter, r *http.Request) { func (*API) fetchProvisionerKey(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+1 -1
View File
@@ -18,7 +18,7 @@ import (
// @Produce json // @Produce json
// @Tags Enterprise // @Tags Enterprise
// @Success 200 {array} codersdk.Replica // @Success 200 {array} codersdk.Replica
// @Router /replicas [get] // @Router /api/v2/replicas [get]
func (api *API) replicas(rw http.ResponseWriter, r *http.Request) { func (api *API) replicas(rw http.ResponseWriter, r *http.Request) {
if !api.AGPL.Authorize(r, policy.ActionRead, rbac.ResourceReplicas) { if !api.AGPL.Authorize(r, policy.ActionRead, rbac.ResourceReplicas) {
httpapi.ResourceNotFound(rw) httpapi.ResourceNotFound(rw)
+3 -3
View File
@@ -30,7 +30,7 @@ import (
// @Param request body codersdk.CustomRoleRequest true "Insert role request" // @Param request body codersdk.CustomRoleRequest true "Insert role request"
// @Tags Members // @Tags Members
// @Success 200 {array} codersdk.Role // @Success 200 {array} codersdk.Role
// @Router /organizations/{organization}/members/roles [post] // @Router /api/v2/organizations/{organization}/members/roles [post]
func (api *API) postOrgRoles(rw http.ResponseWriter, r *http.Request) { func (api *API) postOrgRoles(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -97,7 +97,7 @@ func (api *API) postOrgRoles(rw http.ResponseWriter, r *http.Request) {
// @Param request body codersdk.CustomRoleRequest true "Update role request" // @Param request body codersdk.CustomRoleRequest true "Update role request"
// @Tags Members // @Tags Members
// @Success 200 {array} codersdk.Role // @Success 200 {array} codersdk.Role
// @Router /organizations/{organization}/members/roles [put] // @Router /api/v2/organizations/{organization}/members/roles [put]
func (api *API) putOrgRoles(rw http.ResponseWriter, r *http.Request) { func (api *API) putOrgRoles(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -187,7 +187,7 @@ func (api *API) putOrgRoles(rw http.ResponseWriter, r *http.Request) {
// @Param roleName path string true "Role name" // @Param roleName path string true "Role name"
// @Tags Members // @Tags Members
// @Success 200 {array} codersdk.Role // @Success 200 {array} codersdk.Role
// @Router /organizations/{organization}/members/roles/{roleName} [delete] // @Router /api/v2/organizations/{organization}/members/roles/{roleName} [delete]
func (api *API) deleteOrgRole(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteOrgRole(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
+4 -4
View File
@@ -28,7 +28,7 @@ import (
// @Tags Enterprise // @Tags Enterprise
// @Param template path string true "Template ID" format(uuid) // @Param template path string true "Template ID" format(uuid)
// @Success 200 {array} codersdk.ACLAvailable // @Success 200 {array} codersdk.ACLAvailable
// @Router /templates/{template}/acl/available [get] // @Router /api/v2/templates/{template}/acl/available [get]
func (api *API) templateAvailablePermissions(rw http.ResponseWriter, r *http.Request) { func (api *API) templateAvailablePermissions(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -101,7 +101,7 @@ func (api *API) templateAvailablePermissions(rw http.ResponseWriter, r *http.Req
// @Tags Enterprise // @Tags Enterprise
// @Param template path string true "Template ID" format(uuid) // @Param template path string true "Template ID" format(uuid)
// @Success 200 {object} codersdk.TemplateACL // @Success 200 {object} codersdk.TemplateACL
// @Router /templates/{template}/acl [get] // @Router /api/v2/templates/{template}/acl [get]
func (api *API) templateACL(rw http.ResponseWriter, r *http.Request) { func (api *API) templateACL(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -187,7 +187,7 @@ func (api *API) templateACL(rw http.ResponseWriter, r *http.Request) {
// @Param template path string true "Template ID" format(uuid) // @Param template path string true "Template ID" format(uuid)
// @Param request body codersdk.UpdateTemplateACL true "Update template ACL request" // @Param request body codersdk.UpdateTemplateACL true "Update template ACL request"
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /templates/{template}/acl [patch] // @Router /api/v2/templates/{template}/acl [patch]
func (api *API) patchTemplateACL(rw http.ResponseWriter, r *http.Request) { func (api *API) patchTemplateACL(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -347,7 +347,7 @@ func (api *API) RequireFeatureMW(feat codersdk.FeatureName) func(http.Handler) h
// @Tags Enterprise // @Tags Enterprise
// @Param template path string true "Template ID" format(uuid) // @Param template path string true "Template ID" format(uuid)
// @Success 200 {object} codersdk.InvalidatePresetsResponse // @Success 200 {object} codersdk.InvalidatePresetsResponse
// @Router /templates/{template}/prebuilds/invalidate [post] // @Router /api/v2/templates/{template}/prebuilds/invalidate [post]
func (api *API) postInvalidateTemplatePresets(rw http.ResponseWriter, r *http.Request) { func (api *API) postInvalidateTemplatePresets(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
template := httpmw.TemplateParam(r) template := httpmw.TemplateParam(r)
+2 -2
View File
@@ -43,7 +43,7 @@ func (api *API) autostopRequirementEnabledMW(next http.Handler) http.Handler {
// @Tags Enterprise // @Tags Enterprise
// @Param user path string true "User ID" format(uuid) // @Param user path string true "User ID" format(uuid)
// @Success 200 {array} codersdk.UserQuietHoursScheduleResponse // @Success 200 {array} codersdk.UserQuietHoursScheduleResponse
// @Router /users/{user}/quiet-hours [get] // @Router /api/v2/users/{user}/quiet-hours [get]
func (api *API) userQuietHoursSchedule(rw http.ResponseWriter, r *http.Request) { func (api *API) userQuietHoursSchedule(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -79,7 +79,7 @@ func (api *API) userQuietHoursSchedule(rw http.ResponseWriter, r *http.Request)
// @Param user path string true "User ID" format(uuid) // @Param user path string true "User ID" format(uuid)
// @Param request body codersdk.UpdateUserQuietHoursScheduleRequest true "Update schedule request" // @Param request body codersdk.UpdateUserQuietHoursScheduleRequest true "Update schedule request"
// @Success 200 {array} codersdk.UserQuietHoursScheduleResponse // @Success 200 {array} codersdk.UserQuietHoursScheduleResponse
// @Router /users/{user}/quiet-hours [put] // @Router /api/v2/users/{user}/quiet-hours [put]
func (api *API) putUserQuietHoursSchedule(rw http.ResponseWriter, r *http.Request) { func (api *API) putUserQuietHoursSchedule(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
+1 -1
View File
@@ -31,7 +31,7 @@ func (api *API) shouldBlockNonBrowserConnections(rw http.ResponseWriter) bool {
// @Param workspace path string true "Workspace ID" format(uuid) // @Param workspace path string true "Workspace ID" format(uuid)
// @Param agent path string true "Agent name" // @Param agent path string true "Agent name"
// @Success 200 {object} codersdk.ExternalAgentCredentials // @Success 200 {object} codersdk.ExternalAgentCredentials
// @Router /workspaces/{workspace}/external-agent/{agent}/credentials [get] // @Router /api/v2/workspaces/{workspace}/external-agent/{agent}/credentials [get]
func (api *API) workspaceExternalAgentCredentials(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceExternalAgentCredentials(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
workspace := httpmw.WorkspaceParam(r) workspace := httpmw.WorkspaceParam(r)
+11 -11
View File
@@ -94,7 +94,7 @@ func (api *API) fetchRegions(ctx context.Context) (codersdk.RegionsResponse[code
// @Param workspaceproxy path string true "Proxy ID or name" format(uuid) // @Param workspaceproxy path string true "Proxy ID or name" format(uuid)
// @Param request body codersdk.PatchWorkspaceProxy true "Update workspace proxy request" // @Param request body codersdk.PatchWorkspaceProxy true "Update workspace proxy request"
// @Success 200 {object} codersdk.WorkspaceProxy // @Success 200 {object} codersdk.WorkspaceProxy
// @Router /workspaceproxies/{workspaceproxy} [patch] // @Router /api/v2/workspaceproxies/{workspaceproxy} [patch]
func (api *API) patchWorkspaceProxy(rw http.ResponseWriter, r *http.Request) { func (api *API) patchWorkspaceProxy(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -243,7 +243,7 @@ func (api *API) patchPrimaryWorkspaceProxy(req codersdk.PatchWorkspaceProxy, rw
// @Tags Enterprise // @Tags Enterprise
// @Param workspaceproxy path string true "Proxy ID or name" format(uuid) // @Param workspaceproxy path string true "Proxy ID or name" format(uuid)
// @Success 200 {object} codersdk.Response // @Success 200 {object} codersdk.Response
// @Router /workspaceproxies/{workspaceproxy} [delete] // @Router /api/v2/workspaceproxies/{workspaceproxy} [delete]
func (api *API) deleteWorkspaceProxy(rw http.ResponseWriter, r *http.Request) { func (api *API) deleteWorkspaceProxy(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -295,7 +295,7 @@ func (api *API) deleteWorkspaceProxy(rw http.ResponseWriter, r *http.Request) {
// @Tags Enterprise // @Tags Enterprise
// @Param workspaceproxy path string true "Proxy ID or name" format(uuid) // @Param workspaceproxy path string true "Proxy ID or name" format(uuid)
// @Success 200 {object} codersdk.WorkspaceProxy // @Success 200 {object} codersdk.WorkspaceProxy
// @Router /workspaceproxies/{workspaceproxy} [get] // @Router /api/v2/workspaceproxies/{workspaceproxy} [get]
func (api *API) workspaceProxy(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceProxy(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -313,7 +313,7 @@ func (api *API) workspaceProxy(rw http.ResponseWriter, r *http.Request) {
// @Tags Enterprise // @Tags Enterprise
// @Param request body codersdk.CreateWorkspaceProxyRequest true "Create workspace proxy request" // @Param request body codersdk.CreateWorkspaceProxyRequest true "Create workspace proxy request"
// @Success 201 {object} codersdk.WorkspaceProxy // @Success 201 {object} codersdk.WorkspaceProxy
// @Router /workspaceproxies [post] // @Router /api/v2/workspaceproxies [post]
func (api *API) postWorkspaceProxy(rw http.ResponseWriter, r *http.Request) { func (api *API) postWorkspaceProxy(rw http.ResponseWriter, r *http.Request) {
var ( var (
ctx = r.Context() ctx = r.Context()
@@ -417,7 +417,7 @@ func validateProxyURL(u string) error {
// @Produce json // @Produce json
// @Tags Enterprise // @Tags Enterprise
// @Success 200 {array} codersdk.RegionsResponse[codersdk.WorkspaceProxy] // @Success 200 {array} codersdk.RegionsResponse[codersdk.WorkspaceProxy]
// @Router /workspaceproxies [get] // @Router /api/v2/workspaceproxies [get]
func (api *API) workspaceProxies(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceProxies(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
proxies, err := api.fetchWorkspaceProxies(r.Context()) proxies, err := api.fetchWorkspaceProxies(r.Context())
@@ -461,7 +461,7 @@ func (api *API) fetchWorkspaceProxies(ctx context.Context) (codersdk.RegionsResp
// @Tags Enterprise // @Tags Enterprise
// @Param request body workspaceapps.IssueTokenRequest true "Issue signed app token request" // @Param request body workspaceapps.IssueTokenRequest true "Issue signed app token request"
// @Success 201 {object} wsproxysdk.IssueSignedAppTokenResponse // @Success 201 {object} wsproxysdk.IssueSignedAppTokenResponse
// @Router /workspaceproxies/me/issue-signed-app-token [post] // @Router /api/v2/workspaceproxies/me/issue-signed-app-token [post]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) workspaceProxyIssueSignedAppToken(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceProxyIssueSignedAppToken(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -513,7 +513,7 @@ func (api *API) workspaceProxyIssueSignedAppToken(rw http.ResponseWriter, r *htt
// @Tags Enterprise // @Tags Enterprise
// @Param request body wsproxysdk.ReportAppStatsRequest true "Report app stats request" // @Param request body wsproxysdk.ReportAppStatsRequest true "Report app stats request"
// @Success 204 // @Success 204
// @Router /workspaceproxies/me/app-stats [post] // @Router /api/v2/workspaceproxies/me/app-stats [post]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) workspaceProxyReportAppStats(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceProxyReportAppStats(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -553,7 +553,7 @@ func (api *API) workspaceProxyReportAppStats(rw http.ResponseWriter, r *http.Req
// @Tags Enterprise // @Tags Enterprise
// @Param request body wsproxysdk.RegisterWorkspaceProxyRequest true "Register workspace proxy request" // @Param request body wsproxysdk.RegisterWorkspaceProxyRequest true "Register workspace proxy request"
// @Success 201 {object} wsproxysdk.RegisterWorkspaceProxyResponse // @Success 201 {object} wsproxysdk.RegisterWorkspaceProxyResponse
// @Router /workspaceproxies/me/register [post] // @Router /api/v2/workspaceproxies/me/register [post]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) workspaceProxyRegister(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceProxyRegister(rw http.ResponseWriter, r *http.Request) {
var ( var (
@@ -751,7 +751,7 @@ func (api *API) workspaceProxyRegister(rw http.ResponseWriter, r *http.Request)
// @Tags Enterprise // @Tags Enterprise
// @Param feature query string true "Feature key" // @Param feature query string true "Feature key"
// @Success 200 {object} wsproxysdk.CryptoKeysResponse // @Success 200 {object} wsproxysdk.CryptoKeysResponse
// @Router /workspaceproxies/me/crypto-keys [get] // @Router /api/v2/workspaceproxies/me/crypto-keys [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) workspaceProxyCryptoKeys(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceProxyCryptoKeys(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -789,7 +789,7 @@ func (api *API) workspaceProxyCryptoKeys(rw http.ResponseWriter, r *http.Request
// @Tags Enterprise // @Tags Enterprise
// @Param request body wsproxysdk.DeregisterWorkspaceProxyRequest true "Deregister workspace proxy request" // @Param request body wsproxysdk.DeregisterWorkspaceProxyRequest true "Deregister workspace proxy request"
// @Success 204 // @Success 204
// @Router /workspaceproxies/me/deregister [post] // @Router /api/v2/workspaceproxies/me/deregister [post]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) workspaceProxyDeregister(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceProxyDeregister(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -866,7 +866,7 @@ func (api *API) workspaceProxyDeregister(rw http.ResponseWriter, r *http.Request
// @Produce json // @Produce json
// @Param request body codersdk.IssueReconnectingPTYSignedTokenRequest true "Issue reconnecting PTY signed token request" // @Param request body codersdk.IssueReconnectingPTYSignedTokenRequest true "Issue reconnecting PTY signed token request"
// @Success 200 {object} codersdk.IssueReconnectingPTYSignedTokenResponse // @Success 200 {object} codersdk.IssueReconnectingPTYSignedTokenResponse
// @Router /applications/reconnecting-pty-signed-token [post] // @Router /api/v2/applications/reconnecting-pty-signed-token [post]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) reconnectingPTYSignedToken(rw http.ResponseWriter, r *http.Request) { func (api *API) reconnectingPTYSignedToken(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
@@ -17,7 +17,7 @@ import (
// @Security CoderSessionToken // @Security CoderSessionToken
// @Tags Enterprise // @Tags Enterprise
// @Success 101 // @Success 101
// @Router /workspaceproxies/me/coordinate [get] // @Router /api/v2/workspaceproxies/me/coordinate [get]
// @x-apidocgen {"skip": true} // @x-apidocgen {"skip": true}
func (api *API) workspaceProxyCoordinate(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceProxyCoordinate(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
+2 -2
View File
@@ -127,7 +127,7 @@ func (c *committer) CommitQuota(
// @Tags Enterprise // @Tags Enterprise
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Success 200 {object} codersdk.WorkspaceQuota // @Success 200 {object} codersdk.WorkspaceQuota
// @Router /workspace-quota/{user} [get] // @Router /api/v2/workspace-quota/{user} [get]
// @Deprecated this endpoint will be removed, use /organizations/{organization}/members/{user}/workspace-quota instead // @Deprecated this endpoint will be removed, use /organizations/{organization}/members/{user}/workspace-quota instead
func (api *API) workspaceQuotaByUser(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceQuotaByUser(rw http.ResponseWriter, r *http.Request) {
defaultOrg, err := api.Database.GetDefaultOrganization(r.Context()) defaultOrg, err := api.Database.GetDefaultOrganization(r.Context())
@@ -150,7 +150,7 @@ func (api *API) workspaceQuotaByUser(rw http.ResponseWriter, r *http.Request) {
// @Param user path string true "User ID, name, or me" // @Param user path string true "User ID, name, or me"
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Success 200 {object} codersdk.WorkspaceQuota // @Success 200 {object} codersdk.WorkspaceQuota
// @Router /organizations/{organization}/members/{user}/workspace-quota [get] // @Router /api/v2/organizations/{organization}/members/{user}/workspace-quota [get]
func (api *API) workspaceQuota(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceQuota(rw http.ResponseWriter, r *http.Request) {
var ( var (
organization = httpmw.OrganizationParam(r) organization = httpmw.OrganizationParam(r)
+2 -2
View File
@@ -27,7 +27,7 @@ import (
// @Tags Enterprise // @Tags Enterprise
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Success 200 {object} codersdk.WorkspaceSharingSettings // @Success 200 {object} codersdk.WorkspaceSharingSettings
// @Router /organizations/{organization}/settings/workspace-sharing [get] // @Router /api/v2/organizations/{organization}/settings/workspace-sharing [get]
func (api *API) workspaceSharingSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) workspaceSharingSettings(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
org := httpmw.OrganizationParam(r) org := httpmw.OrganizationParam(r)
@@ -59,7 +59,7 @@ func (api *API) workspaceSharingSettings(rw http.ResponseWriter, r *http.Request
// @Param organization path string true "Organization ID" format(uuid) // @Param organization path string true "Organization ID" format(uuid)
// @Param request body codersdk.UpdateWorkspaceSharingSettingsRequest true "Workspace sharing settings" // @Param request body codersdk.UpdateWorkspaceSharingSettingsRequest true "Workspace sharing settings"
// @Success 200 {object} codersdk.WorkspaceSharingSettings // @Success 200 {object} codersdk.WorkspaceSharingSettings
// @Router /organizations/{organization}/settings/workspace-sharing [patch] // @Router /api/v2/organizations/{organization}/settings/workspace-sharing [patch]
func (api *API) patchWorkspaceSharingSettings(rw http.ResponseWriter, r *http.Request) { func (api *API) patchWorkspaceSharingSettings(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
org := httpmw.OrganizationParam(r) org := httpmw.OrganizationParam(r)