1package tfe 2 3import ( 4 "context" 5) 6 7// Compile-time proof of interface implementation. 8var _ TwilioSettings = (*adminTwilioSettings)(nil) 9 10// TwilioSettings describes all the Twilio admin settings. 11type TwilioSettings interface { 12 // Read returns the Twilio settings. 13 Read(ctx context.Context) (*AdminTwilioSetting, error) 14 15 // Update updates Twilio settings. 16 Update(ctx context.Context, options AdminTwilioSettingsUpdateOptions) (*AdminTwilioSetting, error) 17 18 // Verify verifies Twilio settings. 19 Verify(ctx context.Context, options AdminTwilioSettingsVerifyOptions) error 20} 21 22type adminTwilioSettings struct { 23 client *Client 24} 25 26// AdminTwilioSetting represents the Twilio settings in Terraform Enterprise. 27type AdminTwilioSetting struct { 28 ID string `jsonapi:"primary,twilio-settings"` 29 Enabled bool `jsonapi:"attr,enabled"` 30 AccountSid string `jsonapi:"attr,account-sid"` 31 FromNumber string `jsonapi:"attr,from-number"` 32} 33 34// Read returns the Twilio settings. 35func (a *adminTwilioSettings) Read(ctx context.Context) (*AdminTwilioSetting, error) { 36 req, err := a.client.newRequest("GET", "admin/twilio-settings", nil) 37 if err != nil { 38 return nil, err 39 } 40 41 twilio := &AdminTwilioSetting{} 42 err = a.client.do(ctx, req, twilio) 43 if err != nil { 44 return nil, err 45 } 46 47 return twilio, nil 48} 49 50// AdminTwilioSettingsUpdateOptions represents the admin options for updating 51// Twilio settings. 52// https://www.terraform.io/docs/cloud/api/admin/settings.html#request-body-4 53type AdminTwilioSettingsUpdateOptions struct { 54 Enabled *bool `jsonapi:"attr,enabled,omitempty"` 55 AccountSid *string `jsonapi:"attr,account-sid,omitempty"` 56 AuthToken *string `jsonapi:"attr,auth-token,omitempty"` 57 FromNumber *string `jsonapi:"attr,from-number,omitempty"` 58} 59 60// Update updates the Twilio settings. 61func (a *adminTwilioSettings) Update(ctx context.Context, options AdminTwilioSettingsUpdateOptions) (*AdminTwilioSetting, error) { 62 req, err := a.client.newRequest("PATCH", "admin/twilio-settings", &options) 63 if err != nil { 64 return nil, err 65 } 66 67 twilio := &AdminTwilioSetting{} 68 err = a.client.do(ctx, req, twilio) 69 if err != nil { 70 return nil, err 71 } 72 73 return twilio, nil 74} 75 76// AdminTwilioSettingsVerifyOptions represents the test number to verify Twilio. 77// https://www.terraform.io/docs/cloud/api/admin/settings.html#verify-twilio-settings 78type AdminTwilioSettingsVerifyOptions struct { 79 TestNumber *string `jsonapi:"attr,test-number"` 80} 81 82// Verify verifies Twilio settings. 83func (a *adminTwilioSettings) Verify(ctx context.Context, options AdminTwilioSettingsVerifyOptions) error { 84 req, err := a.client.newRequest("PATCH", "admin/twilio-settings/verify", &options) 85 if err != nil { 86 return err 87 } 88 89 return a.client.do(ctx, req, nil) 90} 91