mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
docs: API templateversions, templates, members, organizations (#5546)
* docs: audit, deploymentconfig, files, parameters * Swagger comments in workspacebuilds.go * structs in workspacebuilds.go * workspaceagents: instance identity * workspaceagents.go in progress * workspaceagents.go in progress * Agents * workspacebuilds.go * /workspaces * templates.go, templateversions.go * templateversion.go in progress * cancel * templateversions * wip * Merge * x-apidocgen * NullTime hack not needed anymore * Fix: x-apidocgen * Members * Fixes * Fix
This commit is contained in:
+1361
-20
File diff suppressed because it is too large
Load Diff
+1231
-22
File diff suppressed because it is too large
Load Diff
@@ -431,7 +431,6 @@ func New(options *Options) *API {
|
||||
apiKeyMiddleware,
|
||||
httpmw.ExtractTemplateVersionParam(options.Database),
|
||||
)
|
||||
|
||||
r.Get("/", api.templateVersion)
|
||||
r.Patch("/cancel", api.patchCancelTemplateVersion)
|
||||
r.Get("/schema", api.templateVersionSchema)
|
||||
|
||||
@@ -16,6 +16,17 @@ import (
|
||||
"github.com/coder/coder/codersdk"
|
||||
)
|
||||
|
||||
// @Summary Assign role to organization member
|
||||
// @ID assign-role-to-organization-member
|
||||
// @Security CoderSessionToken
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Tags Members
|
||||
// @Param request body codersdk.UpdateRoles true "Update roles request"
|
||||
// @Param organization path string true "Organization ID"
|
||||
// @Param user path string true "Username, UUID, or me"
|
||||
// @Success 200 {object} codersdk.OrganizationMember
|
||||
// @Router /organizations/{organization}/members/{user}/roles [put]
|
||||
func (api *API) putMemberRoles(rw http.ResponseWriter, r *http.Request) {
|
||||
var (
|
||||
ctx = r.Context()
|
||||
|
||||
@@ -16,6 +16,14 @@ import (
|
||||
"github.com/coder/coder/codersdk"
|
||||
)
|
||||
|
||||
// @Summary Get organization by ID
|
||||
// @ID get-organization-by-id
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Organizations
|
||||
// @Param organization path string true "Organization ID" format(uuid)
|
||||
// @Success 200 {object} codersdk.Organization
|
||||
// @Router /organizations/{organization} [get]
|
||||
func (api *API) organization(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
organization := httpmw.OrganizationParam(r)
|
||||
@@ -29,6 +37,14 @@ func (api *API) organization(rw http.ResponseWriter, r *http.Request) {
|
||||
httpapi.Write(ctx, rw, http.StatusOK, convertOrganization(organization))
|
||||
}
|
||||
|
||||
// @Summary Create organization
|
||||
// @ID create-organization
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Organizations
|
||||
// @Param request body codersdk.CreateOrganizationRequest true "Create organization request"
|
||||
// @Success 201 {object} codersdk.Organization
|
||||
// @Router /organizations [post]
|
||||
func (api *API) postOrganizations(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
apiKey := httpmw.APIKey(r)
|
||||
|
||||
@@ -23,6 +23,15 @@ func (api *API) assignableSiteRoles(rw http.ResponseWriter, r *http.Request) {
|
||||
httpapi.Write(ctx, rw, http.StatusOK, assignableRoles(actorRoles.Roles, roles))
|
||||
}
|
||||
|
||||
// @Summary Get member roles by organization
|
||||
// @ID get-member-roles-by-organization
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Members
|
||||
// @Param organization path string true "Organization ID" format(uuid)
|
||||
// @Success 200 {array} codersdk.AssignableRoles
|
||||
// @Router /organizations/{organization}/members/roles [get]
|
||||
//
|
||||
// assignableSiteRoles returns all site wide roles that can be assigned.
|
||||
func (api *API) assignableOrgRoles(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
||||
+21
-5
@@ -138,9 +138,9 @@ func (api *API) deleteTemplate(rw http.ResponseWriter, r *http.Request) {
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param request body codersdk.CreateTemplateRequest true "Request body"
|
||||
// @Param organization-id path string true "Organization ID"
|
||||
// @Param organization path string true "Organization ID"
|
||||
// @Success 200 {object} codersdk.Template
|
||||
// @Router /organizations/{organization-id}/templates/ [post]
|
||||
// @Router /organizations/{organization}/templates [post]
|
||||
// Returns a single template.
|
||||
// Create a new template in an organization.
|
||||
func (api *API) postTemplateByOrganization(rw http.ResponseWriter, r *http.Request) {
|
||||
@@ -336,7 +336,7 @@ func (api *API) postTemplateByOrganization(rw http.ResponseWriter, r *http.Reque
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param organization path string true "Organization ID" format(uuid)
|
||||
// @Success 200 {object} []codersdk.Template
|
||||
// @Success 200 {array} codersdk.Template
|
||||
// @Router /organizations/{organization}/templates [get]
|
||||
func (api *API) templatesByOrganization(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
@@ -402,9 +402,9 @@ func (api *API) templatesByOrganization(rw http.ResponseWriter, r *http.Request)
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param organization path string true "Organization ID" format(uuid)
|
||||
// @Param template-name path string true "Template name"
|
||||
// @Param templatename path string true "Template name"
|
||||
// @Success 200 {object} codersdk.Template
|
||||
// @Router /organizations/{organization}/templates/{template-name} [get]
|
||||
// @Router /organizations/{organization}/templates/{templatename} [get]
|
||||
func (api *API) templateByOrganizationAndName(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
organization := httpmw.OrganizationParam(r)
|
||||
@@ -588,6 +588,14 @@ func (api *API) patchTemplateMeta(rw http.ResponseWriter, r *http.Request) {
|
||||
httpapi.Write(ctx, rw, http.StatusOK, api.convertTemplate(updated, count, createdByNameMap[updated.ID.String()]))
|
||||
}
|
||||
|
||||
// @Summary Get template DAUs by ID
|
||||
// @ID get-template-daus-by-id
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param id path string true "Template ID" format(uuid)
|
||||
// @Success 200 {object} codersdk.TemplateDAUsResponse
|
||||
// @Router /templates/{id}/daus [get]
|
||||
func (api *API) templateDAUs(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
template := httpmw.TemplateParam(r)
|
||||
@@ -606,6 +614,14 @@ func (api *API) templateDAUs(rw http.ResponseWriter, r *http.Request) {
|
||||
httpapi.Write(ctx, rw, http.StatusOK, resp)
|
||||
}
|
||||
|
||||
// @Summary Get template examples by organization
|
||||
// @ID get-template-examples-by-organization
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param organization path string true "Organization ID" format(uuid)
|
||||
// @Success 200 {array} codersdk.TemplateExample
|
||||
// @Router /organizations/{organization}/templates/examples [get]
|
||||
func (api *API) templateExamples(rw http.ResponseWriter, r *http.Request) {
|
||||
var (
|
||||
ctx = r.Context()
|
||||
|
||||
+159
-1
@@ -28,6 +28,14 @@ import (
|
||||
"github.com/coder/coder/examples"
|
||||
)
|
||||
|
||||
// @Summary Get template version by ID
|
||||
// @ID get-template-version-by-id
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param templateversion path string true "Template version ID" format(uuid)
|
||||
// @Success 200 {object} codersdk.TemplateVersion
|
||||
// @Router /templateversions/{templateversion} [get]
|
||||
func (api *API) templateVersion(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
var (
|
||||
@@ -61,6 +69,14 @@ func (api *API) templateVersion(rw http.ResponseWriter, r *http.Request) {
|
||||
httpapi.Write(ctx, rw, http.StatusOK, convertTemplateVersion(templateVersion, convertProvisionerJob(job), user))
|
||||
}
|
||||
|
||||
// @Summary Cancel template version by ID
|
||||
// @ID cancel-template-version-by-id
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param templateversion path string true "Template version ID" format(uuid)
|
||||
// @Success 200 {object} codersdk.Response
|
||||
// @Router /templateversions/{templateversion}/cancel [patch]
|
||||
func (api *API) patchCancelTemplateVersion(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
var (
|
||||
@@ -116,6 +132,14 @@ func (api *API) patchCancelTemplateVersion(rw http.ResponseWriter, r *http.Reque
|
||||
})
|
||||
}
|
||||
|
||||
// @Summary Get schema by template version
|
||||
// @ID get-schema-by-template-version
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param templateversion path string true "Template version ID" format(uuid)
|
||||
// @Success 200 {array} codersdk.ParameterSchema
|
||||
// @Router /templateversions/{templateversion}/schema [get]
|
||||
func (api *API) templateVersionSchema(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
var (
|
||||
@@ -168,6 +192,14 @@ func (api *API) templateVersionSchema(rw http.ResponseWriter, r *http.Request) {
|
||||
httpapi.Write(ctx, rw, http.StatusOK, apiSchemas)
|
||||
}
|
||||
|
||||
// @Summary Get parameters by template version
|
||||
// @ID get-parameters-by-template-version
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param templateversion path string true "Template version ID" format(uuid)
|
||||
// @Success 200 {array} parameter.ComputedValue
|
||||
// @Router /templateversions/{templateversion}/parameters [get]
|
||||
func (api *API) templateVersionParameters(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
var (
|
||||
@@ -213,6 +245,16 @@ func (api *API) templateVersionParameters(rw http.ResponseWriter, r *http.Reques
|
||||
httpapi.Write(ctx, rw, http.StatusOK, values)
|
||||
}
|
||||
|
||||
// @Summary Create template version dry-run
|
||||
// @ID create-template-version-dry-run
|
||||
// @Security CoderSessionToken
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param templateversion path string true "Template version ID" format(uuid)
|
||||
// @Param request body codersdk.CreateTemplateVersionDryRunRequest true "Dry-run request"
|
||||
// @Success 201 {object} codersdk.ProvisionerJob
|
||||
// @Router /templateversions/{templateversion}/dry-run [post]
|
||||
func (api *API) postTemplateVersionDryRun(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
var (
|
||||
@@ -308,6 +350,16 @@ func (api *API) postTemplateVersionDryRun(rw http.ResponseWriter, r *http.Reques
|
||||
httpapi.Write(ctx, rw, http.StatusCreated, convertProvisionerJob(provisionerJob))
|
||||
}
|
||||
|
||||
// @Summary Get template version dry-run by job ID
|
||||
// @ID get-template-version-dry-run-by-job-id
|
||||
// @Security CoderSessionToken
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param templateversion path string true "Template version ID" format(uuid)
|
||||
// @Param jobid path string true "Job ID" format(uuid)
|
||||
// @Success 200 {object} codersdk.ProvisionerJob
|
||||
// @Router /templateversions/{templateversion}/dry-run/{jobid} [get]
|
||||
func (api *API) templateVersionDryRun(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
job, ok := api.fetchTemplateVersionDryRunJob(rw, r)
|
||||
@@ -318,6 +370,15 @@ func (api *API) templateVersionDryRun(rw http.ResponseWriter, r *http.Request) {
|
||||
httpapi.Write(ctx, rw, http.StatusOK, convertProvisionerJob(job))
|
||||
}
|
||||
|
||||
// @Summary Get template version dry-run resources by job ID
|
||||
// @ID get-template-version-dry-run-resources-by-job-id
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param templateversion path string true "Template version ID" format(uuid)
|
||||
// @Param jobid path string true "Job ID" format(uuid)
|
||||
// @Success 200 {array} codersdk.WorkspaceResource
|
||||
// @Router /templateversions/{templateversion}/dry-run/{jobid}/resources [get]
|
||||
func (api *API) templateVersionDryRunResources(rw http.ResponseWriter, r *http.Request) {
|
||||
job, ok := api.fetchTemplateVersionDryRunJob(rw, r)
|
||||
if !ok {
|
||||
@@ -327,6 +388,18 @@ func (api *API) templateVersionDryRunResources(rw http.ResponseWriter, r *http.R
|
||||
api.provisionerJobResources(rw, r, job)
|
||||
}
|
||||
|
||||
// @Summary Get template version dry-run logs by job ID
|
||||
// @ID get-template-version-dry-run-logs-by-job-id
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param templateversion path string true "Template version ID" format(uuid)
|
||||
// @Param jobid path string true "Job ID" format(uuid)
|
||||
// @Param before query int false "Before Unix timestamp"
|
||||
// @Param after query int false "After Unix timestamp"
|
||||
// @Param follow query bool false "Follow log stream"
|
||||
// @Success 200 {array} codersdk.ProvisionerJobLog
|
||||
// @Router /templateversions/{templateversion}/dry-run/{jobid}/logs [get]
|
||||
func (api *API) templateVersionDryRunLogs(rw http.ResponseWriter, r *http.Request) {
|
||||
job, ok := api.fetchTemplateVersionDryRunJob(rw, r)
|
||||
if !ok {
|
||||
@@ -336,6 +409,14 @@ func (api *API) templateVersionDryRunLogs(rw http.ResponseWriter, r *http.Reques
|
||||
api.provisionerJobLogs(rw, r, job)
|
||||
}
|
||||
|
||||
// @Summary Cancel template version dry-run by job ID
|
||||
// @ID cancel-template-version-dry-run-by-job-id
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param templateversion path string true "Template version ID" format(uuid)
|
||||
// @Success 200 {object} codersdk.Response
|
||||
// @Router /templateversions/{templateversion}/dry-run/{jobid}/cancel [patch]
|
||||
func (api *API) patchTemplateVersionDryRunCancel(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
templateVersion := httpmw.TemplateVersionParam(r)
|
||||
@@ -454,6 +535,14 @@ func (api *API) fetchTemplateVersionDryRunJob(rw http.ResponseWriter, r *http.Re
|
||||
return job, true
|
||||
}
|
||||
|
||||
// @Summary List template versions by template ID
|
||||
// @ID list-template-versions-by-template-ID
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param id path string true "Template ID" format(uuid)
|
||||
// @Success 200 {array} codersdk.TemplateVersion
|
||||
// @Router /templates/{id}/versions [get]
|
||||
func (api *API) templateVersionsByTemplate(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
template := httpmw.TemplateParam(r)
|
||||
@@ -551,6 +640,15 @@ func (api *API) templateVersionsByTemplate(rw http.ResponseWriter, r *http.Reque
|
||||
httpapi.Write(ctx, rw, http.StatusOK, apiVersions)
|
||||
}
|
||||
|
||||
// @Summary Get template version by template ID and name
|
||||
// @ID get-template-version-by-template-id-and-name
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param id path string true "Template ID" format(uuid)
|
||||
// @Param templateversionname path string true "Template version name"
|
||||
// @Success 200 {array} codersdk.TemplateVersion
|
||||
// @Router /templates/{id}/versions/{templateversionname} [get]
|
||||
func (api *API) templateVersionByName(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
template := httpmw.TemplateParam(r)
|
||||
@@ -601,6 +699,15 @@ func (api *API) templateVersionByName(rw http.ResponseWriter, r *http.Request) {
|
||||
httpapi.Write(ctx, rw, http.StatusOK, convertTemplateVersion(templateVersion, convertProvisionerJob(job), user))
|
||||
}
|
||||
|
||||
// @Summary Get template version by organization and name
|
||||
// @ID get-template-version-by-organization-and-name
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param organization path string true "Organization ID" format(uuid)
|
||||
// @Param templateversionname path string true "Template version name"
|
||||
// @Success 200 {object} codersdk.TemplateVersion
|
||||
// @Router /organizations/{organization}/templateversions/{templateversionname} [get]
|
||||
func (api *API) templateVersionByOrganizationAndName(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
organization := httpmw.OrganizationParam(r)
|
||||
@@ -643,6 +750,15 @@ func (api *API) templateVersionByOrganizationAndName(rw http.ResponseWriter, r *
|
||||
httpapi.Write(ctx, rw, http.StatusOK, convertTemplateVersion(templateVersion, convertProvisionerJob(job), user))
|
||||
}
|
||||
|
||||
// @Summary Get previous template version by organization and name
|
||||
// @ID get-previous-template-version-by-organization-and-name
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param organization path string true "Organization ID" format(uuid)
|
||||
// @Param templateversionname path string true "Template version name"
|
||||
// @Success 200 {object} codersdk.TemplateVersion
|
||||
// @Router /organizations/{organization}/templateversions/{templateversionname}/previous [get]
|
||||
func (api *API) previousTemplateVersionByOrganizationAndName(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
organization := httpmw.OrganizationParam(r)
|
||||
@@ -708,6 +824,16 @@ func (api *API) previousTemplateVersionByOrganizationAndName(rw http.ResponseWri
|
||||
httpapi.Write(ctx, rw, http.StatusOK, convertTemplateVersion(previousTemplateVersion, convertProvisionerJob(job), user))
|
||||
}
|
||||
|
||||
// @Summary Update active template version by template ID
|
||||
// @ID update-active-template-version-by-template-ID
|
||||
// @Security CoderSessionToken
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param request body codersdk.UpdateActiveTemplateVersion true "Modified template version"
|
||||
// @Param id path string true "Template ID" format(uuid)
|
||||
// @Success 200 {object} codersdk.Response
|
||||
// @Router /templates/{id}/versions [patch]
|
||||
func (api *API) patchActiveTemplateVersion(rw http.ResponseWriter, r *http.Request) {
|
||||
var (
|
||||
ctx = r.Context()
|
||||
@@ -782,7 +908,18 @@ func (api *API) patchActiveTemplateVersion(rw http.ResponseWriter, r *http.Reque
|
||||
})
|
||||
}
|
||||
|
||||
// Creates a new version of a template. An import job is queued to parse the storage method provided.
|
||||
// @Summary Create template version by organization
|
||||
// @ID create-template-version-by-organization
|
||||
// @Security CoderSessionToken
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param organization path string true "Organization ID" format(uuid)
|
||||
// @Param request body codersdk.CreateTemplateVersionDryRunRequest true "Create template version request"
|
||||
// @Success 201 {object} codersdk.TemplateVersion
|
||||
// @Router /organizations/{organization}/templateversions [post]
|
||||
//
|
||||
// postTemplateVersionsByOrganization creates a new version of a template. An import job is queued to parse the storage method provided.
|
||||
func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *http.Request) {
|
||||
var (
|
||||
ctx = r.Context()
|
||||
@@ -1067,6 +1204,15 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
|
||||
httpapi.Write(ctx, rw, http.StatusCreated, convertTemplateVersion(templateVersion, convertProvisionerJob(provisionerJob), user))
|
||||
}
|
||||
|
||||
// @Summary Get resources by template version
|
||||
// @ID get-resources-by-template-version
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param templateversion path string true "Template version ID" format(uuid)
|
||||
// @Success 200 {array} codersdk.WorkspaceResource
|
||||
// @Router /templateversions/{templateversion}/resources [get]
|
||||
//
|
||||
// templateVersionResources returns the workspace agent resources associated
|
||||
// with a template version. A template can specify more than one resource to be
|
||||
// provisioned, each resource can have an agent that dials back to coderd. The
|
||||
@@ -1095,6 +1241,18 @@ func (api *API) templateVersionResources(rw http.ResponseWriter, r *http.Request
|
||||
api.provisionerJobResources(rw, r, job)
|
||||
}
|
||||
|
||||
// @Summary Get logs by template version
|
||||
// @ID get-logs-by-template-version
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param templateversion path string true "Template version ID" format(uuid)
|
||||
// @Param before query int false "Before Unix timestamp"
|
||||
// @Param after query int false "After Unix timestamp"
|
||||
// @Param follow query bool false "Follow log stream"
|
||||
// @Success 200 {array} codersdk.ProvisionerJobLog
|
||||
// @Router /templateversions/{templateversion}/logs [get]
|
||||
//
|
||||
// templateVersionLogs returns the logs returned by the provisioner for the given
|
||||
// template version. These logs are only associated with the template version,
|
||||
// and not any build logs for a workspace.
|
||||
|
||||
@@ -266,15 +266,16 @@ func (api *API) workspaceByOwnerAndName(rw http.ResponseWriter, r *http.Request)
|
||||
))
|
||||
}
|
||||
|
||||
// @Summary Create workspace by organization
|
||||
// @ID create-workspace-by-organization
|
||||
// @Summary Create user workspace by organization
|
||||
// @ID create-user-workspace-by-organization
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Workspaces
|
||||
// @Param organization path string true "Organization ID" format(uuid)
|
||||
// @Param user path string true "Username"
|
||||
// @Param user path string true "Username, UUID, or me"
|
||||
// @Success 200 {object} codersdk.Workspace
|
||||
// @Router /organizations/{organization}/members/{user}/workspaces [post]
|
||||
//
|
||||
// Create a new workspace for the currently authenticated user.
|
||||
func (api *API) postWorkspacesByOrganization(rw http.ResponseWriter, r *http.Request) {
|
||||
var (
|
||||
|
||||
@@ -7,9 +7,9 @@ import (
|
||||
)
|
||||
|
||||
type OrganizationMember struct {
|
||||
UserID uuid.UUID `db:"user_id" json:"user_id"`
|
||||
OrganizationID uuid.UUID `db:"organization_id" json:"organization_id"`
|
||||
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
||||
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
|
||||
UserID uuid.UUID `db:"user_id" json:"user_id" format:"uuid"`
|
||||
OrganizationID uuid.UUID `db:"organization_id" json:"organization_id" format:"uuid"`
|
||||
CreatedAt time.Time `db:"created_at" json:"created_at" format:"date-time"`
|
||||
UpdatedAt time.Time `db:"updated_at" json:"updated_at" format:"date-time"`
|
||||
Roles []Role `db:"roles" json:"roles"`
|
||||
}
|
||||
|
||||
@@ -26,10 +26,10 @@ const (
|
||||
|
||||
// Organization is the JSON representation of a Coder organization.
|
||||
type Organization struct {
|
||||
ID uuid.UUID `json:"id" validate:"required"`
|
||||
ID uuid.UUID `json:"id" validate:"required" format:"uuid"`
|
||||
Name string `json:"name" validate:"required"`
|
||||
CreatedAt time.Time `json:"created_at" validate:"required"`
|
||||
UpdatedAt time.Time `json:"updated_at" validate:"required"`
|
||||
CreatedAt time.Time `json:"created_at" validate:"required" format:"date-time"`
|
||||
UpdatedAt time.Time `json:"updated_at" validate:"required" format:"date-time"`
|
||||
}
|
||||
|
||||
// CreateTemplateVersionRequest enables callers to create a new Template Version.
|
||||
|
||||
@@ -94,7 +94,7 @@ type CreateParameterRequest struct {
|
||||
// succeed.
|
||||
// No other fields are required if using this, as all fields will be copied
|
||||
// from the other parameter.
|
||||
CloneID uuid.UUID `json:"copy_from_parameter,omitempty" validate:""`
|
||||
CloneID uuid.UUID `json:"copy_from_parameter,omitempty" validate:"" format:"uuid"`
|
||||
|
||||
Name string `json:"name" validate:"required"`
|
||||
SourceValue string `json:"source_value" validate:"required"`
|
||||
|
||||
@@ -214,6 +214,7 @@ type DAUEntry struct {
|
||||
Amount int `json:"amount"`
|
||||
}
|
||||
|
||||
// TemplateDAUsResponse contains statistics of daily active users of the template.
|
||||
type TemplateDAUsResponse struct {
|
||||
Entries []DAUEntry `json:"entries"`
|
||||
}
|
||||
|
||||
@@ -13,11 +13,11 @@ import (
|
||||
|
||||
// TemplateVersion represents a single version of a template.
|
||||
type TemplateVersion struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
TemplateID *uuid.UUID `json:"template_id,omitempty"`
|
||||
OrganizationID uuid.UUID `json:"organization_id,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
ID uuid.UUID `json:"id" format:"uuid"`
|
||||
TemplateID *uuid.UUID `json:"template_id,omitempty" format:"uuid"`
|
||||
OrganizationID uuid.UUID `json:"organization_id,omitempty" format:"uuid"`
|
||||
CreatedAt time.Time `json:"created_at" format:"date-time"`
|
||||
UpdatedAt time.Time `json:"updated_at" format:"date-time"`
|
||||
Name string `json:"name"`
|
||||
Job ProvisionerJob `json:"job"`
|
||||
Readme string `json:"readme"`
|
||||
|
||||
+9
-9
@@ -35,16 +35,16 @@ type UsersRequest struct {
|
||||
|
||||
// User represents a user in Coder.
|
||||
type User struct {
|
||||
ID uuid.UUID `json:"id" validate:"required" table:"id"`
|
||||
ID uuid.UUID `json:"id" validate:"required" table:"id" format:"uuid"`
|
||||
Username string `json:"username" validate:"required" table:"username"`
|
||||
Email string `json:"email" validate:"required" table:"email"`
|
||||
CreatedAt time.Time `json:"created_at" validate:"required" table:"created at"`
|
||||
LastSeenAt time.Time `json:"last_seen_at"`
|
||||
CreatedAt time.Time `json:"created_at" validate:"required" table:"created at" format:"date-time"`
|
||||
LastSeenAt time.Time `json:"last_seen_at" format:"date-time"`
|
||||
|
||||
Status UserStatus `json:"status" table:"status"`
|
||||
OrganizationIDs []uuid.UUID `json:"organization_ids"`
|
||||
Status UserStatus `json:"status" table:"status" enums:"active,suspended"`
|
||||
OrganizationIDs []uuid.UUID `json:"organization_ids" format:"uuid"`
|
||||
Roles []Role `json:"roles"`
|
||||
AvatarURL string `json:"avatar_url"`
|
||||
AvatarURL string `json:"avatar_url" format:"uri"`
|
||||
}
|
||||
|
||||
type GetUsersResponse struct {
|
||||
@@ -61,15 +61,15 @@ type CreateFirstUserRequest struct {
|
||||
|
||||
// CreateFirstUserResponse contains IDs for newly created user info.
|
||||
type CreateFirstUserResponse struct {
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
OrganizationID uuid.UUID `json:"organization_id"`
|
||||
UserID uuid.UUID `json:"user_id" format:"uuid"`
|
||||
OrganizationID uuid.UUID `json:"organization_id" format:"uuid"`
|
||||
}
|
||||
|
||||
type CreateUserRequest struct {
|
||||
Email string `json:"email" validate:"required,email"`
|
||||
Username string `json:"username" validate:"required,username"`
|
||||
Password string `json:"password" validate:"required"`
|
||||
OrganizationID uuid.UUID `json:"organization_id" validate:"required"`
|
||||
OrganizationID uuid.UUID `json:"organization_id" validate:"required" format:"uuid"`
|
||||
}
|
||||
|
||||
type UpdateUserProfileRequest struct {
|
||||
|
||||
+5
-5
@@ -60,12 +60,12 @@ curl -X GET http://coder-server:8080/api/v2/audit?q=string \
|
||||
"status_code": 0,
|
||||
"time": "string",
|
||||
"user": {
|
||||
"avatar_url": "string",
|
||||
"created_at": "string",
|
||||
"avatar_url": "http://example.com",
|
||||
"created_at": "2019-08-24T14:15:22Z",
|
||||
"email": "string",
|
||||
"id": "string",
|
||||
"last_seen_at": "string",
|
||||
"organization_ids": ["string"],
|
||||
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
|
||||
"last_seen_at": "2019-08-24T14:15:22Z",
|
||||
"organization_ids": ["497f6eca-6276-4993-bfeb-53cbbbba6f08"],
|
||||
"roles": [
|
||||
{
|
||||
"display_name": "string",
|
||||
|
||||
+1
-1
@@ -891,7 +891,7 @@ curl -X POST http://coder-server:8080/api/v2/workspaces/{id}/builds \
|
||||
"orphan": true,
|
||||
"parameter_values": [
|
||||
{
|
||||
"copy_from_parameter": "string",
|
||||
"copy_from_parameter": "000e07d6-021d-446c-be14-48a9c20bca0b",
|
||||
"destination_scheme": "none",
|
||||
"name": "string",
|
||||
"source_scheme": "none",
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
# Members
|
||||
|
||||
> This page is incomplete, stay tuned.
|
||||
|
||||
## Get member roles by organization
|
||||
|
||||
### Code samples
|
||||
|
||||
```shell
|
||||
# Example request using curl
|
||||
curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/members/roles \
|
||||
-H 'Accept: application/json' \
|
||||
-H 'Coder-Session-Token: API_KEY'
|
||||
```
|
||||
|
||||
`GET /organizations/{organization}/members/roles`
|
||||
|
||||
### Parameters
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
| -------------- | ---- | ------------ | -------- | --------------- |
|
||||
| `organization` | path | string(uuid) | true | Organization ID |
|
||||
|
||||
### Example responses
|
||||
|
||||
> 200 Response
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"assignable": true,
|
||||
"display_name": "string",
|
||||
"name": "string"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### Responses
|
||||
|
||||
| Status | Meaning | Description | Schema |
|
||||
| ------ | ------------------------------------------------------- | ----------- | ----------------------------------------------------------------------- |
|
||||
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | array of [codersdk.AssignableRoles](schemas.md#codersdkassignableroles) |
|
||||
|
||||
<h3 id="get-member-roles-by-organization-responseschema">Response Schema</h3>
|
||||
|
||||
Status Code **200**
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ---------------- | ------- | -------- | ------------ | ----------- |
|
||||
| `[array item]` | array | false | | |
|
||||
| `» assignable` | boolean | false | | |
|
||||
| `» display_name` | string | false | | |
|
||||
| `» name` | string | false | | |
|
||||
|
||||
To perform this operation, you must be authenticated. [Learn more](authentication.md).
|
||||
|
||||
## Assign role to organization member
|
||||
|
||||
### Code samples
|
||||
|
||||
```shell
|
||||
# Example request using curl
|
||||
curl -X PUT http://coder-server:8080/api/v2/organizations/{organization}/members/{user}/roles \
|
||||
-H 'Content-Type: application/json' \
|
||||
-H 'Accept: application/json' \
|
||||
-H 'Coder-Session-Token: API_KEY'
|
||||
```
|
||||
|
||||
`PUT /organizations/{organization}/members/{user}/roles`
|
||||
|
||||
> Body parameter
|
||||
|
||||
```json
|
||||
{
|
||||
"roles": ["string"]
|
||||
}
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
| -------------- | ---- | ------------------------------------------------------ | -------- | --------------------- |
|
||||
| `organization` | path | string | true | Organization ID |
|
||||
| `user` | path | string | true | Username, UUID, or me |
|
||||
| `body` | body | [codersdk.UpdateRoles](schemas.md#codersdkupdateroles) | true | Update roles request |
|
||||
|
||||
### Example responses
|
||||
|
||||
> 200 Response
|
||||
|
||||
```json
|
||||
{
|
||||
"created_at": "2019-08-24T14:15:22Z",
|
||||
"organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6",
|
||||
"roles": [
|
||||
{
|
||||
"display_name": "string",
|
||||
"name": "string"
|
||||
}
|
||||
],
|
||||
"updated_at": "2019-08-24T14:15:22Z",
|
||||
"user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
|
||||
}
|
||||
```
|
||||
|
||||
### Responses
|
||||
|
||||
| Status | Meaning | Description | Schema |
|
||||
| ------ | ------------------------------------------------------- | ----------- | -------------------------------------------------------------------- |
|
||||
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.OrganizationMember](schemas.md#codersdkorganizationmember) |
|
||||
|
||||
To perform this operation, you must be authenticated. [Learn more](authentication.md).
|
||||
@@ -0,0 +1,92 @@
|
||||
# Organizations
|
||||
|
||||
> This page is incomplete, stay tuned.
|
||||
|
||||
## Create organization
|
||||
|
||||
### Code samples
|
||||
|
||||
```shell
|
||||
# Example request using curl
|
||||
curl -X POST http://coder-server:8080/api/v2/organizations \
|
||||
-H 'Content-Type: application/json' \
|
||||
-H 'Accept: application/json' \
|
||||
-H 'Coder-Session-Token: API_KEY'
|
||||
```
|
||||
|
||||
`POST /organizations`
|
||||
|
||||
> Body parameter
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "string"
|
||||
}
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
| ------ | ---- | ---------------------------------------------------------------------------------- | -------- | --------------------------- |
|
||||
| `body` | body | [codersdk.CreateOrganizationRequest](schemas.md#codersdkcreateorganizationrequest) | true | Create organization request |
|
||||
|
||||
### Example responses
|
||||
|
||||
> 201 Response
|
||||
|
||||
```json
|
||||
{
|
||||
"created_at": "2019-08-24T14:15:22Z",
|
||||
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
|
||||
"name": "string",
|
||||
"updated_at": "2019-08-24T14:15:22Z"
|
||||
}
|
||||
```
|
||||
|
||||
### Responses
|
||||
|
||||
| Status | Meaning | Description | Schema |
|
||||
| ------ | ------------------------------------------------------------ | ----------- | -------------------------------------------------------- |
|
||||
| 201 | [Created](https://tools.ietf.org/html/rfc7231#section-6.3.2) | Created | [codersdk.Organization](schemas.md#codersdkorganization) |
|
||||
|
||||
To perform this operation, you must be authenticated. [Learn more](authentication.md).
|
||||
|
||||
## Get organization by ID
|
||||
|
||||
### Code samples
|
||||
|
||||
```shell
|
||||
# Example request using curl
|
||||
curl -X GET http://coder-server:8080/api/v2/organizations/{organization} \
|
||||
-H 'Accept: application/json' \
|
||||
-H 'Coder-Session-Token: API_KEY'
|
||||
```
|
||||
|
||||
`GET /organizations/{organization}`
|
||||
|
||||
### Parameters
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
| -------------- | ---- | ------------ | -------- | --------------- |
|
||||
| `organization` | path | string(uuid) | true | Organization ID |
|
||||
|
||||
### Example responses
|
||||
|
||||
> 200 Response
|
||||
|
||||
```json
|
||||
{
|
||||
"created_at": "2019-08-24T14:15:22Z",
|
||||
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
|
||||
"name": "string",
|
||||
"updated_at": "2019-08-24T14:15:22Z"
|
||||
}
|
||||
```
|
||||
|
||||
### Responses
|
||||
|
||||
| Status | Meaning | Description | Schema |
|
||||
| ------ | ------------------------------------------------------- | ----------- | -------------------------------------------------------- |
|
||||
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.Organization](schemas.md#codersdkorganization) |
|
||||
|
||||
To perform this operation, you must be authenticated. [Learn more](authentication.md).
|
||||
@@ -104,7 +104,7 @@ curl -X POST http://coder-server:8080/api/v2/parameters/{scope}/{id} \
|
||||
|
||||
```json
|
||||
{
|
||||
"copy_from_parameter": "string",
|
||||
"copy_from_parameter": "000e07d6-021d-446c-be14-48a9c20bca0b",
|
||||
"destination_scheme": "none",
|
||||
"name": "string",
|
||||
"source_scheme": "none",
|
||||
|
||||
+413
-18
@@ -90,6 +90,24 @@
|
||||
| ----------------- | ------- | -------- | ------------ | ------------------------------------------------------------------------------ |
|
||||
| `report_interval` | integer | false | | Report interval is the duration after which the agent should send stats again. |
|
||||
|
||||
## codersdk.AssignableRoles
|
||||
|
||||
```json
|
||||
{
|
||||
"assignable": true,
|
||||
"display_name": "string",
|
||||
"name": "string"
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| -------------- | ------- | -------- | ------------ | ----------- |
|
||||
| `assignable` | boolean | false | | |
|
||||
| `display_name` | string | false | | |
|
||||
| `name` | string | false | | |
|
||||
|
||||
## codersdk.AuditAction
|
||||
|
||||
```json
|
||||
@@ -181,12 +199,12 @@
|
||||
"status_code": 0,
|
||||
"time": "string",
|
||||
"user": {
|
||||
"avatar_url": "string",
|
||||
"created_at": "string",
|
||||
"avatar_url": "http://example.com",
|
||||
"created_at": "2019-08-24T14:15:22Z",
|
||||
"email": "string",
|
||||
"id": "string",
|
||||
"last_seen_at": "string",
|
||||
"organization_ids": ["string"],
|
||||
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
|
||||
"last_seen_at": "2019-08-24T14:15:22Z",
|
||||
"organization_ids": ["497f6eca-6276-4993-bfeb-53cbbbba6f08"],
|
||||
"roles": [
|
||||
{
|
||||
"display_name": "string",
|
||||
@@ -257,12 +275,12 @@
|
||||
"status_code": 0,
|
||||
"time": "string",
|
||||
"user": {
|
||||
"avatar_url": "string",
|
||||
"created_at": "string",
|
||||
"avatar_url": "http://example.com",
|
||||
"created_at": "2019-08-24T14:15:22Z",
|
||||
"email": "string",
|
||||
"id": "string",
|
||||
"last_seen_at": "string",
|
||||
"organization_ids": ["string"],
|
||||
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
|
||||
"last_seen_at": "2019-08-24T14:15:22Z",
|
||||
"organization_ids": ["497f6eca-6276-4993-bfeb-53cbbbba6f08"],
|
||||
"roles": [
|
||||
{
|
||||
"display_name": "string",
|
||||
@@ -437,11 +455,25 @@ AuthorizationObject can represent a "set" of objects, such as: all workspaces in
|
||||
| `autostart` |
|
||||
| `autostop` |
|
||||
|
||||
## codersdk.CreateOrganizationRequest
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "string"
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ------ | ------ | -------- | ------------ | ----------- |
|
||||
| `name` | string | true | | |
|
||||
|
||||
## codersdk.CreateParameterRequest
|
||||
|
||||
```json
|
||||
{
|
||||
"copy_from_parameter": "string",
|
||||
"copy_from_parameter": "000e07d6-021d-446c-be14-48a9c20bca0b",
|
||||
"destination_scheme": "none",
|
||||
"name": "string",
|
||||
"source_scheme": "none",
|
||||
@@ -483,7 +515,7 @@ CreateParameterRequest is a structure used to create a new parameter value for a
|
||||
"name": "string",
|
||||
"parameter_values": [
|
||||
{
|
||||
"copy_from_parameter": "string",
|
||||
"copy_from_parameter": "000e07d6-021d-446c-be14-48a9c20bca0b",
|
||||
"destination_scheme": "none",
|
||||
"name": "string",
|
||||
"source_scheme": "none",
|
||||
@@ -508,6 +540,30 @@ CreateParameterRequest is a structure used to create a new parameter value for a
|
||||
| `template_version_id` | string | true | | Template version ID is an in-progress or completed job to use as an initial version of the template. |
|
||||
| This is required on creation to enable a user-flow of validating a template works. There is no reason the data-model cannot support empty templates, but it doesn't make sense for users. |
|
||||
|
||||
## codersdk.CreateTemplateVersionDryRunRequest
|
||||
|
||||
```json
|
||||
{
|
||||
"parameter_values": [
|
||||
{
|
||||
"copy_from_parameter": "000e07d6-021d-446c-be14-48a9c20bca0b",
|
||||
"destination_scheme": "none",
|
||||
"name": "string",
|
||||
"source_scheme": "none",
|
||||
"source_value": "string"
|
||||
}
|
||||
],
|
||||
"workspace_name": "string"
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ------------------ | --------------------------------------------------------------------------- | -------- | ------------ | ---------------------------------------------------------------------------------- |
|
||||
| `parameter_values` | array of [codersdk.CreateParameterRequest](#codersdkcreateparameterrequest) | false | | Parameter values is a structure used to create a new parameter value for a scope.] |
|
||||
| `workspace_name` | string | false | | |
|
||||
|
||||
## codersdk.CreateTestAuditLogRequest
|
||||
|
||||
```json
|
||||
@@ -555,7 +611,7 @@ CreateParameterRequest is a structure used to create a new parameter value for a
|
||||
"orphan": true,
|
||||
"parameter_values": [
|
||||
{
|
||||
"copy_from_parameter": "string",
|
||||
"copy_from_parameter": "000e07d6-021d-446c-be14-48a9c20bca0b",
|
||||
"destination_scheme": "none",
|
||||
"name": "string",
|
||||
"source_scheme": "none",
|
||||
@@ -588,6 +644,22 @@ CreateParameterRequest is a structure used to create a new parameter value for a
|
||||
| `transition` | `stop` |
|
||||
| `transition` | `delete` |
|
||||
|
||||
## codersdk.DAUEntry
|
||||
|
||||
```json
|
||||
{
|
||||
"amount": 0,
|
||||
"date": "string"
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| -------- | ------- | -------- | ------------ | ----------- |
|
||||
| `amount` | integer | false | | |
|
||||
| `date` | string | false | | |
|
||||
|
||||
## codersdk.DERP
|
||||
|
||||
```json
|
||||
@@ -2328,6 +2400,53 @@ CreateParameterRequest is a structure used to create a new parameter value for a
|
||||
| `scopes` | [codersdk.DeploymentConfigField-array_string](#codersdkdeploymentconfigfield-array_string) | false | | |
|
||||
| `username_field` | [codersdk.DeploymentConfigField-string](#codersdkdeploymentconfigfield-string) | false | | |
|
||||
|
||||
## codersdk.Organization
|
||||
|
||||
```json
|
||||
{
|
||||
"created_at": "2019-08-24T14:15:22Z",
|
||||
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
|
||||
"name": "string",
|
||||
"updated_at": "2019-08-24T14:15:22Z"
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ------------ | ------ | -------- | ------------ | ----------- |
|
||||
| `created_at` | string | true | | |
|
||||
| `id` | string | true | | |
|
||||
| `name` | string | true | | |
|
||||
| `updated_at` | string | true | | |
|
||||
|
||||
## codersdk.OrganizationMember
|
||||
|
||||
```json
|
||||
{
|
||||
"created_at": "2019-08-24T14:15:22Z",
|
||||
"organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6",
|
||||
"roles": [
|
||||
{
|
||||
"display_name": "string",
|
||||
"name": "string"
|
||||
}
|
||||
],
|
||||
"updated_at": "2019-08-24T14:15:22Z",
|
||||
"user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ----------------- | --------------------------------------- | -------- | ------------ | ----------- |
|
||||
| `created_at` | string | false | | |
|
||||
| `organization_id` | string | false | | |
|
||||
| `roles` | array of [codersdk.Role](#codersdkrole) | false | | |
|
||||
| `updated_at` | string | false | | |
|
||||
| `user_id` | string | false | | |
|
||||
|
||||
## codersdk.Parameter
|
||||
|
||||
```json
|
||||
@@ -2387,6 +2506,62 @@ Parameter represents a set value for the scope.
|
||||
| `environment_variable` |
|
||||
| `provisioner_variable` |
|
||||
|
||||
## codersdk.ParameterSchema
|
||||
|
||||
```json
|
||||
{
|
||||
"allow_override_destination": true,
|
||||
"allow_override_source": true,
|
||||
"created_at": "2019-08-24T14:15:22Z",
|
||||
"default_destination_scheme": "none",
|
||||
"default_refresh": "string",
|
||||
"default_source_scheme": "none",
|
||||
"default_source_value": "string",
|
||||
"description": "string",
|
||||
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
|
||||
"job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
|
||||
"name": "string",
|
||||
"redisplay_value": true,
|
||||
"validation_condition": "string",
|
||||
"validation_contains": ["string"],
|
||||
"validation_error": "string",
|
||||
"validation_type_system": "string",
|
||||
"validation_value_type": "string"
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ---------------------------- | -------------------------------------------------------------------------- | -------- | ------------ | ----------------------------------------------------------------------------------------------------------------------- |
|
||||
| `allow_override_destination` | boolean | false | | |
|
||||
| `allow_override_source` | boolean | false | | |
|
||||
| `created_at` | string | false | | |
|
||||
| `default_destination_scheme` | [codersdk.ParameterDestinationScheme](#codersdkparameterdestinationscheme) | false | | |
|
||||
| `default_refresh` | string | false | | |
|
||||
| `default_source_scheme` | [codersdk.ParameterSourceScheme](#codersdkparametersourcescheme) | false | | |
|
||||
| `default_source_value` | string | false | | |
|
||||
| `description` | string | false | | |
|
||||
| `id` | string | false | | |
|
||||
| `job_id` | string | false | | |
|
||||
| `name` | string | false | | |
|
||||
| `redisplay_value` | boolean | false | | |
|
||||
| `validation_condition` | string | false | | |
|
||||
| `validation_contains` | array of string | false | | This is a special array of items provided if the validation condition explicitly states the value must be one of a set. |
|
||||
| `validation_error` | string | false | | |
|
||||
| `validation_type_system` | string | false | | |
|
||||
| `validation_value_type` | string | false | | |
|
||||
|
||||
#### Enumerated Values
|
||||
|
||||
| Property | Value |
|
||||
| ---------------------------- | ---------------------- |
|
||||
| `default_destination_scheme` | `none` |
|
||||
| `default_destination_scheme` | `environment_variable` |
|
||||
| `default_destination_scheme` | `provisioner_variable` |
|
||||
| `default_source_scheme` | `none` |
|
||||
| `default_source_scheme` | `data` |
|
||||
|
||||
## codersdk.ParameterScope
|
||||
|
||||
```json
|
||||
@@ -3065,6 +3240,110 @@ Parameter represents a set value for the scope.
|
||||
| ---------------- | ---------------------------------------------------- | -------- | ------------ | ----------- |
|
||||
| `[any property]` | [codersdk.TransitionStats](#codersdktransitionstats) | false | | |
|
||||
|
||||
## codersdk.TemplateDAUsResponse
|
||||
|
||||
```json
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"amount": 0,
|
||||
"date": "string"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| --------- | ----------------------------------------------- | -------- | ------------ | ----------- |
|
||||
| `entries` | array of [codersdk.DAUEntry](#codersdkdauentry) | false | | |
|
||||
|
||||
## codersdk.TemplateExample
|
||||
|
||||
```json
|
||||
{
|
||||
"description": "string",
|
||||
"icon": "string",
|
||||
"id": "string",
|
||||
"markdown": "string",
|
||||
"name": "string",
|
||||
"tags": ["string"],
|
||||
"url": "string"
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ------------- | --------------- | -------- | ------------ | ----------- |
|
||||
| `description` | string | false | | |
|
||||
| `icon` | string | false | | |
|
||||
| `id` | string | false | | |
|
||||
| `markdown` | string | false | | |
|
||||
| `name` | string | false | | |
|
||||
| `tags` | array of string | false | | |
|
||||
| `url` | string | false | | |
|
||||
|
||||
## codersdk.TemplateVersion
|
||||
|
||||
```json
|
||||
{
|
||||
"created_at": "2019-08-24T14:15:22Z",
|
||||
"created_by": {
|
||||
"avatar_url": "http://example.com",
|
||||
"created_at": "2019-08-24T14:15:22Z",
|
||||
"email": "string",
|
||||
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
|
||||
"last_seen_at": "2019-08-24T14:15:22Z",
|
||||
"organization_ids": ["497f6eca-6276-4993-bfeb-53cbbbba6f08"],
|
||||
"roles": [
|
||||
{
|
||||
"display_name": "string",
|
||||
"name": "string"
|
||||
}
|
||||
],
|
||||
"status": "active",
|
||||
"username": "string"
|
||||
},
|
||||
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
|
||||
"job": {
|
||||
"canceled_at": "2019-08-24T14:15:22Z",
|
||||
"completed_at": "2019-08-24T14:15:22Z",
|
||||
"created_at": "2019-08-24T14:15:22Z",
|
||||
"error": "string",
|
||||
"file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",
|
||||
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
|
||||
"started_at": "2019-08-24T14:15:22Z",
|
||||
"status": "pending",
|
||||
"tags": {
|
||||
"property1": "string",
|
||||
"property2": "string"
|
||||
},
|
||||
"worker_id": "ae5fa6f7-c55b-40c1-b40a-b36ac467652b"
|
||||
},
|
||||
"name": "string",
|
||||
"organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6",
|
||||
"readme": "string",
|
||||
"template_id": "c6d67e98-83ea-49f0-8812-e4abae2b68bc",
|
||||
"updated_at": "2019-08-24T14:15:22Z"
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ----------------- | -------------------------------------------------- | -------- | ------------ | ----------- |
|
||||
| `created_at` | string | false | | |
|
||||
| `created_by` | [codersdk.User](#codersdkuser) | false | | |
|
||||
| `id` | string | false | | |
|
||||
| `job` | [codersdk.ProvisionerJob](#codersdkprovisionerjob) | false | | |
|
||||
| `name` | string | false | | |
|
||||
| `organization_id` | string | false | | |
|
||||
| `readme` | string | false | | |
|
||||
| `template_id` | string | false | | |
|
||||
| `updated_at` | string | false | | |
|
||||
|
||||
## codersdk.TraceConfig
|
||||
|
||||
```json
|
||||
@@ -3129,6 +3408,20 @@ Parameter represents a set value for the scope.
|
||||
| `p50` | integer | false | | |
|
||||
| `p95` | integer | false | | |
|
||||
|
||||
## codersdk.UpdateActiveTemplateVersion
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "string"
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ---- | ------ | -------- | ------------ | ----------- |
|
||||
| `id` | string | true | | |
|
||||
|
||||
## codersdk.UpdateCheckResponse
|
||||
|
||||
```json
|
||||
@@ -3147,6 +3440,20 @@ Parameter represents a set value for the scope.
|
||||
| `url` | string | false | | URL to download the latest release of Coder. |
|
||||
| `version` | string | false | | Version is the semantic version for the latest release of Coder. |
|
||||
|
||||
## codersdk.UpdateRoles
|
||||
|
||||
```json
|
||||
{
|
||||
"roles": ["string"]
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ------- | --------------- | -------- | ------------ | ----------- |
|
||||
| `roles` | array of string | false | | |
|
||||
|
||||
## codersdk.UpdateWorkspaceAutostartRequest
|
||||
|
||||
```json
|
||||
@@ -3207,12 +3514,12 @@ Parameter represents a set value for the scope.
|
||||
|
||||
```json
|
||||
{
|
||||
"avatar_url": "string",
|
||||
"created_at": "string",
|
||||
"avatar_url": "http://example.com",
|
||||
"created_at": "2019-08-24T14:15:22Z",
|
||||
"email": "string",
|
||||
"id": "string",
|
||||
"last_seen_at": "string",
|
||||
"organization_ids": ["string"],
|
||||
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
|
||||
"last_seen_at": "2019-08-24T14:15:22Z",
|
||||
"organization_ids": ["497f6eca-6276-4993-bfeb-53cbbbba6f08"],
|
||||
"roles": [
|
||||
{
|
||||
"display_name": "string",
|
||||
@@ -3238,6 +3545,13 @@ Parameter represents a set value for the scope.
|
||||
| `status` | [codersdk.UserStatus](#codersdkuserstatus) | false | | |
|
||||
| `username` | string | true | | |
|
||||
|
||||
#### Enumerated Values
|
||||
|
||||
| Property | Value |
|
||||
| -------- | ----------- |
|
||||
| `status` | `active` |
|
||||
| `status` | `suspended` |
|
||||
|
||||
## codersdk.UserStatus
|
||||
|
||||
```json
|
||||
@@ -4195,6 +4509,87 @@ Parameter represents a set value for the scope.
|
||||
| `count` | integer | false | | |
|
||||
| `workspaces` | array of [codersdk.Workspace](#codersdkworkspace) | false | | |
|
||||
|
||||
## database.ParameterDestinationScheme
|
||||
|
||||
```json
|
||||
"none"
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
#### Enumerated Values
|
||||
|
||||
| Value |
|
||||
| ---------------------- |
|
||||
| `none` |
|
||||
| `environment_variable` |
|
||||
| `provisioner_variable` |
|
||||
|
||||
## database.ParameterScope
|
||||
|
||||
```json
|
||||
"template"
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
#### Enumerated Values
|
||||
|
||||
| Value |
|
||||
| ------------ |
|
||||
| `template` |
|
||||
| `import_job` |
|
||||
| `workspace` |
|
||||
|
||||
## database.ParameterSourceScheme
|
||||
|
||||
```json
|
||||
"none"
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
#### Enumerated Values
|
||||
|
||||
| Value |
|
||||
| ------ |
|
||||
| `none` |
|
||||
| `data` |
|
||||
|
||||
## parameter.ComputedValue
|
||||
|
||||
```json
|
||||
{
|
||||
"created_at": "string",
|
||||
"default_source_value": true,
|
||||
"destination_scheme": "none",
|
||||
"id": "string",
|
||||
"name": "string",
|
||||
"schema_id": "string",
|
||||
"scope": "template",
|
||||
"scope_id": "string",
|
||||
"source_scheme": "none",
|
||||
"source_value": "string",
|
||||
"updated_at": "string"
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ---------------------- | -------------------------------------------------------------------------- | -------- | ------------ | ----------- |
|
||||
| `created_at` | string | false | | |
|
||||
| `default_source_value` | boolean | false | | |
|
||||
| `destination_scheme` | [database.ParameterDestinationScheme](#databaseparameterdestinationscheme) | false | | |
|
||||
| `id` | string | false | | |
|
||||
| `name` | string | false | | |
|
||||
| `schema_id` | string | false | | |
|
||||
| `scope` | [database.ParameterScope](#databaseparameterscope) | false | | |
|
||||
| `scope_id` | string | false | | |
|
||||
| `source_scheme` | [database.ParameterSourceScheme](#databaseparametersourcescheme) | false | | |
|
||||
| `source_value` | string | false | | |
|
||||
| `updated_at` | string | false | | |
|
||||
|
||||
## tailcfg.DERPMap
|
||||
|
||||
```json
|
||||
|
||||
+1723
-94
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
||||
|
||||
> This page is incomplete, stay tuned.
|
||||
|
||||
## Create workspace by organization
|
||||
## Create user workspace by organization
|
||||
|
||||
### Code samples
|
||||
|
||||
@@ -17,10 +17,10 @@ curl -X POST http://coder-server:8080/api/v2/organizations/{organization}/member
|
||||
|
||||
### Parameters
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
| -------------- | ---- | ------------ | -------- | --------------- |
|
||||
| `organization` | path | string(uuid) | true | Organization ID |
|
||||
| `user` | path | string | true | Username |
|
||||
| Name | In | Type | Required | Description |
|
||||
| -------------- | ---- | ------------ | -------- | --------------------- |
|
||||
| `organization` | path | string(uuid) | true | Organization ID |
|
||||
| `user` | path | string | true | Username, UUID, or me |
|
||||
|
||||
### Example responses
|
||||
|
||||
|
||||
+10
-2
@@ -350,13 +350,21 @@
|
||||
"path": "./api/files.md"
|
||||
},
|
||||
{
|
||||
"title": "Templates",
|
||||
"path": "./api/templates.md"
|
||||
"title": "Organizations",
|
||||
"path": "./api/organizations.md"
|
||||
},
|
||||
{
|
||||
"title": "Members",
|
||||
"path": "./api/members.md"
|
||||
},
|
||||
{
|
||||
"title": "Workspaces",
|
||||
"path": "./api/workspaces.md"
|
||||
},
|
||||
{
|
||||
"title": "Templates",
|
||||
"path": "./api/templates.md"
|
||||
},
|
||||
{
|
||||
"title": "Parameters",
|
||||
"path": "./api/parameters.md"
|
||||
|
||||
Reference in New Issue
Block a user