1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package costexplorer
4
5import (
6	"fmt"
7
8	"github.com/aws/aws-sdk-go/aws"
9	"github.com/aws/aws-sdk-go/aws/awsutil"
10	"github.com/aws/aws-sdk-go/aws/request"
11	"github.com/aws/aws-sdk-go/private/protocol"
12	"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
13)
14
15const opCreateAnomalyMonitor = "CreateAnomalyMonitor"
16
17// CreateAnomalyMonitorRequest generates a "aws/request.Request" representing the
18// client's request for the CreateAnomalyMonitor operation. The "output" return
19// value will be populated with the request's response once the request completes
20// successfully.
21//
22// Use "Send" method on the returned Request to send the API call to the service.
23// the "output" return value is not valid until after Send returns without error.
24//
25// See CreateAnomalyMonitor for more information on using the CreateAnomalyMonitor
26// API call, and error handling.
27//
28// This method is useful when you want to inject custom logic or configuration
29// into the SDK's request lifecycle. Such as custom headers, or retry logic.
30//
31//
32//    // Example sending a request using the CreateAnomalyMonitorRequest method.
33//    req, resp := client.CreateAnomalyMonitorRequest(params)
34//
35//    err := req.Send()
36//    if err == nil { // resp is now filled
37//        fmt.Println(resp)
38//    }
39//
40// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateAnomalyMonitor
41func (c *CostExplorer) CreateAnomalyMonitorRequest(input *CreateAnomalyMonitorInput) (req *request.Request, output *CreateAnomalyMonitorOutput) {
42	op := &request.Operation{
43		Name:       opCreateAnomalyMonitor,
44		HTTPMethod: "POST",
45		HTTPPath:   "/",
46	}
47
48	if input == nil {
49		input = &CreateAnomalyMonitorInput{}
50	}
51
52	output = &CreateAnomalyMonitorOutput{}
53	req = c.newRequest(op, input, output)
54	return
55}
56
57// CreateAnomalyMonitor API operation for AWS Cost Explorer Service.
58//
59// Creates a new cost anomaly detection monitor with the requested type and
60// monitor specification.
61//
62// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
63// with awserr.Error's Code and Message methods to get detailed information about
64// the error.
65//
66// See the AWS API reference guide for AWS Cost Explorer Service's
67// API operation CreateAnomalyMonitor for usage and error information.
68//
69// Returned Error Types:
70//   * LimitExceededException
71//   You made too many calls in a short period of time. Try again later.
72//
73// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateAnomalyMonitor
74func (c *CostExplorer) CreateAnomalyMonitor(input *CreateAnomalyMonitorInput) (*CreateAnomalyMonitorOutput, error) {
75	req, out := c.CreateAnomalyMonitorRequest(input)
76	return out, req.Send()
77}
78
79// CreateAnomalyMonitorWithContext is the same as CreateAnomalyMonitor with the addition of
80// the ability to pass a context and additional request options.
81//
82// See CreateAnomalyMonitor for details on how to use this API operation.
83//
84// The context must be non-nil and will be used for request cancellation. If
85// the context is nil a panic will occur. In the future the SDK may create
86// sub-contexts for http.Requests. See https://golang.org/pkg/context/
87// for more information on using Contexts.
88func (c *CostExplorer) CreateAnomalyMonitorWithContext(ctx aws.Context, input *CreateAnomalyMonitorInput, opts ...request.Option) (*CreateAnomalyMonitorOutput, error) {
89	req, out := c.CreateAnomalyMonitorRequest(input)
90	req.SetContext(ctx)
91	req.ApplyOptions(opts...)
92	return out, req.Send()
93}
94
95const opCreateAnomalySubscription = "CreateAnomalySubscription"
96
97// CreateAnomalySubscriptionRequest generates a "aws/request.Request" representing the
98// client's request for the CreateAnomalySubscription operation. The "output" return
99// value will be populated with the request's response once the request completes
100// successfully.
101//
102// Use "Send" method on the returned Request to send the API call to the service.
103// the "output" return value is not valid until after Send returns without error.
104//
105// See CreateAnomalySubscription for more information on using the CreateAnomalySubscription
106// API call, and error handling.
107//
108// This method is useful when you want to inject custom logic or configuration
109// into the SDK's request lifecycle. Such as custom headers, or retry logic.
110//
111//
112//    // Example sending a request using the CreateAnomalySubscriptionRequest method.
113//    req, resp := client.CreateAnomalySubscriptionRequest(params)
114//
115//    err := req.Send()
116//    if err == nil { // resp is now filled
117//        fmt.Println(resp)
118//    }
119//
120// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateAnomalySubscription
121func (c *CostExplorer) CreateAnomalySubscriptionRequest(input *CreateAnomalySubscriptionInput) (req *request.Request, output *CreateAnomalySubscriptionOutput) {
122	op := &request.Operation{
123		Name:       opCreateAnomalySubscription,
124		HTTPMethod: "POST",
125		HTTPPath:   "/",
126	}
127
128	if input == nil {
129		input = &CreateAnomalySubscriptionInput{}
130	}
131
132	output = &CreateAnomalySubscriptionOutput{}
133	req = c.newRequest(op, input, output)
134	return
135}
136
137// CreateAnomalySubscription API operation for AWS Cost Explorer Service.
138//
139// Adds a subscription to a cost anomaly detection monitor. You can use each
140// subscription to define subscribers with email or SNS notifications. Email
141// subscribers can set a dollar threshold and a time frequency for receiving
142// notifications.
143//
144// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
145// with awserr.Error's Code and Message methods to get detailed information about
146// the error.
147//
148// See the AWS API reference guide for AWS Cost Explorer Service's
149// API operation CreateAnomalySubscription for usage and error information.
150//
151// Returned Error Types:
152//   * UnknownMonitorException
153//   The cost anomaly monitor does not exist for the account.
154//
155//   * LimitExceededException
156//   You made too many calls in a short period of time. Try again later.
157//
158// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateAnomalySubscription
159func (c *CostExplorer) CreateAnomalySubscription(input *CreateAnomalySubscriptionInput) (*CreateAnomalySubscriptionOutput, error) {
160	req, out := c.CreateAnomalySubscriptionRequest(input)
161	return out, req.Send()
162}
163
164// CreateAnomalySubscriptionWithContext is the same as CreateAnomalySubscription with the addition of
165// the ability to pass a context and additional request options.
166//
167// See CreateAnomalySubscription for details on how to use this API operation.
168//
169// The context must be non-nil and will be used for request cancellation. If
170// the context is nil a panic will occur. In the future the SDK may create
171// sub-contexts for http.Requests. See https://golang.org/pkg/context/
172// for more information on using Contexts.
173func (c *CostExplorer) CreateAnomalySubscriptionWithContext(ctx aws.Context, input *CreateAnomalySubscriptionInput, opts ...request.Option) (*CreateAnomalySubscriptionOutput, error) {
174	req, out := c.CreateAnomalySubscriptionRequest(input)
175	req.SetContext(ctx)
176	req.ApplyOptions(opts...)
177	return out, req.Send()
178}
179
180const opCreateCostCategoryDefinition = "CreateCostCategoryDefinition"
181
182// CreateCostCategoryDefinitionRequest generates a "aws/request.Request" representing the
183// client's request for the CreateCostCategoryDefinition operation. The "output" return
184// value will be populated with the request's response once the request completes
185// successfully.
186//
187// Use "Send" method on the returned Request to send the API call to the service.
188// the "output" return value is not valid until after Send returns without error.
189//
190// See CreateCostCategoryDefinition for more information on using the CreateCostCategoryDefinition
191// API call, and error handling.
192//
193// This method is useful when you want to inject custom logic or configuration
194// into the SDK's request lifecycle. Such as custom headers, or retry logic.
195//
196//
197//    // Example sending a request using the CreateCostCategoryDefinitionRequest method.
198//    req, resp := client.CreateCostCategoryDefinitionRequest(params)
199//
200//    err := req.Send()
201//    if err == nil { // resp is now filled
202//        fmt.Println(resp)
203//    }
204//
205// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateCostCategoryDefinition
206func (c *CostExplorer) CreateCostCategoryDefinitionRequest(input *CreateCostCategoryDefinitionInput) (req *request.Request, output *CreateCostCategoryDefinitionOutput) {
207	op := &request.Operation{
208		Name:       opCreateCostCategoryDefinition,
209		HTTPMethod: "POST",
210		HTTPPath:   "/",
211	}
212
213	if input == nil {
214		input = &CreateCostCategoryDefinitionInput{}
215	}
216
217	output = &CreateCostCategoryDefinitionOutput{}
218	req = c.newRequest(op, input, output)
219	return
220}
221
222// CreateCostCategoryDefinition API operation for AWS Cost Explorer Service.
223//
224// Creates a new Cost Category with the requested name and rules.
225//
226// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
227// with awserr.Error's Code and Message methods to get detailed information about
228// the error.
229//
230// See the AWS API reference guide for AWS Cost Explorer Service's
231// API operation CreateCostCategoryDefinition for usage and error information.
232//
233// Returned Error Types:
234//   * ServiceQuotaExceededException
235//   You've reached the limit on the number of resources you can create, or exceeded
236//   the size of an individual resource.
237//
238//   * LimitExceededException
239//   You made too many calls in a short period of time. Try again later.
240//
241// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateCostCategoryDefinition
242func (c *CostExplorer) CreateCostCategoryDefinition(input *CreateCostCategoryDefinitionInput) (*CreateCostCategoryDefinitionOutput, error) {
243	req, out := c.CreateCostCategoryDefinitionRequest(input)
244	return out, req.Send()
245}
246
247// CreateCostCategoryDefinitionWithContext is the same as CreateCostCategoryDefinition with the addition of
248// the ability to pass a context and additional request options.
249//
250// See CreateCostCategoryDefinition for details on how to use this API operation.
251//
252// The context must be non-nil and will be used for request cancellation. If
253// the context is nil a panic will occur. In the future the SDK may create
254// sub-contexts for http.Requests. See https://golang.org/pkg/context/
255// for more information on using Contexts.
256func (c *CostExplorer) CreateCostCategoryDefinitionWithContext(ctx aws.Context, input *CreateCostCategoryDefinitionInput, opts ...request.Option) (*CreateCostCategoryDefinitionOutput, error) {
257	req, out := c.CreateCostCategoryDefinitionRequest(input)
258	req.SetContext(ctx)
259	req.ApplyOptions(opts...)
260	return out, req.Send()
261}
262
263const opDeleteAnomalyMonitor = "DeleteAnomalyMonitor"
264
265// DeleteAnomalyMonitorRequest generates a "aws/request.Request" representing the
266// client's request for the DeleteAnomalyMonitor operation. The "output" return
267// value will be populated with the request's response once the request completes
268// successfully.
269//
270// Use "Send" method on the returned Request to send the API call to the service.
271// the "output" return value is not valid until after Send returns without error.
272//
273// See DeleteAnomalyMonitor for more information on using the DeleteAnomalyMonitor
274// API call, and error handling.
275//
276// This method is useful when you want to inject custom logic or configuration
277// into the SDK's request lifecycle. Such as custom headers, or retry logic.
278//
279//
280//    // Example sending a request using the DeleteAnomalyMonitorRequest method.
281//    req, resp := client.DeleteAnomalyMonitorRequest(params)
282//
283//    err := req.Send()
284//    if err == nil { // resp is now filled
285//        fmt.Println(resp)
286//    }
287//
288// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DeleteAnomalyMonitor
289func (c *CostExplorer) DeleteAnomalyMonitorRequest(input *DeleteAnomalyMonitorInput) (req *request.Request, output *DeleteAnomalyMonitorOutput) {
290	op := &request.Operation{
291		Name:       opDeleteAnomalyMonitor,
292		HTTPMethod: "POST",
293		HTTPPath:   "/",
294	}
295
296	if input == nil {
297		input = &DeleteAnomalyMonitorInput{}
298	}
299
300	output = &DeleteAnomalyMonitorOutput{}
301	req = c.newRequest(op, input, output)
302	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
303	return
304}
305
306// DeleteAnomalyMonitor API operation for AWS Cost Explorer Service.
307//
308// Deletes a cost anomaly monitor.
309//
310// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
311// with awserr.Error's Code and Message methods to get detailed information about
312// the error.
313//
314// See the AWS API reference guide for AWS Cost Explorer Service's
315// API operation DeleteAnomalyMonitor for usage and error information.
316//
317// Returned Error Types:
318//   * LimitExceededException
319//   You made too many calls in a short period of time. Try again later.
320//
321//   * UnknownMonitorException
322//   The cost anomaly monitor does not exist for the account.
323//
324// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DeleteAnomalyMonitor
325func (c *CostExplorer) DeleteAnomalyMonitor(input *DeleteAnomalyMonitorInput) (*DeleteAnomalyMonitorOutput, error) {
326	req, out := c.DeleteAnomalyMonitorRequest(input)
327	return out, req.Send()
328}
329
330// DeleteAnomalyMonitorWithContext is the same as DeleteAnomalyMonitor with the addition of
331// the ability to pass a context and additional request options.
332//
333// See DeleteAnomalyMonitor for details on how to use this API operation.
334//
335// The context must be non-nil and will be used for request cancellation. If
336// the context is nil a panic will occur. In the future the SDK may create
337// sub-contexts for http.Requests. See https://golang.org/pkg/context/
338// for more information on using Contexts.
339func (c *CostExplorer) DeleteAnomalyMonitorWithContext(ctx aws.Context, input *DeleteAnomalyMonitorInput, opts ...request.Option) (*DeleteAnomalyMonitorOutput, error) {
340	req, out := c.DeleteAnomalyMonitorRequest(input)
341	req.SetContext(ctx)
342	req.ApplyOptions(opts...)
343	return out, req.Send()
344}
345
346const opDeleteAnomalySubscription = "DeleteAnomalySubscription"
347
348// DeleteAnomalySubscriptionRequest generates a "aws/request.Request" representing the
349// client's request for the DeleteAnomalySubscription operation. The "output" return
350// value will be populated with the request's response once the request completes
351// successfully.
352//
353// Use "Send" method on the returned Request to send the API call to the service.
354// the "output" return value is not valid until after Send returns without error.
355//
356// See DeleteAnomalySubscription for more information on using the DeleteAnomalySubscription
357// API call, and error handling.
358//
359// This method is useful when you want to inject custom logic or configuration
360// into the SDK's request lifecycle. Such as custom headers, or retry logic.
361//
362//
363//    // Example sending a request using the DeleteAnomalySubscriptionRequest method.
364//    req, resp := client.DeleteAnomalySubscriptionRequest(params)
365//
366//    err := req.Send()
367//    if err == nil { // resp is now filled
368//        fmt.Println(resp)
369//    }
370//
371// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DeleteAnomalySubscription
372func (c *CostExplorer) DeleteAnomalySubscriptionRequest(input *DeleteAnomalySubscriptionInput) (req *request.Request, output *DeleteAnomalySubscriptionOutput) {
373	op := &request.Operation{
374		Name:       opDeleteAnomalySubscription,
375		HTTPMethod: "POST",
376		HTTPPath:   "/",
377	}
378
379	if input == nil {
380		input = &DeleteAnomalySubscriptionInput{}
381	}
382
383	output = &DeleteAnomalySubscriptionOutput{}
384	req = c.newRequest(op, input, output)
385	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
386	return
387}
388
389// DeleteAnomalySubscription API operation for AWS Cost Explorer Service.
390//
391// Deletes a cost anomaly subscription.
392//
393// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
394// with awserr.Error's Code and Message methods to get detailed information about
395// the error.
396//
397// See the AWS API reference guide for AWS Cost Explorer Service's
398// API operation DeleteAnomalySubscription for usage and error information.
399//
400// Returned Error Types:
401//   * LimitExceededException
402//   You made too many calls in a short period of time. Try again later.
403//
404//   * UnknownSubscriptionException
405//   The cost anomaly subscription does not exist for the account.
406//
407// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DeleteAnomalySubscription
408func (c *CostExplorer) DeleteAnomalySubscription(input *DeleteAnomalySubscriptionInput) (*DeleteAnomalySubscriptionOutput, error) {
409	req, out := c.DeleteAnomalySubscriptionRequest(input)
410	return out, req.Send()
411}
412
413// DeleteAnomalySubscriptionWithContext is the same as DeleteAnomalySubscription with the addition of
414// the ability to pass a context and additional request options.
415//
416// See DeleteAnomalySubscription for details on how to use this API operation.
417//
418// The context must be non-nil and will be used for request cancellation. If
419// the context is nil a panic will occur. In the future the SDK may create
420// sub-contexts for http.Requests. See https://golang.org/pkg/context/
421// for more information on using Contexts.
422func (c *CostExplorer) DeleteAnomalySubscriptionWithContext(ctx aws.Context, input *DeleteAnomalySubscriptionInput, opts ...request.Option) (*DeleteAnomalySubscriptionOutput, error) {
423	req, out := c.DeleteAnomalySubscriptionRequest(input)
424	req.SetContext(ctx)
425	req.ApplyOptions(opts...)
426	return out, req.Send()
427}
428
429const opDeleteCostCategoryDefinition = "DeleteCostCategoryDefinition"
430
431// DeleteCostCategoryDefinitionRequest generates a "aws/request.Request" representing the
432// client's request for the DeleteCostCategoryDefinition operation. The "output" return
433// value will be populated with the request's response once the request completes
434// successfully.
435//
436// Use "Send" method on the returned Request to send the API call to the service.
437// the "output" return value is not valid until after Send returns without error.
438//
439// See DeleteCostCategoryDefinition for more information on using the DeleteCostCategoryDefinition
440// API call, and error handling.
441//
442// This method is useful when you want to inject custom logic or configuration
443// into the SDK's request lifecycle. Such as custom headers, or retry logic.
444//
445//
446//    // Example sending a request using the DeleteCostCategoryDefinitionRequest method.
447//    req, resp := client.DeleteCostCategoryDefinitionRequest(params)
448//
449//    err := req.Send()
450//    if err == nil { // resp is now filled
451//        fmt.Println(resp)
452//    }
453//
454// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DeleteCostCategoryDefinition
455func (c *CostExplorer) DeleteCostCategoryDefinitionRequest(input *DeleteCostCategoryDefinitionInput) (req *request.Request, output *DeleteCostCategoryDefinitionOutput) {
456	op := &request.Operation{
457		Name:       opDeleteCostCategoryDefinition,
458		HTTPMethod: "POST",
459		HTTPPath:   "/",
460	}
461
462	if input == nil {
463		input = &DeleteCostCategoryDefinitionInput{}
464	}
465
466	output = &DeleteCostCategoryDefinitionOutput{}
467	req = c.newRequest(op, input, output)
468	return
469}
470
471// DeleteCostCategoryDefinition API operation for AWS Cost Explorer Service.
472//
473// Deletes a Cost Category. Expenses from this month going forward will no longer
474// be categorized with this Cost Category.
475//
476// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
477// with awserr.Error's Code and Message methods to get detailed information about
478// the error.
479//
480// See the AWS API reference guide for AWS Cost Explorer Service's
481// API operation DeleteCostCategoryDefinition for usage and error information.
482//
483// Returned Error Types:
484//   * ResourceNotFoundException
485//   The specified ARN in the request doesn't exist.
486//
487//   * LimitExceededException
488//   You made too many calls in a short period of time. Try again later.
489//
490// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DeleteCostCategoryDefinition
491func (c *CostExplorer) DeleteCostCategoryDefinition(input *DeleteCostCategoryDefinitionInput) (*DeleteCostCategoryDefinitionOutput, error) {
492	req, out := c.DeleteCostCategoryDefinitionRequest(input)
493	return out, req.Send()
494}
495
496// DeleteCostCategoryDefinitionWithContext is the same as DeleteCostCategoryDefinition with the addition of
497// the ability to pass a context and additional request options.
498//
499// See DeleteCostCategoryDefinition for details on how to use this API operation.
500//
501// The context must be non-nil and will be used for request cancellation. If
502// the context is nil a panic will occur. In the future the SDK may create
503// sub-contexts for http.Requests. See https://golang.org/pkg/context/
504// for more information on using Contexts.
505func (c *CostExplorer) DeleteCostCategoryDefinitionWithContext(ctx aws.Context, input *DeleteCostCategoryDefinitionInput, opts ...request.Option) (*DeleteCostCategoryDefinitionOutput, error) {
506	req, out := c.DeleteCostCategoryDefinitionRequest(input)
507	req.SetContext(ctx)
508	req.ApplyOptions(opts...)
509	return out, req.Send()
510}
511
512const opDescribeCostCategoryDefinition = "DescribeCostCategoryDefinition"
513
514// DescribeCostCategoryDefinitionRequest generates a "aws/request.Request" representing the
515// client's request for the DescribeCostCategoryDefinition operation. The "output" return
516// value will be populated with the request's response once the request completes
517// successfully.
518//
519// Use "Send" method on the returned Request to send the API call to the service.
520// the "output" return value is not valid until after Send returns without error.
521//
522// See DescribeCostCategoryDefinition for more information on using the DescribeCostCategoryDefinition
523// API call, and error handling.
524//
525// This method is useful when you want to inject custom logic or configuration
526// into the SDK's request lifecycle. Such as custom headers, or retry logic.
527//
528//
529//    // Example sending a request using the DescribeCostCategoryDefinitionRequest method.
530//    req, resp := client.DescribeCostCategoryDefinitionRequest(params)
531//
532//    err := req.Send()
533//    if err == nil { // resp is now filled
534//        fmt.Println(resp)
535//    }
536//
537// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DescribeCostCategoryDefinition
538func (c *CostExplorer) DescribeCostCategoryDefinitionRequest(input *DescribeCostCategoryDefinitionInput) (req *request.Request, output *DescribeCostCategoryDefinitionOutput) {
539	op := &request.Operation{
540		Name:       opDescribeCostCategoryDefinition,
541		HTTPMethod: "POST",
542		HTTPPath:   "/",
543	}
544
545	if input == nil {
546		input = &DescribeCostCategoryDefinitionInput{}
547	}
548
549	output = &DescribeCostCategoryDefinitionOutput{}
550	req = c.newRequest(op, input, output)
551	return
552}
553
554// DescribeCostCategoryDefinition API operation for AWS Cost Explorer Service.
555//
556// Returns the name, ARN, rules, definition, and effective dates of a Cost Category
557// that's defined in the account.
558//
559// You have the option to use EffectiveOn to return a Cost Category that is
560// active on a specific date. If there is no EffectiveOn specified, you’ll
561// see a Cost Category that is effective on the current date. If Cost Category
562// is still effective, EffectiveEnd is omitted in the response.
563//
564// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
565// with awserr.Error's Code and Message methods to get detailed information about
566// the error.
567//
568// See the AWS API reference guide for AWS Cost Explorer Service's
569// API operation DescribeCostCategoryDefinition for usage and error information.
570//
571// Returned Error Types:
572//   * ResourceNotFoundException
573//   The specified ARN in the request doesn't exist.
574//
575//   * LimitExceededException
576//   You made too many calls in a short period of time. Try again later.
577//
578// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DescribeCostCategoryDefinition
579func (c *CostExplorer) DescribeCostCategoryDefinition(input *DescribeCostCategoryDefinitionInput) (*DescribeCostCategoryDefinitionOutput, error) {
580	req, out := c.DescribeCostCategoryDefinitionRequest(input)
581	return out, req.Send()
582}
583
584// DescribeCostCategoryDefinitionWithContext is the same as DescribeCostCategoryDefinition with the addition of
585// the ability to pass a context and additional request options.
586//
587// See DescribeCostCategoryDefinition for details on how to use this API operation.
588//
589// The context must be non-nil and will be used for request cancellation. If
590// the context is nil a panic will occur. In the future the SDK may create
591// sub-contexts for http.Requests. See https://golang.org/pkg/context/
592// for more information on using Contexts.
593func (c *CostExplorer) DescribeCostCategoryDefinitionWithContext(ctx aws.Context, input *DescribeCostCategoryDefinitionInput, opts ...request.Option) (*DescribeCostCategoryDefinitionOutput, error) {
594	req, out := c.DescribeCostCategoryDefinitionRequest(input)
595	req.SetContext(ctx)
596	req.ApplyOptions(opts...)
597	return out, req.Send()
598}
599
600const opGetAnomalies = "GetAnomalies"
601
602// GetAnomaliesRequest generates a "aws/request.Request" representing the
603// client's request for the GetAnomalies operation. The "output" return
604// value will be populated with the request's response once the request completes
605// successfully.
606//
607// Use "Send" method on the returned Request to send the API call to the service.
608// the "output" return value is not valid until after Send returns without error.
609//
610// See GetAnomalies for more information on using the GetAnomalies
611// API call, and error handling.
612//
613// This method is useful when you want to inject custom logic or configuration
614// into the SDK's request lifecycle. Such as custom headers, or retry logic.
615//
616//
617//    // Example sending a request using the GetAnomaliesRequest method.
618//    req, resp := client.GetAnomaliesRequest(params)
619//
620//    err := req.Send()
621//    if err == nil { // resp is now filled
622//        fmt.Println(resp)
623//    }
624//
625// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetAnomalies
626func (c *CostExplorer) GetAnomaliesRequest(input *GetAnomaliesInput) (req *request.Request, output *GetAnomaliesOutput) {
627	op := &request.Operation{
628		Name:       opGetAnomalies,
629		HTTPMethod: "POST",
630		HTTPPath:   "/",
631	}
632
633	if input == nil {
634		input = &GetAnomaliesInput{}
635	}
636
637	output = &GetAnomaliesOutput{}
638	req = c.newRequest(op, input, output)
639	return
640}
641
642// GetAnomalies API operation for AWS Cost Explorer Service.
643//
644// Retrieves all of the cost anomalies detected on your account during the time
645// period that's specified by the DateInterval object.
646//
647// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
648// with awserr.Error's Code and Message methods to get detailed information about
649// the error.
650//
651// See the AWS API reference guide for AWS Cost Explorer Service's
652// API operation GetAnomalies for usage and error information.
653//
654// Returned Error Types:
655//   * LimitExceededException
656//   You made too many calls in a short period of time. Try again later.
657//
658//   * InvalidNextTokenException
659//   The pagination token is invalid. Try again without a pagination token.
660//
661// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetAnomalies
662func (c *CostExplorer) GetAnomalies(input *GetAnomaliesInput) (*GetAnomaliesOutput, error) {
663	req, out := c.GetAnomaliesRequest(input)
664	return out, req.Send()
665}
666
667// GetAnomaliesWithContext is the same as GetAnomalies with the addition of
668// the ability to pass a context and additional request options.
669//
670// See GetAnomalies for details on how to use this API operation.
671//
672// The context must be non-nil and will be used for request cancellation. If
673// the context is nil a panic will occur. In the future the SDK may create
674// sub-contexts for http.Requests. See https://golang.org/pkg/context/
675// for more information on using Contexts.
676func (c *CostExplorer) GetAnomaliesWithContext(ctx aws.Context, input *GetAnomaliesInput, opts ...request.Option) (*GetAnomaliesOutput, error) {
677	req, out := c.GetAnomaliesRequest(input)
678	req.SetContext(ctx)
679	req.ApplyOptions(opts...)
680	return out, req.Send()
681}
682
683const opGetAnomalyMonitors = "GetAnomalyMonitors"
684
685// GetAnomalyMonitorsRequest generates a "aws/request.Request" representing the
686// client's request for the GetAnomalyMonitors operation. The "output" return
687// value will be populated with the request's response once the request completes
688// successfully.
689//
690// Use "Send" method on the returned Request to send the API call to the service.
691// the "output" return value is not valid until after Send returns without error.
692//
693// See GetAnomalyMonitors for more information on using the GetAnomalyMonitors
694// API call, and error handling.
695//
696// This method is useful when you want to inject custom logic or configuration
697// into the SDK's request lifecycle. Such as custom headers, or retry logic.
698//
699//
700//    // Example sending a request using the GetAnomalyMonitorsRequest method.
701//    req, resp := client.GetAnomalyMonitorsRequest(params)
702//
703//    err := req.Send()
704//    if err == nil { // resp is now filled
705//        fmt.Println(resp)
706//    }
707//
708// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetAnomalyMonitors
709func (c *CostExplorer) GetAnomalyMonitorsRequest(input *GetAnomalyMonitorsInput) (req *request.Request, output *GetAnomalyMonitorsOutput) {
710	op := &request.Operation{
711		Name:       opGetAnomalyMonitors,
712		HTTPMethod: "POST",
713		HTTPPath:   "/",
714	}
715
716	if input == nil {
717		input = &GetAnomalyMonitorsInput{}
718	}
719
720	output = &GetAnomalyMonitorsOutput{}
721	req = c.newRequest(op, input, output)
722	return
723}
724
725// GetAnomalyMonitors API operation for AWS Cost Explorer Service.
726//
727// Retrieves the cost anomaly monitor definitions for your account. You can
728// filter using a list of cost anomaly monitor Amazon Resource Names (ARNs).
729//
730// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
731// with awserr.Error's Code and Message methods to get detailed information about
732// the error.
733//
734// See the AWS API reference guide for AWS Cost Explorer Service's
735// API operation GetAnomalyMonitors for usage and error information.
736//
737// Returned Error Types:
738//   * LimitExceededException
739//   You made too many calls in a short period of time. Try again later.
740//
741//   * UnknownMonitorException
742//   The cost anomaly monitor does not exist for the account.
743//
744//   * InvalidNextTokenException
745//   The pagination token is invalid. Try again without a pagination token.
746//
747// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetAnomalyMonitors
748func (c *CostExplorer) GetAnomalyMonitors(input *GetAnomalyMonitorsInput) (*GetAnomalyMonitorsOutput, error) {
749	req, out := c.GetAnomalyMonitorsRequest(input)
750	return out, req.Send()
751}
752
753// GetAnomalyMonitorsWithContext is the same as GetAnomalyMonitors with the addition of
754// the ability to pass a context and additional request options.
755//
756// See GetAnomalyMonitors for details on how to use this API operation.
757//
758// The context must be non-nil and will be used for request cancellation. If
759// the context is nil a panic will occur. In the future the SDK may create
760// sub-contexts for http.Requests. See https://golang.org/pkg/context/
761// for more information on using Contexts.
762func (c *CostExplorer) GetAnomalyMonitorsWithContext(ctx aws.Context, input *GetAnomalyMonitorsInput, opts ...request.Option) (*GetAnomalyMonitorsOutput, error) {
763	req, out := c.GetAnomalyMonitorsRequest(input)
764	req.SetContext(ctx)
765	req.ApplyOptions(opts...)
766	return out, req.Send()
767}
768
769const opGetAnomalySubscriptions = "GetAnomalySubscriptions"
770
771// GetAnomalySubscriptionsRequest generates a "aws/request.Request" representing the
772// client's request for the GetAnomalySubscriptions operation. The "output" return
773// value will be populated with the request's response once the request completes
774// successfully.
775//
776// Use "Send" method on the returned Request to send the API call to the service.
777// the "output" return value is not valid until after Send returns without error.
778//
779// See GetAnomalySubscriptions for more information on using the GetAnomalySubscriptions
780// API call, and error handling.
781//
782// This method is useful when you want to inject custom logic or configuration
783// into the SDK's request lifecycle. Such as custom headers, or retry logic.
784//
785//
786//    // Example sending a request using the GetAnomalySubscriptionsRequest method.
787//    req, resp := client.GetAnomalySubscriptionsRequest(params)
788//
789//    err := req.Send()
790//    if err == nil { // resp is now filled
791//        fmt.Println(resp)
792//    }
793//
794// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetAnomalySubscriptions
795func (c *CostExplorer) GetAnomalySubscriptionsRequest(input *GetAnomalySubscriptionsInput) (req *request.Request, output *GetAnomalySubscriptionsOutput) {
796	op := &request.Operation{
797		Name:       opGetAnomalySubscriptions,
798		HTTPMethod: "POST",
799		HTTPPath:   "/",
800	}
801
802	if input == nil {
803		input = &GetAnomalySubscriptionsInput{}
804	}
805
806	output = &GetAnomalySubscriptionsOutput{}
807	req = c.newRequest(op, input, output)
808	return
809}
810
811// GetAnomalySubscriptions API operation for AWS Cost Explorer Service.
812//
813// Retrieves the cost anomaly subscription objects for your account. You can
814// filter using a list of cost anomaly monitor Amazon Resource Names (ARNs).
815//
816// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
817// with awserr.Error's Code and Message methods to get detailed information about
818// the error.
819//
820// See the AWS API reference guide for AWS Cost Explorer Service's
821// API operation GetAnomalySubscriptions for usage and error information.
822//
823// Returned Error Types:
824//   * LimitExceededException
825//   You made too many calls in a short period of time. Try again later.
826//
827//   * UnknownSubscriptionException
828//   The cost anomaly subscription does not exist for the account.
829//
830//   * InvalidNextTokenException
831//   The pagination token is invalid. Try again without a pagination token.
832//
833// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetAnomalySubscriptions
834func (c *CostExplorer) GetAnomalySubscriptions(input *GetAnomalySubscriptionsInput) (*GetAnomalySubscriptionsOutput, error) {
835	req, out := c.GetAnomalySubscriptionsRequest(input)
836	return out, req.Send()
837}
838
839// GetAnomalySubscriptionsWithContext is the same as GetAnomalySubscriptions with the addition of
840// the ability to pass a context and additional request options.
841//
842// See GetAnomalySubscriptions for details on how to use this API operation.
843//
844// The context must be non-nil and will be used for request cancellation. If
845// the context is nil a panic will occur. In the future the SDK may create
846// sub-contexts for http.Requests. See https://golang.org/pkg/context/
847// for more information on using Contexts.
848func (c *CostExplorer) GetAnomalySubscriptionsWithContext(ctx aws.Context, input *GetAnomalySubscriptionsInput, opts ...request.Option) (*GetAnomalySubscriptionsOutput, error) {
849	req, out := c.GetAnomalySubscriptionsRequest(input)
850	req.SetContext(ctx)
851	req.ApplyOptions(opts...)
852	return out, req.Send()
853}
854
855const opGetCostAndUsage = "GetCostAndUsage"
856
857// GetCostAndUsageRequest generates a "aws/request.Request" representing the
858// client's request for the GetCostAndUsage operation. The "output" return
859// value will be populated with the request's response once the request completes
860// successfully.
861//
862// Use "Send" method on the returned Request to send the API call to the service.
863// the "output" return value is not valid until after Send returns without error.
864//
865// See GetCostAndUsage for more information on using the GetCostAndUsage
866// API call, and error handling.
867//
868// This method is useful when you want to inject custom logic or configuration
869// into the SDK's request lifecycle. Such as custom headers, or retry logic.
870//
871//
872//    // Example sending a request using the GetCostAndUsageRequest method.
873//    req, resp := client.GetCostAndUsageRequest(params)
874//
875//    err := req.Send()
876//    if err == nil { // resp is now filled
877//        fmt.Println(resp)
878//    }
879//
880// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsage
881func (c *CostExplorer) GetCostAndUsageRequest(input *GetCostAndUsageInput) (req *request.Request, output *GetCostAndUsageOutput) {
882	op := &request.Operation{
883		Name:       opGetCostAndUsage,
884		HTTPMethod: "POST",
885		HTTPPath:   "/",
886	}
887
888	if input == nil {
889		input = &GetCostAndUsageInput{}
890	}
891
892	output = &GetCostAndUsageOutput{}
893	req = c.newRequest(op, input, output)
894	return
895}
896
897// GetCostAndUsage API operation for AWS Cost Explorer Service.
898//
899// Retrieves cost and usage metrics for your account. You can specify which
900// cost and usage-related metric that you want the request to return. For example,
901// you can specify BlendedCosts or UsageQuantity. You can also filter and group
902// your data by various dimensions, such as SERVICE or AZ, in a specific time
903// range. For a complete list of valid dimensions, see the GetDimensionValues
904// (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_GetDimensionValues.html)
905// operation. Management account in an organization in Organizations have access
906// to all member accounts.
907//
908// For information about filter limitations, see Quotas and restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-limits.html)
909// in the Billing and Cost Management User Guide.
910//
911// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
912// with awserr.Error's Code and Message methods to get detailed information about
913// the error.
914//
915// See the AWS API reference guide for AWS Cost Explorer Service's
916// API operation GetCostAndUsage for usage and error information.
917//
918// Returned Error Types:
919//   * LimitExceededException
920//   You made too many calls in a short period of time. Try again later.
921//
922//   * BillExpirationException
923//   The requested report expired. Update the date interval and try again.
924//
925//   * DataUnavailableException
926//   The requested data is unavailable.
927//
928//   * InvalidNextTokenException
929//   The pagination token is invalid. Try again without a pagination token.
930//
931//   * RequestChangedException
932//   Your request parameters changed between pages. Try again with the old parameters
933//   or without a pagination token.
934//
935// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsage
936func (c *CostExplorer) GetCostAndUsage(input *GetCostAndUsageInput) (*GetCostAndUsageOutput, error) {
937	req, out := c.GetCostAndUsageRequest(input)
938	return out, req.Send()
939}
940
941// GetCostAndUsageWithContext is the same as GetCostAndUsage with the addition of
942// the ability to pass a context and additional request options.
943//
944// See GetCostAndUsage for details on how to use this API operation.
945//
946// The context must be non-nil and will be used for request cancellation. If
947// the context is nil a panic will occur. In the future the SDK may create
948// sub-contexts for http.Requests. See https://golang.org/pkg/context/
949// for more information on using Contexts.
950func (c *CostExplorer) GetCostAndUsageWithContext(ctx aws.Context, input *GetCostAndUsageInput, opts ...request.Option) (*GetCostAndUsageOutput, error) {
951	req, out := c.GetCostAndUsageRequest(input)
952	req.SetContext(ctx)
953	req.ApplyOptions(opts...)
954	return out, req.Send()
955}
956
957const opGetCostAndUsageWithResources = "GetCostAndUsageWithResources"
958
959// GetCostAndUsageWithResourcesRequest generates a "aws/request.Request" representing the
960// client's request for the GetCostAndUsageWithResources operation. The "output" return
961// value will be populated with the request's response once the request completes
962// successfully.
963//
964// Use "Send" method on the returned Request to send the API call to the service.
965// the "output" return value is not valid until after Send returns without error.
966//
967// See GetCostAndUsageWithResources for more information on using the GetCostAndUsageWithResources
968// API call, and error handling.
969//
970// This method is useful when you want to inject custom logic or configuration
971// into the SDK's request lifecycle. Such as custom headers, or retry logic.
972//
973//
974//    // Example sending a request using the GetCostAndUsageWithResourcesRequest method.
975//    req, resp := client.GetCostAndUsageWithResourcesRequest(params)
976//
977//    err := req.Send()
978//    if err == nil { // resp is now filled
979//        fmt.Println(resp)
980//    }
981//
982// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsageWithResources
983func (c *CostExplorer) GetCostAndUsageWithResourcesRequest(input *GetCostAndUsageWithResourcesInput) (req *request.Request, output *GetCostAndUsageWithResourcesOutput) {
984	op := &request.Operation{
985		Name:       opGetCostAndUsageWithResources,
986		HTTPMethod: "POST",
987		HTTPPath:   "/",
988	}
989
990	if input == nil {
991		input = &GetCostAndUsageWithResourcesInput{}
992	}
993
994	output = &GetCostAndUsageWithResourcesOutput{}
995	req = c.newRequest(op, input, output)
996	return
997}
998
999// GetCostAndUsageWithResources API operation for AWS Cost Explorer Service.
1000//
1001// Retrieves cost and usage metrics with resources for your account. You can
1002// specify which cost and usage-related metric, such as BlendedCosts or UsageQuantity,
1003// that you want the request to return. You can also filter and group your data
1004// by various dimensions, such as SERVICE or AZ, in a specific time range. For
1005// a complete list of valid dimensions, see the GetDimensionValues (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_GetDimensionValues.html)
1006// operation. Management account in an organization in Organizations have access
1007// to all member accounts. This API is currently available for the Amazon Elastic
1008// Compute Cloud – Compute service only.
1009//
1010// This is an opt-in only feature. You can enable this feature from the Cost
1011// Explorer Settings page. For information on how to access the Settings page,
1012// see Controlling Access for Cost Explorer (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/ce-access.html)
1013// in the Billing and Cost Management User Guide.
1014//
1015// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1016// with awserr.Error's Code and Message methods to get detailed information about
1017// the error.
1018//
1019// See the AWS API reference guide for AWS Cost Explorer Service's
1020// API operation GetCostAndUsageWithResources for usage and error information.
1021//
1022// Returned Error Types:
1023//   * DataUnavailableException
1024//   The requested data is unavailable.
1025//
1026//   * LimitExceededException
1027//   You made too many calls in a short period of time. Try again later.
1028//
1029//   * BillExpirationException
1030//   The requested report expired. Update the date interval and try again.
1031//
1032//   * InvalidNextTokenException
1033//   The pagination token is invalid. Try again without a pagination token.
1034//
1035//   * RequestChangedException
1036//   Your request parameters changed between pages. Try again with the old parameters
1037//   or without a pagination token.
1038//
1039// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsageWithResources
1040func (c *CostExplorer) GetCostAndUsageWithResources(input *GetCostAndUsageWithResourcesInput) (*GetCostAndUsageWithResourcesOutput, error) {
1041	req, out := c.GetCostAndUsageWithResourcesRequest(input)
1042	return out, req.Send()
1043}
1044
1045// GetCostAndUsageWithResourcesWithContext is the same as GetCostAndUsageWithResources with the addition of
1046// the ability to pass a context and additional request options.
1047//
1048// See GetCostAndUsageWithResources for details on how to use this API operation.
1049//
1050// The context must be non-nil and will be used for request cancellation. If
1051// the context is nil a panic will occur. In the future the SDK may create
1052// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1053// for more information on using Contexts.
1054func (c *CostExplorer) GetCostAndUsageWithResourcesWithContext(ctx aws.Context, input *GetCostAndUsageWithResourcesInput, opts ...request.Option) (*GetCostAndUsageWithResourcesOutput, error) {
1055	req, out := c.GetCostAndUsageWithResourcesRequest(input)
1056	req.SetContext(ctx)
1057	req.ApplyOptions(opts...)
1058	return out, req.Send()
1059}
1060
1061const opGetCostCategories = "GetCostCategories"
1062
1063// GetCostCategoriesRequest generates a "aws/request.Request" representing the
1064// client's request for the GetCostCategories operation. The "output" return
1065// value will be populated with the request's response once the request completes
1066// successfully.
1067//
1068// Use "Send" method on the returned Request to send the API call to the service.
1069// the "output" return value is not valid until after Send returns without error.
1070//
1071// See GetCostCategories for more information on using the GetCostCategories
1072// API call, and error handling.
1073//
1074// This method is useful when you want to inject custom logic or configuration
1075// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1076//
1077//
1078//    // Example sending a request using the GetCostCategoriesRequest method.
1079//    req, resp := client.GetCostCategoriesRequest(params)
1080//
1081//    err := req.Send()
1082//    if err == nil { // resp is now filled
1083//        fmt.Println(resp)
1084//    }
1085//
1086// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostCategories
1087func (c *CostExplorer) GetCostCategoriesRequest(input *GetCostCategoriesInput) (req *request.Request, output *GetCostCategoriesOutput) {
1088	op := &request.Operation{
1089		Name:       opGetCostCategories,
1090		HTTPMethod: "POST",
1091		HTTPPath:   "/",
1092	}
1093
1094	if input == nil {
1095		input = &GetCostCategoriesInput{}
1096	}
1097
1098	output = &GetCostCategoriesOutput{}
1099	req = c.newRequest(op, input, output)
1100	return
1101}
1102
1103// GetCostCategories API operation for AWS Cost Explorer Service.
1104//
1105// Retrieves an array of Cost Category names and values incurred cost.
1106//
1107// If some Cost Category names and values are not associated with any cost,
1108// they will not be returned by this API.
1109//
1110// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1111// with awserr.Error's Code and Message methods to get detailed information about
1112// the error.
1113//
1114// See the AWS API reference guide for AWS Cost Explorer Service's
1115// API operation GetCostCategories for usage and error information.
1116//
1117// Returned Error Types:
1118//   * LimitExceededException
1119//   You made too many calls in a short period of time. Try again later.
1120//
1121//   * BillExpirationException
1122//   The requested report expired. Update the date interval and try again.
1123//
1124//   * DataUnavailableException
1125//   The requested data is unavailable.
1126//
1127//   * InvalidNextTokenException
1128//   The pagination token is invalid. Try again without a pagination token.
1129//
1130//   * RequestChangedException
1131//   Your request parameters changed between pages. Try again with the old parameters
1132//   or without a pagination token.
1133//
1134// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostCategories
1135func (c *CostExplorer) GetCostCategories(input *GetCostCategoriesInput) (*GetCostCategoriesOutput, error) {
1136	req, out := c.GetCostCategoriesRequest(input)
1137	return out, req.Send()
1138}
1139
1140// GetCostCategoriesWithContext is the same as GetCostCategories with the addition of
1141// the ability to pass a context and additional request options.
1142//
1143// See GetCostCategories for details on how to use this API operation.
1144//
1145// The context must be non-nil and will be used for request cancellation. If
1146// the context is nil a panic will occur. In the future the SDK may create
1147// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1148// for more information on using Contexts.
1149func (c *CostExplorer) GetCostCategoriesWithContext(ctx aws.Context, input *GetCostCategoriesInput, opts ...request.Option) (*GetCostCategoriesOutput, error) {
1150	req, out := c.GetCostCategoriesRequest(input)
1151	req.SetContext(ctx)
1152	req.ApplyOptions(opts...)
1153	return out, req.Send()
1154}
1155
1156const opGetCostForecast = "GetCostForecast"
1157
1158// GetCostForecastRequest generates a "aws/request.Request" representing the
1159// client's request for the GetCostForecast operation. The "output" return
1160// value will be populated with the request's response once the request completes
1161// successfully.
1162//
1163// Use "Send" method on the returned Request to send the API call to the service.
1164// the "output" return value is not valid until after Send returns without error.
1165//
1166// See GetCostForecast for more information on using the GetCostForecast
1167// API call, and error handling.
1168//
1169// This method is useful when you want to inject custom logic or configuration
1170// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1171//
1172//
1173//    // Example sending a request using the GetCostForecastRequest method.
1174//    req, resp := client.GetCostForecastRequest(params)
1175//
1176//    err := req.Send()
1177//    if err == nil { // resp is now filled
1178//        fmt.Println(resp)
1179//    }
1180//
1181// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostForecast
1182func (c *CostExplorer) GetCostForecastRequest(input *GetCostForecastInput) (req *request.Request, output *GetCostForecastOutput) {
1183	op := &request.Operation{
1184		Name:       opGetCostForecast,
1185		HTTPMethod: "POST",
1186		HTTPPath:   "/",
1187	}
1188
1189	if input == nil {
1190		input = &GetCostForecastInput{}
1191	}
1192
1193	output = &GetCostForecastOutput{}
1194	req = c.newRequest(op, input, output)
1195	return
1196}
1197
1198// GetCostForecast API operation for AWS Cost Explorer Service.
1199//
1200// Retrieves a forecast for how much Amazon Web Services predicts that you will
1201// spend over the forecast time period that you select, based on your past costs.
1202//
1203// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1204// with awserr.Error's Code and Message methods to get detailed information about
1205// the error.
1206//
1207// See the AWS API reference guide for AWS Cost Explorer Service's
1208// API operation GetCostForecast for usage and error information.
1209//
1210// Returned Error Types:
1211//   * LimitExceededException
1212//   You made too many calls in a short period of time. Try again later.
1213//
1214//   * DataUnavailableException
1215//   The requested data is unavailable.
1216//
1217// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostForecast
1218func (c *CostExplorer) GetCostForecast(input *GetCostForecastInput) (*GetCostForecastOutput, error) {
1219	req, out := c.GetCostForecastRequest(input)
1220	return out, req.Send()
1221}
1222
1223// GetCostForecastWithContext is the same as GetCostForecast with the addition of
1224// the ability to pass a context and additional request options.
1225//
1226// See GetCostForecast for details on how to use this API operation.
1227//
1228// The context must be non-nil and will be used for request cancellation. If
1229// the context is nil a panic will occur. In the future the SDK may create
1230// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1231// for more information on using Contexts.
1232func (c *CostExplorer) GetCostForecastWithContext(ctx aws.Context, input *GetCostForecastInput, opts ...request.Option) (*GetCostForecastOutput, error) {
1233	req, out := c.GetCostForecastRequest(input)
1234	req.SetContext(ctx)
1235	req.ApplyOptions(opts...)
1236	return out, req.Send()
1237}
1238
1239const opGetDimensionValues = "GetDimensionValues"
1240
1241// GetDimensionValuesRequest generates a "aws/request.Request" representing the
1242// client's request for the GetDimensionValues operation. The "output" return
1243// value will be populated with the request's response once the request completes
1244// successfully.
1245//
1246// Use "Send" method on the returned Request to send the API call to the service.
1247// the "output" return value is not valid until after Send returns without error.
1248//
1249// See GetDimensionValues for more information on using the GetDimensionValues
1250// API call, and error handling.
1251//
1252// This method is useful when you want to inject custom logic or configuration
1253// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1254//
1255//
1256//    // Example sending a request using the GetDimensionValuesRequest method.
1257//    req, resp := client.GetDimensionValuesRequest(params)
1258//
1259//    err := req.Send()
1260//    if err == nil { // resp is now filled
1261//        fmt.Println(resp)
1262//    }
1263//
1264// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetDimensionValues
1265func (c *CostExplorer) GetDimensionValuesRequest(input *GetDimensionValuesInput) (req *request.Request, output *GetDimensionValuesOutput) {
1266	op := &request.Operation{
1267		Name:       opGetDimensionValues,
1268		HTTPMethod: "POST",
1269		HTTPPath:   "/",
1270	}
1271
1272	if input == nil {
1273		input = &GetDimensionValuesInput{}
1274	}
1275
1276	output = &GetDimensionValuesOutput{}
1277	req = c.newRequest(op, input, output)
1278	return
1279}
1280
1281// GetDimensionValues API operation for AWS Cost Explorer Service.
1282//
1283// Retrieves all available filter values for a specified filter over a period
1284// of time. You can search the dimension values for an arbitrary string.
1285//
1286// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1287// with awserr.Error's Code and Message methods to get detailed information about
1288// the error.
1289//
1290// See the AWS API reference guide for AWS Cost Explorer Service's
1291// API operation GetDimensionValues for usage and error information.
1292//
1293// Returned Error Types:
1294//   * LimitExceededException
1295//   You made too many calls in a short period of time. Try again later.
1296//
1297//   * BillExpirationException
1298//   The requested report expired. Update the date interval and try again.
1299//
1300//   * DataUnavailableException
1301//   The requested data is unavailable.
1302//
1303//   * InvalidNextTokenException
1304//   The pagination token is invalid. Try again without a pagination token.
1305//
1306//   * RequestChangedException
1307//   Your request parameters changed between pages. Try again with the old parameters
1308//   or without a pagination token.
1309//
1310// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetDimensionValues
1311func (c *CostExplorer) GetDimensionValues(input *GetDimensionValuesInput) (*GetDimensionValuesOutput, error) {
1312	req, out := c.GetDimensionValuesRequest(input)
1313	return out, req.Send()
1314}
1315
1316// GetDimensionValuesWithContext is the same as GetDimensionValues with the addition of
1317// the ability to pass a context and additional request options.
1318//
1319// See GetDimensionValues for details on how to use this API operation.
1320//
1321// The context must be non-nil and will be used for request cancellation. If
1322// the context is nil a panic will occur. In the future the SDK may create
1323// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1324// for more information on using Contexts.
1325func (c *CostExplorer) GetDimensionValuesWithContext(ctx aws.Context, input *GetDimensionValuesInput, opts ...request.Option) (*GetDimensionValuesOutput, error) {
1326	req, out := c.GetDimensionValuesRequest(input)
1327	req.SetContext(ctx)
1328	req.ApplyOptions(opts...)
1329	return out, req.Send()
1330}
1331
1332const opGetReservationCoverage = "GetReservationCoverage"
1333
1334// GetReservationCoverageRequest generates a "aws/request.Request" representing the
1335// client's request for the GetReservationCoverage operation. The "output" return
1336// value will be populated with the request's response once the request completes
1337// successfully.
1338//
1339// Use "Send" method on the returned Request to send the API call to the service.
1340// the "output" return value is not valid until after Send returns without error.
1341//
1342// See GetReservationCoverage for more information on using the GetReservationCoverage
1343// API call, and error handling.
1344//
1345// This method is useful when you want to inject custom logic or configuration
1346// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1347//
1348//
1349//    // Example sending a request using the GetReservationCoverageRequest method.
1350//    req, resp := client.GetReservationCoverageRequest(params)
1351//
1352//    err := req.Send()
1353//    if err == nil { // resp is now filled
1354//        fmt.Println(resp)
1355//    }
1356//
1357// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationCoverage
1358func (c *CostExplorer) GetReservationCoverageRequest(input *GetReservationCoverageInput) (req *request.Request, output *GetReservationCoverageOutput) {
1359	op := &request.Operation{
1360		Name:       opGetReservationCoverage,
1361		HTTPMethod: "POST",
1362		HTTPPath:   "/",
1363	}
1364
1365	if input == nil {
1366		input = &GetReservationCoverageInput{}
1367	}
1368
1369	output = &GetReservationCoverageOutput{}
1370	req = c.newRequest(op, input, output)
1371	return
1372}
1373
1374// GetReservationCoverage API operation for AWS Cost Explorer Service.
1375//
1376// Retrieves the reservation coverage for your account. This enables you to
1377// see how much of your Amazon Elastic Compute Cloud, Amazon ElastiCache, Amazon
1378// Relational Database Service, or Amazon Redshift usage is covered by a reservation.
1379// An organization's management account can see the coverage of the associated
1380// member accounts. This supports dimensions, Cost Categories, and nested expressions.
1381// For any time period, you can filter data about reservation usage by the following
1382// dimensions:
1383//
1384//    * AZ
1385//
1386//    * CACHE_ENGINE
1387//
1388//    * DATABASE_ENGINE
1389//
1390//    * DEPLOYMENT_OPTION
1391//
1392//    * INSTANCE_TYPE
1393//
1394//    * LINKED_ACCOUNT
1395//
1396//    * OPERATING_SYSTEM
1397//
1398//    * PLATFORM
1399//
1400//    * REGION
1401//
1402//    * SERVICE
1403//
1404//    * TAG
1405//
1406//    * TENANCY
1407//
1408// To determine valid values for a dimension, use the GetDimensionValues operation.
1409//
1410// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1411// with awserr.Error's Code and Message methods to get detailed information about
1412// the error.
1413//
1414// See the AWS API reference guide for AWS Cost Explorer Service's
1415// API operation GetReservationCoverage for usage and error information.
1416//
1417// Returned Error Types:
1418//   * LimitExceededException
1419//   You made too many calls in a short period of time. Try again later.
1420//
1421//   * DataUnavailableException
1422//   The requested data is unavailable.
1423//
1424//   * InvalidNextTokenException
1425//   The pagination token is invalid. Try again without a pagination token.
1426//
1427// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationCoverage
1428func (c *CostExplorer) GetReservationCoverage(input *GetReservationCoverageInput) (*GetReservationCoverageOutput, error) {
1429	req, out := c.GetReservationCoverageRequest(input)
1430	return out, req.Send()
1431}
1432
1433// GetReservationCoverageWithContext is the same as GetReservationCoverage with the addition of
1434// the ability to pass a context and additional request options.
1435//
1436// See GetReservationCoverage for details on how to use this API operation.
1437//
1438// The context must be non-nil and will be used for request cancellation. If
1439// the context is nil a panic will occur. In the future the SDK may create
1440// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1441// for more information on using Contexts.
1442func (c *CostExplorer) GetReservationCoverageWithContext(ctx aws.Context, input *GetReservationCoverageInput, opts ...request.Option) (*GetReservationCoverageOutput, error) {
1443	req, out := c.GetReservationCoverageRequest(input)
1444	req.SetContext(ctx)
1445	req.ApplyOptions(opts...)
1446	return out, req.Send()
1447}
1448
1449const opGetReservationPurchaseRecommendation = "GetReservationPurchaseRecommendation"
1450
1451// GetReservationPurchaseRecommendationRequest generates a "aws/request.Request" representing the
1452// client's request for the GetReservationPurchaseRecommendation operation. The "output" return
1453// value will be populated with the request's response once the request completes
1454// successfully.
1455//
1456// Use "Send" method on the returned Request to send the API call to the service.
1457// the "output" return value is not valid until after Send returns without error.
1458//
1459// See GetReservationPurchaseRecommendation for more information on using the GetReservationPurchaseRecommendation
1460// API call, and error handling.
1461//
1462// This method is useful when you want to inject custom logic or configuration
1463// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1464//
1465//
1466//    // Example sending a request using the GetReservationPurchaseRecommendationRequest method.
1467//    req, resp := client.GetReservationPurchaseRecommendationRequest(params)
1468//
1469//    err := req.Send()
1470//    if err == nil { // resp is now filled
1471//        fmt.Println(resp)
1472//    }
1473//
1474// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationPurchaseRecommendation
1475func (c *CostExplorer) GetReservationPurchaseRecommendationRequest(input *GetReservationPurchaseRecommendationInput) (req *request.Request, output *GetReservationPurchaseRecommendationOutput) {
1476	op := &request.Operation{
1477		Name:       opGetReservationPurchaseRecommendation,
1478		HTTPMethod: "POST",
1479		HTTPPath:   "/",
1480	}
1481
1482	if input == nil {
1483		input = &GetReservationPurchaseRecommendationInput{}
1484	}
1485
1486	output = &GetReservationPurchaseRecommendationOutput{}
1487	req = c.newRequest(op, input, output)
1488	return
1489}
1490
1491// GetReservationPurchaseRecommendation API operation for AWS Cost Explorer Service.
1492//
1493// Gets recommendations for which reservations to purchase. These recommendations
1494// could help you reduce your costs. Reservations provide a discounted hourly
1495// rate (up to 75%) compared to On-Demand pricing.
1496//
1497// Amazon Web Services generates your recommendations by identifying your On-Demand
1498// usage during a specific time period and collecting your usage into categories
1499// that are eligible for a reservation. After Amazon Web Services has these
1500// categories, it simulates every combination of reservations in each category
1501// of usage to identify the best number of each type of RI to purchase to maximize
1502// your estimated savings.
1503//
1504// For example, Amazon Web Services automatically aggregates your Amazon EC2
1505// Linux, shared tenancy, and c4 family usage in the US West (Oregon) Region
1506// and recommends that you buy size-flexible regional reservations to apply
1507// to the c4 family usage. Amazon Web Services recommends the smallest size
1508// instance in an instance family. This makes it easier to purchase a size-flexible
1509// RI. Amazon Web Services also shows the equal number of normalized units so
1510// that you can purchase any instance size that you want. For this example,
1511// your RI recommendation would be for c4.large because that is the smallest
1512// size instance in the c4 instance family.
1513//
1514// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1515// with awserr.Error's Code and Message methods to get detailed information about
1516// the error.
1517//
1518// See the AWS API reference guide for AWS Cost Explorer Service's
1519// API operation GetReservationPurchaseRecommendation for usage and error information.
1520//
1521// Returned Error Types:
1522//   * LimitExceededException
1523//   You made too many calls in a short period of time. Try again later.
1524//
1525//   * DataUnavailableException
1526//   The requested data is unavailable.
1527//
1528//   * InvalidNextTokenException
1529//   The pagination token is invalid. Try again without a pagination token.
1530//
1531// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationPurchaseRecommendation
1532func (c *CostExplorer) GetReservationPurchaseRecommendation(input *GetReservationPurchaseRecommendationInput) (*GetReservationPurchaseRecommendationOutput, error) {
1533	req, out := c.GetReservationPurchaseRecommendationRequest(input)
1534	return out, req.Send()
1535}
1536
1537// GetReservationPurchaseRecommendationWithContext is the same as GetReservationPurchaseRecommendation with the addition of
1538// the ability to pass a context and additional request options.
1539//
1540// See GetReservationPurchaseRecommendation for details on how to use this API operation.
1541//
1542// The context must be non-nil and will be used for request cancellation. If
1543// the context is nil a panic will occur. In the future the SDK may create
1544// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1545// for more information on using Contexts.
1546func (c *CostExplorer) GetReservationPurchaseRecommendationWithContext(ctx aws.Context, input *GetReservationPurchaseRecommendationInput, opts ...request.Option) (*GetReservationPurchaseRecommendationOutput, error) {
1547	req, out := c.GetReservationPurchaseRecommendationRequest(input)
1548	req.SetContext(ctx)
1549	req.ApplyOptions(opts...)
1550	return out, req.Send()
1551}
1552
1553const opGetReservationUtilization = "GetReservationUtilization"
1554
1555// GetReservationUtilizationRequest generates a "aws/request.Request" representing the
1556// client's request for the GetReservationUtilization operation. The "output" return
1557// value will be populated with the request's response once the request completes
1558// successfully.
1559//
1560// Use "Send" method on the returned Request to send the API call to the service.
1561// the "output" return value is not valid until after Send returns without error.
1562//
1563// See GetReservationUtilization for more information on using the GetReservationUtilization
1564// API call, and error handling.
1565//
1566// This method is useful when you want to inject custom logic or configuration
1567// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1568//
1569//
1570//    // Example sending a request using the GetReservationUtilizationRequest method.
1571//    req, resp := client.GetReservationUtilizationRequest(params)
1572//
1573//    err := req.Send()
1574//    if err == nil { // resp is now filled
1575//        fmt.Println(resp)
1576//    }
1577//
1578// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationUtilization
1579func (c *CostExplorer) GetReservationUtilizationRequest(input *GetReservationUtilizationInput) (req *request.Request, output *GetReservationUtilizationOutput) {
1580	op := &request.Operation{
1581		Name:       opGetReservationUtilization,
1582		HTTPMethod: "POST",
1583		HTTPPath:   "/",
1584	}
1585
1586	if input == nil {
1587		input = &GetReservationUtilizationInput{}
1588	}
1589
1590	output = &GetReservationUtilizationOutput{}
1591	req = c.newRequest(op, input, output)
1592	return
1593}
1594
1595// GetReservationUtilization API operation for AWS Cost Explorer Service.
1596//
1597// Retrieves the reservation utilization for your account. Management account
1598// in an organization have access to member accounts. You can filter data by
1599// dimensions in a time period. You can use GetDimensionValues to determine
1600// the possible dimension values. Currently, you can group only by SUBSCRIPTION_ID.
1601//
1602// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1603// with awserr.Error's Code and Message methods to get detailed information about
1604// the error.
1605//
1606// See the AWS API reference guide for AWS Cost Explorer Service's
1607// API operation GetReservationUtilization for usage and error information.
1608//
1609// Returned Error Types:
1610//   * LimitExceededException
1611//   You made too many calls in a short period of time. Try again later.
1612//
1613//   * DataUnavailableException
1614//   The requested data is unavailable.
1615//
1616//   * InvalidNextTokenException
1617//   The pagination token is invalid. Try again without a pagination token.
1618//
1619// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationUtilization
1620func (c *CostExplorer) GetReservationUtilization(input *GetReservationUtilizationInput) (*GetReservationUtilizationOutput, error) {
1621	req, out := c.GetReservationUtilizationRequest(input)
1622	return out, req.Send()
1623}
1624
1625// GetReservationUtilizationWithContext is the same as GetReservationUtilization with the addition of
1626// the ability to pass a context and additional request options.
1627//
1628// See GetReservationUtilization for details on how to use this API operation.
1629//
1630// The context must be non-nil and will be used for request cancellation. If
1631// the context is nil a panic will occur. In the future the SDK may create
1632// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1633// for more information on using Contexts.
1634func (c *CostExplorer) GetReservationUtilizationWithContext(ctx aws.Context, input *GetReservationUtilizationInput, opts ...request.Option) (*GetReservationUtilizationOutput, error) {
1635	req, out := c.GetReservationUtilizationRequest(input)
1636	req.SetContext(ctx)
1637	req.ApplyOptions(opts...)
1638	return out, req.Send()
1639}
1640
1641const opGetRightsizingRecommendation = "GetRightsizingRecommendation"
1642
1643// GetRightsizingRecommendationRequest generates a "aws/request.Request" representing the
1644// client's request for the GetRightsizingRecommendation operation. The "output" return
1645// value will be populated with the request's response once the request completes
1646// successfully.
1647//
1648// Use "Send" method on the returned Request to send the API call to the service.
1649// the "output" return value is not valid until after Send returns without error.
1650//
1651// See GetRightsizingRecommendation for more information on using the GetRightsizingRecommendation
1652// API call, and error handling.
1653//
1654// This method is useful when you want to inject custom logic or configuration
1655// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1656//
1657//
1658//    // Example sending a request using the GetRightsizingRecommendationRequest method.
1659//    req, resp := client.GetRightsizingRecommendationRequest(params)
1660//
1661//    err := req.Send()
1662//    if err == nil { // resp is now filled
1663//        fmt.Println(resp)
1664//    }
1665//
1666// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetRightsizingRecommendation
1667func (c *CostExplorer) GetRightsizingRecommendationRequest(input *GetRightsizingRecommendationInput) (req *request.Request, output *GetRightsizingRecommendationOutput) {
1668	op := &request.Operation{
1669		Name:       opGetRightsizingRecommendation,
1670		HTTPMethod: "POST",
1671		HTTPPath:   "/",
1672	}
1673
1674	if input == nil {
1675		input = &GetRightsizingRecommendationInput{}
1676	}
1677
1678	output = &GetRightsizingRecommendationOutput{}
1679	req = c.newRequest(op, input, output)
1680	return
1681}
1682
1683// GetRightsizingRecommendation API operation for AWS Cost Explorer Service.
1684//
1685// Creates recommendations that help you save cost by identifying idle and underutilized
1686// Amazon EC2 instances.
1687//
1688// Recommendations are generated to either downsize or terminate instances,
1689// along with providing savings detail and metrics. For details on calculation
1690// and function, see Optimizing Your Cost with Rightsizing Recommendations (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/ce-rightsizing.html)
1691// in the Billing and Cost Management User Guide.
1692//
1693// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1694// with awserr.Error's Code and Message methods to get detailed information about
1695// the error.
1696//
1697// See the AWS API reference guide for AWS Cost Explorer Service's
1698// API operation GetRightsizingRecommendation for usage and error information.
1699//
1700// Returned Error Types:
1701//   * LimitExceededException
1702//   You made too many calls in a short period of time. Try again later.
1703//
1704//   * InvalidNextTokenException
1705//   The pagination token is invalid. Try again without a pagination token.
1706//
1707// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetRightsizingRecommendation
1708func (c *CostExplorer) GetRightsizingRecommendation(input *GetRightsizingRecommendationInput) (*GetRightsizingRecommendationOutput, error) {
1709	req, out := c.GetRightsizingRecommendationRequest(input)
1710	return out, req.Send()
1711}
1712
1713// GetRightsizingRecommendationWithContext is the same as GetRightsizingRecommendation with the addition of
1714// the ability to pass a context and additional request options.
1715//
1716// See GetRightsizingRecommendation for details on how to use this API operation.
1717//
1718// The context must be non-nil and will be used for request cancellation. If
1719// the context is nil a panic will occur. In the future the SDK may create
1720// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1721// for more information on using Contexts.
1722func (c *CostExplorer) GetRightsizingRecommendationWithContext(ctx aws.Context, input *GetRightsizingRecommendationInput, opts ...request.Option) (*GetRightsizingRecommendationOutput, error) {
1723	req, out := c.GetRightsizingRecommendationRequest(input)
1724	req.SetContext(ctx)
1725	req.ApplyOptions(opts...)
1726	return out, req.Send()
1727}
1728
1729const opGetSavingsPlansCoverage = "GetSavingsPlansCoverage"
1730
1731// GetSavingsPlansCoverageRequest generates a "aws/request.Request" representing the
1732// client's request for the GetSavingsPlansCoverage operation. The "output" return
1733// value will be populated with the request's response once the request completes
1734// successfully.
1735//
1736// Use "Send" method on the returned Request to send the API call to the service.
1737// the "output" return value is not valid until after Send returns without error.
1738//
1739// See GetSavingsPlansCoverage for more information on using the GetSavingsPlansCoverage
1740// API call, and error handling.
1741//
1742// This method is useful when you want to inject custom logic or configuration
1743// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1744//
1745//
1746//    // Example sending a request using the GetSavingsPlansCoverageRequest method.
1747//    req, resp := client.GetSavingsPlansCoverageRequest(params)
1748//
1749//    err := req.Send()
1750//    if err == nil { // resp is now filled
1751//        fmt.Println(resp)
1752//    }
1753//
1754// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansCoverage
1755func (c *CostExplorer) GetSavingsPlansCoverageRequest(input *GetSavingsPlansCoverageInput) (req *request.Request, output *GetSavingsPlansCoverageOutput) {
1756	op := &request.Operation{
1757		Name:       opGetSavingsPlansCoverage,
1758		HTTPMethod: "POST",
1759		HTTPPath:   "/",
1760		Paginator: &request.Paginator{
1761			InputTokens:     []string{"NextToken"},
1762			OutputTokens:    []string{"NextToken"},
1763			LimitToken:      "MaxResults",
1764			TruncationToken: "",
1765		},
1766	}
1767
1768	if input == nil {
1769		input = &GetSavingsPlansCoverageInput{}
1770	}
1771
1772	output = &GetSavingsPlansCoverageOutput{}
1773	req = c.newRequest(op, input, output)
1774	return
1775}
1776
1777// GetSavingsPlansCoverage API operation for AWS Cost Explorer Service.
1778//
1779// Retrieves the Savings Plans covered for your account. This enables you to
1780// see how much of your cost is covered by a Savings Plan. An organization’s
1781// management account can see the coverage of the associated member accounts.
1782// This supports dimensions, Cost Categories, and nested expressions. For any
1783// time period, you can filter data for Savings Plans usage with the following
1784// dimensions:
1785//
1786//    * LINKED_ACCOUNT
1787//
1788//    * REGION
1789//
1790//    * SERVICE
1791//
1792//    * INSTANCE_FAMILY
1793//
1794// To determine valid values for a dimension, use the GetDimensionValues operation.
1795//
1796// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1797// with awserr.Error's Code and Message methods to get detailed information about
1798// the error.
1799//
1800// See the AWS API reference guide for AWS Cost Explorer Service's
1801// API operation GetSavingsPlansCoverage for usage and error information.
1802//
1803// Returned Error Types:
1804//   * LimitExceededException
1805//   You made too many calls in a short period of time. Try again later.
1806//
1807//   * DataUnavailableException
1808//   The requested data is unavailable.
1809//
1810//   * InvalidNextTokenException
1811//   The pagination token is invalid. Try again without a pagination token.
1812//
1813// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansCoverage
1814func (c *CostExplorer) GetSavingsPlansCoverage(input *GetSavingsPlansCoverageInput) (*GetSavingsPlansCoverageOutput, error) {
1815	req, out := c.GetSavingsPlansCoverageRequest(input)
1816	return out, req.Send()
1817}
1818
1819// GetSavingsPlansCoverageWithContext is the same as GetSavingsPlansCoverage with the addition of
1820// the ability to pass a context and additional request options.
1821//
1822// See GetSavingsPlansCoverage for details on how to use this API operation.
1823//
1824// The context must be non-nil and will be used for request cancellation. If
1825// the context is nil a panic will occur. In the future the SDK may create
1826// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1827// for more information on using Contexts.
1828func (c *CostExplorer) GetSavingsPlansCoverageWithContext(ctx aws.Context, input *GetSavingsPlansCoverageInput, opts ...request.Option) (*GetSavingsPlansCoverageOutput, error) {
1829	req, out := c.GetSavingsPlansCoverageRequest(input)
1830	req.SetContext(ctx)
1831	req.ApplyOptions(opts...)
1832	return out, req.Send()
1833}
1834
1835// GetSavingsPlansCoveragePages iterates over the pages of a GetSavingsPlansCoverage operation,
1836// calling the "fn" function with the response data for each page. To stop
1837// iterating, return false from the fn function.
1838//
1839// See GetSavingsPlansCoverage method for more information on how to use this operation.
1840//
1841// Note: This operation can generate multiple requests to a service.
1842//
1843//    // Example iterating over at most 3 pages of a GetSavingsPlansCoverage operation.
1844//    pageNum := 0
1845//    err := client.GetSavingsPlansCoveragePages(params,
1846//        func(page *costexplorer.GetSavingsPlansCoverageOutput, lastPage bool) bool {
1847//            pageNum++
1848//            fmt.Println(page)
1849//            return pageNum <= 3
1850//        })
1851//
1852func (c *CostExplorer) GetSavingsPlansCoveragePages(input *GetSavingsPlansCoverageInput, fn func(*GetSavingsPlansCoverageOutput, bool) bool) error {
1853	return c.GetSavingsPlansCoveragePagesWithContext(aws.BackgroundContext(), input, fn)
1854}
1855
1856// GetSavingsPlansCoveragePagesWithContext same as GetSavingsPlansCoveragePages except
1857// it takes a Context and allows setting request options on the pages.
1858//
1859// The context must be non-nil and will be used for request cancellation. If
1860// the context is nil a panic will occur. In the future the SDK may create
1861// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1862// for more information on using Contexts.
1863func (c *CostExplorer) GetSavingsPlansCoveragePagesWithContext(ctx aws.Context, input *GetSavingsPlansCoverageInput, fn func(*GetSavingsPlansCoverageOutput, bool) bool, opts ...request.Option) error {
1864	p := request.Pagination{
1865		NewRequest: func() (*request.Request, error) {
1866			var inCpy *GetSavingsPlansCoverageInput
1867			if input != nil {
1868				tmp := *input
1869				inCpy = &tmp
1870			}
1871			req, _ := c.GetSavingsPlansCoverageRequest(inCpy)
1872			req.SetContext(ctx)
1873			req.ApplyOptions(opts...)
1874			return req, nil
1875		},
1876	}
1877
1878	for p.Next() {
1879		if !fn(p.Page().(*GetSavingsPlansCoverageOutput), !p.HasNextPage()) {
1880			break
1881		}
1882	}
1883
1884	return p.Err()
1885}
1886
1887const opGetSavingsPlansPurchaseRecommendation = "GetSavingsPlansPurchaseRecommendation"
1888
1889// GetSavingsPlansPurchaseRecommendationRequest generates a "aws/request.Request" representing the
1890// client's request for the GetSavingsPlansPurchaseRecommendation operation. The "output" return
1891// value will be populated with the request's response once the request completes
1892// successfully.
1893//
1894// Use "Send" method on the returned Request to send the API call to the service.
1895// the "output" return value is not valid until after Send returns without error.
1896//
1897// See GetSavingsPlansPurchaseRecommendation for more information on using the GetSavingsPlansPurchaseRecommendation
1898// API call, and error handling.
1899//
1900// This method is useful when you want to inject custom logic or configuration
1901// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1902//
1903//
1904//    // Example sending a request using the GetSavingsPlansPurchaseRecommendationRequest method.
1905//    req, resp := client.GetSavingsPlansPurchaseRecommendationRequest(params)
1906//
1907//    err := req.Send()
1908//    if err == nil { // resp is now filled
1909//        fmt.Println(resp)
1910//    }
1911//
1912// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansPurchaseRecommendation
1913func (c *CostExplorer) GetSavingsPlansPurchaseRecommendationRequest(input *GetSavingsPlansPurchaseRecommendationInput) (req *request.Request, output *GetSavingsPlansPurchaseRecommendationOutput) {
1914	op := &request.Operation{
1915		Name:       opGetSavingsPlansPurchaseRecommendation,
1916		HTTPMethod: "POST",
1917		HTTPPath:   "/",
1918	}
1919
1920	if input == nil {
1921		input = &GetSavingsPlansPurchaseRecommendationInput{}
1922	}
1923
1924	output = &GetSavingsPlansPurchaseRecommendationOutput{}
1925	req = c.newRequest(op, input, output)
1926	return
1927}
1928
1929// GetSavingsPlansPurchaseRecommendation API operation for AWS Cost Explorer Service.
1930//
1931// Retrieves your request parameters, Savings Plan Recommendations Summary and
1932// Details.
1933//
1934// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1935// with awserr.Error's Code and Message methods to get detailed information about
1936// the error.
1937//
1938// See the AWS API reference guide for AWS Cost Explorer Service's
1939// API operation GetSavingsPlansPurchaseRecommendation for usage and error information.
1940//
1941// Returned Error Types:
1942//   * LimitExceededException
1943//   You made too many calls in a short period of time. Try again later.
1944//
1945//   * InvalidNextTokenException
1946//   The pagination token is invalid. Try again without a pagination token.
1947//
1948// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansPurchaseRecommendation
1949func (c *CostExplorer) GetSavingsPlansPurchaseRecommendation(input *GetSavingsPlansPurchaseRecommendationInput) (*GetSavingsPlansPurchaseRecommendationOutput, error) {
1950	req, out := c.GetSavingsPlansPurchaseRecommendationRequest(input)
1951	return out, req.Send()
1952}
1953
1954// GetSavingsPlansPurchaseRecommendationWithContext is the same as GetSavingsPlansPurchaseRecommendation with the addition of
1955// the ability to pass a context and additional request options.
1956//
1957// See GetSavingsPlansPurchaseRecommendation for details on how to use this API operation.
1958//
1959// The context must be non-nil and will be used for request cancellation. If
1960// the context is nil a panic will occur. In the future the SDK may create
1961// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1962// for more information on using Contexts.
1963func (c *CostExplorer) GetSavingsPlansPurchaseRecommendationWithContext(ctx aws.Context, input *GetSavingsPlansPurchaseRecommendationInput, opts ...request.Option) (*GetSavingsPlansPurchaseRecommendationOutput, error) {
1964	req, out := c.GetSavingsPlansPurchaseRecommendationRequest(input)
1965	req.SetContext(ctx)
1966	req.ApplyOptions(opts...)
1967	return out, req.Send()
1968}
1969
1970const opGetSavingsPlansUtilization = "GetSavingsPlansUtilization"
1971
1972// GetSavingsPlansUtilizationRequest generates a "aws/request.Request" representing the
1973// client's request for the GetSavingsPlansUtilization operation. The "output" return
1974// value will be populated with the request's response once the request completes
1975// successfully.
1976//
1977// Use "Send" method on the returned Request to send the API call to the service.
1978// the "output" return value is not valid until after Send returns without error.
1979//
1980// See GetSavingsPlansUtilization for more information on using the GetSavingsPlansUtilization
1981// API call, and error handling.
1982//
1983// This method is useful when you want to inject custom logic or configuration
1984// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1985//
1986//
1987//    // Example sending a request using the GetSavingsPlansUtilizationRequest method.
1988//    req, resp := client.GetSavingsPlansUtilizationRequest(params)
1989//
1990//    err := req.Send()
1991//    if err == nil { // resp is now filled
1992//        fmt.Println(resp)
1993//    }
1994//
1995// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansUtilization
1996func (c *CostExplorer) GetSavingsPlansUtilizationRequest(input *GetSavingsPlansUtilizationInput) (req *request.Request, output *GetSavingsPlansUtilizationOutput) {
1997	op := &request.Operation{
1998		Name:       opGetSavingsPlansUtilization,
1999		HTTPMethod: "POST",
2000		HTTPPath:   "/",
2001	}
2002
2003	if input == nil {
2004		input = &GetSavingsPlansUtilizationInput{}
2005	}
2006
2007	output = &GetSavingsPlansUtilizationOutput{}
2008	req = c.newRequest(op, input, output)
2009	return
2010}
2011
2012// GetSavingsPlansUtilization API operation for AWS Cost Explorer Service.
2013//
2014// Retrieves the Savings Plans utilization for your account across date ranges
2015// with daily or monthly granularity. Management account in an organization
2016// have access to member accounts. You can use GetDimensionValues in SAVINGS_PLANS
2017// to determine the possible dimension values.
2018//
2019// You cannot group by any dimension values for GetSavingsPlansUtilization.
2020//
2021// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2022// with awserr.Error's Code and Message methods to get detailed information about
2023// the error.
2024//
2025// See the AWS API reference guide for AWS Cost Explorer Service's
2026// API operation GetSavingsPlansUtilization for usage and error information.
2027//
2028// Returned Error Types:
2029//   * LimitExceededException
2030//   You made too many calls in a short period of time. Try again later.
2031//
2032//   * DataUnavailableException
2033//   The requested data is unavailable.
2034//
2035// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansUtilization
2036func (c *CostExplorer) GetSavingsPlansUtilization(input *GetSavingsPlansUtilizationInput) (*GetSavingsPlansUtilizationOutput, error) {
2037	req, out := c.GetSavingsPlansUtilizationRequest(input)
2038	return out, req.Send()
2039}
2040
2041// GetSavingsPlansUtilizationWithContext is the same as GetSavingsPlansUtilization with the addition of
2042// the ability to pass a context and additional request options.
2043//
2044// See GetSavingsPlansUtilization for details on how to use this API operation.
2045//
2046// The context must be non-nil and will be used for request cancellation. If
2047// the context is nil a panic will occur. In the future the SDK may create
2048// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2049// for more information on using Contexts.
2050func (c *CostExplorer) GetSavingsPlansUtilizationWithContext(ctx aws.Context, input *GetSavingsPlansUtilizationInput, opts ...request.Option) (*GetSavingsPlansUtilizationOutput, error) {
2051	req, out := c.GetSavingsPlansUtilizationRequest(input)
2052	req.SetContext(ctx)
2053	req.ApplyOptions(opts...)
2054	return out, req.Send()
2055}
2056
2057const opGetSavingsPlansUtilizationDetails = "GetSavingsPlansUtilizationDetails"
2058
2059// GetSavingsPlansUtilizationDetailsRequest generates a "aws/request.Request" representing the
2060// client's request for the GetSavingsPlansUtilizationDetails operation. The "output" return
2061// value will be populated with the request's response once the request completes
2062// successfully.
2063//
2064// Use "Send" method on the returned Request to send the API call to the service.
2065// the "output" return value is not valid until after Send returns without error.
2066//
2067// See GetSavingsPlansUtilizationDetails for more information on using the GetSavingsPlansUtilizationDetails
2068// API call, and error handling.
2069//
2070// This method is useful when you want to inject custom logic or configuration
2071// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2072//
2073//
2074//    // Example sending a request using the GetSavingsPlansUtilizationDetailsRequest method.
2075//    req, resp := client.GetSavingsPlansUtilizationDetailsRequest(params)
2076//
2077//    err := req.Send()
2078//    if err == nil { // resp is now filled
2079//        fmt.Println(resp)
2080//    }
2081//
2082// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansUtilizationDetails
2083func (c *CostExplorer) GetSavingsPlansUtilizationDetailsRequest(input *GetSavingsPlansUtilizationDetailsInput) (req *request.Request, output *GetSavingsPlansUtilizationDetailsOutput) {
2084	op := &request.Operation{
2085		Name:       opGetSavingsPlansUtilizationDetails,
2086		HTTPMethod: "POST",
2087		HTTPPath:   "/",
2088		Paginator: &request.Paginator{
2089			InputTokens:     []string{"NextToken"},
2090			OutputTokens:    []string{"NextToken"},
2091			LimitToken:      "MaxResults",
2092			TruncationToken: "",
2093		},
2094	}
2095
2096	if input == nil {
2097		input = &GetSavingsPlansUtilizationDetailsInput{}
2098	}
2099
2100	output = &GetSavingsPlansUtilizationDetailsOutput{}
2101	req = c.newRequest(op, input, output)
2102	return
2103}
2104
2105// GetSavingsPlansUtilizationDetails API operation for AWS Cost Explorer Service.
2106//
2107// Retrieves attribute data along with aggregate utilization and savings data
2108// for a given time period. This doesn't support granular or grouped data (daily/monthly)
2109// in response. You can't retrieve data by dates in a single response similar
2110// to GetSavingsPlanUtilization, but you have the option to make multiple calls
2111// to GetSavingsPlanUtilizationDetails by providing individual dates. You can
2112// use GetDimensionValues in SAVINGS_PLANS to determine the possible dimension
2113// values.
2114//
2115// GetSavingsPlanUtilizationDetails internally groups data by SavingsPlansArn.
2116//
2117// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2118// with awserr.Error's Code and Message methods to get detailed information about
2119// the error.
2120//
2121// See the AWS API reference guide for AWS Cost Explorer Service's
2122// API operation GetSavingsPlansUtilizationDetails for usage and error information.
2123//
2124// Returned Error Types:
2125//   * LimitExceededException
2126//   You made too many calls in a short period of time. Try again later.
2127//
2128//   * DataUnavailableException
2129//   The requested data is unavailable.
2130//
2131//   * InvalidNextTokenException
2132//   The pagination token is invalid. Try again without a pagination token.
2133//
2134// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansUtilizationDetails
2135func (c *CostExplorer) GetSavingsPlansUtilizationDetails(input *GetSavingsPlansUtilizationDetailsInput) (*GetSavingsPlansUtilizationDetailsOutput, error) {
2136	req, out := c.GetSavingsPlansUtilizationDetailsRequest(input)
2137	return out, req.Send()
2138}
2139
2140// GetSavingsPlansUtilizationDetailsWithContext is the same as GetSavingsPlansUtilizationDetails with the addition of
2141// the ability to pass a context and additional request options.
2142//
2143// See GetSavingsPlansUtilizationDetails for details on how to use this API operation.
2144//
2145// The context must be non-nil and will be used for request cancellation. If
2146// the context is nil a panic will occur. In the future the SDK may create
2147// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2148// for more information on using Contexts.
2149func (c *CostExplorer) GetSavingsPlansUtilizationDetailsWithContext(ctx aws.Context, input *GetSavingsPlansUtilizationDetailsInput, opts ...request.Option) (*GetSavingsPlansUtilizationDetailsOutput, error) {
2150	req, out := c.GetSavingsPlansUtilizationDetailsRequest(input)
2151	req.SetContext(ctx)
2152	req.ApplyOptions(opts...)
2153	return out, req.Send()
2154}
2155
2156// GetSavingsPlansUtilizationDetailsPages iterates over the pages of a GetSavingsPlansUtilizationDetails operation,
2157// calling the "fn" function with the response data for each page. To stop
2158// iterating, return false from the fn function.
2159//
2160// See GetSavingsPlansUtilizationDetails method for more information on how to use this operation.
2161//
2162// Note: This operation can generate multiple requests to a service.
2163//
2164//    // Example iterating over at most 3 pages of a GetSavingsPlansUtilizationDetails operation.
2165//    pageNum := 0
2166//    err := client.GetSavingsPlansUtilizationDetailsPages(params,
2167//        func(page *costexplorer.GetSavingsPlansUtilizationDetailsOutput, lastPage bool) bool {
2168//            pageNum++
2169//            fmt.Println(page)
2170//            return pageNum <= 3
2171//        })
2172//
2173func (c *CostExplorer) GetSavingsPlansUtilizationDetailsPages(input *GetSavingsPlansUtilizationDetailsInput, fn func(*GetSavingsPlansUtilizationDetailsOutput, bool) bool) error {
2174	return c.GetSavingsPlansUtilizationDetailsPagesWithContext(aws.BackgroundContext(), input, fn)
2175}
2176
2177// GetSavingsPlansUtilizationDetailsPagesWithContext same as GetSavingsPlansUtilizationDetailsPages except
2178// it takes a Context and allows setting request options on the pages.
2179//
2180// The context must be non-nil and will be used for request cancellation. If
2181// the context is nil a panic will occur. In the future the SDK may create
2182// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2183// for more information on using Contexts.
2184func (c *CostExplorer) GetSavingsPlansUtilizationDetailsPagesWithContext(ctx aws.Context, input *GetSavingsPlansUtilizationDetailsInput, fn func(*GetSavingsPlansUtilizationDetailsOutput, bool) bool, opts ...request.Option) error {
2185	p := request.Pagination{
2186		NewRequest: func() (*request.Request, error) {
2187			var inCpy *GetSavingsPlansUtilizationDetailsInput
2188			if input != nil {
2189				tmp := *input
2190				inCpy = &tmp
2191			}
2192			req, _ := c.GetSavingsPlansUtilizationDetailsRequest(inCpy)
2193			req.SetContext(ctx)
2194			req.ApplyOptions(opts...)
2195			return req, nil
2196		},
2197	}
2198
2199	for p.Next() {
2200		if !fn(p.Page().(*GetSavingsPlansUtilizationDetailsOutput), !p.HasNextPage()) {
2201			break
2202		}
2203	}
2204
2205	return p.Err()
2206}
2207
2208const opGetTags = "GetTags"
2209
2210// GetTagsRequest generates a "aws/request.Request" representing the
2211// client's request for the GetTags operation. The "output" return
2212// value will be populated with the request's response once the request completes
2213// successfully.
2214//
2215// Use "Send" method on the returned Request to send the API call to the service.
2216// the "output" return value is not valid until after Send returns without error.
2217//
2218// See GetTags for more information on using the GetTags
2219// API call, and error handling.
2220//
2221// This method is useful when you want to inject custom logic or configuration
2222// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2223//
2224//
2225//    // Example sending a request using the GetTagsRequest method.
2226//    req, resp := client.GetTagsRequest(params)
2227//
2228//    err := req.Send()
2229//    if err == nil { // resp is now filled
2230//        fmt.Println(resp)
2231//    }
2232//
2233// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetTags
2234func (c *CostExplorer) GetTagsRequest(input *GetTagsInput) (req *request.Request, output *GetTagsOutput) {
2235	op := &request.Operation{
2236		Name:       opGetTags,
2237		HTTPMethod: "POST",
2238		HTTPPath:   "/",
2239	}
2240
2241	if input == nil {
2242		input = &GetTagsInput{}
2243	}
2244
2245	output = &GetTagsOutput{}
2246	req = c.newRequest(op, input, output)
2247	return
2248}
2249
2250// GetTags API operation for AWS Cost Explorer Service.
2251//
2252// Queries for available tag keys and tag values for a specified period. You
2253// can search the tag values for an arbitrary string.
2254//
2255// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2256// with awserr.Error's Code and Message methods to get detailed information about
2257// the error.
2258//
2259// See the AWS API reference guide for AWS Cost Explorer Service's
2260// API operation GetTags for usage and error information.
2261//
2262// Returned Error Types:
2263//   * LimitExceededException
2264//   You made too many calls in a short period of time. Try again later.
2265//
2266//   * BillExpirationException
2267//   The requested report expired. Update the date interval and try again.
2268//
2269//   * DataUnavailableException
2270//   The requested data is unavailable.
2271//
2272//   * InvalidNextTokenException
2273//   The pagination token is invalid. Try again without a pagination token.
2274//
2275//   * RequestChangedException
2276//   Your request parameters changed between pages. Try again with the old parameters
2277//   or without a pagination token.
2278//
2279// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetTags
2280func (c *CostExplorer) GetTags(input *GetTagsInput) (*GetTagsOutput, error) {
2281	req, out := c.GetTagsRequest(input)
2282	return out, req.Send()
2283}
2284
2285// GetTagsWithContext is the same as GetTags with the addition of
2286// the ability to pass a context and additional request options.
2287//
2288// See GetTags for details on how to use this API operation.
2289//
2290// The context must be non-nil and will be used for request cancellation. If
2291// the context is nil a panic will occur. In the future the SDK may create
2292// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2293// for more information on using Contexts.
2294func (c *CostExplorer) GetTagsWithContext(ctx aws.Context, input *GetTagsInput, opts ...request.Option) (*GetTagsOutput, error) {
2295	req, out := c.GetTagsRequest(input)
2296	req.SetContext(ctx)
2297	req.ApplyOptions(opts...)
2298	return out, req.Send()
2299}
2300
2301const opGetUsageForecast = "GetUsageForecast"
2302
2303// GetUsageForecastRequest generates a "aws/request.Request" representing the
2304// client's request for the GetUsageForecast operation. The "output" return
2305// value will be populated with the request's response once the request completes
2306// successfully.
2307//
2308// Use "Send" method on the returned Request to send the API call to the service.
2309// the "output" return value is not valid until after Send returns without error.
2310//
2311// See GetUsageForecast for more information on using the GetUsageForecast
2312// API call, and error handling.
2313//
2314// This method is useful when you want to inject custom logic or configuration
2315// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2316//
2317//
2318//    // Example sending a request using the GetUsageForecastRequest method.
2319//    req, resp := client.GetUsageForecastRequest(params)
2320//
2321//    err := req.Send()
2322//    if err == nil { // resp is now filled
2323//        fmt.Println(resp)
2324//    }
2325//
2326// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetUsageForecast
2327func (c *CostExplorer) GetUsageForecastRequest(input *GetUsageForecastInput) (req *request.Request, output *GetUsageForecastOutput) {
2328	op := &request.Operation{
2329		Name:       opGetUsageForecast,
2330		HTTPMethod: "POST",
2331		HTTPPath:   "/",
2332	}
2333
2334	if input == nil {
2335		input = &GetUsageForecastInput{}
2336	}
2337
2338	output = &GetUsageForecastOutput{}
2339	req = c.newRequest(op, input, output)
2340	return
2341}
2342
2343// GetUsageForecast API operation for AWS Cost Explorer Service.
2344//
2345// Retrieves a forecast for how much Amazon Web Services predicts that you will
2346// use over the forecast time period that you select, based on your past usage.
2347//
2348// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2349// with awserr.Error's Code and Message methods to get detailed information about
2350// the error.
2351//
2352// See the AWS API reference guide for AWS Cost Explorer Service's
2353// API operation GetUsageForecast for usage and error information.
2354//
2355// Returned Error Types:
2356//   * LimitExceededException
2357//   You made too many calls in a short period of time. Try again later.
2358//
2359//   * DataUnavailableException
2360//   The requested data is unavailable.
2361//
2362//   * UnresolvableUsageUnitException
2363//   Cost Explorer was unable to identify the usage unit. Provide UsageType/UsageTypeGroup
2364//   filter selections that contain matching units, for example: hours.
2365//
2366// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetUsageForecast
2367func (c *CostExplorer) GetUsageForecast(input *GetUsageForecastInput) (*GetUsageForecastOutput, error) {
2368	req, out := c.GetUsageForecastRequest(input)
2369	return out, req.Send()
2370}
2371
2372// GetUsageForecastWithContext is the same as GetUsageForecast with the addition of
2373// the ability to pass a context and additional request options.
2374//
2375// See GetUsageForecast for details on how to use this API operation.
2376//
2377// The context must be non-nil and will be used for request cancellation. If
2378// the context is nil a panic will occur. In the future the SDK may create
2379// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2380// for more information on using Contexts.
2381func (c *CostExplorer) GetUsageForecastWithContext(ctx aws.Context, input *GetUsageForecastInput, opts ...request.Option) (*GetUsageForecastOutput, error) {
2382	req, out := c.GetUsageForecastRequest(input)
2383	req.SetContext(ctx)
2384	req.ApplyOptions(opts...)
2385	return out, req.Send()
2386}
2387
2388const opListCostCategoryDefinitions = "ListCostCategoryDefinitions"
2389
2390// ListCostCategoryDefinitionsRequest generates a "aws/request.Request" representing the
2391// client's request for the ListCostCategoryDefinitions operation. The "output" return
2392// value will be populated with the request's response once the request completes
2393// successfully.
2394//
2395// Use "Send" method on the returned Request to send the API call to the service.
2396// the "output" return value is not valid until after Send returns without error.
2397//
2398// See ListCostCategoryDefinitions for more information on using the ListCostCategoryDefinitions
2399// API call, and error handling.
2400//
2401// This method is useful when you want to inject custom logic or configuration
2402// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2403//
2404//
2405//    // Example sending a request using the ListCostCategoryDefinitionsRequest method.
2406//    req, resp := client.ListCostCategoryDefinitionsRequest(params)
2407//
2408//    err := req.Send()
2409//    if err == nil { // resp is now filled
2410//        fmt.Println(resp)
2411//    }
2412//
2413// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ListCostCategoryDefinitions
2414func (c *CostExplorer) ListCostCategoryDefinitionsRequest(input *ListCostCategoryDefinitionsInput) (req *request.Request, output *ListCostCategoryDefinitionsOutput) {
2415	op := &request.Operation{
2416		Name:       opListCostCategoryDefinitions,
2417		HTTPMethod: "POST",
2418		HTTPPath:   "/",
2419		Paginator: &request.Paginator{
2420			InputTokens:     []string{"NextToken"},
2421			OutputTokens:    []string{"NextToken"},
2422			LimitToken:      "MaxResults",
2423			TruncationToken: "",
2424		},
2425	}
2426
2427	if input == nil {
2428		input = &ListCostCategoryDefinitionsInput{}
2429	}
2430
2431	output = &ListCostCategoryDefinitionsOutput{}
2432	req = c.newRequest(op, input, output)
2433	return
2434}
2435
2436// ListCostCategoryDefinitions API operation for AWS Cost Explorer Service.
2437//
2438// Returns the name, ARN, NumberOfRules and effective dates of all Cost Categories
2439// defined in the account. You have the option to use EffectiveOn to return
2440// a list of Cost Categories that were active on a specific date. If there is
2441// no EffectiveOn specified, you’ll see Cost Categories that are effective
2442// on the current date. If Cost Category is still effective, EffectiveEnd is
2443// omitted in the response. ListCostCategoryDefinitions supports pagination.
2444// The request can have a MaxResults range up to 100.
2445//
2446// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2447// with awserr.Error's Code and Message methods to get detailed information about
2448// the error.
2449//
2450// See the AWS API reference guide for AWS Cost Explorer Service's
2451// API operation ListCostCategoryDefinitions for usage and error information.
2452//
2453// Returned Error Types:
2454//   * LimitExceededException
2455//   You made too many calls in a short period of time. Try again later.
2456//
2457// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ListCostCategoryDefinitions
2458func (c *CostExplorer) ListCostCategoryDefinitions(input *ListCostCategoryDefinitionsInput) (*ListCostCategoryDefinitionsOutput, error) {
2459	req, out := c.ListCostCategoryDefinitionsRequest(input)
2460	return out, req.Send()
2461}
2462
2463// ListCostCategoryDefinitionsWithContext is the same as ListCostCategoryDefinitions with the addition of
2464// the ability to pass a context and additional request options.
2465//
2466// See ListCostCategoryDefinitions for details on how to use this API operation.
2467//
2468// The context must be non-nil and will be used for request cancellation. If
2469// the context is nil a panic will occur. In the future the SDK may create
2470// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2471// for more information on using Contexts.
2472func (c *CostExplorer) ListCostCategoryDefinitionsWithContext(ctx aws.Context, input *ListCostCategoryDefinitionsInput, opts ...request.Option) (*ListCostCategoryDefinitionsOutput, error) {
2473	req, out := c.ListCostCategoryDefinitionsRequest(input)
2474	req.SetContext(ctx)
2475	req.ApplyOptions(opts...)
2476	return out, req.Send()
2477}
2478
2479// ListCostCategoryDefinitionsPages iterates over the pages of a ListCostCategoryDefinitions operation,
2480// calling the "fn" function with the response data for each page. To stop
2481// iterating, return false from the fn function.
2482//
2483// See ListCostCategoryDefinitions method for more information on how to use this operation.
2484//
2485// Note: This operation can generate multiple requests to a service.
2486//
2487//    // Example iterating over at most 3 pages of a ListCostCategoryDefinitions operation.
2488//    pageNum := 0
2489//    err := client.ListCostCategoryDefinitionsPages(params,
2490//        func(page *costexplorer.ListCostCategoryDefinitionsOutput, lastPage bool) bool {
2491//            pageNum++
2492//            fmt.Println(page)
2493//            return pageNum <= 3
2494//        })
2495//
2496func (c *CostExplorer) ListCostCategoryDefinitionsPages(input *ListCostCategoryDefinitionsInput, fn func(*ListCostCategoryDefinitionsOutput, bool) bool) error {
2497	return c.ListCostCategoryDefinitionsPagesWithContext(aws.BackgroundContext(), input, fn)
2498}
2499
2500// ListCostCategoryDefinitionsPagesWithContext same as ListCostCategoryDefinitionsPages except
2501// it takes a Context and allows setting request options on the pages.
2502//
2503// The context must be non-nil and will be used for request cancellation. If
2504// the context is nil a panic will occur. In the future the SDK may create
2505// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2506// for more information on using Contexts.
2507func (c *CostExplorer) ListCostCategoryDefinitionsPagesWithContext(ctx aws.Context, input *ListCostCategoryDefinitionsInput, fn func(*ListCostCategoryDefinitionsOutput, bool) bool, opts ...request.Option) error {
2508	p := request.Pagination{
2509		NewRequest: func() (*request.Request, error) {
2510			var inCpy *ListCostCategoryDefinitionsInput
2511			if input != nil {
2512				tmp := *input
2513				inCpy = &tmp
2514			}
2515			req, _ := c.ListCostCategoryDefinitionsRequest(inCpy)
2516			req.SetContext(ctx)
2517			req.ApplyOptions(opts...)
2518			return req, nil
2519		},
2520	}
2521
2522	for p.Next() {
2523		if !fn(p.Page().(*ListCostCategoryDefinitionsOutput), !p.HasNextPage()) {
2524			break
2525		}
2526	}
2527
2528	return p.Err()
2529}
2530
2531const opProvideAnomalyFeedback = "ProvideAnomalyFeedback"
2532
2533// ProvideAnomalyFeedbackRequest generates a "aws/request.Request" representing the
2534// client's request for the ProvideAnomalyFeedback operation. The "output" return
2535// value will be populated with the request's response once the request completes
2536// successfully.
2537//
2538// Use "Send" method on the returned Request to send the API call to the service.
2539// the "output" return value is not valid until after Send returns without error.
2540//
2541// See ProvideAnomalyFeedback for more information on using the ProvideAnomalyFeedback
2542// API call, and error handling.
2543//
2544// This method is useful when you want to inject custom logic or configuration
2545// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2546//
2547//
2548//    // Example sending a request using the ProvideAnomalyFeedbackRequest method.
2549//    req, resp := client.ProvideAnomalyFeedbackRequest(params)
2550//
2551//    err := req.Send()
2552//    if err == nil { // resp is now filled
2553//        fmt.Println(resp)
2554//    }
2555//
2556// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ProvideAnomalyFeedback
2557func (c *CostExplorer) ProvideAnomalyFeedbackRequest(input *ProvideAnomalyFeedbackInput) (req *request.Request, output *ProvideAnomalyFeedbackOutput) {
2558	op := &request.Operation{
2559		Name:       opProvideAnomalyFeedback,
2560		HTTPMethod: "POST",
2561		HTTPPath:   "/",
2562	}
2563
2564	if input == nil {
2565		input = &ProvideAnomalyFeedbackInput{}
2566	}
2567
2568	output = &ProvideAnomalyFeedbackOutput{}
2569	req = c.newRequest(op, input, output)
2570	return
2571}
2572
2573// ProvideAnomalyFeedback API operation for AWS Cost Explorer Service.
2574//
2575// Modifies the feedback property of a given cost anomaly.
2576//
2577// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2578// with awserr.Error's Code and Message methods to get detailed information about
2579// the error.
2580//
2581// See the AWS API reference guide for AWS Cost Explorer Service's
2582// API operation ProvideAnomalyFeedback for usage and error information.
2583//
2584// Returned Error Types:
2585//   * LimitExceededException
2586//   You made too many calls in a short period of time. Try again later.
2587//
2588// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ProvideAnomalyFeedback
2589func (c *CostExplorer) ProvideAnomalyFeedback(input *ProvideAnomalyFeedbackInput) (*ProvideAnomalyFeedbackOutput, error) {
2590	req, out := c.ProvideAnomalyFeedbackRequest(input)
2591	return out, req.Send()
2592}
2593
2594// ProvideAnomalyFeedbackWithContext is the same as ProvideAnomalyFeedback with the addition of
2595// the ability to pass a context and additional request options.
2596//
2597// See ProvideAnomalyFeedback for details on how to use this API operation.
2598//
2599// The context must be non-nil and will be used for request cancellation. If
2600// the context is nil a panic will occur. In the future the SDK may create
2601// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2602// for more information on using Contexts.
2603func (c *CostExplorer) ProvideAnomalyFeedbackWithContext(ctx aws.Context, input *ProvideAnomalyFeedbackInput, opts ...request.Option) (*ProvideAnomalyFeedbackOutput, error) {
2604	req, out := c.ProvideAnomalyFeedbackRequest(input)
2605	req.SetContext(ctx)
2606	req.ApplyOptions(opts...)
2607	return out, req.Send()
2608}
2609
2610const opUpdateAnomalyMonitor = "UpdateAnomalyMonitor"
2611
2612// UpdateAnomalyMonitorRequest generates a "aws/request.Request" representing the
2613// client's request for the UpdateAnomalyMonitor operation. The "output" return
2614// value will be populated with the request's response once the request completes
2615// successfully.
2616//
2617// Use "Send" method on the returned Request to send the API call to the service.
2618// the "output" return value is not valid until after Send returns without error.
2619//
2620// See UpdateAnomalyMonitor for more information on using the UpdateAnomalyMonitor
2621// API call, and error handling.
2622//
2623// This method is useful when you want to inject custom logic or configuration
2624// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2625//
2626//
2627//    // Example sending a request using the UpdateAnomalyMonitorRequest method.
2628//    req, resp := client.UpdateAnomalyMonitorRequest(params)
2629//
2630//    err := req.Send()
2631//    if err == nil { // resp is now filled
2632//        fmt.Println(resp)
2633//    }
2634//
2635// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateAnomalyMonitor
2636func (c *CostExplorer) UpdateAnomalyMonitorRequest(input *UpdateAnomalyMonitorInput) (req *request.Request, output *UpdateAnomalyMonitorOutput) {
2637	op := &request.Operation{
2638		Name:       opUpdateAnomalyMonitor,
2639		HTTPMethod: "POST",
2640		HTTPPath:   "/",
2641	}
2642
2643	if input == nil {
2644		input = &UpdateAnomalyMonitorInput{}
2645	}
2646
2647	output = &UpdateAnomalyMonitorOutput{}
2648	req = c.newRequest(op, input, output)
2649	return
2650}
2651
2652// UpdateAnomalyMonitor API operation for AWS Cost Explorer Service.
2653//
2654// Updates an existing cost anomaly monitor. The changes made are applied going
2655// forward, and doesn'tt change anomalies detected in the past.
2656//
2657// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2658// with awserr.Error's Code and Message methods to get detailed information about
2659// the error.
2660//
2661// See the AWS API reference guide for AWS Cost Explorer Service's
2662// API operation UpdateAnomalyMonitor for usage and error information.
2663//
2664// Returned Error Types:
2665//   * LimitExceededException
2666//   You made too many calls in a short period of time. Try again later.
2667//
2668//   * UnknownMonitorException
2669//   The cost anomaly monitor does not exist for the account.
2670//
2671// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateAnomalyMonitor
2672func (c *CostExplorer) UpdateAnomalyMonitor(input *UpdateAnomalyMonitorInput) (*UpdateAnomalyMonitorOutput, error) {
2673	req, out := c.UpdateAnomalyMonitorRequest(input)
2674	return out, req.Send()
2675}
2676
2677// UpdateAnomalyMonitorWithContext is the same as UpdateAnomalyMonitor with the addition of
2678// the ability to pass a context and additional request options.
2679//
2680// See UpdateAnomalyMonitor for details on how to use this API operation.
2681//
2682// The context must be non-nil and will be used for request cancellation. If
2683// the context is nil a panic will occur. In the future the SDK may create
2684// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2685// for more information on using Contexts.
2686func (c *CostExplorer) UpdateAnomalyMonitorWithContext(ctx aws.Context, input *UpdateAnomalyMonitorInput, opts ...request.Option) (*UpdateAnomalyMonitorOutput, error) {
2687	req, out := c.UpdateAnomalyMonitorRequest(input)
2688	req.SetContext(ctx)
2689	req.ApplyOptions(opts...)
2690	return out, req.Send()
2691}
2692
2693const opUpdateAnomalySubscription = "UpdateAnomalySubscription"
2694
2695// UpdateAnomalySubscriptionRequest generates a "aws/request.Request" representing the
2696// client's request for the UpdateAnomalySubscription operation. The "output" return
2697// value will be populated with the request's response once the request completes
2698// successfully.
2699//
2700// Use "Send" method on the returned Request to send the API call to the service.
2701// the "output" return value is not valid until after Send returns without error.
2702//
2703// See UpdateAnomalySubscription for more information on using the UpdateAnomalySubscription
2704// API call, and error handling.
2705//
2706// This method is useful when you want to inject custom logic or configuration
2707// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2708//
2709//
2710//    // Example sending a request using the UpdateAnomalySubscriptionRequest method.
2711//    req, resp := client.UpdateAnomalySubscriptionRequest(params)
2712//
2713//    err := req.Send()
2714//    if err == nil { // resp is now filled
2715//        fmt.Println(resp)
2716//    }
2717//
2718// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateAnomalySubscription
2719func (c *CostExplorer) UpdateAnomalySubscriptionRequest(input *UpdateAnomalySubscriptionInput) (req *request.Request, output *UpdateAnomalySubscriptionOutput) {
2720	op := &request.Operation{
2721		Name:       opUpdateAnomalySubscription,
2722		HTTPMethod: "POST",
2723		HTTPPath:   "/",
2724	}
2725
2726	if input == nil {
2727		input = &UpdateAnomalySubscriptionInput{}
2728	}
2729
2730	output = &UpdateAnomalySubscriptionOutput{}
2731	req = c.newRequest(op, input, output)
2732	return
2733}
2734
2735// UpdateAnomalySubscription API operation for AWS Cost Explorer Service.
2736//
2737// Updates an existing cost anomaly monitor subscription.
2738//
2739// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2740// with awserr.Error's Code and Message methods to get detailed information about
2741// the error.
2742//
2743// See the AWS API reference guide for AWS Cost Explorer Service's
2744// API operation UpdateAnomalySubscription for usage and error information.
2745//
2746// Returned Error Types:
2747//   * LimitExceededException
2748//   You made too many calls in a short period of time. Try again later.
2749//
2750//   * UnknownMonitorException
2751//   The cost anomaly monitor does not exist for the account.
2752//
2753//   * UnknownSubscriptionException
2754//   The cost anomaly subscription does not exist for the account.
2755//
2756// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateAnomalySubscription
2757func (c *CostExplorer) UpdateAnomalySubscription(input *UpdateAnomalySubscriptionInput) (*UpdateAnomalySubscriptionOutput, error) {
2758	req, out := c.UpdateAnomalySubscriptionRequest(input)
2759	return out, req.Send()
2760}
2761
2762// UpdateAnomalySubscriptionWithContext is the same as UpdateAnomalySubscription with the addition of
2763// the ability to pass a context and additional request options.
2764//
2765// See UpdateAnomalySubscription for details on how to use this API operation.
2766//
2767// The context must be non-nil and will be used for request cancellation. If
2768// the context is nil a panic will occur. In the future the SDK may create
2769// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2770// for more information on using Contexts.
2771func (c *CostExplorer) UpdateAnomalySubscriptionWithContext(ctx aws.Context, input *UpdateAnomalySubscriptionInput, opts ...request.Option) (*UpdateAnomalySubscriptionOutput, error) {
2772	req, out := c.UpdateAnomalySubscriptionRequest(input)
2773	req.SetContext(ctx)
2774	req.ApplyOptions(opts...)
2775	return out, req.Send()
2776}
2777
2778const opUpdateCostCategoryDefinition = "UpdateCostCategoryDefinition"
2779
2780// UpdateCostCategoryDefinitionRequest generates a "aws/request.Request" representing the
2781// client's request for the UpdateCostCategoryDefinition operation. The "output" return
2782// value will be populated with the request's response once the request completes
2783// successfully.
2784//
2785// Use "Send" method on the returned Request to send the API call to the service.
2786// the "output" return value is not valid until after Send returns without error.
2787//
2788// See UpdateCostCategoryDefinition for more information on using the UpdateCostCategoryDefinition
2789// API call, and error handling.
2790//
2791// This method is useful when you want to inject custom logic or configuration
2792// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2793//
2794//
2795//    // Example sending a request using the UpdateCostCategoryDefinitionRequest method.
2796//    req, resp := client.UpdateCostCategoryDefinitionRequest(params)
2797//
2798//    err := req.Send()
2799//    if err == nil { // resp is now filled
2800//        fmt.Println(resp)
2801//    }
2802//
2803// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateCostCategoryDefinition
2804func (c *CostExplorer) UpdateCostCategoryDefinitionRequest(input *UpdateCostCategoryDefinitionInput) (req *request.Request, output *UpdateCostCategoryDefinitionOutput) {
2805	op := &request.Operation{
2806		Name:       opUpdateCostCategoryDefinition,
2807		HTTPMethod: "POST",
2808		HTTPPath:   "/",
2809	}
2810
2811	if input == nil {
2812		input = &UpdateCostCategoryDefinitionInput{}
2813	}
2814
2815	output = &UpdateCostCategoryDefinitionOutput{}
2816	req = c.newRequest(op, input, output)
2817	return
2818}
2819
2820// UpdateCostCategoryDefinition API operation for AWS Cost Explorer Service.
2821//
2822// Updates an existing Cost Category. Changes made to the Cost Category rules
2823// will be used to categorize the current month’s expenses and future expenses.
2824// This won’t change categorization for the previous months.
2825//
2826// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2827// with awserr.Error's Code and Message methods to get detailed information about
2828// the error.
2829//
2830// See the AWS API reference guide for AWS Cost Explorer Service's
2831// API operation UpdateCostCategoryDefinition for usage and error information.
2832//
2833// Returned Error Types:
2834//   * ResourceNotFoundException
2835//   The specified ARN in the request doesn't exist.
2836//
2837//   * ServiceQuotaExceededException
2838//   You've reached the limit on the number of resources you can create, or exceeded
2839//   the size of an individual resource.
2840//
2841//   * LimitExceededException
2842//   You made too many calls in a short period of time. Try again later.
2843//
2844// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateCostCategoryDefinition
2845func (c *CostExplorer) UpdateCostCategoryDefinition(input *UpdateCostCategoryDefinitionInput) (*UpdateCostCategoryDefinitionOutput, error) {
2846	req, out := c.UpdateCostCategoryDefinitionRequest(input)
2847	return out, req.Send()
2848}
2849
2850// UpdateCostCategoryDefinitionWithContext is the same as UpdateCostCategoryDefinition with the addition of
2851// the ability to pass a context and additional request options.
2852//
2853// See UpdateCostCategoryDefinition for details on how to use this API operation.
2854//
2855// The context must be non-nil and will be used for request cancellation. If
2856// the context is nil a panic will occur. In the future the SDK may create
2857// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2858// for more information on using Contexts.
2859func (c *CostExplorer) UpdateCostCategoryDefinitionWithContext(ctx aws.Context, input *UpdateCostCategoryDefinitionInput, opts ...request.Option) (*UpdateCostCategoryDefinitionOutput, error) {
2860	req, out := c.UpdateCostCategoryDefinitionRequest(input)
2861	req.SetContext(ctx)
2862	req.ApplyOptions(opts...)
2863	return out, req.Send()
2864}
2865
2866// An unusual cost pattern. This consists of the detailed metadata and the current
2867// status of the anomaly object.
2868type Anomaly struct {
2869	_ struct{} `type:"structure"`
2870
2871	// The last day the anomaly is detected.
2872	AnomalyEndDate *string `type:"string"`
2873
2874	// The unique identifier for the anomaly.
2875	//
2876	// AnomalyId is a required field
2877	AnomalyId *string `type:"string" required:"true"`
2878
2879	// The latest and maximum score for the anomaly.
2880	//
2881	// AnomalyScore is a required field
2882	AnomalyScore *AnomalyScore `type:"structure" required:"true"`
2883
2884	// The first day the anomaly is detected.
2885	AnomalyStartDate *string `type:"string"`
2886
2887	// The dimension for the anomaly (for example, an Amazon Web Services service
2888	// in a service monitor).
2889	DimensionValue *string `type:"string"`
2890
2891	// The feedback value.
2892	Feedback *string `type:"string" enum:"AnomalyFeedbackType"`
2893
2894	// The dollar impact for the anomaly.
2895	//
2896	// Impact is a required field
2897	Impact *Impact `type:"structure" required:"true"`
2898
2899	// The Amazon Resource Name (ARN) for the cost monitor that generated this anomaly.
2900	//
2901	// MonitorArn is a required field
2902	MonitorArn *string `type:"string" required:"true"`
2903
2904	// The list of identified root causes for the anomaly.
2905	RootCauses []*RootCause `type:"list"`
2906}
2907
2908// String returns the string representation
2909func (s Anomaly) String() string {
2910	return awsutil.Prettify(s)
2911}
2912
2913// GoString returns the string representation
2914func (s Anomaly) GoString() string {
2915	return s.String()
2916}
2917
2918// SetAnomalyEndDate sets the AnomalyEndDate field's value.
2919func (s *Anomaly) SetAnomalyEndDate(v string) *Anomaly {
2920	s.AnomalyEndDate = &v
2921	return s
2922}
2923
2924// SetAnomalyId sets the AnomalyId field's value.
2925func (s *Anomaly) SetAnomalyId(v string) *Anomaly {
2926	s.AnomalyId = &v
2927	return s
2928}
2929
2930// SetAnomalyScore sets the AnomalyScore field's value.
2931func (s *Anomaly) SetAnomalyScore(v *AnomalyScore) *Anomaly {
2932	s.AnomalyScore = v
2933	return s
2934}
2935
2936// SetAnomalyStartDate sets the AnomalyStartDate field's value.
2937func (s *Anomaly) SetAnomalyStartDate(v string) *Anomaly {
2938	s.AnomalyStartDate = &v
2939	return s
2940}
2941
2942// SetDimensionValue sets the DimensionValue field's value.
2943func (s *Anomaly) SetDimensionValue(v string) *Anomaly {
2944	s.DimensionValue = &v
2945	return s
2946}
2947
2948// SetFeedback sets the Feedback field's value.
2949func (s *Anomaly) SetFeedback(v string) *Anomaly {
2950	s.Feedback = &v
2951	return s
2952}
2953
2954// SetImpact sets the Impact field's value.
2955func (s *Anomaly) SetImpact(v *Impact) *Anomaly {
2956	s.Impact = v
2957	return s
2958}
2959
2960// SetMonitorArn sets the MonitorArn field's value.
2961func (s *Anomaly) SetMonitorArn(v string) *Anomaly {
2962	s.MonitorArn = &v
2963	return s
2964}
2965
2966// SetRootCauses sets the RootCauses field's value.
2967func (s *Anomaly) SetRootCauses(v []*RootCause) *Anomaly {
2968	s.RootCauses = v
2969	return s
2970}
2971
2972// The time period for an anomaly.
2973type AnomalyDateInterval struct {
2974	_ struct{} `type:"structure"`
2975
2976	// The last date an anomaly was observed.
2977	EndDate *string `type:"string"`
2978
2979	// The first date an anomaly was observed.
2980	//
2981	// StartDate is a required field
2982	StartDate *string `type:"string" required:"true"`
2983}
2984
2985// String returns the string representation
2986func (s AnomalyDateInterval) String() string {
2987	return awsutil.Prettify(s)
2988}
2989
2990// GoString returns the string representation
2991func (s AnomalyDateInterval) GoString() string {
2992	return s.String()
2993}
2994
2995// Validate inspects the fields of the type to determine if they are valid.
2996func (s *AnomalyDateInterval) Validate() error {
2997	invalidParams := request.ErrInvalidParams{Context: "AnomalyDateInterval"}
2998	if s.StartDate == nil {
2999		invalidParams.Add(request.NewErrParamRequired("StartDate"))
3000	}
3001
3002	if invalidParams.Len() > 0 {
3003		return invalidParams
3004	}
3005	return nil
3006}
3007
3008// SetEndDate sets the EndDate field's value.
3009func (s *AnomalyDateInterval) SetEndDate(v string) *AnomalyDateInterval {
3010	s.EndDate = &v
3011	return s
3012}
3013
3014// SetStartDate sets the StartDate field's value.
3015func (s *AnomalyDateInterval) SetStartDate(v string) *AnomalyDateInterval {
3016	s.StartDate = &v
3017	return s
3018}
3019
3020// This object continuously inspects your account's cost data for anomalies.
3021// It's based on MonitorType and MonitorSpecification. The content consists
3022// of detailed metadata and the current status of the monitor object.
3023type AnomalyMonitor struct {
3024	_ struct{} `type:"structure"`
3025
3026	// The date when the monitor was created.
3027	CreationDate *string `type:"string"`
3028
3029	// The value for evaluated dimensions.
3030	DimensionalValueCount *int64 `type:"integer"`
3031
3032	// The date when the monitor last evaluated for anomalies.
3033	LastEvaluatedDate *string `type:"string"`
3034
3035	// The date when the monitor was last updated.
3036	LastUpdatedDate *string `type:"string"`
3037
3038	// The Amazon Resource Name (ARN) value.
3039	MonitorArn *string `type:"string"`
3040
3041	// The dimensions to evaluate.
3042	MonitorDimension *string `type:"string" enum:"MonitorDimension"`
3043
3044	// The name of the monitor.
3045	//
3046	// MonitorName is a required field
3047	MonitorName *string `type:"string" required:"true"`
3048
3049	// Use Expression to filter by cost or by usage. There are two patterns:
3050	//
3051	//    * Simple dimension values - You can set the dimension name and values
3052	//    for the filters that you plan to use. For example, you can filter for
3053	//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
3054	//    the Region is a full name (for example, REGION==US East (N. Virginia).
3055	//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
3056	//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
3057	//    are OR'd together to retrieve cost or usage data. You can create Expression
3058	//    and DimensionValues objects using either with* methods or set* methods
3059	//    in multiple lines.
3060	//
3061	//    * Compound dimension values with logical operations - You can use multiple
3062	//    Expression types and the logical operators AND/OR/NOT to create a list
3063	//    of one or more Expression objects. By doing this, you can filter on more
3064	//    advanced options. For example, you can filter on ((REGION == us-east-1
3065	//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
3066	//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
3067	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
3068	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
3069	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
3070	//    Expression can have only one operator, the service returns an error if
3071	//    more than one is specified. The following example shows an Expression
3072	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
3073	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
3074	//
3075	// For the GetRightsizingRecommendation action, a combination of OR and NOT
3076	// isn't supported. OR isn't supported between different dimensions, or dimensions
3077	// and tags. NOT operators aren't supported. Dimensions are also limited to
3078	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
3079	//
3080	// For the GetReservationPurchaseRecommendation action, only NOT is supported.
3081	// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
3082	MonitorSpecification *Expression `type:"structure"`
3083
3084	// The possible type values.
3085	//
3086	// MonitorType is a required field
3087	MonitorType *string `type:"string" required:"true" enum:"MonitorType"`
3088}
3089
3090// String returns the string representation
3091func (s AnomalyMonitor) String() string {
3092	return awsutil.Prettify(s)
3093}
3094
3095// GoString returns the string representation
3096func (s AnomalyMonitor) GoString() string {
3097	return s.String()
3098}
3099
3100// Validate inspects the fields of the type to determine if they are valid.
3101func (s *AnomalyMonitor) Validate() error {
3102	invalidParams := request.ErrInvalidParams{Context: "AnomalyMonitor"}
3103	if s.MonitorName == nil {
3104		invalidParams.Add(request.NewErrParamRequired("MonitorName"))
3105	}
3106	if s.MonitorType == nil {
3107		invalidParams.Add(request.NewErrParamRequired("MonitorType"))
3108	}
3109	if s.MonitorSpecification != nil {
3110		if err := s.MonitorSpecification.Validate(); err != nil {
3111			invalidParams.AddNested("MonitorSpecification", err.(request.ErrInvalidParams))
3112		}
3113	}
3114
3115	if invalidParams.Len() > 0 {
3116		return invalidParams
3117	}
3118	return nil
3119}
3120
3121// SetCreationDate sets the CreationDate field's value.
3122func (s *AnomalyMonitor) SetCreationDate(v string) *AnomalyMonitor {
3123	s.CreationDate = &v
3124	return s
3125}
3126
3127// SetDimensionalValueCount sets the DimensionalValueCount field's value.
3128func (s *AnomalyMonitor) SetDimensionalValueCount(v int64) *AnomalyMonitor {
3129	s.DimensionalValueCount = &v
3130	return s
3131}
3132
3133// SetLastEvaluatedDate sets the LastEvaluatedDate field's value.
3134func (s *AnomalyMonitor) SetLastEvaluatedDate(v string) *AnomalyMonitor {
3135	s.LastEvaluatedDate = &v
3136	return s
3137}
3138
3139// SetLastUpdatedDate sets the LastUpdatedDate field's value.
3140func (s *AnomalyMonitor) SetLastUpdatedDate(v string) *AnomalyMonitor {
3141	s.LastUpdatedDate = &v
3142	return s
3143}
3144
3145// SetMonitorArn sets the MonitorArn field's value.
3146func (s *AnomalyMonitor) SetMonitorArn(v string) *AnomalyMonitor {
3147	s.MonitorArn = &v
3148	return s
3149}
3150
3151// SetMonitorDimension sets the MonitorDimension field's value.
3152func (s *AnomalyMonitor) SetMonitorDimension(v string) *AnomalyMonitor {
3153	s.MonitorDimension = &v
3154	return s
3155}
3156
3157// SetMonitorName sets the MonitorName field's value.
3158func (s *AnomalyMonitor) SetMonitorName(v string) *AnomalyMonitor {
3159	s.MonitorName = &v
3160	return s
3161}
3162
3163// SetMonitorSpecification sets the MonitorSpecification field's value.
3164func (s *AnomalyMonitor) SetMonitorSpecification(v *Expression) *AnomalyMonitor {
3165	s.MonitorSpecification = v
3166	return s
3167}
3168
3169// SetMonitorType sets the MonitorType field's value.
3170func (s *AnomalyMonitor) SetMonitorType(v string) *AnomalyMonitor {
3171	s.MonitorType = &v
3172	return s
3173}
3174
3175// Quantifies the anomaly. The higher score means that it's more anomalous.
3176type AnomalyScore struct {
3177	_ struct{} `type:"structure"`
3178
3179	// The last observed score.
3180	//
3181	// CurrentScore is a required field
3182	CurrentScore *float64 `type:"double" required:"true"`
3183
3184	// The maximum score that's observed during the AnomalyDateInterval.
3185	//
3186	// MaxScore is a required field
3187	MaxScore *float64 `type:"double" required:"true"`
3188}
3189
3190// String returns the string representation
3191func (s AnomalyScore) String() string {
3192	return awsutil.Prettify(s)
3193}
3194
3195// GoString returns the string representation
3196func (s AnomalyScore) GoString() string {
3197	return s.String()
3198}
3199
3200// SetCurrentScore sets the CurrentScore field's value.
3201func (s *AnomalyScore) SetCurrentScore(v float64) *AnomalyScore {
3202	s.CurrentScore = &v
3203	return s
3204}
3205
3206// SetMaxScore sets the MaxScore field's value.
3207func (s *AnomalyScore) SetMaxScore(v float64) *AnomalyScore {
3208	s.MaxScore = &v
3209	return s
3210}
3211
3212// The association between a monitor, threshold, and list of subscribers used
3213// to deliver notifications about anomalies detected by a monitor that exceeds
3214// a threshold. The content consists of the detailed metadata and the current
3215// status of the AnomalySubscription object.
3216type AnomalySubscription struct {
3217	_ struct{} `type:"structure"`
3218
3219	// Your unique account identifier.
3220	AccountId *string `type:"string"`
3221
3222	// The frequency that anomaly reports are sent over email.
3223	//
3224	// Frequency is a required field
3225	Frequency *string `type:"string" required:"true" enum:"AnomalySubscriptionFrequency"`
3226
3227	// A list of cost anomaly monitors.
3228	//
3229	// MonitorArnList is a required field
3230	MonitorArnList []*string `type:"list" required:"true"`
3231
3232	// A list of subscribers to notify.
3233	//
3234	// Subscribers is a required field
3235	Subscribers []*Subscriber `type:"list" required:"true"`
3236
3237	// The AnomalySubscription Amazon Resource Name (ARN).
3238	SubscriptionArn *string `type:"string"`
3239
3240	// The name for the subscription.
3241	//
3242	// SubscriptionName is a required field
3243	SubscriptionName *string `type:"string" required:"true"`
3244
3245	// The dollar value that triggers a notification if the threshold is exceeded.
3246	//
3247	// Threshold is a required field
3248	Threshold *float64 `type:"double" required:"true"`
3249}
3250
3251// String returns the string representation
3252func (s AnomalySubscription) String() string {
3253	return awsutil.Prettify(s)
3254}
3255
3256// GoString returns the string representation
3257func (s AnomalySubscription) GoString() string {
3258	return s.String()
3259}
3260
3261// Validate inspects the fields of the type to determine if they are valid.
3262func (s *AnomalySubscription) Validate() error {
3263	invalidParams := request.ErrInvalidParams{Context: "AnomalySubscription"}
3264	if s.Frequency == nil {
3265		invalidParams.Add(request.NewErrParamRequired("Frequency"))
3266	}
3267	if s.MonitorArnList == nil {
3268		invalidParams.Add(request.NewErrParamRequired("MonitorArnList"))
3269	}
3270	if s.Subscribers == nil {
3271		invalidParams.Add(request.NewErrParamRequired("Subscribers"))
3272	}
3273	if s.SubscriptionName == nil {
3274		invalidParams.Add(request.NewErrParamRequired("SubscriptionName"))
3275	}
3276	if s.Threshold == nil {
3277		invalidParams.Add(request.NewErrParamRequired("Threshold"))
3278	}
3279	if s.Subscribers != nil {
3280		for i, v := range s.Subscribers {
3281			if v == nil {
3282				continue
3283			}
3284			if err := v.Validate(); err != nil {
3285				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Subscribers", i), err.(request.ErrInvalidParams))
3286			}
3287		}
3288	}
3289
3290	if invalidParams.Len() > 0 {
3291		return invalidParams
3292	}
3293	return nil
3294}
3295
3296// SetAccountId sets the AccountId field's value.
3297func (s *AnomalySubscription) SetAccountId(v string) *AnomalySubscription {
3298	s.AccountId = &v
3299	return s
3300}
3301
3302// SetFrequency sets the Frequency field's value.
3303func (s *AnomalySubscription) SetFrequency(v string) *AnomalySubscription {
3304	s.Frequency = &v
3305	return s
3306}
3307
3308// SetMonitorArnList sets the MonitorArnList field's value.
3309func (s *AnomalySubscription) SetMonitorArnList(v []*string) *AnomalySubscription {
3310	s.MonitorArnList = v
3311	return s
3312}
3313
3314// SetSubscribers sets the Subscribers field's value.
3315func (s *AnomalySubscription) SetSubscribers(v []*Subscriber) *AnomalySubscription {
3316	s.Subscribers = v
3317	return s
3318}
3319
3320// SetSubscriptionArn sets the SubscriptionArn field's value.
3321func (s *AnomalySubscription) SetSubscriptionArn(v string) *AnomalySubscription {
3322	s.SubscriptionArn = &v
3323	return s
3324}
3325
3326// SetSubscriptionName sets the SubscriptionName field's value.
3327func (s *AnomalySubscription) SetSubscriptionName(v string) *AnomalySubscription {
3328	s.SubscriptionName = &v
3329	return s
3330}
3331
3332// SetThreshold sets the Threshold field's value.
3333func (s *AnomalySubscription) SetThreshold(v float64) *AnomalySubscription {
3334	s.Threshold = &v
3335	return s
3336}
3337
3338// The requested report expired. Update the date interval and try again.
3339type BillExpirationException struct {
3340	_            struct{}                  `type:"structure"`
3341	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
3342
3343	Message_ *string `locationName:"Message" type:"string"`
3344}
3345
3346// String returns the string representation
3347func (s BillExpirationException) String() string {
3348	return awsutil.Prettify(s)
3349}
3350
3351// GoString returns the string representation
3352func (s BillExpirationException) GoString() string {
3353	return s.String()
3354}
3355
3356func newErrorBillExpirationException(v protocol.ResponseMetadata) error {
3357	return &BillExpirationException{
3358		RespMetadata: v,
3359	}
3360}
3361
3362// Code returns the exception type name.
3363func (s *BillExpirationException) Code() string {
3364	return "BillExpirationException"
3365}
3366
3367// Message returns the exception's message.
3368func (s *BillExpirationException) Message() string {
3369	if s.Message_ != nil {
3370		return *s.Message_
3371	}
3372	return ""
3373}
3374
3375// OrigErr always returns nil, satisfies awserr.Error interface.
3376func (s *BillExpirationException) OrigErr() error {
3377	return nil
3378}
3379
3380func (s *BillExpirationException) Error() string {
3381	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
3382}
3383
3384// Status code returns the HTTP status code for the request's response error.
3385func (s *BillExpirationException) StatusCode() int {
3386	return s.RespMetadata.StatusCode
3387}
3388
3389// RequestID returns the service's response RequestID for request.
3390func (s *BillExpirationException) RequestID() string {
3391	return s.RespMetadata.RequestID
3392}
3393
3394// The structure of Cost Categories. This includes detailed metadata and the
3395// set of rules for the CostCategory object.
3396type CostCategory struct {
3397	_ struct{} `type:"structure"`
3398
3399	// The unique identifier for your Cost Category.
3400	//
3401	// CostCategoryArn is a required field
3402	CostCategoryArn *string `min:"20" type:"string" required:"true"`
3403
3404	// The default value for the cost category.
3405	DefaultValue *string `min:"1" type:"string"`
3406
3407	// The effective end data of your Cost Category.
3408	EffectiveEnd *string `min:"20" type:"string"`
3409
3410	// The effective state data of your Cost Category.
3411	//
3412	// EffectiveStart is a required field
3413	EffectiveStart *string `min:"20" type:"string" required:"true"`
3414
3415	// The unique name of the Cost Category.
3416	//
3417	// Name is a required field
3418	Name *string `min:"1" type:"string" required:"true"`
3419
3420	// The list of processing statuses for Cost Management products for a specific
3421	// cost category.
3422	ProcessingStatus []*CostCategoryProcessingStatus `type:"list"`
3423
3424	// The rule schema version in this particular Cost Category.
3425	//
3426	// RuleVersion is a required field
3427	RuleVersion *string `type:"string" required:"true" enum:"CostCategoryRuleVersion"`
3428
3429	// The rules are processed in order. If there are multiple rules that match
3430	// the line item, then the first rule to match is used to determine that Cost
3431	// Category value.
3432	//
3433	// Rules is a required field
3434	Rules []*CostCategoryRule `min:"1" type:"list" required:"true"`
3435
3436	// The split charge rules that are used to allocate your charges between your
3437	// Cost Category values.
3438	SplitChargeRules []*CostCategorySplitChargeRule `min:"1" type:"list"`
3439}
3440
3441// String returns the string representation
3442func (s CostCategory) String() string {
3443	return awsutil.Prettify(s)
3444}
3445
3446// GoString returns the string representation
3447func (s CostCategory) GoString() string {
3448	return s.String()
3449}
3450
3451// SetCostCategoryArn sets the CostCategoryArn field's value.
3452func (s *CostCategory) SetCostCategoryArn(v string) *CostCategory {
3453	s.CostCategoryArn = &v
3454	return s
3455}
3456
3457// SetDefaultValue sets the DefaultValue field's value.
3458func (s *CostCategory) SetDefaultValue(v string) *CostCategory {
3459	s.DefaultValue = &v
3460	return s
3461}
3462
3463// SetEffectiveEnd sets the EffectiveEnd field's value.
3464func (s *CostCategory) SetEffectiveEnd(v string) *CostCategory {
3465	s.EffectiveEnd = &v
3466	return s
3467}
3468
3469// SetEffectiveStart sets the EffectiveStart field's value.
3470func (s *CostCategory) SetEffectiveStart(v string) *CostCategory {
3471	s.EffectiveStart = &v
3472	return s
3473}
3474
3475// SetName sets the Name field's value.
3476func (s *CostCategory) SetName(v string) *CostCategory {
3477	s.Name = &v
3478	return s
3479}
3480
3481// SetProcessingStatus sets the ProcessingStatus field's value.
3482func (s *CostCategory) SetProcessingStatus(v []*CostCategoryProcessingStatus) *CostCategory {
3483	s.ProcessingStatus = v
3484	return s
3485}
3486
3487// SetRuleVersion sets the RuleVersion field's value.
3488func (s *CostCategory) SetRuleVersion(v string) *CostCategory {
3489	s.RuleVersion = &v
3490	return s
3491}
3492
3493// SetRules sets the Rules field's value.
3494func (s *CostCategory) SetRules(v []*CostCategoryRule) *CostCategory {
3495	s.Rules = v
3496	return s
3497}
3498
3499// SetSplitChargeRules sets the SplitChargeRules field's value.
3500func (s *CostCategory) SetSplitChargeRules(v []*CostCategorySplitChargeRule) *CostCategory {
3501	s.SplitChargeRules = v
3502	return s
3503}
3504
3505// When creating or updating a cost category, you can define the CostCategoryRule
3506// rule type as INHERITED_VALUE. This rule type adds the flexibility of defining
3507// a rule that dynamically inherits the cost category value from the dimension
3508// value defined by CostCategoryInheritedValueDimension. For example, if you
3509// want to dynamically group costs that are based on the value of a specific
3510// tag key, first choose an inherited value rule type, then choose the tag dimension
3511// and specify the tag key to use.
3512type CostCategoryInheritedValueDimension struct {
3513	_ struct{} `type:"structure"`
3514
3515	// The key to extract cost category values.
3516	DimensionKey *string `type:"string"`
3517
3518	// The name of the dimension that's used to group costs.
3519	//
3520	// If you specify LINKED_ACCOUNT_NAME, the cost category value is based on account
3521	// name. If you specify TAG, the cost category value will be based on the value
3522	// of the specified tag key.
3523	DimensionName *string `type:"string" enum:"CostCategoryInheritedValueDimensionName"`
3524}
3525
3526// String returns the string representation
3527func (s CostCategoryInheritedValueDimension) String() string {
3528	return awsutil.Prettify(s)
3529}
3530
3531// GoString returns the string representation
3532func (s CostCategoryInheritedValueDimension) GoString() string {
3533	return s.String()
3534}
3535
3536// SetDimensionKey sets the DimensionKey field's value.
3537func (s *CostCategoryInheritedValueDimension) SetDimensionKey(v string) *CostCategoryInheritedValueDimension {
3538	s.DimensionKey = &v
3539	return s
3540}
3541
3542// SetDimensionName sets the DimensionName field's value.
3543func (s *CostCategoryInheritedValueDimension) SetDimensionName(v string) *CostCategoryInheritedValueDimension {
3544	s.DimensionName = &v
3545	return s
3546}
3547
3548// The list of processing statuses for Cost Management products for a specific
3549// cost category.
3550type CostCategoryProcessingStatus struct {
3551	_ struct{} `type:"structure"`
3552
3553	// The Cost Management product name of the applied status.
3554	Component *string `type:"string" enum:"CostCategoryStatusComponent"`
3555
3556	// The process status for a specific cost category.
3557	Status *string `type:"string" enum:"CostCategoryStatus"`
3558}
3559
3560// String returns the string representation
3561func (s CostCategoryProcessingStatus) String() string {
3562	return awsutil.Prettify(s)
3563}
3564
3565// GoString returns the string representation
3566func (s CostCategoryProcessingStatus) GoString() string {
3567	return s.String()
3568}
3569
3570// SetComponent sets the Component field's value.
3571func (s *CostCategoryProcessingStatus) SetComponent(v string) *CostCategoryProcessingStatus {
3572	s.Component = &v
3573	return s
3574}
3575
3576// SetStatus sets the Status field's value.
3577func (s *CostCategoryProcessingStatus) SetStatus(v string) *CostCategoryProcessingStatus {
3578	s.Status = &v
3579	return s
3580}
3581
3582// A reference to a Cost Category containing only enough information to identify
3583// the Cost Category.
3584//
3585// You can use this information to retrieve the full Cost Category information
3586// using DescribeCostCategory.
3587type CostCategoryReference struct {
3588	_ struct{} `type:"structure"`
3589
3590	// The unique identifier for your Cost Category.
3591	CostCategoryArn *string `min:"20" type:"string"`
3592
3593	// The default value for the cost category.
3594	DefaultValue *string `min:"1" type:"string"`
3595
3596	// The Cost Category's effective end date.
3597	EffectiveEnd *string `min:"20" type:"string"`
3598
3599	// The Cost Category's effective start date.
3600	EffectiveStart *string `min:"20" type:"string"`
3601
3602	// The unique name of the Cost Category.
3603	Name *string `min:"1" type:"string"`
3604
3605	// The number of rules that are associated with a specific Cost Category.
3606	NumberOfRules *int64 `type:"integer"`
3607
3608	// The list of processing statuses for Cost Management products for a specific
3609	// cost category.
3610	ProcessingStatus []*CostCategoryProcessingStatus `type:"list"`
3611
3612	// A list of unique cost category values in a specific cost category.
3613	Values []*string `type:"list"`
3614}
3615
3616// String returns the string representation
3617func (s CostCategoryReference) String() string {
3618	return awsutil.Prettify(s)
3619}
3620
3621// GoString returns the string representation
3622func (s CostCategoryReference) GoString() string {
3623	return s.String()
3624}
3625
3626// SetCostCategoryArn sets the CostCategoryArn field's value.
3627func (s *CostCategoryReference) SetCostCategoryArn(v string) *CostCategoryReference {
3628	s.CostCategoryArn = &v
3629	return s
3630}
3631
3632// SetDefaultValue sets the DefaultValue field's value.
3633func (s *CostCategoryReference) SetDefaultValue(v string) *CostCategoryReference {
3634	s.DefaultValue = &v
3635	return s
3636}
3637
3638// SetEffectiveEnd sets the EffectiveEnd field's value.
3639func (s *CostCategoryReference) SetEffectiveEnd(v string) *CostCategoryReference {
3640	s.EffectiveEnd = &v
3641	return s
3642}
3643
3644// SetEffectiveStart sets the EffectiveStart field's value.
3645func (s *CostCategoryReference) SetEffectiveStart(v string) *CostCategoryReference {
3646	s.EffectiveStart = &v
3647	return s
3648}
3649
3650// SetName sets the Name field's value.
3651func (s *CostCategoryReference) SetName(v string) *CostCategoryReference {
3652	s.Name = &v
3653	return s
3654}
3655
3656// SetNumberOfRules sets the NumberOfRules field's value.
3657func (s *CostCategoryReference) SetNumberOfRules(v int64) *CostCategoryReference {
3658	s.NumberOfRules = &v
3659	return s
3660}
3661
3662// SetProcessingStatus sets the ProcessingStatus field's value.
3663func (s *CostCategoryReference) SetProcessingStatus(v []*CostCategoryProcessingStatus) *CostCategoryReference {
3664	s.ProcessingStatus = v
3665	return s
3666}
3667
3668// SetValues sets the Values field's value.
3669func (s *CostCategoryReference) SetValues(v []*string) *CostCategoryReference {
3670	s.Values = v
3671	return s
3672}
3673
3674// Rules are processed in order. If there are multiple rules that match the
3675// line item, then the first rule to match is used to determine that Cost Category
3676// value.
3677type CostCategoryRule struct {
3678	_ struct{} `type:"structure"`
3679
3680	// The value the line item is categorized as if the line item contains the matched
3681	// dimension.
3682	InheritedValue *CostCategoryInheritedValueDimension `type:"structure"`
3683
3684	// An Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
3685	// object used to categorize costs. This supports dimensions, tags, and nested
3686	// expressions. Currently the only dimensions supported are LINKED_ACCOUNT,
3687	// SERVICE_CODE, RECORD_TYPE, and LINKED_ACCOUNT_NAME.
3688	//
3689	// Root level OR isn't supported. We recommend that you create a separate rule
3690	// instead.
3691	//
3692	// RECORD_TYPE is a dimension used for Cost Explorer APIs, and is also supported
3693	// for Cost Category expressions. This dimension uses different terms, depending
3694	// on whether you're using the console or API/JSON editor. For a detailed comparison,
3695	// see Term Comparisons (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/manage-cost-categories.html#cost-categories-terms)
3696	// in the Billing and Cost Management User Guide.
3697	Rule *Expression `type:"structure"`
3698
3699	// You can define the CostCategoryRule rule type as either REGULAR or INHERITED_VALUE.
3700	// The INHERITED_VALUE rule type adds the flexibility of defining a rule that
3701	// dynamically inherits the cost category value from the dimension value defined
3702	// by CostCategoryInheritedValueDimension. For example, if you want to dynamically
3703	// group costs based on the value of a specific tag key, first choose an inherited
3704	// value rule type, then choose the tag dimension and specify the tag key to
3705	// use.
3706	Type *string `type:"string" enum:"CostCategoryRuleType"`
3707
3708	// The default value for the cost category.
3709	Value *string `min:"1" type:"string"`
3710}
3711
3712// String returns the string representation
3713func (s CostCategoryRule) String() string {
3714	return awsutil.Prettify(s)
3715}
3716
3717// GoString returns the string representation
3718func (s CostCategoryRule) GoString() string {
3719	return s.String()
3720}
3721
3722// Validate inspects the fields of the type to determine if they are valid.
3723func (s *CostCategoryRule) Validate() error {
3724	invalidParams := request.ErrInvalidParams{Context: "CostCategoryRule"}
3725	if s.Value != nil && len(*s.Value) < 1 {
3726		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
3727	}
3728	if s.Rule != nil {
3729		if err := s.Rule.Validate(); err != nil {
3730			invalidParams.AddNested("Rule", err.(request.ErrInvalidParams))
3731		}
3732	}
3733
3734	if invalidParams.Len() > 0 {
3735		return invalidParams
3736	}
3737	return nil
3738}
3739
3740// SetInheritedValue sets the InheritedValue field's value.
3741func (s *CostCategoryRule) SetInheritedValue(v *CostCategoryInheritedValueDimension) *CostCategoryRule {
3742	s.InheritedValue = v
3743	return s
3744}
3745
3746// SetRule sets the Rule field's value.
3747func (s *CostCategoryRule) SetRule(v *Expression) *CostCategoryRule {
3748	s.Rule = v
3749	return s
3750}
3751
3752// SetType sets the Type field's value.
3753func (s *CostCategoryRule) SetType(v string) *CostCategoryRule {
3754	s.Type = &v
3755	return s
3756}
3757
3758// SetValue sets the Value field's value.
3759func (s *CostCategoryRule) SetValue(v string) *CostCategoryRule {
3760	s.Value = &v
3761	return s
3762}
3763
3764// Use the split charge rule to split the cost of one Cost Category value across
3765// several other target values.
3766type CostCategorySplitChargeRule struct {
3767	_ struct{} `type:"structure"`
3768
3769	// The method that's used to define how to split your source costs across your
3770	// targets.
3771	//
3772	// Proportional - Allocates charges across your targets based on the proportional
3773	// weighted cost of each target.
3774	//
3775	// Fixed - Allocates charges across your targets based on your defined allocation
3776	// percentage.
3777	//
3778	// >Even - Allocates costs evenly across all targets.
3779	//
3780	// Method is a required field
3781	Method *string `type:"string" required:"true" enum:"CostCategorySplitChargeMethod"`
3782
3783	// The parameters for a split charge method. This is only required for the FIXED
3784	// method.
3785	Parameters []*CostCategorySplitChargeRuleParameter `min:"1" type:"list"`
3786
3787	// The Cost Category value that you want to split. That value can't be used
3788	// as a source or a target in other split charge rules. To indicate uncategorized
3789	// costs, you can use an empty string as the source.
3790	//
3791	// Source is a required field
3792	Source *string `type:"string" required:"true"`
3793
3794	// The Cost Category values that you want to split costs across. These values
3795	// can't be used as a source in other split charge rules.
3796	//
3797	// Targets is a required field
3798	Targets []*string `min:"1" type:"list" required:"true"`
3799}
3800
3801// String returns the string representation
3802func (s CostCategorySplitChargeRule) String() string {
3803	return awsutil.Prettify(s)
3804}
3805
3806// GoString returns the string representation
3807func (s CostCategorySplitChargeRule) GoString() string {
3808	return s.String()
3809}
3810
3811// Validate inspects the fields of the type to determine if they are valid.
3812func (s *CostCategorySplitChargeRule) Validate() error {
3813	invalidParams := request.ErrInvalidParams{Context: "CostCategorySplitChargeRule"}
3814	if s.Method == nil {
3815		invalidParams.Add(request.NewErrParamRequired("Method"))
3816	}
3817	if s.Parameters != nil && len(s.Parameters) < 1 {
3818		invalidParams.Add(request.NewErrParamMinLen("Parameters", 1))
3819	}
3820	if s.Source == nil {
3821		invalidParams.Add(request.NewErrParamRequired("Source"))
3822	}
3823	if s.Targets == nil {
3824		invalidParams.Add(request.NewErrParamRequired("Targets"))
3825	}
3826	if s.Targets != nil && len(s.Targets) < 1 {
3827		invalidParams.Add(request.NewErrParamMinLen("Targets", 1))
3828	}
3829	if s.Parameters != nil {
3830		for i, v := range s.Parameters {
3831			if v == nil {
3832				continue
3833			}
3834			if err := v.Validate(); err != nil {
3835				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Parameters", i), err.(request.ErrInvalidParams))
3836			}
3837		}
3838	}
3839
3840	if invalidParams.Len() > 0 {
3841		return invalidParams
3842	}
3843	return nil
3844}
3845
3846// SetMethod sets the Method field's value.
3847func (s *CostCategorySplitChargeRule) SetMethod(v string) *CostCategorySplitChargeRule {
3848	s.Method = &v
3849	return s
3850}
3851
3852// SetParameters sets the Parameters field's value.
3853func (s *CostCategorySplitChargeRule) SetParameters(v []*CostCategorySplitChargeRuleParameter) *CostCategorySplitChargeRule {
3854	s.Parameters = v
3855	return s
3856}
3857
3858// SetSource sets the Source field's value.
3859func (s *CostCategorySplitChargeRule) SetSource(v string) *CostCategorySplitChargeRule {
3860	s.Source = &v
3861	return s
3862}
3863
3864// SetTargets sets the Targets field's value.
3865func (s *CostCategorySplitChargeRule) SetTargets(v []*string) *CostCategorySplitChargeRule {
3866	s.Targets = v
3867	return s
3868}
3869
3870// The parameters for a split charge method.
3871type CostCategorySplitChargeRuleParameter struct {
3872	_ struct{} `type:"structure"`
3873
3874	// The parameter type.
3875	//
3876	// Type is a required field
3877	Type *string `type:"string" required:"true" enum:"CostCategorySplitChargeRuleParameterType"`
3878
3879	// The parameter values.
3880	//
3881	// Values is a required field
3882	Values []*string `min:"1" type:"list" required:"true"`
3883}
3884
3885// String returns the string representation
3886func (s CostCategorySplitChargeRuleParameter) String() string {
3887	return awsutil.Prettify(s)
3888}
3889
3890// GoString returns the string representation
3891func (s CostCategorySplitChargeRuleParameter) GoString() string {
3892	return s.String()
3893}
3894
3895// Validate inspects the fields of the type to determine if they are valid.
3896func (s *CostCategorySplitChargeRuleParameter) Validate() error {
3897	invalidParams := request.ErrInvalidParams{Context: "CostCategorySplitChargeRuleParameter"}
3898	if s.Type == nil {
3899		invalidParams.Add(request.NewErrParamRequired("Type"))
3900	}
3901	if s.Values == nil {
3902		invalidParams.Add(request.NewErrParamRequired("Values"))
3903	}
3904	if s.Values != nil && len(s.Values) < 1 {
3905		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
3906	}
3907
3908	if invalidParams.Len() > 0 {
3909		return invalidParams
3910	}
3911	return nil
3912}
3913
3914// SetType sets the Type field's value.
3915func (s *CostCategorySplitChargeRuleParameter) SetType(v string) *CostCategorySplitChargeRuleParameter {
3916	s.Type = &v
3917	return s
3918}
3919
3920// SetValues sets the Values field's value.
3921func (s *CostCategorySplitChargeRuleParameter) SetValues(v []*string) *CostCategorySplitChargeRuleParameter {
3922	s.Values = v
3923	return s
3924}
3925
3926// The Cost Categories values used for filtering the costs.
3927//
3928// If Values and Key are not specified, the ABSENT MatchOption is applied to
3929// all Cost Categories. That is, it filters on resources that aren't mapped
3930// to any Cost Categories.
3931//
3932// If Values is provided and Key isn't specified, the ABSENT MatchOption is
3933// applied to the Cost Categories Key only. That is, it filters on resources
3934// without the given Cost Categories key.
3935type CostCategoryValues struct {
3936	_ struct{} `type:"structure"`
3937
3938	// The unique name of the Cost Category.
3939	Key *string `min:"1" type:"string"`
3940
3941	// The match options that you can use to filter your results. MatchOptions is
3942	// only applicable for actions related to cost category. The default values
3943	// for MatchOptions is EQUALS and CASE_SENSITIVE.
3944	MatchOptions []*string `type:"list"`
3945
3946	// The specific value of the Cost Category.
3947	Values []*string `type:"list"`
3948}
3949
3950// String returns the string representation
3951func (s CostCategoryValues) String() string {
3952	return awsutil.Prettify(s)
3953}
3954
3955// GoString returns the string representation
3956func (s CostCategoryValues) GoString() string {
3957	return s.String()
3958}
3959
3960// Validate inspects the fields of the type to determine if they are valid.
3961func (s *CostCategoryValues) Validate() error {
3962	invalidParams := request.ErrInvalidParams{Context: "CostCategoryValues"}
3963	if s.Key != nil && len(*s.Key) < 1 {
3964		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
3965	}
3966
3967	if invalidParams.Len() > 0 {
3968		return invalidParams
3969	}
3970	return nil
3971}
3972
3973// SetKey sets the Key field's value.
3974func (s *CostCategoryValues) SetKey(v string) *CostCategoryValues {
3975	s.Key = &v
3976	return s
3977}
3978
3979// SetMatchOptions sets the MatchOptions field's value.
3980func (s *CostCategoryValues) SetMatchOptions(v []*string) *CostCategoryValues {
3981	s.MatchOptions = v
3982	return s
3983}
3984
3985// SetValues sets the Values field's value.
3986func (s *CostCategoryValues) SetValues(v []*string) *CostCategoryValues {
3987	s.Values = v
3988	return s
3989}
3990
3991// The amount of instance usage that a reservation covered.
3992type Coverage struct {
3993	_ struct{} `type:"structure"`
3994
3995	// The amount of cost that the reservation covered.
3996	CoverageCost *CoverageCost `type:"structure"`
3997
3998	// The amount of instance usage that the reservation covered, in hours.
3999	CoverageHours *CoverageHours `type:"structure"`
4000
4001	// The amount of instance usage that the reservation covered, in normalized
4002	// units.
4003	CoverageNormalizedUnits *CoverageNormalizedUnits `type:"structure"`
4004}
4005
4006// String returns the string representation
4007func (s Coverage) String() string {
4008	return awsutil.Prettify(s)
4009}
4010
4011// GoString returns the string representation
4012func (s Coverage) GoString() string {
4013	return s.String()
4014}
4015
4016// SetCoverageCost sets the CoverageCost field's value.
4017func (s *Coverage) SetCoverageCost(v *CoverageCost) *Coverage {
4018	s.CoverageCost = v
4019	return s
4020}
4021
4022// SetCoverageHours sets the CoverageHours field's value.
4023func (s *Coverage) SetCoverageHours(v *CoverageHours) *Coverage {
4024	s.CoverageHours = v
4025	return s
4026}
4027
4028// SetCoverageNormalizedUnits sets the CoverageNormalizedUnits field's value.
4029func (s *Coverage) SetCoverageNormalizedUnits(v *CoverageNormalizedUnits) *Coverage {
4030	s.CoverageNormalizedUnits = v
4031	return s
4032}
4033
4034// Reservation coverage for a specified period, in hours.
4035type CoverageByTime struct {
4036	_ struct{} `type:"structure"`
4037
4038	// The groups of instances that the reservation covered.
4039	Groups []*ReservationCoverageGroup `type:"list"`
4040
4041	// The period that this coverage was used over.
4042	TimePeriod *DateInterval `type:"structure"`
4043
4044	// The total reservation coverage, in hours.
4045	Total *Coverage `type:"structure"`
4046}
4047
4048// String returns the string representation
4049func (s CoverageByTime) String() string {
4050	return awsutil.Prettify(s)
4051}
4052
4053// GoString returns the string representation
4054func (s CoverageByTime) GoString() string {
4055	return s.String()
4056}
4057
4058// SetGroups sets the Groups field's value.
4059func (s *CoverageByTime) SetGroups(v []*ReservationCoverageGroup) *CoverageByTime {
4060	s.Groups = v
4061	return s
4062}
4063
4064// SetTimePeriod sets the TimePeriod field's value.
4065func (s *CoverageByTime) SetTimePeriod(v *DateInterval) *CoverageByTime {
4066	s.TimePeriod = v
4067	return s
4068}
4069
4070// SetTotal sets the Total field's value.
4071func (s *CoverageByTime) SetTotal(v *Coverage) *CoverageByTime {
4072	s.Total = v
4073	return s
4074}
4075
4076// How much it costs to run an instance.
4077type CoverageCost struct {
4078	_ struct{} `type:"structure"`
4079
4080	// How much an On-Demand Instance costs.
4081	OnDemandCost *string `type:"string"`
4082}
4083
4084// String returns the string representation
4085func (s CoverageCost) String() string {
4086	return awsutil.Prettify(s)
4087}
4088
4089// GoString returns the string representation
4090func (s CoverageCost) GoString() string {
4091	return s.String()
4092}
4093
4094// SetOnDemandCost sets the OnDemandCost field's value.
4095func (s *CoverageCost) SetOnDemandCost(v string) *CoverageCost {
4096	s.OnDemandCost = &v
4097	return s
4098}
4099
4100// How long a running instance either used a reservation or was On-Demand.
4101type CoverageHours struct {
4102	_ struct{} `type:"structure"`
4103
4104	// The percentage of instance hours that a reservation covered.
4105	CoverageHoursPercentage *string `type:"string"`
4106
4107	// The number of instance running hours that On-Demand Instances covered.
4108	OnDemandHours *string `type:"string"`
4109
4110	// The number of instance running hours that reservations covered.
4111	ReservedHours *string `type:"string"`
4112
4113	// The total instance usage, in hours.
4114	TotalRunningHours *string `type:"string"`
4115}
4116
4117// String returns the string representation
4118func (s CoverageHours) String() string {
4119	return awsutil.Prettify(s)
4120}
4121
4122// GoString returns the string representation
4123func (s CoverageHours) GoString() string {
4124	return s.String()
4125}
4126
4127// SetCoverageHoursPercentage sets the CoverageHoursPercentage field's value.
4128func (s *CoverageHours) SetCoverageHoursPercentage(v string) *CoverageHours {
4129	s.CoverageHoursPercentage = &v
4130	return s
4131}
4132
4133// SetOnDemandHours sets the OnDemandHours field's value.
4134func (s *CoverageHours) SetOnDemandHours(v string) *CoverageHours {
4135	s.OnDemandHours = &v
4136	return s
4137}
4138
4139// SetReservedHours sets the ReservedHours field's value.
4140func (s *CoverageHours) SetReservedHours(v string) *CoverageHours {
4141	s.ReservedHours = &v
4142	return s
4143}
4144
4145// SetTotalRunningHours sets the TotalRunningHours field's value.
4146func (s *CoverageHours) SetTotalRunningHours(v string) *CoverageHours {
4147	s.TotalRunningHours = &v
4148	return s
4149}
4150
4151// The amount of instance usage, in normalized units. You can use normalized
4152// units to see your EC2 usage for multiple sizes of instances in a uniform
4153// way. For example, suppose that you run an xlarge instance and a 2xlarge instance.
4154// If you run both instances for the same amount of time, the 2xlarge instance
4155// uses twice as much of your reservation as the xlarge instance, even though
4156// both instances show only one instance-hour. When you use normalized units
4157// instead of instance-hours, the xlarge instance used 8 normalized units, and
4158// the 2xlarge instance used 16 normalized units.
4159//
4160// For more information, see Modifying Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html)
4161// in the Amazon Elastic Compute Cloud User Guide for Linux Instances.
4162type CoverageNormalizedUnits struct {
4163	_ struct{} `type:"structure"`
4164
4165	// The percentage of your used instance normalized units that a reservation
4166	// covers.
4167	CoverageNormalizedUnitsPercentage *string `type:"string"`
4168
4169	// The number of normalized units that are covered by On-Demand Instances instead
4170	// of a reservation.
4171	OnDemandNormalizedUnits *string `type:"string"`
4172
4173	// The number of normalized units that a reservation covers.
4174	ReservedNormalizedUnits *string `type:"string"`
4175
4176	// The total number of normalized units that you used.
4177	TotalRunningNormalizedUnits *string `type:"string"`
4178}
4179
4180// String returns the string representation
4181func (s CoverageNormalizedUnits) String() string {
4182	return awsutil.Prettify(s)
4183}
4184
4185// GoString returns the string representation
4186func (s CoverageNormalizedUnits) GoString() string {
4187	return s.String()
4188}
4189
4190// SetCoverageNormalizedUnitsPercentage sets the CoverageNormalizedUnitsPercentage field's value.
4191func (s *CoverageNormalizedUnits) SetCoverageNormalizedUnitsPercentage(v string) *CoverageNormalizedUnits {
4192	s.CoverageNormalizedUnitsPercentage = &v
4193	return s
4194}
4195
4196// SetOnDemandNormalizedUnits sets the OnDemandNormalizedUnits field's value.
4197func (s *CoverageNormalizedUnits) SetOnDemandNormalizedUnits(v string) *CoverageNormalizedUnits {
4198	s.OnDemandNormalizedUnits = &v
4199	return s
4200}
4201
4202// SetReservedNormalizedUnits sets the ReservedNormalizedUnits field's value.
4203func (s *CoverageNormalizedUnits) SetReservedNormalizedUnits(v string) *CoverageNormalizedUnits {
4204	s.ReservedNormalizedUnits = &v
4205	return s
4206}
4207
4208// SetTotalRunningNormalizedUnits sets the TotalRunningNormalizedUnits field's value.
4209func (s *CoverageNormalizedUnits) SetTotalRunningNormalizedUnits(v string) *CoverageNormalizedUnits {
4210	s.TotalRunningNormalizedUnits = &v
4211	return s
4212}
4213
4214type CreateAnomalyMonitorInput struct {
4215	_ struct{} `type:"structure"`
4216
4217	// The cost anomaly detection monitor object that you want to create.
4218	//
4219	// AnomalyMonitor is a required field
4220	AnomalyMonitor *AnomalyMonitor `type:"structure" required:"true"`
4221}
4222
4223// String returns the string representation
4224func (s CreateAnomalyMonitorInput) String() string {
4225	return awsutil.Prettify(s)
4226}
4227
4228// GoString returns the string representation
4229func (s CreateAnomalyMonitorInput) GoString() string {
4230	return s.String()
4231}
4232
4233// Validate inspects the fields of the type to determine if they are valid.
4234func (s *CreateAnomalyMonitorInput) Validate() error {
4235	invalidParams := request.ErrInvalidParams{Context: "CreateAnomalyMonitorInput"}
4236	if s.AnomalyMonitor == nil {
4237		invalidParams.Add(request.NewErrParamRequired("AnomalyMonitor"))
4238	}
4239	if s.AnomalyMonitor != nil {
4240		if err := s.AnomalyMonitor.Validate(); err != nil {
4241			invalidParams.AddNested("AnomalyMonitor", err.(request.ErrInvalidParams))
4242		}
4243	}
4244
4245	if invalidParams.Len() > 0 {
4246		return invalidParams
4247	}
4248	return nil
4249}
4250
4251// SetAnomalyMonitor sets the AnomalyMonitor field's value.
4252func (s *CreateAnomalyMonitorInput) SetAnomalyMonitor(v *AnomalyMonitor) *CreateAnomalyMonitorInput {
4253	s.AnomalyMonitor = v
4254	return s
4255}
4256
4257type CreateAnomalyMonitorOutput struct {
4258	_ struct{} `type:"structure"`
4259
4260	// The unique identifier of your newly created cost anomaly detection monitor.
4261	//
4262	// MonitorArn is a required field
4263	MonitorArn *string `type:"string" required:"true"`
4264}
4265
4266// String returns the string representation
4267func (s CreateAnomalyMonitorOutput) String() string {
4268	return awsutil.Prettify(s)
4269}
4270
4271// GoString returns the string representation
4272func (s CreateAnomalyMonitorOutput) GoString() string {
4273	return s.String()
4274}
4275
4276// SetMonitorArn sets the MonitorArn field's value.
4277func (s *CreateAnomalyMonitorOutput) SetMonitorArn(v string) *CreateAnomalyMonitorOutput {
4278	s.MonitorArn = &v
4279	return s
4280}
4281
4282type CreateAnomalySubscriptionInput struct {
4283	_ struct{} `type:"structure"`
4284
4285	// The cost anomaly subscription object that you want to create.
4286	//
4287	// AnomalySubscription is a required field
4288	AnomalySubscription *AnomalySubscription `type:"structure" required:"true"`
4289}
4290
4291// String returns the string representation
4292func (s CreateAnomalySubscriptionInput) String() string {
4293	return awsutil.Prettify(s)
4294}
4295
4296// GoString returns the string representation
4297func (s CreateAnomalySubscriptionInput) GoString() string {
4298	return s.String()
4299}
4300
4301// Validate inspects the fields of the type to determine if they are valid.
4302func (s *CreateAnomalySubscriptionInput) Validate() error {
4303	invalidParams := request.ErrInvalidParams{Context: "CreateAnomalySubscriptionInput"}
4304	if s.AnomalySubscription == nil {
4305		invalidParams.Add(request.NewErrParamRequired("AnomalySubscription"))
4306	}
4307	if s.AnomalySubscription != nil {
4308		if err := s.AnomalySubscription.Validate(); err != nil {
4309			invalidParams.AddNested("AnomalySubscription", err.(request.ErrInvalidParams))
4310		}
4311	}
4312
4313	if invalidParams.Len() > 0 {
4314		return invalidParams
4315	}
4316	return nil
4317}
4318
4319// SetAnomalySubscription sets the AnomalySubscription field's value.
4320func (s *CreateAnomalySubscriptionInput) SetAnomalySubscription(v *AnomalySubscription) *CreateAnomalySubscriptionInput {
4321	s.AnomalySubscription = v
4322	return s
4323}
4324
4325type CreateAnomalySubscriptionOutput struct {
4326	_ struct{} `type:"structure"`
4327
4328	// The unique identifier of your newly created cost anomaly subscription.
4329	//
4330	// SubscriptionArn is a required field
4331	SubscriptionArn *string `type:"string" required:"true"`
4332}
4333
4334// String returns the string representation
4335func (s CreateAnomalySubscriptionOutput) String() string {
4336	return awsutil.Prettify(s)
4337}
4338
4339// GoString returns the string representation
4340func (s CreateAnomalySubscriptionOutput) GoString() string {
4341	return s.String()
4342}
4343
4344// SetSubscriptionArn sets the SubscriptionArn field's value.
4345func (s *CreateAnomalySubscriptionOutput) SetSubscriptionArn(v string) *CreateAnomalySubscriptionOutput {
4346	s.SubscriptionArn = &v
4347	return s
4348}
4349
4350type CreateCostCategoryDefinitionInput struct {
4351	_ struct{} `type:"structure"`
4352
4353	// The default value for the cost category.
4354	DefaultValue *string `min:"1" type:"string"`
4355
4356	// The unique name of the Cost Category.
4357	//
4358	// Name is a required field
4359	Name *string `min:"1" type:"string" required:"true"`
4360
4361	// The rule schema version in this particular Cost Category.
4362	//
4363	// RuleVersion is a required field
4364	RuleVersion *string `type:"string" required:"true" enum:"CostCategoryRuleVersion"`
4365
4366	// The Cost Category rules used to categorize costs. For more information, see
4367	// CostCategoryRule (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_CostCategoryRule.html).
4368	//
4369	// Rules is a required field
4370	Rules []*CostCategoryRule `min:"1" type:"list" required:"true"`
4371
4372	// The split charge rules used to allocate your charges between your Cost Category
4373	// values.
4374	SplitChargeRules []*CostCategorySplitChargeRule `min:"1" type:"list"`
4375}
4376
4377// String returns the string representation
4378func (s CreateCostCategoryDefinitionInput) String() string {
4379	return awsutil.Prettify(s)
4380}
4381
4382// GoString returns the string representation
4383func (s CreateCostCategoryDefinitionInput) GoString() string {
4384	return s.String()
4385}
4386
4387// Validate inspects the fields of the type to determine if they are valid.
4388func (s *CreateCostCategoryDefinitionInput) Validate() error {
4389	invalidParams := request.ErrInvalidParams{Context: "CreateCostCategoryDefinitionInput"}
4390	if s.DefaultValue != nil && len(*s.DefaultValue) < 1 {
4391		invalidParams.Add(request.NewErrParamMinLen("DefaultValue", 1))
4392	}
4393	if s.Name == nil {
4394		invalidParams.Add(request.NewErrParamRequired("Name"))
4395	}
4396	if s.Name != nil && len(*s.Name) < 1 {
4397		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
4398	}
4399	if s.RuleVersion == nil {
4400		invalidParams.Add(request.NewErrParamRequired("RuleVersion"))
4401	}
4402	if s.Rules == nil {
4403		invalidParams.Add(request.NewErrParamRequired("Rules"))
4404	}
4405	if s.Rules != nil && len(s.Rules) < 1 {
4406		invalidParams.Add(request.NewErrParamMinLen("Rules", 1))
4407	}
4408	if s.SplitChargeRules != nil && len(s.SplitChargeRules) < 1 {
4409		invalidParams.Add(request.NewErrParamMinLen("SplitChargeRules", 1))
4410	}
4411	if s.Rules != nil {
4412		for i, v := range s.Rules {
4413			if v == nil {
4414				continue
4415			}
4416			if err := v.Validate(); err != nil {
4417				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
4418			}
4419		}
4420	}
4421	if s.SplitChargeRules != nil {
4422		for i, v := range s.SplitChargeRules {
4423			if v == nil {
4424				continue
4425			}
4426			if err := v.Validate(); err != nil {
4427				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SplitChargeRules", i), err.(request.ErrInvalidParams))
4428			}
4429		}
4430	}
4431
4432	if invalidParams.Len() > 0 {
4433		return invalidParams
4434	}
4435	return nil
4436}
4437
4438// SetDefaultValue sets the DefaultValue field's value.
4439func (s *CreateCostCategoryDefinitionInput) SetDefaultValue(v string) *CreateCostCategoryDefinitionInput {
4440	s.DefaultValue = &v
4441	return s
4442}
4443
4444// SetName sets the Name field's value.
4445func (s *CreateCostCategoryDefinitionInput) SetName(v string) *CreateCostCategoryDefinitionInput {
4446	s.Name = &v
4447	return s
4448}
4449
4450// SetRuleVersion sets the RuleVersion field's value.
4451func (s *CreateCostCategoryDefinitionInput) SetRuleVersion(v string) *CreateCostCategoryDefinitionInput {
4452	s.RuleVersion = &v
4453	return s
4454}
4455
4456// SetRules sets the Rules field's value.
4457func (s *CreateCostCategoryDefinitionInput) SetRules(v []*CostCategoryRule) *CreateCostCategoryDefinitionInput {
4458	s.Rules = v
4459	return s
4460}
4461
4462// SetSplitChargeRules sets the SplitChargeRules field's value.
4463func (s *CreateCostCategoryDefinitionInput) SetSplitChargeRules(v []*CostCategorySplitChargeRule) *CreateCostCategoryDefinitionInput {
4464	s.SplitChargeRules = v
4465	return s
4466}
4467
4468type CreateCostCategoryDefinitionOutput struct {
4469	_ struct{} `type:"structure"`
4470
4471	// The unique identifier for your newly created Cost Category.
4472	CostCategoryArn *string `min:"20" type:"string"`
4473
4474	// The Cost Category's effective start date.
4475	EffectiveStart *string `min:"20" type:"string"`
4476}
4477
4478// String returns the string representation
4479func (s CreateCostCategoryDefinitionOutput) String() string {
4480	return awsutil.Prettify(s)
4481}
4482
4483// GoString returns the string representation
4484func (s CreateCostCategoryDefinitionOutput) GoString() string {
4485	return s.String()
4486}
4487
4488// SetCostCategoryArn sets the CostCategoryArn field's value.
4489func (s *CreateCostCategoryDefinitionOutput) SetCostCategoryArn(v string) *CreateCostCategoryDefinitionOutput {
4490	s.CostCategoryArn = &v
4491	return s
4492}
4493
4494// SetEffectiveStart sets the EffectiveStart field's value.
4495func (s *CreateCostCategoryDefinitionOutput) SetEffectiveStart(v string) *CreateCostCategoryDefinitionOutput {
4496	s.EffectiveStart = &v
4497	return s
4498}
4499
4500// Context about the current instance.
4501type CurrentInstance struct {
4502	_ struct{} `type:"structure"`
4503
4504	// The currency code that Amazon Web Services used to calculate the costs for
4505	// this instance.
4506	CurrencyCode *string `type:"string"`
4507
4508	// The name that you given an instance. This field shows as blank if you haven't
4509	// given the instance a name.
4510	InstanceName *string `type:"string"`
4511
4512	// The current On-Demand cost of operating this instance on a monthly basis.
4513	MonthlyCost *string `type:"string"`
4514
4515	// The number of hours during the lookback period that's billed at On-Demand
4516	// rates.
4517	OnDemandHoursInLookbackPeriod *string `type:"string"`
4518
4519	// The number of hours during the lookback period that's covered by reservations.
4520	ReservationCoveredHoursInLookbackPeriod *string `type:"string"`
4521
4522	// Details about the resource and utilization.
4523	ResourceDetails *ResourceDetails `type:"structure"`
4524
4525	// Resource ID of the current instance.
4526	ResourceId *string `type:"string"`
4527
4528	// Utilization information of the current instance during the lookback period.
4529	ResourceUtilization *ResourceUtilization `type:"structure"`
4530
4531	// The number of hours during the lookback period that's covered by Savings
4532	// Plans.
4533	SavingsPlansCoveredHoursInLookbackPeriod *string `type:"string"`
4534
4535	// Cost allocation resource tags that are applied to the instance.
4536	Tags []*TagValues `type:"list"`
4537
4538	// The total number of hours that the instance ran during the lookback period.
4539	TotalRunningHoursInLookbackPeriod *string `type:"string"`
4540}
4541
4542// String returns the string representation
4543func (s CurrentInstance) String() string {
4544	return awsutil.Prettify(s)
4545}
4546
4547// GoString returns the string representation
4548func (s CurrentInstance) GoString() string {
4549	return s.String()
4550}
4551
4552// SetCurrencyCode sets the CurrencyCode field's value.
4553func (s *CurrentInstance) SetCurrencyCode(v string) *CurrentInstance {
4554	s.CurrencyCode = &v
4555	return s
4556}
4557
4558// SetInstanceName sets the InstanceName field's value.
4559func (s *CurrentInstance) SetInstanceName(v string) *CurrentInstance {
4560	s.InstanceName = &v
4561	return s
4562}
4563
4564// SetMonthlyCost sets the MonthlyCost field's value.
4565func (s *CurrentInstance) SetMonthlyCost(v string) *CurrentInstance {
4566	s.MonthlyCost = &v
4567	return s
4568}
4569
4570// SetOnDemandHoursInLookbackPeriod sets the OnDemandHoursInLookbackPeriod field's value.
4571func (s *CurrentInstance) SetOnDemandHoursInLookbackPeriod(v string) *CurrentInstance {
4572	s.OnDemandHoursInLookbackPeriod = &v
4573	return s
4574}
4575
4576// SetReservationCoveredHoursInLookbackPeriod sets the ReservationCoveredHoursInLookbackPeriod field's value.
4577func (s *CurrentInstance) SetReservationCoveredHoursInLookbackPeriod(v string) *CurrentInstance {
4578	s.ReservationCoveredHoursInLookbackPeriod = &v
4579	return s
4580}
4581
4582// SetResourceDetails sets the ResourceDetails field's value.
4583func (s *CurrentInstance) SetResourceDetails(v *ResourceDetails) *CurrentInstance {
4584	s.ResourceDetails = v
4585	return s
4586}
4587
4588// SetResourceId sets the ResourceId field's value.
4589func (s *CurrentInstance) SetResourceId(v string) *CurrentInstance {
4590	s.ResourceId = &v
4591	return s
4592}
4593
4594// SetResourceUtilization sets the ResourceUtilization field's value.
4595func (s *CurrentInstance) SetResourceUtilization(v *ResourceUtilization) *CurrentInstance {
4596	s.ResourceUtilization = v
4597	return s
4598}
4599
4600// SetSavingsPlansCoveredHoursInLookbackPeriod sets the SavingsPlansCoveredHoursInLookbackPeriod field's value.
4601func (s *CurrentInstance) SetSavingsPlansCoveredHoursInLookbackPeriod(v string) *CurrentInstance {
4602	s.SavingsPlansCoveredHoursInLookbackPeriod = &v
4603	return s
4604}
4605
4606// SetTags sets the Tags field's value.
4607func (s *CurrentInstance) SetTags(v []*TagValues) *CurrentInstance {
4608	s.Tags = v
4609	return s
4610}
4611
4612// SetTotalRunningHoursInLookbackPeriod sets the TotalRunningHoursInLookbackPeriod field's value.
4613func (s *CurrentInstance) SetTotalRunningHoursInLookbackPeriod(v string) *CurrentInstance {
4614	s.TotalRunningHoursInLookbackPeriod = &v
4615	return s
4616}
4617
4618// The requested data is unavailable.
4619type DataUnavailableException struct {
4620	_            struct{}                  `type:"structure"`
4621	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
4622
4623	Message_ *string `locationName:"Message" type:"string"`
4624}
4625
4626// String returns the string representation
4627func (s DataUnavailableException) String() string {
4628	return awsutil.Prettify(s)
4629}
4630
4631// GoString returns the string representation
4632func (s DataUnavailableException) GoString() string {
4633	return s.String()
4634}
4635
4636func newErrorDataUnavailableException(v protocol.ResponseMetadata) error {
4637	return &DataUnavailableException{
4638		RespMetadata: v,
4639	}
4640}
4641
4642// Code returns the exception type name.
4643func (s *DataUnavailableException) Code() string {
4644	return "DataUnavailableException"
4645}
4646
4647// Message returns the exception's message.
4648func (s *DataUnavailableException) Message() string {
4649	if s.Message_ != nil {
4650		return *s.Message_
4651	}
4652	return ""
4653}
4654
4655// OrigErr always returns nil, satisfies awserr.Error interface.
4656func (s *DataUnavailableException) OrigErr() error {
4657	return nil
4658}
4659
4660func (s *DataUnavailableException) Error() string {
4661	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
4662}
4663
4664// Status code returns the HTTP status code for the request's response error.
4665func (s *DataUnavailableException) StatusCode() int {
4666	return s.RespMetadata.StatusCode
4667}
4668
4669// RequestID returns the service's response RequestID for request.
4670func (s *DataUnavailableException) RequestID() string {
4671	return s.RespMetadata.RequestID
4672}
4673
4674// The time period of the request.
4675type DateInterval struct {
4676	_ struct{} `type:"structure"`
4677
4678	// The end of the time period. The end date is exclusive. For example, if end
4679	// is 2017-05-01, Amazon Web Services retrieves cost and usage data from the
4680	// start date up to, but not including, 2017-05-01.
4681	//
4682	// End is a required field
4683	End *string `type:"string" required:"true"`
4684
4685	// The beginning of the time period. The start date is inclusive. For example,
4686	// if start is 2017-01-01, Amazon Web Services retrieves cost and usage data
4687	// starting at 2017-01-01 up to the end date. The start date must be equal to
4688	// or no later than the current date to avoid a validation error.
4689	//
4690	// Start is a required field
4691	Start *string `type:"string" required:"true"`
4692}
4693
4694// String returns the string representation
4695func (s DateInterval) String() string {
4696	return awsutil.Prettify(s)
4697}
4698
4699// GoString returns the string representation
4700func (s DateInterval) GoString() string {
4701	return s.String()
4702}
4703
4704// Validate inspects the fields of the type to determine if they are valid.
4705func (s *DateInterval) Validate() error {
4706	invalidParams := request.ErrInvalidParams{Context: "DateInterval"}
4707	if s.End == nil {
4708		invalidParams.Add(request.NewErrParamRequired("End"))
4709	}
4710	if s.Start == nil {
4711		invalidParams.Add(request.NewErrParamRequired("Start"))
4712	}
4713
4714	if invalidParams.Len() > 0 {
4715		return invalidParams
4716	}
4717	return nil
4718}
4719
4720// SetEnd sets the End field's value.
4721func (s *DateInterval) SetEnd(v string) *DateInterval {
4722	s.End = &v
4723	return s
4724}
4725
4726// SetStart sets the Start field's value.
4727func (s *DateInterval) SetStart(v string) *DateInterval {
4728	s.Start = &v
4729	return s
4730}
4731
4732type DeleteAnomalyMonitorInput struct {
4733	_ struct{} `type:"structure"`
4734
4735	// The unique identifier of the cost anomaly monitor that you want to delete.
4736	//
4737	// MonitorArn is a required field
4738	MonitorArn *string `type:"string" required:"true"`
4739}
4740
4741// String returns the string representation
4742func (s DeleteAnomalyMonitorInput) String() string {
4743	return awsutil.Prettify(s)
4744}
4745
4746// GoString returns the string representation
4747func (s DeleteAnomalyMonitorInput) GoString() string {
4748	return s.String()
4749}
4750
4751// Validate inspects the fields of the type to determine if they are valid.
4752func (s *DeleteAnomalyMonitorInput) Validate() error {
4753	invalidParams := request.ErrInvalidParams{Context: "DeleteAnomalyMonitorInput"}
4754	if s.MonitorArn == nil {
4755		invalidParams.Add(request.NewErrParamRequired("MonitorArn"))
4756	}
4757
4758	if invalidParams.Len() > 0 {
4759		return invalidParams
4760	}
4761	return nil
4762}
4763
4764// SetMonitorArn sets the MonitorArn field's value.
4765func (s *DeleteAnomalyMonitorInput) SetMonitorArn(v string) *DeleteAnomalyMonitorInput {
4766	s.MonitorArn = &v
4767	return s
4768}
4769
4770type DeleteAnomalyMonitorOutput struct {
4771	_ struct{} `type:"structure"`
4772}
4773
4774// String returns the string representation
4775func (s DeleteAnomalyMonitorOutput) String() string {
4776	return awsutil.Prettify(s)
4777}
4778
4779// GoString returns the string representation
4780func (s DeleteAnomalyMonitorOutput) GoString() string {
4781	return s.String()
4782}
4783
4784type DeleteAnomalySubscriptionInput struct {
4785	_ struct{} `type:"structure"`
4786
4787	// The unique identifier of the cost anomaly subscription that you want to delete.
4788	//
4789	// SubscriptionArn is a required field
4790	SubscriptionArn *string `type:"string" required:"true"`
4791}
4792
4793// String returns the string representation
4794func (s DeleteAnomalySubscriptionInput) String() string {
4795	return awsutil.Prettify(s)
4796}
4797
4798// GoString returns the string representation
4799func (s DeleteAnomalySubscriptionInput) GoString() string {
4800	return s.String()
4801}
4802
4803// Validate inspects the fields of the type to determine if they are valid.
4804func (s *DeleteAnomalySubscriptionInput) Validate() error {
4805	invalidParams := request.ErrInvalidParams{Context: "DeleteAnomalySubscriptionInput"}
4806	if s.SubscriptionArn == nil {
4807		invalidParams.Add(request.NewErrParamRequired("SubscriptionArn"))
4808	}
4809
4810	if invalidParams.Len() > 0 {
4811		return invalidParams
4812	}
4813	return nil
4814}
4815
4816// SetSubscriptionArn sets the SubscriptionArn field's value.
4817func (s *DeleteAnomalySubscriptionInput) SetSubscriptionArn(v string) *DeleteAnomalySubscriptionInput {
4818	s.SubscriptionArn = &v
4819	return s
4820}
4821
4822type DeleteAnomalySubscriptionOutput struct {
4823	_ struct{} `type:"structure"`
4824}
4825
4826// String returns the string representation
4827func (s DeleteAnomalySubscriptionOutput) String() string {
4828	return awsutil.Prettify(s)
4829}
4830
4831// GoString returns the string representation
4832func (s DeleteAnomalySubscriptionOutput) GoString() string {
4833	return s.String()
4834}
4835
4836type DeleteCostCategoryDefinitionInput struct {
4837	_ struct{} `type:"structure"`
4838
4839	// The unique identifier for your Cost Category.
4840	//
4841	// CostCategoryArn is a required field
4842	CostCategoryArn *string `min:"20" type:"string" required:"true"`
4843}
4844
4845// String returns the string representation
4846func (s DeleteCostCategoryDefinitionInput) String() string {
4847	return awsutil.Prettify(s)
4848}
4849
4850// GoString returns the string representation
4851func (s DeleteCostCategoryDefinitionInput) GoString() string {
4852	return s.String()
4853}
4854
4855// Validate inspects the fields of the type to determine if they are valid.
4856func (s *DeleteCostCategoryDefinitionInput) Validate() error {
4857	invalidParams := request.ErrInvalidParams{Context: "DeleteCostCategoryDefinitionInput"}
4858	if s.CostCategoryArn == nil {
4859		invalidParams.Add(request.NewErrParamRequired("CostCategoryArn"))
4860	}
4861	if s.CostCategoryArn != nil && len(*s.CostCategoryArn) < 20 {
4862		invalidParams.Add(request.NewErrParamMinLen("CostCategoryArn", 20))
4863	}
4864
4865	if invalidParams.Len() > 0 {
4866		return invalidParams
4867	}
4868	return nil
4869}
4870
4871// SetCostCategoryArn sets the CostCategoryArn field's value.
4872func (s *DeleteCostCategoryDefinitionInput) SetCostCategoryArn(v string) *DeleteCostCategoryDefinitionInput {
4873	s.CostCategoryArn = &v
4874	return s
4875}
4876
4877type DeleteCostCategoryDefinitionOutput struct {
4878	_ struct{} `type:"structure"`
4879
4880	// The unique identifier for your Cost Category.
4881	CostCategoryArn *string `min:"20" type:"string"`
4882
4883	// The effective end date of the Cost Category as a result of deleting it. No
4884	// costs after this date will be categorized by the deleted Cost Category.
4885	EffectiveEnd *string `min:"20" type:"string"`
4886}
4887
4888// String returns the string representation
4889func (s DeleteCostCategoryDefinitionOutput) String() string {
4890	return awsutil.Prettify(s)
4891}
4892
4893// GoString returns the string representation
4894func (s DeleteCostCategoryDefinitionOutput) GoString() string {
4895	return s.String()
4896}
4897
4898// SetCostCategoryArn sets the CostCategoryArn field's value.
4899func (s *DeleteCostCategoryDefinitionOutput) SetCostCategoryArn(v string) *DeleteCostCategoryDefinitionOutput {
4900	s.CostCategoryArn = &v
4901	return s
4902}
4903
4904// SetEffectiveEnd sets the EffectiveEnd field's value.
4905func (s *DeleteCostCategoryDefinitionOutput) SetEffectiveEnd(v string) *DeleteCostCategoryDefinitionOutput {
4906	s.EffectiveEnd = &v
4907	return s
4908}
4909
4910type DescribeCostCategoryDefinitionInput struct {
4911	_ struct{} `type:"structure"`
4912
4913	// The unique identifier for your Cost Category.
4914	//
4915	// CostCategoryArn is a required field
4916	CostCategoryArn *string `min:"20" type:"string" required:"true"`
4917
4918	// The date when the Cost Category was effective.
4919	EffectiveOn *string `min:"20" type:"string"`
4920}
4921
4922// String returns the string representation
4923func (s DescribeCostCategoryDefinitionInput) String() string {
4924	return awsutil.Prettify(s)
4925}
4926
4927// GoString returns the string representation
4928func (s DescribeCostCategoryDefinitionInput) GoString() string {
4929	return s.String()
4930}
4931
4932// Validate inspects the fields of the type to determine if they are valid.
4933func (s *DescribeCostCategoryDefinitionInput) Validate() error {
4934	invalidParams := request.ErrInvalidParams{Context: "DescribeCostCategoryDefinitionInput"}
4935	if s.CostCategoryArn == nil {
4936		invalidParams.Add(request.NewErrParamRequired("CostCategoryArn"))
4937	}
4938	if s.CostCategoryArn != nil && len(*s.CostCategoryArn) < 20 {
4939		invalidParams.Add(request.NewErrParamMinLen("CostCategoryArn", 20))
4940	}
4941	if s.EffectiveOn != nil && len(*s.EffectiveOn) < 20 {
4942		invalidParams.Add(request.NewErrParamMinLen("EffectiveOn", 20))
4943	}
4944
4945	if invalidParams.Len() > 0 {
4946		return invalidParams
4947	}
4948	return nil
4949}
4950
4951// SetCostCategoryArn sets the CostCategoryArn field's value.
4952func (s *DescribeCostCategoryDefinitionInput) SetCostCategoryArn(v string) *DescribeCostCategoryDefinitionInput {
4953	s.CostCategoryArn = &v
4954	return s
4955}
4956
4957// SetEffectiveOn sets the EffectiveOn field's value.
4958func (s *DescribeCostCategoryDefinitionInput) SetEffectiveOn(v string) *DescribeCostCategoryDefinitionInput {
4959	s.EffectiveOn = &v
4960	return s
4961}
4962
4963type DescribeCostCategoryDefinitionOutput struct {
4964	_ struct{} `type:"structure"`
4965
4966	// The structure of Cost Categories. This includes detailed metadata and the
4967	// set of rules for the CostCategory object.
4968	CostCategory *CostCategory `type:"structure"`
4969}
4970
4971// String returns the string representation
4972func (s DescribeCostCategoryDefinitionOutput) String() string {
4973	return awsutil.Prettify(s)
4974}
4975
4976// GoString returns the string representation
4977func (s DescribeCostCategoryDefinitionOutput) GoString() string {
4978	return s.String()
4979}
4980
4981// SetCostCategory sets the CostCategory field's value.
4982func (s *DescribeCostCategoryDefinitionOutput) SetCostCategory(v *CostCategory) *DescribeCostCategoryDefinitionOutput {
4983	s.CostCategory = v
4984	return s
4985}
4986
4987// The metadata that you can use to filter and group your results. You can use
4988// GetDimensionValues to find specific values.
4989type DimensionValues struct {
4990	_ struct{} `type:"structure"`
4991
4992	// The names of the metadata types that you can use to filter and group your
4993	// results. For example, AZ returns a list of Availability Zones.
4994	Key *string `type:"string" enum:"Dimension"`
4995
4996	// The match options that you can use to filter your results. MatchOptions is
4997	// only applicable for actions related to Cost Category. The default values
4998	// for MatchOptions are EQUALS and CASE_SENSITIVE.
4999	MatchOptions []*string `type:"list"`
5000
5001	// The metadata values that you can use to filter and group your results. You
5002	// can use GetDimensionValues to find specific values.
5003	Values []*string `type:"list"`
5004}
5005
5006// String returns the string representation
5007func (s DimensionValues) String() string {
5008	return awsutil.Prettify(s)
5009}
5010
5011// GoString returns the string representation
5012func (s DimensionValues) GoString() string {
5013	return s.String()
5014}
5015
5016// SetKey sets the Key field's value.
5017func (s *DimensionValues) SetKey(v string) *DimensionValues {
5018	s.Key = &v
5019	return s
5020}
5021
5022// SetMatchOptions sets the MatchOptions field's value.
5023func (s *DimensionValues) SetMatchOptions(v []*string) *DimensionValues {
5024	s.MatchOptions = v
5025	return s
5026}
5027
5028// SetValues sets the Values field's value.
5029func (s *DimensionValues) SetValues(v []*string) *DimensionValues {
5030	s.Values = v
5031	return s
5032}
5033
5034// The metadata of a specific type that you can use to filter and group your
5035// results. You can use GetDimensionValues to find specific values.
5036type DimensionValuesWithAttributes struct {
5037	_ struct{} `type:"structure"`
5038
5039	// The attribute that applies to a specific Dimension.
5040	Attributes map[string]*string `type:"map"`
5041
5042	// The value of a dimension with a specific attribute.
5043	Value *string `type:"string"`
5044}
5045
5046// String returns the string representation
5047func (s DimensionValuesWithAttributes) String() string {
5048	return awsutil.Prettify(s)
5049}
5050
5051// GoString returns the string representation
5052func (s DimensionValuesWithAttributes) GoString() string {
5053	return s.String()
5054}
5055
5056// SetAttributes sets the Attributes field's value.
5057func (s *DimensionValuesWithAttributes) SetAttributes(v map[string]*string) *DimensionValuesWithAttributes {
5058	s.Attributes = v
5059	return s
5060}
5061
5062// SetValue sets the Value field's value.
5063func (s *DimensionValuesWithAttributes) SetValue(v string) *DimensionValuesWithAttributes {
5064	s.Value = &v
5065	return s
5066}
5067
5068// The field that contains a list of disk (local storage) metrics that are associated
5069// with the current instance.
5070type DiskResourceUtilization struct {
5071	_ struct{} `type:"structure"`
5072
5073	// The maximum read throughput operations per second.
5074	DiskReadBytesPerSecond *string `type:"string"`
5075
5076	// The maximum number of read operations per second.
5077	DiskReadOpsPerSecond *string `type:"string"`
5078
5079	// The maximum write throughput operations per second.
5080	DiskWriteBytesPerSecond *string `type:"string"`
5081
5082	// The maximum number of write operations per second.
5083	DiskWriteOpsPerSecond *string `type:"string"`
5084}
5085
5086// String returns the string representation
5087func (s DiskResourceUtilization) String() string {
5088	return awsutil.Prettify(s)
5089}
5090
5091// GoString returns the string representation
5092func (s DiskResourceUtilization) GoString() string {
5093	return s.String()
5094}
5095
5096// SetDiskReadBytesPerSecond sets the DiskReadBytesPerSecond field's value.
5097func (s *DiskResourceUtilization) SetDiskReadBytesPerSecond(v string) *DiskResourceUtilization {
5098	s.DiskReadBytesPerSecond = &v
5099	return s
5100}
5101
5102// SetDiskReadOpsPerSecond sets the DiskReadOpsPerSecond field's value.
5103func (s *DiskResourceUtilization) SetDiskReadOpsPerSecond(v string) *DiskResourceUtilization {
5104	s.DiskReadOpsPerSecond = &v
5105	return s
5106}
5107
5108// SetDiskWriteBytesPerSecond sets the DiskWriteBytesPerSecond field's value.
5109func (s *DiskResourceUtilization) SetDiskWriteBytesPerSecond(v string) *DiskResourceUtilization {
5110	s.DiskWriteBytesPerSecond = &v
5111	return s
5112}
5113
5114// SetDiskWriteOpsPerSecond sets the DiskWriteOpsPerSecond field's value.
5115func (s *DiskResourceUtilization) SetDiskWriteOpsPerSecond(v string) *DiskResourceUtilization {
5116	s.DiskWriteOpsPerSecond = &v
5117	return s
5118}
5119
5120// The EBS field that contains a list of EBS metrics that are associated with
5121// the current instance.
5122type EBSResourceUtilization struct {
5123	_ struct{} `type:"structure"`
5124
5125	// The maximum size of read operations per second
5126	EbsReadBytesPerSecond *string `type:"string"`
5127
5128	// The maximum number of read operations per second.
5129	EbsReadOpsPerSecond *string `type:"string"`
5130
5131	// The maximum size of write operations per second.
5132	EbsWriteBytesPerSecond *string `type:"string"`
5133
5134	// The maximum number of write operations per second.
5135	EbsWriteOpsPerSecond *string `type:"string"`
5136}
5137
5138// String returns the string representation
5139func (s EBSResourceUtilization) String() string {
5140	return awsutil.Prettify(s)
5141}
5142
5143// GoString returns the string representation
5144func (s EBSResourceUtilization) GoString() string {
5145	return s.String()
5146}
5147
5148// SetEbsReadBytesPerSecond sets the EbsReadBytesPerSecond field's value.
5149func (s *EBSResourceUtilization) SetEbsReadBytesPerSecond(v string) *EBSResourceUtilization {
5150	s.EbsReadBytesPerSecond = &v
5151	return s
5152}
5153
5154// SetEbsReadOpsPerSecond sets the EbsReadOpsPerSecond field's value.
5155func (s *EBSResourceUtilization) SetEbsReadOpsPerSecond(v string) *EBSResourceUtilization {
5156	s.EbsReadOpsPerSecond = &v
5157	return s
5158}
5159
5160// SetEbsWriteBytesPerSecond sets the EbsWriteBytesPerSecond field's value.
5161func (s *EBSResourceUtilization) SetEbsWriteBytesPerSecond(v string) *EBSResourceUtilization {
5162	s.EbsWriteBytesPerSecond = &v
5163	return s
5164}
5165
5166// SetEbsWriteOpsPerSecond sets the EbsWriteOpsPerSecond field's value.
5167func (s *EBSResourceUtilization) SetEbsWriteOpsPerSecond(v string) *EBSResourceUtilization {
5168	s.EbsWriteOpsPerSecond = &v
5169	return s
5170}
5171
5172// Details about the Amazon EC2 instances that Amazon Web Services recommends
5173// that you purchase.
5174type EC2InstanceDetails struct {
5175	_ struct{} `type:"structure"`
5176
5177	// The Availability Zone of the recommended reservation.
5178	AvailabilityZone *string `type:"string"`
5179
5180	// Determines whether the recommendation is for a current-generation instance.
5181	CurrentGeneration *bool `type:"boolean"`
5182
5183	// The instance family of the recommended reservation.
5184	Family *string `type:"string"`
5185
5186	// The type of instance that Amazon Web Services recommends.
5187	InstanceType *string `type:"string"`
5188
5189	// The platform of the recommended reservation. The platform is the specific
5190	// combination of operating system, license model, and software on an instance.
5191	Platform *string `type:"string"`
5192
5193	// The Amazon Web Services Region of the recommended reservation.
5194	Region *string `type:"string"`
5195
5196	// Determines whether the recommended reservation is size flexible.
5197	SizeFlexEligible *bool `type:"boolean"`
5198
5199	// Determines whether the recommended reservation is dedicated or shared.
5200	Tenancy *string `type:"string"`
5201}
5202
5203// String returns the string representation
5204func (s EC2InstanceDetails) String() string {
5205	return awsutil.Prettify(s)
5206}
5207
5208// GoString returns the string representation
5209func (s EC2InstanceDetails) GoString() string {
5210	return s.String()
5211}
5212
5213// SetAvailabilityZone sets the AvailabilityZone field's value.
5214func (s *EC2InstanceDetails) SetAvailabilityZone(v string) *EC2InstanceDetails {
5215	s.AvailabilityZone = &v
5216	return s
5217}
5218
5219// SetCurrentGeneration sets the CurrentGeneration field's value.
5220func (s *EC2InstanceDetails) SetCurrentGeneration(v bool) *EC2InstanceDetails {
5221	s.CurrentGeneration = &v
5222	return s
5223}
5224
5225// SetFamily sets the Family field's value.
5226func (s *EC2InstanceDetails) SetFamily(v string) *EC2InstanceDetails {
5227	s.Family = &v
5228	return s
5229}
5230
5231// SetInstanceType sets the InstanceType field's value.
5232func (s *EC2InstanceDetails) SetInstanceType(v string) *EC2InstanceDetails {
5233	s.InstanceType = &v
5234	return s
5235}
5236
5237// SetPlatform sets the Platform field's value.
5238func (s *EC2InstanceDetails) SetPlatform(v string) *EC2InstanceDetails {
5239	s.Platform = &v
5240	return s
5241}
5242
5243// SetRegion sets the Region field's value.
5244func (s *EC2InstanceDetails) SetRegion(v string) *EC2InstanceDetails {
5245	s.Region = &v
5246	return s
5247}
5248
5249// SetSizeFlexEligible sets the SizeFlexEligible field's value.
5250func (s *EC2InstanceDetails) SetSizeFlexEligible(v bool) *EC2InstanceDetails {
5251	s.SizeFlexEligible = &v
5252	return s
5253}
5254
5255// SetTenancy sets the Tenancy field's value.
5256func (s *EC2InstanceDetails) SetTenancy(v string) *EC2InstanceDetails {
5257	s.Tenancy = &v
5258	return s
5259}
5260
5261// Details on the Amazon EC2 Resource.
5262type EC2ResourceDetails struct {
5263	_ struct{} `type:"structure"`
5264
5265	// The hourly public On-Demand rate for the instance type.
5266	HourlyOnDemandRate *string `type:"string"`
5267
5268	// The type of Amazon Web Services instance.
5269	InstanceType *string `type:"string"`
5270
5271	// The memory capacity of the Amazon Web Services instance.
5272	Memory *string `type:"string"`
5273
5274	// The network performance capacity of the Amazon Web Services instance.
5275	NetworkPerformance *string `type:"string"`
5276
5277	// The platform of the Amazon Web Services instance. The platform is the specific
5278	// combination of operating system, license model, and software on an instance.
5279	Platform *string `type:"string"`
5280
5281	// The Amazon Web Services Region of the instance.
5282	Region *string `type:"string"`
5283
5284	// The SKU of the product.
5285	Sku *string `type:"string"`
5286
5287	// The disk storage of the Amazon Web Services instance. This doesn't include
5288	// EBS storage.
5289	Storage *string `type:"string"`
5290
5291	// The number of VCPU cores in the Amazon Web Services instance type.
5292	Vcpu *string `type:"string"`
5293}
5294
5295// String returns the string representation
5296func (s EC2ResourceDetails) String() string {
5297	return awsutil.Prettify(s)
5298}
5299
5300// GoString returns the string representation
5301func (s EC2ResourceDetails) GoString() string {
5302	return s.String()
5303}
5304
5305// SetHourlyOnDemandRate sets the HourlyOnDemandRate field's value.
5306func (s *EC2ResourceDetails) SetHourlyOnDemandRate(v string) *EC2ResourceDetails {
5307	s.HourlyOnDemandRate = &v
5308	return s
5309}
5310
5311// SetInstanceType sets the InstanceType field's value.
5312func (s *EC2ResourceDetails) SetInstanceType(v string) *EC2ResourceDetails {
5313	s.InstanceType = &v
5314	return s
5315}
5316
5317// SetMemory sets the Memory field's value.
5318func (s *EC2ResourceDetails) SetMemory(v string) *EC2ResourceDetails {
5319	s.Memory = &v
5320	return s
5321}
5322
5323// SetNetworkPerformance sets the NetworkPerformance field's value.
5324func (s *EC2ResourceDetails) SetNetworkPerformance(v string) *EC2ResourceDetails {
5325	s.NetworkPerformance = &v
5326	return s
5327}
5328
5329// SetPlatform sets the Platform field's value.
5330func (s *EC2ResourceDetails) SetPlatform(v string) *EC2ResourceDetails {
5331	s.Platform = &v
5332	return s
5333}
5334
5335// SetRegion sets the Region field's value.
5336func (s *EC2ResourceDetails) SetRegion(v string) *EC2ResourceDetails {
5337	s.Region = &v
5338	return s
5339}
5340
5341// SetSku sets the Sku field's value.
5342func (s *EC2ResourceDetails) SetSku(v string) *EC2ResourceDetails {
5343	s.Sku = &v
5344	return s
5345}
5346
5347// SetStorage sets the Storage field's value.
5348func (s *EC2ResourceDetails) SetStorage(v string) *EC2ResourceDetails {
5349	s.Storage = &v
5350	return s
5351}
5352
5353// SetVcpu sets the Vcpu field's value.
5354func (s *EC2ResourceDetails) SetVcpu(v string) *EC2ResourceDetails {
5355	s.Vcpu = &v
5356	return s
5357}
5358
5359// Utilization metrics of the instance.
5360type EC2ResourceUtilization struct {
5361	_ struct{} `type:"structure"`
5362
5363	// The field that contains a list of disk (local storage) metrics that are associated
5364	// with the current instance.
5365	DiskResourceUtilization *DiskResourceUtilization `type:"structure"`
5366
5367	// The EBS field that contains a list of EBS metrics that are associated with
5368	// the current instance.
5369	EBSResourceUtilization *EBSResourceUtilization `type:"structure"`
5370
5371	// The maximum observed or expected CPU utilization of the instance.
5372	MaxCpuUtilizationPercentage *string `type:"string"`
5373
5374	// The maximum observed or expected memory utilization of the instance.
5375	MaxMemoryUtilizationPercentage *string `type:"string"`
5376
5377	// The maximum observed or expected storage utilization of the instance. This
5378	// doesn't include EBS storage.
5379	MaxStorageUtilizationPercentage *string `type:"string"`
5380
5381	// The network field that contains a list of network metrics that are associated
5382	// with the current instance.
5383	NetworkResourceUtilization *NetworkResourceUtilization `type:"structure"`
5384}
5385
5386// String returns the string representation
5387func (s EC2ResourceUtilization) String() string {
5388	return awsutil.Prettify(s)
5389}
5390
5391// GoString returns the string representation
5392func (s EC2ResourceUtilization) GoString() string {
5393	return s.String()
5394}
5395
5396// SetDiskResourceUtilization sets the DiskResourceUtilization field's value.
5397func (s *EC2ResourceUtilization) SetDiskResourceUtilization(v *DiskResourceUtilization) *EC2ResourceUtilization {
5398	s.DiskResourceUtilization = v
5399	return s
5400}
5401
5402// SetEBSResourceUtilization sets the EBSResourceUtilization field's value.
5403func (s *EC2ResourceUtilization) SetEBSResourceUtilization(v *EBSResourceUtilization) *EC2ResourceUtilization {
5404	s.EBSResourceUtilization = v
5405	return s
5406}
5407
5408// SetMaxCpuUtilizationPercentage sets the MaxCpuUtilizationPercentage field's value.
5409func (s *EC2ResourceUtilization) SetMaxCpuUtilizationPercentage(v string) *EC2ResourceUtilization {
5410	s.MaxCpuUtilizationPercentage = &v
5411	return s
5412}
5413
5414// SetMaxMemoryUtilizationPercentage sets the MaxMemoryUtilizationPercentage field's value.
5415func (s *EC2ResourceUtilization) SetMaxMemoryUtilizationPercentage(v string) *EC2ResourceUtilization {
5416	s.MaxMemoryUtilizationPercentage = &v
5417	return s
5418}
5419
5420// SetMaxStorageUtilizationPercentage sets the MaxStorageUtilizationPercentage field's value.
5421func (s *EC2ResourceUtilization) SetMaxStorageUtilizationPercentage(v string) *EC2ResourceUtilization {
5422	s.MaxStorageUtilizationPercentage = &v
5423	return s
5424}
5425
5426// SetNetworkResourceUtilization sets the NetworkResourceUtilization field's value.
5427func (s *EC2ResourceUtilization) SetNetworkResourceUtilization(v *NetworkResourceUtilization) *EC2ResourceUtilization {
5428	s.NetworkResourceUtilization = v
5429	return s
5430}
5431
5432// The Amazon EC2 hardware specifications that you want Amazon Web Services
5433// to provide recommendations for.
5434type EC2Specification struct {
5435	_ struct{} `type:"structure"`
5436
5437	// Indicates whether you want a recommendation for standard or convertible reservations.
5438	OfferingClass *string `type:"string" enum:"OfferingClass"`
5439}
5440
5441// String returns the string representation
5442func (s EC2Specification) String() string {
5443	return awsutil.Prettify(s)
5444}
5445
5446// GoString returns the string representation
5447func (s EC2Specification) GoString() string {
5448	return s.String()
5449}
5450
5451// SetOfferingClass sets the OfferingClass field's value.
5452func (s *EC2Specification) SetOfferingClass(v string) *EC2Specification {
5453	s.OfferingClass = &v
5454	return s
5455}
5456
5457// Details about the Amazon ES instances that Amazon Web Services recommends
5458// that you purchase.
5459type ESInstanceDetails struct {
5460	_ struct{} `type:"structure"`
5461
5462	// Determines whether the recommendation is for a current-generation instance.
5463	CurrentGeneration *bool `type:"boolean"`
5464
5465	// The class of instance that Amazon Web Services recommends.
5466	InstanceClass *string `type:"string"`
5467
5468	// The size of instance that Amazon Web Services recommends.
5469	InstanceSize *string `type:"string"`
5470
5471	// The Amazon Web Services Region of the recommended reservation.
5472	Region *string `type:"string"`
5473
5474	// Determines whether the recommended reservation is size flexible.
5475	SizeFlexEligible *bool `type:"boolean"`
5476}
5477
5478// String returns the string representation
5479func (s ESInstanceDetails) String() string {
5480	return awsutil.Prettify(s)
5481}
5482
5483// GoString returns the string representation
5484func (s ESInstanceDetails) GoString() string {
5485	return s.String()
5486}
5487
5488// SetCurrentGeneration sets the CurrentGeneration field's value.
5489func (s *ESInstanceDetails) SetCurrentGeneration(v bool) *ESInstanceDetails {
5490	s.CurrentGeneration = &v
5491	return s
5492}
5493
5494// SetInstanceClass sets the InstanceClass field's value.
5495func (s *ESInstanceDetails) SetInstanceClass(v string) *ESInstanceDetails {
5496	s.InstanceClass = &v
5497	return s
5498}
5499
5500// SetInstanceSize sets the InstanceSize field's value.
5501func (s *ESInstanceDetails) SetInstanceSize(v string) *ESInstanceDetails {
5502	s.InstanceSize = &v
5503	return s
5504}
5505
5506// SetRegion sets the Region field's value.
5507func (s *ESInstanceDetails) SetRegion(v string) *ESInstanceDetails {
5508	s.Region = &v
5509	return s
5510}
5511
5512// SetSizeFlexEligible sets the SizeFlexEligible field's value.
5513func (s *ESInstanceDetails) SetSizeFlexEligible(v bool) *ESInstanceDetails {
5514	s.SizeFlexEligible = &v
5515	return s
5516}
5517
5518// Details about the Amazon ElastiCache instances that Amazon Web Services recommends
5519// that you purchase.
5520type ElastiCacheInstanceDetails struct {
5521	_ struct{} `type:"structure"`
5522
5523	// Determines whether the recommendation is for a current generation instance.
5524	CurrentGeneration *bool `type:"boolean"`
5525
5526	// The instance family of the recommended reservation.
5527	Family *string `type:"string"`
5528
5529	// The type of node that Amazon Web Services recommends.
5530	NodeType *string `type:"string"`
5531
5532	// The description of the recommended reservation.
5533	ProductDescription *string `type:"string"`
5534
5535	// The Amazon Web Services Region of the recommended reservation.
5536	Region *string `type:"string"`
5537
5538	// Determines whether the recommended reservation is size flexible.
5539	SizeFlexEligible *bool `type:"boolean"`
5540}
5541
5542// String returns the string representation
5543func (s ElastiCacheInstanceDetails) String() string {
5544	return awsutil.Prettify(s)
5545}
5546
5547// GoString returns the string representation
5548func (s ElastiCacheInstanceDetails) GoString() string {
5549	return s.String()
5550}
5551
5552// SetCurrentGeneration sets the CurrentGeneration field's value.
5553func (s *ElastiCacheInstanceDetails) SetCurrentGeneration(v bool) *ElastiCacheInstanceDetails {
5554	s.CurrentGeneration = &v
5555	return s
5556}
5557
5558// SetFamily sets the Family field's value.
5559func (s *ElastiCacheInstanceDetails) SetFamily(v string) *ElastiCacheInstanceDetails {
5560	s.Family = &v
5561	return s
5562}
5563
5564// SetNodeType sets the NodeType field's value.
5565func (s *ElastiCacheInstanceDetails) SetNodeType(v string) *ElastiCacheInstanceDetails {
5566	s.NodeType = &v
5567	return s
5568}
5569
5570// SetProductDescription sets the ProductDescription field's value.
5571func (s *ElastiCacheInstanceDetails) SetProductDescription(v string) *ElastiCacheInstanceDetails {
5572	s.ProductDescription = &v
5573	return s
5574}
5575
5576// SetRegion sets the Region field's value.
5577func (s *ElastiCacheInstanceDetails) SetRegion(v string) *ElastiCacheInstanceDetails {
5578	s.Region = &v
5579	return s
5580}
5581
5582// SetSizeFlexEligible sets the SizeFlexEligible field's value.
5583func (s *ElastiCacheInstanceDetails) SetSizeFlexEligible(v bool) *ElastiCacheInstanceDetails {
5584	s.SizeFlexEligible = &v
5585	return s
5586}
5587
5588// Use Expression to filter by cost or by usage. There are two patterns:
5589//
5590//    * Simple dimension values - You can set the dimension name and values
5591//    for the filters that you plan to use. For example, you can filter for
5592//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
5593//    the Region is a full name (for example, REGION==US East (N. Virginia).
5594//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
5595//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
5596//    are OR'd together to retrieve cost or usage data. You can create Expression
5597//    and DimensionValues objects using either with* methods or set* methods
5598//    in multiple lines.
5599//
5600//    * Compound dimension values with logical operations - You can use multiple
5601//    Expression types and the logical operators AND/OR/NOT to create a list
5602//    of one or more Expression objects. By doing this, you can filter on more
5603//    advanced options. For example, you can filter on ((REGION == us-east-1
5604//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
5605//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
5606//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
5607//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
5608//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
5609//    Expression can have only one operator, the service returns an error if
5610//    more than one is specified. The following example shows an Expression
5611//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
5612//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
5613//
5614// For the GetRightsizingRecommendation action, a combination of OR and NOT
5615// isn't supported. OR isn't supported between different dimensions, or dimensions
5616// and tags. NOT operators aren't supported. Dimensions are also limited to
5617// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
5618//
5619// For the GetReservationPurchaseRecommendation action, only NOT is supported.
5620// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
5621type Expression struct {
5622	_ struct{} `type:"structure"`
5623
5624	// Return results that match both Dimension objects.
5625	And []*Expression `type:"list"`
5626
5627	// The filter that's based on CostCategory values.
5628	CostCategories *CostCategoryValues `type:"structure"`
5629
5630	// The specific Dimension to use for Expression.
5631	Dimensions *DimensionValues `type:"structure"`
5632
5633	// Return results that don't match a Dimension object.
5634	Not *Expression `type:"structure"`
5635
5636	// Return results that match either Dimension object.
5637	Or []*Expression `type:"list"`
5638
5639	// The specific Tag to use for Expression.
5640	Tags *TagValues `type:"structure"`
5641}
5642
5643// String returns the string representation
5644func (s Expression) String() string {
5645	return awsutil.Prettify(s)
5646}
5647
5648// GoString returns the string representation
5649func (s Expression) GoString() string {
5650	return s.String()
5651}
5652
5653// Validate inspects the fields of the type to determine if they are valid.
5654func (s *Expression) Validate() error {
5655	invalidParams := request.ErrInvalidParams{Context: "Expression"}
5656	if s.CostCategories != nil {
5657		if err := s.CostCategories.Validate(); err != nil {
5658			invalidParams.AddNested("CostCategories", err.(request.ErrInvalidParams))
5659		}
5660	}
5661	if s.Not != nil {
5662		if err := s.Not.Validate(); err != nil {
5663			invalidParams.AddNested("Not", err.(request.ErrInvalidParams))
5664		}
5665	}
5666	if s.Or != nil {
5667		for i, v := range s.Or {
5668			if v == nil {
5669				continue
5670			}
5671			if err := v.Validate(); err != nil {
5672				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Or", i), err.(request.ErrInvalidParams))
5673			}
5674		}
5675	}
5676
5677	if invalidParams.Len() > 0 {
5678		return invalidParams
5679	}
5680	return nil
5681}
5682
5683// SetAnd sets the And field's value.
5684func (s *Expression) SetAnd(v []*Expression) *Expression {
5685	s.And = v
5686	return s
5687}
5688
5689// SetCostCategories sets the CostCategories field's value.
5690func (s *Expression) SetCostCategories(v *CostCategoryValues) *Expression {
5691	s.CostCategories = v
5692	return s
5693}
5694
5695// SetDimensions sets the Dimensions field's value.
5696func (s *Expression) SetDimensions(v *DimensionValues) *Expression {
5697	s.Dimensions = v
5698	return s
5699}
5700
5701// SetNot sets the Not field's value.
5702func (s *Expression) SetNot(v *Expression) *Expression {
5703	s.Not = v
5704	return s
5705}
5706
5707// SetOr sets the Or field's value.
5708func (s *Expression) SetOr(v []*Expression) *Expression {
5709	s.Or = v
5710	return s
5711}
5712
5713// SetTags sets the Tags field's value.
5714func (s *Expression) SetTags(v *TagValues) *Expression {
5715	s.Tags = v
5716	return s
5717}
5718
5719// The forecast that's created for your query.
5720type ForecastResult struct {
5721	_ struct{} `type:"structure"`
5722
5723	// The mean value of the forecast.
5724	MeanValue *string `type:"string"`
5725
5726	// The lower limit for the prediction interval.
5727	PredictionIntervalLowerBound *string `type:"string"`
5728
5729	// The upper limit for the prediction interval.
5730	PredictionIntervalUpperBound *string `type:"string"`
5731
5732	// The period of time that the forecast covers.
5733	TimePeriod *DateInterval `type:"structure"`
5734}
5735
5736// String returns the string representation
5737func (s ForecastResult) String() string {
5738	return awsutil.Prettify(s)
5739}
5740
5741// GoString returns the string representation
5742func (s ForecastResult) GoString() string {
5743	return s.String()
5744}
5745
5746// SetMeanValue sets the MeanValue field's value.
5747func (s *ForecastResult) SetMeanValue(v string) *ForecastResult {
5748	s.MeanValue = &v
5749	return s
5750}
5751
5752// SetPredictionIntervalLowerBound sets the PredictionIntervalLowerBound field's value.
5753func (s *ForecastResult) SetPredictionIntervalLowerBound(v string) *ForecastResult {
5754	s.PredictionIntervalLowerBound = &v
5755	return s
5756}
5757
5758// SetPredictionIntervalUpperBound sets the PredictionIntervalUpperBound field's value.
5759func (s *ForecastResult) SetPredictionIntervalUpperBound(v string) *ForecastResult {
5760	s.PredictionIntervalUpperBound = &v
5761	return s
5762}
5763
5764// SetTimePeriod sets the TimePeriod field's value.
5765func (s *ForecastResult) SetTimePeriod(v *DateInterval) *ForecastResult {
5766	s.TimePeriod = v
5767	return s
5768}
5769
5770type GetAnomaliesInput struct {
5771	_ struct{} `type:"structure"`
5772
5773	// Assigns the start and end dates for retrieving cost anomalies. The returned
5774	// anomaly object will have an AnomalyEndDate in the specified time range.
5775	//
5776	// DateInterval is a required field
5777	DateInterval *AnomalyDateInterval `type:"structure" required:"true"`
5778
5779	// Filters anomaly results by the feedback field on the anomaly object.
5780	Feedback *string `type:"string" enum:"AnomalyFeedbackType"`
5781
5782	// The number of entries a paginated response contains.
5783	MaxResults *int64 `type:"integer"`
5784
5785	// Retrieves all of the cost anomalies detected for a specific cost anomaly
5786	// monitor Amazon Resource Name (ARN).
5787	MonitorArn *string `type:"string"`
5788
5789	// The token to retrieve the next set of results. Amazon Web Services provides
5790	// the token when the response from a previous call has more results than the
5791	// maximum page size.
5792	NextPageToken *string `type:"string"`
5793
5794	// Filters anomaly results by the total impact field on the anomaly object.
5795	// For example, you can filter anomalies GREATER_THAN 200.00 to retrieve anomalies,
5796	// with an estimated dollar impact greater than 200.
5797	TotalImpact *TotalImpactFilter `type:"structure"`
5798}
5799
5800// String returns the string representation
5801func (s GetAnomaliesInput) String() string {
5802	return awsutil.Prettify(s)
5803}
5804
5805// GoString returns the string representation
5806func (s GetAnomaliesInput) GoString() string {
5807	return s.String()
5808}
5809
5810// Validate inspects the fields of the type to determine if they are valid.
5811func (s *GetAnomaliesInput) Validate() error {
5812	invalidParams := request.ErrInvalidParams{Context: "GetAnomaliesInput"}
5813	if s.DateInterval == nil {
5814		invalidParams.Add(request.NewErrParamRequired("DateInterval"))
5815	}
5816	if s.DateInterval != nil {
5817		if err := s.DateInterval.Validate(); err != nil {
5818			invalidParams.AddNested("DateInterval", err.(request.ErrInvalidParams))
5819		}
5820	}
5821	if s.TotalImpact != nil {
5822		if err := s.TotalImpact.Validate(); err != nil {
5823			invalidParams.AddNested("TotalImpact", err.(request.ErrInvalidParams))
5824		}
5825	}
5826
5827	if invalidParams.Len() > 0 {
5828		return invalidParams
5829	}
5830	return nil
5831}
5832
5833// SetDateInterval sets the DateInterval field's value.
5834func (s *GetAnomaliesInput) SetDateInterval(v *AnomalyDateInterval) *GetAnomaliesInput {
5835	s.DateInterval = v
5836	return s
5837}
5838
5839// SetFeedback sets the Feedback field's value.
5840func (s *GetAnomaliesInput) SetFeedback(v string) *GetAnomaliesInput {
5841	s.Feedback = &v
5842	return s
5843}
5844
5845// SetMaxResults sets the MaxResults field's value.
5846func (s *GetAnomaliesInput) SetMaxResults(v int64) *GetAnomaliesInput {
5847	s.MaxResults = &v
5848	return s
5849}
5850
5851// SetMonitorArn sets the MonitorArn field's value.
5852func (s *GetAnomaliesInput) SetMonitorArn(v string) *GetAnomaliesInput {
5853	s.MonitorArn = &v
5854	return s
5855}
5856
5857// SetNextPageToken sets the NextPageToken field's value.
5858func (s *GetAnomaliesInput) SetNextPageToken(v string) *GetAnomaliesInput {
5859	s.NextPageToken = &v
5860	return s
5861}
5862
5863// SetTotalImpact sets the TotalImpact field's value.
5864func (s *GetAnomaliesInput) SetTotalImpact(v *TotalImpactFilter) *GetAnomaliesInput {
5865	s.TotalImpact = v
5866	return s
5867}
5868
5869type GetAnomaliesOutput struct {
5870	_ struct{} `type:"structure"`
5871
5872	// A list of cost anomalies.
5873	//
5874	// Anomalies is a required field
5875	Anomalies []*Anomaly `type:"list" required:"true"`
5876
5877	// The token to retrieve the next set of results. Amazon Web Services provides
5878	// the token when the response from a previous call has more results than the
5879	// maximum page size.
5880	NextPageToken *string `type:"string"`
5881}
5882
5883// String returns the string representation
5884func (s GetAnomaliesOutput) String() string {
5885	return awsutil.Prettify(s)
5886}
5887
5888// GoString returns the string representation
5889func (s GetAnomaliesOutput) GoString() string {
5890	return s.String()
5891}
5892
5893// SetAnomalies sets the Anomalies field's value.
5894func (s *GetAnomaliesOutput) SetAnomalies(v []*Anomaly) *GetAnomaliesOutput {
5895	s.Anomalies = v
5896	return s
5897}
5898
5899// SetNextPageToken sets the NextPageToken field's value.
5900func (s *GetAnomaliesOutput) SetNextPageToken(v string) *GetAnomaliesOutput {
5901	s.NextPageToken = &v
5902	return s
5903}
5904
5905type GetAnomalyMonitorsInput struct {
5906	_ struct{} `type:"structure"`
5907
5908	// The number of entries that a paginated response contains.
5909	MaxResults *int64 `type:"integer"`
5910
5911	// A list of cost anomaly monitor ARNs.
5912	MonitorArnList []*string `type:"list"`
5913
5914	// The token to retrieve the next set of results. Amazon Web Services provides
5915	// the token when the response from a previous call has more results than the
5916	// maximum page size.
5917	NextPageToken *string `type:"string"`
5918}
5919
5920// String returns the string representation
5921func (s GetAnomalyMonitorsInput) String() string {
5922	return awsutil.Prettify(s)
5923}
5924
5925// GoString returns the string representation
5926func (s GetAnomalyMonitorsInput) GoString() string {
5927	return s.String()
5928}
5929
5930// SetMaxResults sets the MaxResults field's value.
5931func (s *GetAnomalyMonitorsInput) SetMaxResults(v int64) *GetAnomalyMonitorsInput {
5932	s.MaxResults = &v
5933	return s
5934}
5935
5936// SetMonitorArnList sets the MonitorArnList field's value.
5937func (s *GetAnomalyMonitorsInput) SetMonitorArnList(v []*string) *GetAnomalyMonitorsInput {
5938	s.MonitorArnList = v
5939	return s
5940}
5941
5942// SetNextPageToken sets the NextPageToken field's value.
5943func (s *GetAnomalyMonitorsInput) SetNextPageToken(v string) *GetAnomalyMonitorsInput {
5944	s.NextPageToken = &v
5945	return s
5946}
5947
5948type GetAnomalyMonitorsOutput struct {
5949	_ struct{} `type:"structure"`
5950
5951	// A list of cost anomaly monitors that includes the detailed metadata for each
5952	// monitor.
5953	//
5954	// AnomalyMonitors is a required field
5955	AnomalyMonitors []*AnomalyMonitor `type:"list" required:"true"`
5956
5957	// The token to retrieve the next set of results. Amazon Web Services provides
5958	// the token when the response from a previous call has more results than the
5959	// maximum page size.
5960	NextPageToken *string `type:"string"`
5961}
5962
5963// String returns the string representation
5964func (s GetAnomalyMonitorsOutput) String() string {
5965	return awsutil.Prettify(s)
5966}
5967
5968// GoString returns the string representation
5969func (s GetAnomalyMonitorsOutput) GoString() string {
5970	return s.String()
5971}
5972
5973// SetAnomalyMonitors sets the AnomalyMonitors field's value.
5974func (s *GetAnomalyMonitorsOutput) SetAnomalyMonitors(v []*AnomalyMonitor) *GetAnomalyMonitorsOutput {
5975	s.AnomalyMonitors = v
5976	return s
5977}
5978
5979// SetNextPageToken sets the NextPageToken field's value.
5980func (s *GetAnomalyMonitorsOutput) SetNextPageToken(v string) *GetAnomalyMonitorsOutput {
5981	s.NextPageToken = &v
5982	return s
5983}
5984
5985type GetAnomalySubscriptionsInput struct {
5986	_ struct{} `type:"structure"`
5987
5988	// The number of entries a paginated response contains.
5989	MaxResults *int64 `type:"integer"`
5990
5991	// Cost anomaly monitor ARNs.
5992	MonitorArn *string `type:"string"`
5993
5994	// The token to retrieve the next set of results. Amazon Web Services provides
5995	// the token when the response from a previous call has more results than the
5996	// maximum page size.
5997	NextPageToken *string `type:"string"`
5998
5999	// A list of cost anomaly subscription ARNs.
6000	SubscriptionArnList []*string `type:"list"`
6001}
6002
6003// String returns the string representation
6004func (s GetAnomalySubscriptionsInput) String() string {
6005	return awsutil.Prettify(s)
6006}
6007
6008// GoString returns the string representation
6009func (s GetAnomalySubscriptionsInput) GoString() string {
6010	return s.String()
6011}
6012
6013// SetMaxResults sets the MaxResults field's value.
6014func (s *GetAnomalySubscriptionsInput) SetMaxResults(v int64) *GetAnomalySubscriptionsInput {
6015	s.MaxResults = &v
6016	return s
6017}
6018
6019// SetMonitorArn sets the MonitorArn field's value.
6020func (s *GetAnomalySubscriptionsInput) SetMonitorArn(v string) *GetAnomalySubscriptionsInput {
6021	s.MonitorArn = &v
6022	return s
6023}
6024
6025// SetNextPageToken sets the NextPageToken field's value.
6026func (s *GetAnomalySubscriptionsInput) SetNextPageToken(v string) *GetAnomalySubscriptionsInput {
6027	s.NextPageToken = &v
6028	return s
6029}
6030
6031// SetSubscriptionArnList sets the SubscriptionArnList field's value.
6032func (s *GetAnomalySubscriptionsInput) SetSubscriptionArnList(v []*string) *GetAnomalySubscriptionsInput {
6033	s.SubscriptionArnList = v
6034	return s
6035}
6036
6037type GetAnomalySubscriptionsOutput struct {
6038	_ struct{} `type:"structure"`
6039
6040	// A list of cost anomaly subscriptions that includes the detailed metadata
6041	// for each one.
6042	//
6043	// AnomalySubscriptions is a required field
6044	AnomalySubscriptions []*AnomalySubscription `type:"list" required:"true"`
6045
6046	// The token to retrieve the next set of results. Amazon Web Services provides
6047	// the token when the response from a previous call has more results than the
6048	// maximum page size.
6049	NextPageToken *string `type:"string"`
6050}
6051
6052// String returns the string representation
6053func (s GetAnomalySubscriptionsOutput) String() string {
6054	return awsutil.Prettify(s)
6055}
6056
6057// GoString returns the string representation
6058func (s GetAnomalySubscriptionsOutput) GoString() string {
6059	return s.String()
6060}
6061
6062// SetAnomalySubscriptions sets the AnomalySubscriptions field's value.
6063func (s *GetAnomalySubscriptionsOutput) SetAnomalySubscriptions(v []*AnomalySubscription) *GetAnomalySubscriptionsOutput {
6064	s.AnomalySubscriptions = v
6065	return s
6066}
6067
6068// SetNextPageToken sets the NextPageToken field's value.
6069func (s *GetAnomalySubscriptionsOutput) SetNextPageToken(v string) *GetAnomalySubscriptionsOutput {
6070	s.NextPageToken = &v
6071	return s
6072}
6073
6074type GetCostAndUsageInput struct {
6075	_ struct{} `type:"structure"`
6076
6077	// Filters Amazon Web Services costs by different dimensions. For example, you
6078	// can specify SERVICE and LINKED_ACCOUNT and get the costs that are associated
6079	// with that account's usage of that service. You can nest Expression objects
6080	// to define any combination of dimension filters. For more information, see
6081	// Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html).
6082	Filter *Expression `type:"structure"`
6083
6084	// Sets the Amazon Web Services cost granularity to MONTHLY or DAILY, or HOURLY.
6085	// If Granularity isn't set, the response object doesn't include the Granularity,
6086	// either MONTHLY or DAILY, or HOURLY.
6087	//
6088	// Granularity is a required field
6089	Granularity *string `type:"string" required:"true" enum:"Granularity"`
6090
6091	// You can group Amazon Web Services costs using up to two different groups,
6092	// either dimensions, tag keys, cost categories, or any two group by types.
6093	//
6094	// Valid values for the DIMENSION type are AZ, INSTANCE_TYPE, LEGAL_ENTITY_NAME,
6095	// LINKED_ACCOUNT, OPERATION, PLATFORM, PURCHASE_TYPE, SERVICE, TENANCY, RECORD_TYPE,
6096	// and USAGE_TYPE.
6097	//
6098	// When you group by the TAG type and include a valid tag key, you get all tag
6099	// values, including empty strings.
6100	GroupBy []*GroupDefinition `type:"list"`
6101
6102	// Which metrics are returned in the query. For more information about blended
6103	// and unblended rates, see Why does the "blended" annotation appear on some
6104	// line items in my bill? (http://aws.amazon.com/premiumsupport/knowledge-center/blended-rates-intro/).
6105	//
6106	// Valid values are AmortizedCost, BlendedCost, NetAmortizedCost, NetUnblendedCost,
6107	// NormalizedUsageAmount, UnblendedCost, and UsageQuantity.
6108	//
6109	// If you return the UsageQuantity metric, the service aggregates all usage
6110	// numbers without taking into account the units. For example, if you aggregate
6111	// usageQuantity across all of Amazon EC2, the results aren't meaningful because
6112	// Amazon EC2 compute hours and data transfer are measured in different units
6113	// (for example, hours and GB). To get more meaningful UsageQuantity metrics,
6114	// filter by UsageType or UsageTypeGroups.
6115	//
6116	// Metrics is required for GetCostAndUsage requests.
6117	//
6118	// Metrics is a required field
6119	Metrics []*string `type:"list" required:"true"`
6120
6121	// The token to retrieve the next set of results. Amazon Web Services provides
6122	// the token when the response from a previous call has more results than the
6123	// maximum page size.
6124	NextPageToken *string `type:"string"`
6125
6126	// Sets the start date and end date for retrieving Amazon Web Services costs.
6127	// The start date is inclusive, but the end date is exclusive. For example,
6128	// if start is 2017-01-01 and end is 2017-05-01, then the cost and usage data
6129	// is retrieved from 2017-01-01 up to and including 2017-04-30 but not including
6130	// 2017-05-01.
6131	//
6132	// TimePeriod is a required field
6133	TimePeriod *DateInterval `type:"structure" required:"true"`
6134}
6135
6136// String returns the string representation
6137func (s GetCostAndUsageInput) String() string {
6138	return awsutil.Prettify(s)
6139}
6140
6141// GoString returns the string representation
6142func (s GetCostAndUsageInput) GoString() string {
6143	return s.String()
6144}
6145
6146// Validate inspects the fields of the type to determine if they are valid.
6147func (s *GetCostAndUsageInput) Validate() error {
6148	invalidParams := request.ErrInvalidParams{Context: "GetCostAndUsageInput"}
6149	if s.Granularity == nil {
6150		invalidParams.Add(request.NewErrParamRequired("Granularity"))
6151	}
6152	if s.Metrics == nil {
6153		invalidParams.Add(request.NewErrParamRequired("Metrics"))
6154	}
6155	if s.TimePeriod == nil {
6156		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
6157	}
6158	if s.Filter != nil {
6159		if err := s.Filter.Validate(); err != nil {
6160			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
6161		}
6162	}
6163	if s.TimePeriod != nil {
6164		if err := s.TimePeriod.Validate(); err != nil {
6165			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
6166		}
6167	}
6168
6169	if invalidParams.Len() > 0 {
6170		return invalidParams
6171	}
6172	return nil
6173}
6174
6175// SetFilter sets the Filter field's value.
6176func (s *GetCostAndUsageInput) SetFilter(v *Expression) *GetCostAndUsageInput {
6177	s.Filter = v
6178	return s
6179}
6180
6181// SetGranularity sets the Granularity field's value.
6182func (s *GetCostAndUsageInput) SetGranularity(v string) *GetCostAndUsageInput {
6183	s.Granularity = &v
6184	return s
6185}
6186
6187// SetGroupBy sets the GroupBy field's value.
6188func (s *GetCostAndUsageInput) SetGroupBy(v []*GroupDefinition) *GetCostAndUsageInput {
6189	s.GroupBy = v
6190	return s
6191}
6192
6193// SetMetrics sets the Metrics field's value.
6194func (s *GetCostAndUsageInput) SetMetrics(v []*string) *GetCostAndUsageInput {
6195	s.Metrics = v
6196	return s
6197}
6198
6199// SetNextPageToken sets the NextPageToken field's value.
6200func (s *GetCostAndUsageInput) SetNextPageToken(v string) *GetCostAndUsageInput {
6201	s.NextPageToken = &v
6202	return s
6203}
6204
6205// SetTimePeriod sets the TimePeriod field's value.
6206func (s *GetCostAndUsageInput) SetTimePeriod(v *DateInterval) *GetCostAndUsageInput {
6207	s.TimePeriod = v
6208	return s
6209}
6210
6211type GetCostAndUsageOutput struct {
6212	_ struct{} `type:"structure"`
6213
6214	// The attributes that apply to a specific dimension value. For example, if
6215	// the value is a linked account, the attribute is that account name.
6216	DimensionValueAttributes []*DimensionValuesWithAttributes `type:"list"`
6217
6218	// The groups that are specified by the Filter or GroupBy parameters in the
6219	// request.
6220	GroupDefinitions []*GroupDefinition `type:"list"`
6221
6222	// The token for the next set of retrievable results. Amazon Web Services provides
6223	// the token when the response from a previous call has more results than the
6224	// maximum page size.
6225	NextPageToken *string `type:"string"`
6226
6227	// The time period that's covered by the results in the response.
6228	ResultsByTime []*ResultByTime `type:"list"`
6229}
6230
6231// String returns the string representation
6232func (s GetCostAndUsageOutput) String() string {
6233	return awsutil.Prettify(s)
6234}
6235
6236// GoString returns the string representation
6237func (s GetCostAndUsageOutput) GoString() string {
6238	return s.String()
6239}
6240
6241// SetDimensionValueAttributes sets the DimensionValueAttributes field's value.
6242func (s *GetCostAndUsageOutput) SetDimensionValueAttributes(v []*DimensionValuesWithAttributes) *GetCostAndUsageOutput {
6243	s.DimensionValueAttributes = v
6244	return s
6245}
6246
6247// SetGroupDefinitions sets the GroupDefinitions field's value.
6248func (s *GetCostAndUsageOutput) SetGroupDefinitions(v []*GroupDefinition) *GetCostAndUsageOutput {
6249	s.GroupDefinitions = v
6250	return s
6251}
6252
6253// SetNextPageToken sets the NextPageToken field's value.
6254func (s *GetCostAndUsageOutput) SetNextPageToken(v string) *GetCostAndUsageOutput {
6255	s.NextPageToken = &v
6256	return s
6257}
6258
6259// SetResultsByTime sets the ResultsByTime field's value.
6260func (s *GetCostAndUsageOutput) SetResultsByTime(v []*ResultByTime) *GetCostAndUsageOutput {
6261	s.ResultsByTime = v
6262	return s
6263}
6264
6265type GetCostAndUsageWithResourcesInput struct {
6266	_ struct{} `type:"structure"`
6267
6268	// Filters Amazon Web Services costs by different dimensions. For example, you
6269	// can specify SERVICE and LINKED_ACCOUNT and get the costs that are associated
6270	// with that account's usage of that service. You can nest Expression objects
6271	// to define any combination of dimension filters. For more information, see
6272	// Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html).
6273	//
6274	// The GetCostAndUsageWithResources operation requires that you either group
6275	// by or filter by a ResourceId. It requires the Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
6276	// "SERVICE = Amazon Elastic Compute Cloud - Compute" in the filter.
6277	//
6278	// Filter is a required field
6279	Filter *Expression `type:"structure" required:"true"`
6280
6281	// Sets the Amazon Web Services cost granularity to MONTHLY, DAILY, or HOURLY.
6282	// If Granularity isn't set, the response object doesn't include the Granularity,
6283	// MONTHLY, DAILY, or HOURLY.
6284	//
6285	// Granularity is a required field
6286	Granularity *string `type:"string" required:"true" enum:"Granularity"`
6287
6288	// You can group Amazon Web Services costs using up to two different groups:
6289	// DIMENSION, TAG, COST_CATEGORY.
6290	GroupBy []*GroupDefinition `type:"list"`
6291
6292	// Which metrics are returned in the query. For more information about blended
6293	// and unblended rates, see Why does the "blended" annotation appear on some
6294	// line items in my bill? (http://aws.amazon.com/premiumsupport/knowledge-center/blended-rates-intro/).
6295	//
6296	// Valid values are AmortizedCost, BlendedCost, NetAmortizedCost, NetUnblendedCost,
6297	// NormalizedUsageAmount, UnblendedCost, and UsageQuantity.
6298	//
6299	// If you return the UsageQuantity metric, the service aggregates all usage
6300	// numbers without taking the units into account. For example, if you aggregate
6301	// usageQuantity across all of Amazon EC2, the results aren't meaningful because
6302	// Amazon EC2 compute hours and data transfer are measured in different units
6303	// (for example, hours vs. GB). To get more meaningful UsageQuantity metrics,
6304	// filter by UsageType or UsageTypeGroups.
6305	//
6306	// Metrics is required for GetCostAndUsageWithResources requests.
6307	Metrics []*string `type:"list"`
6308
6309	// The token to retrieve the next set of results. Amazon Web Services provides
6310	// the token when the response from a previous call has more results than the
6311	// maximum page size.
6312	NextPageToken *string `type:"string"`
6313
6314	// Sets the start and end dates for retrieving Amazon Web Services costs. The
6315	// range must be within the last 14 days (the start date cannot be earlier than
6316	// 14 days ago). The start date is inclusive, but the end date is exclusive.
6317	// For example, if start is 2017-01-01 and end is 2017-05-01, then the cost
6318	// and usage data is retrieved from 2017-01-01 up to and including 2017-04-30
6319	// but not including 2017-05-01.
6320	//
6321	// TimePeriod is a required field
6322	TimePeriod *DateInterval `type:"structure" required:"true"`
6323}
6324
6325// String returns the string representation
6326func (s GetCostAndUsageWithResourcesInput) String() string {
6327	return awsutil.Prettify(s)
6328}
6329
6330// GoString returns the string representation
6331func (s GetCostAndUsageWithResourcesInput) GoString() string {
6332	return s.String()
6333}
6334
6335// Validate inspects the fields of the type to determine if they are valid.
6336func (s *GetCostAndUsageWithResourcesInput) Validate() error {
6337	invalidParams := request.ErrInvalidParams{Context: "GetCostAndUsageWithResourcesInput"}
6338	if s.Filter == nil {
6339		invalidParams.Add(request.NewErrParamRequired("Filter"))
6340	}
6341	if s.Granularity == nil {
6342		invalidParams.Add(request.NewErrParamRequired("Granularity"))
6343	}
6344	if s.TimePeriod == nil {
6345		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
6346	}
6347	if s.Filter != nil {
6348		if err := s.Filter.Validate(); err != nil {
6349			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
6350		}
6351	}
6352	if s.TimePeriod != nil {
6353		if err := s.TimePeriod.Validate(); err != nil {
6354			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
6355		}
6356	}
6357
6358	if invalidParams.Len() > 0 {
6359		return invalidParams
6360	}
6361	return nil
6362}
6363
6364// SetFilter sets the Filter field's value.
6365func (s *GetCostAndUsageWithResourcesInput) SetFilter(v *Expression) *GetCostAndUsageWithResourcesInput {
6366	s.Filter = v
6367	return s
6368}
6369
6370// SetGranularity sets the Granularity field's value.
6371func (s *GetCostAndUsageWithResourcesInput) SetGranularity(v string) *GetCostAndUsageWithResourcesInput {
6372	s.Granularity = &v
6373	return s
6374}
6375
6376// SetGroupBy sets the GroupBy field's value.
6377func (s *GetCostAndUsageWithResourcesInput) SetGroupBy(v []*GroupDefinition) *GetCostAndUsageWithResourcesInput {
6378	s.GroupBy = v
6379	return s
6380}
6381
6382// SetMetrics sets the Metrics field's value.
6383func (s *GetCostAndUsageWithResourcesInput) SetMetrics(v []*string) *GetCostAndUsageWithResourcesInput {
6384	s.Metrics = v
6385	return s
6386}
6387
6388// SetNextPageToken sets the NextPageToken field's value.
6389func (s *GetCostAndUsageWithResourcesInput) SetNextPageToken(v string) *GetCostAndUsageWithResourcesInput {
6390	s.NextPageToken = &v
6391	return s
6392}
6393
6394// SetTimePeriod sets the TimePeriod field's value.
6395func (s *GetCostAndUsageWithResourcesInput) SetTimePeriod(v *DateInterval) *GetCostAndUsageWithResourcesInput {
6396	s.TimePeriod = v
6397	return s
6398}
6399
6400type GetCostAndUsageWithResourcesOutput struct {
6401	_ struct{} `type:"structure"`
6402
6403	// The attributes that apply to a specific dimension value. For example, if
6404	// the value is a linked account, the attribute is that account name.
6405	DimensionValueAttributes []*DimensionValuesWithAttributes `type:"list"`
6406
6407	// The groups that are specified by the Filter or GroupBy parameters in the
6408	// request.
6409	GroupDefinitions []*GroupDefinition `type:"list"`
6410
6411	// The token for the next set of retrievable results. Amazon Web Services provides
6412	// the token when the response from a previous call has more results than the
6413	// maximum page size.
6414	NextPageToken *string `type:"string"`
6415
6416	// The time period that is covered by the results in the response.
6417	ResultsByTime []*ResultByTime `type:"list"`
6418}
6419
6420// String returns the string representation
6421func (s GetCostAndUsageWithResourcesOutput) String() string {
6422	return awsutil.Prettify(s)
6423}
6424
6425// GoString returns the string representation
6426func (s GetCostAndUsageWithResourcesOutput) GoString() string {
6427	return s.String()
6428}
6429
6430// SetDimensionValueAttributes sets the DimensionValueAttributes field's value.
6431func (s *GetCostAndUsageWithResourcesOutput) SetDimensionValueAttributes(v []*DimensionValuesWithAttributes) *GetCostAndUsageWithResourcesOutput {
6432	s.DimensionValueAttributes = v
6433	return s
6434}
6435
6436// SetGroupDefinitions sets the GroupDefinitions field's value.
6437func (s *GetCostAndUsageWithResourcesOutput) SetGroupDefinitions(v []*GroupDefinition) *GetCostAndUsageWithResourcesOutput {
6438	s.GroupDefinitions = v
6439	return s
6440}
6441
6442// SetNextPageToken sets the NextPageToken field's value.
6443func (s *GetCostAndUsageWithResourcesOutput) SetNextPageToken(v string) *GetCostAndUsageWithResourcesOutput {
6444	s.NextPageToken = &v
6445	return s
6446}
6447
6448// SetResultsByTime sets the ResultsByTime field's value.
6449func (s *GetCostAndUsageWithResourcesOutput) SetResultsByTime(v []*ResultByTime) *GetCostAndUsageWithResourcesOutput {
6450	s.ResultsByTime = v
6451	return s
6452}
6453
6454type GetCostCategoriesInput struct {
6455	_ struct{} `type:"structure"`
6456
6457	// The unique name of the Cost Category.
6458	CostCategoryName *string `min:"1" type:"string"`
6459
6460	// Use Expression to filter by cost or by usage. There are two patterns:
6461	//
6462	//    * Simple dimension values - You can set the dimension name and values
6463	//    for the filters that you plan to use. For example, you can filter for
6464	//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
6465	//    the Region is a full name (for example, REGION==US East (N. Virginia).
6466	//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
6467	//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
6468	//    are OR'd together to retrieve cost or usage data. You can create Expression
6469	//    and DimensionValues objects using either with* methods or set* methods
6470	//    in multiple lines.
6471	//
6472	//    * Compound dimension values with logical operations - You can use multiple
6473	//    Expression types and the logical operators AND/OR/NOT to create a list
6474	//    of one or more Expression objects. By doing this, you can filter on more
6475	//    advanced options. For example, you can filter on ((REGION == us-east-1
6476	//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
6477	//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
6478	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
6479	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
6480	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
6481	//    Expression can have only one operator, the service returns an error if
6482	//    more than one is specified. The following example shows an Expression
6483	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
6484	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
6485	//
6486	// For the GetRightsizingRecommendation action, a combination of OR and NOT
6487	// isn't supported. OR isn't supported between different dimensions, or dimensions
6488	// and tags. NOT operators aren't supported. Dimensions are also limited to
6489	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
6490	//
6491	// For the GetReservationPurchaseRecommendation action, only NOT is supported.
6492	// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
6493	Filter *Expression `type:"structure"`
6494
6495	// This field is only used when SortBy is provided in the request.
6496	//
6497	// The maximum number of objects that to be returned for this request. If MaxResults
6498	// is not specified with SortBy, the request will return 1000 results as the
6499	// default value for this parameter.
6500	//
6501	// For GetCostCategories, MaxResults has an upper limit of 1000.
6502	MaxResults *int64 `min:"1" type:"integer"`
6503
6504	// If the number of objects that are still available for retrieval exceeds the
6505	// limit, Amazon Web Services returns a NextPageToken value in the response.
6506	// To retrieve the next batch of objects, provide the NextPageToken from the
6507	// prior call in your next request.
6508	NextPageToken *string `type:"string"`
6509
6510	// The value that you want to search the filter values for.
6511	//
6512	// If you do not specify a CostCategoryName, SearchString will be used to filter
6513	// Cost Category names that match the SearchString pattern. If you do specifiy
6514	// a CostCategoryName, SearchString will be used to filter Cost Category values
6515	// that match the SearchString pattern.
6516	SearchString *string `type:"string"`
6517
6518	// The value by which you want to sort the data.
6519	//
6520	// The key represents cost and usage metrics. The following values are supported:
6521	//
6522	//    * BlendedCost
6523	//
6524	//    * UnblendedCost
6525	//
6526	//    * AmortizedCost
6527	//
6528	//    * NetAmortizedCost
6529	//
6530	//    * NetUnblendedCost
6531	//
6532	//    * UsageQuantity
6533	//
6534	//    * NormalizedUsageAmount
6535	//
6536	// Supported values for SortOrder are ASCENDING or DESCENDING.
6537	//
6538	// When using SortBy, NextPageToken and SearchString are not supported.
6539	SortBy []*SortDefinition `type:"list"`
6540
6541	// The time period of the request.
6542	//
6543	// TimePeriod is a required field
6544	TimePeriod *DateInterval `type:"structure" required:"true"`
6545}
6546
6547// String returns the string representation
6548func (s GetCostCategoriesInput) String() string {
6549	return awsutil.Prettify(s)
6550}
6551
6552// GoString returns the string representation
6553func (s GetCostCategoriesInput) GoString() string {
6554	return s.String()
6555}
6556
6557// Validate inspects the fields of the type to determine if they are valid.
6558func (s *GetCostCategoriesInput) Validate() error {
6559	invalidParams := request.ErrInvalidParams{Context: "GetCostCategoriesInput"}
6560	if s.CostCategoryName != nil && len(*s.CostCategoryName) < 1 {
6561		invalidParams.Add(request.NewErrParamMinLen("CostCategoryName", 1))
6562	}
6563	if s.MaxResults != nil && *s.MaxResults < 1 {
6564		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
6565	}
6566	if s.TimePeriod == nil {
6567		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
6568	}
6569	if s.Filter != nil {
6570		if err := s.Filter.Validate(); err != nil {
6571			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
6572		}
6573	}
6574	if s.SortBy != nil {
6575		for i, v := range s.SortBy {
6576			if v == nil {
6577				continue
6578			}
6579			if err := v.Validate(); err != nil {
6580				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SortBy", i), err.(request.ErrInvalidParams))
6581			}
6582		}
6583	}
6584	if s.TimePeriod != nil {
6585		if err := s.TimePeriod.Validate(); err != nil {
6586			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
6587		}
6588	}
6589
6590	if invalidParams.Len() > 0 {
6591		return invalidParams
6592	}
6593	return nil
6594}
6595
6596// SetCostCategoryName sets the CostCategoryName field's value.
6597func (s *GetCostCategoriesInput) SetCostCategoryName(v string) *GetCostCategoriesInput {
6598	s.CostCategoryName = &v
6599	return s
6600}
6601
6602// SetFilter sets the Filter field's value.
6603func (s *GetCostCategoriesInput) SetFilter(v *Expression) *GetCostCategoriesInput {
6604	s.Filter = v
6605	return s
6606}
6607
6608// SetMaxResults sets the MaxResults field's value.
6609func (s *GetCostCategoriesInput) SetMaxResults(v int64) *GetCostCategoriesInput {
6610	s.MaxResults = &v
6611	return s
6612}
6613
6614// SetNextPageToken sets the NextPageToken field's value.
6615func (s *GetCostCategoriesInput) SetNextPageToken(v string) *GetCostCategoriesInput {
6616	s.NextPageToken = &v
6617	return s
6618}
6619
6620// SetSearchString sets the SearchString field's value.
6621func (s *GetCostCategoriesInput) SetSearchString(v string) *GetCostCategoriesInput {
6622	s.SearchString = &v
6623	return s
6624}
6625
6626// SetSortBy sets the SortBy field's value.
6627func (s *GetCostCategoriesInput) SetSortBy(v []*SortDefinition) *GetCostCategoriesInput {
6628	s.SortBy = v
6629	return s
6630}
6631
6632// SetTimePeriod sets the TimePeriod field's value.
6633func (s *GetCostCategoriesInput) SetTimePeriod(v *DateInterval) *GetCostCategoriesInput {
6634	s.TimePeriod = v
6635	return s
6636}
6637
6638type GetCostCategoriesOutput struct {
6639	_ struct{} `type:"structure"`
6640
6641	// The names of the Cost Categories.
6642	CostCategoryNames []*string `type:"list"`
6643
6644	// The Cost Category values.
6645	//
6646	// CostCategoryValues are not returned if CostCategoryName is not specified
6647	// in the request.
6648	CostCategoryValues []*string `type:"list"`
6649
6650	// If the number of objects that are still available for retrieval exceeds the
6651	// limit, Amazon Web Services returns a NextPageToken value in the response.
6652	// To retrieve the next batch of objects, provide the marker from the prior
6653	// call in your next request.
6654	NextPageToken *string `type:"string"`
6655
6656	// The number of objects returned.
6657	//
6658	// ReturnSize is a required field
6659	ReturnSize *int64 `type:"integer" required:"true"`
6660
6661	// The total number of objects.
6662	//
6663	// TotalSize is a required field
6664	TotalSize *int64 `type:"integer" required:"true"`
6665}
6666
6667// String returns the string representation
6668func (s GetCostCategoriesOutput) String() string {
6669	return awsutil.Prettify(s)
6670}
6671
6672// GoString returns the string representation
6673func (s GetCostCategoriesOutput) GoString() string {
6674	return s.String()
6675}
6676
6677// SetCostCategoryNames sets the CostCategoryNames field's value.
6678func (s *GetCostCategoriesOutput) SetCostCategoryNames(v []*string) *GetCostCategoriesOutput {
6679	s.CostCategoryNames = v
6680	return s
6681}
6682
6683// SetCostCategoryValues sets the CostCategoryValues field's value.
6684func (s *GetCostCategoriesOutput) SetCostCategoryValues(v []*string) *GetCostCategoriesOutput {
6685	s.CostCategoryValues = v
6686	return s
6687}
6688
6689// SetNextPageToken sets the NextPageToken field's value.
6690func (s *GetCostCategoriesOutput) SetNextPageToken(v string) *GetCostCategoriesOutput {
6691	s.NextPageToken = &v
6692	return s
6693}
6694
6695// SetReturnSize sets the ReturnSize field's value.
6696func (s *GetCostCategoriesOutput) SetReturnSize(v int64) *GetCostCategoriesOutput {
6697	s.ReturnSize = &v
6698	return s
6699}
6700
6701// SetTotalSize sets the TotalSize field's value.
6702func (s *GetCostCategoriesOutput) SetTotalSize(v int64) *GetCostCategoriesOutput {
6703	s.TotalSize = &v
6704	return s
6705}
6706
6707type GetCostForecastInput struct {
6708	_ struct{} `type:"structure"`
6709
6710	// The filters that you want to use to filter your forecast. The GetCostForecast
6711	// API supports filtering by the following dimensions:
6712	//
6713	//    * AZ
6714	//
6715	//    * INSTANCE_TYPE
6716	//
6717	//    * LINKED_ACCOUNT
6718	//
6719	//    * LINKED_ACCOUNT_NAME
6720	//
6721	//    * OPERATION
6722	//
6723	//    * PURCHASE_TYPE
6724	//
6725	//    * REGION
6726	//
6727	//    * SERVICE
6728	//
6729	//    * USAGE_TYPE
6730	//
6731	//    * USAGE_TYPE_GROUP
6732	//
6733	//    * RECORD_TYPE
6734	//
6735	//    * OPERATING_SYSTEM
6736	//
6737	//    * TENANCY
6738	//
6739	//    * SCOPE
6740	//
6741	//    * PLATFORM
6742	//
6743	//    * SUBSCRIPTION_ID
6744	//
6745	//    * LEGAL_ENTITY_NAME
6746	//
6747	//    * DEPLOYMENT_OPTION
6748	//
6749	//    * DATABASE_ENGINE
6750	//
6751	//    * INSTANCE_TYPE_FAMILY
6752	//
6753	//    * BILLING_ENTITY
6754	//
6755	//    * RESERVATION_ID
6756	//
6757	//    * SAVINGS_PLAN_ARN
6758	Filter *Expression `type:"structure"`
6759
6760	// How granular you want the forecast to be. You can get 3 months of DAILY forecasts
6761	// or 12 months of MONTHLY forecasts.
6762	//
6763	// The GetCostForecast operation supports only DAILY and MONTHLY granularities.
6764	//
6765	// Granularity is a required field
6766	Granularity *string `type:"string" required:"true" enum:"Granularity"`
6767
6768	// Which metric Cost Explorer uses to create your forecast. For more information
6769	// about blended and unblended rates, see Why does the "blended" annotation
6770	// appear on some line items in my bill? (http://aws.amazon.com/premiumsupport/knowledge-center/blended-rates-intro/).
6771	//
6772	// Valid values for a GetCostForecast call are the following:
6773	//
6774	//    * AMORTIZED_COST
6775	//
6776	//    * BLENDED_COST
6777	//
6778	//    * NET_AMORTIZED_COST
6779	//
6780	//    * NET_UNBLENDED_COST
6781	//
6782	//    * UNBLENDED_COST
6783	//
6784	// Metric is a required field
6785	Metric *string `type:"string" required:"true" enum:"Metric"`
6786
6787	// Cost Explorer always returns the mean forecast as a single point. You can
6788	// request a prediction interval around the mean by specifying a confidence
6789	// level. The higher the confidence level, the more confident Cost Explorer
6790	// is about the actual value falling in the prediction interval. Higher confidence
6791	// levels result in wider prediction intervals.
6792	PredictionIntervalLevel *int64 `min:"51" type:"integer"`
6793
6794	// The period of time that you want the forecast to cover. The start date must
6795	// be equal to or no later than the current date to avoid a validation error.
6796	//
6797	// TimePeriod is a required field
6798	TimePeriod *DateInterval `type:"structure" required:"true"`
6799}
6800
6801// String returns the string representation
6802func (s GetCostForecastInput) String() string {
6803	return awsutil.Prettify(s)
6804}
6805
6806// GoString returns the string representation
6807func (s GetCostForecastInput) GoString() string {
6808	return s.String()
6809}
6810
6811// Validate inspects the fields of the type to determine if they are valid.
6812func (s *GetCostForecastInput) Validate() error {
6813	invalidParams := request.ErrInvalidParams{Context: "GetCostForecastInput"}
6814	if s.Granularity == nil {
6815		invalidParams.Add(request.NewErrParamRequired("Granularity"))
6816	}
6817	if s.Metric == nil {
6818		invalidParams.Add(request.NewErrParamRequired("Metric"))
6819	}
6820	if s.PredictionIntervalLevel != nil && *s.PredictionIntervalLevel < 51 {
6821		invalidParams.Add(request.NewErrParamMinValue("PredictionIntervalLevel", 51))
6822	}
6823	if s.TimePeriod == nil {
6824		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
6825	}
6826	if s.Filter != nil {
6827		if err := s.Filter.Validate(); err != nil {
6828			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
6829		}
6830	}
6831	if s.TimePeriod != nil {
6832		if err := s.TimePeriod.Validate(); err != nil {
6833			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
6834		}
6835	}
6836
6837	if invalidParams.Len() > 0 {
6838		return invalidParams
6839	}
6840	return nil
6841}
6842
6843// SetFilter sets the Filter field's value.
6844func (s *GetCostForecastInput) SetFilter(v *Expression) *GetCostForecastInput {
6845	s.Filter = v
6846	return s
6847}
6848
6849// SetGranularity sets the Granularity field's value.
6850func (s *GetCostForecastInput) SetGranularity(v string) *GetCostForecastInput {
6851	s.Granularity = &v
6852	return s
6853}
6854
6855// SetMetric sets the Metric field's value.
6856func (s *GetCostForecastInput) SetMetric(v string) *GetCostForecastInput {
6857	s.Metric = &v
6858	return s
6859}
6860
6861// SetPredictionIntervalLevel sets the PredictionIntervalLevel field's value.
6862func (s *GetCostForecastInput) SetPredictionIntervalLevel(v int64) *GetCostForecastInput {
6863	s.PredictionIntervalLevel = &v
6864	return s
6865}
6866
6867// SetTimePeriod sets the TimePeriod field's value.
6868func (s *GetCostForecastInput) SetTimePeriod(v *DateInterval) *GetCostForecastInput {
6869	s.TimePeriod = v
6870	return s
6871}
6872
6873type GetCostForecastOutput struct {
6874	_ struct{} `type:"structure"`
6875
6876	// The forecasts for your query, in order. For DAILY forecasts, this is a list
6877	// of days. For MONTHLY forecasts, this is a list of months.
6878	ForecastResultsByTime []*ForecastResult `type:"list"`
6879
6880	// How much you are forecasted to spend over the forecast period, in USD.
6881	Total *MetricValue `type:"structure"`
6882}
6883
6884// String returns the string representation
6885func (s GetCostForecastOutput) String() string {
6886	return awsutil.Prettify(s)
6887}
6888
6889// GoString returns the string representation
6890func (s GetCostForecastOutput) GoString() string {
6891	return s.String()
6892}
6893
6894// SetForecastResultsByTime sets the ForecastResultsByTime field's value.
6895func (s *GetCostForecastOutput) SetForecastResultsByTime(v []*ForecastResult) *GetCostForecastOutput {
6896	s.ForecastResultsByTime = v
6897	return s
6898}
6899
6900// SetTotal sets the Total field's value.
6901func (s *GetCostForecastOutput) SetTotal(v *MetricValue) *GetCostForecastOutput {
6902	s.Total = v
6903	return s
6904}
6905
6906type GetDimensionValuesInput struct {
6907	_ struct{} `type:"structure"`
6908
6909	// The context for the call to GetDimensionValues. This can be RESERVATIONS
6910	// or COST_AND_USAGE. The default value is COST_AND_USAGE. If the context is
6911	// set to RESERVATIONS, the resulting dimension values can be used in the GetReservationUtilization
6912	// operation. If the context is set to COST_AND_USAGE, the resulting dimension
6913	// values can be used in the GetCostAndUsage operation.
6914	//
6915	// If you set the context to COST_AND_USAGE, you can use the following dimensions
6916	// for searching:
6917	//
6918	//    * AZ - The Availability Zone. An example is us-east-1a.
6919	//
6920	//    * DATABASE_ENGINE - The Amazon Relational Database Service database. Examples
6921	//    are Aurora or MySQL.
6922	//
6923	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
6924	//
6925	//    * LEGAL_ENTITY_NAME - The name of the organization that sells you Amazon
6926	//    Web Services services, such as Amazon Web Services.
6927	//
6928	//    * LINKED_ACCOUNT - The description in the attribute map that includes
6929	//    the full name of the member account. The value field contains the Amazon
6930	//    Web Services ID of the member account.
6931	//
6932	//    * OPERATING_SYSTEM - The operating system. Examples are Windows or Linux.
6933	//
6934	//    * OPERATION - The action performed. Examples include RunInstance and CreateBucket.
6935	//
6936	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
6937	//    Linux.
6938	//
6939	//    * PURCHASE_TYPE - The reservation type of the purchase to which this usage
6940	//    is related. Examples include On-Demand Instances and Standard Reserved
6941	//    Instances.
6942	//
6943	//    * SERVICE - The Amazon Web Services service such as Amazon DynamoDB.
6944	//
6945	//    * USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes.
6946	//    The response for the GetDimensionValues operation includes a unit attribute.
6947	//    Examples include GB and Hrs.
6948	//
6949	//    * USAGE_TYPE_GROUP - The grouping of common usage types. An example is
6950	//    Amazon EC2: CloudWatch – Alarms. The response for this operation includes
6951	//    a unit attribute.
6952	//
6953	//    * REGION - The Amazon Web Services Region.
6954	//
6955	//    * RECORD_TYPE - The different types of charges such as RI fees, usage
6956	//    costs, tax refunds, and credits.
6957	//
6958	//    * RESOURCE_ID - The unique identifier of the resource. ResourceId is an
6959	//    opt-in feature only available for last 14 days for EC2-Compute Service.
6960	//
6961	// If you set the context to RESERVATIONS, you can use the following dimensions
6962	// for searching:
6963	//
6964	//    * AZ - The Availability Zone. An example is us-east-1a.
6965	//
6966	//    * CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are
6967	//    Windows or Linux.
6968	//
6969	//    * DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service
6970	//    deployments. Valid values are SingleAZ and MultiAZ.
6971	//
6972	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
6973	//
6974	//    * LINKED_ACCOUNT - The description in the attribute map that includes
6975	//    the full name of the member account. The value field contains the Amazon
6976	//    Web Services ID of the member account.
6977	//
6978	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
6979	//    Linux.
6980	//
6981	//    * REGION - The Amazon Web Services Region.
6982	//
6983	//    * SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values
6984	//    are regional or a single Availability Zone.
6985	//
6986	//    * TAG (Coverage only) - The tags that are associated with a Reserved Instance
6987	//    (RI).
6988	//
6989	//    * TENANCY - The tenancy of a resource. Examples are shared or dedicated.
6990	//
6991	// If you set the context to SAVINGS_PLANS, you can use the following dimensions
6992	// for searching:
6993	//
6994	//    * SAVINGS_PLANS_TYPE - Type of Savings Plans (EC2 Instance or Compute)
6995	//
6996	//    * PAYMENT_OPTION - Payment option for the given Savings Plans (for example,
6997	//    All Upfront)
6998	//
6999	//    * REGION - The Amazon Web Services Region.
7000	//
7001	//    * INSTANCE_TYPE_FAMILY - The family of instances (For example, m5)
7002	//
7003	//    * LINKED_ACCOUNT - The description in the attribute map that includes
7004	//    the full name of the member account. The value field contains the Amazon
7005	//    Web Services ID of the member account.
7006	//
7007	//    * SAVINGS_PLAN_ARN - The unique identifier for your Savings Plan
7008	Context *string `type:"string" enum:"Context"`
7009
7010	// The name of the dimension. Each Dimension is available for a different Context.
7011	// For more information, see Context.
7012	//
7013	// Dimension is a required field
7014	Dimension *string `type:"string" required:"true" enum:"Dimension"`
7015
7016	// Use Expression to filter by cost or by usage. There are two patterns:
7017	//
7018	//    * Simple dimension values - You can set the dimension name and values
7019	//    for the filters that you plan to use. For example, you can filter for
7020	//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
7021	//    the Region is a full name (for example, REGION==US East (N. Virginia).
7022	//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
7023	//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
7024	//    are OR'd together to retrieve cost or usage data. You can create Expression
7025	//    and DimensionValues objects using either with* methods or set* methods
7026	//    in multiple lines.
7027	//
7028	//    * Compound dimension values with logical operations - You can use multiple
7029	//    Expression types and the logical operators AND/OR/NOT to create a list
7030	//    of one or more Expression objects. By doing this, you can filter on more
7031	//    advanced options. For example, you can filter on ((REGION == us-east-1
7032	//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
7033	//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
7034	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
7035	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
7036	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
7037	//    Expression can have only one operator, the service returns an error if
7038	//    more than one is specified. The following example shows an Expression
7039	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
7040	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
7041	//
7042	// For the GetRightsizingRecommendation action, a combination of OR and NOT
7043	// isn't supported. OR isn't supported between different dimensions, or dimensions
7044	// and tags. NOT operators aren't supported. Dimensions are also limited to
7045	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
7046	//
7047	// For the GetReservationPurchaseRecommendation action, only NOT is supported.
7048	// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
7049	Filter *Expression `type:"structure"`
7050
7051	// This field is only used when SortBy is provided in the request. The maximum
7052	// number of objects that to be returned for this request. If MaxResults is
7053	// not specified with SortBy, the request will return 1000 results as the default
7054	// value for this parameter.
7055	//
7056	// For GetDimensionValues, MaxResults has an upper limit of 1000.
7057	MaxResults *int64 `min:"1" type:"integer"`
7058
7059	// The token to retrieve the next set of results. Amazon Web Services provides
7060	// the token when the response from a previous call has more results than the
7061	// maximum page size.
7062	NextPageToken *string `type:"string"`
7063
7064	// The value that you want to search the filter values for.
7065	SearchString *string `type:"string"`
7066
7067	// The value by which you want to sort the data.
7068	//
7069	// The key represents cost and usage metrics. The following values are supported:
7070	//
7071	//    * BlendedCost
7072	//
7073	//    * UnblendedCost
7074	//
7075	//    * AmortizedCost
7076	//
7077	//    * NetAmortizedCost
7078	//
7079	//    * NetUnblendedCost
7080	//
7081	//    * UsageQuantity
7082	//
7083	//    * NormalizedUsageAmount
7084	//
7085	// Supported values for SortOrder are ASCENDING or DESCENDING.
7086	//
7087	// When you specify a SortBy paramater, the context must be COST_AND_USAGE.
7088	// Further, when using SortBy, NextPageToken and SearchString are not supported.
7089	SortBy []*SortDefinition `type:"list"`
7090
7091	// The start date and end date for retrieving the dimension values. The start
7092	// date is inclusive, but the end date is exclusive. For example, if start is
7093	// 2017-01-01 and end is 2017-05-01, then the cost and usage data is retrieved
7094	// from 2017-01-01 up to and including 2017-04-30 but not including 2017-05-01.
7095	//
7096	// TimePeriod is a required field
7097	TimePeriod *DateInterval `type:"structure" required:"true"`
7098}
7099
7100// String returns the string representation
7101func (s GetDimensionValuesInput) String() string {
7102	return awsutil.Prettify(s)
7103}
7104
7105// GoString returns the string representation
7106func (s GetDimensionValuesInput) GoString() string {
7107	return s.String()
7108}
7109
7110// Validate inspects the fields of the type to determine if they are valid.
7111func (s *GetDimensionValuesInput) Validate() error {
7112	invalidParams := request.ErrInvalidParams{Context: "GetDimensionValuesInput"}
7113	if s.Dimension == nil {
7114		invalidParams.Add(request.NewErrParamRequired("Dimension"))
7115	}
7116	if s.MaxResults != nil && *s.MaxResults < 1 {
7117		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
7118	}
7119	if s.TimePeriod == nil {
7120		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
7121	}
7122	if s.Filter != nil {
7123		if err := s.Filter.Validate(); err != nil {
7124			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
7125		}
7126	}
7127	if s.SortBy != nil {
7128		for i, v := range s.SortBy {
7129			if v == nil {
7130				continue
7131			}
7132			if err := v.Validate(); err != nil {
7133				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SortBy", i), err.(request.ErrInvalidParams))
7134			}
7135		}
7136	}
7137	if s.TimePeriod != nil {
7138		if err := s.TimePeriod.Validate(); err != nil {
7139			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
7140		}
7141	}
7142
7143	if invalidParams.Len() > 0 {
7144		return invalidParams
7145	}
7146	return nil
7147}
7148
7149// SetContext sets the Context field's value.
7150func (s *GetDimensionValuesInput) SetContext(v string) *GetDimensionValuesInput {
7151	s.Context = &v
7152	return s
7153}
7154
7155// SetDimension sets the Dimension field's value.
7156func (s *GetDimensionValuesInput) SetDimension(v string) *GetDimensionValuesInput {
7157	s.Dimension = &v
7158	return s
7159}
7160
7161// SetFilter sets the Filter field's value.
7162func (s *GetDimensionValuesInput) SetFilter(v *Expression) *GetDimensionValuesInput {
7163	s.Filter = v
7164	return s
7165}
7166
7167// SetMaxResults sets the MaxResults field's value.
7168func (s *GetDimensionValuesInput) SetMaxResults(v int64) *GetDimensionValuesInput {
7169	s.MaxResults = &v
7170	return s
7171}
7172
7173// SetNextPageToken sets the NextPageToken field's value.
7174func (s *GetDimensionValuesInput) SetNextPageToken(v string) *GetDimensionValuesInput {
7175	s.NextPageToken = &v
7176	return s
7177}
7178
7179// SetSearchString sets the SearchString field's value.
7180func (s *GetDimensionValuesInput) SetSearchString(v string) *GetDimensionValuesInput {
7181	s.SearchString = &v
7182	return s
7183}
7184
7185// SetSortBy sets the SortBy field's value.
7186func (s *GetDimensionValuesInput) SetSortBy(v []*SortDefinition) *GetDimensionValuesInput {
7187	s.SortBy = v
7188	return s
7189}
7190
7191// SetTimePeriod sets the TimePeriod field's value.
7192func (s *GetDimensionValuesInput) SetTimePeriod(v *DateInterval) *GetDimensionValuesInput {
7193	s.TimePeriod = v
7194	return s
7195}
7196
7197type GetDimensionValuesOutput struct {
7198	_ struct{} `type:"structure"`
7199
7200	// The filters that you used to filter your request. Some dimensions are available
7201	// only for a specific context.
7202	//
7203	// If you set the context to COST_AND_USAGE, you can use the following dimensions
7204	// for searching:
7205	//
7206	//    * AZ - The Availability Zone. An example is us-east-1a.
7207	//
7208	//    * DATABASE_ENGINE - The Amazon Relational Database Service database. Examples
7209	//    are Aurora or MySQL.
7210	//
7211	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
7212	//
7213	//    * LEGAL_ENTITY_NAME - The name of the organization that sells you Amazon
7214	//    Web Services services, such as Amazon Web Services.
7215	//
7216	//    * LINKED_ACCOUNT - The description in the attribute map that includes
7217	//    the full name of the member account. The value field contains the Amazon
7218	//    Web Services ID of the member account.
7219	//
7220	//    * OPERATING_SYSTEM - The operating system. Examples are Windows or Linux.
7221	//
7222	//    * OPERATION - The action performed. Examples include RunInstance and CreateBucket.
7223	//
7224	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
7225	//    Linux.
7226	//
7227	//    * PURCHASE_TYPE - The reservation type of the purchase to which this usage
7228	//    is related. Examples include On-Demand Instances and Standard Reserved
7229	//    Instances.
7230	//
7231	//    * SERVICE - The Amazon Web Services service such as Amazon DynamoDB.
7232	//
7233	//    * USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes.
7234	//    The response for the GetDimensionValues operation includes a unit attribute.
7235	//    Examples include GB and Hrs.
7236	//
7237	//    * USAGE_TYPE_GROUP - The grouping of common usage types. An example is
7238	//    Amazon EC2: CloudWatch – Alarms. The response for this operation includes
7239	//    a unit attribute.
7240	//
7241	//    * RECORD_TYPE - The different types of charges such as RI fees, usage
7242	//    costs, tax refunds, and credits.
7243	//
7244	//    * RESOURCE_ID - The unique identifier of the resource. ResourceId is an
7245	//    opt-in feature only available for last 14 days for EC2-Compute Service.
7246	//
7247	// If you set the context to RESERVATIONS, you can use the following dimensions
7248	// for searching:
7249	//
7250	//    * AZ - The Availability Zone. An example is us-east-1a.
7251	//
7252	//    * CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are
7253	//    Windows or Linux.
7254	//
7255	//    * DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service
7256	//    deployments. Valid values are SingleAZ and MultiAZ.
7257	//
7258	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
7259	//
7260	//    * LINKED_ACCOUNT - The description in the attribute map that includes
7261	//    the full name of the member account. The value field contains the Amazon
7262	//    Web Services ID of the member account.
7263	//
7264	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
7265	//    Linux.
7266	//
7267	//    * REGION - The Amazon Web Services Region.
7268	//
7269	//    * SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values
7270	//    are regional or a single Availability Zone.
7271	//
7272	//    * TAG (Coverage only) - The tags that are associated with a Reserved Instance
7273	//    (RI).
7274	//
7275	//    * TENANCY - The tenancy of a resource. Examples are shared or dedicated.
7276	//
7277	// If you set the context to SAVINGS_PLANS, you can use the following dimensions
7278	// for searching:
7279	//
7280	//    * SAVINGS_PLANS_TYPE - Type of Savings Plans (EC2 Instance or Compute)
7281	//
7282	//    * PAYMENT_OPTION - Payment option for the given Savings Plans (for example,
7283	//    All Upfront)
7284	//
7285	//    * REGION - The Amazon Web Services Region.
7286	//
7287	//    * INSTANCE_TYPE_FAMILY - The family of instances (For example, m5)
7288	//
7289	//    * LINKED_ACCOUNT - The description in the attribute map that includes
7290	//    the full name of the member account. The value field contains the Amazon
7291	//    Web Services ID of the member account.
7292	//
7293	//    * SAVINGS_PLAN_ARN - The unique identifier for your Savings Plan
7294	//
7295	// DimensionValues is a required field
7296	DimensionValues []*DimensionValuesWithAttributes `type:"list" required:"true"`
7297
7298	// The token for the next set of retrievable results. Amazon Web Services provides
7299	// the token when the response from a previous call has more results than the
7300	// maximum page size.
7301	NextPageToken *string `type:"string"`
7302
7303	// The number of results that Amazon Web Services returned at one time.
7304	//
7305	// ReturnSize is a required field
7306	ReturnSize *int64 `type:"integer" required:"true"`
7307
7308	// The total number of search results.
7309	//
7310	// TotalSize is a required field
7311	TotalSize *int64 `type:"integer" required:"true"`
7312}
7313
7314// String returns the string representation
7315func (s GetDimensionValuesOutput) String() string {
7316	return awsutil.Prettify(s)
7317}
7318
7319// GoString returns the string representation
7320func (s GetDimensionValuesOutput) GoString() string {
7321	return s.String()
7322}
7323
7324// SetDimensionValues sets the DimensionValues field's value.
7325func (s *GetDimensionValuesOutput) SetDimensionValues(v []*DimensionValuesWithAttributes) *GetDimensionValuesOutput {
7326	s.DimensionValues = v
7327	return s
7328}
7329
7330// SetNextPageToken sets the NextPageToken field's value.
7331func (s *GetDimensionValuesOutput) SetNextPageToken(v string) *GetDimensionValuesOutput {
7332	s.NextPageToken = &v
7333	return s
7334}
7335
7336// SetReturnSize sets the ReturnSize field's value.
7337func (s *GetDimensionValuesOutput) SetReturnSize(v int64) *GetDimensionValuesOutput {
7338	s.ReturnSize = &v
7339	return s
7340}
7341
7342// SetTotalSize sets the TotalSize field's value.
7343func (s *GetDimensionValuesOutput) SetTotalSize(v int64) *GetDimensionValuesOutput {
7344	s.TotalSize = &v
7345	return s
7346}
7347
7348// You can use the following request parameters to query for how much of your
7349// instance usage a reservation covered.
7350type GetReservationCoverageInput struct {
7351	_ struct{} `type:"structure"`
7352
7353	// Filters utilization data by dimensions. You can filter by the following dimensions:
7354	//
7355	//    * AZ
7356	//
7357	//    * CACHE_ENGINE
7358	//
7359	//    * DATABASE_ENGINE
7360	//
7361	//    * DEPLOYMENT_OPTION
7362	//
7363	//    * INSTANCE_TYPE
7364	//
7365	//    * LINKED_ACCOUNT
7366	//
7367	//    * OPERATING_SYSTEM
7368	//
7369	//    * PLATFORM
7370	//
7371	//    * REGION
7372	//
7373	//    * SERVICE
7374	//
7375	//    * TAG
7376	//
7377	//    * TENANCY
7378	//
7379	// GetReservationCoverage uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
7380	// object as the other operations, but only AND is supported among each dimension.
7381	// You can nest only one level deep. If there are multiple values for a dimension,
7382	// they are OR'd together.
7383	//
7384	// If you don't provide a SERVICE filter, Cost Explorer defaults to EC2.
7385	//
7386	// Cost category is also supported.
7387	Filter *Expression `type:"structure"`
7388
7389	// The granularity of the Amazon Web Services cost data for the reservation.
7390	// Valid values are MONTHLY and DAILY.
7391	//
7392	// If GroupBy is set, Granularity can't be set. If Granularity isn't set, the
7393	// response object doesn't include Granularity, either MONTHLY or DAILY.
7394	//
7395	// The GetReservationCoverage operation supports only DAILY and MONTHLY granularities.
7396	Granularity *string `type:"string" enum:"Granularity"`
7397
7398	// You can group the data by the following attributes:
7399	//
7400	//    * AZ
7401	//
7402	//    * CACHE_ENGINE
7403	//
7404	//    * DATABASE_ENGINE
7405	//
7406	//    * DEPLOYMENT_OPTION
7407	//
7408	//    * INSTANCE_TYPE
7409	//
7410	//    * LINKED_ACCOUNT
7411	//
7412	//    * OPERATING_SYSTEM
7413	//
7414	//    * PLATFORM
7415	//
7416	//    * REGION
7417	//
7418	//    * TENANCY
7419	GroupBy []*GroupDefinition `type:"list"`
7420
7421	// The maximum number of objects that you returned for this request. If more
7422	// objects are available, in the response, Amazon Web Services provides a NextPageToken
7423	// value that you can use in a subsequent call to get the next batch of objects.
7424	MaxResults *int64 `min:"1" type:"integer"`
7425
7426	// The measurement that you want your reservation coverage reported in.
7427	//
7428	// Valid values are Hour, Unit, and Cost. You can use multiple values in a request.
7429	Metrics []*string `type:"list"`
7430
7431	// The token to retrieve the next set of results. Amazon Web Services provides
7432	// the token when the response from a previous call has more results than the
7433	// maximum page size.
7434	NextPageToken *string `type:"string"`
7435
7436	// The value by which you want to sort the data.
7437	//
7438	// The following values are supported for Key:
7439	//
7440	//    * OnDemandCost
7441	//
7442	//    * CoverageHoursPercentage
7443	//
7444	//    * OnDemandHours
7445	//
7446	//    * ReservedHours
7447	//
7448	//    * TotalRunningHours
7449	//
7450	//    * CoverageNormalizedUnitsPercentage
7451	//
7452	//    * OnDemandNormalizedUnits
7453	//
7454	//    * ReservedNormalizedUnits
7455	//
7456	//    * TotalRunningNormalizedUnits
7457	//
7458	//    * Time
7459	//
7460	// Supported values for SortOrder are ASCENDING or DESCENDING.
7461	SortBy *SortDefinition `type:"structure"`
7462
7463	// The start and end dates of the period that you want to retrieve data about
7464	// reservation coverage for. You can retrieve data for a maximum of 13 months:
7465	// the last 12 months and the current month. The start date is inclusive, but
7466	// the end date is exclusive. For example, if start is 2017-01-01 and end is
7467	// 2017-05-01, then the cost and usage data is retrieved from 2017-01-01 up
7468	// to and including 2017-04-30 but not including 2017-05-01.
7469	//
7470	// TimePeriod is a required field
7471	TimePeriod *DateInterval `type:"structure" required:"true"`
7472}
7473
7474// String returns the string representation
7475func (s GetReservationCoverageInput) String() string {
7476	return awsutil.Prettify(s)
7477}
7478
7479// GoString returns the string representation
7480func (s GetReservationCoverageInput) GoString() string {
7481	return s.String()
7482}
7483
7484// Validate inspects the fields of the type to determine if they are valid.
7485func (s *GetReservationCoverageInput) Validate() error {
7486	invalidParams := request.ErrInvalidParams{Context: "GetReservationCoverageInput"}
7487	if s.MaxResults != nil && *s.MaxResults < 1 {
7488		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
7489	}
7490	if s.TimePeriod == nil {
7491		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
7492	}
7493	if s.Filter != nil {
7494		if err := s.Filter.Validate(); err != nil {
7495			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
7496		}
7497	}
7498	if s.SortBy != nil {
7499		if err := s.SortBy.Validate(); err != nil {
7500			invalidParams.AddNested("SortBy", err.(request.ErrInvalidParams))
7501		}
7502	}
7503	if s.TimePeriod != nil {
7504		if err := s.TimePeriod.Validate(); err != nil {
7505			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
7506		}
7507	}
7508
7509	if invalidParams.Len() > 0 {
7510		return invalidParams
7511	}
7512	return nil
7513}
7514
7515// SetFilter sets the Filter field's value.
7516func (s *GetReservationCoverageInput) SetFilter(v *Expression) *GetReservationCoverageInput {
7517	s.Filter = v
7518	return s
7519}
7520
7521// SetGranularity sets the Granularity field's value.
7522func (s *GetReservationCoverageInput) SetGranularity(v string) *GetReservationCoverageInput {
7523	s.Granularity = &v
7524	return s
7525}
7526
7527// SetGroupBy sets the GroupBy field's value.
7528func (s *GetReservationCoverageInput) SetGroupBy(v []*GroupDefinition) *GetReservationCoverageInput {
7529	s.GroupBy = v
7530	return s
7531}
7532
7533// SetMaxResults sets the MaxResults field's value.
7534func (s *GetReservationCoverageInput) SetMaxResults(v int64) *GetReservationCoverageInput {
7535	s.MaxResults = &v
7536	return s
7537}
7538
7539// SetMetrics sets the Metrics field's value.
7540func (s *GetReservationCoverageInput) SetMetrics(v []*string) *GetReservationCoverageInput {
7541	s.Metrics = v
7542	return s
7543}
7544
7545// SetNextPageToken sets the NextPageToken field's value.
7546func (s *GetReservationCoverageInput) SetNextPageToken(v string) *GetReservationCoverageInput {
7547	s.NextPageToken = &v
7548	return s
7549}
7550
7551// SetSortBy sets the SortBy field's value.
7552func (s *GetReservationCoverageInput) SetSortBy(v *SortDefinition) *GetReservationCoverageInput {
7553	s.SortBy = v
7554	return s
7555}
7556
7557// SetTimePeriod sets the TimePeriod field's value.
7558func (s *GetReservationCoverageInput) SetTimePeriod(v *DateInterval) *GetReservationCoverageInput {
7559	s.TimePeriod = v
7560	return s
7561}
7562
7563type GetReservationCoverageOutput struct {
7564	_ struct{} `type:"structure"`
7565
7566	// The amount of time that your reservations covered.
7567	//
7568	// CoveragesByTime is a required field
7569	CoveragesByTime []*CoverageByTime `type:"list" required:"true"`
7570
7571	// The token for the next set of retrievable results. Amazon Web Services provides
7572	// the token when the response from a previous call has more results than the
7573	// maximum page size.
7574	NextPageToken *string `type:"string"`
7575
7576	// The total amount of instance usage that a reservation covered.
7577	Total *Coverage `type:"structure"`
7578}
7579
7580// String returns the string representation
7581func (s GetReservationCoverageOutput) String() string {
7582	return awsutil.Prettify(s)
7583}
7584
7585// GoString returns the string representation
7586func (s GetReservationCoverageOutput) GoString() string {
7587	return s.String()
7588}
7589
7590// SetCoveragesByTime sets the CoveragesByTime field's value.
7591func (s *GetReservationCoverageOutput) SetCoveragesByTime(v []*CoverageByTime) *GetReservationCoverageOutput {
7592	s.CoveragesByTime = v
7593	return s
7594}
7595
7596// SetNextPageToken sets the NextPageToken field's value.
7597func (s *GetReservationCoverageOutput) SetNextPageToken(v string) *GetReservationCoverageOutput {
7598	s.NextPageToken = &v
7599	return s
7600}
7601
7602// SetTotal sets the Total field's value.
7603func (s *GetReservationCoverageOutput) SetTotal(v *Coverage) *GetReservationCoverageOutput {
7604	s.Total = v
7605	return s
7606}
7607
7608type GetReservationPurchaseRecommendationInput struct {
7609	_ struct{} `type:"structure"`
7610
7611	// The account ID that is associated with the recommendation.
7612	AccountId *string `type:"string"`
7613
7614	// The account scope that you want your recommendations for. Amazon Web Services
7615	// calculates recommendations including the management account and member accounts
7616	// if the value is set to PAYER. If the value is LINKED, recommendations are
7617	// calculated for individual member accounts only.
7618	AccountScope *string `type:"string" enum:"AccountScope"`
7619
7620	// Use Expression to filter by cost or by usage. There are two patterns:
7621	//
7622	//    * Simple dimension values - You can set the dimension name and values
7623	//    for the filters that you plan to use. For example, you can filter for
7624	//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
7625	//    the Region is a full name (for example, REGION==US East (N. Virginia).
7626	//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
7627	//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
7628	//    are OR'd together to retrieve cost or usage data. You can create Expression
7629	//    and DimensionValues objects using either with* methods or set* methods
7630	//    in multiple lines.
7631	//
7632	//    * Compound dimension values with logical operations - You can use multiple
7633	//    Expression types and the logical operators AND/OR/NOT to create a list
7634	//    of one or more Expression objects. By doing this, you can filter on more
7635	//    advanced options. For example, you can filter on ((REGION == us-east-1
7636	//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
7637	//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
7638	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
7639	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
7640	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
7641	//    Expression can have only one operator, the service returns an error if
7642	//    more than one is specified. The following example shows an Expression
7643	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
7644	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
7645	//
7646	// For the GetRightsizingRecommendation action, a combination of OR and NOT
7647	// isn't supported. OR isn't supported between different dimensions, or dimensions
7648	// and tags. NOT operators aren't supported. Dimensions are also limited to
7649	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
7650	//
7651	// For the GetReservationPurchaseRecommendation action, only NOT is supported.
7652	// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
7653	Filter *Expression `type:"structure"`
7654
7655	// The number of previous days that you want Amazon Web Services to consider
7656	// when it calculates your recommendations.
7657	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
7658
7659	// The pagination token that indicates the next set of results that you want
7660	// to retrieve.
7661	NextPageToken *string `type:"string"`
7662
7663	// The number of recommendations that you want returned in a single response
7664	// object.
7665	PageSize *int64 `type:"integer"`
7666
7667	// The reservation purchase option that you want recommendations for.
7668	PaymentOption *string `type:"string" enum:"PaymentOption"`
7669
7670	// The specific service that you want recommendations for.
7671	//
7672	// Service is a required field
7673	Service *string `type:"string" required:"true"`
7674
7675	// The hardware specifications for the service instances that you want recommendations
7676	// for, such as standard or convertible Amazon EC2 instances.
7677	ServiceSpecification *ServiceSpecification `type:"structure"`
7678
7679	// The reservation term that you want recommendations for.
7680	TermInYears *string `type:"string" enum:"TermInYears"`
7681}
7682
7683// String returns the string representation
7684func (s GetReservationPurchaseRecommendationInput) String() string {
7685	return awsutil.Prettify(s)
7686}
7687
7688// GoString returns the string representation
7689func (s GetReservationPurchaseRecommendationInput) GoString() string {
7690	return s.String()
7691}
7692
7693// Validate inspects the fields of the type to determine if they are valid.
7694func (s *GetReservationPurchaseRecommendationInput) Validate() error {
7695	invalidParams := request.ErrInvalidParams{Context: "GetReservationPurchaseRecommendationInput"}
7696	if s.Service == nil {
7697		invalidParams.Add(request.NewErrParamRequired("Service"))
7698	}
7699	if s.Filter != nil {
7700		if err := s.Filter.Validate(); err != nil {
7701			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
7702		}
7703	}
7704
7705	if invalidParams.Len() > 0 {
7706		return invalidParams
7707	}
7708	return nil
7709}
7710
7711// SetAccountId sets the AccountId field's value.
7712func (s *GetReservationPurchaseRecommendationInput) SetAccountId(v string) *GetReservationPurchaseRecommendationInput {
7713	s.AccountId = &v
7714	return s
7715}
7716
7717// SetAccountScope sets the AccountScope field's value.
7718func (s *GetReservationPurchaseRecommendationInput) SetAccountScope(v string) *GetReservationPurchaseRecommendationInput {
7719	s.AccountScope = &v
7720	return s
7721}
7722
7723// SetFilter sets the Filter field's value.
7724func (s *GetReservationPurchaseRecommendationInput) SetFilter(v *Expression) *GetReservationPurchaseRecommendationInput {
7725	s.Filter = v
7726	return s
7727}
7728
7729// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
7730func (s *GetReservationPurchaseRecommendationInput) SetLookbackPeriodInDays(v string) *GetReservationPurchaseRecommendationInput {
7731	s.LookbackPeriodInDays = &v
7732	return s
7733}
7734
7735// SetNextPageToken sets the NextPageToken field's value.
7736func (s *GetReservationPurchaseRecommendationInput) SetNextPageToken(v string) *GetReservationPurchaseRecommendationInput {
7737	s.NextPageToken = &v
7738	return s
7739}
7740
7741// SetPageSize sets the PageSize field's value.
7742func (s *GetReservationPurchaseRecommendationInput) SetPageSize(v int64) *GetReservationPurchaseRecommendationInput {
7743	s.PageSize = &v
7744	return s
7745}
7746
7747// SetPaymentOption sets the PaymentOption field's value.
7748func (s *GetReservationPurchaseRecommendationInput) SetPaymentOption(v string) *GetReservationPurchaseRecommendationInput {
7749	s.PaymentOption = &v
7750	return s
7751}
7752
7753// SetService sets the Service field's value.
7754func (s *GetReservationPurchaseRecommendationInput) SetService(v string) *GetReservationPurchaseRecommendationInput {
7755	s.Service = &v
7756	return s
7757}
7758
7759// SetServiceSpecification sets the ServiceSpecification field's value.
7760func (s *GetReservationPurchaseRecommendationInput) SetServiceSpecification(v *ServiceSpecification) *GetReservationPurchaseRecommendationInput {
7761	s.ServiceSpecification = v
7762	return s
7763}
7764
7765// SetTermInYears sets the TermInYears field's value.
7766func (s *GetReservationPurchaseRecommendationInput) SetTermInYears(v string) *GetReservationPurchaseRecommendationInput {
7767	s.TermInYears = &v
7768	return s
7769}
7770
7771type GetReservationPurchaseRecommendationOutput struct {
7772	_ struct{} `type:"structure"`
7773
7774	// Information about this specific recommendation call, such as the time stamp
7775	// for when Cost Explorer generated this recommendation.
7776	Metadata *ReservationPurchaseRecommendationMetadata `type:"structure"`
7777
7778	// The pagination token for the next set of retrievable results.
7779	NextPageToken *string `type:"string"`
7780
7781	// Recommendations for reservations to purchase.
7782	Recommendations []*ReservationPurchaseRecommendation `type:"list"`
7783}
7784
7785// String returns the string representation
7786func (s GetReservationPurchaseRecommendationOutput) String() string {
7787	return awsutil.Prettify(s)
7788}
7789
7790// GoString returns the string representation
7791func (s GetReservationPurchaseRecommendationOutput) GoString() string {
7792	return s.String()
7793}
7794
7795// SetMetadata sets the Metadata field's value.
7796func (s *GetReservationPurchaseRecommendationOutput) SetMetadata(v *ReservationPurchaseRecommendationMetadata) *GetReservationPurchaseRecommendationOutput {
7797	s.Metadata = v
7798	return s
7799}
7800
7801// SetNextPageToken sets the NextPageToken field's value.
7802func (s *GetReservationPurchaseRecommendationOutput) SetNextPageToken(v string) *GetReservationPurchaseRecommendationOutput {
7803	s.NextPageToken = &v
7804	return s
7805}
7806
7807// SetRecommendations sets the Recommendations field's value.
7808func (s *GetReservationPurchaseRecommendationOutput) SetRecommendations(v []*ReservationPurchaseRecommendation) *GetReservationPurchaseRecommendationOutput {
7809	s.Recommendations = v
7810	return s
7811}
7812
7813type GetReservationUtilizationInput struct {
7814	_ struct{} `type:"structure"`
7815
7816	// Filters utilization data by dimensions. You can filter by the following dimensions:
7817	//
7818	//    * AZ
7819	//
7820	//    * CACHE_ENGINE
7821	//
7822	//    * DEPLOYMENT_OPTION
7823	//
7824	//    * INSTANCE_TYPE
7825	//
7826	//    * LINKED_ACCOUNT
7827	//
7828	//    * OPERATING_SYSTEM
7829	//
7830	//    * PLATFORM
7831	//
7832	//    * REGION
7833	//
7834	//    * SERVICE
7835	//
7836	//    * SCOPE
7837	//
7838	//    * TENANCY
7839	//
7840	// GetReservationUtilization uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
7841	// object as the other operations, but only AND is supported among each dimension,
7842	// and nesting is supported up to only one level deep. If there are multiple
7843	// values for a dimension, they are OR'd together.
7844	Filter *Expression `type:"structure"`
7845
7846	// If GroupBy is set, Granularity can't be set. If Granularity isn't set, the
7847	// response object doesn't include Granularity, either MONTHLY or DAILY. If
7848	// both GroupBy and Granularity aren't set, GetReservationUtilization defaults
7849	// to DAILY.
7850	//
7851	// The GetReservationUtilization operation supports only DAILY and MONTHLY granularities.
7852	Granularity *string `type:"string" enum:"Granularity"`
7853
7854	// Groups only by SUBSCRIPTION_ID. Metadata is included.
7855	GroupBy []*GroupDefinition `type:"list"`
7856
7857	// The maximum number of objects that you returned for this request. If more
7858	// objects are available, in the response, Amazon Web Services provides a NextPageToken
7859	// value that you can use in a subsequent call to get the next batch of objects.
7860	MaxResults *int64 `min:"1" type:"integer"`
7861
7862	// The token to retrieve the next set of results. Amazon Web Services provides
7863	// the token when the response from a previous call has more results than the
7864	// maximum page size.
7865	NextPageToken *string `type:"string"`
7866
7867	// The value by which you want to sort the data.
7868	//
7869	// The following values are supported for Key:
7870	//
7871	//    * UtilizationPercentage
7872	//
7873	//    * UtilizationPercentageInUnits
7874	//
7875	//    * PurchasedHours
7876	//
7877	//    * PurchasedUnits
7878	//
7879	//    * TotalActualHours
7880	//
7881	//    * TotalActualUnits
7882	//
7883	//    * UnusedHours
7884	//
7885	//    * UnusedUnits
7886	//
7887	//    * OnDemandCostOfRIHoursUsed
7888	//
7889	//    * NetRISavings
7890	//
7891	//    * TotalPotentialRISavings
7892	//
7893	//    * AmortizedUpfrontFee
7894	//
7895	//    * AmortizedRecurringFee
7896	//
7897	//    * TotalAmortizedFee
7898	//
7899	//    * RICostForUnusedHours
7900	//
7901	//    * RealizedSavings
7902	//
7903	//    * UnrealizedSavings
7904	//
7905	// Supported values for SortOrder are ASCENDING or DESCENDING.
7906	SortBy *SortDefinition `type:"structure"`
7907
7908	// Sets the start and end dates for retrieving RI utilization. The start date
7909	// is inclusive, but the end date is exclusive. For example, if start is 2017-01-01
7910	// and end is 2017-05-01, then the cost and usage data is retrieved from 2017-01-01
7911	// up to and including 2017-04-30 but not including 2017-05-01.
7912	//
7913	// TimePeriod is a required field
7914	TimePeriod *DateInterval `type:"structure" required:"true"`
7915}
7916
7917// String returns the string representation
7918func (s GetReservationUtilizationInput) String() string {
7919	return awsutil.Prettify(s)
7920}
7921
7922// GoString returns the string representation
7923func (s GetReservationUtilizationInput) GoString() string {
7924	return s.String()
7925}
7926
7927// Validate inspects the fields of the type to determine if they are valid.
7928func (s *GetReservationUtilizationInput) Validate() error {
7929	invalidParams := request.ErrInvalidParams{Context: "GetReservationUtilizationInput"}
7930	if s.MaxResults != nil && *s.MaxResults < 1 {
7931		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
7932	}
7933	if s.TimePeriod == nil {
7934		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
7935	}
7936	if s.Filter != nil {
7937		if err := s.Filter.Validate(); err != nil {
7938			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
7939		}
7940	}
7941	if s.SortBy != nil {
7942		if err := s.SortBy.Validate(); err != nil {
7943			invalidParams.AddNested("SortBy", err.(request.ErrInvalidParams))
7944		}
7945	}
7946	if s.TimePeriod != nil {
7947		if err := s.TimePeriod.Validate(); err != nil {
7948			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
7949		}
7950	}
7951
7952	if invalidParams.Len() > 0 {
7953		return invalidParams
7954	}
7955	return nil
7956}
7957
7958// SetFilter sets the Filter field's value.
7959func (s *GetReservationUtilizationInput) SetFilter(v *Expression) *GetReservationUtilizationInput {
7960	s.Filter = v
7961	return s
7962}
7963
7964// SetGranularity sets the Granularity field's value.
7965func (s *GetReservationUtilizationInput) SetGranularity(v string) *GetReservationUtilizationInput {
7966	s.Granularity = &v
7967	return s
7968}
7969
7970// SetGroupBy sets the GroupBy field's value.
7971func (s *GetReservationUtilizationInput) SetGroupBy(v []*GroupDefinition) *GetReservationUtilizationInput {
7972	s.GroupBy = v
7973	return s
7974}
7975
7976// SetMaxResults sets the MaxResults field's value.
7977func (s *GetReservationUtilizationInput) SetMaxResults(v int64) *GetReservationUtilizationInput {
7978	s.MaxResults = &v
7979	return s
7980}
7981
7982// SetNextPageToken sets the NextPageToken field's value.
7983func (s *GetReservationUtilizationInput) SetNextPageToken(v string) *GetReservationUtilizationInput {
7984	s.NextPageToken = &v
7985	return s
7986}
7987
7988// SetSortBy sets the SortBy field's value.
7989func (s *GetReservationUtilizationInput) SetSortBy(v *SortDefinition) *GetReservationUtilizationInput {
7990	s.SortBy = v
7991	return s
7992}
7993
7994// SetTimePeriod sets the TimePeriod field's value.
7995func (s *GetReservationUtilizationInput) SetTimePeriod(v *DateInterval) *GetReservationUtilizationInput {
7996	s.TimePeriod = v
7997	return s
7998}
7999
8000type GetReservationUtilizationOutput struct {
8001	_ struct{} `type:"structure"`
8002
8003	// The token for the next set of retrievable results. Amazon Web Services provides
8004	// the token when the response from a previous call has more results than the
8005	// maximum page size.
8006	NextPageToken *string `type:"string"`
8007
8008	// The total amount of time that you used your RIs.
8009	Total *ReservationAggregates `type:"structure"`
8010
8011	// The amount of time that you used your RIs.
8012	//
8013	// UtilizationsByTime is a required field
8014	UtilizationsByTime []*UtilizationByTime `type:"list" required:"true"`
8015}
8016
8017// String returns the string representation
8018func (s GetReservationUtilizationOutput) String() string {
8019	return awsutil.Prettify(s)
8020}
8021
8022// GoString returns the string representation
8023func (s GetReservationUtilizationOutput) GoString() string {
8024	return s.String()
8025}
8026
8027// SetNextPageToken sets the NextPageToken field's value.
8028func (s *GetReservationUtilizationOutput) SetNextPageToken(v string) *GetReservationUtilizationOutput {
8029	s.NextPageToken = &v
8030	return s
8031}
8032
8033// SetTotal sets the Total field's value.
8034func (s *GetReservationUtilizationOutput) SetTotal(v *ReservationAggregates) *GetReservationUtilizationOutput {
8035	s.Total = v
8036	return s
8037}
8038
8039// SetUtilizationsByTime sets the UtilizationsByTime field's value.
8040func (s *GetReservationUtilizationOutput) SetUtilizationsByTime(v []*UtilizationByTime) *GetReservationUtilizationOutput {
8041	s.UtilizationsByTime = v
8042	return s
8043}
8044
8045type GetRightsizingRecommendationInput struct {
8046	_ struct{} `type:"structure"`
8047
8048	// Enables you to customize recommendations across two attributes. You can choose
8049	// to view recommendations for instances within the same instance families or
8050	// across different instance families. You can also choose to view your estimated
8051	// savings associated with recommendations with consideration of existing Savings
8052	// Plans or RI benefits, or neither.
8053	Configuration *RightsizingRecommendationConfiguration `type:"structure"`
8054
8055	// Use Expression to filter by cost or by usage. There are two patterns:
8056	//
8057	//    * Simple dimension values - You can set the dimension name and values
8058	//    for the filters that you plan to use. For example, you can filter for
8059	//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
8060	//    the Region is a full name (for example, REGION==US East (N. Virginia).
8061	//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
8062	//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
8063	//    are OR'd together to retrieve cost or usage data. You can create Expression
8064	//    and DimensionValues objects using either with* methods or set* methods
8065	//    in multiple lines.
8066	//
8067	//    * Compound dimension values with logical operations - You can use multiple
8068	//    Expression types and the logical operators AND/OR/NOT to create a list
8069	//    of one or more Expression objects. By doing this, you can filter on more
8070	//    advanced options. For example, you can filter on ((REGION == us-east-1
8071	//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
8072	//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
8073	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
8074	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
8075	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
8076	//    Expression can have only one operator, the service returns an error if
8077	//    more than one is specified. The following example shows an Expression
8078	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
8079	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
8080	//
8081	// For the GetRightsizingRecommendation action, a combination of OR and NOT
8082	// isn't supported. OR isn't supported between different dimensions, or dimensions
8083	// and tags. NOT operators aren't supported. Dimensions are also limited to
8084	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
8085	//
8086	// For the GetReservationPurchaseRecommendation action, only NOT is supported.
8087	// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
8088	Filter *Expression `type:"structure"`
8089
8090	// The pagination token that indicates the next set of results that you want
8091	// to retrieve.
8092	NextPageToken *string `type:"string"`
8093
8094	// The number of recommendations that you want returned in a single response
8095	// object.
8096	PageSize *int64 `type:"integer"`
8097
8098	// The specific service that you want recommendations for. The only valid value
8099	// for GetRightsizingRecommendation is "AmazonEC2".
8100	//
8101	// Service is a required field
8102	Service *string `type:"string" required:"true"`
8103}
8104
8105// String returns the string representation
8106func (s GetRightsizingRecommendationInput) String() string {
8107	return awsutil.Prettify(s)
8108}
8109
8110// GoString returns the string representation
8111func (s GetRightsizingRecommendationInput) GoString() string {
8112	return s.String()
8113}
8114
8115// Validate inspects the fields of the type to determine if they are valid.
8116func (s *GetRightsizingRecommendationInput) Validate() error {
8117	invalidParams := request.ErrInvalidParams{Context: "GetRightsizingRecommendationInput"}
8118	if s.Service == nil {
8119		invalidParams.Add(request.NewErrParamRequired("Service"))
8120	}
8121	if s.Configuration != nil {
8122		if err := s.Configuration.Validate(); err != nil {
8123			invalidParams.AddNested("Configuration", err.(request.ErrInvalidParams))
8124		}
8125	}
8126	if s.Filter != nil {
8127		if err := s.Filter.Validate(); err != nil {
8128			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
8129		}
8130	}
8131
8132	if invalidParams.Len() > 0 {
8133		return invalidParams
8134	}
8135	return nil
8136}
8137
8138// SetConfiguration sets the Configuration field's value.
8139func (s *GetRightsizingRecommendationInput) SetConfiguration(v *RightsizingRecommendationConfiguration) *GetRightsizingRecommendationInput {
8140	s.Configuration = v
8141	return s
8142}
8143
8144// SetFilter sets the Filter field's value.
8145func (s *GetRightsizingRecommendationInput) SetFilter(v *Expression) *GetRightsizingRecommendationInput {
8146	s.Filter = v
8147	return s
8148}
8149
8150// SetNextPageToken sets the NextPageToken field's value.
8151func (s *GetRightsizingRecommendationInput) SetNextPageToken(v string) *GetRightsizingRecommendationInput {
8152	s.NextPageToken = &v
8153	return s
8154}
8155
8156// SetPageSize sets the PageSize field's value.
8157func (s *GetRightsizingRecommendationInput) SetPageSize(v int64) *GetRightsizingRecommendationInput {
8158	s.PageSize = &v
8159	return s
8160}
8161
8162// SetService sets the Service field's value.
8163func (s *GetRightsizingRecommendationInput) SetService(v string) *GetRightsizingRecommendationInput {
8164	s.Service = &v
8165	return s
8166}
8167
8168type GetRightsizingRecommendationOutput struct {
8169	_ struct{} `type:"structure"`
8170
8171	// Enables you to customize recommendations across two attributes. You can choose
8172	// to view recommendations for instances within the same instance families or
8173	// across different instance families. You can also choose to view your estimated
8174	// savings associated with recommendations with consideration of existing Savings
8175	// Plans or RI benefits, or neither.
8176	Configuration *RightsizingRecommendationConfiguration `type:"structure"`
8177
8178	// Information regarding this specific recommendation set.
8179	Metadata *RightsizingRecommendationMetadata `type:"structure"`
8180
8181	// The token to retrieve the next set of results.
8182	NextPageToken *string `type:"string"`
8183
8184	// Recommendations to rightsize resources.
8185	RightsizingRecommendations []*RightsizingRecommendation `type:"list"`
8186
8187	// Summary of this recommendation set.
8188	Summary *RightsizingRecommendationSummary `type:"structure"`
8189}
8190
8191// String returns the string representation
8192func (s GetRightsizingRecommendationOutput) String() string {
8193	return awsutil.Prettify(s)
8194}
8195
8196// GoString returns the string representation
8197func (s GetRightsizingRecommendationOutput) GoString() string {
8198	return s.String()
8199}
8200
8201// SetConfiguration sets the Configuration field's value.
8202func (s *GetRightsizingRecommendationOutput) SetConfiguration(v *RightsizingRecommendationConfiguration) *GetRightsizingRecommendationOutput {
8203	s.Configuration = v
8204	return s
8205}
8206
8207// SetMetadata sets the Metadata field's value.
8208func (s *GetRightsizingRecommendationOutput) SetMetadata(v *RightsizingRecommendationMetadata) *GetRightsizingRecommendationOutput {
8209	s.Metadata = v
8210	return s
8211}
8212
8213// SetNextPageToken sets the NextPageToken field's value.
8214func (s *GetRightsizingRecommendationOutput) SetNextPageToken(v string) *GetRightsizingRecommendationOutput {
8215	s.NextPageToken = &v
8216	return s
8217}
8218
8219// SetRightsizingRecommendations sets the RightsizingRecommendations field's value.
8220func (s *GetRightsizingRecommendationOutput) SetRightsizingRecommendations(v []*RightsizingRecommendation) *GetRightsizingRecommendationOutput {
8221	s.RightsizingRecommendations = v
8222	return s
8223}
8224
8225// SetSummary sets the Summary field's value.
8226func (s *GetRightsizingRecommendationOutput) SetSummary(v *RightsizingRecommendationSummary) *GetRightsizingRecommendationOutput {
8227	s.Summary = v
8228	return s
8229}
8230
8231type GetSavingsPlansCoverageInput struct {
8232	_ struct{} `type:"structure"`
8233
8234	// Filters Savings Plans coverage data by dimensions. You can filter data for
8235	// Savings Plans usage with the following dimensions:
8236	//
8237	//    * LINKED_ACCOUNT
8238	//
8239	//    * REGION
8240	//
8241	//    * SERVICE
8242	//
8243	//    * INSTANCE_FAMILY
8244	//
8245	// GetSavingsPlansCoverage uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
8246	// object as the other operations, but only AND is supported among each dimension.
8247	// If there are multiple values for a dimension, they are OR'd together.
8248	//
8249	// Cost category is also supported.
8250	Filter *Expression `type:"structure"`
8251
8252	// The granularity of the Amazon Web Services cost data for your Savings Plans.
8253	// Granularity can't be set if GroupBy is set.
8254	//
8255	// The GetSavingsPlansCoverage operation supports only DAILY and MONTHLY granularities.
8256	Granularity *string `type:"string" enum:"Granularity"`
8257
8258	// You can group the data using the attributes INSTANCE_FAMILY, REGION, or SERVICE.
8259	GroupBy []*GroupDefinition `type:"list"`
8260
8261	// The number of items to be returned in a response. The default is 20, with
8262	// a minimum value of 1.
8263	MaxResults *int64 `min:"1" type:"integer"`
8264
8265	// The measurement that you want your Savings Plans coverage reported in. The
8266	// only valid value is SpendCoveredBySavingsPlans.
8267	Metrics []*string `type:"list"`
8268
8269	// The token to retrieve the next set of results. Amazon Web Services provides
8270	// the token when the response from a previous call has more results than the
8271	// maximum page size.
8272	NextToken *string `type:"string"`
8273
8274	// The value by which you want to sort the data.
8275	//
8276	// The following values are supported for Key:
8277	//
8278	//    * SpendCoveredBySavingsPlan
8279	//
8280	//    * OnDemandCost
8281	//
8282	//    * CoveragePercentage
8283	//
8284	//    * TotalCost
8285	//
8286	//    * InstanceFamily
8287	//
8288	//    * Region
8289	//
8290	//    * Service
8291	//
8292	// Supported values for SortOrder are ASCENDING or DESCENDING.
8293	SortBy *SortDefinition `type:"structure"`
8294
8295	// The time period that you want the usage and costs for. The Start date must
8296	// be within 13 months. The End date must be after the Start date, and before
8297	// the current date. Future dates can't be used as an End date.
8298	//
8299	// TimePeriod is a required field
8300	TimePeriod *DateInterval `type:"structure" required:"true"`
8301}
8302
8303// String returns the string representation
8304func (s GetSavingsPlansCoverageInput) String() string {
8305	return awsutil.Prettify(s)
8306}
8307
8308// GoString returns the string representation
8309func (s GetSavingsPlansCoverageInput) GoString() string {
8310	return s.String()
8311}
8312
8313// Validate inspects the fields of the type to determine if they are valid.
8314func (s *GetSavingsPlansCoverageInput) Validate() error {
8315	invalidParams := request.ErrInvalidParams{Context: "GetSavingsPlansCoverageInput"}
8316	if s.MaxResults != nil && *s.MaxResults < 1 {
8317		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
8318	}
8319	if s.TimePeriod == nil {
8320		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
8321	}
8322	if s.Filter != nil {
8323		if err := s.Filter.Validate(); err != nil {
8324			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
8325		}
8326	}
8327	if s.SortBy != nil {
8328		if err := s.SortBy.Validate(); err != nil {
8329			invalidParams.AddNested("SortBy", err.(request.ErrInvalidParams))
8330		}
8331	}
8332	if s.TimePeriod != nil {
8333		if err := s.TimePeriod.Validate(); err != nil {
8334			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
8335		}
8336	}
8337
8338	if invalidParams.Len() > 0 {
8339		return invalidParams
8340	}
8341	return nil
8342}
8343
8344// SetFilter sets the Filter field's value.
8345func (s *GetSavingsPlansCoverageInput) SetFilter(v *Expression) *GetSavingsPlansCoverageInput {
8346	s.Filter = v
8347	return s
8348}
8349
8350// SetGranularity sets the Granularity field's value.
8351func (s *GetSavingsPlansCoverageInput) SetGranularity(v string) *GetSavingsPlansCoverageInput {
8352	s.Granularity = &v
8353	return s
8354}
8355
8356// SetGroupBy sets the GroupBy field's value.
8357func (s *GetSavingsPlansCoverageInput) SetGroupBy(v []*GroupDefinition) *GetSavingsPlansCoverageInput {
8358	s.GroupBy = v
8359	return s
8360}
8361
8362// SetMaxResults sets the MaxResults field's value.
8363func (s *GetSavingsPlansCoverageInput) SetMaxResults(v int64) *GetSavingsPlansCoverageInput {
8364	s.MaxResults = &v
8365	return s
8366}
8367
8368// SetMetrics sets the Metrics field's value.
8369func (s *GetSavingsPlansCoverageInput) SetMetrics(v []*string) *GetSavingsPlansCoverageInput {
8370	s.Metrics = v
8371	return s
8372}
8373
8374// SetNextToken sets the NextToken field's value.
8375func (s *GetSavingsPlansCoverageInput) SetNextToken(v string) *GetSavingsPlansCoverageInput {
8376	s.NextToken = &v
8377	return s
8378}
8379
8380// SetSortBy sets the SortBy field's value.
8381func (s *GetSavingsPlansCoverageInput) SetSortBy(v *SortDefinition) *GetSavingsPlansCoverageInput {
8382	s.SortBy = v
8383	return s
8384}
8385
8386// SetTimePeriod sets the TimePeriod field's value.
8387func (s *GetSavingsPlansCoverageInput) SetTimePeriod(v *DateInterval) *GetSavingsPlansCoverageInput {
8388	s.TimePeriod = v
8389	return s
8390}
8391
8392type GetSavingsPlansCoverageOutput struct {
8393	_ struct{} `type:"structure"`
8394
8395	// The token to retrieve the next set of results. Amazon Web Services provides
8396	// the token when the response from a previous call has more results than the
8397	// maximum page size.
8398	NextToken *string `type:"string"`
8399
8400	// The amount of spend that your Savings Plans covered.
8401	//
8402	// SavingsPlansCoverages is a required field
8403	SavingsPlansCoverages []*SavingsPlansCoverage `type:"list" required:"true"`
8404}
8405
8406// String returns the string representation
8407func (s GetSavingsPlansCoverageOutput) String() string {
8408	return awsutil.Prettify(s)
8409}
8410
8411// GoString returns the string representation
8412func (s GetSavingsPlansCoverageOutput) GoString() string {
8413	return s.String()
8414}
8415
8416// SetNextToken sets the NextToken field's value.
8417func (s *GetSavingsPlansCoverageOutput) SetNextToken(v string) *GetSavingsPlansCoverageOutput {
8418	s.NextToken = &v
8419	return s
8420}
8421
8422// SetSavingsPlansCoverages sets the SavingsPlansCoverages field's value.
8423func (s *GetSavingsPlansCoverageOutput) SetSavingsPlansCoverages(v []*SavingsPlansCoverage) *GetSavingsPlansCoverageOutput {
8424	s.SavingsPlansCoverages = v
8425	return s
8426}
8427
8428type GetSavingsPlansPurchaseRecommendationInput struct {
8429	_ struct{} `type:"structure"`
8430
8431	// The account scope that you want your recommendations for. Amazon Web Services
8432	// calculates recommendations including the management account and member accounts
8433	// if the value is set to PAYER. If the value is LINKED, recommendations are
8434	// calculated for individual member accounts only.
8435	AccountScope *string `type:"string" enum:"AccountScope"`
8436
8437	// You can filter your recommendations by Account ID with the LINKED_ACCOUNT
8438	// dimension. To filter your recommendations by Account ID, specify Key as LINKED_ACCOUNT
8439	// and Value as the comma-separated Acount ID(s) for which you want to see Savings
8440	// Plans purchase recommendations.
8441	//
8442	// For GetSavingsPlansPurchaseRecommendation, the Filter does not include CostCategories
8443	// or Tags. It only includes Dimensions. With Dimensions, Key must be LINKED_ACCOUNT
8444	// and Value can be a single Account ID or multiple comma-separated Account
8445	// IDs for which you want to see Savings Plans Purchase Recommendations. AND
8446	// and OR operators are not supported.
8447	Filter *Expression `type:"structure"`
8448
8449	// The lookback period used to generate the recommendation.
8450	//
8451	// LookbackPeriodInDays is a required field
8452	LookbackPeriodInDays *string `type:"string" required:"true" enum:"LookbackPeriodInDays"`
8453
8454	// The token to retrieve the next set of results. Amazon Web Services provides
8455	// the token when the response from a previous call has more results than the
8456	// maximum page size.
8457	NextPageToken *string `type:"string"`
8458
8459	// The number of recommendations that you want returned in a single response
8460	// object.
8461	PageSize *int64 `type:"integer"`
8462
8463	// The payment option used to generate these recommendations.
8464	//
8465	// PaymentOption is a required field
8466	PaymentOption *string `type:"string" required:"true" enum:"PaymentOption"`
8467
8468	// The Savings Plans recommendation type requested.
8469	//
8470	// SavingsPlansType is a required field
8471	SavingsPlansType *string `type:"string" required:"true" enum:"SupportedSavingsPlansType"`
8472
8473	// The savings plan recommendation term used to generate these recommendations.
8474	//
8475	// TermInYears is a required field
8476	TermInYears *string `type:"string" required:"true" enum:"TermInYears"`
8477}
8478
8479// String returns the string representation
8480func (s GetSavingsPlansPurchaseRecommendationInput) String() string {
8481	return awsutil.Prettify(s)
8482}
8483
8484// GoString returns the string representation
8485func (s GetSavingsPlansPurchaseRecommendationInput) GoString() string {
8486	return s.String()
8487}
8488
8489// Validate inspects the fields of the type to determine if they are valid.
8490func (s *GetSavingsPlansPurchaseRecommendationInput) Validate() error {
8491	invalidParams := request.ErrInvalidParams{Context: "GetSavingsPlansPurchaseRecommendationInput"}
8492	if s.LookbackPeriodInDays == nil {
8493		invalidParams.Add(request.NewErrParamRequired("LookbackPeriodInDays"))
8494	}
8495	if s.PaymentOption == nil {
8496		invalidParams.Add(request.NewErrParamRequired("PaymentOption"))
8497	}
8498	if s.SavingsPlansType == nil {
8499		invalidParams.Add(request.NewErrParamRequired("SavingsPlansType"))
8500	}
8501	if s.TermInYears == nil {
8502		invalidParams.Add(request.NewErrParamRequired("TermInYears"))
8503	}
8504	if s.Filter != nil {
8505		if err := s.Filter.Validate(); err != nil {
8506			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
8507		}
8508	}
8509
8510	if invalidParams.Len() > 0 {
8511		return invalidParams
8512	}
8513	return nil
8514}
8515
8516// SetAccountScope sets the AccountScope field's value.
8517func (s *GetSavingsPlansPurchaseRecommendationInput) SetAccountScope(v string) *GetSavingsPlansPurchaseRecommendationInput {
8518	s.AccountScope = &v
8519	return s
8520}
8521
8522// SetFilter sets the Filter field's value.
8523func (s *GetSavingsPlansPurchaseRecommendationInput) SetFilter(v *Expression) *GetSavingsPlansPurchaseRecommendationInput {
8524	s.Filter = v
8525	return s
8526}
8527
8528// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
8529func (s *GetSavingsPlansPurchaseRecommendationInput) SetLookbackPeriodInDays(v string) *GetSavingsPlansPurchaseRecommendationInput {
8530	s.LookbackPeriodInDays = &v
8531	return s
8532}
8533
8534// SetNextPageToken sets the NextPageToken field's value.
8535func (s *GetSavingsPlansPurchaseRecommendationInput) SetNextPageToken(v string) *GetSavingsPlansPurchaseRecommendationInput {
8536	s.NextPageToken = &v
8537	return s
8538}
8539
8540// SetPageSize sets the PageSize field's value.
8541func (s *GetSavingsPlansPurchaseRecommendationInput) SetPageSize(v int64) *GetSavingsPlansPurchaseRecommendationInput {
8542	s.PageSize = &v
8543	return s
8544}
8545
8546// SetPaymentOption sets the PaymentOption field's value.
8547func (s *GetSavingsPlansPurchaseRecommendationInput) SetPaymentOption(v string) *GetSavingsPlansPurchaseRecommendationInput {
8548	s.PaymentOption = &v
8549	return s
8550}
8551
8552// SetSavingsPlansType sets the SavingsPlansType field's value.
8553func (s *GetSavingsPlansPurchaseRecommendationInput) SetSavingsPlansType(v string) *GetSavingsPlansPurchaseRecommendationInput {
8554	s.SavingsPlansType = &v
8555	return s
8556}
8557
8558// SetTermInYears sets the TermInYears field's value.
8559func (s *GetSavingsPlansPurchaseRecommendationInput) SetTermInYears(v string) *GetSavingsPlansPurchaseRecommendationInput {
8560	s.TermInYears = &v
8561	return s
8562}
8563
8564type GetSavingsPlansPurchaseRecommendationOutput struct {
8565	_ struct{} `type:"structure"`
8566
8567	// Information regarding this specific recommendation set.
8568	Metadata *SavingsPlansPurchaseRecommendationMetadata `type:"structure"`
8569
8570	// The token for the next set of retrievable results. Amazon Web Services provides
8571	// the token when the response from a previous call has more results than the
8572	// maximum page size.
8573	NextPageToken *string `type:"string"`
8574
8575	// Contains your request parameters, Savings Plan Recommendations Summary, and
8576	// Details.
8577	SavingsPlansPurchaseRecommendation *SavingsPlansPurchaseRecommendation `type:"structure"`
8578}
8579
8580// String returns the string representation
8581func (s GetSavingsPlansPurchaseRecommendationOutput) String() string {
8582	return awsutil.Prettify(s)
8583}
8584
8585// GoString returns the string representation
8586func (s GetSavingsPlansPurchaseRecommendationOutput) GoString() string {
8587	return s.String()
8588}
8589
8590// SetMetadata sets the Metadata field's value.
8591func (s *GetSavingsPlansPurchaseRecommendationOutput) SetMetadata(v *SavingsPlansPurchaseRecommendationMetadata) *GetSavingsPlansPurchaseRecommendationOutput {
8592	s.Metadata = v
8593	return s
8594}
8595
8596// SetNextPageToken sets the NextPageToken field's value.
8597func (s *GetSavingsPlansPurchaseRecommendationOutput) SetNextPageToken(v string) *GetSavingsPlansPurchaseRecommendationOutput {
8598	s.NextPageToken = &v
8599	return s
8600}
8601
8602// SetSavingsPlansPurchaseRecommendation sets the SavingsPlansPurchaseRecommendation field's value.
8603func (s *GetSavingsPlansPurchaseRecommendationOutput) SetSavingsPlansPurchaseRecommendation(v *SavingsPlansPurchaseRecommendation) *GetSavingsPlansPurchaseRecommendationOutput {
8604	s.SavingsPlansPurchaseRecommendation = v
8605	return s
8606}
8607
8608type GetSavingsPlansUtilizationDetailsInput struct {
8609	_ struct{} `type:"structure"`
8610
8611	// The data type.
8612	DataType []*string `type:"list"`
8613
8614	// Filters Savings Plans utilization coverage data for active Savings Plans
8615	// dimensions. You can filter data with the following dimensions:
8616	//
8617	//    * LINKED_ACCOUNT
8618	//
8619	//    * SAVINGS_PLAN_ARN
8620	//
8621	//    * REGION
8622	//
8623	//    * PAYMENT_OPTION
8624	//
8625	//    * INSTANCE_TYPE_FAMILY
8626	//
8627	// GetSavingsPlansUtilizationDetails uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
8628	// object as the other operations, but only AND is supported among each dimension.
8629	Filter *Expression `type:"structure"`
8630
8631	// The number of items to be returned in a response. The default is 20, with
8632	// a minimum value of 1.
8633	MaxResults *int64 `min:"1" type:"integer"`
8634
8635	// The token to retrieve the next set of results. Amazon Web Services provides
8636	// the token when the response from a previous call has more results than the
8637	// maximum page size.
8638	NextToken *string `type:"string"`
8639
8640	// The value by which you want to sort the data.
8641	//
8642	// The following values are supported for Key:
8643	//
8644	//    * UtilizationPercentage
8645	//
8646	//    * TotalCommitment
8647	//
8648	//    * UsedCommitment
8649	//
8650	//    * UnusedCommitment
8651	//
8652	//    * NetSavings
8653	//
8654	//    * AmortizedRecurringCommitment
8655	//
8656	//    * AmortizedUpfrontCommitment
8657	//
8658	// Supported values for SortOrder are ASCENDING or DESCENDING.
8659	SortBy *SortDefinition `type:"structure"`
8660
8661	// The time period that you want the usage and costs for. The Start date must
8662	// be within 13 months. The End date must be after the Start date, and before
8663	// the current date. Future dates can't be used as an End date.
8664	//
8665	// TimePeriod is a required field
8666	TimePeriod *DateInterval `type:"structure" required:"true"`
8667}
8668
8669// String returns the string representation
8670func (s GetSavingsPlansUtilizationDetailsInput) String() string {
8671	return awsutil.Prettify(s)
8672}
8673
8674// GoString returns the string representation
8675func (s GetSavingsPlansUtilizationDetailsInput) GoString() string {
8676	return s.String()
8677}
8678
8679// Validate inspects the fields of the type to determine if they are valid.
8680func (s *GetSavingsPlansUtilizationDetailsInput) Validate() error {
8681	invalidParams := request.ErrInvalidParams{Context: "GetSavingsPlansUtilizationDetailsInput"}
8682	if s.MaxResults != nil && *s.MaxResults < 1 {
8683		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
8684	}
8685	if s.TimePeriod == nil {
8686		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
8687	}
8688	if s.Filter != nil {
8689		if err := s.Filter.Validate(); err != nil {
8690			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
8691		}
8692	}
8693	if s.SortBy != nil {
8694		if err := s.SortBy.Validate(); err != nil {
8695			invalidParams.AddNested("SortBy", err.(request.ErrInvalidParams))
8696		}
8697	}
8698	if s.TimePeriod != nil {
8699		if err := s.TimePeriod.Validate(); err != nil {
8700			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
8701		}
8702	}
8703
8704	if invalidParams.Len() > 0 {
8705		return invalidParams
8706	}
8707	return nil
8708}
8709
8710// SetDataType sets the DataType field's value.
8711func (s *GetSavingsPlansUtilizationDetailsInput) SetDataType(v []*string) *GetSavingsPlansUtilizationDetailsInput {
8712	s.DataType = v
8713	return s
8714}
8715
8716// SetFilter sets the Filter field's value.
8717func (s *GetSavingsPlansUtilizationDetailsInput) SetFilter(v *Expression) *GetSavingsPlansUtilizationDetailsInput {
8718	s.Filter = v
8719	return s
8720}
8721
8722// SetMaxResults sets the MaxResults field's value.
8723func (s *GetSavingsPlansUtilizationDetailsInput) SetMaxResults(v int64) *GetSavingsPlansUtilizationDetailsInput {
8724	s.MaxResults = &v
8725	return s
8726}
8727
8728// SetNextToken sets the NextToken field's value.
8729func (s *GetSavingsPlansUtilizationDetailsInput) SetNextToken(v string) *GetSavingsPlansUtilizationDetailsInput {
8730	s.NextToken = &v
8731	return s
8732}
8733
8734// SetSortBy sets the SortBy field's value.
8735func (s *GetSavingsPlansUtilizationDetailsInput) SetSortBy(v *SortDefinition) *GetSavingsPlansUtilizationDetailsInput {
8736	s.SortBy = v
8737	return s
8738}
8739
8740// SetTimePeriod sets the TimePeriod field's value.
8741func (s *GetSavingsPlansUtilizationDetailsInput) SetTimePeriod(v *DateInterval) *GetSavingsPlansUtilizationDetailsInput {
8742	s.TimePeriod = v
8743	return s
8744}
8745
8746type GetSavingsPlansUtilizationDetailsOutput struct {
8747	_ struct{} `type:"structure"`
8748
8749	// The token to retrieve the next set of results. Amazon Web Services provides
8750	// the token when the response from a previous call has more results than the
8751	// maximum page size.
8752	NextToken *string `type:"string"`
8753
8754	// Retrieves a single daily or monthly Savings Plans utilization rate and details
8755	// for your account.
8756	//
8757	// SavingsPlansUtilizationDetails is a required field
8758	SavingsPlansUtilizationDetails []*SavingsPlansUtilizationDetail `type:"list" required:"true"`
8759
8760	// The time period of the request.
8761	//
8762	// TimePeriod is a required field
8763	TimePeriod *DateInterval `type:"structure" required:"true"`
8764
8765	// The total Savings Plans utilization, regardless of time period.
8766	Total *SavingsPlansUtilizationAggregates `type:"structure"`
8767}
8768
8769// String returns the string representation
8770func (s GetSavingsPlansUtilizationDetailsOutput) String() string {
8771	return awsutil.Prettify(s)
8772}
8773
8774// GoString returns the string representation
8775func (s GetSavingsPlansUtilizationDetailsOutput) GoString() string {
8776	return s.String()
8777}
8778
8779// SetNextToken sets the NextToken field's value.
8780func (s *GetSavingsPlansUtilizationDetailsOutput) SetNextToken(v string) *GetSavingsPlansUtilizationDetailsOutput {
8781	s.NextToken = &v
8782	return s
8783}
8784
8785// SetSavingsPlansUtilizationDetails sets the SavingsPlansUtilizationDetails field's value.
8786func (s *GetSavingsPlansUtilizationDetailsOutput) SetSavingsPlansUtilizationDetails(v []*SavingsPlansUtilizationDetail) *GetSavingsPlansUtilizationDetailsOutput {
8787	s.SavingsPlansUtilizationDetails = v
8788	return s
8789}
8790
8791// SetTimePeriod sets the TimePeriod field's value.
8792func (s *GetSavingsPlansUtilizationDetailsOutput) SetTimePeriod(v *DateInterval) *GetSavingsPlansUtilizationDetailsOutput {
8793	s.TimePeriod = v
8794	return s
8795}
8796
8797// SetTotal sets the Total field's value.
8798func (s *GetSavingsPlansUtilizationDetailsOutput) SetTotal(v *SavingsPlansUtilizationAggregates) *GetSavingsPlansUtilizationDetailsOutput {
8799	s.Total = v
8800	return s
8801}
8802
8803type GetSavingsPlansUtilizationInput struct {
8804	_ struct{} `type:"structure"`
8805
8806	// Filters Savings Plans utilization coverage data for active Savings Plans
8807	// dimensions. You can filter data with the following dimensions:
8808	//
8809	//    * LINKED_ACCOUNT
8810	//
8811	//    * SAVINGS_PLAN_ARN
8812	//
8813	//    * SAVINGS_PLANS_TYPE
8814	//
8815	//    * REGION
8816	//
8817	//    * PAYMENT_OPTION
8818	//
8819	//    * INSTANCE_TYPE_FAMILY
8820	//
8821	// GetSavingsPlansUtilization uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
8822	// object as the other operations, but only AND is supported among each dimension.
8823	Filter *Expression `type:"structure"`
8824
8825	// The granularity of the Amazon Web Services utillization data for your Savings
8826	// Plans.
8827	//
8828	// The GetSavingsPlansUtilization operation supports only DAILY and MONTHLY
8829	// granularities.
8830	Granularity *string `type:"string" enum:"Granularity"`
8831
8832	// The value by which you want to sort the data.
8833	//
8834	// The following values are supported for Key:
8835	//
8836	//    * UtilizationPercentage
8837	//
8838	//    * TotalCommitment
8839	//
8840	//    * UsedCommitment
8841	//
8842	//    * UnusedCommitment
8843	//
8844	//    * NetSavings
8845	//
8846	// Supported values for SortOrder are ASCENDING or DESCENDING.
8847	SortBy *SortDefinition `type:"structure"`
8848
8849	// The time period that you want the usage and costs for. The Start date must
8850	// be within 13 months. The End date must be after the Start date, and before
8851	// the current date. Future dates can't be used as an End date.
8852	//
8853	// TimePeriod is a required field
8854	TimePeriod *DateInterval `type:"structure" required:"true"`
8855}
8856
8857// String returns the string representation
8858func (s GetSavingsPlansUtilizationInput) String() string {
8859	return awsutil.Prettify(s)
8860}
8861
8862// GoString returns the string representation
8863func (s GetSavingsPlansUtilizationInput) GoString() string {
8864	return s.String()
8865}
8866
8867// Validate inspects the fields of the type to determine if they are valid.
8868func (s *GetSavingsPlansUtilizationInput) Validate() error {
8869	invalidParams := request.ErrInvalidParams{Context: "GetSavingsPlansUtilizationInput"}
8870	if s.TimePeriod == nil {
8871		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
8872	}
8873	if s.Filter != nil {
8874		if err := s.Filter.Validate(); err != nil {
8875			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
8876		}
8877	}
8878	if s.SortBy != nil {
8879		if err := s.SortBy.Validate(); err != nil {
8880			invalidParams.AddNested("SortBy", err.(request.ErrInvalidParams))
8881		}
8882	}
8883	if s.TimePeriod != nil {
8884		if err := s.TimePeriod.Validate(); err != nil {
8885			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
8886		}
8887	}
8888
8889	if invalidParams.Len() > 0 {
8890		return invalidParams
8891	}
8892	return nil
8893}
8894
8895// SetFilter sets the Filter field's value.
8896func (s *GetSavingsPlansUtilizationInput) SetFilter(v *Expression) *GetSavingsPlansUtilizationInput {
8897	s.Filter = v
8898	return s
8899}
8900
8901// SetGranularity sets the Granularity field's value.
8902func (s *GetSavingsPlansUtilizationInput) SetGranularity(v string) *GetSavingsPlansUtilizationInput {
8903	s.Granularity = &v
8904	return s
8905}
8906
8907// SetSortBy sets the SortBy field's value.
8908func (s *GetSavingsPlansUtilizationInput) SetSortBy(v *SortDefinition) *GetSavingsPlansUtilizationInput {
8909	s.SortBy = v
8910	return s
8911}
8912
8913// SetTimePeriod sets the TimePeriod field's value.
8914func (s *GetSavingsPlansUtilizationInput) SetTimePeriod(v *DateInterval) *GetSavingsPlansUtilizationInput {
8915	s.TimePeriod = v
8916	return s
8917}
8918
8919type GetSavingsPlansUtilizationOutput struct {
8920	_ struct{} `type:"structure"`
8921
8922	// The amount of cost/commitment you used your Savings Plans. This allows you
8923	// to specify date ranges.
8924	SavingsPlansUtilizationsByTime []*SavingsPlansUtilizationByTime `type:"list"`
8925
8926	// The total amount of cost/commitment that you used your Savings Plans, regardless
8927	// of date ranges.
8928	//
8929	// Total is a required field
8930	Total *SavingsPlansUtilizationAggregates `type:"structure" required:"true"`
8931}
8932
8933// String returns the string representation
8934func (s GetSavingsPlansUtilizationOutput) String() string {
8935	return awsutil.Prettify(s)
8936}
8937
8938// GoString returns the string representation
8939func (s GetSavingsPlansUtilizationOutput) GoString() string {
8940	return s.String()
8941}
8942
8943// SetSavingsPlansUtilizationsByTime sets the SavingsPlansUtilizationsByTime field's value.
8944func (s *GetSavingsPlansUtilizationOutput) SetSavingsPlansUtilizationsByTime(v []*SavingsPlansUtilizationByTime) *GetSavingsPlansUtilizationOutput {
8945	s.SavingsPlansUtilizationsByTime = v
8946	return s
8947}
8948
8949// SetTotal sets the Total field's value.
8950func (s *GetSavingsPlansUtilizationOutput) SetTotal(v *SavingsPlansUtilizationAggregates) *GetSavingsPlansUtilizationOutput {
8951	s.Total = v
8952	return s
8953}
8954
8955type GetTagsInput struct {
8956	_ struct{} `type:"structure"`
8957
8958	// Use Expression to filter by cost or by usage. There are two patterns:
8959	//
8960	//    * Simple dimension values - You can set the dimension name and values
8961	//    for the filters that you plan to use. For example, you can filter for
8962	//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
8963	//    the Region is a full name (for example, REGION==US East (N. Virginia).
8964	//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
8965	//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
8966	//    are OR'd together to retrieve cost or usage data. You can create Expression
8967	//    and DimensionValues objects using either with* methods or set* methods
8968	//    in multiple lines.
8969	//
8970	//    * Compound dimension values with logical operations - You can use multiple
8971	//    Expression types and the logical operators AND/OR/NOT to create a list
8972	//    of one or more Expression objects. By doing this, you can filter on more
8973	//    advanced options. For example, you can filter on ((REGION == us-east-1
8974	//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
8975	//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
8976	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
8977	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
8978	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
8979	//    Expression can have only one operator, the service returns an error if
8980	//    more than one is specified. The following example shows an Expression
8981	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
8982	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
8983	//
8984	// For the GetRightsizingRecommendation action, a combination of OR and NOT
8985	// isn't supported. OR isn't supported between different dimensions, or dimensions
8986	// and tags. NOT operators aren't supported. Dimensions are also limited to
8987	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
8988	//
8989	// For the GetReservationPurchaseRecommendation action, only NOT is supported.
8990	// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
8991	Filter *Expression `type:"structure"`
8992
8993	// This field is only used when SortBy is provided in the request. The maximum
8994	// number of objects that to be returned for this request. If MaxResults is
8995	// not specified with SortBy, the request will return 1000 results as the default
8996	// value for this parameter.
8997	//
8998	// For GetTags, MaxResults has an upper limit of 1000.
8999	MaxResults *int64 `min:"1" type:"integer"`
9000
9001	// The token to retrieve the next set of results. Amazon Web Services provides
9002	// the token when the response from a previous call has more results than the
9003	// maximum page size.
9004	NextPageToken *string `type:"string"`
9005
9006	// The value that you want to search for.
9007	SearchString *string `type:"string"`
9008
9009	// The value by which you want to sort the data.
9010	//
9011	// The key represents cost and usage metrics. The following values are supported:
9012	//
9013	//    * BlendedCost
9014	//
9015	//    * UnblendedCost
9016	//
9017	//    * AmortizedCost
9018	//
9019	//    * NetAmortizedCost
9020	//
9021	//    * NetUnblendedCost
9022	//
9023	//    * UsageQuantity
9024	//
9025	//    * NormalizedUsageAmount
9026	//
9027	// Supported values for SortOrder are ASCENDING or DESCENDING.
9028	//
9029	// When using SortBy, NextPageToken and SearchString are not supported.
9030	SortBy []*SortDefinition `type:"list"`
9031
9032	// The key of the tag that you want to return values for.
9033	TagKey *string `type:"string"`
9034
9035	// The start and end dates for retrieving the dimension values. The start date
9036	// is inclusive, but the end date is exclusive. For example, if start is 2017-01-01
9037	// and end is 2017-05-01, then the cost and usage data is retrieved from 2017-01-01
9038	// up to and including 2017-04-30 but not including 2017-05-01.
9039	//
9040	// TimePeriod is a required field
9041	TimePeriod *DateInterval `type:"structure" required:"true"`
9042}
9043
9044// String returns the string representation
9045func (s GetTagsInput) String() string {
9046	return awsutil.Prettify(s)
9047}
9048
9049// GoString returns the string representation
9050func (s GetTagsInput) GoString() string {
9051	return s.String()
9052}
9053
9054// Validate inspects the fields of the type to determine if they are valid.
9055func (s *GetTagsInput) Validate() error {
9056	invalidParams := request.ErrInvalidParams{Context: "GetTagsInput"}
9057	if s.MaxResults != nil && *s.MaxResults < 1 {
9058		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
9059	}
9060	if s.TimePeriod == nil {
9061		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
9062	}
9063	if s.Filter != nil {
9064		if err := s.Filter.Validate(); err != nil {
9065			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
9066		}
9067	}
9068	if s.SortBy != nil {
9069		for i, v := range s.SortBy {
9070			if v == nil {
9071				continue
9072			}
9073			if err := v.Validate(); err != nil {
9074				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SortBy", i), err.(request.ErrInvalidParams))
9075			}
9076		}
9077	}
9078	if s.TimePeriod != nil {
9079		if err := s.TimePeriod.Validate(); err != nil {
9080			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
9081		}
9082	}
9083
9084	if invalidParams.Len() > 0 {
9085		return invalidParams
9086	}
9087	return nil
9088}
9089
9090// SetFilter sets the Filter field's value.
9091func (s *GetTagsInput) SetFilter(v *Expression) *GetTagsInput {
9092	s.Filter = v
9093	return s
9094}
9095
9096// SetMaxResults sets the MaxResults field's value.
9097func (s *GetTagsInput) SetMaxResults(v int64) *GetTagsInput {
9098	s.MaxResults = &v
9099	return s
9100}
9101
9102// SetNextPageToken sets the NextPageToken field's value.
9103func (s *GetTagsInput) SetNextPageToken(v string) *GetTagsInput {
9104	s.NextPageToken = &v
9105	return s
9106}
9107
9108// SetSearchString sets the SearchString field's value.
9109func (s *GetTagsInput) SetSearchString(v string) *GetTagsInput {
9110	s.SearchString = &v
9111	return s
9112}
9113
9114// SetSortBy sets the SortBy field's value.
9115func (s *GetTagsInput) SetSortBy(v []*SortDefinition) *GetTagsInput {
9116	s.SortBy = v
9117	return s
9118}
9119
9120// SetTagKey sets the TagKey field's value.
9121func (s *GetTagsInput) SetTagKey(v string) *GetTagsInput {
9122	s.TagKey = &v
9123	return s
9124}
9125
9126// SetTimePeriod sets the TimePeriod field's value.
9127func (s *GetTagsInput) SetTimePeriod(v *DateInterval) *GetTagsInput {
9128	s.TimePeriod = v
9129	return s
9130}
9131
9132type GetTagsOutput struct {
9133	_ struct{} `type:"structure"`
9134
9135	// The token for the next set of retrievable results. Amazon Web Services provides
9136	// the token when the response from a previous call has more results than the
9137	// maximum page size.
9138	NextPageToken *string `type:"string"`
9139
9140	// The number of query results that Amazon Web Services returns at a time.
9141	//
9142	// ReturnSize is a required field
9143	ReturnSize *int64 `type:"integer" required:"true"`
9144
9145	// The tags that match your request.
9146	//
9147	// Tags is a required field
9148	Tags []*string `type:"list" required:"true"`
9149
9150	// The total number of query results.
9151	//
9152	// TotalSize is a required field
9153	TotalSize *int64 `type:"integer" required:"true"`
9154}
9155
9156// String returns the string representation
9157func (s GetTagsOutput) String() string {
9158	return awsutil.Prettify(s)
9159}
9160
9161// GoString returns the string representation
9162func (s GetTagsOutput) GoString() string {
9163	return s.String()
9164}
9165
9166// SetNextPageToken sets the NextPageToken field's value.
9167func (s *GetTagsOutput) SetNextPageToken(v string) *GetTagsOutput {
9168	s.NextPageToken = &v
9169	return s
9170}
9171
9172// SetReturnSize sets the ReturnSize field's value.
9173func (s *GetTagsOutput) SetReturnSize(v int64) *GetTagsOutput {
9174	s.ReturnSize = &v
9175	return s
9176}
9177
9178// SetTags sets the Tags field's value.
9179func (s *GetTagsOutput) SetTags(v []*string) *GetTagsOutput {
9180	s.Tags = v
9181	return s
9182}
9183
9184// SetTotalSize sets the TotalSize field's value.
9185func (s *GetTagsOutput) SetTotalSize(v int64) *GetTagsOutput {
9186	s.TotalSize = &v
9187	return s
9188}
9189
9190type GetUsageForecastInput struct {
9191	_ struct{} `type:"structure"`
9192
9193	// The filters that you want to use to filter your forecast. The GetUsageForecast
9194	// API supports filtering by the following dimensions:
9195	//
9196	//    * AZ
9197	//
9198	//    * INSTANCE_TYPE
9199	//
9200	//    * LINKED_ACCOUNT
9201	//
9202	//    * LINKED_ACCOUNT_NAME
9203	//
9204	//    * OPERATION
9205	//
9206	//    * PURCHASE_TYPE
9207	//
9208	//    * REGION
9209	//
9210	//    * SERVICE
9211	//
9212	//    * USAGE_TYPE
9213	//
9214	//    * USAGE_TYPE_GROUP
9215	//
9216	//    * RECORD_TYPE
9217	//
9218	//    * OPERATING_SYSTEM
9219	//
9220	//    * TENANCY
9221	//
9222	//    * SCOPE
9223	//
9224	//    * PLATFORM
9225	//
9226	//    * SUBSCRIPTION_ID
9227	//
9228	//    * LEGAL_ENTITY_NAME
9229	//
9230	//    * DEPLOYMENT_OPTION
9231	//
9232	//    * DATABASE_ENGINE
9233	//
9234	//    * INSTANCE_TYPE_FAMILY
9235	//
9236	//    * BILLING_ENTITY
9237	//
9238	//    * RESERVATION_ID
9239	//
9240	//    * SAVINGS_PLAN_ARN
9241	Filter *Expression `type:"structure"`
9242
9243	// How granular you want the forecast to be. You can get 3 months of DAILY forecasts
9244	// or 12 months of MONTHLY forecasts.
9245	//
9246	// The GetUsageForecast operation supports only DAILY and MONTHLY granularities.
9247	//
9248	// Granularity is a required field
9249	Granularity *string `type:"string" required:"true" enum:"Granularity"`
9250
9251	// Which metric Cost Explorer uses to create your forecast.
9252	//
9253	// Valid values for a GetUsageForecast call are the following:
9254	//
9255	//    * USAGE_QUANTITY
9256	//
9257	//    * NORMALIZED_USAGE_AMOUNT
9258	//
9259	// Metric is a required field
9260	Metric *string `type:"string" required:"true" enum:"Metric"`
9261
9262	// Cost Explorer always returns the mean forecast as a single point. You can
9263	// request a prediction interval around the mean by specifying a confidence
9264	// level. The higher the confidence level, the more confident Cost Explorer
9265	// is about the actual value falling in the prediction interval. Higher confidence
9266	// levels result in wider prediction intervals.
9267	PredictionIntervalLevel *int64 `min:"51" type:"integer"`
9268
9269	// The start and end dates of the period that you want to retrieve usage forecast
9270	// for. The start date is inclusive, but the end date is exclusive. For example,
9271	// if start is 2017-01-01 and end is 2017-05-01, then the cost and usage data
9272	// is retrieved from 2017-01-01 up to and including 2017-04-30 but not including
9273	// 2017-05-01. The start date must be equal to or later than the current date
9274	// to avoid a validation error.
9275	//
9276	// TimePeriod is a required field
9277	TimePeriod *DateInterval `type:"structure" required:"true"`
9278}
9279
9280// String returns the string representation
9281func (s GetUsageForecastInput) String() string {
9282	return awsutil.Prettify(s)
9283}
9284
9285// GoString returns the string representation
9286func (s GetUsageForecastInput) GoString() string {
9287	return s.String()
9288}
9289
9290// Validate inspects the fields of the type to determine if they are valid.
9291func (s *GetUsageForecastInput) Validate() error {
9292	invalidParams := request.ErrInvalidParams{Context: "GetUsageForecastInput"}
9293	if s.Granularity == nil {
9294		invalidParams.Add(request.NewErrParamRequired("Granularity"))
9295	}
9296	if s.Metric == nil {
9297		invalidParams.Add(request.NewErrParamRequired("Metric"))
9298	}
9299	if s.PredictionIntervalLevel != nil && *s.PredictionIntervalLevel < 51 {
9300		invalidParams.Add(request.NewErrParamMinValue("PredictionIntervalLevel", 51))
9301	}
9302	if s.TimePeriod == nil {
9303		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
9304	}
9305	if s.Filter != nil {
9306		if err := s.Filter.Validate(); err != nil {
9307			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
9308		}
9309	}
9310	if s.TimePeriod != nil {
9311		if err := s.TimePeriod.Validate(); err != nil {
9312			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
9313		}
9314	}
9315
9316	if invalidParams.Len() > 0 {
9317		return invalidParams
9318	}
9319	return nil
9320}
9321
9322// SetFilter sets the Filter field's value.
9323func (s *GetUsageForecastInput) SetFilter(v *Expression) *GetUsageForecastInput {
9324	s.Filter = v
9325	return s
9326}
9327
9328// SetGranularity sets the Granularity field's value.
9329func (s *GetUsageForecastInput) SetGranularity(v string) *GetUsageForecastInput {
9330	s.Granularity = &v
9331	return s
9332}
9333
9334// SetMetric sets the Metric field's value.
9335func (s *GetUsageForecastInput) SetMetric(v string) *GetUsageForecastInput {
9336	s.Metric = &v
9337	return s
9338}
9339
9340// SetPredictionIntervalLevel sets the PredictionIntervalLevel field's value.
9341func (s *GetUsageForecastInput) SetPredictionIntervalLevel(v int64) *GetUsageForecastInput {
9342	s.PredictionIntervalLevel = &v
9343	return s
9344}
9345
9346// SetTimePeriod sets the TimePeriod field's value.
9347func (s *GetUsageForecastInput) SetTimePeriod(v *DateInterval) *GetUsageForecastInput {
9348	s.TimePeriod = v
9349	return s
9350}
9351
9352type GetUsageForecastOutput struct {
9353	_ struct{} `type:"structure"`
9354
9355	// The forecasts for your query, in order. For DAILY forecasts, this is a list
9356	// of days. For MONTHLY forecasts, this is a list of months.
9357	ForecastResultsByTime []*ForecastResult `type:"list"`
9358
9359	// How much you're forecasted to use over the forecast period.
9360	Total *MetricValue `type:"structure"`
9361}
9362
9363// String returns the string representation
9364func (s GetUsageForecastOutput) String() string {
9365	return awsutil.Prettify(s)
9366}
9367
9368// GoString returns the string representation
9369func (s GetUsageForecastOutput) GoString() string {
9370	return s.String()
9371}
9372
9373// SetForecastResultsByTime sets the ForecastResultsByTime field's value.
9374func (s *GetUsageForecastOutput) SetForecastResultsByTime(v []*ForecastResult) *GetUsageForecastOutput {
9375	s.ForecastResultsByTime = v
9376	return s
9377}
9378
9379// SetTotal sets the Total field's value.
9380func (s *GetUsageForecastOutput) SetTotal(v *MetricValue) *GetUsageForecastOutput {
9381	s.Total = v
9382	return s
9383}
9384
9385// One level of grouped data in the results.
9386type Group struct {
9387	_ struct{} `type:"structure"`
9388
9389	// The keys that are included in this group.
9390	Keys []*string `type:"list"`
9391
9392	// The metrics that are included in this group.
9393	Metrics map[string]*MetricValue `type:"map"`
9394}
9395
9396// String returns the string representation
9397func (s Group) String() string {
9398	return awsutil.Prettify(s)
9399}
9400
9401// GoString returns the string representation
9402func (s Group) GoString() string {
9403	return s.String()
9404}
9405
9406// SetKeys sets the Keys field's value.
9407func (s *Group) SetKeys(v []*string) *Group {
9408	s.Keys = v
9409	return s
9410}
9411
9412// SetMetrics sets the Metrics field's value.
9413func (s *Group) SetMetrics(v map[string]*MetricValue) *Group {
9414	s.Metrics = v
9415	return s
9416}
9417
9418// Represents a group when you specify a group by criteria or in the response
9419// to a query with a specific grouping.
9420type GroupDefinition struct {
9421	_ struct{} `type:"structure"`
9422
9423	// The string that represents a key for a specified group.
9424	Key *string `type:"string"`
9425
9426	// The string that represents the type of group.
9427	Type *string `type:"string" enum:"GroupDefinitionType"`
9428}
9429
9430// String returns the string representation
9431func (s GroupDefinition) String() string {
9432	return awsutil.Prettify(s)
9433}
9434
9435// GoString returns the string representation
9436func (s GroupDefinition) GoString() string {
9437	return s.String()
9438}
9439
9440// SetKey sets the Key field's value.
9441func (s *GroupDefinition) SetKey(v string) *GroupDefinition {
9442	s.Key = &v
9443	return s
9444}
9445
9446// SetType sets the Type field's value.
9447func (s *GroupDefinition) SetType(v string) *GroupDefinition {
9448	s.Type = &v
9449	return s
9450}
9451
9452// The dollar value of the anomaly.
9453type Impact struct {
9454	_ struct{} `type:"structure"`
9455
9456	// The maximum dollar value that's observed for an anomaly.
9457	//
9458	// MaxImpact is a required field
9459	MaxImpact *float64 `type:"double" required:"true"`
9460
9461	// The cumulative dollar value that's observed for an anomaly.
9462	TotalImpact *float64 `type:"double"`
9463}
9464
9465// String returns the string representation
9466func (s Impact) String() string {
9467	return awsutil.Prettify(s)
9468}
9469
9470// GoString returns the string representation
9471func (s Impact) GoString() string {
9472	return s.String()
9473}
9474
9475// SetMaxImpact sets the MaxImpact field's value.
9476func (s *Impact) SetMaxImpact(v float64) *Impact {
9477	s.MaxImpact = &v
9478	return s
9479}
9480
9481// SetTotalImpact sets the TotalImpact field's value.
9482func (s *Impact) SetTotalImpact(v float64) *Impact {
9483	s.TotalImpact = &v
9484	return s
9485}
9486
9487// Details about the instances that Amazon Web Services recommends that you
9488// purchase.
9489type InstanceDetails struct {
9490	_ struct{} `type:"structure"`
9491
9492	// The Amazon EC2 instances that Amazon Web Services recommends that you purchase.
9493	EC2InstanceDetails *EC2InstanceDetails `type:"structure"`
9494
9495	// The Amazon ES instances that Amazon Web Services recommends that you purchase.
9496	ESInstanceDetails *ESInstanceDetails `type:"structure"`
9497
9498	// The ElastiCache instances that Amazon Web Services recommends that you purchase.
9499	ElastiCacheInstanceDetails *ElastiCacheInstanceDetails `type:"structure"`
9500
9501	// The Amazon RDS instances that Amazon Web Services recommends that you purchase.
9502	RDSInstanceDetails *RDSInstanceDetails `type:"structure"`
9503
9504	// The Amazon Redshift instances that Amazon Web Services recommends that you
9505	// purchase.
9506	RedshiftInstanceDetails *RedshiftInstanceDetails `type:"structure"`
9507}
9508
9509// String returns the string representation
9510func (s InstanceDetails) String() string {
9511	return awsutil.Prettify(s)
9512}
9513
9514// GoString returns the string representation
9515func (s InstanceDetails) GoString() string {
9516	return s.String()
9517}
9518
9519// SetEC2InstanceDetails sets the EC2InstanceDetails field's value.
9520func (s *InstanceDetails) SetEC2InstanceDetails(v *EC2InstanceDetails) *InstanceDetails {
9521	s.EC2InstanceDetails = v
9522	return s
9523}
9524
9525// SetESInstanceDetails sets the ESInstanceDetails field's value.
9526func (s *InstanceDetails) SetESInstanceDetails(v *ESInstanceDetails) *InstanceDetails {
9527	s.ESInstanceDetails = v
9528	return s
9529}
9530
9531// SetElastiCacheInstanceDetails sets the ElastiCacheInstanceDetails field's value.
9532func (s *InstanceDetails) SetElastiCacheInstanceDetails(v *ElastiCacheInstanceDetails) *InstanceDetails {
9533	s.ElastiCacheInstanceDetails = v
9534	return s
9535}
9536
9537// SetRDSInstanceDetails sets the RDSInstanceDetails field's value.
9538func (s *InstanceDetails) SetRDSInstanceDetails(v *RDSInstanceDetails) *InstanceDetails {
9539	s.RDSInstanceDetails = v
9540	return s
9541}
9542
9543// SetRedshiftInstanceDetails sets the RedshiftInstanceDetails field's value.
9544func (s *InstanceDetails) SetRedshiftInstanceDetails(v *RedshiftInstanceDetails) *InstanceDetails {
9545	s.RedshiftInstanceDetails = v
9546	return s
9547}
9548
9549// The pagination token is invalid. Try again without a pagination token.
9550type InvalidNextTokenException struct {
9551	_            struct{}                  `type:"structure"`
9552	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
9553
9554	Message_ *string `locationName:"Message" type:"string"`
9555}
9556
9557// String returns the string representation
9558func (s InvalidNextTokenException) String() string {
9559	return awsutil.Prettify(s)
9560}
9561
9562// GoString returns the string representation
9563func (s InvalidNextTokenException) GoString() string {
9564	return s.String()
9565}
9566
9567func newErrorInvalidNextTokenException(v protocol.ResponseMetadata) error {
9568	return &InvalidNextTokenException{
9569		RespMetadata: v,
9570	}
9571}
9572
9573// Code returns the exception type name.
9574func (s *InvalidNextTokenException) Code() string {
9575	return "InvalidNextTokenException"
9576}
9577
9578// Message returns the exception's message.
9579func (s *InvalidNextTokenException) Message() string {
9580	if s.Message_ != nil {
9581		return *s.Message_
9582	}
9583	return ""
9584}
9585
9586// OrigErr always returns nil, satisfies awserr.Error interface.
9587func (s *InvalidNextTokenException) OrigErr() error {
9588	return nil
9589}
9590
9591func (s *InvalidNextTokenException) Error() string {
9592	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
9593}
9594
9595// Status code returns the HTTP status code for the request's response error.
9596func (s *InvalidNextTokenException) StatusCode() int {
9597	return s.RespMetadata.StatusCode
9598}
9599
9600// RequestID returns the service's response RequestID for request.
9601func (s *InvalidNextTokenException) RequestID() string {
9602	return s.RespMetadata.RequestID
9603}
9604
9605// You made too many calls in a short period of time. Try again later.
9606type LimitExceededException struct {
9607	_            struct{}                  `type:"structure"`
9608	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
9609
9610	Message_ *string `locationName:"Message" type:"string"`
9611}
9612
9613// String returns the string representation
9614func (s LimitExceededException) String() string {
9615	return awsutil.Prettify(s)
9616}
9617
9618// GoString returns the string representation
9619func (s LimitExceededException) GoString() string {
9620	return s.String()
9621}
9622
9623func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
9624	return &LimitExceededException{
9625		RespMetadata: v,
9626	}
9627}
9628
9629// Code returns the exception type name.
9630func (s *LimitExceededException) Code() string {
9631	return "LimitExceededException"
9632}
9633
9634// Message returns the exception's message.
9635func (s *LimitExceededException) Message() string {
9636	if s.Message_ != nil {
9637		return *s.Message_
9638	}
9639	return ""
9640}
9641
9642// OrigErr always returns nil, satisfies awserr.Error interface.
9643func (s *LimitExceededException) OrigErr() error {
9644	return nil
9645}
9646
9647func (s *LimitExceededException) Error() string {
9648	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
9649}
9650
9651// Status code returns the HTTP status code for the request's response error.
9652func (s *LimitExceededException) StatusCode() int {
9653	return s.RespMetadata.StatusCode
9654}
9655
9656// RequestID returns the service's response RequestID for request.
9657func (s *LimitExceededException) RequestID() string {
9658	return s.RespMetadata.RequestID
9659}
9660
9661type ListCostCategoryDefinitionsInput struct {
9662	_ struct{} `type:"structure"`
9663
9664	// The date when the Cost Category was effective.
9665	EffectiveOn *string `min:"20" type:"string"`
9666
9667	// The number of entries a paginated response contains.
9668	MaxResults *int64 `min:"1" type:"integer"`
9669
9670	// The token to retrieve the next set of results. Amazon Web Services provides
9671	// the token when the response from a previous call has more results than the
9672	// maximum page size.
9673	NextToken *string `type:"string"`
9674}
9675
9676// String returns the string representation
9677func (s ListCostCategoryDefinitionsInput) String() string {
9678	return awsutil.Prettify(s)
9679}
9680
9681// GoString returns the string representation
9682func (s ListCostCategoryDefinitionsInput) GoString() string {
9683	return s.String()
9684}
9685
9686// Validate inspects the fields of the type to determine if they are valid.
9687func (s *ListCostCategoryDefinitionsInput) Validate() error {
9688	invalidParams := request.ErrInvalidParams{Context: "ListCostCategoryDefinitionsInput"}
9689	if s.EffectiveOn != nil && len(*s.EffectiveOn) < 20 {
9690		invalidParams.Add(request.NewErrParamMinLen("EffectiveOn", 20))
9691	}
9692	if s.MaxResults != nil && *s.MaxResults < 1 {
9693		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
9694	}
9695
9696	if invalidParams.Len() > 0 {
9697		return invalidParams
9698	}
9699	return nil
9700}
9701
9702// SetEffectiveOn sets the EffectiveOn field's value.
9703func (s *ListCostCategoryDefinitionsInput) SetEffectiveOn(v string) *ListCostCategoryDefinitionsInput {
9704	s.EffectiveOn = &v
9705	return s
9706}
9707
9708// SetMaxResults sets the MaxResults field's value.
9709func (s *ListCostCategoryDefinitionsInput) SetMaxResults(v int64) *ListCostCategoryDefinitionsInput {
9710	s.MaxResults = &v
9711	return s
9712}
9713
9714// SetNextToken sets the NextToken field's value.
9715func (s *ListCostCategoryDefinitionsInput) SetNextToken(v string) *ListCostCategoryDefinitionsInput {
9716	s.NextToken = &v
9717	return s
9718}
9719
9720type ListCostCategoryDefinitionsOutput struct {
9721	_ struct{} `type:"structure"`
9722
9723	// A reference to a Cost Category containing enough information to identify
9724	// the Cost Category.
9725	CostCategoryReferences []*CostCategoryReference `type:"list"`
9726
9727	// The token to retrieve the next set of results. Amazon Web Services provides
9728	// the token when the response from a previous call has more results than the
9729	// maximum page size.
9730	NextToken *string `type:"string"`
9731}
9732
9733// String returns the string representation
9734func (s ListCostCategoryDefinitionsOutput) String() string {
9735	return awsutil.Prettify(s)
9736}
9737
9738// GoString returns the string representation
9739func (s ListCostCategoryDefinitionsOutput) GoString() string {
9740	return s.String()
9741}
9742
9743// SetCostCategoryReferences sets the CostCategoryReferences field's value.
9744func (s *ListCostCategoryDefinitionsOutput) SetCostCategoryReferences(v []*CostCategoryReference) *ListCostCategoryDefinitionsOutput {
9745	s.CostCategoryReferences = v
9746	return s
9747}
9748
9749// SetNextToken sets the NextToken field's value.
9750func (s *ListCostCategoryDefinitionsOutput) SetNextToken(v string) *ListCostCategoryDefinitionsOutput {
9751	s.NextToken = &v
9752	return s
9753}
9754
9755// The aggregated value for a metric.
9756type MetricValue struct {
9757	_ struct{} `type:"structure"`
9758
9759	// The actual number that represents the metric.
9760	Amount *string `type:"string"`
9761
9762	// The unit that the metric is given in.
9763	Unit *string `type:"string"`
9764}
9765
9766// String returns the string representation
9767func (s MetricValue) String() string {
9768	return awsutil.Prettify(s)
9769}
9770
9771// GoString returns the string representation
9772func (s MetricValue) GoString() string {
9773	return s.String()
9774}
9775
9776// SetAmount sets the Amount field's value.
9777func (s *MetricValue) SetAmount(v string) *MetricValue {
9778	s.Amount = &v
9779	return s
9780}
9781
9782// SetUnit sets the Unit field's value.
9783func (s *MetricValue) SetUnit(v string) *MetricValue {
9784	s.Unit = &v
9785	return s
9786}
9787
9788// Details on the modification recommendation.
9789type ModifyRecommendationDetail struct {
9790	_ struct{} `type:"structure"`
9791
9792	// Determines whether this instance type is the Amazon Web Services default
9793	// recommendation.
9794	TargetInstances []*TargetInstance `type:"list"`
9795}
9796
9797// String returns the string representation
9798func (s ModifyRecommendationDetail) String() string {
9799	return awsutil.Prettify(s)
9800}
9801
9802// GoString returns the string representation
9803func (s ModifyRecommendationDetail) GoString() string {
9804	return s.String()
9805}
9806
9807// SetTargetInstances sets the TargetInstances field's value.
9808func (s *ModifyRecommendationDetail) SetTargetInstances(v []*TargetInstance) *ModifyRecommendationDetail {
9809	s.TargetInstances = v
9810	return s
9811}
9812
9813// The network field that contains a list of network metrics that are associated
9814// with the current instance.
9815type NetworkResourceUtilization struct {
9816	_ struct{} `type:"structure"`
9817
9818	// The network inbound throughput utilization measured in Bytes per second.
9819	NetworkInBytesPerSecond *string `type:"string"`
9820
9821	// The network outbound throughput utilization measured in Bytes per second.
9822	NetworkOutBytesPerSecond *string `type:"string"`
9823
9824	// The network ingress packets that are measured in packets per second.
9825	NetworkPacketsInPerSecond *string `type:"string"`
9826
9827	// The network outgress packets that are measured in packets per second.
9828	NetworkPacketsOutPerSecond *string `type:"string"`
9829}
9830
9831// String returns the string representation
9832func (s NetworkResourceUtilization) String() string {
9833	return awsutil.Prettify(s)
9834}
9835
9836// GoString returns the string representation
9837func (s NetworkResourceUtilization) GoString() string {
9838	return s.String()
9839}
9840
9841// SetNetworkInBytesPerSecond sets the NetworkInBytesPerSecond field's value.
9842func (s *NetworkResourceUtilization) SetNetworkInBytesPerSecond(v string) *NetworkResourceUtilization {
9843	s.NetworkInBytesPerSecond = &v
9844	return s
9845}
9846
9847// SetNetworkOutBytesPerSecond sets the NetworkOutBytesPerSecond field's value.
9848func (s *NetworkResourceUtilization) SetNetworkOutBytesPerSecond(v string) *NetworkResourceUtilization {
9849	s.NetworkOutBytesPerSecond = &v
9850	return s
9851}
9852
9853// SetNetworkPacketsInPerSecond sets the NetworkPacketsInPerSecond field's value.
9854func (s *NetworkResourceUtilization) SetNetworkPacketsInPerSecond(v string) *NetworkResourceUtilization {
9855	s.NetworkPacketsInPerSecond = &v
9856	return s
9857}
9858
9859// SetNetworkPacketsOutPerSecond sets the NetworkPacketsOutPerSecond field's value.
9860func (s *NetworkResourceUtilization) SetNetworkPacketsOutPerSecond(v string) *NetworkResourceUtilization {
9861	s.NetworkPacketsOutPerSecond = &v
9862	return s
9863}
9864
9865type ProvideAnomalyFeedbackInput struct {
9866	_ struct{} `type:"structure"`
9867
9868	// A cost anomaly ID.
9869	//
9870	// AnomalyId is a required field
9871	AnomalyId *string `type:"string" required:"true"`
9872
9873	// Describes whether the cost anomaly was a planned activity or you considered
9874	// it an anomaly.
9875	//
9876	// Feedback is a required field
9877	Feedback *string `type:"string" required:"true" enum:"AnomalyFeedbackType"`
9878}
9879
9880// String returns the string representation
9881func (s ProvideAnomalyFeedbackInput) String() string {
9882	return awsutil.Prettify(s)
9883}
9884
9885// GoString returns the string representation
9886func (s ProvideAnomalyFeedbackInput) GoString() string {
9887	return s.String()
9888}
9889
9890// Validate inspects the fields of the type to determine if they are valid.
9891func (s *ProvideAnomalyFeedbackInput) Validate() error {
9892	invalidParams := request.ErrInvalidParams{Context: "ProvideAnomalyFeedbackInput"}
9893	if s.AnomalyId == nil {
9894		invalidParams.Add(request.NewErrParamRequired("AnomalyId"))
9895	}
9896	if s.Feedback == nil {
9897		invalidParams.Add(request.NewErrParamRequired("Feedback"))
9898	}
9899
9900	if invalidParams.Len() > 0 {
9901		return invalidParams
9902	}
9903	return nil
9904}
9905
9906// SetAnomalyId sets the AnomalyId field's value.
9907func (s *ProvideAnomalyFeedbackInput) SetAnomalyId(v string) *ProvideAnomalyFeedbackInput {
9908	s.AnomalyId = &v
9909	return s
9910}
9911
9912// SetFeedback sets the Feedback field's value.
9913func (s *ProvideAnomalyFeedbackInput) SetFeedback(v string) *ProvideAnomalyFeedbackInput {
9914	s.Feedback = &v
9915	return s
9916}
9917
9918type ProvideAnomalyFeedbackOutput struct {
9919	_ struct{} `type:"structure"`
9920
9921	// The ID of the modified cost anomaly.
9922	//
9923	// AnomalyId is a required field
9924	AnomalyId *string `type:"string" required:"true"`
9925}
9926
9927// String returns the string representation
9928func (s ProvideAnomalyFeedbackOutput) String() string {
9929	return awsutil.Prettify(s)
9930}
9931
9932// GoString returns the string representation
9933func (s ProvideAnomalyFeedbackOutput) GoString() string {
9934	return s.String()
9935}
9936
9937// SetAnomalyId sets the AnomalyId field's value.
9938func (s *ProvideAnomalyFeedbackOutput) SetAnomalyId(v string) *ProvideAnomalyFeedbackOutput {
9939	s.AnomalyId = &v
9940	return s
9941}
9942
9943// Details about the Amazon RDS instances that Amazon Web Services recommends
9944// that you purchase.
9945type RDSInstanceDetails struct {
9946	_ struct{} `type:"structure"`
9947
9948	// Determines whether the recommendation is for a current-generation instance.
9949	CurrentGeneration *bool `type:"boolean"`
9950
9951	// The database edition that the recommended reservation supports.
9952	DatabaseEdition *string `type:"string"`
9953
9954	// The database engine that the recommended reservation supports.
9955	DatabaseEngine *string `type:"string"`
9956
9957	// Determines whether the recommendation is for a reservation in a single Availability
9958	// Zone or a reservation with a backup in a second Availability Zone.
9959	DeploymentOption *string `type:"string"`
9960
9961	// The instance family of the recommended reservation.
9962	Family *string `type:"string"`
9963
9964	// The type of instance that Amazon Web Services recommends.
9965	InstanceType *string `type:"string"`
9966
9967	// The license model that the recommended reservation supports.
9968	LicenseModel *string `type:"string"`
9969
9970	// The Amazon Web Services Region of the recommended reservation.
9971	Region *string `type:"string"`
9972
9973	// Determines whether the recommended reservation is size flexible.
9974	SizeFlexEligible *bool `type:"boolean"`
9975}
9976
9977// String returns the string representation
9978func (s RDSInstanceDetails) String() string {
9979	return awsutil.Prettify(s)
9980}
9981
9982// GoString returns the string representation
9983func (s RDSInstanceDetails) GoString() string {
9984	return s.String()
9985}
9986
9987// SetCurrentGeneration sets the CurrentGeneration field's value.
9988func (s *RDSInstanceDetails) SetCurrentGeneration(v bool) *RDSInstanceDetails {
9989	s.CurrentGeneration = &v
9990	return s
9991}
9992
9993// SetDatabaseEdition sets the DatabaseEdition field's value.
9994func (s *RDSInstanceDetails) SetDatabaseEdition(v string) *RDSInstanceDetails {
9995	s.DatabaseEdition = &v
9996	return s
9997}
9998
9999// SetDatabaseEngine sets the DatabaseEngine field's value.
10000func (s *RDSInstanceDetails) SetDatabaseEngine(v string) *RDSInstanceDetails {
10001	s.DatabaseEngine = &v
10002	return s
10003}
10004
10005// SetDeploymentOption sets the DeploymentOption field's value.
10006func (s *RDSInstanceDetails) SetDeploymentOption(v string) *RDSInstanceDetails {
10007	s.DeploymentOption = &v
10008	return s
10009}
10010
10011// SetFamily sets the Family field's value.
10012func (s *RDSInstanceDetails) SetFamily(v string) *RDSInstanceDetails {
10013	s.Family = &v
10014	return s
10015}
10016
10017// SetInstanceType sets the InstanceType field's value.
10018func (s *RDSInstanceDetails) SetInstanceType(v string) *RDSInstanceDetails {
10019	s.InstanceType = &v
10020	return s
10021}
10022
10023// SetLicenseModel sets the LicenseModel field's value.
10024func (s *RDSInstanceDetails) SetLicenseModel(v string) *RDSInstanceDetails {
10025	s.LicenseModel = &v
10026	return s
10027}
10028
10029// SetRegion sets the Region field's value.
10030func (s *RDSInstanceDetails) SetRegion(v string) *RDSInstanceDetails {
10031	s.Region = &v
10032	return s
10033}
10034
10035// SetSizeFlexEligible sets the SizeFlexEligible field's value.
10036func (s *RDSInstanceDetails) SetSizeFlexEligible(v bool) *RDSInstanceDetails {
10037	s.SizeFlexEligible = &v
10038	return s
10039}
10040
10041// Details about the Amazon Redshift instances that Amazon Web Services recommends
10042// that you purchase.
10043type RedshiftInstanceDetails struct {
10044	_ struct{} `type:"structure"`
10045
10046	// Determines whether the recommendation is for a current-generation instance.
10047	CurrentGeneration *bool `type:"boolean"`
10048
10049	// The instance family of the recommended reservation.
10050	Family *string `type:"string"`
10051
10052	// The type of node that Amazon Web Services recommends.
10053	NodeType *string `type:"string"`
10054
10055	// The Amazon Web Services Region of the recommended reservation.
10056	Region *string `type:"string"`
10057
10058	// Determines whether the recommended reservation is size flexible.
10059	SizeFlexEligible *bool `type:"boolean"`
10060}
10061
10062// String returns the string representation
10063func (s RedshiftInstanceDetails) String() string {
10064	return awsutil.Prettify(s)
10065}
10066
10067// GoString returns the string representation
10068func (s RedshiftInstanceDetails) GoString() string {
10069	return s.String()
10070}
10071
10072// SetCurrentGeneration sets the CurrentGeneration field's value.
10073func (s *RedshiftInstanceDetails) SetCurrentGeneration(v bool) *RedshiftInstanceDetails {
10074	s.CurrentGeneration = &v
10075	return s
10076}
10077
10078// SetFamily sets the Family field's value.
10079func (s *RedshiftInstanceDetails) SetFamily(v string) *RedshiftInstanceDetails {
10080	s.Family = &v
10081	return s
10082}
10083
10084// SetNodeType sets the NodeType field's value.
10085func (s *RedshiftInstanceDetails) SetNodeType(v string) *RedshiftInstanceDetails {
10086	s.NodeType = &v
10087	return s
10088}
10089
10090// SetRegion sets the Region field's value.
10091func (s *RedshiftInstanceDetails) SetRegion(v string) *RedshiftInstanceDetails {
10092	s.Region = &v
10093	return s
10094}
10095
10096// SetSizeFlexEligible sets the SizeFlexEligible field's value.
10097func (s *RedshiftInstanceDetails) SetSizeFlexEligible(v bool) *RedshiftInstanceDetails {
10098	s.SizeFlexEligible = &v
10099	return s
10100}
10101
10102// Your request parameters changed between pages. Try again with the old parameters
10103// or without a pagination token.
10104type RequestChangedException struct {
10105	_            struct{}                  `type:"structure"`
10106	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
10107
10108	Message_ *string `locationName:"Message" type:"string"`
10109}
10110
10111// String returns the string representation
10112func (s RequestChangedException) String() string {
10113	return awsutil.Prettify(s)
10114}
10115
10116// GoString returns the string representation
10117func (s RequestChangedException) GoString() string {
10118	return s.String()
10119}
10120
10121func newErrorRequestChangedException(v protocol.ResponseMetadata) error {
10122	return &RequestChangedException{
10123		RespMetadata: v,
10124	}
10125}
10126
10127// Code returns the exception type name.
10128func (s *RequestChangedException) Code() string {
10129	return "RequestChangedException"
10130}
10131
10132// Message returns the exception's message.
10133func (s *RequestChangedException) Message() string {
10134	if s.Message_ != nil {
10135		return *s.Message_
10136	}
10137	return ""
10138}
10139
10140// OrigErr always returns nil, satisfies awserr.Error interface.
10141func (s *RequestChangedException) OrigErr() error {
10142	return nil
10143}
10144
10145func (s *RequestChangedException) Error() string {
10146	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
10147}
10148
10149// Status code returns the HTTP status code for the request's response error.
10150func (s *RequestChangedException) StatusCode() int {
10151	return s.RespMetadata.StatusCode
10152}
10153
10154// RequestID returns the service's response RequestID for request.
10155func (s *RequestChangedException) RequestID() string {
10156	return s.RespMetadata.RequestID
10157}
10158
10159// The aggregated numbers for your reservation usage.
10160type ReservationAggregates struct {
10161	_ struct{} `type:"structure"`
10162
10163	// The monthly cost of your reservation. It's amortized over the reservation
10164	// period.
10165	AmortizedRecurringFee *string `type:"string"`
10166
10167	// The upfront cost of your reservation. It's amortized over the reservation
10168	// period.
10169	AmortizedUpfrontFee *string `type:"string"`
10170
10171	// How much you saved due to purchasing and utilizing reservation. Amazon Web
10172	// Services calculates this by subtracting TotalAmortizedFee from OnDemandCostOfRIHoursUsed.
10173	NetRISavings *string `type:"string"`
10174
10175	// How much your reservation costs if charged On-Demand rates.
10176	OnDemandCostOfRIHoursUsed *string `type:"string"`
10177
10178	// How many reservation hours that you purchased.
10179	PurchasedHours *string `type:"string"`
10180
10181	// The number of Amazon EC2 reservation hours that you purchased. It's converted
10182	// to normalized units. Normalized units are available only for Amazon EC2 usage
10183	// after November 11, 2017.
10184	PurchasedUnits *string `type:"string"`
10185
10186	// The cost of unused hours for your reservation.
10187	RICostForUnusedHours *string `type:"string"`
10188
10189	// The realized savings because of purchasing and using a reservation.
10190	RealizedSavings *string `type:"string"`
10191
10192	// The total number of reservation hours that you used.
10193	TotalActualHours *string `type:"string"`
10194
10195	// The total number of Amazon EC2 reservation hours that you used. It's converted
10196	// to normalized units. Normalized units are available only for Amazon EC2 usage
10197	// after November 11, 2017.
10198	TotalActualUnits *string `type:"string"`
10199
10200	// The total cost of your reservation. It's amortized over the reservation period.
10201	TotalAmortizedFee *string `type:"string"`
10202
10203	// How much you might save if you use your entire reservation.
10204	TotalPotentialRISavings *string `type:"string"`
10205
10206	// The unrealized savings because of purchasing and using a reservation.
10207	UnrealizedSavings *string `type:"string"`
10208
10209	// The number of reservation hours that you didn't use.
10210	UnusedHours *string `type:"string"`
10211
10212	// The number of Amazon EC2 reservation hours that you didn't use. It's converted
10213	// to normalized units. Normalized units are available only for Amazon EC2 usage
10214	// after November 11, 2017.
10215	UnusedUnits *string `type:"string"`
10216
10217	// The percentage of reservation time that you used.
10218	UtilizationPercentage *string `type:"string"`
10219
10220	// The percentage of Amazon EC2 reservation time that you used. It's converted
10221	// to normalized units. Normalized units are available only for Amazon EC2 usage
10222	// after November 11, 2017.
10223	UtilizationPercentageInUnits *string `type:"string"`
10224}
10225
10226// String returns the string representation
10227func (s ReservationAggregates) String() string {
10228	return awsutil.Prettify(s)
10229}
10230
10231// GoString returns the string representation
10232func (s ReservationAggregates) GoString() string {
10233	return s.String()
10234}
10235
10236// SetAmortizedRecurringFee sets the AmortizedRecurringFee field's value.
10237func (s *ReservationAggregates) SetAmortizedRecurringFee(v string) *ReservationAggregates {
10238	s.AmortizedRecurringFee = &v
10239	return s
10240}
10241
10242// SetAmortizedUpfrontFee sets the AmortizedUpfrontFee field's value.
10243func (s *ReservationAggregates) SetAmortizedUpfrontFee(v string) *ReservationAggregates {
10244	s.AmortizedUpfrontFee = &v
10245	return s
10246}
10247
10248// SetNetRISavings sets the NetRISavings field's value.
10249func (s *ReservationAggregates) SetNetRISavings(v string) *ReservationAggregates {
10250	s.NetRISavings = &v
10251	return s
10252}
10253
10254// SetOnDemandCostOfRIHoursUsed sets the OnDemandCostOfRIHoursUsed field's value.
10255func (s *ReservationAggregates) SetOnDemandCostOfRIHoursUsed(v string) *ReservationAggregates {
10256	s.OnDemandCostOfRIHoursUsed = &v
10257	return s
10258}
10259
10260// SetPurchasedHours sets the PurchasedHours field's value.
10261func (s *ReservationAggregates) SetPurchasedHours(v string) *ReservationAggregates {
10262	s.PurchasedHours = &v
10263	return s
10264}
10265
10266// SetPurchasedUnits sets the PurchasedUnits field's value.
10267func (s *ReservationAggregates) SetPurchasedUnits(v string) *ReservationAggregates {
10268	s.PurchasedUnits = &v
10269	return s
10270}
10271
10272// SetRICostForUnusedHours sets the RICostForUnusedHours field's value.
10273func (s *ReservationAggregates) SetRICostForUnusedHours(v string) *ReservationAggregates {
10274	s.RICostForUnusedHours = &v
10275	return s
10276}
10277
10278// SetRealizedSavings sets the RealizedSavings field's value.
10279func (s *ReservationAggregates) SetRealizedSavings(v string) *ReservationAggregates {
10280	s.RealizedSavings = &v
10281	return s
10282}
10283
10284// SetTotalActualHours sets the TotalActualHours field's value.
10285func (s *ReservationAggregates) SetTotalActualHours(v string) *ReservationAggregates {
10286	s.TotalActualHours = &v
10287	return s
10288}
10289
10290// SetTotalActualUnits sets the TotalActualUnits field's value.
10291func (s *ReservationAggregates) SetTotalActualUnits(v string) *ReservationAggregates {
10292	s.TotalActualUnits = &v
10293	return s
10294}
10295
10296// SetTotalAmortizedFee sets the TotalAmortizedFee field's value.
10297func (s *ReservationAggregates) SetTotalAmortizedFee(v string) *ReservationAggregates {
10298	s.TotalAmortizedFee = &v
10299	return s
10300}
10301
10302// SetTotalPotentialRISavings sets the TotalPotentialRISavings field's value.
10303func (s *ReservationAggregates) SetTotalPotentialRISavings(v string) *ReservationAggregates {
10304	s.TotalPotentialRISavings = &v
10305	return s
10306}
10307
10308// SetUnrealizedSavings sets the UnrealizedSavings field's value.
10309func (s *ReservationAggregates) SetUnrealizedSavings(v string) *ReservationAggregates {
10310	s.UnrealizedSavings = &v
10311	return s
10312}
10313
10314// SetUnusedHours sets the UnusedHours field's value.
10315func (s *ReservationAggregates) SetUnusedHours(v string) *ReservationAggregates {
10316	s.UnusedHours = &v
10317	return s
10318}
10319
10320// SetUnusedUnits sets the UnusedUnits field's value.
10321func (s *ReservationAggregates) SetUnusedUnits(v string) *ReservationAggregates {
10322	s.UnusedUnits = &v
10323	return s
10324}
10325
10326// SetUtilizationPercentage sets the UtilizationPercentage field's value.
10327func (s *ReservationAggregates) SetUtilizationPercentage(v string) *ReservationAggregates {
10328	s.UtilizationPercentage = &v
10329	return s
10330}
10331
10332// SetUtilizationPercentageInUnits sets the UtilizationPercentageInUnits field's value.
10333func (s *ReservationAggregates) SetUtilizationPercentageInUnits(v string) *ReservationAggregates {
10334	s.UtilizationPercentageInUnits = &v
10335	return s
10336}
10337
10338// A group of reservations that share a set of attributes.
10339type ReservationCoverageGroup struct {
10340	_ struct{} `type:"structure"`
10341
10342	// The attributes for this group of reservations.
10343	Attributes map[string]*string `type:"map"`
10344
10345	// How much instance usage this group of reservations covered.
10346	Coverage *Coverage `type:"structure"`
10347}
10348
10349// String returns the string representation
10350func (s ReservationCoverageGroup) String() string {
10351	return awsutil.Prettify(s)
10352}
10353
10354// GoString returns the string representation
10355func (s ReservationCoverageGroup) GoString() string {
10356	return s.String()
10357}
10358
10359// SetAttributes sets the Attributes field's value.
10360func (s *ReservationCoverageGroup) SetAttributes(v map[string]*string) *ReservationCoverageGroup {
10361	s.Attributes = v
10362	return s
10363}
10364
10365// SetCoverage sets the Coverage field's value.
10366func (s *ReservationCoverageGroup) SetCoverage(v *Coverage) *ReservationCoverageGroup {
10367	s.Coverage = v
10368	return s
10369}
10370
10371// A specific reservation that Amazon Web Services recommends for purchase.
10372type ReservationPurchaseRecommendation struct {
10373	_ struct{} `type:"structure"`
10374
10375	// The account scope that Amazon Web Services recommends that you purchase this
10376	// instance for. For example, you can purchase this reservation for an entire
10377	// organization in Amazon Web Services Organizations.
10378	AccountScope *string `type:"string" enum:"AccountScope"`
10379
10380	// How many days of previous usage that Amazon Web Services considers when making
10381	// this recommendation.
10382	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
10383
10384	// The payment option for the reservation (for example, AllUpfront or NoUpfront).
10385	PaymentOption *string `type:"string" enum:"PaymentOption"`
10386
10387	// Details about the recommended purchases.
10388	RecommendationDetails []*ReservationPurchaseRecommendationDetail `type:"list"`
10389
10390	// A summary about the recommended purchase.
10391	RecommendationSummary *ReservationPurchaseRecommendationSummary `type:"structure"`
10392
10393	// Hardware specifications for the service that you want recommendations for.
10394	ServiceSpecification *ServiceSpecification `type:"structure"`
10395
10396	// The term of the reservation that you want recommendations for, in years.
10397	TermInYears *string `type:"string" enum:"TermInYears"`
10398}
10399
10400// String returns the string representation
10401func (s ReservationPurchaseRecommendation) String() string {
10402	return awsutil.Prettify(s)
10403}
10404
10405// GoString returns the string representation
10406func (s ReservationPurchaseRecommendation) GoString() string {
10407	return s.String()
10408}
10409
10410// SetAccountScope sets the AccountScope field's value.
10411func (s *ReservationPurchaseRecommendation) SetAccountScope(v string) *ReservationPurchaseRecommendation {
10412	s.AccountScope = &v
10413	return s
10414}
10415
10416// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
10417func (s *ReservationPurchaseRecommendation) SetLookbackPeriodInDays(v string) *ReservationPurchaseRecommendation {
10418	s.LookbackPeriodInDays = &v
10419	return s
10420}
10421
10422// SetPaymentOption sets the PaymentOption field's value.
10423func (s *ReservationPurchaseRecommendation) SetPaymentOption(v string) *ReservationPurchaseRecommendation {
10424	s.PaymentOption = &v
10425	return s
10426}
10427
10428// SetRecommendationDetails sets the RecommendationDetails field's value.
10429func (s *ReservationPurchaseRecommendation) SetRecommendationDetails(v []*ReservationPurchaseRecommendationDetail) *ReservationPurchaseRecommendation {
10430	s.RecommendationDetails = v
10431	return s
10432}
10433
10434// SetRecommendationSummary sets the RecommendationSummary field's value.
10435func (s *ReservationPurchaseRecommendation) SetRecommendationSummary(v *ReservationPurchaseRecommendationSummary) *ReservationPurchaseRecommendation {
10436	s.RecommendationSummary = v
10437	return s
10438}
10439
10440// SetServiceSpecification sets the ServiceSpecification field's value.
10441func (s *ReservationPurchaseRecommendation) SetServiceSpecification(v *ServiceSpecification) *ReservationPurchaseRecommendation {
10442	s.ServiceSpecification = v
10443	return s
10444}
10445
10446// SetTermInYears sets the TermInYears field's value.
10447func (s *ReservationPurchaseRecommendation) SetTermInYears(v string) *ReservationPurchaseRecommendation {
10448	s.TermInYears = &v
10449	return s
10450}
10451
10452// Details about your recommended reservation purchase.
10453type ReservationPurchaseRecommendationDetail struct {
10454	_ struct{} `type:"structure"`
10455
10456	// The account that this RI recommendation is for.
10457	AccountId *string `type:"string"`
10458
10459	// The average number of normalized units that you used in an hour during the
10460	// historical period. Amazon Web Services uses this to calculate your recommended
10461	// reservation purchases.
10462	AverageNormalizedUnitsUsedPerHour *string `type:"string"`
10463
10464	// The average number of instances that you used in an hour during the historical
10465	// period. Amazon Web Services uses this to calculate your recommended reservation
10466	// purchases.
10467	AverageNumberOfInstancesUsedPerHour *string `type:"string"`
10468
10469	// The average utilization of your instances. Amazon Web Services uses this
10470	// to calculate your recommended reservation purchases.
10471	AverageUtilization *string `type:"string"`
10472
10473	// The currency code that Amazon Web Services used to calculate the costs for
10474	// this instance.
10475	CurrencyCode *string `type:"string"`
10476
10477	// How long Amazon Web Services estimates that it takes for this instance to
10478	// start saving you money, in months.
10479	EstimatedBreakEvenInMonths *string `type:"string"`
10480
10481	// How much Amazon Web Services estimates that you spend on On-Demand Instances
10482	// in a month.
10483	EstimatedMonthlyOnDemandCost *string `type:"string"`
10484
10485	// How much Amazon Web Services estimates that this specific recommendation
10486	// could save you in a month.
10487	EstimatedMonthlySavingsAmount *string `type:"string"`
10488
10489	// How much Amazon Web Services estimates that this specific recommendation
10490	// could save you in a month, as a percentage of your overall costs.
10491	EstimatedMonthlySavingsPercentage *string `type:"string"`
10492
10493	// How much Amazon Web Services estimates that you would have spent for all
10494	// usage during the specified historical period if you had a reservation.
10495	EstimatedReservationCostForLookbackPeriod *string `type:"string"`
10496
10497	// Details about the instances that Amazon Web Services recommends that you
10498	// purchase.
10499	InstanceDetails *InstanceDetails `type:"structure"`
10500
10501	// The maximum number of normalized units that you used in an hour during the
10502	// historical period. Amazon Web Services uses this to calculate your recommended
10503	// reservation purchases.
10504	MaximumNormalizedUnitsUsedPerHour *string `type:"string"`
10505
10506	// The maximum number of instances that you used in an hour during the historical
10507	// period. Amazon Web Services uses this to calculate your recommended reservation
10508	// purchases.
10509	MaximumNumberOfInstancesUsedPerHour *string `type:"string"`
10510
10511	// The minimum number of normalized units that you used in an hour during the
10512	// historical period. Amazon Web Services uses this to calculate your recommended
10513	// reservation purchases.
10514	MinimumNormalizedUnitsUsedPerHour *string `type:"string"`
10515
10516	// The minimum number of instances that you used in an hour during the historical
10517	// period. Amazon Web Services uses this to calculate your recommended reservation
10518	// purchases.
10519	MinimumNumberOfInstancesUsedPerHour *string `type:"string"`
10520
10521	// The number of normalized units that Amazon Web Services recommends that you
10522	// purchase.
10523	RecommendedNormalizedUnitsToPurchase *string `type:"string"`
10524
10525	// The number of instances that Amazon Web Services recommends that you purchase.
10526	RecommendedNumberOfInstancesToPurchase *string `type:"string"`
10527
10528	// How much purchasing this instance costs you on a monthly basis.
10529	RecurringStandardMonthlyCost *string `type:"string"`
10530
10531	// How much purchasing this instance costs you upfront.
10532	UpfrontCost *string `type:"string"`
10533}
10534
10535// String returns the string representation
10536func (s ReservationPurchaseRecommendationDetail) String() string {
10537	return awsutil.Prettify(s)
10538}
10539
10540// GoString returns the string representation
10541func (s ReservationPurchaseRecommendationDetail) GoString() string {
10542	return s.String()
10543}
10544
10545// SetAccountId sets the AccountId field's value.
10546func (s *ReservationPurchaseRecommendationDetail) SetAccountId(v string) *ReservationPurchaseRecommendationDetail {
10547	s.AccountId = &v
10548	return s
10549}
10550
10551// SetAverageNormalizedUnitsUsedPerHour sets the AverageNormalizedUnitsUsedPerHour field's value.
10552func (s *ReservationPurchaseRecommendationDetail) SetAverageNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
10553	s.AverageNormalizedUnitsUsedPerHour = &v
10554	return s
10555}
10556
10557// SetAverageNumberOfInstancesUsedPerHour sets the AverageNumberOfInstancesUsedPerHour field's value.
10558func (s *ReservationPurchaseRecommendationDetail) SetAverageNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
10559	s.AverageNumberOfInstancesUsedPerHour = &v
10560	return s
10561}
10562
10563// SetAverageUtilization sets the AverageUtilization field's value.
10564func (s *ReservationPurchaseRecommendationDetail) SetAverageUtilization(v string) *ReservationPurchaseRecommendationDetail {
10565	s.AverageUtilization = &v
10566	return s
10567}
10568
10569// SetCurrencyCode sets the CurrencyCode field's value.
10570func (s *ReservationPurchaseRecommendationDetail) SetCurrencyCode(v string) *ReservationPurchaseRecommendationDetail {
10571	s.CurrencyCode = &v
10572	return s
10573}
10574
10575// SetEstimatedBreakEvenInMonths sets the EstimatedBreakEvenInMonths field's value.
10576func (s *ReservationPurchaseRecommendationDetail) SetEstimatedBreakEvenInMonths(v string) *ReservationPurchaseRecommendationDetail {
10577	s.EstimatedBreakEvenInMonths = &v
10578	return s
10579}
10580
10581// SetEstimatedMonthlyOnDemandCost sets the EstimatedMonthlyOnDemandCost field's value.
10582func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlyOnDemandCost(v string) *ReservationPurchaseRecommendationDetail {
10583	s.EstimatedMonthlyOnDemandCost = &v
10584	return s
10585}
10586
10587// SetEstimatedMonthlySavingsAmount sets the EstimatedMonthlySavingsAmount field's value.
10588func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlySavingsAmount(v string) *ReservationPurchaseRecommendationDetail {
10589	s.EstimatedMonthlySavingsAmount = &v
10590	return s
10591}
10592
10593// SetEstimatedMonthlySavingsPercentage sets the EstimatedMonthlySavingsPercentage field's value.
10594func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlySavingsPercentage(v string) *ReservationPurchaseRecommendationDetail {
10595	s.EstimatedMonthlySavingsPercentage = &v
10596	return s
10597}
10598
10599// SetEstimatedReservationCostForLookbackPeriod sets the EstimatedReservationCostForLookbackPeriod field's value.
10600func (s *ReservationPurchaseRecommendationDetail) SetEstimatedReservationCostForLookbackPeriod(v string) *ReservationPurchaseRecommendationDetail {
10601	s.EstimatedReservationCostForLookbackPeriod = &v
10602	return s
10603}
10604
10605// SetInstanceDetails sets the InstanceDetails field's value.
10606func (s *ReservationPurchaseRecommendationDetail) SetInstanceDetails(v *InstanceDetails) *ReservationPurchaseRecommendationDetail {
10607	s.InstanceDetails = v
10608	return s
10609}
10610
10611// SetMaximumNormalizedUnitsUsedPerHour sets the MaximumNormalizedUnitsUsedPerHour field's value.
10612func (s *ReservationPurchaseRecommendationDetail) SetMaximumNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
10613	s.MaximumNormalizedUnitsUsedPerHour = &v
10614	return s
10615}
10616
10617// SetMaximumNumberOfInstancesUsedPerHour sets the MaximumNumberOfInstancesUsedPerHour field's value.
10618func (s *ReservationPurchaseRecommendationDetail) SetMaximumNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
10619	s.MaximumNumberOfInstancesUsedPerHour = &v
10620	return s
10621}
10622
10623// SetMinimumNormalizedUnitsUsedPerHour sets the MinimumNormalizedUnitsUsedPerHour field's value.
10624func (s *ReservationPurchaseRecommendationDetail) SetMinimumNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
10625	s.MinimumNormalizedUnitsUsedPerHour = &v
10626	return s
10627}
10628
10629// SetMinimumNumberOfInstancesUsedPerHour sets the MinimumNumberOfInstancesUsedPerHour field's value.
10630func (s *ReservationPurchaseRecommendationDetail) SetMinimumNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
10631	s.MinimumNumberOfInstancesUsedPerHour = &v
10632	return s
10633}
10634
10635// SetRecommendedNormalizedUnitsToPurchase sets the RecommendedNormalizedUnitsToPurchase field's value.
10636func (s *ReservationPurchaseRecommendationDetail) SetRecommendedNormalizedUnitsToPurchase(v string) *ReservationPurchaseRecommendationDetail {
10637	s.RecommendedNormalizedUnitsToPurchase = &v
10638	return s
10639}
10640
10641// SetRecommendedNumberOfInstancesToPurchase sets the RecommendedNumberOfInstancesToPurchase field's value.
10642func (s *ReservationPurchaseRecommendationDetail) SetRecommendedNumberOfInstancesToPurchase(v string) *ReservationPurchaseRecommendationDetail {
10643	s.RecommendedNumberOfInstancesToPurchase = &v
10644	return s
10645}
10646
10647// SetRecurringStandardMonthlyCost sets the RecurringStandardMonthlyCost field's value.
10648func (s *ReservationPurchaseRecommendationDetail) SetRecurringStandardMonthlyCost(v string) *ReservationPurchaseRecommendationDetail {
10649	s.RecurringStandardMonthlyCost = &v
10650	return s
10651}
10652
10653// SetUpfrontCost sets the UpfrontCost field's value.
10654func (s *ReservationPurchaseRecommendationDetail) SetUpfrontCost(v string) *ReservationPurchaseRecommendationDetail {
10655	s.UpfrontCost = &v
10656	return s
10657}
10658
10659// Information about this specific recommendation, such as the timestamp for
10660// when Amazon Web Services made a specific recommendation.
10661type ReservationPurchaseRecommendationMetadata struct {
10662	_ struct{} `type:"structure"`
10663
10664	// The timestamp for when Amazon Web Services made this recommendation.
10665	GenerationTimestamp *string `type:"string"`
10666
10667	// The ID for this specific recommendation.
10668	RecommendationId *string `type:"string"`
10669}
10670
10671// String returns the string representation
10672func (s ReservationPurchaseRecommendationMetadata) String() string {
10673	return awsutil.Prettify(s)
10674}
10675
10676// GoString returns the string representation
10677func (s ReservationPurchaseRecommendationMetadata) GoString() string {
10678	return s.String()
10679}
10680
10681// SetGenerationTimestamp sets the GenerationTimestamp field's value.
10682func (s *ReservationPurchaseRecommendationMetadata) SetGenerationTimestamp(v string) *ReservationPurchaseRecommendationMetadata {
10683	s.GenerationTimestamp = &v
10684	return s
10685}
10686
10687// SetRecommendationId sets the RecommendationId field's value.
10688func (s *ReservationPurchaseRecommendationMetadata) SetRecommendationId(v string) *ReservationPurchaseRecommendationMetadata {
10689	s.RecommendationId = &v
10690	return s
10691}
10692
10693// A summary about this recommendation, such as the currency code, the amount
10694// that Amazon Web Services estimates that you could save, and the total amount
10695// of reservation to purchase.
10696type ReservationPurchaseRecommendationSummary struct {
10697	_ struct{} `type:"structure"`
10698
10699	// The currency code used for this recommendation.
10700	CurrencyCode *string `type:"string"`
10701
10702	// The total amount that Amazon Web Services estimates that this recommendation
10703	// could save you in a month.
10704	TotalEstimatedMonthlySavingsAmount *string `type:"string"`
10705
10706	// The total amount that Amazon Web Services estimates that this recommendation
10707	// could save you in a month, as a percentage of your costs.
10708	TotalEstimatedMonthlySavingsPercentage *string `type:"string"`
10709}
10710
10711// String returns the string representation
10712func (s ReservationPurchaseRecommendationSummary) String() string {
10713	return awsutil.Prettify(s)
10714}
10715
10716// GoString returns the string representation
10717func (s ReservationPurchaseRecommendationSummary) GoString() string {
10718	return s.String()
10719}
10720
10721// SetCurrencyCode sets the CurrencyCode field's value.
10722func (s *ReservationPurchaseRecommendationSummary) SetCurrencyCode(v string) *ReservationPurchaseRecommendationSummary {
10723	s.CurrencyCode = &v
10724	return s
10725}
10726
10727// SetTotalEstimatedMonthlySavingsAmount sets the TotalEstimatedMonthlySavingsAmount field's value.
10728func (s *ReservationPurchaseRecommendationSummary) SetTotalEstimatedMonthlySavingsAmount(v string) *ReservationPurchaseRecommendationSummary {
10729	s.TotalEstimatedMonthlySavingsAmount = &v
10730	return s
10731}
10732
10733// SetTotalEstimatedMonthlySavingsPercentage sets the TotalEstimatedMonthlySavingsPercentage field's value.
10734func (s *ReservationPurchaseRecommendationSummary) SetTotalEstimatedMonthlySavingsPercentage(v string) *ReservationPurchaseRecommendationSummary {
10735	s.TotalEstimatedMonthlySavingsPercentage = &v
10736	return s
10737}
10738
10739// A group of reservations that share a set of attributes.
10740type ReservationUtilizationGroup struct {
10741	_ struct{} `type:"structure"`
10742
10743	// The attributes for this group of reservations.
10744	Attributes map[string]*string `type:"map"`
10745
10746	// The key for a specific reservation attribute.
10747	Key *string `type:"string"`
10748
10749	// How much you used this group of reservations.
10750	Utilization *ReservationAggregates `type:"structure"`
10751
10752	// The value of a specific reservation attribute.
10753	Value *string `type:"string"`
10754}
10755
10756// String returns the string representation
10757func (s ReservationUtilizationGroup) String() string {
10758	return awsutil.Prettify(s)
10759}
10760
10761// GoString returns the string representation
10762func (s ReservationUtilizationGroup) GoString() string {
10763	return s.String()
10764}
10765
10766// SetAttributes sets the Attributes field's value.
10767func (s *ReservationUtilizationGroup) SetAttributes(v map[string]*string) *ReservationUtilizationGroup {
10768	s.Attributes = v
10769	return s
10770}
10771
10772// SetKey sets the Key field's value.
10773func (s *ReservationUtilizationGroup) SetKey(v string) *ReservationUtilizationGroup {
10774	s.Key = &v
10775	return s
10776}
10777
10778// SetUtilization sets the Utilization field's value.
10779func (s *ReservationUtilizationGroup) SetUtilization(v *ReservationAggregates) *ReservationUtilizationGroup {
10780	s.Utilization = v
10781	return s
10782}
10783
10784// SetValue sets the Value field's value.
10785func (s *ReservationUtilizationGroup) SetValue(v string) *ReservationUtilizationGroup {
10786	s.Value = &v
10787	return s
10788}
10789
10790// Details on the resource.
10791type ResourceDetails struct {
10792	_ struct{} `type:"structure"`
10793
10794	// Details on the Amazon EC2 resource.
10795	EC2ResourceDetails *EC2ResourceDetails `type:"structure"`
10796}
10797
10798// String returns the string representation
10799func (s ResourceDetails) String() string {
10800	return awsutil.Prettify(s)
10801}
10802
10803// GoString returns the string representation
10804func (s ResourceDetails) GoString() string {
10805	return s.String()
10806}
10807
10808// SetEC2ResourceDetails sets the EC2ResourceDetails field's value.
10809func (s *ResourceDetails) SetEC2ResourceDetails(v *EC2ResourceDetails) *ResourceDetails {
10810	s.EC2ResourceDetails = v
10811	return s
10812}
10813
10814// The specified ARN in the request doesn't exist.
10815type ResourceNotFoundException struct {
10816	_            struct{}                  `type:"structure"`
10817	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
10818
10819	Message_ *string `locationName:"Message" type:"string"`
10820}
10821
10822// String returns the string representation
10823func (s ResourceNotFoundException) String() string {
10824	return awsutil.Prettify(s)
10825}
10826
10827// GoString returns the string representation
10828func (s ResourceNotFoundException) GoString() string {
10829	return s.String()
10830}
10831
10832func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
10833	return &ResourceNotFoundException{
10834		RespMetadata: v,
10835	}
10836}
10837
10838// Code returns the exception type name.
10839func (s *ResourceNotFoundException) Code() string {
10840	return "ResourceNotFoundException"
10841}
10842
10843// Message returns the exception's message.
10844func (s *ResourceNotFoundException) Message() string {
10845	if s.Message_ != nil {
10846		return *s.Message_
10847	}
10848	return ""
10849}
10850
10851// OrigErr always returns nil, satisfies awserr.Error interface.
10852func (s *ResourceNotFoundException) OrigErr() error {
10853	return nil
10854}
10855
10856func (s *ResourceNotFoundException) Error() string {
10857	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
10858}
10859
10860// Status code returns the HTTP status code for the request's response error.
10861func (s *ResourceNotFoundException) StatusCode() int {
10862	return s.RespMetadata.StatusCode
10863}
10864
10865// RequestID returns the service's response RequestID for request.
10866func (s *ResourceNotFoundException) RequestID() string {
10867	return s.RespMetadata.RequestID
10868}
10869
10870// Resource utilization of current resource.
10871type ResourceUtilization struct {
10872	_ struct{} `type:"structure"`
10873
10874	// The utilization of current Amazon EC2 instance.
10875	EC2ResourceUtilization *EC2ResourceUtilization `type:"structure"`
10876}
10877
10878// String returns the string representation
10879func (s ResourceUtilization) String() string {
10880	return awsutil.Prettify(s)
10881}
10882
10883// GoString returns the string representation
10884func (s ResourceUtilization) GoString() string {
10885	return s.String()
10886}
10887
10888// SetEC2ResourceUtilization sets the EC2ResourceUtilization field's value.
10889func (s *ResourceUtilization) SetEC2ResourceUtilization(v *EC2ResourceUtilization) *ResourceUtilization {
10890	s.EC2ResourceUtilization = v
10891	return s
10892}
10893
10894// The result that's associated with a time period.
10895type ResultByTime struct {
10896	_ struct{} `type:"structure"`
10897
10898	// Determines whether the result is estimated.
10899	Estimated *bool `type:"boolean"`
10900
10901	// The groups that this time period includes.
10902	Groups []*Group `type:"list"`
10903
10904	// The time period that the result covers.
10905	TimePeriod *DateInterval `type:"structure"`
10906
10907	// The total amount of cost or usage accrued during the time period.
10908	Total map[string]*MetricValue `type:"map"`
10909}
10910
10911// String returns the string representation
10912func (s ResultByTime) String() string {
10913	return awsutil.Prettify(s)
10914}
10915
10916// GoString returns the string representation
10917func (s ResultByTime) GoString() string {
10918	return s.String()
10919}
10920
10921// SetEstimated sets the Estimated field's value.
10922func (s *ResultByTime) SetEstimated(v bool) *ResultByTime {
10923	s.Estimated = &v
10924	return s
10925}
10926
10927// SetGroups sets the Groups field's value.
10928func (s *ResultByTime) SetGroups(v []*Group) *ResultByTime {
10929	s.Groups = v
10930	return s
10931}
10932
10933// SetTimePeriod sets the TimePeriod field's value.
10934func (s *ResultByTime) SetTimePeriod(v *DateInterval) *ResultByTime {
10935	s.TimePeriod = v
10936	return s
10937}
10938
10939// SetTotal sets the Total field's value.
10940func (s *ResultByTime) SetTotal(v map[string]*MetricValue) *ResultByTime {
10941	s.Total = v
10942	return s
10943}
10944
10945// Recommendations to rightsize resources.
10946type RightsizingRecommendation struct {
10947	_ struct{} `type:"structure"`
10948
10949	// The account that this recommendation is for.
10950	AccountId *string `type:"string"`
10951
10952	// Context regarding the current instance.
10953	CurrentInstance *CurrentInstance `type:"structure"`
10954
10955	// The list of possible reasons why the recommendation is generated such as
10956	// under or over utilization of specific metrics (for example, CPU, Memory,
10957	// Network).
10958	FindingReasonCodes []*string `type:"list"`
10959
10960	// The details for the modification recommendations.
10961	ModifyRecommendationDetail *ModifyRecommendationDetail `type:"structure"`
10962
10963	// A recommendation to either terminate or modify the resource.
10964	RightsizingType *string `type:"string" enum:"RightsizingType"`
10965
10966	// The details for termination recommendations.
10967	TerminateRecommendationDetail *TerminateRecommendationDetail `type:"structure"`
10968}
10969
10970// String returns the string representation
10971func (s RightsizingRecommendation) String() string {
10972	return awsutil.Prettify(s)
10973}
10974
10975// GoString returns the string representation
10976func (s RightsizingRecommendation) GoString() string {
10977	return s.String()
10978}
10979
10980// SetAccountId sets the AccountId field's value.
10981func (s *RightsizingRecommendation) SetAccountId(v string) *RightsizingRecommendation {
10982	s.AccountId = &v
10983	return s
10984}
10985
10986// SetCurrentInstance sets the CurrentInstance field's value.
10987func (s *RightsizingRecommendation) SetCurrentInstance(v *CurrentInstance) *RightsizingRecommendation {
10988	s.CurrentInstance = v
10989	return s
10990}
10991
10992// SetFindingReasonCodes sets the FindingReasonCodes field's value.
10993func (s *RightsizingRecommendation) SetFindingReasonCodes(v []*string) *RightsizingRecommendation {
10994	s.FindingReasonCodes = v
10995	return s
10996}
10997
10998// SetModifyRecommendationDetail sets the ModifyRecommendationDetail field's value.
10999func (s *RightsizingRecommendation) SetModifyRecommendationDetail(v *ModifyRecommendationDetail) *RightsizingRecommendation {
11000	s.ModifyRecommendationDetail = v
11001	return s
11002}
11003
11004// SetRightsizingType sets the RightsizingType field's value.
11005func (s *RightsizingRecommendation) SetRightsizingType(v string) *RightsizingRecommendation {
11006	s.RightsizingType = &v
11007	return s
11008}
11009
11010// SetTerminateRecommendationDetail sets the TerminateRecommendationDetail field's value.
11011func (s *RightsizingRecommendation) SetTerminateRecommendationDetail(v *TerminateRecommendationDetail) *RightsizingRecommendation {
11012	s.TerminateRecommendationDetail = v
11013	return s
11014}
11015
11016// You can use RightsizingRecommendationConfiguration to customize recommendations
11017// across two attributes. You can choose to view recommendations for instances
11018// within the same instance families or across different instance families.
11019// You can also choose to view your estimated savings that are associated with
11020// recommendations with consideration of existing Savings Plans or RI benefits,
11021// or neither.
11022type RightsizingRecommendationConfiguration struct {
11023	_ struct{} `type:"structure"`
11024
11025	// The option to consider RI or Savings Plans discount benefits in your savings
11026	// calculation. The default value is TRUE.
11027	//
11028	// BenefitsConsidered is a required field
11029	BenefitsConsidered *bool `type:"boolean" required:"true"`
11030
11031	// The option to see recommendations within the same instance family or recommendations
11032	// for instances across other families. The default value is SAME_INSTANCE_FAMILY.
11033	//
11034	// RecommendationTarget is a required field
11035	RecommendationTarget *string `type:"string" required:"true" enum:"RecommendationTarget"`
11036}
11037
11038// String returns the string representation
11039func (s RightsizingRecommendationConfiguration) String() string {
11040	return awsutil.Prettify(s)
11041}
11042
11043// GoString returns the string representation
11044func (s RightsizingRecommendationConfiguration) GoString() string {
11045	return s.String()
11046}
11047
11048// Validate inspects the fields of the type to determine if they are valid.
11049func (s *RightsizingRecommendationConfiguration) Validate() error {
11050	invalidParams := request.ErrInvalidParams{Context: "RightsizingRecommendationConfiguration"}
11051	if s.BenefitsConsidered == nil {
11052		invalidParams.Add(request.NewErrParamRequired("BenefitsConsidered"))
11053	}
11054	if s.RecommendationTarget == nil {
11055		invalidParams.Add(request.NewErrParamRequired("RecommendationTarget"))
11056	}
11057
11058	if invalidParams.Len() > 0 {
11059		return invalidParams
11060	}
11061	return nil
11062}
11063
11064// SetBenefitsConsidered sets the BenefitsConsidered field's value.
11065func (s *RightsizingRecommendationConfiguration) SetBenefitsConsidered(v bool) *RightsizingRecommendationConfiguration {
11066	s.BenefitsConsidered = &v
11067	return s
11068}
11069
11070// SetRecommendationTarget sets the RecommendationTarget field's value.
11071func (s *RightsizingRecommendationConfiguration) SetRecommendationTarget(v string) *RightsizingRecommendationConfiguration {
11072	s.RecommendationTarget = &v
11073	return s
11074}
11075
11076// Metadata for this recommendation set.
11077type RightsizingRecommendationMetadata struct {
11078	_ struct{} `type:"structure"`
11079
11080	// Additional metadata that might be applicable to the recommendation.
11081	AdditionalMetadata *string `type:"string"`
11082
11083	// The timestamp for when Amazon Web Services made this recommendation.
11084	GenerationTimestamp *string `type:"string"`
11085
11086	// The number of days of previous usage that Amazon Web Services considers when
11087	// making this recommendation.
11088	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
11089
11090	// The ID for this specific recommendation.
11091	RecommendationId *string `type:"string"`
11092}
11093
11094// String returns the string representation
11095func (s RightsizingRecommendationMetadata) String() string {
11096	return awsutil.Prettify(s)
11097}
11098
11099// GoString returns the string representation
11100func (s RightsizingRecommendationMetadata) GoString() string {
11101	return s.String()
11102}
11103
11104// SetAdditionalMetadata sets the AdditionalMetadata field's value.
11105func (s *RightsizingRecommendationMetadata) SetAdditionalMetadata(v string) *RightsizingRecommendationMetadata {
11106	s.AdditionalMetadata = &v
11107	return s
11108}
11109
11110// SetGenerationTimestamp sets the GenerationTimestamp field's value.
11111func (s *RightsizingRecommendationMetadata) SetGenerationTimestamp(v string) *RightsizingRecommendationMetadata {
11112	s.GenerationTimestamp = &v
11113	return s
11114}
11115
11116// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
11117func (s *RightsizingRecommendationMetadata) SetLookbackPeriodInDays(v string) *RightsizingRecommendationMetadata {
11118	s.LookbackPeriodInDays = &v
11119	return s
11120}
11121
11122// SetRecommendationId sets the RecommendationId field's value.
11123func (s *RightsizingRecommendationMetadata) SetRecommendationId(v string) *RightsizingRecommendationMetadata {
11124	s.RecommendationId = &v
11125	return s
11126}
11127
11128// The summary of rightsizing recommendations
11129type RightsizingRecommendationSummary struct {
11130	_ struct{} `type:"structure"`
11131
11132	// The estimated total savings resulting from modifications, on a monthly basis.
11133	EstimatedTotalMonthlySavingsAmount *string `type:"string"`
11134
11135	// The currency code that Amazon Web Services used to calculate the savings.
11136	SavingsCurrencyCode *string `type:"string"`
11137
11138	// The savings percentage based on the recommended modifications. It's relative
11139	// to the total On-Demand costs that are associated with these instances.
11140	SavingsPercentage *string `type:"string"`
11141
11142	// The total number of instance recommendations.
11143	TotalRecommendationCount *string `type:"string"`
11144}
11145
11146// String returns the string representation
11147func (s RightsizingRecommendationSummary) String() string {
11148	return awsutil.Prettify(s)
11149}
11150
11151// GoString returns the string representation
11152func (s RightsizingRecommendationSummary) GoString() string {
11153	return s.String()
11154}
11155
11156// SetEstimatedTotalMonthlySavingsAmount sets the EstimatedTotalMonthlySavingsAmount field's value.
11157func (s *RightsizingRecommendationSummary) SetEstimatedTotalMonthlySavingsAmount(v string) *RightsizingRecommendationSummary {
11158	s.EstimatedTotalMonthlySavingsAmount = &v
11159	return s
11160}
11161
11162// SetSavingsCurrencyCode sets the SavingsCurrencyCode field's value.
11163func (s *RightsizingRecommendationSummary) SetSavingsCurrencyCode(v string) *RightsizingRecommendationSummary {
11164	s.SavingsCurrencyCode = &v
11165	return s
11166}
11167
11168// SetSavingsPercentage sets the SavingsPercentage field's value.
11169func (s *RightsizingRecommendationSummary) SetSavingsPercentage(v string) *RightsizingRecommendationSummary {
11170	s.SavingsPercentage = &v
11171	return s
11172}
11173
11174// SetTotalRecommendationCount sets the TotalRecommendationCount field's value.
11175func (s *RightsizingRecommendationSummary) SetTotalRecommendationCount(v string) *RightsizingRecommendationSummary {
11176	s.TotalRecommendationCount = &v
11177	return s
11178}
11179
11180// The combination of Amazon Web Services service, linked account, Region, and
11181// usage type where a cost anomaly is observed.
11182type RootCause struct {
11183	_ struct{} `type:"structure"`
11184
11185	// The member account value that's associated with the cost anomaly.
11186	LinkedAccount *string `type:"string"`
11187
11188	// The Amazon Web Services Region that's associated with the cost anomaly.
11189	Region *string `type:"string"`
11190
11191	// The Amazon Web Services service name that's associated with the cost anomaly.
11192	Service *string `type:"string"`
11193
11194	// The UsageType value that's associated with the cost anomaly.
11195	UsageType *string `type:"string"`
11196}
11197
11198// String returns the string representation
11199func (s RootCause) String() string {
11200	return awsutil.Prettify(s)
11201}
11202
11203// GoString returns the string representation
11204func (s RootCause) GoString() string {
11205	return s.String()
11206}
11207
11208// SetLinkedAccount sets the LinkedAccount field's value.
11209func (s *RootCause) SetLinkedAccount(v string) *RootCause {
11210	s.LinkedAccount = &v
11211	return s
11212}
11213
11214// SetRegion sets the Region field's value.
11215func (s *RootCause) SetRegion(v string) *RootCause {
11216	s.Region = &v
11217	return s
11218}
11219
11220// SetService sets the Service field's value.
11221func (s *RootCause) SetService(v string) *RootCause {
11222	s.Service = &v
11223	return s
11224}
11225
11226// SetUsageType sets the UsageType field's value.
11227func (s *RootCause) SetUsageType(v string) *RootCause {
11228	s.UsageType = &v
11229	return s
11230}
11231
11232// The amortized amount of Savings Plans purchased in a specific account during
11233// a specific time interval.
11234type SavingsPlansAmortizedCommitment struct {
11235	_ struct{} `type:"structure"`
11236
11237	// The amortized amount of your Savings Plans commitment that was purchased
11238	// with either a Partial or a NoUpfront.
11239	AmortizedRecurringCommitment *string `type:"string"`
11240
11241	// The amortized amount of your Savings Plans commitment that was purchased
11242	// with an Upfront or PartialUpfront Savings Plans.
11243	AmortizedUpfrontCommitment *string `type:"string"`
11244
11245	// The total amortized amount of your Savings Plans commitment, regardless of
11246	// your Savings Plans purchase method.
11247	TotalAmortizedCommitment *string `type:"string"`
11248}
11249
11250// String returns the string representation
11251func (s SavingsPlansAmortizedCommitment) String() string {
11252	return awsutil.Prettify(s)
11253}
11254
11255// GoString returns the string representation
11256func (s SavingsPlansAmortizedCommitment) GoString() string {
11257	return s.String()
11258}
11259
11260// SetAmortizedRecurringCommitment sets the AmortizedRecurringCommitment field's value.
11261func (s *SavingsPlansAmortizedCommitment) SetAmortizedRecurringCommitment(v string) *SavingsPlansAmortizedCommitment {
11262	s.AmortizedRecurringCommitment = &v
11263	return s
11264}
11265
11266// SetAmortizedUpfrontCommitment sets the AmortizedUpfrontCommitment field's value.
11267func (s *SavingsPlansAmortizedCommitment) SetAmortizedUpfrontCommitment(v string) *SavingsPlansAmortizedCommitment {
11268	s.AmortizedUpfrontCommitment = &v
11269	return s
11270}
11271
11272// SetTotalAmortizedCommitment sets the TotalAmortizedCommitment field's value.
11273func (s *SavingsPlansAmortizedCommitment) SetTotalAmortizedCommitment(v string) *SavingsPlansAmortizedCommitment {
11274	s.TotalAmortizedCommitment = &v
11275	return s
11276}
11277
11278// The amount of Savings Plans eligible usage that is covered by Savings Plans.
11279// All calculations consider the On-Demand equivalent of your Savings Plans
11280// usage.
11281type SavingsPlansCoverage struct {
11282	_ struct{} `type:"structure"`
11283
11284	// The attribute that applies to a specific Dimension.
11285	Attributes map[string]*string `type:"map"`
11286
11287	// The amount of Savings Plans eligible usage that the Savings Plans covered.
11288	Coverage *SavingsPlansCoverageData `type:"structure"`
11289
11290	// The time period of the request.
11291	TimePeriod *DateInterval `type:"structure"`
11292}
11293
11294// String returns the string representation
11295func (s SavingsPlansCoverage) String() string {
11296	return awsutil.Prettify(s)
11297}
11298
11299// GoString returns the string representation
11300func (s SavingsPlansCoverage) GoString() string {
11301	return s.String()
11302}
11303
11304// SetAttributes sets the Attributes field's value.
11305func (s *SavingsPlansCoverage) SetAttributes(v map[string]*string) *SavingsPlansCoverage {
11306	s.Attributes = v
11307	return s
11308}
11309
11310// SetCoverage sets the Coverage field's value.
11311func (s *SavingsPlansCoverage) SetCoverage(v *SavingsPlansCoverageData) *SavingsPlansCoverage {
11312	s.Coverage = v
11313	return s
11314}
11315
11316// SetTimePeriod sets the TimePeriod field's value.
11317func (s *SavingsPlansCoverage) SetTimePeriod(v *DateInterval) *SavingsPlansCoverage {
11318	s.TimePeriod = v
11319	return s
11320}
11321
11322// Specific coverage percentage, On-Demand costs, and spend covered by Savings
11323// Plans, and total Savings Plans costs for an account.
11324type SavingsPlansCoverageData struct {
11325	_ struct{} `type:"structure"`
11326
11327	// The percentage of your existing Savings Plans covered usage, divided by all
11328	// of your eligible Savings Plans usage in an account (or set of accounts).
11329	CoveragePercentage *string `type:"string"`
11330
11331	// The cost of your Amazon Web Services usage at the public On-Demand rate.
11332	OnDemandCost *string `type:"string"`
11333
11334	// The amount of your Amazon Web Services usage that is covered by a Savings
11335	// Plans.
11336	SpendCoveredBySavingsPlans *string `type:"string"`
11337
11338	// The total cost of your Amazon Web Services usage, regardless of your purchase
11339	// option.
11340	TotalCost *string `type:"string"`
11341}
11342
11343// String returns the string representation
11344func (s SavingsPlansCoverageData) String() string {
11345	return awsutil.Prettify(s)
11346}
11347
11348// GoString returns the string representation
11349func (s SavingsPlansCoverageData) GoString() string {
11350	return s.String()
11351}
11352
11353// SetCoveragePercentage sets the CoveragePercentage field's value.
11354func (s *SavingsPlansCoverageData) SetCoveragePercentage(v string) *SavingsPlansCoverageData {
11355	s.CoveragePercentage = &v
11356	return s
11357}
11358
11359// SetOnDemandCost sets the OnDemandCost field's value.
11360func (s *SavingsPlansCoverageData) SetOnDemandCost(v string) *SavingsPlansCoverageData {
11361	s.OnDemandCost = &v
11362	return s
11363}
11364
11365// SetSpendCoveredBySavingsPlans sets the SpendCoveredBySavingsPlans field's value.
11366func (s *SavingsPlansCoverageData) SetSpendCoveredBySavingsPlans(v string) *SavingsPlansCoverageData {
11367	s.SpendCoveredBySavingsPlans = &v
11368	return s
11369}
11370
11371// SetTotalCost sets the TotalCost field's value.
11372func (s *SavingsPlansCoverageData) SetTotalCost(v string) *SavingsPlansCoverageData {
11373	s.TotalCost = &v
11374	return s
11375}
11376
11377// The attribute details on a specific Savings Plan.
11378type SavingsPlansDetails struct {
11379	_ struct{} `type:"structure"`
11380
11381	// A group of instance types that Savings Plans applies to.
11382	InstanceFamily *string `type:"string"`
11383
11384	// The unique ID that's used to distinguish Savings Plans from one another.
11385	OfferingId *string `type:"string"`
11386
11387	// A collection of Amazon Web Services resources in a geographic area. Each
11388	// Amazon Web Services Region is isolated and independent of the other Regions.
11389	Region *string `type:"string"`
11390}
11391
11392// String returns the string representation
11393func (s SavingsPlansDetails) String() string {
11394	return awsutil.Prettify(s)
11395}
11396
11397// GoString returns the string representation
11398func (s SavingsPlansDetails) GoString() string {
11399	return s.String()
11400}
11401
11402// SetInstanceFamily sets the InstanceFamily field's value.
11403func (s *SavingsPlansDetails) SetInstanceFamily(v string) *SavingsPlansDetails {
11404	s.InstanceFamily = &v
11405	return s
11406}
11407
11408// SetOfferingId sets the OfferingId field's value.
11409func (s *SavingsPlansDetails) SetOfferingId(v string) *SavingsPlansDetails {
11410	s.OfferingId = &v
11411	return s
11412}
11413
11414// SetRegion sets the Region field's value.
11415func (s *SavingsPlansDetails) SetRegion(v string) *SavingsPlansDetails {
11416	s.Region = &v
11417	return s
11418}
11419
11420// Contains your request parameters, Savings Plan Recommendations Summary, and
11421// Details.
11422type SavingsPlansPurchaseRecommendation struct {
11423	_ struct{} `type:"structure"`
11424
11425	// The account scope that you want your recommendations for. Amazon Web Services
11426	// calculates recommendations that include the management account and member
11427	// accounts if the value is set to PAYER. If the value is LINKED, recommendations
11428	// are calculated for individual member accounts only.
11429	AccountScope *string `type:"string" enum:"AccountScope"`
11430
11431	// The lookback period in days, used to generate the recommendation.
11432	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
11433
11434	// The payment option used to generate the recommendation.
11435	PaymentOption *string `type:"string" enum:"PaymentOption"`
11436
11437	// Details for the Savings Plans we recommend that you purchase to cover existing
11438	// Savings Plans eligible workloads.
11439	SavingsPlansPurchaseRecommendationDetails []*SavingsPlansPurchaseRecommendationDetail `type:"list"`
11440
11441	// Summary metrics for your Savings Plans Recommendations.
11442	SavingsPlansPurchaseRecommendationSummary *SavingsPlansPurchaseRecommendationSummary `type:"structure"`
11443
11444	// The requested Savings Plans recommendation type.
11445	SavingsPlansType *string `type:"string" enum:"SupportedSavingsPlansType"`
11446
11447	// The Savings Plans recommendation term in years. It's used to generate the
11448	// recommendation.
11449	TermInYears *string `type:"string" enum:"TermInYears"`
11450}
11451
11452// String returns the string representation
11453func (s SavingsPlansPurchaseRecommendation) String() string {
11454	return awsutil.Prettify(s)
11455}
11456
11457// GoString returns the string representation
11458func (s SavingsPlansPurchaseRecommendation) GoString() string {
11459	return s.String()
11460}
11461
11462// SetAccountScope sets the AccountScope field's value.
11463func (s *SavingsPlansPurchaseRecommendation) SetAccountScope(v string) *SavingsPlansPurchaseRecommendation {
11464	s.AccountScope = &v
11465	return s
11466}
11467
11468// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
11469func (s *SavingsPlansPurchaseRecommendation) SetLookbackPeriodInDays(v string) *SavingsPlansPurchaseRecommendation {
11470	s.LookbackPeriodInDays = &v
11471	return s
11472}
11473
11474// SetPaymentOption sets the PaymentOption field's value.
11475func (s *SavingsPlansPurchaseRecommendation) SetPaymentOption(v string) *SavingsPlansPurchaseRecommendation {
11476	s.PaymentOption = &v
11477	return s
11478}
11479
11480// SetSavingsPlansPurchaseRecommendationDetails sets the SavingsPlansPurchaseRecommendationDetails field's value.
11481func (s *SavingsPlansPurchaseRecommendation) SetSavingsPlansPurchaseRecommendationDetails(v []*SavingsPlansPurchaseRecommendationDetail) *SavingsPlansPurchaseRecommendation {
11482	s.SavingsPlansPurchaseRecommendationDetails = v
11483	return s
11484}
11485
11486// SetSavingsPlansPurchaseRecommendationSummary sets the SavingsPlansPurchaseRecommendationSummary field's value.
11487func (s *SavingsPlansPurchaseRecommendation) SetSavingsPlansPurchaseRecommendationSummary(v *SavingsPlansPurchaseRecommendationSummary) *SavingsPlansPurchaseRecommendation {
11488	s.SavingsPlansPurchaseRecommendationSummary = v
11489	return s
11490}
11491
11492// SetSavingsPlansType sets the SavingsPlansType field's value.
11493func (s *SavingsPlansPurchaseRecommendation) SetSavingsPlansType(v string) *SavingsPlansPurchaseRecommendation {
11494	s.SavingsPlansType = &v
11495	return s
11496}
11497
11498// SetTermInYears sets the TermInYears field's value.
11499func (s *SavingsPlansPurchaseRecommendation) SetTermInYears(v string) *SavingsPlansPurchaseRecommendation {
11500	s.TermInYears = &v
11501	return s
11502}
11503
11504// Details for your recommended Savings Plans.
11505type SavingsPlansPurchaseRecommendationDetail struct {
11506	_ struct{} `type:"structure"`
11507
11508	// The AccountID the recommendation is generated for.
11509	AccountId *string `type:"string"`
11510
11511	// The currency code that Amazon Web Services used to generate the recommendations
11512	// and present potential savings.
11513	CurrencyCode *string `type:"string"`
11514
11515	// The average value of hourly On-Demand spend over the lookback period of the
11516	// applicable usage type.
11517	CurrentAverageHourlyOnDemandSpend *string `type:"string"`
11518
11519	// The highest value of hourly On-Demand spend over the lookback period of the
11520	// applicable usage type.
11521	CurrentMaximumHourlyOnDemandSpend *string `type:"string"`
11522
11523	// The lowest value of hourly On-Demand spend over the lookback period of the
11524	// applicable usage type.
11525	CurrentMinimumHourlyOnDemandSpend *string `type:"string"`
11526
11527	// The estimated utilization of the recommended Savings Plans.
11528	EstimatedAverageUtilization *string `type:"string"`
11529
11530	// The estimated monthly savings amount based on the recommended Savings Plans.
11531	EstimatedMonthlySavingsAmount *string `type:"string"`
11532
11533	// The remaining On-Demand cost estimated to not be covered by the recommended
11534	// Savings Plans, over the length of the lookback period.
11535	EstimatedOnDemandCost *string `type:"string"`
11536
11537	// The estimated On-Demand costs you would expect with no additional commitment,
11538	// based on your usage of the selected time period and the Savings Plans you
11539	// own.
11540	EstimatedOnDemandCostWithCurrentCommitment *string `type:"string"`
11541
11542	// The estimated return on investment that's based on the recommended Savings
11543	// Plans that you purchased. This is calculated as estimatedSavingsAmount/ estimatedSPCost*100.
11544	EstimatedROI *string `type:"string"`
11545
11546	// The cost of the recommended Savings Plans over the length of the lookback
11547	// period.
11548	EstimatedSPCost *string `type:"string"`
11549
11550	// The estimated savings amount that's based on the recommended Savings Plans
11551	// over the length of the lookback period.
11552	EstimatedSavingsAmount *string `type:"string"`
11553
11554	// The estimated savings percentage relative to the total cost of applicable
11555	// On-Demand usage over the lookback period.
11556	EstimatedSavingsPercentage *string `type:"string"`
11557
11558	// The recommended hourly commitment level for the Savings Plans type and the
11559	// configuration that's based on the usage during the lookback period.
11560	HourlyCommitmentToPurchase *string `type:"string"`
11561
11562	// Details for your recommended Savings Plans.
11563	SavingsPlansDetails *SavingsPlansDetails `type:"structure"`
11564
11565	// The upfront cost of the recommended Savings Plans, based on the selected
11566	// payment option.
11567	UpfrontCost *string `type:"string"`
11568}
11569
11570// String returns the string representation
11571func (s SavingsPlansPurchaseRecommendationDetail) String() string {
11572	return awsutil.Prettify(s)
11573}
11574
11575// GoString returns the string representation
11576func (s SavingsPlansPurchaseRecommendationDetail) GoString() string {
11577	return s.String()
11578}
11579
11580// SetAccountId sets the AccountId field's value.
11581func (s *SavingsPlansPurchaseRecommendationDetail) SetAccountId(v string) *SavingsPlansPurchaseRecommendationDetail {
11582	s.AccountId = &v
11583	return s
11584}
11585
11586// SetCurrencyCode sets the CurrencyCode field's value.
11587func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrencyCode(v string) *SavingsPlansPurchaseRecommendationDetail {
11588	s.CurrencyCode = &v
11589	return s
11590}
11591
11592// SetCurrentAverageHourlyOnDemandSpend sets the CurrentAverageHourlyOnDemandSpend field's value.
11593func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrentAverageHourlyOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationDetail {
11594	s.CurrentAverageHourlyOnDemandSpend = &v
11595	return s
11596}
11597
11598// SetCurrentMaximumHourlyOnDemandSpend sets the CurrentMaximumHourlyOnDemandSpend field's value.
11599func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrentMaximumHourlyOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationDetail {
11600	s.CurrentMaximumHourlyOnDemandSpend = &v
11601	return s
11602}
11603
11604// SetCurrentMinimumHourlyOnDemandSpend sets the CurrentMinimumHourlyOnDemandSpend field's value.
11605func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrentMinimumHourlyOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationDetail {
11606	s.CurrentMinimumHourlyOnDemandSpend = &v
11607	return s
11608}
11609
11610// SetEstimatedAverageUtilization sets the EstimatedAverageUtilization field's value.
11611func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedAverageUtilization(v string) *SavingsPlansPurchaseRecommendationDetail {
11612	s.EstimatedAverageUtilization = &v
11613	return s
11614}
11615
11616// SetEstimatedMonthlySavingsAmount sets the EstimatedMonthlySavingsAmount field's value.
11617func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedMonthlySavingsAmount(v string) *SavingsPlansPurchaseRecommendationDetail {
11618	s.EstimatedMonthlySavingsAmount = &v
11619	return s
11620}
11621
11622// SetEstimatedOnDemandCost sets the EstimatedOnDemandCost field's value.
11623func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedOnDemandCost(v string) *SavingsPlansPurchaseRecommendationDetail {
11624	s.EstimatedOnDemandCost = &v
11625	return s
11626}
11627
11628// SetEstimatedOnDemandCostWithCurrentCommitment sets the EstimatedOnDemandCostWithCurrentCommitment field's value.
11629func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedOnDemandCostWithCurrentCommitment(v string) *SavingsPlansPurchaseRecommendationDetail {
11630	s.EstimatedOnDemandCostWithCurrentCommitment = &v
11631	return s
11632}
11633
11634// SetEstimatedROI sets the EstimatedROI field's value.
11635func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedROI(v string) *SavingsPlansPurchaseRecommendationDetail {
11636	s.EstimatedROI = &v
11637	return s
11638}
11639
11640// SetEstimatedSPCost sets the EstimatedSPCost field's value.
11641func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedSPCost(v string) *SavingsPlansPurchaseRecommendationDetail {
11642	s.EstimatedSPCost = &v
11643	return s
11644}
11645
11646// SetEstimatedSavingsAmount sets the EstimatedSavingsAmount field's value.
11647func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedSavingsAmount(v string) *SavingsPlansPurchaseRecommendationDetail {
11648	s.EstimatedSavingsAmount = &v
11649	return s
11650}
11651
11652// SetEstimatedSavingsPercentage sets the EstimatedSavingsPercentage field's value.
11653func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedSavingsPercentage(v string) *SavingsPlansPurchaseRecommendationDetail {
11654	s.EstimatedSavingsPercentage = &v
11655	return s
11656}
11657
11658// SetHourlyCommitmentToPurchase sets the HourlyCommitmentToPurchase field's value.
11659func (s *SavingsPlansPurchaseRecommendationDetail) SetHourlyCommitmentToPurchase(v string) *SavingsPlansPurchaseRecommendationDetail {
11660	s.HourlyCommitmentToPurchase = &v
11661	return s
11662}
11663
11664// SetSavingsPlansDetails sets the SavingsPlansDetails field's value.
11665func (s *SavingsPlansPurchaseRecommendationDetail) SetSavingsPlansDetails(v *SavingsPlansDetails) *SavingsPlansPurchaseRecommendationDetail {
11666	s.SavingsPlansDetails = v
11667	return s
11668}
11669
11670// SetUpfrontCost sets the UpfrontCost field's value.
11671func (s *SavingsPlansPurchaseRecommendationDetail) SetUpfrontCost(v string) *SavingsPlansPurchaseRecommendationDetail {
11672	s.UpfrontCost = &v
11673	return s
11674}
11675
11676// Metadata about your Savings Plans Purchase Recommendations.
11677type SavingsPlansPurchaseRecommendationMetadata struct {
11678	_ struct{} `type:"structure"`
11679
11680	// Additional metadata that might be applicable to the recommendation.
11681	AdditionalMetadata *string `type:"string"`
11682
11683	// The timestamp showing when the recommendations were generated.
11684	GenerationTimestamp *string `type:"string"`
11685
11686	// The unique identifier for the recommendation set.
11687	RecommendationId *string `type:"string"`
11688}
11689
11690// String returns the string representation
11691func (s SavingsPlansPurchaseRecommendationMetadata) String() string {
11692	return awsutil.Prettify(s)
11693}
11694
11695// GoString returns the string representation
11696func (s SavingsPlansPurchaseRecommendationMetadata) GoString() string {
11697	return s.String()
11698}
11699
11700// SetAdditionalMetadata sets the AdditionalMetadata field's value.
11701func (s *SavingsPlansPurchaseRecommendationMetadata) SetAdditionalMetadata(v string) *SavingsPlansPurchaseRecommendationMetadata {
11702	s.AdditionalMetadata = &v
11703	return s
11704}
11705
11706// SetGenerationTimestamp sets the GenerationTimestamp field's value.
11707func (s *SavingsPlansPurchaseRecommendationMetadata) SetGenerationTimestamp(v string) *SavingsPlansPurchaseRecommendationMetadata {
11708	s.GenerationTimestamp = &v
11709	return s
11710}
11711
11712// SetRecommendationId sets the RecommendationId field's value.
11713func (s *SavingsPlansPurchaseRecommendationMetadata) SetRecommendationId(v string) *SavingsPlansPurchaseRecommendationMetadata {
11714	s.RecommendationId = &v
11715	return s
11716}
11717
11718// Summary metrics for your Savings Plans Purchase Recommendations.
11719type SavingsPlansPurchaseRecommendationSummary struct {
11720	_ struct{} `type:"structure"`
11721
11722	// The currency code that Amazon Web Services used to generate the recommendations
11723	// and present potential savings.
11724	CurrencyCode *string `type:"string"`
11725
11726	// The current total on demand spend of the applicable usage types over the
11727	// lookback period.
11728	CurrentOnDemandSpend *string `type:"string"`
11729
11730	// The recommended Savings Plans cost on a daily (24 hourly) basis.
11731	DailyCommitmentToPurchase *string `type:"string"`
11732
11733	// The estimated monthly savings amount that's based on the recommended Savings
11734	// Plans purchase.
11735	EstimatedMonthlySavingsAmount *string `type:"string"`
11736
11737	// The estimated On-Demand costs you would expect with no additional commitment.
11738	// It's based on your usage of the selected time period and the Savings Plans
11739	// you own.
11740	EstimatedOnDemandCostWithCurrentCommitment *string `type:"string"`
11741
11742	// The estimated return on investment that's based on the recommended Savings
11743	// Plans and estimated savings.
11744	EstimatedROI *string `type:"string"`
11745
11746	// The estimated total savings over the lookback period, based on the purchase
11747	// of the recommended Savings Plans.
11748	EstimatedSavingsAmount *string `type:"string"`
11749
11750	// The estimated savings relative to the total cost of On-Demand usage, over
11751	// the lookback period. This is calculated as estimatedSavingsAmount/ CurrentOnDemandSpend*100.
11752	EstimatedSavingsPercentage *string `type:"string"`
11753
11754	// The estimated total cost of the usage after purchasing the recommended Savings
11755	// Plans. This is a sum of the cost of Savings Plans during this term, and the
11756	// remaining On-Demand usage.
11757	EstimatedTotalCost *string `type:"string"`
11758
11759	// The recommended hourly commitment that's based on the recommendation parameters.
11760	HourlyCommitmentToPurchase *string `type:"string"`
11761
11762	// The aggregate number of Savings Plans recommendations that exist for your
11763	// account.
11764	TotalRecommendationCount *string `type:"string"`
11765}
11766
11767// String returns the string representation
11768func (s SavingsPlansPurchaseRecommendationSummary) String() string {
11769	return awsutil.Prettify(s)
11770}
11771
11772// GoString returns the string representation
11773func (s SavingsPlansPurchaseRecommendationSummary) GoString() string {
11774	return s.String()
11775}
11776
11777// SetCurrencyCode sets the CurrencyCode field's value.
11778func (s *SavingsPlansPurchaseRecommendationSummary) SetCurrencyCode(v string) *SavingsPlansPurchaseRecommendationSummary {
11779	s.CurrencyCode = &v
11780	return s
11781}
11782
11783// SetCurrentOnDemandSpend sets the CurrentOnDemandSpend field's value.
11784func (s *SavingsPlansPurchaseRecommendationSummary) SetCurrentOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationSummary {
11785	s.CurrentOnDemandSpend = &v
11786	return s
11787}
11788
11789// SetDailyCommitmentToPurchase sets the DailyCommitmentToPurchase field's value.
11790func (s *SavingsPlansPurchaseRecommendationSummary) SetDailyCommitmentToPurchase(v string) *SavingsPlansPurchaseRecommendationSummary {
11791	s.DailyCommitmentToPurchase = &v
11792	return s
11793}
11794
11795// SetEstimatedMonthlySavingsAmount sets the EstimatedMonthlySavingsAmount field's value.
11796func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedMonthlySavingsAmount(v string) *SavingsPlansPurchaseRecommendationSummary {
11797	s.EstimatedMonthlySavingsAmount = &v
11798	return s
11799}
11800
11801// SetEstimatedOnDemandCostWithCurrentCommitment sets the EstimatedOnDemandCostWithCurrentCommitment field's value.
11802func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedOnDemandCostWithCurrentCommitment(v string) *SavingsPlansPurchaseRecommendationSummary {
11803	s.EstimatedOnDemandCostWithCurrentCommitment = &v
11804	return s
11805}
11806
11807// SetEstimatedROI sets the EstimatedROI field's value.
11808func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedROI(v string) *SavingsPlansPurchaseRecommendationSummary {
11809	s.EstimatedROI = &v
11810	return s
11811}
11812
11813// SetEstimatedSavingsAmount sets the EstimatedSavingsAmount field's value.
11814func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedSavingsAmount(v string) *SavingsPlansPurchaseRecommendationSummary {
11815	s.EstimatedSavingsAmount = &v
11816	return s
11817}
11818
11819// SetEstimatedSavingsPercentage sets the EstimatedSavingsPercentage field's value.
11820func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedSavingsPercentage(v string) *SavingsPlansPurchaseRecommendationSummary {
11821	s.EstimatedSavingsPercentage = &v
11822	return s
11823}
11824
11825// SetEstimatedTotalCost sets the EstimatedTotalCost field's value.
11826func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedTotalCost(v string) *SavingsPlansPurchaseRecommendationSummary {
11827	s.EstimatedTotalCost = &v
11828	return s
11829}
11830
11831// SetHourlyCommitmentToPurchase sets the HourlyCommitmentToPurchase field's value.
11832func (s *SavingsPlansPurchaseRecommendationSummary) SetHourlyCommitmentToPurchase(v string) *SavingsPlansPurchaseRecommendationSummary {
11833	s.HourlyCommitmentToPurchase = &v
11834	return s
11835}
11836
11837// SetTotalRecommendationCount sets the TotalRecommendationCount field's value.
11838func (s *SavingsPlansPurchaseRecommendationSummary) SetTotalRecommendationCount(v string) *SavingsPlansPurchaseRecommendationSummary {
11839	s.TotalRecommendationCount = &v
11840	return s
11841}
11842
11843// The amount of savings that you're accumulating, against the public On-Demand
11844// rate of the usage accrued in an account.
11845type SavingsPlansSavings struct {
11846	_ struct{} `type:"structure"`
11847
11848	// The savings amount that you're accumulating for the usage that's covered
11849	// by a Savings Plans, when compared to the On-Demand equivalent of the same
11850	// usage.
11851	NetSavings *string `type:"string"`
11852
11853	// How much the amount that the usage would have cost if it was accrued at the
11854	// On-Demand rate.
11855	OnDemandCostEquivalent *string `type:"string"`
11856}
11857
11858// String returns the string representation
11859func (s SavingsPlansSavings) String() string {
11860	return awsutil.Prettify(s)
11861}
11862
11863// GoString returns the string representation
11864func (s SavingsPlansSavings) GoString() string {
11865	return s.String()
11866}
11867
11868// SetNetSavings sets the NetSavings field's value.
11869func (s *SavingsPlansSavings) SetNetSavings(v string) *SavingsPlansSavings {
11870	s.NetSavings = &v
11871	return s
11872}
11873
11874// SetOnDemandCostEquivalent sets the OnDemandCostEquivalent field's value.
11875func (s *SavingsPlansSavings) SetOnDemandCostEquivalent(v string) *SavingsPlansSavings {
11876	s.OnDemandCostEquivalent = &v
11877	return s
11878}
11879
11880// The measurement of how well you're using your existing Savings Plans.
11881type SavingsPlansUtilization struct {
11882	_ struct{} `type:"structure"`
11883
11884	// The total amount of Savings Plans commitment that's been purchased in an
11885	// account (or set of accounts).
11886	TotalCommitment *string `type:"string"`
11887
11888	// The amount of your Savings Plans commitment that wasn't consumed from Savings
11889	// Plans eligible usage in a specific period.
11890	UnusedCommitment *string `type:"string"`
11891
11892	// The amount of your Savings Plans commitment that was consumed from Savings
11893	// Plans eligible usage in a specific period.
11894	UsedCommitment *string `type:"string"`
11895
11896	// The amount of UsedCommitment divided by the TotalCommitment for your Savings
11897	// Plans.
11898	UtilizationPercentage *string `type:"string"`
11899}
11900
11901// String returns the string representation
11902func (s SavingsPlansUtilization) String() string {
11903	return awsutil.Prettify(s)
11904}
11905
11906// GoString returns the string representation
11907func (s SavingsPlansUtilization) GoString() string {
11908	return s.String()
11909}
11910
11911// SetTotalCommitment sets the TotalCommitment field's value.
11912func (s *SavingsPlansUtilization) SetTotalCommitment(v string) *SavingsPlansUtilization {
11913	s.TotalCommitment = &v
11914	return s
11915}
11916
11917// SetUnusedCommitment sets the UnusedCommitment field's value.
11918func (s *SavingsPlansUtilization) SetUnusedCommitment(v string) *SavingsPlansUtilization {
11919	s.UnusedCommitment = &v
11920	return s
11921}
11922
11923// SetUsedCommitment sets the UsedCommitment field's value.
11924func (s *SavingsPlansUtilization) SetUsedCommitment(v string) *SavingsPlansUtilization {
11925	s.UsedCommitment = &v
11926	return s
11927}
11928
11929// SetUtilizationPercentage sets the UtilizationPercentage field's value.
11930func (s *SavingsPlansUtilization) SetUtilizationPercentage(v string) *SavingsPlansUtilization {
11931	s.UtilizationPercentage = &v
11932	return s
11933}
11934
11935// The aggregated utilization metrics for your Savings Plans usage.
11936type SavingsPlansUtilizationAggregates struct {
11937	_ struct{} `type:"structure"`
11938
11939	// The total amortized commitment for a Savings Plans. This includes the sum
11940	// of the upfront and recurring Savings Plans fees.
11941	AmortizedCommitment *SavingsPlansAmortizedCommitment `type:"structure"`
11942
11943	// The amount saved by using existing Savings Plans. Savings returns both net
11944	// savings from Savings Plans, as well as the onDemandCostEquivalent of the
11945	// Savings Plans when considering the utilization rate.
11946	Savings *SavingsPlansSavings `type:"structure"`
11947
11948	// A ratio of your effectiveness of using existing Savings Plans to apply to
11949	// workloads that are Savings Plans eligible.
11950	//
11951	// Utilization is a required field
11952	Utilization *SavingsPlansUtilization `type:"structure" required:"true"`
11953}
11954
11955// String returns the string representation
11956func (s SavingsPlansUtilizationAggregates) String() string {
11957	return awsutil.Prettify(s)
11958}
11959
11960// GoString returns the string representation
11961func (s SavingsPlansUtilizationAggregates) GoString() string {
11962	return s.String()
11963}
11964
11965// SetAmortizedCommitment sets the AmortizedCommitment field's value.
11966func (s *SavingsPlansUtilizationAggregates) SetAmortizedCommitment(v *SavingsPlansAmortizedCommitment) *SavingsPlansUtilizationAggregates {
11967	s.AmortizedCommitment = v
11968	return s
11969}
11970
11971// SetSavings sets the Savings field's value.
11972func (s *SavingsPlansUtilizationAggregates) SetSavings(v *SavingsPlansSavings) *SavingsPlansUtilizationAggregates {
11973	s.Savings = v
11974	return s
11975}
11976
11977// SetUtilization sets the Utilization field's value.
11978func (s *SavingsPlansUtilizationAggregates) SetUtilization(v *SavingsPlansUtilization) *SavingsPlansUtilizationAggregates {
11979	s.Utilization = v
11980	return s
11981}
11982
11983// The amount of Savings Plans utilization, in hours.
11984type SavingsPlansUtilizationByTime struct {
11985	_ struct{} `type:"structure"`
11986
11987	// The total amortized commitment for a Savings Plans. This includes the sum
11988	// of the upfront and recurring Savings Plans fees.
11989	AmortizedCommitment *SavingsPlansAmortizedCommitment `type:"structure"`
11990
11991	// The amount saved by using existing Savings Plans. Savings returns both net
11992	// savings from Savings Plans as well as the onDemandCostEquivalent of the Savings
11993	// Plans when considering the utilization rate.
11994	Savings *SavingsPlansSavings `type:"structure"`
11995
11996	// The time period of the request.
11997	//
11998	// TimePeriod is a required field
11999	TimePeriod *DateInterval `type:"structure" required:"true"`
12000
12001	// A ratio of your effectiveness of using existing Savings Plans to apply to
12002	// workloads that are Savings Plans eligible.
12003	//
12004	// Utilization is a required field
12005	Utilization *SavingsPlansUtilization `type:"structure" required:"true"`
12006}
12007
12008// String returns the string representation
12009func (s SavingsPlansUtilizationByTime) String() string {
12010	return awsutil.Prettify(s)
12011}
12012
12013// GoString returns the string representation
12014func (s SavingsPlansUtilizationByTime) GoString() string {
12015	return s.String()
12016}
12017
12018// SetAmortizedCommitment sets the AmortizedCommitment field's value.
12019func (s *SavingsPlansUtilizationByTime) SetAmortizedCommitment(v *SavingsPlansAmortizedCommitment) *SavingsPlansUtilizationByTime {
12020	s.AmortizedCommitment = v
12021	return s
12022}
12023
12024// SetSavings sets the Savings field's value.
12025func (s *SavingsPlansUtilizationByTime) SetSavings(v *SavingsPlansSavings) *SavingsPlansUtilizationByTime {
12026	s.Savings = v
12027	return s
12028}
12029
12030// SetTimePeriod sets the TimePeriod field's value.
12031func (s *SavingsPlansUtilizationByTime) SetTimePeriod(v *DateInterval) *SavingsPlansUtilizationByTime {
12032	s.TimePeriod = v
12033	return s
12034}
12035
12036// SetUtilization sets the Utilization field's value.
12037func (s *SavingsPlansUtilizationByTime) SetUtilization(v *SavingsPlansUtilization) *SavingsPlansUtilizationByTime {
12038	s.Utilization = v
12039	return s
12040}
12041
12042// A single daily or monthly Savings Plans utilization rate, and details for
12043// your account. A management account in an organization have access to member
12044// accounts. You can use GetDimensionValues to determine the possible dimension
12045// values.
12046type SavingsPlansUtilizationDetail struct {
12047	_ struct{} `type:"structure"`
12048
12049	// The total amortized commitment for a Savings Plans. Includes the sum of the
12050	// upfront and recurring Savings Plans fees.
12051	AmortizedCommitment *SavingsPlansAmortizedCommitment `type:"structure"`
12052
12053	// The attribute that applies to a specific Dimension.
12054	Attributes map[string]*string `type:"map"`
12055
12056	// The amount saved by using existing Savings Plans. Savings returns both net
12057	// savings from savings plans as well as the onDemandCostEquivalent of the Savings
12058	// Plans when considering the utilization rate.
12059	Savings *SavingsPlansSavings `type:"structure"`
12060
12061	// The unique Amazon Resource Name (ARN) for a particular Savings Plan.
12062	SavingsPlanArn *string `type:"string"`
12063
12064	// A ratio of your effectiveness of using existing Savings Plans to apply to
12065	// workloads that are Savings Plans eligible.
12066	Utilization *SavingsPlansUtilization `type:"structure"`
12067}
12068
12069// String returns the string representation
12070func (s SavingsPlansUtilizationDetail) String() string {
12071	return awsutil.Prettify(s)
12072}
12073
12074// GoString returns the string representation
12075func (s SavingsPlansUtilizationDetail) GoString() string {
12076	return s.String()
12077}
12078
12079// SetAmortizedCommitment sets the AmortizedCommitment field's value.
12080func (s *SavingsPlansUtilizationDetail) SetAmortizedCommitment(v *SavingsPlansAmortizedCommitment) *SavingsPlansUtilizationDetail {
12081	s.AmortizedCommitment = v
12082	return s
12083}
12084
12085// SetAttributes sets the Attributes field's value.
12086func (s *SavingsPlansUtilizationDetail) SetAttributes(v map[string]*string) *SavingsPlansUtilizationDetail {
12087	s.Attributes = v
12088	return s
12089}
12090
12091// SetSavings sets the Savings field's value.
12092func (s *SavingsPlansUtilizationDetail) SetSavings(v *SavingsPlansSavings) *SavingsPlansUtilizationDetail {
12093	s.Savings = v
12094	return s
12095}
12096
12097// SetSavingsPlanArn sets the SavingsPlanArn field's value.
12098func (s *SavingsPlansUtilizationDetail) SetSavingsPlanArn(v string) *SavingsPlansUtilizationDetail {
12099	s.SavingsPlanArn = &v
12100	return s
12101}
12102
12103// SetUtilization sets the Utilization field's value.
12104func (s *SavingsPlansUtilizationDetail) SetUtilization(v *SavingsPlansUtilization) *SavingsPlansUtilizationDetail {
12105	s.Utilization = v
12106	return s
12107}
12108
12109// You've reached the limit on the number of resources you can create, or exceeded
12110// the size of an individual resource.
12111type ServiceQuotaExceededException struct {
12112	_            struct{}                  `type:"structure"`
12113	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
12114
12115	Message_ *string `locationName:"Message" type:"string"`
12116}
12117
12118// String returns the string representation
12119func (s ServiceQuotaExceededException) String() string {
12120	return awsutil.Prettify(s)
12121}
12122
12123// GoString returns the string representation
12124func (s ServiceQuotaExceededException) GoString() string {
12125	return s.String()
12126}
12127
12128func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
12129	return &ServiceQuotaExceededException{
12130		RespMetadata: v,
12131	}
12132}
12133
12134// Code returns the exception type name.
12135func (s *ServiceQuotaExceededException) Code() string {
12136	return "ServiceQuotaExceededException"
12137}
12138
12139// Message returns the exception's message.
12140func (s *ServiceQuotaExceededException) Message() string {
12141	if s.Message_ != nil {
12142		return *s.Message_
12143	}
12144	return ""
12145}
12146
12147// OrigErr always returns nil, satisfies awserr.Error interface.
12148func (s *ServiceQuotaExceededException) OrigErr() error {
12149	return nil
12150}
12151
12152func (s *ServiceQuotaExceededException) Error() string {
12153	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
12154}
12155
12156// Status code returns the HTTP status code for the request's response error.
12157func (s *ServiceQuotaExceededException) StatusCode() int {
12158	return s.RespMetadata.StatusCode
12159}
12160
12161// RequestID returns the service's response RequestID for request.
12162func (s *ServiceQuotaExceededException) RequestID() string {
12163	return s.RespMetadata.RequestID
12164}
12165
12166// Hardware specifications for the service that you want recommendations for.
12167type ServiceSpecification struct {
12168	_ struct{} `type:"structure"`
12169
12170	// The Amazon EC2 hardware specifications that you want Amazon Web Services
12171	// to provide recommendations for.
12172	EC2Specification *EC2Specification `type:"structure"`
12173}
12174
12175// String returns the string representation
12176func (s ServiceSpecification) String() string {
12177	return awsutil.Prettify(s)
12178}
12179
12180// GoString returns the string representation
12181func (s ServiceSpecification) GoString() string {
12182	return s.String()
12183}
12184
12185// SetEC2Specification sets the EC2Specification field's value.
12186func (s *ServiceSpecification) SetEC2Specification(v *EC2Specification) *ServiceSpecification {
12187	s.EC2Specification = v
12188	return s
12189}
12190
12191// The details of how to sort the data.
12192type SortDefinition struct {
12193	_ struct{} `type:"structure"`
12194
12195	// The key that's used to sort the data.
12196	//
12197	// Key is a required field
12198	Key *string `type:"string" required:"true"`
12199
12200	// The order that's used to sort the data.
12201	SortOrder *string `type:"string" enum:"SortOrder"`
12202}
12203
12204// String returns the string representation
12205func (s SortDefinition) String() string {
12206	return awsutil.Prettify(s)
12207}
12208
12209// GoString returns the string representation
12210func (s SortDefinition) GoString() string {
12211	return s.String()
12212}
12213
12214// Validate inspects the fields of the type to determine if they are valid.
12215func (s *SortDefinition) Validate() error {
12216	invalidParams := request.ErrInvalidParams{Context: "SortDefinition"}
12217	if s.Key == nil {
12218		invalidParams.Add(request.NewErrParamRequired("Key"))
12219	}
12220
12221	if invalidParams.Len() > 0 {
12222		return invalidParams
12223	}
12224	return nil
12225}
12226
12227// SetKey sets the Key field's value.
12228func (s *SortDefinition) SetKey(v string) *SortDefinition {
12229	s.Key = &v
12230	return s
12231}
12232
12233// SetSortOrder sets the SortOrder field's value.
12234func (s *SortDefinition) SetSortOrder(v string) *SortDefinition {
12235	s.SortOrder = &v
12236	return s
12237}
12238
12239// The recipient of AnomalySubscription notifications.
12240type Subscriber struct {
12241	_ struct{} `type:"structure"`
12242
12243	// The email address or SNS Amazon Resource Name (ARN). This depends on the
12244	// Type.
12245	Address *string `min:"6" type:"string"`
12246
12247	// Indicates if the subscriber accepts the notifications.
12248	Status *string `type:"string" enum:"SubscriberStatus"`
12249
12250	// The notification delivery channel.
12251	Type *string `type:"string" enum:"SubscriberType"`
12252}
12253
12254// String returns the string representation
12255func (s Subscriber) String() string {
12256	return awsutil.Prettify(s)
12257}
12258
12259// GoString returns the string representation
12260func (s Subscriber) GoString() string {
12261	return s.String()
12262}
12263
12264// Validate inspects the fields of the type to determine if they are valid.
12265func (s *Subscriber) Validate() error {
12266	invalidParams := request.ErrInvalidParams{Context: "Subscriber"}
12267	if s.Address != nil && len(*s.Address) < 6 {
12268		invalidParams.Add(request.NewErrParamMinLen("Address", 6))
12269	}
12270
12271	if invalidParams.Len() > 0 {
12272		return invalidParams
12273	}
12274	return nil
12275}
12276
12277// SetAddress sets the Address field's value.
12278func (s *Subscriber) SetAddress(v string) *Subscriber {
12279	s.Address = &v
12280	return s
12281}
12282
12283// SetStatus sets the Status field's value.
12284func (s *Subscriber) SetStatus(v string) *Subscriber {
12285	s.Status = &v
12286	return s
12287}
12288
12289// SetType sets the Type field's value.
12290func (s *Subscriber) SetType(v string) *Subscriber {
12291	s.Type = &v
12292	return s
12293}
12294
12295// The values that are available for a tag.
12296//
12297// If Values and Key aren't specified, the ABSENT MatchOption is applied to
12298// all tags. That is, it's filtered on resources with no tags.
12299//
12300// If Values is provided and Key isn't specified, the ABSENT MatchOption is
12301// applied to the tag Key only. That is, it's filtered on resources without
12302// the given tag key.
12303type TagValues struct {
12304	_ struct{} `type:"structure"`
12305
12306	// The key for the tag.
12307	Key *string `type:"string"`
12308
12309	// The match options that you can use to filter your results. MatchOptions is
12310	// only applicable for actions related to Cost Category. The default values
12311	// for MatchOptions are EQUALS and CASE_SENSITIVE.
12312	MatchOptions []*string `type:"list"`
12313
12314	// The specific value of the tag.
12315	Values []*string `type:"list"`
12316}
12317
12318// String returns the string representation
12319func (s TagValues) String() string {
12320	return awsutil.Prettify(s)
12321}
12322
12323// GoString returns the string representation
12324func (s TagValues) GoString() string {
12325	return s.String()
12326}
12327
12328// SetKey sets the Key field's value.
12329func (s *TagValues) SetKey(v string) *TagValues {
12330	s.Key = &v
12331	return s
12332}
12333
12334// SetMatchOptions sets the MatchOptions field's value.
12335func (s *TagValues) SetMatchOptions(v []*string) *TagValues {
12336	s.MatchOptions = v
12337	return s
12338}
12339
12340// SetValues sets the Values field's value.
12341func (s *TagValues) SetValues(v []*string) *TagValues {
12342	s.Values = v
12343	return s
12344}
12345
12346// Details on recommended instance.
12347type TargetInstance struct {
12348	_ struct{} `type:"structure"`
12349
12350	// The currency code that Amazon Web Services used to calculate the costs for
12351	// this instance.
12352	CurrencyCode *string `type:"string"`
12353
12354	// Determines whether this recommendation is the defaulted Amazon Web Services
12355	// recommendation.
12356	DefaultTargetInstance *bool `type:"boolean"`
12357
12358	// The expected cost to operate this instance type on a monthly basis.
12359	EstimatedMonthlyCost *string `type:"string"`
12360
12361	// The estimated savings that result from modification, on a monthly basis.
12362	EstimatedMonthlySavings *string `type:"string"`
12363
12364	// The expected utilization metrics for target instance type.
12365	ExpectedResourceUtilization *ResourceUtilization `type:"structure"`
12366
12367	// Explains the actions you might need to take in order to successfully migrate
12368	// your workloads from the current instance type to the recommended instance
12369	// type.
12370	PlatformDifferences []*string `type:"list"`
12371
12372	// Details on the target instance type.
12373	ResourceDetails *ResourceDetails `type:"structure"`
12374}
12375
12376// String returns the string representation
12377func (s TargetInstance) String() string {
12378	return awsutil.Prettify(s)
12379}
12380
12381// GoString returns the string representation
12382func (s TargetInstance) GoString() string {
12383	return s.String()
12384}
12385
12386// SetCurrencyCode sets the CurrencyCode field's value.
12387func (s *TargetInstance) SetCurrencyCode(v string) *TargetInstance {
12388	s.CurrencyCode = &v
12389	return s
12390}
12391
12392// SetDefaultTargetInstance sets the DefaultTargetInstance field's value.
12393func (s *TargetInstance) SetDefaultTargetInstance(v bool) *TargetInstance {
12394	s.DefaultTargetInstance = &v
12395	return s
12396}
12397
12398// SetEstimatedMonthlyCost sets the EstimatedMonthlyCost field's value.
12399func (s *TargetInstance) SetEstimatedMonthlyCost(v string) *TargetInstance {
12400	s.EstimatedMonthlyCost = &v
12401	return s
12402}
12403
12404// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
12405func (s *TargetInstance) SetEstimatedMonthlySavings(v string) *TargetInstance {
12406	s.EstimatedMonthlySavings = &v
12407	return s
12408}
12409
12410// SetExpectedResourceUtilization sets the ExpectedResourceUtilization field's value.
12411func (s *TargetInstance) SetExpectedResourceUtilization(v *ResourceUtilization) *TargetInstance {
12412	s.ExpectedResourceUtilization = v
12413	return s
12414}
12415
12416// SetPlatformDifferences sets the PlatformDifferences field's value.
12417func (s *TargetInstance) SetPlatformDifferences(v []*string) *TargetInstance {
12418	s.PlatformDifferences = v
12419	return s
12420}
12421
12422// SetResourceDetails sets the ResourceDetails field's value.
12423func (s *TargetInstance) SetResourceDetails(v *ResourceDetails) *TargetInstance {
12424	s.ResourceDetails = v
12425	return s
12426}
12427
12428// Details on termination recommendation.
12429type TerminateRecommendationDetail struct {
12430	_ struct{} `type:"structure"`
12431
12432	// The currency code that Amazon Web Services used to calculate the costs for
12433	// this instance.
12434	CurrencyCode *string `type:"string"`
12435
12436	// The estimated savings that result from modification, on a monthly basis.
12437	EstimatedMonthlySavings *string `type:"string"`
12438}
12439
12440// String returns the string representation
12441func (s TerminateRecommendationDetail) String() string {
12442	return awsutil.Prettify(s)
12443}
12444
12445// GoString returns the string representation
12446func (s TerminateRecommendationDetail) GoString() string {
12447	return s.String()
12448}
12449
12450// SetCurrencyCode sets the CurrencyCode field's value.
12451func (s *TerminateRecommendationDetail) SetCurrencyCode(v string) *TerminateRecommendationDetail {
12452	s.CurrencyCode = &v
12453	return s
12454}
12455
12456// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
12457func (s *TerminateRecommendationDetail) SetEstimatedMonthlySavings(v string) *TerminateRecommendationDetail {
12458	s.EstimatedMonthlySavings = &v
12459	return s
12460}
12461
12462// Filters cost anomalies based on the total impact.
12463type TotalImpactFilter struct {
12464	_ struct{} `type:"structure"`
12465
12466	// The upper bound dollar value that's used in the filter.
12467	EndValue *float64 `type:"double"`
12468
12469	// The comparing value that's used in the filter.
12470	//
12471	// NumericOperator is a required field
12472	NumericOperator *string `type:"string" required:"true" enum:"NumericOperator"`
12473
12474	// The lower bound dollar value that's used in the filter.
12475	//
12476	// StartValue is a required field
12477	StartValue *float64 `type:"double" required:"true"`
12478}
12479
12480// String returns the string representation
12481func (s TotalImpactFilter) String() string {
12482	return awsutil.Prettify(s)
12483}
12484
12485// GoString returns the string representation
12486func (s TotalImpactFilter) GoString() string {
12487	return s.String()
12488}
12489
12490// Validate inspects the fields of the type to determine if they are valid.
12491func (s *TotalImpactFilter) Validate() error {
12492	invalidParams := request.ErrInvalidParams{Context: "TotalImpactFilter"}
12493	if s.NumericOperator == nil {
12494		invalidParams.Add(request.NewErrParamRequired("NumericOperator"))
12495	}
12496	if s.StartValue == nil {
12497		invalidParams.Add(request.NewErrParamRequired("StartValue"))
12498	}
12499
12500	if invalidParams.Len() > 0 {
12501		return invalidParams
12502	}
12503	return nil
12504}
12505
12506// SetEndValue sets the EndValue field's value.
12507func (s *TotalImpactFilter) SetEndValue(v float64) *TotalImpactFilter {
12508	s.EndValue = &v
12509	return s
12510}
12511
12512// SetNumericOperator sets the NumericOperator field's value.
12513func (s *TotalImpactFilter) SetNumericOperator(v string) *TotalImpactFilter {
12514	s.NumericOperator = &v
12515	return s
12516}
12517
12518// SetStartValue sets the StartValue field's value.
12519func (s *TotalImpactFilter) SetStartValue(v float64) *TotalImpactFilter {
12520	s.StartValue = &v
12521	return s
12522}
12523
12524// The cost anomaly monitor does not exist for the account.
12525type UnknownMonitorException struct {
12526	_            struct{}                  `type:"structure"`
12527	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
12528
12529	Message_ *string `locationName:"Message" type:"string"`
12530}
12531
12532// String returns the string representation
12533func (s UnknownMonitorException) String() string {
12534	return awsutil.Prettify(s)
12535}
12536
12537// GoString returns the string representation
12538func (s UnknownMonitorException) GoString() string {
12539	return s.String()
12540}
12541
12542func newErrorUnknownMonitorException(v protocol.ResponseMetadata) error {
12543	return &UnknownMonitorException{
12544		RespMetadata: v,
12545	}
12546}
12547
12548// Code returns the exception type name.
12549func (s *UnknownMonitorException) Code() string {
12550	return "UnknownMonitorException"
12551}
12552
12553// Message returns the exception's message.
12554func (s *UnknownMonitorException) Message() string {
12555	if s.Message_ != nil {
12556		return *s.Message_
12557	}
12558	return ""
12559}
12560
12561// OrigErr always returns nil, satisfies awserr.Error interface.
12562func (s *UnknownMonitorException) OrigErr() error {
12563	return nil
12564}
12565
12566func (s *UnknownMonitorException) Error() string {
12567	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
12568}
12569
12570// Status code returns the HTTP status code for the request's response error.
12571func (s *UnknownMonitorException) StatusCode() int {
12572	return s.RespMetadata.StatusCode
12573}
12574
12575// RequestID returns the service's response RequestID for request.
12576func (s *UnknownMonitorException) RequestID() string {
12577	return s.RespMetadata.RequestID
12578}
12579
12580// The cost anomaly subscription does not exist for the account.
12581type UnknownSubscriptionException struct {
12582	_            struct{}                  `type:"structure"`
12583	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
12584
12585	Message_ *string `locationName:"Message" type:"string"`
12586}
12587
12588// String returns the string representation
12589func (s UnknownSubscriptionException) String() string {
12590	return awsutil.Prettify(s)
12591}
12592
12593// GoString returns the string representation
12594func (s UnknownSubscriptionException) GoString() string {
12595	return s.String()
12596}
12597
12598func newErrorUnknownSubscriptionException(v protocol.ResponseMetadata) error {
12599	return &UnknownSubscriptionException{
12600		RespMetadata: v,
12601	}
12602}
12603
12604// Code returns the exception type name.
12605func (s *UnknownSubscriptionException) Code() string {
12606	return "UnknownSubscriptionException"
12607}
12608
12609// Message returns the exception's message.
12610func (s *UnknownSubscriptionException) Message() string {
12611	if s.Message_ != nil {
12612		return *s.Message_
12613	}
12614	return ""
12615}
12616
12617// OrigErr always returns nil, satisfies awserr.Error interface.
12618func (s *UnknownSubscriptionException) OrigErr() error {
12619	return nil
12620}
12621
12622func (s *UnknownSubscriptionException) Error() string {
12623	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
12624}
12625
12626// Status code returns the HTTP status code for the request's response error.
12627func (s *UnknownSubscriptionException) StatusCode() int {
12628	return s.RespMetadata.StatusCode
12629}
12630
12631// RequestID returns the service's response RequestID for request.
12632func (s *UnknownSubscriptionException) RequestID() string {
12633	return s.RespMetadata.RequestID
12634}
12635
12636// Cost Explorer was unable to identify the usage unit. Provide UsageType/UsageTypeGroup
12637// filter selections that contain matching units, for example: hours.
12638type UnresolvableUsageUnitException struct {
12639	_            struct{}                  `type:"structure"`
12640	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
12641
12642	Message_ *string `locationName:"Message" type:"string"`
12643}
12644
12645// String returns the string representation
12646func (s UnresolvableUsageUnitException) String() string {
12647	return awsutil.Prettify(s)
12648}
12649
12650// GoString returns the string representation
12651func (s UnresolvableUsageUnitException) GoString() string {
12652	return s.String()
12653}
12654
12655func newErrorUnresolvableUsageUnitException(v protocol.ResponseMetadata) error {
12656	return &UnresolvableUsageUnitException{
12657		RespMetadata: v,
12658	}
12659}
12660
12661// Code returns the exception type name.
12662func (s *UnresolvableUsageUnitException) Code() string {
12663	return "UnresolvableUsageUnitException"
12664}
12665
12666// Message returns the exception's message.
12667func (s *UnresolvableUsageUnitException) Message() string {
12668	if s.Message_ != nil {
12669		return *s.Message_
12670	}
12671	return ""
12672}
12673
12674// OrigErr always returns nil, satisfies awserr.Error interface.
12675func (s *UnresolvableUsageUnitException) OrigErr() error {
12676	return nil
12677}
12678
12679func (s *UnresolvableUsageUnitException) Error() string {
12680	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
12681}
12682
12683// Status code returns the HTTP status code for the request's response error.
12684func (s *UnresolvableUsageUnitException) StatusCode() int {
12685	return s.RespMetadata.StatusCode
12686}
12687
12688// RequestID returns the service's response RequestID for request.
12689func (s *UnresolvableUsageUnitException) RequestID() string {
12690	return s.RespMetadata.RequestID
12691}
12692
12693type UpdateAnomalyMonitorInput struct {
12694	_ struct{} `type:"structure"`
12695
12696	// Cost anomaly monitor Amazon Resource Names (ARNs).
12697	//
12698	// MonitorArn is a required field
12699	MonitorArn *string `type:"string" required:"true"`
12700
12701	// The new name for the cost anomaly monitor.
12702	MonitorName *string `type:"string"`
12703}
12704
12705// String returns the string representation
12706func (s UpdateAnomalyMonitorInput) String() string {
12707	return awsutil.Prettify(s)
12708}
12709
12710// GoString returns the string representation
12711func (s UpdateAnomalyMonitorInput) GoString() string {
12712	return s.String()
12713}
12714
12715// Validate inspects the fields of the type to determine if they are valid.
12716func (s *UpdateAnomalyMonitorInput) Validate() error {
12717	invalidParams := request.ErrInvalidParams{Context: "UpdateAnomalyMonitorInput"}
12718	if s.MonitorArn == nil {
12719		invalidParams.Add(request.NewErrParamRequired("MonitorArn"))
12720	}
12721
12722	if invalidParams.Len() > 0 {
12723		return invalidParams
12724	}
12725	return nil
12726}
12727
12728// SetMonitorArn sets the MonitorArn field's value.
12729func (s *UpdateAnomalyMonitorInput) SetMonitorArn(v string) *UpdateAnomalyMonitorInput {
12730	s.MonitorArn = &v
12731	return s
12732}
12733
12734// SetMonitorName sets the MonitorName field's value.
12735func (s *UpdateAnomalyMonitorInput) SetMonitorName(v string) *UpdateAnomalyMonitorInput {
12736	s.MonitorName = &v
12737	return s
12738}
12739
12740type UpdateAnomalyMonitorOutput struct {
12741	_ struct{} `type:"structure"`
12742
12743	// A cost anomaly monitor ARN.
12744	//
12745	// MonitorArn is a required field
12746	MonitorArn *string `type:"string" required:"true"`
12747}
12748
12749// String returns the string representation
12750func (s UpdateAnomalyMonitorOutput) String() string {
12751	return awsutil.Prettify(s)
12752}
12753
12754// GoString returns the string representation
12755func (s UpdateAnomalyMonitorOutput) GoString() string {
12756	return s.String()
12757}
12758
12759// SetMonitorArn sets the MonitorArn field's value.
12760func (s *UpdateAnomalyMonitorOutput) SetMonitorArn(v string) *UpdateAnomalyMonitorOutput {
12761	s.MonitorArn = &v
12762	return s
12763}
12764
12765type UpdateAnomalySubscriptionInput struct {
12766	_ struct{} `type:"structure"`
12767
12768	// The update to the frequency value that subscribers receive notifications.
12769	Frequency *string `type:"string" enum:"AnomalySubscriptionFrequency"`
12770
12771	// A list of cost anomaly monitor ARNs.
12772	MonitorArnList []*string `type:"list"`
12773
12774	// The update to the subscriber list.
12775	Subscribers []*Subscriber `type:"list"`
12776
12777	// A cost anomaly subscription Amazon Resource Name (ARN).
12778	//
12779	// SubscriptionArn is a required field
12780	SubscriptionArn *string `type:"string" required:"true"`
12781
12782	// The new name of the subscription.
12783	SubscriptionName *string `type:"string"`
12784
12785	// The update to the threshold value for receiving notifications.
12786	Threshold *float64 `type:"double"`
12787}
12788
12789// String returns the string representation
12790func (s UpdateAnomalySubscriptionInput) String() string {
12791	return awsutil.Prettify(s)
12792}
12793
12794// GoString returns the string representation
12795func (s UpdateAnomalySubscriptionInput) GoString() string {
12796	return s.String()
12797}
12798
12799// Validate inspects the fields of the type to determine if they are valid.
12800func (s *UpdateAnomalySubscriptionInput) Validate() error {
12801	invalidParams := request.ErrInvalidParams{Context: "UpdateAnomalySubscriptionInput"}
12802	if s.SubscriptionArn == nil {
12803		invalidParams.Add(request.NewErrParamRequired("SubscriptionArn"))
12804	}
12805	if s.Subscribers != nil {
12806		for i, v := range s.Subscribers {
12807			if v == nil {
12808				continue
12809			}
12810			if err := v.Validate(); err != nil {
12811				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Subscribers", i), err.(request.ErrInvalidParams))
12812			}
12813		}
12814	}
12815
12816	if invalidParams.Len() > 0 {
12817		return invalidParams
12818	}
12819	return nil
12820}
12821
12822// SetFrequency sets the Frequency field's value.
12823func (s *UpdateAnomalySubscriptionInput) SetFrequency(v string) *UpdateAnomalySubscriptionInput {
12824	s.Frequency = &v
12825	return s
12826}
12827
12828// SetMonitorArnList sets the MonitorArnList field's value.
12829func (s *UpdateAnomalySubscriptionInput) SetMonitorArnList(v []*string) *UpdateAnomalySubscriptionInput {
12830	s.MonitorArnList = v
12831	return s
12832}
12833
12834// SetSubscribers sets the Subscribers field's value.
12835func (s *UpdateAnomalySubscriptionInput) SetSubscribers(v []*Subscriber) *UpdateAnomalySubscriptionInput {
12836	s.Subscribers = v
12837	return s
12838}
12839
12840// SetSubscriptionArn sets the SubscriptionArn field's value.
12841func (s *UpdateAnomalySubscriptionInput) SetSubscriptionArn(v string) *UpdateAnomalySubscriptionInput {
12842	s.SubscriptionArn = &v
12843	return s
12844}
12845
12846// SetSubscriptionName sets the SubscriptionName field's value.
12847func (s *UpdateAnomalySubscriptionInput) SetSubscriptionName(v string) *UpdateAnomalySubscriptionInput {
12848	s.SubscriptionName = &v
12849	return s
12850}
12851
12852// SetThreshold sets the Threshold field's value.
12853func (s *UpdateAnomalySubscriptionInput) SetThreshold(v float64) *UpdateAnomalySubscriptionInput {
12854	s.Threshold = &v
12855	return s
12856}
12857
12858type UpdateAnomalySubscriptionOutput struct {
12859	_ struct{} `type:"structure"`
12860
12861	// A cost anomaly subscription ARN.
12862	//
12863	// SubscriptionArn is a required field
12864	SubscriptionArn *string `type:"string" required:"true"`
12865}
12866
12867// String returns the string representation
12868func (s UpdateAnomalySubscriptionOutput) String() string {
12869	return awsutil.Prettify(s)
12870}
12871
12872// GoString returns the string representation
12873func (s UpdateAnomalySubscriptionOutput) GoString() string {
12874	return s.String()
12875}
12876
12877// SetSubscriptionArn sets the SubscriptionArn field's value.
12878func (s *UpdateAnomalySubscriptionOutput) SetSubscriptionArn(v string) *UpdateAnomalySubscriptionOutput {
12879	s.SubscriptionArn = &v
12880	return s
12881}
12882
12883type UpdateCostCategoryDefinitionInput struct {
12884	_ struct{} `type:"structure"`
12885
12886	// The unique identifier for your Cost Category.
12887	//
12888	// CostCategoryArn is a required field
12889	CostCategoryArn *string `min:"20" type:"string" required:"true"`
12890
12891	// The default value for the cost category.
12892	DefaultValue *string `min:"1" type:"string"`
12893
12894	// The rule schema version in this particular Cost Category.
12895	//
12896	// RuleVersion is a required field
12897	RuleVersion *string `type:"string" required:"true" enum:"CostCategoryRuleVersion"`
12898
12899	// The Expression object used to categorize costs. For more information, see
12900	// CostCategoryRule (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_CostCategoryRule.html).
12901	//
12902	// Rules is a required field
12903	Rules []*CostCategoryRule `min:"1" type:"list" required:"true"`
12904
12905	// The split charge rules used to allocate your charges between your Cost Category
12906	// values.
12907	SplitChargeRules []*CostCategorySplitChargeRule `min:"1" type:"list"`
12908}
12909
12910// String returns the string representation
12911func (s UpdateCostCategoryDefinitionInput) String() string {
12912	return awsutil.Prettify(s)
12913}
12914
12915// GoString returns the string representation
12916func (s UpdateCostCategoryDefinitionInput) GoString() string {
12917	return s.String()
12918}
12919
12920// Validate inspects the fields of the type to determine if they are valid.
12921func (s *UpdateCostCategoryDefinitionInput) Validate() error {
12922	invalidParams := request.ErrInvalidParams{Context: "UpdateCostCategoryDefinitionInput"}
12923	if s.CostCategoryArn == nil {
12924		invalidParams.Add(request.NewErrParamRequired("CostCategoryArn"))
12925	}
12926	if s.CostCategoryArn != nil && len(*s.CostCategoryArn) < 20 {
12927		invalidParams.Add(request.NewErrParamMinLen("CostCategoryArn", 20))
12928	}
12929	if s.DefaultValue != nil && len(*s.DefaultValue) < 1 {
12930		invalidParams.Add(request.NewErrParamMinLen("DefaultValue", 1))
12931	}
12932	if s.RuleVersion == nil {
12933		invalidParams.Add(request.NewErrParamRequired("RuleVersion"))
12934	}
12935	if s.Rules == nil {
12936		invalidParams.Add(request.NewErrParamRequired("Rules"))
12937	}
12938	if s.Rules != nil && len(s.Rules) < 1 {
12939		invalidParams.Add(request.NewErrParamMinLen("Rules", 1))
12940	}
12941	if s.SplitChargeRules != nil && len(s.SplitChargeRules) < 1 {
12942		invalidParams.Add(request.NewErrParamMinLen("SplitChargeRules", 1))
12943	}
12944	if s.Rules != nil {
12945		for i, v := range s.Rules {
12946			if v == nil {
12947				continue
12948			}
12949			if err := v.Validate(); err != nil {
12950				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
12951			}
12952		}
12953	}
12954	if s.SplitChargeRules != nil {
12955		for i, v := range s.SplitChargeRules {
12956			if v == nil {
12957				continue
12958			}
12959			if err := v.Validate(); err != nil {
12960				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SplitChargeRules", i), err.(request.ErrInvalidParams))
12961			}
12962		}
12963	}
12964
12965	if invalidParams.Len() > 0 {
12966		return invalidParams
12967	}
12968	return nil
12969}
12970
12971// SetCostCategoryArn sets the CostCategoryArn field's value.
12972func (s *UpdateCostCategoryDefinitionInput) SetCostCategoryArn(v string) *UpdateCostCategoryDefinitionInput {
12973	s.CostCategoryArn = &v
12974	return s
12975}
12976
12977// SetDefaultValue sets the DefaultValue field's value.
12978func (s *UpdateCostCategoryDefinitionInput) SetDefaultValue(v string) *UpdateCostCategoryDefinitionInput {
12979	s.DefaultValue = &v
12980	return s
12981}
12982
12983// SetRuleVersion sets the RuleVersion field's value.
12984func (s *UpdateCostCategoryDefinitionInput) SetRuleVersion(v string) *UpdateCostCategoryDefinitionInput {
12985	s.RuleVersion = &v
12986	return s
12987}
12988
12989// SetRules sets the Rules field's value.
12990func (s *UpdateCostCategoryDefinitionInput) SetRules(v []*CostCategoryRule) *UpdateCostCategoryDefinitionInput {
12991	s.Rules = v
12992	return s
12993}
12994
12995// SetSplitChargeRules sets the SplitChargeRules field's value.
12996func (s *UpdateCostCategoryDefinitionInput) SetSplitChargeRules(v []*CostCategorySplitChargeRule) *UpdateCostCategoryDefinitionInput {
12997	s.SplitChargeRules = v
12998	return s
12999}
13000
13001type UpdateCostCategoryDefinitionOutput struct {
13002	_ struct{} `type:"structure"`
13003
13004	// The unique identifier for your Cost Category.
13005	CostCategoryArn *string `min:"20" type:"string"`
13006
13007	// The Cost Category's effective start date.
13008	EffectiveStart *string `min:"20" type:"string"`
13009}
13010
13011// String returns the string representation
13012func (s UpdateCostCategoryDefinitionOutput) String() string {
13013	return awsutil.Prettify(s)
13014}
13015
13016// GoString returns the string representation
13017func (s UpdateCostCategoryDefinitionOutput) GoString() string {
13018	return s.String()
13019}
13020
13021// SetCostCategoryArn sets the CostCategoryArn field's value.
13022func (s *UpdateCostCategoryDefinitionOutput) SetCostCategoryArn(v string) *UpdateCostCategoryDefinitionOutput {
13023	s.CostCategoryArn = &v
13024	return s
13025}
13026
13027// SetEffectiveStart sets the EffectiveStart field's value.
13028func (s *UpdateCostCategoryDefinitionOutput) SetEffectiveStart(v string) *UpdateCostCategoryDefinitionOutput {
13029	s.EffectiveStart = &v
13030	return s
13031}
13032
13033// The amount of utilization, in hours.
13034type UtilizationByTime struct {
13035	_ struct{} `type:"structure"`
13036
13037	// The groups that this utilization result uses.
13038	Groups []*ReservationUtilizationGroup `type:"list"`
13039
13040	// The period of time that this utilization was used for.
13041	TimePeriod *DateInterval `type:"structure"`
13042
13043	// The total number of reservation hours that were used.
13044	Total *ReservationAggregates `type:"structure"`
13045}
13046
13047// String returns the string representation
13048func (s UtilizationByTime) String() string {
13049	return awsutil.Prettify(s)
13050}
13051
13052// GoString returns the string representation
13053func (s UtilizationByTime) GoString() string {
13054	return s.String()
13055}
13056
13057// SetGroups sets the Groups field's value.
13058func (s *UtilizationByTime) SetGroups(v []*ReservationUtilizationGroup) *UtilizationByTime {
13059	s.Groups = v
13060	return s
13061}
13062
13063// SetTimePeriod sets the TimePeriod field's value.
13064func (s *UtilizationByTime) SetTimePeriod(v *DateInterval) *UtilizationByTime {
13065	s.TimePeriod = v
13066	return s
13067}
13068
13069// SetTotal sets the Total field's value.
13070func (s *UtilizationByTime) SetTotal(v *ReservationAggregates) *UtilizationByTime {
13071	s.Total = v
13072	return s
13073}
13074
13075const (
13076	// AccountScopePayer is a AccountScope enum value
13077	AccountScopePayer = "PAYER"
13078
13079	// AccountScopeLinked is a AccountScope enum value
13080	AccountScopeLinked = "LINKED"
13081)
13082
13083// AccountScope_Values returns all elements of the AccountScope enum
13084func AccountScope_Values() []string {
13085	return []string{
13086		AccountScopePayer,
13087		AccountScopeLinked,
13088	}
13089}
13090
13091const (
13092	// AnomalyFeedbackTypeYes is a AnomalyFeedbackType enum value
13093	AnomalyFeedbackTypeYes = "YES"
13094
13095	// AnomalyFeedbackTypeNo is a AnomalyFeedbackType enum value
13096	AnomalyFeedbackTypeNo = "NO"
13097
13098	// AnomalyFeedbackTypePlannedActivity is a AnomalyFeedbackType enum value
13099	AnomalyFeedbackTypePlannedActivity = "PLANNED_ACTIVITY"
13100)
13101
13102// AnomalyFeedbackType_Values returns all elements of the AnomalyFeedbackType enum
13103func AnomalyFeedbackType_Values() []string {
13104	return []string{
13105		AnomalyFeedbackTypeYes,
13106		AnomalyFeedbackTypeNo,
13107		AnomalyFeedbackTypePlannedActivity,
13108	}
13109}
13110
13111const (
13112	// AnomalySubscriptionFrequencyDaily is a AnomalySubscriptionFrequency enum value
13113	AnomalySubscriptionFrequencyDaily = "DAILY"
13114
13115	// AnomalySubscriptionFrequencyImmediate is a AnomalySubscriptionFrequency enum value
13116	AnomalySubscriptionFrequencyImmediate = "IMMEDIATE"
13117
13118	// AnomalySubscriptionFrequencyWeekly is a AnomalySubscriptionFrequency enum value
13119	AnomalySubscriptionFrequencyWeekly = "WEEKLY"
13120)
13121
13122// AnomalySubscriptionFrequency_Values returns all elements of the AnomalySubscriptionFrequency enum
13123func AnomalySubscriptionFrequency_Values() []string {
13124	return []string{
13125		AnomalySubscriptionFrequencyDaily,
13126		AnomalySubscriptionFrequencyImmediate,
13127		AnomalySubscriptionFrequencyWeekly,
13128	}
13129}
13130
13131const (
13132	// ContextCostAndUsage is a Context enum value
13133	ContextCostAndUsage = "COST_AND_USAGE"
13134
13135	// ContextReservations is a Context enum value
13136	ContextReservations = "RESERVATIONS"
13137
13138	// ContextSavingsPlans is a Context enum value
13139	ContextSavingsPlans = "SAVINGS_PLANS"
13140)
13141
13142// Context_Values returns all elements of the Context enum
13143func Context_Values() []string {
13144	return []string{
13145		ContextCostAndUsage,
13146		ContextReservations,
13147		ContextSavingsPlans,
13148	}
13149}
13150
13151const (
13152	// CostCategoryInheritedValueDimensionNameLinkedAccountName is a CostCategoryInheritedValueDimensionName enum value
13153	CostCategoryInheritedValueDimensionNameLinkedAccountName = "LINKED_ACCOUNT_NAME"
13154
13155	// CostCategoryInheritedValueDimensionNameTag is a CostCategoryInheritedValueDimensionName enum value
13156	CostCategoryInheritedValueDimensionNameTag = "TAG"
13157)
13158
13159// CostCategoryInheritedValueDimensionName_Values returns all elements of the CostCategoryInheritedValueDimensionName enum
13160func CostCategoryInheritedValueDimensionName_Values() []string {
13161	return []string{
13162		CostCategoryInheritedValueDimensionNameLinkedAccountName,
13163		CostCategoryInheritedValueDimensionNameTag,
13164	}
13165}
13166
13167const (
13168	// CostCategoryRuleTypeRegular is a CostCategoryRuleType enum value
13169	CostCategoryRuleTypeRegular = "REGULAR"
13170
13171	// CostCategoryRuleTypeInheritedValue is a CostCategoryRuleType enum value
13172	CostCategoryRuleTypeInheritedValue = "INHERITED_VALUE"
13173)
13174
13175// CostCategoryRuleType_Values returns all elements of the CostCategoryRuleType enum
13176func CostCategoryRuleType_Values() []string {
13177	return []string{
13178		CostCategoryRuleTypeRegular,
13179		CostCategoryRuleTypeInheritedValue,
13180	}
13181}
13182
13183// The rule schema version in this particular Cost Category.
13184const (
13185	// CostCategoryRuleVersionCostCategoryExpressionV1 is a CostCategoryRuleVersion enum value
13186	CostCategoryRuleVersionCostCategoryExpressionV1 = "CostCategoryExpression.v1"
13187)
13188
13189// CostCategoryRuleVersion_Values returns all elements of the CostCategoryRuleVersion enum
13190func CostCategoryRuleVersion_Values() []string {
13191	return []string{
13192		CostCategoryRuleVersionCostCategoryExpressionV1,
13193	}
13194}
13195
13196const (
13197	// CostCategorySplitChargeMethodFixed is a CostCategorySplitChargeMethod enum value
13198	CostCategorySplitChargeMethodFixed = "FIXED"
13199
13200	// CostCategorySplitChargeMethodProportional is a CostCategorySplitChargeMethod enum value
13201	CostCategorySplitChargeMethodProportional = "PROPORTIONAL"
13202
13203	// CostCategorySplitChargeMethodEven is a CostCategorySplitChargeMethod enum value
13204	CostCategorySplitChargeMethodEven = "EVEN"
13205)
13206
13207// CostCategorySplitChargeMethod_Values returns all elements of the CostCategorySplitChargeMethod enum
13208func CostCategorySplitChargeMethod_Values() []string {
13209	return []string{
13210		CostCategorySplitChargeMethodFixed,
13211		CostCategorySplitChargeMethodProportional,
13212		CostCategorySplitChargeMethodEven,
13213	}
13214}
13215
13216const (
13217	// CostCategorySplitChargeRuleParameterTypeAllocationPercentages is a CostCategorySplitChargeRuleParameterType enum value
13218	CostCategorySplitChargeRuleParameterTypeAllocationPercentages = "ALLOCATION_PERCENTAGES"
13219)
13220
13221// CostCategorySplitChargeRuleParameterType_Values returns all elements of the CostCategorySplitChargeRuleParameterType enum
13222func CostCategorySplitChargeRuleParameterType_Values() []string {
13223	return []string{
13224		CostCategorySplitChargeRuleParameterTypeAllocationPercentages,
13225	}
13226}
13227
13228const (
13229	// CostCategoryStatusProcessing is a CostCategoryStatus enum value
13230	CostCategoryStatusProcessing = "PROCESSING"
13231
13232	// CostCategoryStatusApplied is a CostCategoryStatus enum value
13233	CostCategoryStatusApplied = "APPLIED"
13234)
13235
13236// CostCategoryStatus_Values returns all elements of the CostCategoryStatus enum
13237func CostCategoryStatus_Values() []string {
13238	return []string{
13239		CostCategoryStatusProcessing,
13240		CostCategoryStatusApplied,
13241	}
13242}
13243
13244const (
13245	// CostCategoryStatusComponentCostExplorer is a CostCategoryStatusComponent enum value
13246	CostCategoryStatusComponentCostExplorer = "COST_EXPLORER"
13247)
13248
13249// CostCategoryStatusComponent_Values returns all elements of the CostCategoryStatusComponent enum
13250func CostCategoryStatusComponent_Values() []string {
13251	return []string{
13252		CostCategoryStatusComponentCostExplorer,
13253	}
13254}
13255
13256const (
13257	// DimensionAz is a Dimension enum value
13258	DimensionAz = "AZ"
13259
13260	// DimensionInstanceType is a Dimension enum value
13261	DimensionInstanceType = "INSTANCE_TYPE"
13262
13263	// DimensionLinkedAccount is a Dimension enum value
13264	DimensionLinkedAccount = "LINKED_ACCOUNT"
13265
13266	// DimensionLinkedAccountName is a Dimension enum value
13267	DimensionLinkedAccountName = "LINKED_ACCOUNT_NAME"
13268
13269	// DimensionOperation is a Dimension enum value
13270	DimensionOperation = "OPERATION"
13271
13272	// DimensionPurchaseType is a Dimension enum value
13273	DimensionPurchaseType = "PURCHASE_TYPE"
13274
13275	// DimensionRegion is a Dimension enum value
13276	DimensionRegion = "REGION"
13277
13278	// DimensionService is a Dimension enum value
13279	DimensionService = "SERVICE"
13280
13281	// DimensionServiceCode is a Dimension enum value
13282	DimensionServiceCode = "SERVICE_CODE"
13283
13284	// DimensionUsageType is a Dimension enum value
13285	DimensionUsageType = "USAGE_TYPE"
13286
13287	// DimensionUsageTypeGroup is a Dimension enum value
13288	DimensionUsageTypeGroup = "USAGE_TYPE_GROUP"
13289
13290	// DimensionRecordType is a Dimension enum value
13291	DimensionRecordType = "RECORD_TYPE"
13292
13293	// DimensionOperatingSystem is a Dimension enum value
13294	DimensionOperatingSystem = "OPERATING_SYSTEM"
13295
13296	// DimensionTenancy is a Dimension enum value
13297	DimensionTenancy = "TENANCY"
13298
13299	// DimensionScope is a Dimension enum value
13300	DimensionScope = "SCOPE"
13301
13302	// DimensionPlatform is a Dimension enum value
13303	DimensionPlatform = "PLATFORM"
13304
13305	// DimensionSubscriptionId is a Dimension enum value
13306	DimensionSubscriptionId = "SUBSCRIPTION_ID"
13307
13308	// DimensionLegalEntityName is a Dimension enum value
13309	DimensionLegalEntityName = "LEGAL_ENTITY_NAME"
13310
13311	// DimensionDeploymentOption is a Dimension enum value
13312	DimensionDeploymentOption = "DEPLOYMENT_OPTION"
13313
13314	// DimensionDatabaseEngine is a Dimension enum value
13315	DimensionDatabaseEngine = "DATABASE_ENGINE"
13316
13317	// DimensionCacheEngine is a Dimension enum value
13318	DimensionCacheEngine = "CACHE_ENGINE"
13319
13320	// DimensionInstanceTypeFamily is a Dimension enum value
13321	DimensionInstanceTypeFamily = "INSTANCE_TYPE_FAMILY"
13322
13323	// DimensionBillingEntity is a Dimension enum value
13324	DimensionBillingEntity = "BILLING_ENTITY"
13325
13326	// DimensionReservationId is a Dimension enum value
13327	DimensionReservationId = "RESERVATION_ID"
13328
13329	// DimensionResourceId is a Dimension enum value
13330	DimensionResourceId = "RESOURCE_ID"
13331
13332	// DimensionRightsizingType is a Dimension enum value
13333	DimensionRightsizingType = "RIGHTSIZING_TYPE"
13334
13335	// DimensionSavingsPlansType is a Dimension enum value
13336	DimensionSavingsPlansType = "SAVINGS_PLANS_TYPE"
13337
13338	// DimensionSavingsPlanArn is a Dimension enum value
13339	DimensionSavingsPlanArn = "SAVINGS_PLAN_ARN"
13340
13341	// DimensionPaymentOption is a Dimension enum value
13342	DimensionPaymentOption = "PAYMENT_OPTION"
13343
13344	// DimensionAgreementEndDateTimeAfter is a Dimension enum value
13345	DimensionAgreementEndDateTimeAfter = "AGREEMENT_END_DATE_TIME_AFTER"
13346
13347	// DimensionAgreementEndDateTimeBefore is a Dimension enum value
13348	DimensionAgreementEndDateTimeBefore = "AGREEMENT_END_DATE_TIME_BEFORE"
13349)
13350
13351// Dimension_Values returns all elements of the Dimension enum
13352func Dimension_Values() []string {
13353	return []string{
13354		DimensionAz,
13355		DimensionInstanceType,
13356		DimensionLinkedAccount,
13357		DimensionLinkedAccountName,
13358		DimensionOperation,
13359		DimensionPurchaseType,
13360		DimensionRegion,
13361		DimensionService,
13362		DimensionServiceCode,
13363		DimensionUsageType,
13364		DimensionUsageTypeGroup,
13365		DimensionRecordType,
13366		DimensionOperatingSystem,
13367		DimensionTenancy,
13368		DimensionScope,
13369		DimensionPlatform,
13370		DimensionSubscriptionId,
13371		DimensionLegalEntityName,
13372		DimensionDeploymentOption,
13373		DimensionDatabaseEngine,
13374		DimensionCacheEngine,
13375		DimensionInstanceTypeFamily,
13376		DimensionBillingEntity,
13377		DimensionReservationId,
13378		DimensionResourceId,
13379		DimensionRightsizingType,
13380		DimensionSavingsPlansType,
13381		DimensionSavingsPlanArn,
13382		DimensionPaymentOption,
13383		DimensionAgreementEndDateTimeAfter,
13384		DimensionAgreementEndDateTimeBefore,
13385	}
13386}
13387
13388const (
13389	// FindingReasonCodeCpuOverProvisioned is a FindingReasonCode enum value
13390	FindingReasonCodeCpuOverProvisioned = "CPU_OVER_PROVISIONED"
13391
13392	// FindingReasonCodeCpuUnderProvisioned is a FindingReasonCode enum value
13393	FindingReasonCodeCpuUnderProvisioned = "CPU_UNDER_PROVISIONED"
13394
13395	// FindingReasonCodeMemoryOverProvisioned is a FindingReasonCode enum value
13396	FindingReasonCodeMemoryOverProvisioned = "MEMORY_OVER_PROVISIONED"
13397
13398	// FindingReasonCodeMemoryUnderProvisioned is a FindingReasonCode enum value
13399	FindingReasonCodeMemoryUnderProvisioned = "MEMORY_UNDER_PROVISIONED"
13400
13401	// FindingReasonCodeEbsThroughputOverProvisioned is a FindingReasonCode enum value
13402	FindingReasonCodeEbsThroughputOverProvisioned = "EBS_THROUGHPUT_OVER_PROVISIONED"
13403
13404	// FindingReasonCodeEbsThroughputUnderProvisioned is a FindingReasonCode enum value
13405	FindingReasonCodeEbsThroughputUnderProvisioned = "EBS_THROUGHPUT_UNDER_PROVISIONED"
13406
13407	// FindingReasonCodeEbsIopsOverProvisioned is a FindingReasonCode enum value
13408	FindingReasonCodeEbsIopsOverProvisioned = "EBS_IOPS_OVER_PROVISIONED"
13409
13410	// FindingReasonCodeEbsIopsUnderProvisioned is a FindingReasonCode enum value
13411	FindingReasonCodeEbsIopsUnderProvisioned = "EBS_IOPS_UNDER_PROVISIONED"
13412
13413	// FindingReasonCodeNetworkBandwidthOverProvisioned is a FindingReasonCode enum value
13414	FindingReasonCodeNetworkBandwidthOverProvisioned = "NETWORK_BANDWIDTH_OVER_PROVISIONED"
13415
13416	// FindingReasonCodeNetworkBandwidthUnderProvisioned is a FindingReasonCode enum value
13417	FindingReasonCodeNetworkBandwidthUnderProvisioned = "NETWORK_BANDWIDTH_UNDER_PROVISIONED"
13418
13419	// FindingReasonCodeNetworkPpsOverProvisioned is a FindingReasonCode enum value
13420	FindingReasonCodeNetworkPpsOverProvisioned = "NETWORK_PPS_OVER_PROVISIONED"
13421
13422	// FindingReasonCodeNetworkPpsUnderProvisioned is a FindingReasonCode enum value
13423	FindingReasonCodeNetworkPpsUnderProvisioned = "NETWORK_PPS_UNDER_PROVISIONED"
13424
13425	// FindingReasonCodeDiskIopsOverProvisioned is a FindingReasonCode enum value
13426	FindingReasonCodeDiskIopsOverProvisioned = "DISK_IOPS_OVER_PROVISIONED"
13427
13428	// FindingReasonCodeDiskIopsUnderProvisioned is a FindingReasonCode enum value
13429	FindingReasonCodeDiskIopsUnderProvisioned = "DISK_IOPS_UNDER_PROVISIONED"
13430
13431	// FindingReasonCodeDiskThroughputOverProvisioned is a FindingReasonCode enum value
13432	FindingReasonCodeDiskThroughputOverProvisioned = "DISK_THROUGHPUT_OVER_PROVISIONED"
13433
13434	// FindingReasonCodeDiskThroughputUnderProvisioned is a FindingReasonCode enum value
13435	FindingReasonCodeDiskThroughputUnderProvisioned = "DISK_THROUGHPUT_UNDER_PROVISIONED"
13436)
13437
13438// FindingReasonCode_Values returns all elements of the FindingReasonCode enum
13439func FindingReasonCode_Values() []string {
13440	return []string{
13441		FindingReasonCodeCpuOverProvisioned,
13442		FindingReasonCodeCpuUnderProvisioned,
13443		FindingReasonCodeMemoryOverProvisioned,
13444		FindingReasonCodeMemoryUnderProvisioned,
13445		FindingReasonCodeEbsThroughputOverProvisioned,
13446		FindingReasonCodeEbsThroughputUnderProvisioned,
13447		FindingReasonCodeEbsIopsOverProvisioned,
13448		FindingReasonCodeEbsIopsUnderProvisioned,
13449		FindingReasonCodeNetworkBandwidthOverProvisioned,
13450		FindingReasonCodeNetworkBandwidthUnderProvisioned,
13451		FindingReasonCodeNetworkPpsOverProvisioned,
13452		FindingReasonCodeNetworkPpsUnderProvisioned,
13453		FindingReasonCodeDiskIopsOverProvisioned,
13454		FindingReasonCodeDiskIopsUnderProvisioned,
13455		FindingReasonCodeDiskThroughputOverProvisioned,
13456		FindingReasonCodeDiskThroughputUnderProvisioned,
13457	}
13458}
13459
13460const (
13461	// GranularityDaily is a Granularity enum value
13462	GranularityDaily = "DAILY"
13463
13464	// GranularityMonthly is a Granularity enum value
13465	GranularityMonthly = "MONTHLY"
13466
13467	// GranularityHourly is a Granularity enum value
13468	GranularityHourly = "HOURLY"
13469)
13470
13471// Granularity_Values returns all elements of the Granularity enum
13472func Granularity_Values() []string {
13473	return []string{
13474		GranularityDaily,
13475		GranularityMonthly,
13476		GranularityHourly,
13477	}
13478}
13479
13480const (
13481	// GroupDefinitionTypeDimension is a GroupDefinitionType enum value
13482	GroupDefinitionTypeDimension = "DIMENSION"
13483
13484	// GroupDefinitionTypeTag is a GroupDefinitionType enum value
13485	GroupDefinitionTypeTag = "TAG"
13486
13487	// GroupDefinitionTypeCostCategory is a GroupDefinitionType enum value
13488	GroupDefinitionTypeCostCategory = "COST_CATEGORY"
13489)
13490
13491// GroupDefinitionType_Values returns all elements of the GroupDefinitionType enum
13492func GroupDefinitionType_Values() []string {
13493	return []string{
13494		GroupDefinitionTypeDimension,
13495		GroupDefinitionTypeTag,
13496		GroupDefinitionTypeCostCategory,
13497	}
13498}
13499
13500const (
13501	// LookbackPeriodInDaysSevenDays is a LookbackPeriodInDays enum value
13502	LookbackPeriodInDaysSevenDays = "SEVEN_DAYS"
13503
13504	// LookbackPeriodInDaysThirtyDays is a LookbackPeriodInDays enum value
13505	LookbackPeriodInDaysThirtyDays = "THIRTY_DAYS"
13506
13507	// LookbackPeriodInDaysSixtyDays is a LookbackPeriodInDays enum value
13508	LookbackPeriodInDaysSixtyDays = "SIXTY_DAYS"
13509)
13510
13511// LookbackPeriodInDays_Values returns all elements of the LookbackPeriodInDays enum
13512func LookbackPeriodInDays_Values() []string {
13513	return []string{
13514		LookbackPeriodInDaysSevenDays,
13515		LookbackPeriodInDaysThirtyDays,
13516		LookbackPeriodInDaysSixtyDays,
13517	}
13518}
13519
13520const (
13521	// MatchOptionEquals is a MatchOption enum value
13522	MatchOptionEquals = "EQUALS"
13523
13524	// MatchOptionAbsent is a MatchOption enum value
13525	MatchOptionAbsent = "ABSENT"
13526
13527	// MatchOptionStartsWith is a MatchOption enum value
13528	MatchOptionStartsWith = "STARTS_WITH"
13529
13530	// MatchOptionEndsWith is a MatchOption enum value
13531	MatchOptionEndsWith = "ENDS_WITH"
13532
13533	// MatchOptionContains is a MatchOption enum value
13534	MatchOptionContains = "CONTAINS"
13535
13536	// MatchOptionCaseSensitive is a MatchOption enum value
13537	MatchOptionCaseSensitive = "CASE_SENSITIVE"
13538
13539	// MatchOptionCaseInsensitive is a MatchOption enum value
13540	MatchOptionCaseInsensitive = "CASE_INSENSITIVE"
13541)
13542
13543// MatchOption_Values returns all elements of the MatchOption enum
13544func MatchOption_Values() []string {
13545	return []string{
13546		MatchOptionEquals,
13547		MatchOptionAbsent,
13548		MatchOptionStartsWith,
13549		MatchOptionEndsWith,
13550		MatchOptionContains,
13551		MatchOptionCaseSensitive,
13552		MatchOptionCaseInsensitive,
13553	}
13554}
13555
13556const (
13557	// MetricBlendedCost is a Metric enum value
13558	MetricBlendedCost = "BLENDED_COST"
13559
13560	// MetricUnblendedCost is a Metric enum value
13561	MetricUnblendedCost = "UNBLENDED_COST"
13562
13563	// MetricAmortizedCost is a Metric enum value
13564	MetricAmortizedCost = "AMORTIZED_COST"
13565
13566	// MetricNetUnblendedCost is a Metric enum value
13567	MetricNetUnblendedCost = "NET_UNBLENDED_COST"
13568
13569	// MetricNetAmortizedCost is a Metric enum value
13570	MetricNetAmortizedCost = "NET_AMORTIZED_COST"
13571
13572	// MetricUsageQuantity is a Metric enum value
13573	MetricUsageQuantity = "USAGE_QUANTITY"
13574
13575	// MetricNormalizedUsageAmount is a Metric enum value
13576	MetricNormalizedUsageAmount = "NORMALIZED_USAGE_AMOUNT"
13577)
13578
13579// Metric_Values returns all elements of the Metric enum
13580func Metric_Values() []string {
13581	return []string{
13582		MetricBlendedCost,
13583		MetricUnblendedCost,
13584		MetricAmortizedCost,
13585		MetricNetUnblendedCost,
13586		MetricNetAmortizedCost,
13587		MetricUsageQuantity,
13588		MetricNormalizedUsageAmount,
13589	}
13590}
13591
13592const (
13593	// MonitorDimensionService is a MonitorDimension enum value
13594	MonitorDimensionService = "SERVICE"
13595)
13596
13597// MonitorDimension_Values returns all elements of the MonitorDimension enum
13598func MonitorDimension_Values() []string {
13599	return []string{
13600		MonitorDimensionService,
13601	}
13602}
13603
13604const (
13605	// MonitorTypeDimensional is a MonitorType enum value
13606	MonitorTypeDimensional = "DIMENSIONAL"
13607
13608	// MonitorTypeCustom is a MonitorType enum value
13609	MonitorTypeCustom = "CUSTOM"
13610)
13611
13612// MonitorType_Values returns all elements of the MonitorType enum
13613func MonitorType_Values() []string {
13614	return []string{
13615		MonitorTypeDimensional,
13616		MonitorTypeCustom,
13617	}
13618}
13619
13620const (
13621	// NumericOperatorEqual is a NumericOperator enum value
13622	NumericOperatorEqual = "EQUAL"
13623
13624	// NumericOperatorGreaterThanOrEqual is a NumericOperator enum value
13625	NumericOperatorGreaterThanOrEqual = "GREATER_THAN_OR_EQUAL"
13626
13627	// NumericOperatorLessThanOrEqual is a NumericOperator enum value
13628	NumericOperatorLessThanOrEqual = "LESS_THAN_OR_EQUAL"
13629
13630	// NumericOperatorGreaterThan is a NumericOperator enum value
13631	NumericOperatorGreaterThan = "GREATER_THAN"
13632
13633	// NumericOperatorLessThan is a NumericOperator enum value
13634	NumericOperatorLessThan = "LESS_THAN"
13635
13636	// NumericOperatorBetween is a NumericOperator enum value
13637	NumericOperatorBetween = "BETWEEN"
13638)
13639
13640// NumericOperator_Values returns all elements of the NumericOperator enum
13641func NumericOperator_Values() []string {
13642	return []string{
13643		NumericOperatorEqual,
13644		NumericOperatorGreaterThanOrEqual,
13645		NumericOperatorLessThanOrEqual,
13646		NumericOperatorGreaterThan,
13647		NumericOperatorLessThan,
13648		NumericOperatorBetween,
13649	}
13650}
13651
13652const (
13653	// OfferingClassStandard is a OfferingClass enum value
13654	OfferingClassStandard = "STANDARD"
13655
13656	// OfferingClassConvertible is a OfferingClass enum value
13657	OfferingClassConvertible = "CONVERTIBLE"
13658)
13659
13660// OfferingClass_Values returns all elements of the OfferingClass enum
13661func OfferingClass_Values() []string {
13662	return []string{
13663		OfferingClassStandard,
13664		OfferingClassConvertible,
13665	}
13666}
13667
13668const (
13669	// PaymentOptionNoUpfront is a PaymentOption enum value
13670	PaymentOptionNoUpfront = "NO_UPFRONT"
13671
13672	// PaymentOptionPartialUpfront is a PaymentOption enum value
13673	PaymentOptionPartialUpfront = "PARTIAL_UPFRONT"
13674
13675	// PaymentOptionAllUpfront is a PaymentOption enum value
13676	PaymentOptionAllUpfront = "ALL_UPFRONT"
13677
13678	// PaymentOptionLightUtilization is a PaymentOption enum value
13679	PaymentOptionLightUtilization = "LIGHT_UTILIZATION"
13680
13681	// PaymentOptionMediumUtilization is a PaymentOption enum value
13682	PaymentOptionMediumUtilization = "MEDIUM_UTILIZATION"
13683
13684	// PaymentOptionHeavyUtilization is a PaymentOption enum value
13685	PaymentOptionHeavyUtilization = "HEAVY_UTILIZATION"
13686)
13687
13688// PaymentOption_Values returns all elements of the PaymentOption enum
13689func PaymentOption_Values() []string {
13690	return []string{
13691		PaymentOptionNoUpfront,
13692		PaymentOptionPartialUpfront,
13693		PaymentOptionAllUpfront,
13694		PaymentOptionLightUtilization,
13695		PaymentOptionMediumUtilization,
13696		PaymentOptionHeavyUtilization,
13697	}
13698}
13699
13700const (
13701	// PlatformDifferenceHypervisor is a PlatformDifference enum value
13702	PlatformDifferenceHypervisor = "HYPERVISOR"
13703
13704	// PlatformDifferenceNetworkInterface is a PlatformDifference enum value
13705	PlatformDifferenceNetworkInterface = "NETWORK_INTERFACE"
13706
13707	// PlatformDifferenceStorageInterface is a PlatformDifference enum value
13708	PlatformDifferenceStorageInterface = "STORAGE_INTERFACE"
13709
13710	// PlatformDifferenceInstanceStoreAvailability is a PlatformDifference enum value
13711	PlatformDifferenceInstanceStoreAvailability = "INSTANCE_STORE_AVAILABILITY"
13712
13713	// PlatformDifferenceVirtualizationType is a PlatformDifference enum value
13714	PlatformDifferenceVirtualizationType = "VIRTUALIZATION_TYPE"
13715)
13716
13717// PlatformDifference_Values returns all elements of the PlatformDifference enum
13718func PlatformDifference_Values() []string {
13719	return []string{
13720		PlatformDifferenceHypervisor,
13721		PlatformDifferenceNetworkInterface,
13722		PlatformDifferenceStorageInterface,
13723		PlatformDifferenceInstanceStoreAvailability,
13724		PlatformDifferenceVirtualizationType,
13725	}
13726}
13727
13728const (
13729	// RecommendationTargetSameInstanceFamily is a RecommendationTarget enum value
13730	RecommendationTargetSameInstanceFamily = "SAME_INSTANCE_FAMILY"
13731
13732	// RecommendationTargetCrossInstanceFamily is a RecommendationTarget enum value
13733	RecommendationTargetCrossInstanceFamily = "CROSS_INSTANCE_FAMILY"
13734)
13735
13736// RecommendationTarget_Values returns all elements of the RecommendationTarget enum
13737func RecommendationTarget_Values() []string {
13738	return []string{
13739		RecommendationTargetSameInstanceFamily,
13740		RecommendationTargetCrossInstanceFamily,
13741	}
13742}
13743
13744const (
13745	// RightsizingTypeTerminate is a RightsizingType enum value
13746	RightsizingTypeTerminate = "TERMINATE"
13747
13748	// RightsizingTypeModify is a RightsizingType enum value
13749	RightsizingTypeModify = "MODIFY"
13750)
13751
13752// RightsizingType_Values returns all elements of the RightsizingType enum
13753func RightsizingType_Values() []string {
13754	return []string{
13755		RightsizingTypeTerminate,
13756		RightsizingTypeModify,
13757	}
13758}
13759
13760const (
13761	// SavingsPlansDataTypeAttributes is a SavingsPlansDataType enum value
13762	SavingsPlansDataTypeAttributes = "ATTRIBUTES"
13763
13764	// SavingsPlansDataTypeUtilization is a SavingsPlansDataType enum value
13765	SavingsPlansDataTypeUtilization = "UTILIZATION"
13766
13767	// SavingsPlansDataTypeAmortizedCommitment is a SavingsPlansDataType enum value
13768	SavingsPlansDataTypeAmortizedCommitment = "AMORTIZED_COMMITMENT"
13769
13770	// SavingsPlansDataTypeSavings is a SavingsPlansDataType enum value
13771	SavingsPlansDataTypeSavings = "SAVINGS"
13772)
13773
13774// SavingsPlansDataType_Values returns all elements of the SavingsPlansDataType enum
13775func SavingsPlansDataType_Values() []string {
13776	return []string{
13777		SavingsPlansDataTypeAttributes,
13778		SavingsPlansDataTypeUtilization,
13779		SavingsPlansDataTypeAmortizedCommitment,
13780		SavingsPlansDataTypeSavings,
13781	}
13782}
13783
13784const (
13785	// SortOrderAscending is a SortOrder enum value
13786	SortOrderAscending = "ASCENDING"
13787
13788	// SortOrderDescending is a SortOrder enum value
13789	SortOrderDescending = "DESCENDING"
13790)
13791
13792// SortOrder_Values returns all elements of the SortOrder enum
13793func SortOrder_Values() []string {
13794	return []string{
13795		SortOrderAscending,
13796		SortOrderDescending,
13797	}
13798}
13799
13800const (
13801	// SubscriberStatusConfirmed is a SubscriberStatus enum value
13802	SubscriberStatusConfirmed = "CONFIRMED"
13803
13804	// SubscriberStatusDeclined is a SubscriberStatus enum value
13805	SubscriberStatusDeclined = "DECLINED"
13806)
13807
13808// SubscriberStatus_Values returns all elements of the SubscriberStatus enum
13809func SubscriberStatus_Values() []string {
13810	return []string{
13811		SubscriberStatusConfirmed,
13812		SubscriberStatusDeclined,
13813	}
13814}
13815
13816const (
13817	// SubscriberTypeEmail is a SubscriberType enum value
13818	SubscriberTypeEmail = "EMAIL"
13819
13820	// SubscriberTypeSns is a SubscriberType enum value
13821	SubscriberTypeSns = "SNS"
13822)
13823
13824// SubscriberType_Values returns all elements of the SubscriberType enum
13825func SubscriberType_Values() []string {
13826	return []string{
13827		SubscriberTypeEmail,
13828		SubscriberTypeSns,
13829	}
13830}
13831
13832const (
13833	// SupportedSavingsPlansTypeComputeSp is a SupportedSavingsPlansType enum value
13834	SupportedSavingsPlansTypeComputeSp = "COMPUTE_SP"
13835
13836	// SupportedSavingsPlansTypeEc2InstanceSp is a SupportedSavingsPlansType enum value
13837	SupportedSavingsPlansTypeEc2InstanceSp = "EC2_INSTANCE_SP"
13838
13839	// SupportedSavingsPlansTypeSagemakerSp is a SupportedSavingsPlansType enum value
13840	SupportedSavingsPlansTypeSagemakerSp = "SAGEMAKER_SP"
13841)
13842
13843// SupportedSavingsPlansType_Values returns all elements of the SupportedSavingsPlansType enum
13844func SupportedSavingsPlansType_Values() []string {
13845	return []string{
13846		SupportedSavingsPlansTypeComputeSp,
13847		SupportedSavingsPlansTypeEc2InstanceSp,
13848		SupportedSavingsPlansTypeSagemakerSp,
13849	}
13850}
13851
13852const (
13853	// TermInYearsOneYear is a TermInYears enum value
13854	TermInYearsOneYear = "ONE_YEAR"
13855
13856	// TermInYearsThreeYears is a TermInYears enum value
13857	TermInYearsThreeYears = "THREE_YEARS"
13858)
13859
13860// TermInYears_Values returns all elements of the TermInYears enum
13861func TermInYears_Values() []string {
13862	return []string{
13863		TermInYearsOneYear,
13864		TermInYearsThreeYears,
13865	}
13866}
13867