@@ -12,6 +12,9 @@ const (
1212	cloudAccountPath                 =  "%s/api/cloud/v2/accounts/%s" 
1313	cloudAccountWithExternalIDPath   =  "%s/api/cloud/v2/accounts/%s?includeExternalID=true" 
1414	providersPath                    =  "%v/api/v2/providers" 
15+ 	costCloudAccountPath             =  "%s/api/cloudaccount" 
16+ 	costProviderURL                  =  "%s/api/cloudaccount/features/cost/account?id=%d" 
17+ 	updateCostProviderURL            =  "%s/api/cloudaccount/features/cost" 
1518)
1619
1720type  CloudAccountSecureInterface  interface  {
@@ -25,8 +28,11 @@ type CloudAccountSecureInterface interface {
2528type  CloudAccountMonitorInterface  interface  {
2629	Base 
2730	CreateCloudAccountMonitor (ctx  context.Context , provider  * CloudAccountMonitor ) (* CloudAccountMonitor , error )
31+ 	CreateCloudAccountMonitorForCost (ctx  context.Context , provider  * CloudAccountMonitorForCost ) (* CloudAccountCreatedForCost , error )
2832	UpdateCloudAccountMonitor (ctx  context.Context , id  int , provider  * CloudAccountMonitor ) (* CloudAccountMonitor , error )
33+ 	UpdateCloudAccountMonitorForCost (ctx  context.Context , provider  * CloudAccountCostProvider ) (* CloudAccountCostProvider , error )
2934	GetCloudAccountMonitor (ctx  context.Context , id  int ) (* CloudAccountMonitor , error )
35+ 	GetCloudAccountMonitorForCost (ctx  context.Context , id  int ) (* CloudAccountCostProvider , error )
3036	DeleteCloudAccountMonitor (ctx  context.Context , id  int ) error 
3137}
3238
@@ -135,6 +141,30 @@ func (client *Client) CreateCloudAccountMonitor(ctx context.Context, provider *C
135141	return  & wrapper .CloudAccount , nil 
136142}
137143
144+ func  (client  * Client ) CreateCloudAccountMonitorForCost (ctx  context.Context , provider  * CloudAccountMonitorForCost ) (* CloudAccountCreatedForCost , error ) {
145+ 	payload , err  :=  Marshal (provider )
146+ 	if  err  !=  nil  {
147+ 		return  nil , err 
148+ 	}
149+ 
150+ 	response , err  :=  client .requester .Request (ctx , http .MethodPost , client .getCostProvidersURL (), payload )
151+ 	if  err  !=  nil  {
152+ 		return  nil , err 
153+ 	}
154+ 	defer  response .Body .Close ()
155+ 
156+ 	if  response .StatusCode  !=  http .StatusOK  {
157+ 		return  nil , client .ErrorFromResponse (response )
158+ 	}
159+ 
160+ 	wrapper , err  :=  Unmarshal [CloudAccountCreatedForCost ](response .Body )
161+ 	if  err  !=  nil  {
162+ 		return  nil , err 
163+ 	}
164+ 
165+ 	return  & wrapper , nil 
166+ }
167+ 
138168func  (client  * Client ) UpdateCloudAccountMonitor (ctx  context.Context , id  int , provider  * CloudAccountMonitor ) (* CloudAccountMonitor , error ) {
139169	payload , err  :=  Marshal (provider )
140170	if  err  !=  nil  {
@@ -159,6 +189,30 @@ func (client *Client) UpdateCloudAccountMonitor(ctx context.Context, id int, pro
159189	return  & wrapper .CloudAccount , nil 
160190}
161191
192+ func  (client  * Client ) UpdateCloudAccountMonitorForCost (ctx  context.Context , provider  * CloudAccountCostProvider ) (* CloudAccountCostProvider , error ) {
193+ 	payload , err  :=  Marshal (provider )
194+ 	if  err  !=  nil  {
195+ 		return  nil , err 
196+ 	}
197+ 
198+ 	response , err  :=  client .requester .Request (ctx , http .MethodPut , client .getUpdateCostProviderURL (), payload )
199+ 	if  err  !=  nil  {
200+ 		return  nil , err 
201+ 	}
202+ 	defer  response .Body .Close ()
203+ 
204+ 	if  response .StatusCode  !=  http .StatusOK  {
205+ 		return  nil , client .ErrorFromResponse (response )
206+ 	}
207+ 
208+ 	wrapper , err  :=  Unmarshal [CloudAccountCostProviderWrapper ](response .Body )
209+ 	if  err  !=  nil  {
210+ 		return  nil , err 
211+ 	}
212+ 
213+ 	return  & wrapper .CloudAccountCostProvider , nil 
214+ }
215+ 
162216func  (client  * Client ) GetCloudAccountMonitor (ctx  context.Context , id  int ) (* CloudAccountMonitor , error ) {
163217	response , err  :=  client .requester .Request (ctx , http .MethodGet , client .getProviderURL (id ), nil )
164218	if  err  !=  nil  {
@@ -178,6 +232,25 @@ func (client *Client) GetCloudAccountMonitor(ctx context.Context, id int) (*Clou
178232	return  & wrapper .CloudAccount , nil 
179233}
180234
235+ func  (client  * Client ) GetCloudAccountMonitorForCost (ctx  context.Context , id  int ) (* CloudAccountCostProvider , error ) {
236+ 	response , err  :=  client .requester .Request (ctx , http .MethodGet , client .getCostProviderURL (id ), nil )
237+ 	if  err  !=  nil  {
238+ 		return  nil , err 
239+ 	}
240+ 	defer  response .Body .Close ()
241+ 
242+ 	if  response .StatusCode  !=  http .StatusOK  {
243+ 		return  nil , client .ErrorFromResponse (response )
244+ 	}
245+ 
246+ 	wrapper , err  :=  Unmarshal [CloudAccountCostProviderWrapper ](response .Body )
247+ 	if  err  !=  nil  {
248+ 		return  nil , err 
249+ 	}
250+ 
251+ 	return  & wrapper .CloudAccountCostProvider , nil 
252+ }
253+ 
181254func  (client  * Client ) DeleteCloudAccountMonitor (ctx  context.Context , id  int ) error  {
182255	response , err  :=  client .requester .Request (ctx , http .MethodDelete , client .getProviderURL (id ), nil )
183256	if  err  !=  nil  {
@@ -199,3 +272,15 @@ func (client *Client) getProviderURL(id int) string {
199272func  (client  * Client ) getProvidersURL () string  {
200273	return  fmt .Sprintf (providersPath , client .config .url )
201274}
275+ 
276+ func  (client  * Client ) getCostProvidersURL () string  {
277+ 	return  fmt .Sprintf (costCloudAccountPath , client .config .url )
278+ }
279+ 
280+ func  (client  * Client ) getCostProviderURL (id  int ) string  {
281+ 	return  fmt .Sprintf (costProviderURL , client .config .url , id )
282+ }
283+ 
284+ func  (client  * Client ) getUpdateCostProviderURL () string  {
285+ 	return  fmt .Sprintf (updateCostProviderURL , client .config .url )
286+ }
0 commit comments