@@ -23,6 +23,14 @@ import (
2323 "github.com/coder/coder/codersdk"
2424)
2525
26+ // @Summary Get workspace build
27+ // @ID get-workspace-build
28+ // @Security CoderSessionToken
29+ // @Produce json
30+ // @Tags Builds
31+ // @Param workspacebuild path string true "Workspace build ID"
32+ // @Success 200 {object} codersdk.WorkspaceBuild
33+ // @Router /workspacebuilds/{workspacebuild} [get]
2634func (api * API ) workspaceBuild (rw http.ResponseWriter , r * http.Request ) {
2735 ctx := r .Context ()
2836 workspaceBuild := httpmw .WorkspaceBuildParam (r )
@@ -64,6 +72,18 @@ func (api *API) workspaceBuild(rw http.ResponseWriter, r *http.Request) {
6472 httpapi .Write (ctx , rw , http .StatusOK , apiBuild )
6573}
6674
75+ // @Summary Get workspace builds by workspace ID
76+ // @ID get-workspace-builds-by-workspace-id
77+ // @Security CoderSessionToken
78+ // @Produce json
79+ // @Tags Builds
80+ // @Param id path string true "Workspace ID" format(uuid)
81+ // @Param after_id query string false "After ID" format(uuid)
82+ // @Param limit query int false "Page limit"
83+ // @Param offset query int false "Page offset"
84+ // @Param since query string false "Since timestamp" format(date-time)
85+ // @Success 200 {array} codersdk.WorkspaceBuild
86+ // @Router /workspaces/{id}/builds [get]
6787func (api * API ) workspaceBuilds (rw http.ResponseWriter , r * http.Request ) {
6888 ctx := r .Context ()
6989 workspace := httpmw .WorkspaceParam (r )
@@ -254,6 +274,19 @@ func (api *API) workspaceBuildByBuildNumber(rw http.ResponseWriter, r *http.Requ
254274 httpapi .Write (ctx , rw , http .StatusOK , apiBuild )
255275}
256276
277+ // Azure supports instance identity verification:
278+ // https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux#tabgroup_14
279+ //
280+ // @Summary Create workspace build
281+ // @ID create-workspace-build
282+ // @Security CoderSessionToken
283+ // @Accepts json
284+ // @Produce json
285+ // @Tags Builds
286+ // @Param id path string true "Workspace ID" format(uuid)
287+ // @Param request body codersdk.CreateWorkspaceBuildRequest true "Create workspace build request"
288+ // @Success 200 {object} codersdk.WorkspaceBuild
289+ // @Router /workspaces/{id}/builds [post]
257290func (api * API ) postWorkspaceBuilds (rw http.ResponseWriter , r * http.Request ) {
258291 ctx := r .Context ()
259292 apiKey := httpmw .APIKey (r )
@@ -535,6 +568,14 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
535568 httpapi .Write (ctx , rw , http .StatusCreated , apiBuild )
536569}
537570
571+ // @Summary Cancel workspace build
572+ // @ID cancel-workspace-build
573+ // @Security CoderSessionToken
574+ // @Produce json
575+ // @Tags Builds
576+ // @Param workspacebuild path string true "Workspace build ID"
577+ // @Success 200 {object} codersdk.Response
578+ // @Router /workspacebuilds/{workspacebuild}/cancel [patch]
538579func (api * API ) patchCancelWorkspaceBuild (rw http.ResponseWriter , r * http.Request ) {
539580 ctx := r .Context ()
540581 workspaceBuild := httpmw .WorkspaceBuildParam (r )
@@ -630,6 +671,14 @@ func (api *API) verifyUserCanCancelWorkspaceBuilds(ctx context.Context, userID u
630671 return slices .Contains (user .RBACRoles , rbac .RoleOwner ()), nil // only user with "owner" role can cancel workspace builds
631672}
632673
674+ // @Summary Get workspace resources for workspace build
675+ // @ID get-workspace-resources-for-workspace-build
676+ // @Security CoderSessionToken
677+ // @Produce json
678+ // @Tags Builds
679+ // @Param workspacebuild path string true "Workspace build ID"
680+ // @Success 200 {array} codersdk.WorkspaceResource
681+ // @Router /workspacebuilds/{workspacebuild}/resources [get]
633682func (api * API ) workspaceBuildResources (rw http.ResponseWriter , r * http.Request ) {
634683 ctx := r .Context ()
635684 workspaceBuild := httpmw .WorkspaceBuildParam (r )
@@ -657,6 +706,17 @@ func (api *API) workspaceBuildResources(rw http.ResponseWriter, r *http.Request)
657706 api .provisionerJobResources (rw , r , job )
658707}
659708
709+ // @Summary Get workspace build logs
710+ // @ID get-workspace-build-logs
711+ // @Security CoderSessionToken
712+ // @Produce json
713+ // @Tags Builds
714+ // @Param workspacebuild path string true "Workspace build ID"
715+ // @Param before query int false "Before Unix timestamp"
716+ // @Param after query int false "After Unix timestamp"
717+ // @Param follow query bool false "Follow log stream"
718+ // @Success 200 {array} codersdk.ProvisionerJobLog
719+ // @Router /workspacebuilds/{workspacebuild}/logs [get]
660720func (api * API ) workspaceBuildLogs (rw http.ResponseWriter , r * http.Request ) {
661721 ctx := r .Context ()
662722 workspaceBuild := httpmw .WorkspaceBuildParam (r )
@@ -684,6 +744,14 @@ func (api *API) workspaceBuildLogs(rw http.ResponseWriter, r *http.Request) {
684744 api .provisionerJobLogs (rw , r , job )
685745}
686746
747+ // @Summary Get provisioner state for workspace build
748+ // @ID get-provisioner-state-for-workspace-build
749+ // @Security CoderSessionToken
750+ // @Produce json
751+ // @Tags Builds
752+ // @Param workspacebuild path string true "Workspace build ID"
753+ // @Success 200 {object} codersdk.WorkspaceBuild
754+ // @Router /workspacebuilds/{workspacebuild}/state [get]
687755func (api * API ) workspaceBuildState (rw http.ResponseWriter , r * http.Request ) {
688756 ctx := r .Context ()
689757 workspaceBuild := httpmw .WorkspaceBuildParam (r )
0 commit comments