@@ -114,6 +114,7 @@ func (api *API) workspace(rw http.ResponseWriter, r *http.Request) {
114114}
115115
116116w ,err := convertWorkspace (
117+ api .Experiments ,
117118apiKey .UserID ,
118119workspace ,
119120data .builds [0 ],
@@ -229,7 +230,7 @@ func (api *API) workspaces(rw http.ResponseWriter, r *http.Request) {
229230return
230231}
231232
232- wss ,err := convertWorkspaces (apiKey .UserID ,workspaces ,data )
233+ wss ,err := convertWorkspaces (api . Experiments , apiKey .UserID ,workspaces ,data )
233234if err != nil {
234235httpapi .Write (ctx ,rw ,http .StatusInternalServerError , codersdk.Response {
235236Message :"Internal error converting workspaces." ,
@@ -319,6 +320,7 @@ func (api *API) workspaceByOwnerAndName(rw http.ResponseWriter, r *http.Request)
319320}
320321
321322w ,err := convertWorkspace (
323+ api .Experiments ,
322324apiKey .UserID ,
323325workspace ,
324326data .builds [0 ],
@@ -847,6 +849,7 @@ func createWorkspace(
847849}
848850
849851w ,err := convertWorkspace (
852+ api .Experiments ,
850853initiatorID ,
851854workspace ,
852855apiBuild ,
@@ -1490,6 +1493,7 @@ func (api *API) putWorkspaceDormant(rw http.ResponseWriter, r *http.Request) {
14901493}
14911494
14921495w ,err := convertWorkspace (
1496+ api .Experiments ,
14931497apiKey .UserID ,
14941498workspace ,
14951499data .builds [0 ],
@@ -2067,6 +2071,7 @@ func (api *API) watchWorkspace(
20672071appStatus = data .appStatuses [0 ]
20682072}
20692073w ,err := convertWorkspace (
2074+ api .Experiments ,
20702075apiKey .UserID ,
20712076workspace ,
20722077data .builds [0 ],
@@ -2516,7 +2521,12 @@ func (api *API) workspaceData(ctx context.Context, workspaces []database.Workspa
25162521},nil
25172522}
25182523
2519- func convertWorkspaces (requesterID uuid.UUID ,workspaces []database.Workspace ,data workspaceData ) ([]codersdk.Workspace ,error ) {
2524+ func convertWorkspaces (
2525+ experiments codersdk.Experiments ,
2526+ requesterID uuid.UUID ,
2527+ workspaces []database.Workspace ,
2528+ data workspaceData ,
2529+ ) ([]codersdk.Workspace ,error ) {
25202530buildByWorkspaceID := map [uuid.UUID ]codersdk.WorkspaceBuild {}
25212531for _ ,workspaceBuild := range data .builds {
25222532buildByWorkspaceID [workspaceBuild .WorkspaceID ]= workspaceBuild
@@ -2548,6 +2558,7 @@ func convertWorkspaces(requesterID uuid.UUID, workspaces []database.Workspace, d
25482558appStatus := appStatusesByWorkspaceID [workspace .ID ]
25492559
25502560w ,err := convertWorkspace (
2561+ experiments ,
25512562requesterID ,
25522563workspace ,
25532564build ,
@@ -2565,6 +2576,7 @@ func convertWorkspaces(requesterID uuid.UUID, workspaces []database.Workspace, d
25652576}
25662577
25672578func convertWorkspace (
2579+ experiments codersdk.Experiments ,
25682580requesterID uuid.UUID ,
25692581workspace database.Workspace ,
25702582workspaceBuild codersdk.WorkspaceBuild ,
@@ -2603,7 +2615,13 @@ func convertWorkspace(
26032615}
26042616}
26052617}
2606- sharedWith := []codersdk.SharedWorkspaceActor {}
2618+ // TODO(geokat): using a pointer that's serialized with
2619+ // "omitempty" so that we can hide it behind an experiment. This
2620+ // won't be necessary once workspace sharing is in beta.
2621+ var sharedWith * []codersdk.SharedWorkspaceActor
2622+ if experiments .Enabled (codersdk .ExperimentWorkspaceSharing ) {
2623+ sharedWith = & []codersdk.SharedWorkspaceActor {}
2624+ }
26072625
26082626ttlMillis := convertWorkspaceTTLMillis (workspace .Ttl )
26092627// If the template doesn't allow a workspace-configured value, then report the