@@ -101,6 +101,18 @@ type Workspaces interface {
101
101
102
102
// RemoveTags removes tags from a workspace
103
103
RemoveTags (ctx context.Context , workspaceID string , options WorkspaceRemoveTagsOptions ) error
104
+
105
+ // ReadDataRetentionPolicy reads a workspace's data retention policy
106
+ // **Note: This functionality is only available in Terraform Enterprise.**
107
+ ReadDataRetentionPolicy (ctx context.Context , workspaceID string ) (* DataRetentionPolicy , error )
108
+
109
+ // SetDataRetentionPolicy sets a workspace's data retention policy
110
+ // **Note: This functionality is only available in Terraform Enterprise.**
111
+ SetDataRetentionPolicy (ctx context.Context , workspaceID string , options DataRetentionPolicySetOptions ) (* DataRetentionPolicy , error )
112
+
113
+ // DeleteDataRetentionPolicy deletes a workspace's data retention policy
114
+ // **Note: This functionality is only available in Terraform Enterprise.**
115
+ DeleteDataRetentionPolicy (ctx context.Context , workspaceID string ) error
104
116
}
105
117
106
118
// workspaces implements Workspaces.
@@ -165,6 +177,9 @@ type Workspace struct {
165
177
Tags []* Tag `jsonapi:"relation,tags"`
166
178
CurrentConfigurationVersion * ConfigurationVersion `jsonapi:"relation,current-configuration-version,omitempty"`
167
179
180
+ // **Note: This functionality is only available in Terraform Enterprise.**
181
+ DataRetentionPolicy * DataRetentionPolicy `jsonapi:"relation,data-retention-policy"`
182
+
168
183
// Links
169
184
Links map [string ]interface {} `jsonapi:"links,omitempty"`
170
185
}
@@ -1182,6 +1197,62 @@ func (s *workspaces) RemoveTags(ctx context.Context, workspaceID string, options
1182
1197
return req .Do (ctx , nil )
1183
1198
}
1184
1199
1200
+ func (s * workspaces ) ReadDataRetentionPolicy (ctx context.Context , workspaceID string ) (* DataRetentionPolicy , error ) {
1201
+ if ! validStringID (& workspaceID ) {
1202
+ return nil , ErrInvalidWorkspaceID
1203
+ }
1204
+
1205
+ u := fmt .Sprintf ("workspaces/%s/relationships/data-retention-policy" , url .QueryEscape (workspaceID ))
1206
+ req , err := s .client .NewRequest ("GET" , u , nil )
1207
+ if err != nil {
1208
+ return nil , err
1209
+ }
1210
+
1211
+ dataRetentionPolicy := & DataRetentionPolicy {}
1212
+ err = req .Do (ctx , dataRetentionPolicy )
1213
+
1214
+ if err != nil {
1215
+ return nil , err
1216
+ }
1217
+
1218
+ return dataRetentionPolicy , nil
1219
+ }
1220
+
1221
+ func (s * workspaces ) SetDataRetentionPolicy (ctx context.Context , workspaceID string , options DataRetentionPolicySetOptions ) (* DataRetentionPolicy , error ) {
1222
+ if ! validStringID (& workspaceID ) {
1223
+ return nil , ErrInvalidWorkspaceID
1224
+ }
1225
+
1226
+ u := fmt .Sprintf ("workspaces/%s/relationships/data-retention-policy" , url .QueryEscape (workspaceID ))
1227
+ req , err := s .client .NewRequest ("PATCH" , u , & options )
1228
+ if err != nil {
1229
+ return nil , err
1230
+ }
1231
+
1232
+ dataRetentionPolicy := & DataRetentionPolicy {}
1233
+ err = req .Do (ctx , dataRetentionPolicy )
1234
+
1235
+ if err != nil {
1236
+ return nil , err
1237
+ }
1238
+
1239
+ return dataRetentionPolicy , nil
1240
+ }
1241
+
1242
+ func (s * workspaces ) DeleteDataRetentionPolicy (ctx context.Context , workspaceID string ) error {
1243
+ if ! validStringID (& workspaceID ) {
1244
+ return ErrInvalidWorkspaceID
1245
+ }
1246
+
1247
+ u := fmt .Sprintf ("workspaces/%s/relationships/data-retention-policy" , url .QueryEscape (workspaceID ))
1248
+ req , err := s .client .NewRequest ("DELETE" , u , nil )
1249
+ if err != nil {
1250
+ return err
1251
+ }
1252
+
1253
+ return req .Do (ctx , nil )
1254
+ }
1255
+
1185
1256
func (o WorkspaceCreateOptions ) valid () error {
1186
1257
if ! validString (o .Name ) {
1187
1258
return ErrRequiredName
0 commit comments