@@ -44,27 +44,28 @@ func New(options *Options) (http.Handler, func()) {
4444 r .Post ("/login" , api .postLogin )
4545 r .Post ("/logout" , api .postLogout )
4646
47- // Used for setup.
48- r .Get ("/user" , api .user )
49- r .Post ("/user" , api .postUser )
50- r .Route ("/users" , func (r chi.Router ) {
51- r .Use (
52- httpmw .ExtractAPIKey (options .Database , nil ),
53- )
54- r .Post ("/" , api .postUsers )
55-
56- r .Route ("/{user}" , func (r chi.Router ) {
57- r .Use (httpmw .ExtractUserParam (options .Database ))
58- r .Get ("/" , api .userByName )
59- r .Get ("/organizations" , api .organizationsByUser )
60- r .Post ("/keys" , api .postKeyForUser )
47+ r .Route ("/user" , func (r chi.Router ) {
48+ r .Get ("/first" , api .user )
49+ r .Post ("/first" , api .user )
50+ r .Group (func (r chi.Router ) {
51+ r .Use (httpmw .ExtractAPIKey (options .Database , nil ))
52+ r .Post ("/" , nil )
53+ r .Route ("/{user}" , func (r chi.Router ) {
54+ r .Use (httpmw .ExtractUserParam (options .Database ))
55+ r .Get ("/" , api .userByName )
56+ r .Get ("/organizations" , api .organizationsByUser )
57+ r .Post ("/keys" , api .postKeyForUser )
58+ })
6159 })
6260 })
61+
6362 r .Route ("/organization/{organization}" , func (r chi.Router ) {
6463 r .Use (
6564 httpmw .ExtractAPIKey (options .Database , nil ),
6665 httpmw .ExtractOrganizationParam (options .Database ),
6766 )
67+ r .Post ("/users" , nil )
68+ r .Get ("/provisionerdaemons" , nil )
6869 r .Route ("/projects" , func (r chi.Router ) {
6970 r .Post ("/" , api .postProjectsByOrganization )
7071 r .Get ("/" , api .projectsByOrganization )
@@ -75,172 +76,70 @@ func New(options *Options) (http.Handler, func()) {
7576 r .Use (
7677 httpmw .ExtractAPIKey (options .Database , nil ),
7778 httpmw .ExtractProjectParam (options .Database ),
79+ httpmw .ExtractOrganizationParam (options .Database ),
7880 )
7981 r .Get ("/" , api .projectByOrganization )
8082 r .Get ("/workspaces" , api .workspacesByProject )
81- r .Route ("/parameters" , func (r chi.Router ) {
82- r .Get ("/" , api .parametersByProject )
83- r .Post ("/" , api .postParametersByProject )
84- })
85- r .Route ("/versions" , func (r chi.Router ) {
86- r .Get ("/" , api .projectVersionsByOrganization )
87- r .Post ("/" , api .postProjectVersionByOrganization )
88- r .Route ("/{projectversion}" , func (r chi.Router ) {
89- r .Use (httpmw .ExtractProjectVersionParam (api .Database ))
90- r .Get ("/" , api .projectVersionByOrganizationAndName )
91- })
92- })
93- r .Get ("/" , api .projects )
94- r .Route ("/{organization}" , func (r chi.Router ) {
95- r .Use (httpmw .ExtractOrganizationParam (options .Database ))
96- r .Get ("/" , api .projectsByOrganization )
97- r .Post ("/" , api .postProjectsByOrganization )
98- r .Route ("/{project}" , func (r chi.Router ) {
99-
100- })
101- })
83+ r .Get ("/parameters" , api .parametersByProject )
84+ r .Post ("/parameters" , api .postParametersByProject )
85+ r .Get ("/versions" , api .projectVersionsByOrganization )
86+ r .Post ("/versions" , api .postProjectVersionByOrganization )
10287 })
103-
104- // Upload - Uploads a file.
105-
106- // CreateProject(organization) - Creates a project with a version.
107- // ImportProjectVersion(organization, project?) - If a project is provided, it's attached. If a project isn't, it's detached.
108- // ProjectVersions - Returns a list of project versions by project.
109- // ProjectVersionSchema(projectversion) - Return parameter schemas for a job.
110- // ProjectVersionParameters(projectversion) - Returns computed parameters for a job.
111- // ProjectVersionParameters(projectversion) - Returns computed parameters for a job.
112- // ProjectVersionLogs(projectversion) - Returns logs for an executing project version.
113- // ProjectVersionLogsAfter(projectversion, timestamp) - Streams logs that occur after a specific timestamp.
114- // ProjectVersionResources(projectversion, resources) - Returns resources to be created for a project version.
115-
116- // CreateWorkspace - Creates a workspace for a project.
117- // ProvisionWorkspace - Creates a new build.
118- // Workspaces - Returns all workspaces the user has access to.
119- // WorkspacesByProject - Returns workspaces inside a project.
120- // WorkspaceByName - Returns a workspace by name.
121- // Workspace - Returns a single workspace by ID.
122- // WorkspaceProvisions - Returns a timeline of provisions for a workspace.
123- // WorkspaceProvisionResources - List resources for a specific workspace version.
124- // WorkspaceProvisionResource - Get a specific resource.
125- // WorkspaceProvisionLogs - Returns a stream of logs.
126- // WorkspaceProvisionLogsAfter - Returns a stream of logs after.
127- // DialWorkspaceAgent - Creates the connection to a workspace agent.
128- // ListenWorkspaceAgent - Listens to the workspace agent as the ID.
129- // AuthWorkspaceAgentWithGoogleInstanceIdentity - Exchanges SA for token.
130-
131- // User - Returns the currently authenticated user.
132- // HasFirstUser - Returns whether the first user has been created.
133- // CreateFirstUser - Creates a new user and the organization provided.
134- // CreateUser - Creates a new user and adds them to the organization.
135- // CreateAPIKey - Creates a new API key.
136- // LoginWithPassword - Authenticates with email and password.
137- // Logout - Should clear the session token.
138-
139- // ProvisionerDaemons
140- // ListenProvisionerDaemon
141-
142- // OrganizationsByUser - Returns organizations by user.
143-
144- r .Route ("/agent" , func (r chi.Router ) {
145-
146- })
147-
148- r .Route ("/daemon" , func (r chi.Router ) {
149-
150- })
151-
152- r .Route ("/job" , func (r chi.Router ) {
88+ r .Route ("/projectversion/{projectversion}" , func (r chi.Router ) {
15389 r .Use (
15490 httpmw .ExtractAPIKey (options .Database , nil ),
91+ httpmw .ExtractProjectVersionParam (options .Database ),
15592 httpmw .ExtractOrganizationParam (options .Database ),
15693 )
157- r .Post ("/" , api .postProjectImportByOrganization )
158- })
159-
160- r .Route ("/provisioner/job/{job}/resources" , func (r chi.Router ) {
16194
95+ r .Get ("/" , nil )
96+ r .Get ("/schema" , nil )
97+ r .Get ("/parameters" , nil )
98+ r .Get ("/logs" , nil )
99+ r .Get ("/resources" , nil )
162100 })
163-
164- // ProjectVersionLogs
165-
166- // Listing operations specific to resources should go under
167- // their respective routes. eg. /orgs/<name>/workspaces
168- r .Route ("/workspaces" , func (r chi.Router ) {
169- r .Use (httpmw .ExtractAPIKey (options .Database , nil ))
170- r .Get ("/" , api .workspaces )
171- r .Route ("/{user}" , func (r chi.Router ) {
172- r .Use (httpmw .ExtractUserParam (options .Database ))
173- r .Post ("/" , api .postWorkspaceByUser )
174- r .Route ("/{workspace}" , func (r chi.Router ) {
175- r .Use (httpmw .ExtractWorkspaceParam (options .Database ))
176- r .Get ("/" , api .workspaceByUser )
177- r .Route ("/version" , func (r chi.Router ) {
178- r .Post ("/" , api .postWorkspaceBuildByUser )
179- r .Get ("/" , api .workspaceBuildByUser )
180- r .Route ("/{workspacebuild}" , func (r chi.Router ) {
181- r .Use (httpmw .ExtractWorkspaceBuildParam (options .Database ))
182- r .Get ("/" , api .workspaceBuildByName )
183- })
184- })
185- })
101+ r .Route ("/workspace/{workspace}" , func (r chi.Router ) {
102+ r .Use (
103+ httpmw .ExtractAPIKey (options .Database , nil ),
104+ httpmw .ExtractWorkspaceParam (options .Database ),
105+ httpmw .ExtractUserParam (options .Database ),
106+ )
107+ r .Get ("/" , nil )
108+ r .Get ("/builds" , nil )
109+ r .Post ("/builds" , nil )
110+ })
111+ r .Route ("/workspacebuild/{workspacebuild}" , func (r chi.Router ) {
112+ r .Use (
113+ httpmw .ExtractAPIKey (options .Database , nil ),
114+ httpmw .ExtractWorkspaceBuildParam (options .Database ),
115+ httpmw .ExtractWorkspaceParam (options .Database ),
116+ )
117+ r .Get ("/logs" , nil )
118+ r .Get ("/resources" , nil )
119+ r .Route ("/resources/{workspaceresource}" , func (r chi.Router ) {
120+ r .Use (httpmw .ExtractWorkspaceResourceParam (options .Database ))
121+ r .Get ("/" , nil )
122+ r .Get ("/dial" , nil )
186123 })
187124 })
188-
189125 r .Route ("/workspaceagent" , func (r chi.Router ) {
190- r .Route ("/authenticate " , func (r chi.Router ) {
126+ r .Route ("/auth " , func (r chi.Router ) {
191127 r .Post ("/google-instance-identity" , api .postAuthenticateWorkspaceAgentUsingGoogleInstanceIdentity )
192128 })
193- r .Group ( func (r chi.Router ) {
129+ r .Route ( "/me" , func (r chi.Router ) {
194130 r .Use (httpmw .ExtractWorkspaceAgent (options .Database ))
195- r .Get ("/serve" , api .workspaceAgentServe )
131+ r .Get ("/listen" , nil )
132+ })
133+ })
134+ r .Route ("/provisionerdaemon" , func (r chi.Router ) {
135+ r .Route ("/me" , func (r chi.Router ) {
136+ r .Get ("/listen" , api .provisionerDaemonsServe )
196137 })
197138 })
198-
199139 r .Route ("/upload" , func (r chi.Router ) {
200140 r .Use (httpmw .ExtractAPIKey (options .Database , nil ))
201141 r .Post ("/" , api .postUpload )
202142 })
203-
204- r .Route ("/projectimport/{organization}" , func (r chi.Router ) {
205- r .Use (
206- httpmw .ExtractAPIKey (options .Database , nil ),
207- httpmw .ExtractOrganizationParam (options .Database ),
208- )
209- r .Post ("/" , api .postProjectImportByOrganization )
210- r .Route ("/{provisionerjob}" , func (r chi.Router ) {
211- r .Use (httpmw .ExtractProvisionerJobParam (options .Database ))
212- r .Get ("/" , api .provisionerJobByID )
213- r .Get ("/schemas" , api .projectImportJobSchemasByID )
214- r .Get ("/parameters" , api .projectImportJobParametersByID )
215- r .Get ("/resources" , api .provisionerJobResourcesByID )
216- r .Get ("/logs" , api .provisionerJobLogsByID )
217- })
218- })
219-
220- r .Route ("/workspaceprovision/{organization}" , func (r chi.Router ) {
221- r .Use (
222- httpmw .ExtractAPIKey (options .Database , nil ),
223- httpmw .ExtractOrganizationParam (options .Database ),
224- )
225- r .Route ("/{provisionerjob}" , func (r chi.Router ) {
226- r .Use (httpmw .ExtractProvisionerJobParam (options .Database ))
227- r .Get ("/" , api .provisionerJobByID )
228- r .Get ("/logs" , api .provisionerJobLogsByID )
229- r .Route ("/resources" , func (r chi.Router ) {
230- r .Get ("/" , api .provisionerJobResourcesByID )
231- r .Route ("/{workspaceresource}" , func (r chi.Router ) {
232- r .Use (httpmw .ExtractWorkspaceResourceParam (options .Database ))
233- r .Get ("/" , api .provisionerJobResourceByID )
234- r .Get ("/agent" , api .workspaceAgentConnectByResource )
235- })
236- })
237- })
238- })
239-
240- r .Route ("/provisioners/daemons" , func (r chi.Router ) {
241- r .Get ("/" , api .provisionerDaemons )
242- r .Get ("/serve" , api .provisionerDaemonsServe )
243- })
244143 })
245144 r .NotFound (site .Handler (options .Logger ).ServeHTTP )
246145 return r , api .websocketWaitGroup .Wait
0 commit comments