@@ -45,6 +45,18 @@ type Organizations interface {
45
45
46
46
// ReadRunQueue shows the current run queue of an organization.
47
47
ReadRunQueue (ctx context.Context , organization string , options ReadRunQueueOptions ) (* RunQueue , error )
48
+
49
+ // ReadDataRetentionPolicy reads an organization's data retention policy
50
+ // **Note: This functionality is only available in Terraform Enterprise.**
51
+ ReadDataRetentionPolicy (ctx context.Context , organization string ) (* DataRetentionPolicy , error )
52
+
53
+ // SetDataRetentionPolicy sets an organization's data retention policy
54
+ // **Note: This functionality is only available in Terraform Enterprise.**
55
+ SetDataRetentionPolicy (ctx context.Context , organization string , options DataRetentionPolicySetOptions ) (* DataRetentionPolicy , error )
56
+
57
+ // DeleteDataRetentionPolicy deletes an organization's data retention policy
58
+ // **Note: This functionality is only available in Terraform Enterprise.**
59
+ DeleteDataRetentionPolicy (ctx context.Context , organization string ) error
48
60
}
49
61
50
62
// organizations implements Organizations.
@@ -93,6 +105,9 @@ type Organization struct {
93
105
// Relations
94
106
DefaultProject * Project `jsonapi:"relation,default-project"`
95
107
DefaultAgentPool * AgentPool `jsonapi:"relation,default-agent-pool"`
108
+
109
+ // **Note: This functionality is only available in Terraform Enterprise.**
110
+ DataRetentionPolicy * DataRetentionPolicy `jsonapi:"relation,data-retention-policy"`
96
111
}
97
112
98
113
// OrganizationIncludeOpt represents the available options for include query params.
@@ -416,6 +431,62 @@ func (s *organizations) ReadRunQueue(ctx context.Context, organization string, o
416
431
return rq , nil
417
432
}
418
433
434
+ func (s * organizations ) ReadDataRetentionPolicy (ctx context.Context , organization string ) (* DataRetentionPolicy , error ) {
435
+ if ! validStringID (& organization ) {
436
+ return nil , ErrInvalidOrg
437
+ }
438
+
439
+ u := fmt .Sprintf ("organizations/%s/relationships/data-retention-policy" , url .QueryEscape (organization ))
440
+ req , err := s .client .NewRequest ("GET" , u , nil )
441
+ if err != nil {
442
+ return nil , err
443
+ }
444
+
445
+ dataRetentionPolicy := & DataRetentionPolicy {}
446
+ err = req .Do (ctx , dataRetentionPolicy )
447
+
448
+ if err != nil {
449
+ return nil , err
450
+ }
451
+
452
+ return dataRetentionPolicy , nil
453
+ }
454
+
455
+ func (s * organizations ) SetDataRetentionPolicy (ctx context.Context , organization string , options DataRetentionPolicySetOptions ) (* DataRetentionPolicy , error ) {
456
+ if ! validStringID (& organization ) {
457
+ return nil , ErrInvalidOrg
458
+ }
459
+
460
+ u := fmt .Sprintf ("organizations/%s/relationships/data-retention-policy" , url .QueryEscape (organization ))
461
+ req , err := s .client .NewRequest ("PATCH" , u , & options )
462
+ if err != nil {
463
+ return nil , err
464
+ }
465
+
466
+ dataRetentionPolicy := & DataRetentionPolicy {}
467
+ err = req .Do (ctx , dataRetentionPolicy )
468
+
469
+ if err != nil {
470
+ return nil , err
471
+ }
472
+
473
+ return dataRetentionPolicy , nil
474
+ }
475
+
476
+ func (s * organizations ) DeleteDataRetentionPolicy (ctx context.Context , organization string ) error {
477
+ if ! validStringID (& organization ) {
478
+ return ErrInvalidOrg
479
+ }
480
+
481
+ u := fmt .Sprintf ("organizations/%s/relationships/data-retention-policy" , url .QueryEscape (organization ))
482
+ req , err := s .client .NewRequest ("DELETE" , u , nil )
483
+ if err != nil {
484
+ return err
485
+ }
486
+
487
+ return req .Do (ctx , nil )
488
+ }
489
+
419
490
func (o OrganizationCreateOptions ) valid () error {
420
491
if ! validString (o .Name ) {
421
492
return ErrRequiredName
0 commit comments