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)
13
14const opCreateCostCategoryDefinition = "CreateCostCategoryDefinition"
15
16// CreateCostCategoryDefinitionRequest generates a "aws/request.Request" representing the
17// client's request for the CreateCostCategoryDefinition operation. The "output" return
18// value will be populated with the request's response once the request completes
19// successfully.
20//
21// Use "Send" method on the returned Request to send the API call to the service.
22// the "output" return value is not valid until after Send returns without error.
23//
24// See CreateCostCategoryDefinition for more information on using the CreateCostCategoryDefinition
25// API call, and error handling.
26//
27// This method is useful when you want to inject custom logic or configuration
28// into the SDK's request lifecycle. Such as custom headers, or retry logic.
29//
30//
31//    // Example sending a request using the CreateCostCategoryDefinitionRequest method.
32//    req, resp := client.CreateCostCategoryDefinitionRequest(params)
33//
34//    err := req.Send()
35//    if err == nil { // resp is now filled
36//        fmt.Println(resp)
37//    }
38//
39// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateCostCategoryDefinition
40func (c *CostExplorer) CreateCostCategoryDefinitionRequest(input *CreateCostCategoryDefinitionInput) (req *request.Request, output *CreateCostCategoryDefinitionOutput) {
41	op := &request.Operation{
42		Name:       opCreateCostCategoryDefinition,
43		HTTPMethod: "POST",
44		HTTPPath:   "/",
45	}
46
47	if input == nil {
48		input = &CreateCostCategoryDefinitionInput{}
49	}
50
51	output = &CreateCostCategoryDefinitionOutput{}
52	req = c.newRequest(op, input, output)
53	return
54}
55
56// CreateCostCategoryDefinition API operation for AWS Cost Explorer Service.
57//
58// Creates a new Cost Category with the requested name and rules.
59//
60// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
61// with awserr.Error's Code and Message methods to get detailed information about
62// the error.
63//
64// See the AWS API reference guide for AWS Cost Explorer Service's
65// API operation CreateCostCategoryDefinition for usage and error information.
66//
67// Returned Error Types:
68//   * ServiceQuotaExceededException
69//   You've reached the limit on the number of resources you can create, or exceeded
70//   the size of an individual resources.
71//
72//   * LimitExceededException
73//   You made too many calls in a short period of time. Try again later.
74//
75// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateCostCategoryDefinition
76func (c *CostExplorer) CreateCostCategoryDefinition(input *CreateCostCategoryDefinitionInput) (*CreateCostCategoryDefinitionOutput, error) {
77	req, out := c.CreateCostCategoryDefinitionRequest(input)
78	return out, req.Send()
79}
80
81// CreateCostCategoryDefinitionWithContext is the same as CreateCostCategoryDefinition with the addition of
82// the ability to pass a context and additional request options.
83//
84// See CreateCostCategoryDefinition for details on how to use this API operation.
85//
86// The context must be non-nil and will be used for request cancellation. If
87// the context is nil a panic will occur. In the future the SDK may create
88// sub-contexts for http.Requests. See https://golang.org/pkg/context/
89// for more information on using Contexts.
90func (c *CostExplorer) CreateCostCategoryDefinitionWithContext(ctx aws.Context, input *CreateCostCategoryDefinitionInput, opts ...request.Option) (*CreateCostCategoryDefinitionOutput, error) {
91	req, out := c.CreateCostCategoryDefinitionRequest(input)
92	req.SetContext(ctx)
93	req.ApplyOptions(opts...)
94	return out, req.Send()
95}
96
97const opDeleteCostCategoryDefinition = "DeleteCostCategoryDefinition"
98
99// DeleteCostCategoryDefinitionRequest generates a "aws/request.Request" representing the
100// client's request for the DeleteCostCategoryDefinition operation. The "output" return
101// value will be populated with the request's response once the request completes
102// successfully.
103//
104// Use "Send" method on the returned Request to send the API call to the service.
105// the "output" return value is not valid until after Send returns without error.
106//
107// See DeleteCostCategoryDefinition for more information on using the DeleteCostCategoryDefinition
108// API call, and error handling.
109//
110// This method is useful when you want to inject custom logic or configuration
111// into the SDK's request lifecycle. Such as custom headers, or retry logic.
112//
113//
114//    // Example sending a request using the DeleteCostCategoryDefinitionRequest method.
115//    req, resp := client.DeleteCostCategoryDefinitionRequest(params)
116//
117//    err := req.Send()
118//    if err == nil { // resp is now filled
119//        fmt.Println(resp)
120//    }
121//
122// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DeleteCostCategoryDefinition
123func (c *CostExplorer) DeleteCostCategoryDefinitionRequest(input *DeleteCostCategoryDefinitionInput) (req *request.Request, output *DeleteCostCategoryDefinitionOutput) {
124	op := &request.Operation{
125		Name:       opDeleteCostCategoryDefinition,
126		HTTPMethod: "POST",
127		HTTPPath:   "/",
128	}
129
130	if input == nil {
131		input = &DeleteCostCategoryDefinitionInput{}
132	}
133
134	output = &DeleteCostCategoryDefinitionOutput{}
135	req = c.newRequest(op, input, output)
136	return
137}
138
139// DeleteCostCategoryDefinition API operation for AWS Cost Explorer Service.
140//
141// Deletes a Cost Category. Expenses from this month going forward will no longer
142// be categorized with this Cost Category.
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 DeleteCostCategoryDefinition for usage and error information.
150//
151// Returned Error Types:
152//   * ResourceNotFoundException
153//   The specified ARN in the request doesn't exist.
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/DeleteCostCategoryDefinition
159func (c *CostExplorer) DeleteCostCategoryDefinition(input *DeleteCostCategoryDefinitionInput) (*DeleteCostCategoryDefinitionOutput, error) {
160	req, out := c.DeleteCostCategoryDefinitionRequest(input)
161	return out, req.Send()
162}
163
164// DeleteCostCategoryDefinitionWithContext is the same as DeleteCostCategoryDefinition with the addition of
165// the ability to pass a context and additional request options.
166//
167// See DeleteCostCategoryDefinition 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) DeleteCostCategoryDefinitionWithContext(ctx aws.Context, input *DeleteCostCategoryDefinitionInput, opts ...request.Option) (*DeleteCostCategoryDefinitionOutput, error) {
174	req, out := c.DeleteCostCategoryDefinitionRequest(input)
175	req.SetContext(ctx)
176	req.ApplyOptions(opts...)
177	return out, req.Send()
178}
179
180const opDescribeCostCategoryDefinition = "DescribeCostCategoryDefinition"
181
182// DescribeCostCategoryDefinitionRequest generates a "aws/request.Request" representing the
183// client's request for the DescribeCostCategoryDefinition 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 DescribeCostCategoryDefinition for more information on using the DescribeCostCategoryDefinition
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 DescribeCostCategoryDefinitionRequest method.
198//    req, resp := client.DescribeCostCategoryDefinitionRequest(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/DescribeCostCategoryDefinition
206func (c *CostExplorer) DescribeCostCategoryDefinitionRequest(input *DescribeCostCategoryDefinitionInput) (req *request.Request, output *DescribeCostCategoryDefinitionOutput) {
207	op := &request.Operation{
208		Name:       opDescribeCostCategoryDefinition,
209		HTTPMethod: "POST",
210		HTTPPath:   "/",
211	}
212
213	if input == nil {
214		input = &DescribeCostCategoryDefinitionInput{}
215	}
216
217	output = &DescribeCostCategoryDefinitionOutput{}
218	req = c.newRequest(op, input, output)
219	return
220}
221
222// DescribeCostCategoryDefinition API operation for AWS Cost Explorer Service.
223//
224// Returns the name, ARN, rules, definition, and effective dates of a Cost Category
225// that's defined in the account.
226//
227// You have the option to use EffectiveOn to return a Cost Category that is
228// active on a specific date. If there is no EffectiveOn specified, you’ll
229// see a Cost Category that is effective on the current date. If Cost Category
230// is still effective, EffectiveEnd is omitted in the response.
231//
232// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
233// with awserr.Error's Code and Message methods to get detailed information about
234// the error.
235//
236// See the AWS API reference guide for AWS Cost Explorer Service's
237// API operation DescribeCostCategoryDefinition for usage and error information.
238//
239// Returned Error Types:
240//   * ResourceNotFoundException
241//   The specified ARN in the request doesn't exist.
242//
243//   * LimitExceededException
244//   You made too many calls in a short period of time. Try again later.
245//
246// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DescribeCostCategoryDefinition
247func (c *CostExplorer) DescribeCostCategoryDefinition(input *DescribeCostCategoryDefinitionInput) (*DescribeCostCategoryDefinitionOutput, error) {
248	req, out := c.DescribeCostCategoryDefinitionRequest(input)
249	return out, req.Send()
250}
251
252// DescribeCostCategoryDefinitionWithContext is the same as DescribeCostCategoryDefinition with the addition of
253// the ability to pass a context and additional request options.
254//
255// See DescribeCostCategoryDefinition for details on how to use this API operation.
256//
257// The context must be non-nil and will be used for request cancellation. If
258// the context is nil a panic will occur. In the future the SDK may create
259// sub-contexts for http.Requests. See https://golang.org/pkg/context/
260// for more information on using Contexts.
261func (c *CostExplorer) DescribeCostCategoryDefinitionWithContext(ctx aws.Context, input *DescribeCostCategoryDefinitionInput, opts ...request.Option) (*DescribeCostCategoryDefinitionOutput, error) {
262	req, out := c.DescribeCostCategoryDefinitionRequest(input)
263	req.SetContext(ctx)
264	req.ApplyOptions(opts...)
265	return out, req.Send()
266}
267
268const opGetCostAndUsage = "GetCostAndUsage"
269
270// GetCostAndUsageRequest generates a "aws/request.Request" representing the
271// client's request for the GetCostAndUsage operation. The "output" return
272// value will be populated with the request's response once the request completes
273// successfully.
274//
275// Use "Send" method on the returned Request to send the API call to the service.
276// the "output" return value is not valid until after Send returns without error.
277//
278// See GetCostAndUsage for more information on using the GetCostAndUsage
279// API call, and error handling.
280//
281// This method is useful when you want to inject custom logic or configuration
282// into the SDK's request lifecycle. Such as custom headers, or retry logic.
283//
284//
285//    // Example sending a request using the GetCostAndUsageRequest method.
286//    req, resp := client.GetCostAndUsageRequest(params)
287//
288//    err := req.Send()
289//    if err == nil { // resp is now filled
290//        fmt.Println(resp)
291//    }
292//
293// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsage
294func (c *CostExplorer) GetCostAndUsageRequest(input *GetCostAndUsageInput) (req *request.Request, output *GetCostAndUsageOutput) {
295	op := &request.Operation{
296		Name:       opGetCostAndUsage,
297		HTTPMethod: "POST",
298		HTTPPath:   "/",
299	}
300
301	if input == nil {
302		input = &GetCostAndUsageInput{}
303	}
304
305	output = &GetCostAndUsageOutput{}
306	req = c.newRequest(op, input, output)
307	return
308}
309
310// GetCostAndUsage API operation for AWS Cost Explorer Service.
311//
312// Retrieves cost and usage metrics for your account. You can specify which
313// cost and usage-related metric, such as BlendedCosts or UsageQuantity, that
314// you want the request to return. You can also filter and group your data by
315// various dimensions, such as SERVICE or AZ, in a specific time range. For
316// a complete list of valid dimensions, see the GetDimensionValues (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_GetDimensionValues.html)
317// operation. Master accounts in an organization in AWS Organizations have access
318// to all member accounts.
319//
320// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
321// with awserr.Error's Code and Message methods to get detailed information about
322// the error.
323//
324// See the AWS API reference guide for AWS Cost Explorer Service's
325// API operation GetCostAndUsage for usage and error information.
326//
327// Returned Error Types:
328//   * LimitExceededException
329//   You made too many calls in a short period of time. Try again later.
330//
331//   * BillExpirationException
332//   The requested report expired. Update the date interval and try again.
333//
334//   * DataUnavailableException
335//   The requested data is unavailable.
336//
337//   * InvalidNextTokenException
338//   The pagination token is invalid. Try again without a pagination token.
339//
340//   * RequestChangedException
341//   Your request parameters changed between pages. Try again with the old parameters
342//   or without a pagination token.
343//
344// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsage
345func (c *CostExplorer) GetCostAndUsage(input *GetCostAndUsageInput) (*GetCostAndUsageOutput, error) {
346	req, out := c.GetCostAndUsageRequest(input)
347	return out, req.Send()
348}
349
350// GetCostAndUsageWithContext is the same as GetCostAndUsage with the addition of
351// the ability to pass a context and additional request options.
352//
353// See GetCostAndUsage for details on how to use this API operation.
354//
355// The context must be non-nil and will be used for request cancellation. If
356// the context is nil a panic will occur. In the future the SDK may create
357// sub-contexts for http.Requests. See https://golang.org/pkg/context/
358// for more information on using Contexts.
359func (c *CostExplorer) GetCostAndUsageWithContext(ctx aws.Context, input *GetCostAndUsageInput, opts ...request.Option) (*GetCostAndUsageOutput, error) {
360	req, out := c.GetCostAndUsageRequest(input)
361	req.SetContext(ctx)
362	req.ApplyOptions(opts...)
363	return out, req.Send()
364}
365
366const opGetCostAndUsageWithResources = "GetCostAndUsageWithResources"
367
368// GetCostAndUsageWithResourcesRequest generates a "aws/request.Request" representing the
369// client's request for the GetCostAndUsageWithResources operation. The "output" return
370// value will be populated with the request's response once the request completes
371// successfully.
372//
373// Use "Send" method on the returned Request to send the API call to the service.
374// the "output" return value is not valid until after Send returns without error.
375//
376// See GetCostAndUsageWithResources for more information on using the GetCostAndUsageWithResources
377// API call, and error handling.
378//
379// This method is useful when you want to inject custom logic or configuration
380// into the SDK's request lifecycle. Such as custom headers, or retry logic.
381//
382//
383//    // Example sending a request using the GetCostAndUsageWithResourcesRequest method.
384//    req, resp := client.GetCostAndUsageWithResourcesRequest(params)
385//
386//    err := req.Send()
387//    if err == nil { // resp is now filled
388//        fmt.Println(resp)
389//    }
390//
391// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsageWithResources
392func (c *CostExplorer) GetCostAndUsageWithResourcesRequest(input *GetCostAndUsageWithResourcesInput) (req *request.Request, output *GetCostAndUsageWithResourcesOutput) {
393	op := &request.Operation{
394		Name:       opGetCostAndUsageWithResources,
395		HTTPMethod: "POST",
396		HTTPPath:   "/",
397	}
398
399	if input == nil {
400		input = &GetCostAndUsageWithResourcesInput{}
401	}
402
403	output = &GetCostAndUsageWithResourcesOutput{}
404	req = c.newRequest(op, input, output)
405	return
406}
407
408// GetCostAndUsageWithResources API operation for AWS Cost Explorer Service.
409//
410// Retrieves cost and usage metrics with resources for your account. You can
411// specify which cost and usage-related metric, such as BlendedCosts or UsageQuantity,
412// that you want the request to return. You can also filter and group your data
413// by various dimensions, such as SERVICE or AZ, in a specific time range. For
414// a complete list of valid dimensions, see the GetDimensionValues (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_GetDimensionValues.html)
415// operation. Master accounts in an organization in AWS Organizations have access
416// to all member accounts. This API is currently available for the Amazon Elastic
417// Compute Cloud – Compute service only.
418//
419// This is an opt-in only feature. You can enable this feature from the Cost
420// Explorer Settings page. For information on how to access the Settings page,
421// see Controlling Access for Cost Explorer (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/ce-access.html)
422// in the AWS Billing and Cost Management User Guide.
423//
424// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
425// with awserr.Error's Code and Message methods to get detailed information about
426// the error.
427//
428// See the AWS API reference guide for AWS Cost Explorer Service's
429// API operation GetCostAndUsageWithResources for usage and error information.
430//
431// Returned Error Types:
432//   * DataUnavailableException
433//   The requested data is unavailable.
434//
435//   * LimitExceededException
436//   You made too many calls in a short period of time. Try again later.
437//
438//   * BillExpirationException
439//   The requested report expired. Update the date interval and try again.
440//
441//   * InvalidNextTokenException
442//   The pagination token is invalid. Try again without a pagination token.
443//
444//   * RequestChangedException
445//   Your request parameters changed between pages. Try again with the old parameters
446//   or without a pagination token.
447//
448// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsageWithResources
449func (c *CostExplorer) GetCostAndUsageWithResources(input *GetCostAndUsageWithResourcesInput) (*GetCostAndUsageWithResourcesOutput, error) {
450	req, out := c.GetCostAndUsageWithResourcesRequest(input)
451	return out, req.Send()
452}
453
454// GetCostAndUsageWithResourcesWithContext is the same as GetCostAndUsageWithResources with the addition of
455// the ability to pass a context and additional request options.
456//
457// See GetCostAndUsageWithResources for details on how to use this API operation.
458//
459// The context must be non-nil and will be used for request cancellation. If
460// the context is nil a panic will occur. In the future the SDK may create
461// sub-contexts for http.Requests. See https://golang.org/pkg/context/
462// for more information on using Contexts.
463func (c *CostExplorer) GetCostAndUsageWithResourcesWithContext(ctx aws.Context, input *GetCostAndUsageWithResourcesInput, opts ...request.Option) (*GetCostAndUsageWithResourcesOutput, error) {
464	req, out := c.GetCostAndUsageWithResourcesRequest(input)
465	req.SetContext(ctx)
466	req.ApplyOptions(opts...)
467	return out, req.Send()
468}
469
470const opGetCostForecast = "GetCostForecast"
471
472// GetCostForecastRequest generates a "aws/request.Request" representing the
473// client's request for the GetCostForecast operation. The "output" return
474// value will be populated with the request's response once the request completes
475// successfully.
476//
477// Use "Send" method on the returned Request to send the API call to the service.
478// the "output" return value is not valid until after Send returns without error.
479//
480// See GetCostForecast for more information on using the GetCostForecast
481// API call, and error handling.
482//
483// This method is useful when you want to inject custom logic or configuration
484// into the SDK's request lifecycle. Such as custom headers, or retry logic.
485//
486//
487//    // Example sending a request using the GetCostForecastRequest method.
488//    req, resp := client.GetCostForecastRequest(params)
489//
490//    err := req.Send()
491//    if err == nil { // resp is now filled
492//        fmt.Println(resp)
493//    }
494//
495// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostForecast
496func (c *CostExplorer) GetCostForecastRequest(input *GetCostForecastInput) (req *request.Request, output *GetCostForecastOutput) {
497	op := &request.Operation{
498		Name:       opGetCostForecast,
499		HTTPMethod: "POST",
500		HTTPPath:   "/",
501	}
502
503	if input == nil {
504		input = &GetCostForecastInput{}
505	}
506
507	output = &GetCostForecastOutput{}
508	req = c.newRequest(op, input, output)
509	return
510}
511
512// GetCostForecast API operation for AWS Cost Explorer Service.
513//
514// Retrieves a forecast for how much Amazon Web Services predicts that you will
515// spend over the forecast time period that you select, based on your past costs.
516//
517// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
518// with awserr.Error's Code and Message methods to get detailed information about
519// the error.
520//
521// See the AWS API reference guide for AWS Cost Explorer Service's
522// API operation GetCostForecast for usage and error information.
523//
524// Returned Error Types:
525//   * LimitExceededException
526//   You made too many calls in a short period of time. Try again later.
527//
528//   * DataUnavailableException
529//   The requested data is unavailable.
530//
531// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostForecast
532func (c *CostExplorer) GetCostForecast(input *GetCostForecastInput) (*GetCostForecastOutput, error) {
533	req, out := c.GetCostForecastRequest(input)
534	return out, req.Send()
535}
536
537// GetCostForecastWithContext is the same as GetCostForecast with the addition of
538// the ability to pass a context and additional request options.
539//
540// See GetCostForecast for details on how to use this API operation.
541//
542// The context must be non-nil and will be used for request cancellation. If
543// the context is nil a panic will occur. In the future the SDK may create
544// sub-contexts for http.Requests. See https://golang.org/pkg/context/
545// for more information on using Contexts.
546func (c *CostExplorer) GetCostForecastWithContext(ctx aws.Context, input *GetCostForecastInput, opts ...request.Option) (*GetCostForecastOutput, error) {
547	req, out := c.GetCostForecastRequest(input)
548	req.SetContext(ctx)
549	req.ApplyOptions(opts...)
550	return out, req.Send()
551}
552
553const opGetDimensionValues = "GetDimensionValues"
554
555// GetDimensionValuesRequest generates a "aws/request.Request" representing the
556// client's request for the GetDimensionValues operation. The "output" return
557// value will be populated with the request's response once the request completes
558// successfully.
559//
560// Use "Send" method on the returned Request to send the API call to the service.
561// the "output" return value is not valid until after Send returns without error.
562//
563// See GetDimensionValues for more information on using the GetDimensionValues
564// API call, and error handling.
565//
566// This method is useful when you want to inject custom logic or configuration
567// into the SDK's request lifecycle. Such as custom headers, or retry logic.
568//
569//
570//    // Example sending a request using the GetDimensionValuesRequest method.
571//    req, resp := client.GetDimensionValuesRequest(params)
572//
573//    err := req.Send()
574//    if err == nil { // resp is now filled
575//        fmt.Println(resp)
576//    }
577//
578// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetDimensionValues
579func (c *CostExplorer) GetDimensionValuesRequest(input *GetDimensionValuesInput) (req *request.Request, output *GetDimensionValuesOutput) {
580	op := &request.Operation{
581		Name:       opGetDimensionValues,
582		HTTPMethod: "POST",
583		HTTPPath:   "/",
584	}
585
586	if input == nil {
587		input = &GetDimensionValuesInput{}
588	}
589
590	output = &GetDimensionValuesOutput{}
591	req = c.newRequest(op, input, output)
592	return
593}
594
595// GetDimensionValues API operation for AWS Cost Explorer Service.
596//
597// Retrieves all available filter values for a specified filter over a period
598// of time. You can search the dimension values for an arbitrary string.
599//
600// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
601// with awserr.Error's Code and Message methods to get detailed information about
602// the error.
603//
604// See the AWS API reference guide for AWS Cost Explorer Service's
605// API operation GetDimensionValues for usage and error information.
606//
607// Returned Error Types:
608//   * LimitExceededException
609//   You made too many calls in a short period of time. Try again later.
610//
611//   * BillExpirationException
612//   The requested report expired. Update the date interval and try again.
613//
614//   * DataUnavailableException
615//   The requested data is unavailable.
616//
617//   * InvalidNextTokenException
618//   The pagination token is invalid. Try again without a pagination token.
619//
620//   * RequestChangedException
621//   Your request parameters changed between pages. Try again with the old parameters
622//   or without a pagination token.
623//
624// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetDimensionValues
625func (c *CostExplorer) GetDimensionValues(input *GetDimensionValuesInput) (*GetDimensionValuesOutput, error) {
626	req, out := c.GetDimensionValuesRequest(input)
627	return out, req.Send()
628}
629
630// GetDimensionValuesWithContext is the same as GetDimensionValues with the addition of
631// the ability to pass a context and additional request options.
632//
633// See GetDimensionValues for details on how to use this API operation.
634//
635// The context must be non-nil and will be used for request cancellation. If
636// the context is nil a panic will occur. In the future the SDK may create
637// sub-contexts for http.Requests. See https://golang.org/pkg/context/
638// for more information on using Contexts.
639func (c *CostExplorer) GetDimensionValuesWithContext(ctx aws.Context, input *GetDimensionValuesInput, opts ...request.Option) (*GetDimensionValuesOutput, error) {
640	req, out := c.GetDimensionValuesRequest(input)
641	req.SetContext(ctx)
642	req.ApplyOptions(opts...)
643	return out, req.Send()
644}
645
646const opGetReservationCoverage = "GetReservationCoverage"
647
648// GetReservationCoverageRequest generates a "aws/request.Request" representing the
649// client's request for the GetReservationCoverage operation. The "output" return
650// value will be populated with the request's response once the request completes
651// successfully.
652//
653// Use "Send" method on the returned Request to send the API call to the service.
654// the "output" return value is not valid until after Send returns without error.
655//
656// See GetReservationCoverage for more information on using the GetReservationCoverage
657// API call, and error handling.
658//
659// This method is useful when you want to inject custom logic or configuration
660// into the SDK's request lifecycle. Such as custom headers, or retry logic.
661//
662//
663//    // Example sending a request using the GetReservationCoverageRequest method.
664//    req, resp := client.GetReservationCoverageRequest(params)
665//
666//    err := req.Send()
667//    if err == nil { // resp is now filled
668//        fmt.Println(resp)
669//    }
670//
671// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationCoverage
672func (c *CostExplorer) GetReservationCoverageRequest(input *GetReservationCoverageInput) (req *request.Request, output *GetReservationCoverageOutput) {
673	op := &request.Operation{
674		Name:       opGetReservationCoverage,
675		HTTPMethod: "POST",
676		HTTPPath:   "/",
677	}
678
679	if input == nil {
680		input = &GetReservationCoverageInput{}
681	}
682
683	output = &GetReservationCoverageOutput{}
684	req = c.newRequest(op, input, output)
685	return
686}
687
688// GetReservationCoverage API operation for AWS Cost Explorer Service.
689//
690// Retrieves the reservation coverage for your account. This enables you to
691// see how much of your Amazon Elastic Compute Cloud, Amazon ElastiCache, Amazon
692// Relational Database Service, or Amazon Redshift usage is covered by a reservation.
693// An organization's master account can see the coverage of the associated member
694// accounts. This supports dimensions, Cost Categories, and nested expressions.
695// For any time period, you can filter data about reservation usage by the following
696// dimensions:
697//
698//    * AZ
699//
700//    * CACHE_ENGINE
701//
702//    * DATABASE_ENGINE
703//
704//    * DEPLOYMENT_OPTION
705//
706//    * INSTANCE_TYPE
707//
708//    * LINKED_ACCOUNT
709//
710//    * OPERATING_SYSTEM
711//
712//    * PLATFORM
713//
714//    * REGION
715//
716//    * SERVICE
717//
718//    * TAG
719//
720//    * TENANCY
721//
722// To determine valid values for a dimension, use the GetDimensionValues operation.
723//
724// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
725// with awserr.Error's Code and Message methods to get detailed information about
726// the error.
727//
728// See the AWS API reference guide for AWS Cost Explorer Service's
729// API operation GetReservationCoverage for usage and error information.
730//
731// Returned Error Types:
732//   * LimitExceededException
733//   You made too many calls in a short period of time. Try again later.
734//
735//   * DataUnavailableException
736//   The requested data is unavailable.
737//
738//   * InvalidNextTokenException
739//   The pagination token is invalid. Try again without a pagination token.
740//
741// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationCoverage
742func (c *CostExplorer) GetReservationCoverage(input *GetReservationCoverageInput) (*GetReservationCoverageOutput, error) {
743	req, out := c.GetReservationCoverageRequest(input)
744	return out, req.Send()
745}
746
747// GetReservationCoverageWithContext is the same as GetReservationCoverage with the addition of
748// the ability to pass a context and additional request options.
749//
750// See GetReservationCoverage for details on how to use this API operation.
751//
752// The context must be non-nil and will be used for request cancellation. If
753// the context is nil a panic will occur. In the future the SDK may create
754// sub-contexts for http.Requests. See https://golang.org/pkg/context/
755// for more information on using Contexts.
756func (c *CostExplorer) GetReservationCoverageWithContext(ctx aws.Context, input *GetReservationCoverageInput, opts ...request.Option) (*GetReservationCoverageOutput, error) {
757	req, out := c.GetReservationCoverageRequest(input)
758	req.SetContext(ctx)
759	req.ApplyOptions(opts...)
760	return out, req.Send()
761}
762
763const opGetReservationPurchaseRecommendation = "GetReservationPurchaseRecommendation"
764
765// GetReservationPurchaseRecommendationRequest generates a "aws/request.Request" representing the
766// client's request for the GetReservationPurchaseRecommendation operation. The "output" return
767// value will be populated with the request's response once the request completes
768// successfully.
769//
770// Use "Send" method on the returned Request to send the API call to the service.
771// the "output" return value is not valid until after Send returns without error.
772//
773// See GetReservationPurchaseRecommendation for more information on using the GetReservationPurchaseRecommendation
774// API call, and error handling.
775//
776// This method is useful when you want to inject custom logic or configuration
777// into the SDK's request lifecycle. Such as custom headers, or retry logic.
778//
779//
780//    // Example sending a request using the GetReservationPurchaseRecommendationRequest method.
781//    req, resp := client.GetReservationPurchaseRecommendationRequest(params)
782//
783//    err := req.Send()
784//    if err == nil { // resp is now filled
785//        fmt.Println(resp)
786//    }
787//
788// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationPurchaseRecommendation
789func (c *CostExplorer) GetReservationPurchaseRecommendationRequest(input *GetReservationPurchaseRecommendationInput) (req *request.Request, output *GetReservationPurchaseRecommendationOutput) {
790	op := &request.Operation{
791		Name:       opGetReservationPurchaseRecommendation,
792		HTTPMethod: "POST",
793		HTTPPath:   "/",
794	}
795
796	if input == nil {
797		input = &GetReservationPurchaseRecommendationInput{}
798	}
799
800	output = &GetReservationPurchaseRecommendationOutput{}
801	req = c.newRequest(op, input, output)
802	return
803}
804
805// GetReservationPurchaseRecommendation API operation for AWS Cost Explorer Service.
806//
807// Gets recommendations for which reservations to purchase. These recommendations
808// could help you reduce your costs. Reservations provide a discounted hourly
809// rate (up to 75%) compared to On-Demand pricing.
810//
811// AWS generates your recommendations by identifying your On-Demand usage during
812// a specific time period and collecting your usage into categories that are
813// eligible for a reservation. After AWS has these categories, it simulates
814// every combination of reservations in each category of usage to identify the
815// best number of each type of RI to purchase to maximize your estimated savings.
816//
817// For example, AWS automatically aggregates your Amazon EC2 Linux, shared tenancy,
818// and c4 family usage in the US West (Oregon) Region and recommends that you
819// buy size-flexible regional reservations to apply to the c4 family usage.
820// AWS recommends the smallest size instance in an instance family. This makes
821// it easier to purchase a size-flexible RI. AWS also shows the equal number
822// of normalized units so that you can purchase any instance size that you want.
823// For this example, your RI recommendation would be for c4.large because that
824// is the smallest size instance in the c4 instance family.
825//
826// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
827// with awserr.Error's Code and Message methods to get detailed information about
828// the error.
829//
830// See the AWS API reference guide for AWS Cost Explorer Service's
831// API operation GetReservationPurchaseRecommendation for usage and error information.
832//
833// Returned Error Types:
834//   * LimitExceededException
835//   You made too many calls in a short period of time. Try again later.
836//
837//   * DataUnavailableException
838//   The requested data is unavailable.
839//
840//   * InvalidNextTokenException
841//   The pagination token is invalid. Try again without a pagination token.
842//
843// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationPurchaseRecommendation
844func (c *CostExplorer) GetReservationPurchaseRecommendation(input *GetReservationPurchaseRecommendationInput) (*GetReservationPurchaseRecommendationOutput, error) {
845	req, out := c.GetReservationPurchaseRecommendationRequest(input)
846	return out, req.Send()
847}
848
849// GetReservationPurchaseRecommendationWithContext is the same as GetReservationPurchaseRecommendation with the addition of
850// the ability to pass a context and additional request options.
851//
852// See GetReservationPurchaseRecommendation for details on how to use this API operation.
853//
854// The context must be non-nil and will be used for request cancellation. If
855// the context is nil a panic will occur. In the future the SDK may create
856// sub-contexts for http.Requests. See https://golang.org/pkg/context/
857// for more information on using Contexts.
858func (c *CostExplorer) GetReservationPurchaseRecommendationWithContext(ctx aws.Context, input *GetReservationPurchaseRecommendationInput, opts ...request.Option) (*GetReservationPurchaseRecommendationOutput, error) {
859	req, out := c.GetReservationPurchaseRecommendationRequest(input)
860	req.SetContext(ctx)
861	req.ApplyOptions(opts...)
862	return out, req.Send()
863}
864
865const opGetReservationUtilization = "GetReservationUtilization"
866
867// GetReservationUtilizationRequest generates a "aws/request.Request" representing the
868// client's request for the GetReservationUtilization operation. The "output" return
869// value will be populated with the request's response once the request completes
870// successfully.
871//
872// Use "Send" method on the returned Request to send the API call to the service.
873// the "output" return value is not valid until after Send returns without error.
874//
875// See GetReservationUtilization for more information on using the GetReservationUtilization
876// API call, and error handling.
877//
878// This method is useful when you want to inject custom logic or configuration
879// into the SDK's request lifecycle. Such as custom headers, or retry logic.
880//
881//
882//    // Example sending a request using the GetReservationUtilizationRequest method.
883//    req, resp := client.GetReservationUtilizationRequest(params)
884//
885//    err := req.Send()
886//    if err == nil { // resp is now filled
887//        fmt.Println(resp)
888//    }
889//
890// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationUtilization
891func (c *CostExplorer) GetReservationUtilizationRequest(input *GetReservationUtilizationInput) (req *request.Request, output *GetReservationUtilizationOutput) {
892	op := &request.Operation{
893		Name:       opGetReservationUtilization,
894		HTTPMethod: "POST",
895		HTTPPath:   "/",
896	}
897
898	if input == nil {
899		input = &GetReservationUtilizationInput{}
900	}
901
902	output = &GetReservationUtilizationOutput{}
903	req = c.newRequest(op, input, output)
904	return
905}
906
907// GetReservationUtilization API operation for AWS Cost Explorer Service.
908//
909// Retrieves the reservation utilization for your account. Master accounts in
910// an organization have access to member accounts. You can filter data by dimensions
911// in a time period. You can use GetDimensionValues to determine the possible
912// dimension values. Currently, you can group only by SUBSCRIPTION_ID.
913//
914// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
915// with awserr.Error's Code and Message methods to get detailed information about
916// the error.
917//
918// See the AWS API reference guide for AWS Cost Explorer Service's
919// API operation GetReservationUtilization for usage and error information.
920//
921// Returned Error Types:
922//   * LimitExceededException
923//   You made too many calls in a short period of time. Try again later.
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// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationUtilization
932func (c *CostExplorer) GetReservationUtilization(input *GetReservationUtilizationInput) (*GetReservationUtilizationOutput, error) {
933	req, out := c.GetReservationUtilizationRequest(input)
934	return out, req.Send()
935}
936
937// GetReservationUtilizationWithContext is the same as GetReservationUtilization with the addition of
938// the ability to pass a context and additional request options.
939//
940// See GetReservationUtilization for details on how to use this API operation.
941//
942// The context must be non-nil and will be used for request cancellation. If
943// the context is nil a panic will occur. In the future the SDK may create
944// sub-contexts for http.Requests. See https://golang.org/pkg/context/
945// for more information on using Contexts.
946func (c *CostExplorer) GetReservationUtilizationWithContext(ctx aws.Context, input *GetReservationUtilizationInput, opts ...request.Option) (*GetReservationUtilizationOutput, error) {
947	req, out := c.GetReservationUtilizationRequest(input)
948	req.SetContext(ctx)
949	req.ApplyOptions(opts...)
950	return out, req.Send()
951}
952
953const opGetRightsizingRecommendation = "GetRightsizingRecommendation"
954
955// GetRightsizingRecommendationRequest generates a "aws/request.Request" representing the
956// client's request for the GetRightsizingRecommendation operation. The "output" return
957// value will be populated with the request's response once the request completes
958// successfully.
959//
960// Use "Send" method on the returned Request to send the API call to the service.
961// the "output" return value is not valid until after Send returns without error.
962//
963// See GetRightsizingRecommendation for more information on using the GetRightsizingRecommendation
964// API call, and error handling.
965//
966// This method is useful when you want to inject custom logic or configuration
967// into the SDK's request lifecycle. Such as custom headers, or retry logic.
968//
969//
970//    // Example sending a request using the GetRightsizingRecommendationRequest method.
971//    req, resp := client.GetRightsizingRecommendationRequest(params)
972//
973//    err := req.Send()
974//    if err == nil { // resp is now filled
975//        fmt.Println(resp)
976//    }
977//
978// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetRightsizingRecommendation
979func (c *CostExplorer) GetRightsizingRecommendationRequest(input *GetRightsizingRecommendationInput) (req *request.Request, output *GetRightsizingRecommendationOutput) {
980	op := &request.Operation{
981		Name:       opGetRightsizingRecommendation,
982		HTTPMethod: "POST",
983		HTTPPath:   "/",
984	}
985
986	if input == nil {
987		input = &GetRightsizingRecommendationInput{}
988	}
989
990	output = &GetRightsizingRecommendationOutput{}
991	req = c.newRequest(op, input, output)
992	return
993}
994
995// GetRightsizingRecommendation API operation for AWS Cost Explorer Service.
996//
997// Creates recommendations that help you save cost by identifying idle and underutilized
998// Amazon EC2 instances.
999//
1000// Recommendations are generated to either downsize or terminate instances,
1001// along with providing savings detail and metrics. For details on calculation
1002// and function, see Optimizing Your Cost with Rightsizing Recommendations (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/ce-rightsizing.html)
1003// in the AWS Billing and Cost Management User Guide.
1004//
1005// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1006// with awserr.Error's Code and Message methods to get detailed information about
1007// the error.
1008//
1009// See the AWS API reference guide for AWS Cost Explorer Service's
1010// API operation GetRightsizingRecommendation for usage and error information.
1011//
1012// Returned Error Types:
1013//   * LimitExceededException
1014//   You made too many calls in a short period of time. Try again later.
1015//
1016//   * InvalidNextTokenException
1017//   The pagination token is invalid. Try again without a pagination token.
1018//
1019// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetRightsizingRecommendation
1020func (c *CostExplorer) GetRightsizingRecommendation(input *GetRightsizingRecommendationInput) (*GetRightsizingRecommendationOutput, error) {
1021	req, out := c.GetRightsizingRecommendationRequest(input)
1022	return out, req.Send()
1023}
1024
1025// GetRightsizingRecommendationWithContext is the same as GetRightsizingRecommendation with the addition of
1026// the ability to pass a context and additional request options.
1027//
1028// See GetRightsizingRecommendation for details on how to use this API operation.
1029//
1030// The context must be non-nil and will be used for request cancellation. If
1031// the context is nil a panic will occur. In the future the SDK may create
1032// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1033// for more information on using Contexts.
1034func (c *CostExplorer) GetRightsizingRecommendationWithContext(ctx aws.Context, input *GetRightsizingRecommendationInput, opts ...request.Option) (*GetRightsizingRecommendationOutput, error) {
1035	req, out := c.GetRightsizingRecommendationRequest(input)
1036	req.SetContext(ctx)
1037	req.ApplyOptions(opts...)
1038	return out, req.Send()
1039}
1040
1041const opGetSavingsPlansCoverage = "GetSavingsPlansCoverage"
1042
1043// GetSavingsPlansCoverageRequest generates a "aws/request.Request" representing the
1044// client's request for the GetSavingsPlansCoverage operation. The "output" return
1045// value will be populated with the request's response once the request completes
1046// successfully.
1047//
1048// Use "Send" method on the returned Request to send the API call to the service.
1049// the "output" return value is not valid until after Send returns without error.
1050//
1051// See GetSavingsPlansCoverage for more information on using the GetSavingsPlansCoverage
1052// API call, and error handling.
1053//
1054// This method is useful when you want to inject custom logic or configuration
1055// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1056//
1057//
1058//    // Example sending a request using the GetSavingsPlansCoverageRequest method.
1059//    req, resp := client.GetSavingsPlansCoverageRequest(params)
1060//
1061//    err := req.Send()
1062//    if err == nil { // resp is now filled
1063//        fmt.Println(resp)
1064//    }
1065//
1066// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansCoverage
1067func (c *CostExplorer) GetSavingsPlansCoverageRequest(input *GetSavingsPlansCoverageInput) (req *request.Request, output *GetSavingsPlansCoverageOutput) {
1068	op := &request.Operation{
1069		Name:       opGetSavingsPlansCoverage,
1070		HTTPMethod: "POST",
1071		HTTPPath:   "/",
1072		Paginator: &request.Paginator{
1073			InputTokens:     []string{"NextToken"},
1074			OutputTokens:    []string{"NextToken"},
1075			LimitToken:      "MaxResults",
1076			TruncationToken: "",
1077		},
1078	}
1079
1080	if input == nil {
1081		input = &GetSavingsPlansCoverageInput{}
1082	}
1083
1084	output = &GetSavingsPlansCoverageOutput{}
1085	req = c.newRequest(op, input, output)
1086	return
1087}
1088
1089// GetSavingsPlansCoverage API operation for AWS Cost Explorer Service.
1090//
1091// Retrieves the Savings Plans covered for your account. This enables you to
1092// see how much of your cost is covered by a Savings Plan. An organization’s
1093// master account can see the coverage of the associated member accounts. This
1094// supports dimensions, Cost Categories, and nested expressions. For any time
1095// period, you can filter data for Savings Plans usage with the following dimensions:
1096//
1097//    * LINKED_ACCOUNT
1098//
1099//    * REGION
1100//
1101//    * SERVICE
1102//
1103//    * INSTANCE_FAMILY
1104//
1105// To determine valid values for a dimension, use the GetDimensionValues operation.
1106//
1107// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1108// with awserr.Error's Code and Message methods to get detailed information about
1109// the error.
1110//
1111// See the AWS API reference guide for AWS Cost Explorer Service's
1112// API operation GetSavingsPlansCoverage for usage and error information.
1113//
1114// Returned Error Types:
1115//   * LimitExceededException
1116//   You made too many calls in a short period of time. Try again later.
1117//
1118//   * DataUnavailableException
1119//   The requested data is unavailable.
1120//
1121//   * InvalidNextTokenException
1122//   The pagination token is invalid. Try again without a pagination token.
1123//
1124// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansCoverage
1125func (c *CostExplorer) GetSavingsPlansCoverage(input *GetSavingsPlansCoverageInput) (*GetSavingsPlansCoverageOutput, error) {
1126	req, out := c.GetSavingsPlansCoverageRequest(input)
1127	return out, req.Send()
1128}
1129
1130// GetSavingsPlansCoverageWithContext is the same as GetSavingsPlansCoverage with the addition of
1131// the ability to pass a context and additional request options.
1132//
1133// See GetSavingsPlansCoverage for details on how to use this API operation.
1134//
1135// The context must be non-nil and will be used for request cancellation. If
1136// the context is nil a panic will occur. In the future the SDK may create
1137// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1138// for more information on using Contexts.
1139func (c *CostExplorer) GetSavingsPlansCoverageWithContext(ctx aws.Context, input *GetSavingsPlansCoverageInput, opts ...request.Option) (*GetSavingsPlansCoverageOutput, error) {
1140	req, out := c.GetSavingsPlansCoverageRequest(input)
1141	req.SetContext(ctx)
1142	req.ApplyOptions(opts...)
1143	return out, req.Send()
1144}
1145
1146// GetSavingsPlansCoveragePages iterates over the pages of a GetSavingsPlansCoverage operation,
1147// calling the "fn" function with the response data for each page. To stop
1148// iterating, return false from the fn function.
1149//
1150// See GetSavingsPlansCoverage method for more information on how to use this operation.
1151//
1152// Note: This operation can generate multiple requests to a service.
1153//
1154//    // Example iterating over at most 3 pages of a GetSavingsPlansCoverage operation.
1155//    pageNum := 0
1156//    err := client.GetSavingsPlansCoveragePages(params,
1157//        func(page *costexplorer.GetSavingsPlansCoverageOutput, lastPage bool) bool {
1158//            pageNum++
1159//            fmt.Println(page)
1160//            return pageNum <= 3
1161//        })
1162//
1163func (c *CostExplorer) GetSavingsPlansCoveragePages(input *GetSavingsPlansCoverageInput, fn func(*GetSavingsPlansCoverageOutput, bool) bool) error {
1164	return c.GetSavingsPlansCoveragePagesWithContext(aws.BackgroundContext(), input, fn)
1165}
1166
1167// GetSavingsPlansCoveragePagesWithContext same as GetSavingsPlansCoveragePages except
1168// it takes a Context and allows setting request options on the pages.
1169//
1170// The context must be non-nil and will be used for request cancellation. If
1171// the context is nil a panic will occur. In the future the SDK may create
1172// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1173// for more information on using Contexts.
1174func (c *CostExplorer) GetSavingsPlansCoveragePagesWithContext(ctx aws.Context, input *GetSavingsPlansCoverageInput, fn func(*GetSavingsPlansCoverageOutput, bool) bool, opts ...request.Option) error {
1175	p := request.Pagination{
1176		NewRequest: func() (*request.Request, error) {
1177			var inCpy *GetSavingsPlansCoverageInput
1178			if input != nil {
1179				tmp := *input
1180				inCpy = &tmp
1181			}
1182			req, _ := c.GetSavingsPlansCoverageRequest(inCpy)
1183			req.SetContext(ctx)
1184			req.ApplyOptions(opts...)
1185			return req, nil
1186		},
1187	}
1188
1189	for p.Next() {
1190		if !fn(p.Page().(*GetSavingsPlansCoverageOutput), !p.HasNextPage()) {
1191			break
1192		}
1193	}
1194
1195	return p.Err()
1196}
1197
1198const opGetSavingsPlansPurchaseRecommendation = "GetSavingsPlansPurchaseRecommendation"
1199
1200// GetSavingsPlansPurchaseRecommendationRequest generates a "aws/request.Request" representing the
1201// client's request for the GetSavingsPlansPurchaseRecommendation operation. The "output" return
1202// value will be populated with the request's response once the request completes
1203// successfully.
1204//
1205// Use "Send" method on the returned Request to send the API call to the service.
1206// the "output" return value is not valid until after Send returns without error.
1207//
1208// See GetSavingsPlansPurchaseRecommendation for more information on using the GetSavingsPlansPurchaseRecommendation
1209// API call, and error handling.
1210//
1211// This method is useful when you want to inject custom logic or configuration
1212// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1213//
1214//
1215//    // Example sending a request using the GetSavingsPlansPurchaseRecommendationRequest method.
1216//    req, resp := client.GetSavingsPlansPurchaseRecommendationRequest(params)
1217//
1218//    err := req.Send()
1219//    if err == nil { // resp is now filled
1220//        fmt.Println(resp)
1221//    }
1222//
1223// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansPurchaseRecommendation
1224func (c *CostExplorer) GetSavingsPlansPurchaseRecommendationRequest(input *GetSavingsPlansPurchaseRecommendationInput) (req *request.Request, output *GetSavingsPlansPurchaseRecommendationOutput) {
1225	op := &request.Operation{
1226		Name:       opGetSavingsPlansPurchaseRecommendation,
1227		HTTPMethod: "POST",
1228		HTTPPath:   "/",
1229	}
1230
1231	if input == nil {
1232		input = &GetSavingsPlansPurchaseRecommendationInput{}
1233	}
1234
1235	output = &GetSavingsPlansPurchaseRecommendationOutput{}
1236	req = c.newRequest(op, input, output)
1237	return
1238}
1239
1240// GetSavingsPlansPurchaseRecommendation API operation for AWS Cost Explorer Service.
1241//
1242// Retrieves your request parameters, Savings Plan Recommendations Summary and
1243// Details.
1244//
1245// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1246// with awserr.Error's Code and Message methods to get detailed information about
1247// the error.
1248//
1249// See the AWS API reference guide for AWS Cost Explorer Service's
1250// API operation GetSavingsPlansPurchaseRecommendation for usage and error information.
1251//
1252// Returned Error Types:
1253//   * LimitExceededException
1254//   You made too many calls in a short period of time. Try again later.
1255//
1256//   * InvalidNextTokenException
1257//   The pagination token is invalid. Try again without a pagination token.
1258//
1259// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansPurchaseRecommendation
1260func (c *CostExplorer) GetSavingsPlansPurchaseRecommendation(input *GetSavingsPlansPurchaseRecommendationInput) (*GetSavingsPlansPurchaseRecommendationOutput, error) {
1261	req, out := c.GetSavingsPlansPurchaseRecommendationRequest(input)
1262	return out, req.Send()
1263}
1264
1265// GetSavingsPlansPurchaseRecommendationWithContext is the same as GetSavingsPlansPurchaseRecommendation with the addition of
1266// the ability to pass a context and additional request options.
1267//
1268// See GetSavingsPlansPurchaseRecommendation for details on how to use this API operation.
1269//
1270// The context must be non-nil and will be used for request cancellation. If
1271// the context is nil a panic will occur. In the future the SDK may create
1272// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1273// for more information on using Contexts.
1274func (c *CostExplorer) GetSavingsPlansPurchaseRecommendationWithContext(ctx aws.Context, input *GetSavingsPlansPurchaseRecommendationInput, opts ...request.Option) (*GetSavingsPlansPurchaseRecommendationOutput, error) {
1275	req, out := c.GetSavingsPlansPurchaseRecommendationRequest(input)
1276	req.SetContext(ctx)
1277	req.ApplyOptions(opts...)
1278	return out, req.Send()
1279}
1280
1281const opGetSavingsPlansUtilization = "GetSavingsPlansUtilization"
1282
1283// GetSavingsPlansUtilizationRequest generates a "aws/request.Request" representing the
1284// client's request for the GetSavingsPlansUtilization operation. The "output" return
1285// value will be populated with the request's response once the request completes
1286// successfully.
1287//
1288// Use "Send" method on the returned Request to send the API call to the service.
1289// the "output" return value is not valid until after Send returns without error.
1290//
1291// See GetSavingsPlansUtilization for more information on using the GetSavingsPlansUtilization
1292// API call, and error handling.
1293//
1294// This method is useful when you want to inject custom logic or configuration
1295// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1296//
1297//
1298//    // Example sending a request using the GetSavingsPlansUtilizationRequest method.
1299//    req, resp := client.GetSavingsPlansUtilizationRequest(params)
1300//
1301//    err := req.Send()
1302//    if err == nil { // resp is now filled
1303//        fmt.Println(resp)
1304//    }
1305//
1306// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansUtilization
1307func (c *CostExplorer) GetSavingsPlansUtilizationRequest(input *GetSavingsPlansUtilizationInput) (req *request.Request, output *GetSavingsPlansUtilizationOutput) {
1308	op := &request.Operation{
1309		Name:       opGetSavingsPlansUtilization,
1310		HTTPMethod: "POST",
1311		HTTPPath:   "/",
1312	}
1313
1314	if input == nil {
1315		input = &GetSavingsPlansUtilizationInput{}
1316	}
1317
1318	output = &GetSavingsPlansUtilizationOutput{}
1319	req = c.newRequest(op, input, output)
1320	return
1321}
1322
1323// GetSavingsPlansUtilization API operation for AWS Cost Explorer Service.
1324//
1325// Retrieves the Savings Plans utilization for your account across date ranges
1326// with daily or monthly granularity. Master accounts in an organization have
1327// access to member accounts. You can use GetDimensionValues in SAVINGS_PLANS
1328// to determine the possible dimension values.
1329//
1330// You cannot group by any dimension values for GetSavingsPlansUtilization.
1331//
1332// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1333// with awserr.Error's Code and Message methods to get detailed information about
1334// the error.
1335//
1336// See the AWS API reference guide for AWS Cost Explorer Service's
1337// API operation GetSavingsPlansUtilization for usage and error information.
1338//
1339// Returned Error Types:
1340//   * LimitExceededException
1341//   You made too many calls in a short period of time. Try again later.
1342//
1343//   * DataUnavailableException
1344//   The requested data is unavailable.
1345//
1346// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansUtilization
1347func (c *CostExplorer) GetSavingsPlansUtilization(input *GetSavingsPlansUtilizationInput) (*GetSavingsPlansUtilizationOutput, error) {
1348	req, out := c.GetSavingsPlansUtilizationRequest(input)
1349	return out, req.Send()
1350}
1351
1352// GetSavingsPlansUtilizationWithContext is the same as GetSavingsPlansUtilization with the addition of
1353// the ability to pass a context and additional request options.
1354//
1355// See GetSavingsPlansUtilization for details on how to use this API operation.
1356//
1357// The context must be non-nil and will be used for request cancellation. If
1358// the context is nil a panic will occur. In the future the SDK may create
1359// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1360// for more information on using Contexts.
1361func (c *CostExplorer) GetSavingsPlansUtilizationWithContext(ctx aws.Context, input *GetSavingsPlansUtilizationInput, opts ...request.Option) (*GetSavingsPlansUtilizationOutput, error) {
1362	req, out := c.GetSavingsPlansUtilizationRequest(input)
1363	req.SetContext(ctx)
1364	req.ApplyOptions(opts...)
1365	return out, req.Send()
1366}
1367
1368const opGetSavingsPlansUtilizationDetails = "GetSavingsPlansUtilizationDetails"
1369
1370// GetSavingsPlansUtilizationDetailsRequest generates a "aws/request.Request" representing the
1371// client's request for the GetSavingsPlansUtilizationDetails operation. The "output" return
1372// value will be populated with the request's response once the request completes
1373// successfully.
1374//
1375// Use "Send" method on the returned Request to send the API call to the service.
1376// the "output" return value is not valid until after Send returns without error.
1377//
1378// See GetSavingsPlansUtilizationDetails for more information on using the GetSavingsPlansUtilizationDetails
1379// API call, and error handling.
1380//
1381// This method is useful when you want to inject custom logic or configuration
1382// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1383//
1384//
1385//    // Example sending a request using the GetSavingsPlansUtilizationDetailsRequest method.
1386//    req, resp := client.GetSavingsPlansUtilizationDetailsRequest(params)
1387//
1388//    err := req.Send()
1389//    if err == nil { // resp is now filled
1390//        fmt.Println(resp)
1391//    }
1392//
1393// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansUtilizationDetails
1394func (c *CostExplorer) GetSavingsPlansUtilizationDetailsRequest(input *GetSavingsPlansUtilizationDetailsInput) (req *request.Request, output *GetSavingsPlansUtilizationDetailsOutput) {
1395	op := &request.Operation{
1396		Name:       opGetSavingsPlansUtilizationDetails,
1397		HTTPMethod: "POST",
1398		HTTPPath:   "/",
1399		Paginator: &request.Paginator{
1400			InputTokens:     []string{"NextToken"},
1401			OutputTokens:    []string{"NextToken"},
1402			LimitToken:      "MaxResults",
1403			TruncationToken: "",
1404		},
1405	}
1406
1407	if input == nil {
1408		input = &GetSavingsPlansUtilizationDetailsInput{}
1409	}
1410
1411	output = &GetSavingsPlansUtilizationDetailsOutput{}
1412	req = c.newRequest(op, input, output)
1413	return
1414}
1415
1416// GetSavingsPlansUtilizationDetails API operation for AWS Cost Explorer Service.
1417//
1418// Retrieves attribute data along with aggregate utilization and savings data
1419// for a given time period. This doesn't support granular or grouped data (daily/monthly)
1420// in response. You can't retrieve data by dates in a single response similar
1421// to GetSavingsPlanUtilization, but you have the option to make multiple calls
1422// to GetSavingsPlanUtilizationDetails by providing individual dates. You can
1423// use GetDimensionValues in SAVINGS_PLANS to determine the possible dimension
1424// values.
1425//
1426// GetSavingsPlanUtilizationDetails internally groups data by SavingsPlansArn.
1427//
1428// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1429// with awserr.Error's Code and Message methods to get detailed information about
1430// the error.
1431//
1432// See the AWS API reference guide for AWS Cost Explorer Service's
1433// API operation GetSavingsPlansUtilizationDetails for usage and error information.
1434//
1435// Returned Error Types:
1436//   * LimitExceededException
1437//   You made too many calls in a short period of time. Try again later.
1438//
1439//   * DataUnavailableException
1440//   The requested data is unavailable.
1441//
1442//   * InvalidNextTokenException
1443//   The pagination token is invalid. Try again without a pagination token.
1444//
1445// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansUtilizationDetails
1446func (c *CostExplorer) GetSavingsPlansUtilizationDetails(input *GetSavingsPlansUtilizationDetailsInput) (*GetSavingsPlansUtilizationDetailsOutput, error) {
1447	req, out := c.GetSavingsPlansUtilizationDetailsRequest(input)
1448	return out, req.Send()
1449}
1450
1451// GetSavingsPlansUtilizationDetailsWithContext is the same as GetSavingsPlansUtilizationDetails with the addition of
1452// the ability to pass a context and additional request options.
1453//
1454// See GetSavingsPlansUtilizationDetails for details on how to use this API operation.
1455//
1456// The context must be non-nil and will be used for request cancellation. If
1457// the context is nil a panic will occur. In the future the SDK may create
1458// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1459// for more information on using Contexts.
1460func (c *CostExplorer) GetSavingsPlansUtilizationDetailsWithContext(ctx aws.Context, input *GetSavingsPlansUtilizationDetailsInput, opts ...request.Option) (*GetSavingsPlansUtilizationDetailsOutput, error) {
1461	req, out := c.GetSavingsPlansUtilizationDetailsRequest(input)
1462	req.SetContext(ctx)
1463	req.ApplyOptions(opts...)
1464	return out, req.Send()
1465}
1466
1467// GetSavingsPlansUtilizationDetailsPages iterates over the pages of a GetSavingsPlansUtilizationDetails operation,
1468// calling the "fn" function with the response data for each page. To stop
1469// iterating, return false from the fn function.
1470//
1471// See GetSavingsPlansUtilizationDetails method for more information on how to use this operation.
1472//
1473// Note: This operation can generate multiple requests to a service.
1474//
1475//    // Example iterating over at most 3 pages of a GetSavingsPlansUtilizationDetails operation.
1476//    pageNum := 0
1477//    err := client.GetSavingsPlansUtilizationDetailsPages(params,
1478//        func(page *costexplorer.GetSavingsPlansUtilizationDetailsOutput, lastPage bool) bool {
1479//            pageNum++
1480//            fmt.Println(page)
1481//            return pageNum <= 3
1482//        })
1483//
1484func (c *CostExplorer) GetSavingsPlansUtilizationDetailsPages(input *GetSavingsPlansUtilizationDetailsInput, fn func(*GetSavingsPlansUtilizationDetailsOutput, bool) bool) error {
1485	return c.GetSavingsPlansUtilizationDetailsPagesWithContext(aws.BackgroundContext(), input, fn)
1486}
1487
1488// GetSavingsPlansUtilizationDetailsPagesWithContext same as GetSavingsPlansUtilizationDetailsPages except
1489// it takes a Context and allows setting request options on the pages.
1490//
1491// The context must be non-nil and will be used for request cancellation. If
1492// the context is nil a panic will occur. In the future the SDK may create
1493// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1494// for more information on using Contexts.
1495func (c *CostExplorer) GetSavingsPlansUtilizationDetailsPagesWithContext(ctx aws.Context, input *GetSavingsPlansUtilizationDetailsInput, fn func(*GetSavingsPlansUtilizationDetailsOutput, bool) bool, opts ...request.Option) error {
1496	p := request.Pagination{
1497		NewRequest: func() (*request.Request, error) {
1498			var inCpy *GetSavingsPlansUtilizationDetailsInput
1499			if input != nil {
1500				tmp := *input
1501				inCpy = &tmp
1502			}
1503			req, _ := c.GetSavingsPlansUtilizationDetailsRequest(inCpy)
1504			req.SetContext(ctx)
1505			req.ApplyOptions(opts...)
1506			return req, nil
1507		},
1508	}
1509
1510	for p.Next() {
1511		if !fn(p.Page().(*GetSavingsPlansUtilizationDetailsOutput), !p.HasNextPage()) {
1512			break
1513		}
1514	}
1515
1516	return p.Err()
1517}
1518
1519const opGetTags = "GetTags"
1520
1521// GetTagsRequest generates a "aws/request.Request" representing the
1522// client's request for the GetTags operation. The "output" return
1523// value will be populated with the request's response once the request completes
1524// successfully.
1525//
1526// Use "Send" method on the returned Request to send the API call to the service.
1527// the "output" return value is not valid until after Send returns without error.
1528//
1529// See GetTags for more information on using the GetTags
1530// API call, and error handling.
1531//
1532// This method is useful when you want to inject custom logic or configuration
1533// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1534//
1535//
1536//    // Example sending a request using the GetTagsRequest method.
1537//    req, resp := client.GetTagsRequest(params)
1538//
1539//    err := req.Send()
1540//    if err == nil { // resp is now filled
1541//        fmt.Println(resp)
1542//    }
1543//
1544// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetTags
1545func (c *CostExplorer) GetTagsRequest(input *GetTagsInput) (req *request.Request, output *GetTagsOutput) {
1546	op := &request.Operation{
1547		Name:       opGetTags,
1548		HTTPMethod: "POST",
1549		HTTPPath:   "/",
1550	}
1551
1552	if input == nil {
1553		input = &GetTagsInput{}
1554	}
1555
1556	output = &GetTagsOutput{}
1557	req = c.newRequest(op, input, output)
1558	return
1559}
1560
1561// GetTags API operation for AWS Cost Explorer Service.
1562//
1563// Queries for available tag keys and tag values for a specified period. You
1564// can search the tag values for an arbitrary string.
1565//
1566// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1567// with awserr.Error's Code and Message methods to get detailed information about
1568// the error.
1569//
1570// See the AWS API reference guide for AWS Cost Explorer Service's
1571// API operation GetTags for usage and error information.
1572//
1573// Returned Error Types:
1574//   * LimitExceededException
1575//   You made too many calls in a short period of time. Try again later.
1576//
1577//   * BillExpirationException
1578//   The requested report expired. Update the date interval and try again.
1579//
1580//   * DataUnavailableException
1581//   The requested data is unavailable.
1582//
1583//   * InvalidNextTokenException
1584//   The pagination token is invalid. Try again without a pagination token.
1585//
1586//   * RequestChangedException
1587//   Your request parameters changed between pages. Try again with the old parameters
1588//   or without a pagination token.
1589//
1590// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetTags
1591func (c *CostExplorer) GetTags(input *GetTagsInput) (*GetTagsOutput, error) {
1592	req, out := c.GetTagsRequest(input)
1593	return out, req.Send()
1594}
1595
1596// GetTagsWithContext is the same as GetTags with the addition of
1597// the ability to pass a context and additional request options.
1598//
1599// See GetTags for details on how to use this API operation.
1600//
1601// The context must be non-nil and will be used for request cancellation. If
1602// the context is nil a panic will occur. In the future the SDK may create
1603// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1604// for more information on using Contexts.
1605func (c *CostExplorer) GetTagsWithContext(ctx aws.Context, input *GetTagsInput, opts ...request.Option) (*GetTagsOutput, error) {
1606	req, out := c.GetTagsRequest(input)
1607	req.SetContext(ctx)
1608	req.ApplyOptions(opts...)
1609	return out, req.Send()
1610}
1611
1612const opGetUsageForecast = "GetUsageForecast"
1613
1614// GetUsageForecastRequest generates a "aws/request.Request" representing the
1615// client's request for the GetUsageForecast operation. The "output" return
1616// value will be populated with the request's response once the request completes
1617// successfully.
1618//
1619// Use "Send" method on the returned Request to send the API call to the service.
1620// the "output" return value is not valid until after Send returns without error.
1621//
1622// See GetUsageForecast for more information on using the GetUsageForecast
1623// API call, and error handling.
1624//
1625// This method is useful when you want to inject custom logic or configuration
1626// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1627//
1628//
1629//    // Example sending a request using the GetUsageForecastRequest method.
1630//    req, resp := client.GetUsageForecastRequest(params)
1631//
1632//    err := req.Send()
1633//    if err == nil { // resp is now filled
1634//        fmt.Println(resp)
1635//    }
1636//
1637// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetUsageForecast
1638func (c *CostExplorer) GetUsageForecastRequest(input *GetUsageForecastInput) (req *request.Request, output *GetUsageForecastOutput) {
1639	op := &request.Operation{
1640		Name:       opGetUsageForecast,
1641		HTTPMethod: "POST",
1642		HTTPPath:   "/",
1643	}
1644
1645	if input == nil {
1646		input = &GetUsageForecastInput{}
1647	}
1648
1649	output = &GetUsageForecastOutput{}
1650	req = c.newRequest(op, input, output)
1651	return
1652}
1653
1654// GetUsageForecast API operation for AWS Cost Explorer Service.
1655//
1656// Retrieves a forecast for how much Amazon Web Services predicts that you will
1657// use over the forecast time period that you select, based on your past usage.
1658//
1659// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1660// with awserr.Error's Code and Message methods to get detailed information about
1661// the error.
1662//
1663// See the AWS API reference guide for AWS Cost Explorer Service's
1664// API operation GetUsageForecast for usage and error information.
1665//
1666// Returned Error Types:
1667//   * LimitExceededException
1668//   You made too many calls in a short period of time. Try again later.
1669//
1670//   * DataUnavailableException
1671//   The requested data is unavailable.
1672//
1673//   * UnresolvableUsageUnitException
1674//   Cost Explorer was unable to identify the usage unit. Provide UsageType/UsageTypeGroup
1675//   filter selections that contain matching units, for example: hours.
1676//
1677// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetUsageForecast
1678func (c *CostExplorer) GetUsageForecast(input *GetUsageForecastInput) (*GetUsageForecastOutput, error) {
1679	req, out := c.GetUsageForecastRequest(input)
1680	return out, req.Send()
1681}
1682
1683// GetUsageForecastWithContext is the same as GetUsageForecast with the addition of
1684// the ability to pass a context and additional request options.
1685//
1686// See GetUsageForecast for details on how to use this API operation.
1687//
1688// The context must be non-nil and will be used for request cancellation. If
1689// the context is nil a panic will occur. In the future the SDK may create
1690// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1691// for more information on using Contexts.
1692func (c *CostExplorer) GetUsageForecastWithContext(ctx aws.Context, input *GetUsageForecastInput, opts ...request.Option) (*GetUsageForecastOutput, error) {
1693	req, out := c.GetUsageForecastRequest(input)
1694	req.SetContext(ctx)
1695	req.ApplyOptions(opts...)
1696	return out, req.Send()
1697}
1698
1699const opListCostCategoryDefinitions = "ListCostCategoryDefinitions"
1700
1701// ListCostCategoryDefinitionsRequest generates a "aws/request.Request" representing the
1702// client's request for the ListCostCategoryDefinitions operation. The "output" return
1703// value will be populated with the request's response once the request completes
1704// successfully.
1705//
1706// Use "Send" method on the returned Request to send the API call to the service.
1707// the "output" return value is not valid until after Send returns without error.
1708//
1709// See ListCostCategoryDefinitions for more information on using the ListCostCategoryDefinitions
1710// API call, and error handling.
1711//
1712// This method is useful when you want to inject custom logic or configuration
1713// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1714//
1715//
1716//    // Example sending a request using the ListCostCategoryDefinitionsRequest method.
1717//    req, resp := client.ListCostCategoryDefinitionsRequest(params)
1718//
1719//    err := req.Send()
1720//    if err == nil { // resp is now filled
1721//        fmt.Println(resp)
1722//    }
1723//
1724// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ListCostCategoryDefinitions
1725func (c *CostExplorer) ListCostCategoryDefinitionsRequest(input *ListCostCategoryDefinitionsInput) (req *request.Request, output *ListCostCategoryDefinitionsOutput) {
1726	op := &request.Operation{
1727		Name:       opListCostCategoryDefinitions,
1728		HTTPMethod: "POST",
1729		HTTPPath:   "/",
1730		Paginator: &request.Paginator{
1731			InputTokens:     []string{"NextToken"},
1732			OutputTokens:    []string{"NextToken"},
1733			LimitToken:      "MaxResults",
1734			TruncationToken: "",
1735		},
1736	}
1737
1738	if input == nil {
1739		input = &ListCostCategoryDefinitionsInput{}
1740	}
1741
1742	output = &ListCostCategoryDefinitionsOutput{}
1743	req = c.newRequest(op, input, output)
1744	return
1745}
1746
1747// ListCostCategoryDefinitions API operation for AWS Cost Explorer Service.
1748//
1749// Returns the name, ARN, NumberOfRules and effective dates of all Cost Categories
1750// defined in the account. You have the option to use EffectiveOn to return
1751// a list of Cost Categories that were active on a specific date. If there is
1752// no EffectiveOn specified, you’ll see Cost Categories that are effective
1753// on the current date. If Cost Category is still effective, EffectiveEnd is
1754// omitted in the response. ListCostCategoryDefinitions supports pagination.
1755// The request can have a MaxResults range up to 100.
1756//
1757// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1758// with awserr.Error's Code and Message methods to get detailed information about
1759// the error.
1760//
1761// See the AWS API reference guide for AWS Cost Explorer Service's
1762// API operation ListCostCategoryDefinitions for usage and error information.
1763//
1764// Returned Error Types:
1765//   * LimitExceededException
1766//   You made too many calls in a short period of time. Try again later.
1767//
1768// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ListCostCategoryDefinitions
1769func (c *CostExplorer) ListCostCategoryDefinitions(input *ListCostCategoryDefinitionsInput) (*ListCostCategoryDefinitionsOutput, error) {
1770	req, out := c.ListCostCategoryDefinitionsRequest(input)
1771	return out, req.Send()
1772}
1773
1774// ListCostCategoryDefinitionsWithContext is the same as ListCostCategoryDefinitions with the addition of
1775// the ability to pass a context and additional request options.
1776//
1777// See ListCostCategoryDefinitions for details on how to use this API operation.
1778//
1779// The context must be non-nil and will be used for request cancellation. If
1780// the context is nil a panic will occur. In the future the SDK may create
1781// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1782// for more information on using Contexts.
1783func (c *CostExplorer) ListCostCategoryDefinitionsWithContext(ctx aws.Context, input *ListCostCategoryDefinitionsInput, opts ...request.Option) (*ListCostCategoryDefinitionsOutput, error) {
1784	req, out := c.ListCostCategoryDefinitionsRequest(input)
1785	req.SetContext(ctx)
1786	req.ApplyOptions(opts...)
1787	return out, req.Send()
1788}
1789
1790// ListCostCategoryDefinitionsPages iterates over the pages of a ListCostCategoryDefinitions operation,
1791// calling the "fn" function with the response data for each page. To stop
1792// iterating, return false from the fn function.
1793//
1794// See ListCostCategoryDefinitions method for more information on how to use this operation.
1795//
1796// Note: This operation can generate multiple requests to a service.
1797//
1798//    // Example iterating over at most 3 pages of a ListCostCategoryDefinitions operation.
1799//    pageNum := 0
1800//    err := client.ListCostCategoryDefinitionsPages(params,
1801//        func(page *costexplorer.ListCostCategoryDefinitionsOutput, lastPage bool) bool {
1802//            pageNum++
1803//            fmt.Println(page)
1804//            return pageNum <= 3
1805//        })
1806//
1807func (c *CostExplorer) ListCostCategoryDefinitionsPages(input *ListCostCategoryDefinitionsInput, fn func(*ListCostCategoryDefinitionsOutput, bool) bool) error {
1808	return c.ListCostCategoryDefinitionsPagesWithContext(aws.BackgroundContext(), input, fn)
1809}
1810
1811// ListCostCategoryDefinitionsPagesWithContext same as ListCostCategoryDefinitionsPages except
1812// it takes a Context and allows setting request options on the pages.
1813//
1814// The context must be non-nil and will be used for request cancellation. If
1815// the context is nil a panic will occur. In the future the SDK may create
1816// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1817// for more information on using Contexts.
1818func (c *CostExplorer) ListCostCategoryDefinitionsPagesWithContext(ctx aws.Context, input *ListCostCategoryDefinitionsInput, fn func(*ListCostCategoryDefinitionsOutput, bool) bool, opts ...request.Option) error {
1819	p := request.Pagination{
1820		NewRequest: func() (*request.Request, error) {
1821			var inCpy *ListCostCategoryDefinitionsInput
1822			if input != nil {
1823				tmp := *input
1824				inCpy = &tmp
1825			}
1826			req, _ := c.ListCostCategoryDefinitionsRequest(inCpy)
1827			req.SetContext(ctx)
1828			req.ApplyOptions(opts...)
1829			return req, nil
1830		},
1831	}
1832
1833	for p.Next() {
1834		if !fn(p.Page().(*ListCostCategoryDefinitionsOutput), !p.HasNextPage()) {
1835			break
1836		}
1837	}
1838
1839	return p.Err()
1840}
1841
1842const opUpdateCostCategoryDefinition = "UpdateCostCategoryDefinition"
1843
1844// UpdateCostCategoryDefinitionRequest generates a "aws/request.Request" representing the
1845// client's request for the UpdateCostCategoryDefinition operation. The "output" return
1846// value will be populated with the request's response once the request completes
1847// successfully.
1848//
1849// Use "Send" method on the returned Request to send the API call to the service.
1850// the "output" return value is not valid until after Send returns without error.
1851//
1852// See UpdateCostCategoryDefinition for more information on using the UpdateCostCategoryDefinition
1853// API call, and error handling.
1854//
1855// This method is useful when you want to inject custom logic or configuration
1856// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1857//
1858//
1859//    // Example sending a request using the UpdateCostCategoryDefinitionRequest method.
1860//    req, resp := client.UpdateCostCategoryDefinitionRequest(params)
1861//
1862//    err := req.Send()
1863//    if err == nil { // resp is now filled
1864//        fmt.Println(resp)
1865//    }
1866//
1867// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateCostCategoryDefinition
1868func (c *CostExplorer) UpdateCostCategoryDefinitionRequest(input *UpdateCostCategoryDefinitionInput) (req *request.Request, output *UpdateCostCategoryDefinitionOutput) {
1869	op := &request.Operation{
1870		Name:       opUpdateCostCategoryDefinition,
1871		HTTPMethod: "POST",
1872		HTTPPath:   "/",
1873	}
1874
1875	if input == nil {
1876		input = &UpdateCostCategoryDefinitionInput{}
1877	}
1878
1879	output = &UpdateCostCategoryDefinitionOutput{}
1880	req = c.newRequest(op, input, output)
1881	return
1882}
1883
1884// UpdateCostCategoryDefinition API operation for AWS Cost Explorer Service.
1885//
1886// Updates an existing Cost Category. Changes made to the Cost Category rules
1887// will be used to categorize the current month’s expenses and future expenses.
1888// This won’t change categorization for the previous months.
1889//
1890// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1891// with awserr.Error's Code and Message methods to get detailed information about
1892// the error.
1893//
1894// See the AWS API reference guide for AWS Cost Explorer Service's
1895// API operation UpdateCostCategoryDefinition for usage and error information.
1896//
1897// Returned Error Types:
1898//   * ResourceNotFoundException
1899//   The specified ARN in the request doesn't exist.
1900//
1901//   * ServiceQuotaExceededException
1902//   You've reached the limit on the number of resources you can create, or exceeded
1903//   the size of an individual resources.
1904//
1905//   * LimitExceededException
1906//   You made too many calls in a short period of time. Try again later.
1907//
1908// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateCostCategoryDefinition
1909func (c *CostExplorer) UpdateCostCategoryDefinition(input *UpdateCostCategoryDefinitionInput) (*UpdateCostCategoryDefinitionOutput, error) {
1910	req, out := c.UpdateCostCategoryDefinitionRequest(input)
1911	return out, req.Send()
1912}
1913
1914// UpdateCostCategoryDefinitionWithContext is the same as UpdateCostCategoryDefinition with the addition of
1915// the ability to pass a context and additional request options.
1916//
1917// See UpdateCostCategoryDefinition for details on how to use this API operation.
1918//
1919// The context must be non-nil and will be used for request cancellation. If
1920// the context is nil a panic will occur. In the future the SDK may create
1921// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1922// for more information on using Contexts.
1923func (c *CostExplorer) UpdateCostCategoryDefinitionWithContext(ctx aws.Context, input *UpdateCostCategoryDefinitionInput, opts ...request.Option) (*UpdateCostCategoryDefinitionOutput, error) {
1924	req, out := c.UpdateCostCategoryDefinitionRequest(input)
1925	req.SetContext(ctx)
1926	req.ApplyOptions(opts...)
1927	return out, req.Send()
1928}
1929
1930// The requested report expired. Update the date interval and try again.
1931type BillExpirationException struct {
1932	_            struct{}                  `type:"structure"`
1933	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
1934
1935	Message_ *string `locationName:"Message" type:"string"`
1936}
1937
1938// String returns the string representation
1939func (s BillExpirationException) String() string {
1940	return awsutil.Prettify(s)
1941}
1942
1943// GoString returns the string representation
1944func (s BillExpirationException) GoString() string {
1945	return s.String()
1946}
1947
1948func newErrorBillExpirationException(v protocol.ResponseMetadata) error {
1949	return &BillExpirationException{
1950		RespMetadata: v,
1951	}
1952}
1953
1954// Code returns the exception type name.
1955func (s *BillExpirationException) Code() string {
1956	return "BillExpirationException"
1957}
1958
1959// Message returns the exception's message.
1960func (s *BillExpirationException) Message() string {
1961	if s.Message_ != nil {
1962		return *s.Message_
1963	}
1964	return ""
1965}
1966
1967// OrigErr always returns nil, satisfies awserr.Error interface.
1968func (s *BillExpirationException) OrigErr() error {
1969	return nil
1970}
1971
1972func (s *BillExpirationException) Error() string {
1973	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
1974}
1975
1976// Status code returns the HTTP status code for the request's response error.
1977func (s *BillExpirationException) StatusCode() int {
1978	return s.RespMetadata.StatusCode
1979}
1980
1981// RequestID returns the service's response RequestID for request.
1982func (s *BillExpirationException) RequestID() string {
1983	return s.RespMetadata.RequestID
1984}
1985
1986// The structure of Cost Categories. This includes detailed metadata and the
1987// set of rules for the CostCategory object.
1988type CostCategory struct {
1989	_ struct{} `type:"structure"`
1990
1991	// The unique identifier for your Cost Category.
1992	//
1993	// CostCategoryArn is a required field
1994	CostCategoryArn *string `min:"20" type:"string" required:"true"`
1995
1996	// The Cost Category's effective end date.
1997	EffectiveEnd *string `min:"20" type:"string"`
1998
1999	// The Cost Category's effective start date.
2000	//
2001	// EffectiveStart is a required field
2002	EffectiveStart *string `min:"20" type:"string" required:"true"`
2003
2004	// The unique name of the Cost Category.
2005	//
2006	// Name is a required field
2007	Name *string `min:"1" type:"string" required:"true"`
2008
2009	// The rule schema version in this particular Cost Category.
2010	//
2011	// RuleVersion is a required field
2012	RuleVersion *string `type:"string" required:"true" enum:"CostCategoryRuleVersion"`
2013
2014	// Rules are processed in order. If there are multiple rules that match the
2015	// line item, then the first rule to match is used to determine that Cost Category
2016	// value.
2017	//
2018	// Rules is a required field
2019	Rules []*CostCategoryRule `min:"1" type:"list" required:"true"`
2020}
2021
2022// String returns the string representation
2023func (s CostCategory) String() string {
2024	return awsutil.Prettify(s)
2025}
2026
2027// GoString returns the string representation
2028func (s CostCategory) GoString() string {
2029	return s.String()
2030}
2031
2032// SetCostCategoryArn sets the CostCategoryArn field's value.
2033func (s *CostCategory) SetCostCategoryArn(v string) *CostCategory {
2034	s.CostCategoryArn = &v
2035	return s
2036}
2037
2038// SetEffectiveEnd sets the EffectiveEnd field's value.
2039func (s *CostCategory) SetEffectiveEnd(v string) *CostCategory {
2040	s.EffectiveEnd = &v
2041	return s
2042}
2043
2044// SetEffectiveStart sets the EffectiveStart field's value.
2045func (s *CostCategory) SetEffectiveStart(v string) *CostCategory {
2046	s.EffectiveStart = &v
2047	return s
2048}
2049
2050// SetName sets the Name field's value.
2051func (s *CostCategory) SetName(v string) *CostCategory {
2052	s.Name = &v
2053	return s
2054}
2055
2056// SetRuleVersion sets the RuleVersion field's value.
2057func (s *CostCategory) SetRuleVersion(v string) *CostCategory {
2058	s.RuleVersion = &v
2059	return s
2060}
2061
2062// SetRules sets the Rules field's value.
2063func (s *CostCategory) SetRules(v []*CostCategoryRule) *CostCategory {
2064	s.Rules = v
2065	return s
2066}
2067
2068// A reference to a Cost Category containing only enough information to identify
2069// the Cost Category.
2070//
2071// You can use this information to retrieve the full Cost Category information
2072// using DescribeCostCategory.
2073type CostCategoryReference struct {
2074	_ struct{} `type:"structure"`
2075
2076	// The unique identifier for your Cost Category.
2077	CostCategoryArn *string `min:"20" type:"string"`
2078
2079	// The Cost Category's effective end date.
2080	EffectiveEnd *string `min:"20" type:"string"`
2081
2082	// The Cost Category's effective start date.
2083	EffectiveStart *string `min:"20" type:"string"`
2084
2085	// The unique name of the Cost Category.
2086	Name *string `min:"1" type:"string"`
2087
2088	// The number of rules associated with a specific Cost Category.
2089	NumberOfRules *int64 `type:"integer"`
2090}
2091
2092// String returns the string representation
2093func (s CostCategoryReference) String() string {
2094	return awsutil.Prettify(s)
2095}
2096
2097// GoString returns the string representation
2098func (s CostCategoryReference) GoString() string {
2099	return s.String()
2100}
2101
2102// SetCostCategoryArn sets the CostCategoryArn field's value.
2103func (s *CostCategoryReference) SetCostCategoryArn(v string) *CostCategoryReference {
2104	s.CostCategoryArn = &v
2105	return s
2106}
2107
2108// SetEffectiveEnd sets the EffectiveEnd field's value.
2109func (s *CostCategoryReference) SetEffectiveEnd(v string) *CostCategoryReference {
2110	s.EffectiveEnd = &v
2111	return s
2112}
2113
2114// SetEffectiveStart sets the EffectiveStart field's value.
2115func (s *CostCategoryReference) SetEffectiveStart(v string) *CostCategoryReference {
2116	s.EffectiveStart = &v
2117	return s
2118}
2119
2120// SetName sets the Name field's value.
2121func (s *CostCategoryReference) SetName(v string) *CostCategoryReference {
2122	s.Name = &v
2123	return s
2124}
2125
2126// SetNumberOfRules sets the NumberOfRules field's value.
2127func (s *CostCategoryReference) SetNumberOfRules(v int64) *CostCategoryReference {
2128	s.NumberOfRules = &v
2129	return s
2130}
2131
2132// Rules are processed in order. If there are multiple rules that match the
2133// line item, then the first rule to match is used to determine that Cost Category
2134// value.
2135type CostCategoryRule struct {
2136	_ struct{} `type:"structure"`
2137
2138	// An Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
2139	// object used to categorize costs. This supports dimensions, Tags, and nested
2140	// expressions. Currently the only dimensions supported are LINKED_ACCOUNT,
2141	// SERVICE_CODE, RECORD_TYPE, and LINKED_ACCOUNT_NAME.
2142	//
2143	// Root level OR is not supported. We recommend that you create a separate rule
2144	// instead.
2145	//
2146	// RECORD_TYPE is a dimension used for Cost Explorer APIs, and is also supported
2147	// for Cost Category expressions. This dimension uses different terms, depending
2148	// on whether you're using the console or API/JSON editor. For a detailed comparison,
2149	// see Term Comparisons (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/manage-cost-categories.html#cost-categories-terms)
2150	// in the AWS Billing and Cost Management User Guide.
2151	//
2152	// Rule is a required field
2153	Rule *Expression `type:"structure" required:"true"`
2154
2155	// The value a line item will be categorized as, if it matches the rule.
2156	//
2157	// Value is a required field
2158	Value *string `min:"1" type:"string" required:"true"`
2159}
2160
2161// String returns the string representation
2162func (s CostCategoryRule) String() string {
2163	return awsutil.Prettify(s)
2164}
2165
2166// GoString returns the string representation
2167func (s CostCategoryRule) GoString() string {
2168	return s.String()
2169}
2170
2171// Validate inspects the fields of the type to determine if they are valid.
2172func (s *CostCategoryRule) Validate() error {
2173	invalidParams := request.ErrInvalidParams{Context: "CostCategoryRule"}
2174	if s.Rule == nil {
2175		invalidParams.Add(request.NewErrParamRequired("Rule"))
2176	}
2177	if s.Value == nil {
2178		invalidParams.Add(request.NewErrParamRequired("Value"))
2179	}
2180	if s.Value != nil && len(*s.Value) < 1 {
2181		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
2182	}
2183	if s.Rule != nil {
2184		if err := s.Rule.Validate(); err != nil {
2185			invalidParams.AddNested("Rule", err.(request.ErrInvalidParams))
2186		}
2187	}
2188
2189	if invalidParams.Len() > 0 {
2190		return invalidParams
2191	}
2192	return nil
2193}
2194
2195// SetRule sets the Rule field's value.
2196func (s *CostCategoryRule) SetRule(v *Expression) *CostCategoryRule {
2197	s.Rule = v
2198	return s
2199}
2200
2201// SetValue sets the Value field's value.
2202func (s *CostCategoryRule) SetValue(v string) *CostCategoryRule {
2203	s.Value = &v
2204	return s
2205}
2206
2207// The Cost Categories values used for filtering the costs.
2208type CostCategoryValues struct {
2209	_ struct{} `type:"structure"`
2210
2211	// The unique name of the Cost Category.
2212	Key *string `min:"1" type:"string"`
2213
2214	// The specific value of the Cost Category.
2215	Values []*string `type:"list"`
2216}
2217
2218// String returns the string representation
2219func (s CostCategoryValues) String() string {
2220	return awsutil.Prettify(s)
2221}
2222
2223// GoString returns the string representation
2224func (s CostCategoryValues) GoString() string {
2225	return s.String()
2226}
2227
2228// Validate inspects the fields of the type to determine if they are valid.
2229func (s *CostCategoryValues) Validate() error {
2230	invalidParams := request.ErrInvalidParams{Context: "CostCategoryValues"}
2231	if s.Key != nil && len(*s.Key) < 1 {
2232		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
2233	}
2234
2235	if invalidParams.Len() > 0 {
2236		return invalidParams
2237	}
2238	return nil
2239}
2240
2241// SetKey sets the Key field's value.
2242func (s *CostCategoryValues) SetKey(v string) *CostCategoryValues {
2243	s.Key = &v
2244	return s
2245}
2246
2247// SetValues sets the Values field's value.
2248func (s *CostCategoryValues) SetValues(v []*string) *CostCategoryValues {
2249	s.Values = v
2250	return s
2251}
2252
2253// The amount of instance usage that a reservation covered.
2254type Coverage struct {
2255	_ struct{} `type:"structure"`
2256
2257	// The amount of cost that the reservation covered.
2258	CoverageCost *CoverageCost `type:"structure"`
2259
2260	// The amount of instance usage that the reservation covered, in hours.
2261	CoverageHours *CoverageHours `type:"structure"`
2262
2263	// The amount of instance usage that the reservation covered, in normalized
2264	// units.
2265	CoverageNormalizedUnits *CoverageNormalizedUnits `type:"structure"`
2266}
2267
2268// String returns the string representation
2269func (s Coverage) String() string {
2270	return awsutil.Prettify(s)
2271}
2272
2273// GoString returns the string representation
2274func (s Coverage) GoString() string {
2275	return s.String()
2276}
2277
2278// SetCoverageCost sets the CoverageCost field's value.
2279func (s *Coverage) SetCoverageCost(v *CoverageCost) *Coverage {
2280	s.CoverageCost = v
2281	return s
2282}
2283
2284// SetCoverageHours sets the CoverageHours field's value.
2285func (s *Coverage) SetCoverageHours(v *CoverageHours) *Coverage {
2286	s.CoverageHours = v
2287	return s
2288}
2289
2290// SetCoverageNormalizedUnits sets the CoverageNormalizedUnits field's value.
2291func (s *Coverage) SetCoverageNormalizedUnits(v *CoverageNormalizedUnits) *Coverage {
2292	s.CoverageNormalizedUnits = v
2293	return s
2294}
2295
2296// Reservation coverage for a specified period, in hours.
2297type CoverageByTime struct {
2298	_ struct{} `type:"structure"`
2299
2300	// The groups of instances that the reservation covered.
2301	Groups []*ReservationCoverageGroup `type:"list"`
2302
2303	// The period that this coverage was used over.
2304	TimePeriod *DateInterval `type:"structure"`
2305
2306	// The total reservation coverage, in hours.
2307	Total *Coverage `type:"structure"`
2308}
2309
2310// String returns the string representation
2311func (s CoverageByTime) String() string {
2312	return awsutil.Prettify(s)
2313}
2314
2315// GoString returns the string representation
2316func (s CoverageByTime) GoString() string {
2317	return s.String()
2318}
2319
2320// SetGroups sets the Groups field's value.
2321func (s *CoverageByTime) SetGroups(v []*ReservationCoverageGroup) *CoverageByTime {
2322	s.Groups = v
2323	return s
2324}
2325
2326// SetTimePeriod sets the TimePeriod field's value.
2327func (s *CoverageByTime) SetTimePeriod(v *DateInterval) *CoverageByTime {
2328	s.TimePeriod = v
2329	return s
2330}
2331
2332// SetTotal sets the Total field's value.
2333func (s *CoverageByTime) SetTotal(v *Coverage) *CoverageByTime {
2334	s.Total = v
2335	return s
2336}
2337
2338// How much it costs to run an instance.
2339type CoverageCost struct {
2340	_ struct{} `type:"structure"`
2341
2342	// How much an On-Demand Instance costs.
2343	OnDemandCost *string `type:"string"`
2344}
2345
2346// String returns the string representation
2347func (s CoverageCost) String() string {
2348	return awsutil.Prettify(s)
2349}
2350
2351// GoString returns the string representation
2352func (s CoverageCost) GoString() string {
2353	return s.String()
2354}
2355
2356// SetOnDemandCost sets the OnDemandCost field's value.
2357func (s *CoverageCost) SetOnDemandCost(v string) *CoverageCost {
2358	s.OnDemandCost = &v
2359	return s
2360}
2361
2362// How long a running instance either used a reservation or was On-Demand.
2363type CoverageHours struct {
2364	_ struct{} `type:"structure"`
2365
2366	// The percentage of instance hours that a reservation covered.
2367	CoverageHoursPercentage *string `type:"string"`
2368
2369	// The number of instance running hours that On-Demand Instances covered.
2370	OnDemandHours *string `type:"string"`
2371
2372	// The number of instance running hours that reservations covered.
2373	ReservedHours *string `type:"string"`
2374
2375	// The total instance usage, in hours.
2376	TotalRunningHours *string `type:"string"`
2377}
2378
2379// String returns the string representation
2380func (s CoverageHours) String() string {
2381	return awsutil.Prettify(s)
2382}
2383
2384// GoString returns the string representation
2385func (s CoverageHours) GoString() string {
2386	return s.String()
2387}
2388
2389// SetCoverageHoursPercentage sets the CoverageHoursPercentage field's value.
2390func (s *CoverageHours) SetCoverageHoursPercentage(v string) *CoverageHours {
2391	s.CoverageHoursPercentage = &v
2392	return s
2393}
2394
2395// SetOnDemandHours sets the OnDemandHours field's value.
2396func (s *CoverageHours) SetOnDemandHours(v string) *CoverageHours {
2397	s.OnDemandHours = &v
2398	return s
2399}
2400
2401// SetReservedHours sets the ReservedHours field's value.
2402func (s *CoverageHours) SetReservedHours(v string) *CoverageHours {
2403	s.ReservedHours = &v
2404	return s
2405}
2406
2407// SetTotalRunningHours sets the TotalRunningHours field's value.
2408func (s *CoverageHours) SetTotalRunningHours(v string) *CoverageHours {
2409	s.TotalRunningHours = &v
2410	return s
2411}
2412
2413// The amount of instance usage, in normalized units. Normalized units enable
2414// you to see your EC2 usage for multiple sizes of instances in a uniform way.
2415// For example, suppose you run an xlarge instance and a 2xlarge instance. If
2416// you run both instances for the same amount of time, the 2xlarge instance
2417// uses twice as much of your reservation as the xlarge instance, even though
2418// both instances show only one instance-hour. Using normalized units instead
2419// of instance-hours, the xlarge instance used 8 normalized units, and the 2xlarge
2420// instance used 16 normalized units.
2421//
2422// For more information, see Modifying Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html)
2423// in the Amazon Elastic Compute Cloud User Guide for Linux Instances.
2424type CoverageNormalizedUnits struct {
2425	_ struct{} `type:"structure"`
2426
2427	// The percentage of your used instance normalized units that a reservation
2428	// covers.
2429	CoverageNormalizedUnitsPercentage *string `type:"string"`
2430
2431	// The number of normalized units that are covered by On-Demand Instances instead
2432	// of a reservation.
2433	OnDemandNormalizedUnits *string `type:"string"`
2434
2435	// The number of normalized units that a reservation covers.
2436	ReservedNormalizedUnits *string `type:"string"`
2437
2438	// The total number of normalized units that you used.
2439	TotalRunningNormalizedUnits *string `type:"string"`
2440}
2441
2442// String returns the string representation
2443func (s CoverageNormalizedUnits) String() string {
2444	return awsutil.Prettify(s)
2445}
2446
2447// GoString returns the string representation
2448func (s CoverageNormalizedUnits) GoString() string {
2449	return s.String()
2450}
2451
2452// SetCoverageNormalizedUnitsPercentage sets the CoverageNormalizedUnitsPercentage field's value.
2453func (s *CoverageNormalizedUnits) SetCoverageNormalizedUnitsPercentage(v string) *CoverageNormalizedUnits {
2454	s.CoverageNormalizedUnitsPercentage = &v
2455	return s
2456}
2457
2458// SetOnDemandNormalizedUnits sets the OnDemandNormalizedUnits field's value.
2459func (s *CoverageNormalizedUnits) SetOnDemandNormalizedUnits(v string) *CoverageNormalizedUnits {
2460	s.OnDemandNormalizedUnits = &v
2461	return s
2462}
2463
2464// SetReservedNormalizedUnits sets the ReservedNormalizedUnits field's value.
2465func (s *CoverageNormalizedUnits) SetReservedNormalizedUnits(v string) *CoverageNormalizedUnits {
2466	s.ReservedNormalizedUnits = &v
2467	return s
2468}
2469
2470// SetTotalRunningNormalizedUnits sets the TotalRunningNormalizedUnits field's value.
2471func (s *CoverageNormalizedUnits) SetTotalRunningNormalizedUnits(v string) *CoverageNormalizedUnits {
2472	s.TotalRunningNormalizedUnits = &v
2473	return s
2474}
2475
2476type CreateCostCategoryDefinitionInput struct {
2477	_ struct{} `type:"structure"`
2478
2479	// The unique name of the Cost Category.
2480	//
2481	// Name is a required field
2482	Name *string `min:"1" type:"string" required:"true"`
2483
2484	// The rule schema version in this particular Cost Category.
2485	//
2486	// RuleVersion is a required field
2487	RuleVersion *string `type:"string" required:"true" enum:"CostCategoryRuleVersion"`
2488
2489	// The Cost Category rules used to categorize costs. For more information, see
2490	// CostCategoryRule (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_CostCategoryRule.html).
2491	//
2492	// Rules is a required field
2493	Rules []*CostCategoryRule `min:"1" type:"list" required:"true"`
2494}
2495
2496// String returns the string representation
2497func (s CreateCostCategoryDefinitionInput) String() string {
2498	return awsutil.Prettify(s)
2499}
2500
2501// GoString returns the string representation
2502func (s CreateCostCategoryDefinitionInput) GoString() string {
2503	return s.String()
2504}
2505
2506// Validate inspects the fields of the type to determine if they are valid.
2507func (s *CreateCostCategoryDefinitionInput) Validate() error {
2508	invalidParams := request.ErrInvalidParams{Context: "CreateCostCategoryDefinitionInput"}
2509	if s.Name == nil {
2510		invalidParams.Add(request.NewErrParamRequired("Name"))
2511	}
2512	if s.Name != nil && len(*s.Name) < 1 {
2513		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
2514	}
2515	if s.RuleVersion == nil {
2516		invalidParams.Add(request.NewErrParamRequired("RuleVersion"))
2517	}
2518	if s.Rules == nil {
2519		invalidParams.Add(request.NewErrParamRequired("Rules"))
2520	}
2521	if s.Rules != nil && len(s.Rules) < 1 {
2522		invalidParams.Add(request.NewErrParamMinLen("Rules", 1))
2523	}
2524	if s.Rules != nil {
2525		for i, v := range s.Rules {
2526			if v == nil {
2527				continue
2528			}
2529			if err := v.Validate(); err != nil {
2530				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
2531			}
2532		}
2533	}
2534
2535	if invalidParams.Len() > 0 {
2536		return invalidParams
2537	}
2538	return nil
2539}
2540
2541// SetName sets the Name field's value.
2542func (s *CreateCostCategoryDefinitionInput) SetName(v string) *CreateCostCategoryDefinitionInput {
2543	s.Name = &v
2544	return s
2545}
2546
2547// SetRuleVersion sets the RuleVersion field's value.
2548func (s *CreateCostCategoryDefinitionInput) SetRuleVersion(v string) *CreateCostCategoryDefinitionInput {
2549	s.RuleVersion = &v
2550	return s
2551}
2552
2553// SetRules sets the Rules field's value.
2554func (s *CreateCostCategoryDefinitionInput) SetRules(v []*CostCategoryRule) *CreateCostCategoryDefinitionInput {
2555	s.Rules = v
2556	return s
2557}
2558
2559type CreateCostCategoryDefinitionOutput struct {
2560	_ struct{} `type:"structure"`
2561
2562	// The unique identifier for your newly created Cost Category.
2563	CostCategoryArn *string `min:"20" type:"string"`
2564
2565	// The Cost Category's effective start date.
2566	EffectiveStart *string `min:"20" type:"string"`
2567}
2568
2569// String returns the string representation
2570func (s CreateCostCategoryDefinitionOutput) String() string {
2571	return awsutil.Prettify(s)
2572}
2573
2574// GoString returns the string representation
2575func (s CreateCostCategoryDefinitionOutput) GoString() string {
2576	return s.String()
2577}
2578
2579// SetCostCategoryArn sets the CostCategoryArn field's value.
2580func (s *CreateCostCategoryDefinitionOutput) SetCostCategoryArn(v string) *CreateCostCategoryDefinitionOutput {
2581	s.CostCategoryArn = &v
2582	return s
2583}
2584
2585// SetEffectiveStart sets the EffectiveStart field's value.
2586func (s *CreateCostCategoryDefinitionOutput) SetEffectiveStart(v string) *CreateCostCategoryDefinitionOutput {
2587	s.EffectiveStart = &v
2588	return s
2589}
2590
2591// Context about the current instance.
2592type CurrentInstance struct {
2593	_ struct{} `type:"structure"`
2594
2595	// The currency code that Amazon Web Services used to calculate the costs for
2596	// this instance.
2597	CurrencyCode *string `type:"string"`
2598
2599	// The name you've given an instance. This field will show as blank if you haven't
2600	// given the instance a name.
2601	InstanceName *string `type:"string"`
2602
2603	// Current On Demand cost of operating this instance on a monthly basis.
2604	MonthlyCost *string `type:"string"`
2605
2606	// Number of hours during the lookback period billed at On Demand rates.
2607	OnDemandHoursInLookbackPeriod *string `type:"string"`
2608
2609	// Number of hours during the lookback period covered by reservations.
2610	ReservationCoveredHoursInLookbackPeriod *string `type:"string"`
2611
2612	// Details about the resource and utilization.
2613	ResourceDetails *ResourceDetails `type:"structure"`
2614
2615	// Resource ID of the current instance.
2616	ResourceId *string `type:"string"`
2617
2618	// Utilization information of the current instance during the lookback period.
2619	ResourceUtilization *ResourceUtilization `type:"structure"`
2620
2621	// Number of hours during the lookback period covered by Savings Plans.
2622	SavingsPlansCoveredHoursInLookbackPeriod *string `type:"string"`
2623
2624	// Cost allocation resource tags applied to the instance.
2625	Tags []*TagValues `type:"list"`
2626
2627	// The total number of hours the instance ran during the lookback period.
2628	TotalRunningHoursInLookbackPeriod *string `type:"string"`
2629}
2630
2631// String returns the string representation
2632func (s CurrentInstance) String() string {
2633	return awsutil.Prettify(s)
2634}
2635
2636// GoString returns the string representation
2637func (s CurrentInstance) GoString() string {
2638	return s.String()
2639}
2640
2641// SetCurrencyCode sets the CurrencyCode field's value.
2642func (s *CurrentInstance) SetCurrencyCode(v string) *CurrentInstance {
2643	s.CurrencyCode = &v
2644	return s
2645}
2646
2647// SetInstanceName sets the InstanceName field's value.
2648func (s *CurrentInstance) SetInstanceName(v string) *CurrentInstance {
2649	s.InstanceName = &v
2650	return s
2651}
2652
2653// SetMonthlyCost sets the MonthlyCost field's value.
2654func (s *CurrentInstance) SetMonthlyCost(v string) *CurrentInstance {
2655	s.MonthlyCost = &v
2656	return s
2657}
2658
2659// SetOnDemandHoursInLookbackPeriod sets the OnDemandHoursInLookbackPeriod field's value.
2660func (s *CurrentInstance) SetOnDemandHoursInLookbackPeriod(v string) *CurrentInstance {
2661	s.OnDemandHoursInLookbackPeriod = &v
2662	return s
2663}
2664
2665// SetReservationCoveredHoursInLookbackPeriod sets the ReservationCoveredHoursInLookbackPeriod field's value.
2666func (s *CurrentInstance) SetReservationCoveredHoursInLookbackPeriod(v string) *CurrentInstance {
2667	s.ReservationCoveredHoursInLookbackPeriod = &v
2668	return s
2669}
2670
2671// SetResourceDetails sets the ResourceDetails field's value.
2672func (s *CurrentInstance) SetResourceDetails(v *ResourceDetails) *CurrentInstance {
2673	s.ResourceDetails = v
2674	return s
2675}
2676
2677// SetResourceId sets the ResourceId field's value.
2678func (s *CurrentInstance) SetResourceId(v string) *CurrentInstance {
2679	s.ResourceId = &v
2680	return s
2681}
2682
2683// SetResourceUtilization sets the ResourceUtilization field's value.
2684func (s *CurrentInstance) SetResourceUtilization(v *ResourceUtilization) *CurrentInstance {
2685	s.ResourceUtilization = v
2686	return s
2687}
2688
2689// SetSavingsPlansCoveredHoursInLookbackPeriod sets the SavingsPlansCoveredHoursInLookbackPeriod field's value.
2690func (s *CurrentInstance) SetSavingsPlansCoveredHoursInLookbackPeriod(v string) *CurrentInstance {
2691	s.SavingsPlansCoveredHoursInLookbackPeriod = &v
2692	return s
2693}
2694
2695// SetTags sets the Tags field's value.
2696func (s *CurrentInstance) SetTags(v []*TagValues) *CurrentInstance {
2697	s.Tags = v
2698	return s
2699}
2700
2701// SetTotalRunningHoursInLookbackPeriod sets the TotalRunningHoursInLookbackPeriod field's value.
2702func (s *CurrentInstance) SetTotalRunningHoursInLookbackPeriod(v string) *CurrentInstance {
2703	s.TotalRunningHoursInLookbackPeriod = &v
2704	return s
2705}
2706
2707// The requested data is unavailable.
2708type DataUnavailableException struct {
2709	_            struct{}                  `type:"structure"`
2710	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
2711
2712	Message_ *string `locationName:"Message" type:"string"`
2713}
2714
2715// String returns the string representation
2716func (s DataUnavailableException) String() string {
2717	return awsutil.Prettify(s)
2718}
2719
2720// GoString returns the string representation
2721func (s DataUnavailableException) GoString() string {
2722	return s.String()
2723}
2724
2725func newErrorDataUnavailableException(v protocol.ResponseMetadata) error {
2726	return &DataUnavailableException{
2727		RespMetadata: v,
2728	}
2729}
2730
2731// Code returns the exception type name.
2732func (s *DataUnavailableException) Code() string {
2733	return "DataUnavailableException"
2734}
2735
2736// Message returns the exception's message.
2737func (s *DataUnavailableException) Message() string {
2738	if s.Message_ != nil {
2739		return *s.Message_
2740	}
2741	return ""
2742}
2743
2744// OrigErr always returns nil, satisfies awserr.Error interface.
2745func (s *DataUnavailableException) OrigErr() error {
2746	return nil
2747}
2748
2749func (s *DataUnavailableException) Error() string {
2750	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
2751}
2752
2753// Status code returns the HTTP status code for the request's response error.
2754func (s *DataUnavailableException) StatusCode() int {
2755	return s.RespMetadata.StatusCode
2756}
2757
2758// RequestID returns the service's response RequestID for request.
2759func (s *DataUnavailableException) RequestID() string {
2760	return s.RespMetadata.RequestID
2761}
2762
2763// The time period that you want the usage and costs for.
2764type DateInterval struct {
2765	_ struct{} `type:"structure"`
2766
2767	// The end of the time period that you want the usage and costs for. The end
2768	// date is exclusive. For example, if end is 2017-05-01, AWS retrieves cost
2769	// and usage data from the start date up to, but not including, 2017-05-01.
2770	//
2771	// End is a required field
2772	End *string `type:"string" required:"true"`
2773
2774	// The beginning of the time period that you want the usage and costs for. The
2775	// start date is inclusive. For example, if start is 2017-01-01, AWS retrieves
2776	// cost and usage data starting at 2017-01-01 up to the end date.
2777	//
2778	// Start is a required field
2779	Start *string `type:"string" required:"true"`
2780}
2781
2782// String returns the string representation
2783func (s DateInterval) String() string {
2784	return awsutil.Prettify(s)
2785}
2786
2787// GoString returns the string representation
2788func (s DateInterval) GoString() string {
2789	return s.String()
2790}
2791
2792// Validate inspects the fields of the type to determine if they are valid.
2793func (s *DateInterval) Validate() error {
2794	invalidParams := request.ErrInvalidParams{Context: "DateInterval"}
2795	if s.End == nil {
2796		invalidParams.Add(request.NewErrParamRequired("End"))
2797	}
2798	if s.Start == nil {
2799		invalidParams.Add(request.NewErrParamRequired("Start"))
2800	}
2801
2802	if invalidParams.Len() > 0 {
2803		return invalidParams
2804	}
2805	return nil
2806}
2807
2808// SetEnd sets the End field's value.
2809func (s *DateInterval) SetEnd(v string) *DateInterval {
2810	s.End = &v
2811	return s
2812}
2813
2814// SetStart sets the Start field's value.
2815func (s *DateInterval) SetStart(v string) *DateInterval {
2816	s.Start = &v
2817	return s
2818}
2819
2820type DeleteCostCategoryDefinitionInput struct {
2821	_ struct{} `type:"structure"`
2822
2823	// The unique identifier for your Cost Category.
2824	//
2825	// CostCategoryArn is a required field
2826	CostCategoryArn *string `min:"20" type:"string" required:"true"`
2827}
2828
2829// String returns the string representation
2830func (s DeleteCostCategoryDefinitionInput) String() string {
2831	return awsutil.Prettify(s)
2832}
2833
2834// GoString returns the string representation
2835func (s DeleteCostCategoryDefinitionInput) GoString() string {
2836	return s.String()
2837}
2838
2839// Validate inspects the fields of the type to determine if they are valid.
2840func (s *DeleteCostCategoryDefinitionInput) Validate() error {
2841	invalidParams := request.ErrInvalidParams{Context: "DeleteCostCategoryDefinitionInput"}
2842	if s.CostCategoryArn == nil {
2843		invalidParams.Add(request.NewErrParamRequired("CostCategoryArn"))
2844	}
2845	if s.CostCategoryArn != nil && len(*s.CostCategoryArn) < 20 {
2846		invalidParams.Add(request.NewErrParamMinLen("CostCategoryArn", 20))
2847	}
2848
2849	if invalidParams.Len() > 0 {
2850		return invalidParams
2851	}
2852	return nil
2853}
2854
2855// SetCostCategoryArn sets the CostCategoryArn field's value.
2856func (s *DeleteCostCategoryDefinitionInput) SetCostCategoryArn(v string) *DeleteCostCategoryDefinitionInput {
2857	s.CostCategoryArn = &v
2858	return s
2859}
2860
2861type DeleteCostCategoryDefinitionOutput struct {
2862	_ struct{} `type:"structure"`
2863
2864	// The unique identifier for your Cost Category.
2865	CostCategoryArn *string `min:"20" type:"string"`
2866
2867	// The effective end date of the Cost Category as a result of deleting it. No
2868	// costs after this date will be categorized by the deleted Cost Category.
2869	EffectiveEnd *string `min:"20" type:"string"`
2870}
2871
2872// String returns the string representation
2873func (s DeleteCostCategoryDefinitionOutput) String() string {
2874	return awsutil.Prettify(s)
2875}
2876
2877// GoString returns the string representation
2878func (s DeleteCostCategoryDefinitionOutput) GoString() string {
2879	return s.String()
2880}
2881
2882// SetCostCategoryArn sets the CostCategoryArn field's value.
2883func (s *DeleteCostCategoryDefinitionOutput) SetCostCategoryArn(v string) *DeleteCostCategoryDefinitionOutput {
2884	s.CostCategoryArn = &v
2885	return s
2886}
2887
2888// SetEffectiveEnd sets the EffectiveEnd field's value.
2889func (s *DeleteCostCategoryDefinitionOutput) SetEffectiveEnd(v string) *DeleteCostCategoryDefinitionOutput {
2890	s.EffectiveEnd = &v
2891	return s
2892}
2893
2894type DescribeCostCategoryDefinitionInput struct {
2895	_ struct{} `type:"structure"`
2896
2897	// The unique identifier for your Cost Category.
2898	//
2899	// CostCategoryArn is a required field
2900	CostCategoryArn *string `min:"20" type:"string" required:"true"`
2901
2902	// The date when the Cost Category was effective.
2903	EffectiveOn *string `min:"20" type:"string"`
2904}
2905
2906// String returns the string representation
2907func (s DescribeCostCategoryDefinitionInput) String() string {
2908	return awsutil.Prettify(s)
2909}
2910
2911// GoString returns the string representation
2912func (s DescribeCostCategoryDefinitionInput) GoString() string {
2913	return s.String()
2914}
2915
2916// Validate inspects the fields of the type to determine if they are valid.
2917func (s *DescribeCostCategoryDefinitionInput) Validate() error {
2918	invalidParams := request.ErrInvalidParams{Context: "DescribeCostCategoryDefinitionInput"}
2919	if s.CostCategoryArn == nil {
2920		invalidParams.Add(request.NewErrParamRequired("CostCategoryArn"))
2921	}
2922	if s.CostCategoryArn != nil && len(*s.CostCategoryArn) < 20 {
2923		invalidParams.Add(request.NewErrParamMinLen("CostCategoryArn", 20))
2924	}
2925	if s.EffectiveOn != nil && len(*s.EffectiveOn) < 20 {
2926		invalidParams.Add(request.NewErrParamMinLen("EffectiveOn", 20))
2927	}
2928
2929	if invalidParams.Len() > 0 {
2930		return invalidParams
2931	}
2932	return nil
2933}
2934
2935// SetCostCategoryArn sets the CostCategoryArn field's value.
2936func (s *DescribeCostCategoryDefinitionInput) SetCostCategoryArn(v string) *DescribeCostCategoryDefinitionInput {
2937	s.CostCategoryArn = &v
2938	return s
2939}
2940
2941// SetEffectiveOn sets the EffectiveOn field's value.
2942func (s *DescribeCostCategoryDefinitionInput) SetEffectiveOn(v string) *DescribeCostCategoryDefinitionInput {
2943	s.EffectiveOn = &v
2944	return s
2945}
2946
2947type DescribeCostCategoryDefinitionOutput struct {
2948	_ struct{} `type:"structure"`
2949
2950	// The structure of Cost Categories. This includes detailed metadata and the
2951	// set of rules for the CostCategory object.
2952	CostCategory *CostCategory `type:"structure"`
2953}
2954
2955// String returns the string representation
2956func (s DescribeCostCategoryDefinitionOutput) String() string {
2957	return awsutil.Prettify(s)
2958}
2959
2960// GoString returns the string representation
2961func (s DescribeCostCategoryDefinitionOutput) GoString() string {
2962	return s.String()
2963}
2964
2965// SetCostCategory sets the CostCategory field's value.
2966func (s *DescribeCostCategoryDefinitionOutput) SetCostCategory(v *CostCategory) *DescribeCostCategoryDefinitionOutput {
2967	s.CostCategory = v
2968	return s
2969}
2970
2971// The metadata that you can use to filter and group your results. You can use
2972// GetDimensionValues to find specific values.
2973type DimensionValues struct {
2974	_ struct{} `type:"structure"`
2975
2976	// The names of the metadata types that you can use to filter and group your
2977	// results. For example, AZ returns a list of Availability Zones.
2978	Key *string `type:"string" enum:"Dimension"`
2979
2980	// The match options that you can use to filter your results. MatchOptions is
2981	// only applicable for actions related to Cost Category. The default values
2982	// for MatchOptions is EQUALS and CASE_SENSITIVE.
2983	MatchOptions []*string `type:"list"`
2984
2985	// The metadata values that you can use to filter and group your results. You
2986	// can use GetDimensionValues to find specific values.
2987	Values []*string `type:"list"`
2988}
2989
2990// String returns the string representation
2991func (s DimensionValues) String() string {
2992	return awsutil.Prettify(s)
2993}
2994
2995// GoString returns the string representation
2996func (s DimensionValues) GoString() string {
2997	return s.String()
2998}
2999
3000// SetKey sets the Key field's value.
3001func (s *DimensionValues) SetKey(v string) *DimensionValues {
3002	s.Key = &v
3003	return s
3004}
3005
3006// SetMatchOptions sets the MatchOptions field's value.
3007func (s *DimensionValues) SetMatchOptions(v []*string) *DimensionValues {
3008	s.MatchOptions = v
3009	return s
3010}
3011
3012// SetValues sets the Values field's value.
3013func (s *DimensionValues) SetValues(v []*string) *DimensionValues {
3014	s.Values = v
3015	return s
3016}
3017
3018// The metadata of a specific type that you can use to filter and group your
3019// results. You can use GetDimensionValues to find specific values.
3020type DimensionValuesWithAttributes struct {
3021	_ struct{} `type:"structure"`
3022
3023	// The attribute that applies to a specific Dimension.
3024	Attributes map[string]*string `type:"map"`
3025
3026	// The value of a dimension with a specific attribute.
3027	Value *string `type:"string"`
3028}
3029
3030// String returns the string representation
3031func (s DimensionValuesWithAttributes) String() string {
3032	return awsutil.Prettify(s)
3033}
3034
3035// GoString returns the string representation
3036func (s DimensionValuesWithAttributes) GoString() string {
3037	return s.String()
3038}
3039
3040// SetAttributes sets the Attributes field's value.
3041func (s *DimensionValuesWithAttributes) SetAttributes(v map[string]*string) *DimensionValuesWithAttributes {
3042	s.Attributes = v
3043	return s
3044}
3045
3046// SetValue sets the Value field's value.
3047func (s *DimensionValuesWithAttributes) SetValue(v string) *DimensionValuesWithAttributes {
3048	s.Value = &v
3049	return s
3050}
3051
3052// Details about the Amazon EC2 instances that AWS recommends that you purchase.
3053type EC2InstanceDetails struct {
3054	_ struct{} `type:"structure"`
3055
3056	// The Availability Zone of the recommended reservation.
3057	AvailabilityZone *string `type:"string"`
3058
3059	// Whether the recommendation is for a current-generation instance.
3060	CurrentGeneration *bool `type:"boolean"`
3061
3062	// The instance family of the recommended reservation.
3063	Family *string `type:"string"`
3064
3065	// The type of instance that AWS recommends.
3066	InstanceType *string `type:"string"`
3067
3068	// The platform of the recommended reservation. The platform is the specific
3069	// combination of operating system, license model, and software on an instance.
3070	Platform *string `type:"string"`
3071
3072	// The AWS Region of the recommended reservation.
3073	Region *string `type:"string"`
3074
3075	// Whether the recommended reservation is size flexible.
3076	SizeFlexEligible *bool `type:"boolean"`
3077
3078	// Whether the recommended reservation is dedicated or shared.
3079	Tenancy *string `type:"string"`
3080}
3081
3082// String returns the string representation
3083func (s EC2InstanceDetails) String() string {
3084	return awsutil.Prettify(s)
3085}
3086
3087// GoString returns the string representation
3088func (s EC2InstanceDetails) GoString() string {
3089	return s.String()
3090}
3091
3092// SetAvailabilityZone sets the AvailabilityZone field's value.
3093func (s *EC2InstanceDetails) SetAvailabilityZone(v string) *EC2InstanceDetails {
3094	s.AvailabilityZone = &v
3095	return s
3096}
3097
3098// SetCurrentGeneration sets the CurrentGeneration field's value.
3099func (s *EC2InstanceDetails) SetCurrentGeneration(v bool) *EC2InstanceDetails {
3100	s.CurrentGeneration = &v
3101	return s
3102}
3103
3104// SetFamily sets the Family field's value.
3105func (s *EC2InstanceDetails) SetFamily(v string) *EC2InstanceDetails {
3106	s.Family = &v
3107	return s
3108}
3109
3110// SetInstanceType sets the InstanceType field's value.
3111func (s *EC2InstanceDetails) SetInstanceType(v string) *EC2InstanceDetails {
3112	s.InstanceType = &v
3113	return s
3114}
3115
3116// SetPlatform sets the Platform field's value.
3117func (s *EC2InstanceDetails) SetPlatform(v string) *EC2InstanceDetails {
3118	s.Platform = &v
3119	return s
3120}
3121
3122// SetRegion sets the Region field's value.
3123func (s *EC2InstanceDetails) SetRegion(v string) *EC2InstanceDetails {
3124	s.Region = &v
3125	return s
3126}
3127
3128// SetSizeFlexEligible sets the SizeFlexEligible field's value.
3129func (s *EC2InstanceDetails) SetSizeFlexEligible(v bool) *EC2InstanceDetails {
3130	s.SizeFlexEligible = &v
3131	return s
3132}
3133
3134// SetTenancy sets the Tenancy field's value.
3135func (s *EC2InstanceDetails) SetTenancy(v string) *EC2InstanceDetails {
3136	s.Tenancy = &v
3137	return s
3138}
3139
3140// Details on the Amazon EC2 Resource.
3141type EC2ResourceDetails struct {
3142	_ struct{} `type:"structure"`
3143
3144	// Hourly public On Demand rate for the instance type.
3145	HourlyOnDemandRate *string `type:"string"`
3146
3147	// The type of Amazon Web Services instance.
3148	InstanceType *string `type:"string"`
3149
3150	// Memory capacity of Amazon Web Services instance.
3151	Memory *string `type:"string"`
3152
3153	// Network performance capacity of the Amazon Web Services instance.
3154	NetworkPerformance *string `type:"string"`
3155
3156	// The platform of the Amazon Web Services instance. The platform is the specific
3157	// combination of operating system, license model, and software on an instance.
3158	Platform *string `type:"string"`
3159
3160	// The Amazon Web Services Region of the instance.
3161	Region *string `type:"string"`
3162
3163	// The SKU of the product.
3164	Sku *string `type:"string"`
3165
3166	// The disk storage of the Amazon Web Services instance (Not EBS storage).
3167	Storage *string `type:"string"`
3168
3169	// Number of VCPU cores in the Amazon Web Services instance type.
3170	Vcpu *string `type:"string"`
3171}
3172
3173// String returns the string representation
3174func (s EC2ResourceDetails) String() string {
3175	return awsutil.Prettify(s)
3176}
3177
3178// GoString returns the string representation
3179func (s EC2ResourceDetails) GoString() string {
3180	return s.String()
3181}
3182
3183// SetHourlyOnDemandRate sets the HourlyOnDemandRate field's value.
3184func (s *EC2ResourceDetails) SetHourlyOnDemandRate(v string) *EC2ResourceDetails {
3185	s.HourlyOnDemandRate = &v
3186	return s
3187}
3188
3189// SetInstanceType sets the InstanceType field's value.
3190func (s *EC2ResourceDetails) SetInstanceType(v string) *EC2ResourceDetails {
3191	s.InstanceType = &v
3192	return s
3193}
3194
3195// SetMemory sets the Memory field's value.
3196func (s *EC2ResourceDetails) SetMemory(v string) *EC2ResourceDetails {
3197	s.Memory = &v
3198	return s
3199}
3200
3201// SetNetworkPerformance sets the NetworkPerformance field's value.
3202func (s *EC2ResourceDetails) SetNetworkPerformance(v string) *EC2ResourceDetails {
3203	s.NetworkPerformance = &v
3204	return s
3205}
3206
3207// SetPlatform sets the Platform field's value.
3208func (s *EC2ResourceDetails) SetPlatform(v string) *EC2ResourceDetails {
3209	s.Platform = &v
3210	return s
3211}
3212
3213// SetRegion sets the Region field's value.
3214func (s *EC2ResourceDetails) SetRegion(v string) *EC2ResourceDetails {
3215	s.Region = &v
3216	return s
3217}
3218
3219// SetSku sets the Sku field's value.
3220func (s *EC2ResourceDetails) SetSku(v string) *EC2ResourceDetails {
3221	s.Sku = &v
3222	return s
3223}
3224
3225// SetStorage sets the Storage field's value.
3226func (s *EC2ResourceDetails) SetStorage(v string) *EC2ResourceDetails {
3227	s.Storage = &v
3228	return s
3229}
3230
3231// SetVcpu sets the Vcpu field's value.
3232func (s *EC2ResourceDetails) SetVcpu(v string) *EC2ResourceDetails {
3233	s.Vcpu = &v
3234	return s
3235}
3236
3237// Utilization metrics of the instance.
3238type EC2ResourceUtilization struct {
3239	_ struct{} `type:"structure"`
3240
3241	// Maximum observed or expected CPU utilization of the instance.
3242	MaxCpuUtilizationPercentage *string `type:"string"`
3243
3244	// Maximum observed or expected memory utilization of the instance.
3245	MaxMemoryUtilizationPercentage *string `type:"string"`
3246
3247	// Maximum observed or expected storage utilization of the instance (does not
3248	// measure EBS storage).
3249	MaxStorageUtilizationPercentage *string `type:"string"`
3250}
3251
3252// String returns the string representation
3253func (s EC2ResourceUtilization) String() string {
3254	return awsutil.Prettify(s)
3255}
3256
3257// GoString returns the string representation
3258func (s EC2ResourceUtilization) GoString() string {
3259	return s.String()
3260}
3261
3262// SetMaxCpuUtilizationPercentage sets the MaxCpuUtilizationPercentage field's value.
3263func (s *EC2ResourceUtilization) SetMaxCpuUtilizationPercentage(v string) *EC2ResourceUtilization {
3264	s.MaxCpuUtilizationPercentage = &v
3265	return s
3266}
3267
3268// SetMaxMemoryUtilizationPercentage sets the MaxMemoryUtilizationPercentage field's value.
3269func (s *EC2ResourceUtilization) SetMaxMemoryUtilizationPercentage(v string) *EC2ResourceUtilization {
3270	s.MaxMemoryUtilizationPercentage = &v
3271	return s
3272}
3273
3274// SetMaxStorageUtilizationPercentage sets the MaxStorageUtilizationPercentage field's value.
3275func (s *EC2ResourceUtilization) SetMaxStorageUtilizationPercentage(v string) *EC2ResourceUtilization {
3276	s.MaxStorageUtilizationPercentage = &v
3277	return s
3278}
3279
3280// The Amazon EC2 hardware specifications that you want AWS to provide recommendations
3281// for.
3282type EC2Specification struct {
3283	_ struct{} `type:"structure"`
3284
3285	// Whether you want a recommendation for standard or convertible reservations.
3286	OfferingClass *string `type:"string" enum:"OfferingClass"`
3287}
3288
3289// String returns the string representation
3290func (s EC2Specification) String() string {
3291	return awsutil.Prettify(s)
3292}
3293
3294// GoString returns the string representation
3295func (s EC2Specification) GoString() string {
3296	return s.String()
3297}
3298
3299// SetOfferingClass sets the OfferingClass field's value.
3300func (s *EC2Specification) SetOfferingClass(v string) *EC2Specification {
3301	s.OfferingClass = &v
3302	return s
3303}
3304
3305// Details about the Amazon ES instances that AWS recommends that you purchase.
3306type ESInstanceDetails struct {
3307	_ struct{} `type:"structure"`
3308
3309	// Whether the recommendation is for a current-generation instance.
3310	CurrentGeneration *bool `type:"boolean"`
3311
3312	// The class of instance that AWS recommends.
3313	InstanceClass *string `type:"string"`
3314
3315	// The size of instance that AWS recommends.
3316	InstanceSize *string `type:"string"`
3317
3318	// The AWS Region of the recommended reservation.
3319	Region *string `type:"string"`
3320
3321	// Whether the recommended reservation is size flexible.
3322	SizeFlexEligible *bool `type:"boolean"`
3323}
3324
3325// String returns the string representation
3326func (s ESInstanceDetails) String() string {
3327	return awsutil.Prettify(s)
3328}
3329
3330// GoString returns the string representation
3331func (s ESInstanceDetails) GoString() string {
3332	return s.String()
3333}
3334
3335// SetCurrentGeneration sets the CurrentGeneration field's value.
3336func (s *ESInstanceDetails) SetCurrentGeneration(v bool) *ESInstanceDetails {
3337	s.CurrentGeneration = &v
3338	return s
3339}
3340
3341// SetInstanceClass sets the InstanceClass field's value.
3342func (s *ESInstanceDetails) SetInstanceClass(v string) *ESInstanceDetails {
3343	s.InstanceClass = &v
3344	return s
3345}
3346
3347// SetInstanceSize sets the InstanceSize field's value.
3348func (s *ESInstanceDetails) SetInstanceSize(v string) *ESInstanceDetails {
3349	s.InstanceSize = &v
3350	return s
3351}
3352
3353// SetRegion sets the Region field's value.
3354func (s *ESInstanceDetails) SetRegion(v string) *ESInstanceDetails {
3355	s.Region = &v
3356	return s
3357}
3358
3359// SetSizeFlexEligible sets the SizeFlexEligible field's value.
3360func (s *ESInstanceDetails) SetSizeFlexEligible(v bool) *ESInstanceDetails {
3361	s.SizeFlexEligible = &v
3362	return s
3363}
3364
3365// Details about the Amazon ElastiCache instances that AWS recommends that you
3366// purchase.
3367type ElastiCacheInstanceDetails struct {
3368	_ struct{} `type:"structure"`
3369
3370	// Whether the recommendation is for a current generation instance.
3371	CurrentGeneration *bool `type:"boolean"`
3372
3373	// The instance family of the recommended reservation.
3374	Family *string `type:"string"`
3375
3376	// The type of node that AWS recommends.
3377	NodeType *string `type:"string"`
3378
3379	// The description of the recommended reservation.
3380	ProductDescription *string `type:"string"`
3381
3382	// The AWS Region of the recommended reservation.
3383	Region *string `type:"string"`
3384
3385	// Whether the recommended reservation is size flexible.
3386	SizeFlexEligible *bool `type:"boolean"`
3387}
3388
3389// String returns the string representation
3390func (s ElastiCacheInstanceDetails) String() string {
3391	return awsutil.Prettify(s)
3392}
3393
3394// GoString returns the string representation
3395func (s ElastiCacheInstanceDetails) GoString() string {
3396	return s.String()
3397}
3398
3399// SetCurrentGeneration sets the CurrentGeneration field's value.
3400func (s *ElastiCacheInstanceDetails) SetCurrentGeneration(v bool) *ElastiCacheInstanceDetails {
3401	s.CurrentGeneration = &v
3402	return s
3403}
3404
3405// SetFamily sets the Family field's value.
3406func (s *ElastiCacheInstanceDetails) SetFamily(v string) *ElastiCacheInstanceDetails {
3407	s.Family = &v
3408	return s
3409}
3410
3411// SetNodeType sets the NodeType field's value.
3412func (s *ElastiCacheInstanceDetails) SetNodeType(v string) *ElastiCacheInstanceDetails {
3413	s.NodeType = &v
3414	return s
3415}
3416
3417// SetProductDescription sets the ProductDescription field's value.
3418func (s *ElastiCacheInstanceDetails) SetProductDescription(v string) *ElastiCacheInstanceDetails {
3419	s.ProductDescription = &v
3420	return s
3421}
3422
3423// SetRegion sets the Region field's value.
3424func (s *ElastiCacheInstanceDetails) SetRegion(v string) *ElastiCacheInstanceDetails {
3425	s.Region = &v
3426	return s
3427}
3428
3429// SetSizeFlexEligible sets the SizeFlexEligible field's value.
3430func (s *ElastiCacheInstanceDetails) SetSizeFlexEligible(v bool) *ElastiCacheInstanceDetails {
3431	s.SizeFlexEligible = &v
3432	return s
3433}
3434
3435// Use Expression to filter by cost or by usage. There are two patterns:
3436//
3437//    * Simple dimension values - You can set the dimension name and values
3438//    for the filters that you plan to use. For example, you can filter for
3439//    REGION==us-east-1 OR REGION==us-west-1. The Expression for that looks
3440//    like this: { "Dimensions": { "Key": "REGION", "Values": [ "us-east-1",
3441//    “us-west-1” ] } } The list of dimension values are OR'd together to
3442//    retrieve cost or usage data. You can create Expression and DimensionValues
3443//    objects using either with* methods or set* methods in multiple lines.
3444//
3445//    * Compound dimension values with logical operations - You can use multiple
3446//    Expression types and the logical operators AND/OR/NOT to create a list
3447//    of one or more Expression objects. This allows you to filter on more advanced
3448//    options. For example, you can filter on ((REGION == us-east-1 OR REGION
3449//    == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
3450//    The Expression for that looks like this: { "And": [ {"Or": [ {"Dimensions":
3451//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
3452//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
3453//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
3454//    Expression can have only one operator, the service returns an error if
3455//    more than one is specified. The following example shows an Expression
3456//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
3457//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
3458//
3459// For GetRightsizingRecommendation action, a combination of OR and NOT is not
3460// supported. OR is not supported between different dimensions, or dimensions
3461// and tags. NOT operators aren't supported. Dimensions are also limited to
3462// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
3463type Expression struct {
3464	_ struct{} `type:"structure"`
3465
3466	// Return results that match both Dimension objects.
3467	And []*Expression `type:"list"`
3468
3469	// The filter based on CostCategory values.
3470	CostCategories *CostCategoryValues `type:"structure"`
3471
3472	// The specific Dimension to use for Expression.
3473	Dimensions *DimensionValues `type:"structure"`
3474
3475	// Return results that don't match a Dimension object.
3476	Not *Expression `type:"structure"`
3477
3478	// Return results that match either Dimension object.
3479	Or []*Expression `type:"list"`
3480
3481	// The specific Tag to use for Expression.
3482	Tags *TagValues `type:"structure"`
3483}
3484
3485// String returns the string representation
3486func (s Expression) String() string {
3487	return awsutil.Prettify(s)
3488}
3489
3490// GoString returns the string representation
3491func (s Expression) GoString() string {
3492	return s.String()
3493}
3494
3495// Validate inspects the fields of the type to determine if they are valid.
3496func (s *Expression) Validate() error {
3497	invalidParams := request.ErrInvalidParams{Context: "Expression"}
3498	if s.CostCategories != nil {
3499		if err := s.CostCategories.Validate(); err != nil {
3500			invalidParams.AddNested("CostCategories", err.(request.ErrInvalidParams))
3501		}
3502	}
3503	if s.Not != nil {
3504		if err := s.Not.Validate(); err != nil {
3505			invalidParams.AddNested("Not", err.(request.ErrInvalidParams))
3506		}
3507	}
3508	if s.Or != nil {
3509		for i, v := range s.Or {
3510			if v == nil {
3511				continue
3512			}
3513			if err := v.Validate(); err != nil {
3514				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Or", i), err.(request.ErrInvalidParams))
3515			}
3516		}
3517	}
3518
3519	if invalidParams.Len() > 0 {
3520		return invalidParams
3521	}
3522	return nil
3523}
3524
3525// SetAnd sets the And field's value.
3526func (s *Expression) SetAnd(v []*Expression) *Expression {
3527	s.And = v
3528	return s
3529}
3530
3531// SetCostCategories sets the CostCategories field's value.
3532func (s *Expression) SetCostCategories(v *CostCategoryValues) *Expression {
3533	s.CostCategories = v
3534	return s
3535}
3536
3537// SetDimensions sets the Dimensions field's value.
3538func (s *Expression) SetDimensions(v *DimensionValues) *Expression {
3539	s.Dimensions = v
3540	return s
3541}
3542
3543// SetNot sets the Not field's value.
3544func (s *Expression) SetNot(v *Expression) *Expression {
3545	s.Not = v
3546	return s
3547}
3548
3549// SetOr sets the Or field's value.
3550func (s *Expression) SetOr(v []*Expression) *Expression {
3551	s.Or = v
3552	return s
3553}
3554
3555// SetTags sets the Tags field's value.
3556func (s *Expression) SetTags(v *TagValues) *Expression {
3557	s.Tags = v
3558	return s
3559}
3560
3561// The forecast created for your query.
3562type ForecastResult struct {
3563	_ struct{} `type:"structure"`
3564
3565	// The mean value of the forecast.
3566	MeanValue *string `type:"string"`
3567
3568	// The lower limit for the prediction interval.
3569	PredictionIntervalLowerBound *string `type:"string"`
3570
3571	// The upper limit for the prediction interval.
3572	PredictionIntervalUpperBound *string `type:"string"`
3573
3574	// The period of time that the forecast covers.
3575	TimePeriod *DateInterval `type:"structure"`
3576}
3577
3578// String returns the string representation
3579func (s ForecastResult) String() string {
3580	return awsutil.Prettify(s)
3581}
3582
3583// GoString returns the string representation
3584func (s ForecastResult) GoString() string {
3585	return s.String()
3586}
3587
3588// SetMeanValue sets the MeanValue field's value.
3589func (s *ForecastResult) SetMeanValue(v string) *ForecastResult {
3590	s.MeanValue = &v
3591	return s
3592}
3593
3594// SetPredictionIntervalLowerBound sets the PredictionIntervalLowerBound field's value.
3595func (s *ForecastResult) SetPredictionIntervalLowerBound(v string) *ForecastResult {
3596	s.PredictionIntervalLowerBound = &v
3597	return s
3598}
3599
3600// SetPredictionIntervalUpperBound sets the PredictionIntervalUpperBound field's value.
3601func (s *ForecastResult) SetPredictionIntervalUpperBound(v string) *ForecastResult {
3602	s.PredictionIntervalUpperBound = &v
3603	return s
3604}
3605
3606// SetTimePeriod sets the TimePeriod field's value.
3607func (s *ForecastResult) SetTimePeriod(v *DateInterval) *ForecastResult {
3608	s.TimePeriod = v
3609	return s
3610}
3611
3612type GetCostAndUsageInput struct {
3613	_ struct{} `type:"structure"`
3614
3615	// Filters AWS costs by different dimensions. For example, you can specify SERVICE
3616	// and LINKED_ACCOUNT and get the costs that are associated with that account's
3617	// usage of that service. You can nest Expression objects to define any combination
3618	// of dimension filters. For more information, see Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html).
3619	Filter *Expression `type:"structure"`
3620
3621	// Sets the AWS cost granularity to MONTHLY or DAILY, or HOURLY. If Granularity
3622	// isn't set, the response object doesn't include the Granularity, either MONTHLY
3623	// or DAILY, or HOURLY.
3624	Granularity *string `type:"string" enum:"Granularity"`
3625
3626	// You can group AWS costs using up to two different groups, either dimensions,
3627	// tag keys, or both.
3628	//
3629	// When you group by tag key, you get all tag values, including empty strings.
3630	//
3631	// Valid values are AZ, INSTANCE_TYPE, LEGAL_ENTITY_NAME, LINKED_ACCOUNT, OPERATION,
3632	// PLATFORM, PURCHASE_TYPE, SERVICE, TAGS, TENANCY, RECORD_TYPE, and USAGE_TYPE.
3633	GroupBy []*GroupDefinition `type:"list"`
3634
3635	// Which metrics are returned in the query. For more information about blended
3636	// and unblended rates, see Why does the "blended" annotation appear on some
3637	// line items in my bill? (http://aws.amazon.com/premiumsupport/knowledge-center/blended-rates-intro/).
3638	//
3639	// Valid values are AmortizedCost, BlendedCost, NetAmortizedCost, NetUnblendedCost,
3640	// NormalizedUsageAmount, UnblendedCost, and UsageQuantity.
3641	//
3642	// If you return the UsageQuantity metric, the service aggregates all usage
3643	// numbers without taking into account the units. For example, if you aggregate
3644	// usageQuantity across all of Amazon EC2, the results aren't meaningful because
3645	// Amazon EC2 compute hours and data transfer are measured in different units
3646	// (for example, hours vs. GB). To get more meaningful UsageQuantity metrics,
3647	// filter by UsageType or UsageTypeGroups.
3648	//
3649	// Metrics is required for GetCostAndUsage requests.
3650	Metrics []*string `type:"list"`
3651
3652	// The token to retrieve the next set of results. AWS provides the token when
3653	// the response from a previous call has more results than the maximum page
3654	// size.
3655	NextPageToken *string `type:"string"`
3656
3657	// Sets the start and end dates for retrieving AWS costs. The start date is
3658	// inclusive, but the end date is exclusive. For example, if start is 2017-01-01
3659	// and end is 2017-05-01, then the cost and usage data is retrieved from 2017-01-01
3660	// up to and including 2017-04-30 but not including 2017-05-01.
3661	//
3662	// TimePeriod is a required field
3663	TimePeriod *DateInterval `type:"structure" required:"true"`
3664}
3665
3666// String returns the string representation
3667func (s GetCostAndUsageInput) String() string {
3668	return awsutil.Prettify(s)
3669}
3670
3671// GoString returns the string representation
3672func (s GetCostAndUsageInput) GoString() string {
3673	return s.String()
3674}
3675
3676// Validate inspects the fields of the type to determine if they are valid.
3677func (s *GetCostAndUsageInput) Validate() error {
3678	invalidParams := request.ErrInvalidParams{Context: "GetCostAndUsageInput"}
3679	if s.TimePeriod == nil {
3680		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
3681	}
3682	if s.Filter != nil {
3683		if err := s.Filter.Validate(); err != nil {
3684			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
3685		}
3686	}
3687	if s.TimePeriod != nil {
3688		if err := s.TimePeriod.Validate(); err != nil {
3689			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
3690		}
3691	}
3692
3693	if invalidParams.Len() > 0 {
3694		return invalidParams
3695	}
3696	return nil
3697}
3698
3699// SetFilter sets the Filter field's value.
3700func (s *GetCostAndUsageInput) SetFilter(v *Expression) *GetCostAndUsageInput {
3701	s.Filter = v
3702	return s
3703}
3704
3705// SetGranularity sets the Granularity field's value.
3706func (s *GetCostAndUsageInput) SetGranularity(v string) *GetCostAndUsageInput {
3707	s.Granularity = &v
3708	return s
3709}
3710
3711// SetGroupBy sets the GroupBy field's value.
3712func (s *GetCostAndUsageInput) SetGroupBy(v []*GroupDefinition) *GetCostAndUsageInput {
3713	s.GroupBy = v
3714	return s
3715}
3716
3717// SetMetrics sets the Metrics field's value.
3718func (s *GetCostAndUsageInput) SetMetrics(v []*string) *GetCostAndUsageInput {
3719	s.Metrics = v
3720	return s
3721}
3722
3723// SetNextPageToken sets the NextPageToken field's value.
3724func (s *GetCostAndUsageInput) SetNextPageToken(v string) *GetCostAndUsageInput {
3725	s.NextPageToken = &v
3726	return s
3727}
3728
3729// SetTimePeriod sets the TimePeriod field's value.
3730func (s *GetCostAndUsageInput) SetTimePeriod(v *DateInterval) *GetCostAndUsageInput {
3731	s.TimePeriod = v
3732	return s
3733}
3734
3735type GetCostAndUsageOutput struct {
3736	_ struct{} `type:"structure"`
3737
3738	// The groups that are specified by the Filter or GroupBy parameters in the
3739	// request.
3740	GroupDefinitions []*GroupDefinition `type:"list"`
3741
3742	// The token for the next set of retrievable results. AWS provides the token
3743	// when the response from a previous call has more results than the maximum
3744	// page size.
3745	NextPageToken *string `type:"string"`
3746
3747	// The time period that is covered by the results in the response.
3748	ResultsByTime []*ResultByTime `type:"list"`
3749}
3750
3751// String returns the string representation
3752func (s GetCostAndUsageOutput) String() string {
3753	return awsutil.Prettify(s)
3754}
3755
3756// GoString returns the string representation
3757func (s GetCostAndUsageOutput) GoString() string {
3758	return s.String()
3759}
3760
3761// SetGroupDefinitions sets the GroupDefinitions field's value.
3762func (s *GetCostAndUsageOutput) SetGroupDefinitions(v []*GroupDefinition) *GetCostAndUsageOutput {
3763	s.GroupDefinitions = v
3764	return s
3765}
3766
3767// SetNextPageToken sets the NextPageToken field's value.
3768func (s *GetCostAndUsageOutput) SetNextPageToken(v string) *GetCostAndUsageOutput {
3769	s.NextPageToken = &v
3770	return s
3771}
3772
3773// SetResultsByTime sets the ResultsByTime field's value.
3774func (s *GetCostAndUsageOutput) SetResultsByTime(v []*ResultByTime) *GetCostAndUsageOutput {
3775	s.ResultsByTime = v
3776	return s
3777}
3778
3779type GetCostAndUsageWithResourcesInput struct {
3780	_ struct{} `type:"structure"`
3781
3782	// Filters Amazon Web Services costs by different dimensions. For example, you
3783	// can specify SERVICE and LINKED_ACCOUNT and get the costs that are associated
3784	// with that account's usage of that service. You can nest Expression objects
3785	// to define any combination of dimension filters. For more information, see
3786	// Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html).
3787	//
3788	// The GetCostAndUsageWithResources operation requires that you either group
3789	// by or filter by a ResourceId.
3790	Filter *Expression `type:"structure"`
3791
3792	// Sets the AWS cost granularity to MONTHLY, DAILY, or HOURLY. If Granularity
3793	// isn't set, the response object doesn't include the Granularity, MONTHLY,
3794	// DAILY, or HOURLY.
3795	Granularity *string `type:"string" enum:"Granularity"`
3796
3797	// You can group Amazon Web Services costs using up to two different groups:
3798	// either dimensions, tag keys, or both.
3799	GroupBy []*GroupDefinition `type:"list"`
3800
3801	// Which metrics are returned in the query. For more information about blended
3802	// and unblended rates, see Why does the "blended" annotation appear on some
3803	// line items in my bill? (http://aws.amazon.com/premiumsupport/knowledge-center/blended-rates-intro/).
3804	//
3805	// Valid values are AmortizedCost, BlendedCost, NetAmortizedCost, NetUnblendedCost,
3806	// NormalizedUsageAmount, UnblendedCost, and UsageQuantity.
3807	//
3808	// If you return the UsageQuantity metric, the service aggregates all usage
3809	// numbers without taking the units into account. For example, if you aggregate
3810	// usageQuantity across all of Amazon EC2, the results aren't meaningful because
3811	// Amazon EC2 compute hours and data transfer are measured in different units
3812	// (for example, hours vs. GB). To get more meaningful UsageQuantity metrics,
3813	// filter by UsageType or UsageTypeGroups.
3814	//
3815	// Metrics is required for GetCostAndUsageWithResources requests.
3816	Metrics []*string `type:"list"`
3817
3818	// The token to retrieve the next set of results. AWS provides the token when
3819	// the response from a previous call has more results than the maximum page
3820	// size.
3821	NextPageToken *string `type:"string"`
3822
3823	// Sets the start and end dates for retrieving Amazon Web Services costs. The
3824	// range must be within the last 14 days (the start date cannot be earlier than
3825	// 14 days ago). The start date is inclusive, but the end date is exclusive.
3826	// For example, if start is 2017-01-01 and end is 2017-05-01, then the cost
3827	// and usage data is retrieved from 2017-01-01 up to and including 2017-04-30
3828	// but not including 2017-05-01.
3829	//
3830	// TimePeriod is a required field
3831	TimePeriod *DateInterval `type:"structure" required:"true"`
3832}
3833
3834// String returns the string representation
3835func (s GetCostAndUsageWithResourcesInput) String() string {
3836	return awsutil.Prettify(s)
3837}
3838
3839// GoString returns the string representation
3840func (s GetCostAndUsageWithResourcesInput) GoString() string {
3841	return s.String()
3842}
3843
3844// Validate inspects the fields of the type to determine if they are valid.
3845func (s *GetCostAndUsageWithResourcesInput) Validate() error {
3846	invalidParams := request.ErrInvalidParams{Context: "GetCostAndUsageWithResourcesInput"}
3847	if s.TimePeriod == nil {
3848		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
3849	}
3850	if s.Filter != nil {
3851		if err := s.Filter.Validate(); err != nil {
3852			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
3853		}
3854	}
3855	if s.TimePeriod != nil {
3856		if err := s.TimePeriod.Validate(); err != nil {
3857			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
3858		}
3859	}
3860
3861	if invalidParams.Len() > 0 {
3862		return invalidParams
3863	}
3864	return nil
3865}
3866
3867// SetFilter sets the Filter field's value.
3868func (s *GetCostAndUsageWithResourcesInput) SetFilter(v *Expression) *GetCostAndUsageWithResourcesInput {
3869	s.Filter = v
3870	return s
3871}
3872
3873// SetGranularity sets the Granularity field's value.
3874func (s *GetCostAndUsageWithResourcesInput) SetGranularity(v string) *GetCostAndUsageWithResourcesInput {
3875	s.Granularity = &v
3876	return s
3877}
3878
3879// SetGroupBy sets the GroupBy field's value.
3880func (s *GetCostAndUsageWithResourcesInput) SetGroupBy(v []*GroupDefinition) *GetCostAndUsageWithResourcesInput {
3881	s.GroupBy = v
3882	return s
3883}
3884
3885// SetMetrics sets the Metrics field's value.
3886func (s *GetCostAndUsageWithResourcesInput) SetMetrics(v []*string) *GetCostAndUsageWithResourcesInput {
3887	s.Metrics = v
3888	return s
3889}
3890
3891// SetNextPageToken sets the NextPageToken field's value.
3892func (s *GetCostAndUsageWithResourcesInput) SetNextPageToken(v string) *GetCostAndUsageWithResourcesInput {
3893	s.NextPageToken = &v
3894	return s
3895}
3896
3897// SetTimePeriod sets the TimePeriod field's value.
3898func (s *GetCostAndUsageWithResourcesInput) SetTimePeriod(v *DateInterval) *GetCostAndUsageWithResourcesInput {
3899	s.TimePeriod = v
3900	return s
3901}
3902
3903type GetCostAndUsageWithResourcesOutput struct {
3904	_ struct{} `type:"structure"`
3905
3906	// The groups that are specified by the Filter or GroupBy parameters in the
3907	// request.
3908	GroupDefinitions []*GroupDefinition `type:"list"`
3909
3910	// The token for the next set of retrievable results. AWS provides the token
3911	// when the response from a previous call has more results than the maximum
3912	// page size.
3913	NextPageToken *string `type:"string"`
3914
3915	// The time period that is covered by the results in the response.
3916	ResultsByTime []*ResultByTime `type:"list"`
3917}
3918
3919// String returns the string representation
3920func (s GetCostAndUsageWithResourcesOutput) String() string {
3921	return awsutil.Prettify(s)
3922}
3923
3924// GoString returns the string representation
3925func (s GetCostAndUsageWithResourcesOutput) GoString() string {
3926	return s.String()
3927}
3928
3929// SetGroupDefinitions sets the GroupDefinitions field's value.
3930func (s *GetCostAndUsageWithResourcesOutput) SetGroupDefinitions(v []*GroupDefinition) *GetCostAndUsageWithResourcesOutput {
3931	s.GroupDefinitions = v
3932	return s
3933}
3934
3935// SetNextPageToken sets the NextPageToken field's value.
3936func (s *GetCostAndUsageWithResourcesOutput) SetNextPageToken(v string) *GetCostAndUsageWithResourcesOutput {
3937	s.NextPageToken = &v
3938	return s
3939}
3940
3941// SetResultsByTime sets the ResultsByTime field's value.
3942func (s *GetCostAndUsageWithResourcesOutput) SetResultsByTime(v []*ResultByTime) *GetCostAndUsageWithResourcesOutput {
3943	s.ResultsByTime = v
3944	return s
3945}
3946
3947type GetCostForecastInput struct {
3948	_ struct{} `type:"structure"`
3949
3950	// The filters that you want to use to filter your forecast. Cost Explorer API
3951	// supports all of the Cost Explorer filters.
3952	Filter *Expression `type:"structure"`
3953
3954	// How granular you want the forecast to be. You can get 3 months of DAILY forecasts
3955	// or 12 months of MONTHLY forecasts.
3956	//
3957	// The GetCostForecast operation supports only DAILY and MONTHLY granularities.
3958	//
3959	// Granularity is a required field
3960	Granularity *string `type:"string" required:"true" enum:"Granularity"`
3961
3962	// Which metric Cost Explorer uses to create your forecast. For more information
3963	// about blended and unblended rates, see Why does the "blended" annotation
3964	// appear on some line items in my bill? (http://aws.amazon.com/premiumsupport/knowledge-center/blended-rates-intro/).
3965	//
3966	// Valid values for a GetCostForecast call are the following:
3967	//
3968	//    * AMORTIZED_COST
3969	//
3970	//    * BLENDED_COST
3971	//
3972	//    * NET_AMORTIZED_COST
3973	//
3974	//    * NET_UNBLENDED_COST
3975	//
3976	//    * UNBLENDED_COST
3977	//
3978	// Metric is a required field
3979	Metric *string `type:"string" required:"true" enum:"Metric"`
3980
3981	// Cost Explorer always returns the mean forecast as a single point. You can
3982	// request a prediction interval around the mean by specifying a confidence
3983	// level. The higher the confidence level, the more confident Cost Explorer
3984	// is about the actual value falling in the prediction interval. Higher confidence
3985	// levels result in wider prediction intervals.
3986	PredictionIntervalLevel *int64 `min:"51" type:"integer"`
3987
3988	// The period of time that you want the forecast to cover.
3989	//
3990	// TimePeriod is a required field
3991	TimePeriod *DateInterval `type:"structure" required:"true"`
3992}
3993
3994// String returns the string representation
3995func (s GetCostForecastInput) String() string {
3996	return awsutil.Prettify(s)
3997}
3998
3999// GoString returns the string representation
4000func (s GetCostForecastInput) GoString() string {
4001	return s.String()
4002}
4003
4004// Validate inspects the fields of the type to determine if they are valid.
4005func (s *GetCostForecastInput) Validate() error {
4006	invalidParams := request.ErrInvalidParams{Context: "GetCostForecastInput"}
4007	if s.Granularity == nil {
4008		invalidParams.Add(request.NewErrParamRequired("Granularity"))
4009	}
4010	if s.Metric == nil {
4011		invalidParams.Add(request.NewErrParamRequired("Metric"))
4012	}
4013	if s.PredictionIntervalLevel != nil && *s.PredictionIntervalLevel < 51 {
4014		invalidParams.Add(request.NewErrParamMinValue("PredictionIntervalLevel", 51))
4015	}
4016	if s.TimePeriod == nil {
4017		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
4018	}
4019	if s.Filter != nil {
4020		if err := s.Filter.Validate(); err != nil {
4021			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
4022		}
4023	}
4024	if s.TimePeriod != nil {
4025		if err := s.TimePeriod.Validate(); err != nil {
4026			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
4027		}
4028	}
4029
4030	if invalidParams.Len() > 0 {
4031		return invalidParams
4032	}
4033	return nil
4034}
4035
4036// SetFilter sets the Filter field's value.
4037func (s *GetCostForecastInput) SetFilter(v *Expression) *GetCostForecastInput {
4038	s.Filter = v
4039	return s
4040}
4041
4042// SetGranularity sets the Granularity field's value.
4043func (s *GetCostForecastInput) SetGranularity(v string) *GetCostForecastInput {
4044	s.Granularity = &v
4045	return s
4046}
4047
4048// SetMetric sets the Metric field's value.
4049func (s *GetCostForecastInput) SetMetric(v string) *GetCostForecastInput {
4050	s.Metric = &v
4051	return s
4052}
4053
4054// SetPredictionIntervalLevel sets the PredictionIntervalLevel field's value.
4055func (s *GetCostForecastInput) SetPredictionIntervalLevel(v int64) *GetCostForecastInput {
4056	s.PredictionIntervalLevel = &v
4057	return s
4058}
4059
4060// SetTimePeriod sets the TimePeriod field's value.
4061func (s *GetCostForecastInput) SetTimePeriod(v *DateInterval) *GetCostForecastInput {
4062	s.TimePeriod = v
4063	return s
4064}
4065
4066type GetCostForecastOutput struct {
4067	_ struct{} `type:"structure"`
4068
4069	// The forecasts for your query, in order. For DAILY forecasts, this is a list
4070	// of days. For MONTHLY forecasts, this is a list of months.
4071	ForecastResultsByTime []*ForecastResult `type:"list"`
4072
4073	// How much you are forecasted to spend over the forecast period, in USD.
4074	Total *MetricValue `type:"structure"`
4075}
4076
4077// String returns the string representation
4078func (s GetCostForecastOutput) String() string {
4079	return awsutil.Prettify(s)
4080}
4081
4082// GoString returns the string representation
4083func (s GetCostForecastOutput) GoString() string {
4084	return s.String()
4085}
4086
4087// SetForecastResultsByTime sets the ForecastResultsByTime field's value.
4088func (s *GetCostForecastOutput) SetForecastResultsByTime(v []*ForecastResult) *GetCostForecastOutput {
4089	s.ForecastResultsByTime = v
4090	return s
4091}
4092
4093// SetTotal sets the Total field's value.
4094func (s *GetCostForecastOutput) SetTotal(v *MetricValue) *GetCostForecastOutput {
4095	s.Total = v
4096	return s
4097}
4098
4099type GetDimensionValuesInput struct {
4100	_ struct{} `type:"structure"`
4101
4102	// The context for the call to GetDimensionValues. This can be RESERVATIONS
4103	// or COST_AND_USAGE. The default value is COST_AND_USAGE. If the context is
4104	// set to RESERVATIONS, the resulting dimension values can be used in the GetReservationUtilization
4105	// operation. If the context is set to COST_AND_USAGE, the resulting dimension
4106	// values can be used in the GetCostAndUsage operation.
4107	//
4108	// If you set the context to COST_AND_USAGE, you can use the following dimensions
4109	// for searching:
4110	//
4111	//    * AZ - The Availability Zone. An example is us-east-1a.
4112	//
4113	//    * DATABASE_ENGINE - The Amazon Relational Database Service database. Examples
4114	//    are Aurora or MySQL.
4115	//
4116	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
4117	//
4118	//    * LEGAL_ENTITY_NAME - The name of the organization that sells you AWS
4119	//    services, such as Amazon Web Services.
4120	//
4121	//    * LINKED_ACCOUNT - The description in the attribute map that includes
4122	//    the full name of the member account. The value field contains the AWS
4123	//    ID of the member account.
4124	//
4125	//    * OPERATING_SYSTEM - The operating system. Examples are Windows or Linux.
4126	//
4127	//    * OPERATION - The action performed. Examples include RunInstance and CreateBucket.
4128	//
4129	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
4130	//    Linux.
4131	//
4132	//    * PURCHASE_TYPE - The reservation type of the purchase to which this usage
4133	//    is related. Examples include On-Demand Instances and Standard Reserved
4134	//    Instances.
4135	//
4136	//    * SERVICE - The AWS service such as Amazon DynamoDB.
4137	//
4138	//    * USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes.
4139	//    The response for the GetDimensionValues operation includes a unit attribute.
4140	//    Examples include GB and Hrs.
4141	//
4142	//    * USAGE_TYPE_GROUP - The grouping of common usage types. An example is
4143	//    Amazon EC2: CloudWatch – Alarms. The response for this operation includes
4144	//    a unit attribute.
4145	//
4146	//    * RECORD_TYPE - The different types of charges such as RI fees, usage
4147	//    costs, tax refunds, and credits.
4148	//
4149	//    * RESOURCE_ID - The unique identifier of the resource. ResourceId is an
4150	//    opt-in feature only available for last 14 days for EC2-Compute Service.
4151	//
4152	// If you set the context to RESERVATIONS, you can use the following dimensions
4153	// for searching:
4154	//
4155	//    * AZ - The Availability Zone. An example is us-east-1a.
4156	//
4157	//    * CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are
4158	//    Windows or Linux.
4159	//
4160	//    * DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service
4161	//    deployments. Valid values are SingleAZ and MultiAZ.
4162	//
4163	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
4164	//
4165	//    * LINKED_ACCOUNT - The description in the attribute map that includes
4166	//    the full name of the member account. The value field contains the AWS
4167	//    ID of the member account.
4168	//
4169	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
4170	//    Linux.
4171	//
4172	//    * REGION - The AWS Region.
4173	//
4174	//    * SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values
4175	//    are regional or a single Availability Zone.
4176	//
4177	//    * TAG (Coverage only) - The tags that are associated with a Reserved Instance
4178	//    (RI).
4179	//
4180	//    * TENANCY - The tenancy of a resource. Examples are shared or dedicated.
4181	//
4182	// If you set the context to SAVINGS_PLANS, you can use the following dimensions
4183	// for searching:
4184	//
4185	//    * SAVINGS_PLANS_TYPE - Type of Savings Plans (EC2 Instance or Compute)
4186	//
4187	//    * PAYMENT_OPTION - Payment option for the given Savings Plans (for example,
4188	//    All Upfront)
4189	//
4190	//    * REGION - The AWS Region.
4191	//
4192	//    * INSTANCE_TYPE_FAMILY - The family of instances (For example, m5)
4193	//
4194	//    * LINKED_ACCOUNT - The description in the attribute map that includes
4195	//    the full name of the member account. The value field contains the AWS
4196	//    ID of the member account.
4197	//
4198	//    * SAVINGS_PLAN_ARN - The unique identifier for your Savings Plan
4199	Context *string `type:"string" enum:"Context"`
4200
4201	// The name of the dimension. Each Dimension is available for a different Context.
4202	// For more information, see Context.
4203	//
4204	// Dimension is a required field
4205	Dimension *string `type:"string" required:"true" enum:"Dimension"`
4206
4207	// The token to retrieve the next set of results. AWS provides the token when
4208	// the response from a previous call has more results than the maximum page
4209	// size.
4210	NextPageToken *string `type:"string"`
4211
4212	// The value that you want to search the filter values for.
4213	SearchString *string `type:"string"`
4214
4215	// The start and end dates for retrieving the dimension values. The start date
4216	// is inclusive, but the end date is exclusive. For example, if start is 2017-01-01
4217	// and end is 2017-05-01, then the cost and usage data is retrieved from 2017-01-01
4218	// up to and including 2017-04-30 but not including 2017-05-01.
4219	//
4220	// TimePeriod is a required field
4221	TimePeriod *DateInterval `type:"structure" required:"true"`
4222}
4223
4224// String returns the string representation
4225func (s GetDimensionValuesInput) String() string {
4226	return awsutil.Prettify(s)
4227}
4228
4229// GoString returns the string representation
4230func (s GetDimensionValuesInput) GoString() string {
4231	return s.String()
4232}
4233
4234// Validate inspects the fields of the type to determine if they are valid.
4235func (s *GetDimensionValuesInput) Validate() error {
4236	invalidParams := request.ErrInvalidParams{Context: "GetDimensionValuesInput"}
4237	if s.Dimension == nil {
4238		invalidParams.Add(request.NewErrParamRequired("Dimension"))
4239	}
4240	if s.TimePeriod == nil {
4241		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
4242	}
4243	if s.TimePeriod != nil {
4244		if err := s.TimePeriod.Validate(); err != nil {
4245			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
4246		}
4247	}
4248
4249	if invalidParams.Len() > 0 {
4250		return invalidParams
4251	}
4252	return nil
4253}
4254
4255// SetContext sets the Context field's value.
4256func (s *GetDimensionValuesInput) SetContext(v string) *GetDimensionValuesInput {
4257	s.Context = &v
4258	return s
4259}
4260
4261// SetDimension sets the Dimension field's value.
4262func (s *GetDimensionValuesInput) SetDimension(v string) *GetDimensionValuesInput {
4263	s.Dimension = &v
4264	return s
4265}
4266
4267// SetNextPageToken sets the NextPageToken field's value.
4268func (s *GetDimensionValuesInput) SetNextPageToken(v string) *GetDimensionValuesInput {
4269	s.NextPageToken = &v
4270	return s
4271}
4272
4273// SetSearchString sets the SearchString field's value.
4274func (s *GetDimensionValuesInput) SetSearchString(v string) *GetDimensionValuesInput {
4275	s.SearchString = &v
4276	return s
4277}
4278
4279// SetTimePeriod sets the TimePeriod field's value.
4280func (s *GetDimensionValuesInput) SetTimePeriod(v *DateInterval) *GetDimensionValuesInput {
4281	s.TimePeriod = v
4282	return s
4283}
4284
4285type GetDimensionValuesOutput struct {
4286	_ struct{} `type:"structure"`
4287
4288	// The filters that you used to filter your request. Some dimensions are available
4289	// only for a specific context.
4290	//
4291	// If you set the context to COST_AND_USAGE, you can use the following dimensions
4292	// for searching:
4293	//
4294	//    * AZ - The Availability Zone. An example is us-east-1a.
4295	//
4296	//    * DATABASE_ENGINE - The Amazon Relational Database Service database. Examples
4297	//    are Aurora or MySQL.
4298	//
4299	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
4300	//
4301	//    * LEGAL_ENTITY_NAME - The name of the organization that sells you AWS
4302	//    services, such as Amazon Web Services.
4303	//
4304	//    * LINKED_ACCOUNT - The description in the attribute map that includes
4305	//    the full name of the member account. The value field contains the AWS
4306	//    ID of the member account.
4307	//
4308	//    * OPERATING_SYSTEM - The operating system. Examples are Windows or Linux.
4309	//
4310	//    * OPERATION - The action performed. Examples include RunInstance and CreateBucket.
4311	//
4312	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
4313	//    Linux.
4314	//
4315	//    * PURCHASE_TYPE - The reservation type of the purchase to which this usage
4316	//    is related. Examples include On-Demand Instances and Standard Reserved
4317	//    Instances.
4318	//
4319	//    * SERVICE - The AWS service such as Amazon DynamoDB.
4320	//
4321	//    * USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes.
4322	//    The response for the GetDimensionValues operation includes a unit attribute.
4323	//    Examples include GB and Hrs.
4324	//
4325	//    * USAGE_TYPE_GROUP - The grouping of common usage types. An example is
4326	//    Amazon EC2: CloudWatch – Alarms. The response for this operation includes
4327	//    a unit attribute.
4328	//
4329	//    * RECORD_TYPE - The different types of charges such as RI fees, usage
4330	//    costs, tax refunds, and credits.
4331	//
4332	//    * RESOURCE_ID - The unique identifier of the resource. ResourceId is an
4333	//    opt-in feature only available for last 14 days for EC2-Compute Service.
4334	//
4335	// If you set the context to RESERVATIONS, you can use the following dimensions
4336	// for searching:
4337	//
4338	//    * AZ - The Availability Zone. An example is us-east-1a.
4339	//
4340	//    * CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are
4341	//    Windows or Linux.
4342	//
4343	//    * DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service
4344	//    deployments. Valid values are SingleAZ and MultiAZ.
4345	//
4346	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
4347	//
4348	//    * LINKED_ACCOUNT - The description in the attribute map that includes
4349	//    the full name of the member account. The value field contains the AWS
4350	//    ID of the member account.
4351	//
4352	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
4353	//    Linux.
4354	//
4355	//    * REGION - The AWS Region.
4356	//
4357	//    * SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values
4358	//    are regional or a single Availability Zone.
4359	//
4360	//    * TAG (Coverage only) - The tags that are associated with a Reserved Instance
4361	//    (RI).
4362	//
4363	//    * TENANCY - The tenancy of a resource. Examples are shared or dedicated.
4364	//
4365	// If you set the context to SAVINGS_PLANS, you can use the following dimensions
4366	// for searching:
4367	//
4368	//    * SAVINGS_PLANS_TYPE - Type of Savings Plans (EC2 Instance or Compute)
4369	//
4370	//    * PAYMENT_OPTION - Payment option for the given Savings Plans (for example,
4371	//    All Upfront)
4372	//
4373	//    * REGION - The AWS Region.
4374	//
4375	//    * INSTANCE_TYPE_FAMILY - The family of instances (For example, m5)
4376	//
4377	//    * LINKED_ACCOUNT - The description in the attribute map that includes
4378	//    the full name of the member account. The value field contains the AWS
4379	//    ID of the member account.
4380	//
4381	//    * SAVINGS_PLAN_ARN - The unique identifier for your Savings Plan
4382	//
4383	// DimensionValues is a required field
4384	DimensionValues []*DimensionValuesWithAttributes `type:"list" required:"true"`
4385
4386	// The token for the next set of retrievable results. AWS provides the token
4387	// when the response from a previous call has more results than the maximum
4388	// page size.
4389	NextPageToken *string `type:"string"`
4390
4391	// The number of results that AWS returned at one time.
4392	//
4393	// ReturnSize is a required field
4394	ReturnSize *int64 `type:"integer" required:"true"`
4395
4396	// The total number of search results.
4397	//
4398	// TotalSize is a required field
4399	TotalSize *int64 `type:"integer" required:"true"`
4400}
4401
4402// String returns the string representation
4403func (s GetDimensionValuesOutput) String() string {
4404	return awsutil.Prettify(s)
4405}
4406
4407// GoString returns the string representation
4408func (s GetDimensionValuesOutput) GoString() string {
4409	return s.String()
4410}
4411
4412// SetDimensionValues sets the DimensionValues field's value.
4413func (s *GetDimensionValuesOutput) SetDimensionValues(v []*DimensionValuesWithAttributes) *GetDimensionValuesOutput {
4414	s.DimensionValues = v
4415	return s
4416}
4417
4418// SetNextPageToken sets the NextPageToken field's value.
4419func (s *GetDimensionValuesOutput) SetNextPageToken(v string) *GetDimensionValuesOutput {
4420	s.NextPageToken = &v
4421	return s
4422}
4423
4424// SetReturnSize sets the ReturnSize field's value.
4425func (s *GetDimensionValuesOutput) SetReturnSize(v int64) *GetDimensionValuesOutput {
4426	s.ReturnSize = &v
4427	return s
4428}
4429
4430// SetTotalSize sets the TotalSize field's value.
4431func (s *GetDimensionValuesOutput) SetTotalSize(v int64) *GetDimensionValuesOutput {
4432	s.TotalSize = &v
4433	return s
4434}
4435
4436// You can use the following request parameters to query for how much of your
4437// instance usage a reservation covered.
4438type GetReservationCoverageInput struct {
4439	_ struct{} `type:"structure"`
4440
4441	// Filters utilization data by dimensions. You can filter by the following dimensions:
4442	//
4443	//    * AZ
4444	//
4445	//    * CACHE_ENGINE
4446	//
4447	//    * DATABASE_ENGINE
4448	//
4449	//    * DEPLOYMENT_OPTION
4450	//
4451	//    * INSTANCE_TYPE
4452	//
4453	//    * LINKED_ACCOUNT
4454	//
4455	//    * OPERATING_SYSTEM
4456	//
4457	//    * PLATFORM
4458	//
4459	//    * REGION
4460	//
4461	//    * SERVICE
4462	//
4463	//    * TAG
4464	//
4465	//    * TENANCY
4466	//
4467	// GetReservationCoverage uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
4468	// object as the other operations, but only AND is supported among each dimension.
4469	// You can nest only one level deep. If there are multiple values for a dimension,
4470	// they are OR'd together.
4471	//
4472	// If you don't provide a SERVICE filter, Cost Explorer defaults to EC2.
4473	//
4474	// Cost category is also supported.
4475	Filter *Expression `type:"structure"`
4476
4477	// The granularity of the AWS cost data for the reservation. Valid values are
4478	// MONTHLY and DAILY.
4479	//
4480	// If GroupBy is set, Granularity can't be set. If Granularity isn't set, the
4481	// response object doesn't include Granularity, either MONTHLY or DAILY.
4482	//
4483	// The GetReservationCoverage operation supports only DAILY and MONTHLY granularities.
4484	Granularity *string `type:"string" enum:"Granularity"`
4485
4486	// You can group the data by the following attributes:
4487	//
4488	//    * AZ
4489	//
4490	//    * CACHE_ENGINE
4491	//
4492	//    * DATABASE_ENGINE
4493	//
4494	//    * DEPLOYMENT_OPTION
4495	//
4496	//    * INSTANCE_TYPE
4497	//
4498	//    * LINKED_ACCOUNT
4499	//
4500	//    * OPERATING_SYSTEM
4501	//
4502	//    * PLATFORM
4503	//
4504	//    * REGION
4505	//
4506	//    * TENANCY
4507	GroupBy []*GroupDefinition `type:"list"`
4508
4509	// The measurement that you want your reservation coverage reported in.
4510	//
4511	// Valid values are Hour, Unit, and Cost. You can use multiple values in a request.
4512	Metrics []*string `type:"list"`
4513
4514	// The token to retrieve the next set of results. AWS provides the token when
4515	// the response from a previous call has more results than the maximum page
4516	// size.
4517	NextPageToken *string `type:"string"`
4518
4519	// The start and end dates of the period that you want to retrieve data about
4520	// reservation coverage for. You can retrieve data for a maximum of 13 months:
4521	// the last 12 months and the current month. The start date is inclusive, but
4522	// the end date is exclusive. For example, if start is 2017-01-01 and end is
4523	// 2017-05-01, then the cost and usage data is retrieved from 2017-01-01 up
4524	// to and including 2017-04-30 but not including 2017-05-01.
4525	//
4526	// TimePeriod is a required field
4527	TimePeriod *DateInterval `type:"structure" required:"true"`
4528}
4529
4530// String returns the string representation
4531func (s GetReservationCoverageInput) String() string {
4532	return awsutil.Prettify(s)
4533}
4534
4535// GoString returns the string representation
4536func (s GetReservationCoverageInput) GoString() string {
4537	return s.String()
4538}
4539
4540// Validate inspects the fields of the type to determine if they are valid.
4541func (s *GetReservationCoverageInput) Validate() error {
4542	invalidParams := request.ErrInvalidParams{Context: "GetReservationCoverageInput"}
4543	if s.TimePeriod == nil {
4544		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
4545	}
4546	if s.Filter != nil {
4547		if err := s.Filter.Validate(); err != nil {
4548			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
4549		}
4550	}
4551	if s.TimePeriod != nil {
4552		if err := s.TimePeriod.Validate(); err != nil {
4553			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
4554		}
4555	}
4556
4557	if invalidParams.Len() > 0 {
4558		return invalidParams
4559	}
4560	return nil
4561}
4562
4563// SetFilter sets the Filter field's value.
4564func (s *GetReservationCoverageInput) SetFilter(v *Expression) *GetReservationCoverageInput {
4565	s.Filter = v
4566	return s
4567}
4568
4569// SetGranularity sets the Granularity field's value.
4570func (s *GetReservationCoverageInput) SetGranularity(v string) *GetReservationCoverageInput {
4571	s.Granularity = &v
4572	return s
4573}
4574
4575// SetGroupBy sets the GroupBy field's value.
4576func (s *GetReservationCoverageInput) SetGroupBy(v []*GroupDefinition) *GetReservationCoverageInput {
4577	s.GroupBy = v
4578	return s
4579}
4580
4581// SetMetrics sets the Metrics field's value.
4582func (s *GetReservationCoverageInput) SetMetrics(v []*string) *GetReservationCoverageInput {
4583	s.Metrics = v
4584	return s
4585}
4586
4587// SetNextPageToken sets the NextPageToken field's value.
4588func (s *GetReservationCoverageInput) SetNextPageToken(v string) *GetReservationCoverageInput {
4589	s.NextPageToken = &v
4590	return s
4591}
4592
4593// SetTimePeriod sets the TimePeriod field's value.
4594func (s *GetReservationCoverageInput) SetTimePeriod(v *DateInterval) *GetReservationCoverageInput {
4595	s.TimePeriod = v
4596	return s
4597}
4598
4599type GetReservationCoverageOutput struct {
4600	_ struct{} `type:"structure"`
4601
4602	// The amount of time that your reservations covered.
4603	//
4604	// CoveragesByTime is a required field
4605	CoveragesByTime []*CoverageByTime `type:"list" required:"true"`
4606
4607	// The token for the next set of retrievable results. AWS provides the token
4608	// when the response from a previous call has more results than the maximum
4609	// page size.
4610	NextPageToken *string `type:"string"`
4611
4612	// The total amount of instance usage that a reservation covered.
4613	Total *Coverage `type:"structure"`
4614}
4615
4616// String returns the string representation
4617func (s GetReservationCoverageOutput) String() string {
4618	return awsutil.Prettify(s)
4619}
4620
4621// GoString returns the string representation
4622func (s GetReservationCoverageOutput) GoString() string {
4623	return s.String()
4624}
4625
4626// SetCoveragesByTime sets the CoveragesByTime field's value.
4627func (s *GetReservationCoverageOutput) SetCoveragesByTime(v []*CoverageByTime) *GetReservationCoverageOutput {
4628	s.CoveragesByTime = v
4629	return s
4630}
4631
4632// SetNextPageToken sets the NextPageToken field's value.
4633func (s *GetReservationCoverageOutput) SetNextPageToken(v string) *GetReservationCoverageOutput {
4634	s.NextPageToken = &v
4635	return s
4636}
4637
4638// SetTotal sets the Total field's value.
4639func (s *GetReservationCoverageOutput) SetTotal(v *Coverage) *GetReservationCoverageOutput {
4640	s.Total = v
4641	return s
4642}
4643
4644type GetReservationPurchaseRecommendationInput struct {
4645	_ struct{} `type:"structure"`
4646
4647	// The account ID that is associated with the recommendation.
4648	AccountId *string `type:"string"`
4649
4650	// The account scope that you want your recommendations for. Amazon Web Services
4651	// calculates recommendations including the payer account and linked accounts
4652	// if the value is set to PAYER. If the value is LINKED, recommendations are
4653	// calculated for individual linked accounts only.
4654	AccountScope *string `type:"string" enum:"AccountScope"`
4655
4656	// The number of previous days that you want AWS to consider when it calculates
4657	// your recommendations.
4658	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
4659
4660	// The pagination token that indicates the next set of results that you want
4661	// to retrieve.
4662	NextPageToken *string `type:"string"`
4663
4664	// The number of recommendations that you want returned in a single response
4665	// object.
4666	PageSize *int64 `type:"integer"`
4667
4668	// The reservation purchase option that you want recommendations for.
4669	PaymentOption *string `type:"string" enum:"PaymentOption"`
4670
4671	// The specific service that you want recommendations for.
4672	//
4673	// Service is a required field
4674	Service *string `type:"string" required:"true"`
4675
4676	// The hardware specifications for the service instances that you want recommendations
4677	// for, such as standard or convertible Amazon EC2 instances.
4678	ServiceSpecification *ServiceSpecification `type:"structure"`
4679
4680	// The reservation term that you want recommendations for.
4681	TermInYears *string `type:"string" enum:"TermInYears"`
4682}
4683
4684// String returns the string representation
4685func (s GetReservationPurchaseRecommendationInput) String() string {
4686	return awsutil.Prettify(s)
4687}
4688
4689// GoString returns the string representation
4690func (s GetReservationPurchaseRecommendationInput) GoString() string {
4691	return s.String()
4692}
4693
4694// Validate inspects the fields of the type to determine if they are valid.
4695func (s *GetReservationPurchaseRecommendationInput) Validate() error {
4696	invalidParams := request.ErrInvalidParams{Context: "GetReservationPurchaseRecommendationInput"}
4697	if s.Service == nil {
4698		invalidParams.Add(request.NewErrParamRequired("Service"))
4699	}
4700
4701	if invalidParams.Len() > 0 {
4702		return invalidParams
4703	}
4704	return nil
4705}
4706
4707// SetAccountId sets the AccountId field's value.
4708func (s *GetReservationPurchaseRecommendationInput) SetAccountId(v string) *GetReservationPurchaseRecommendationInput {
4709	s.AccountId = &v
4710	return s
4711}
4712
4713// SetAccountScope sets the AccountScope field's value.
4714func (s *GetReservationPurchaseRecommendationInput) SetAccountScope(v string) *GetReservationPurchaseRecommendationInput {
4715	s.AccountScope = &v
4716	return s
4717}
4718
4719// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
4720func (s *GetReservationPurchaseRecommendationInput) SetLookbackPeriodInDays(v string) *GetReservationPurchaseRecommendationInput {
4721	s.LookbackPeriodInDays = &v
4722	return s
4723}
4724
4725// SetNextPageToken sets the NextPageToken field's value.
4726func (s *GetReservationPurchaseRecommendationInput) SetNextPageToken(v string) *GetReservationPurchaseRecommendationInput {
4727	s.NextPageToken = &v
4728	return s
4729}
4730
4731// SetPageSize sets the PageSize field's value.
4732func (s *GetReservationPurchaseRecommendationInput) SetPageSize(v int64) *GetReservationPurchaseRecommendationInput {
4733	s.PageSize = &v
4734	return s
4735}
4736
4737// SetPaymentOption sets the PaymentOption field's value.
4738func (s *GetReservationPurchaseRecommendationInput) SetPaymentOption(v string) *GetReservationPurchaseRecommendationInput {
4739	s.PaymentOption = &v
4740	return s
4741}
4742
4743// SetService sets the Service field's value.
4744func (s *GetReservationPurchaseRecommendationInput) SetService(v string) *GetReservationPurchaseRecommendationInput {
4745	s.Service = &v
4746	return s
4747}
4748
4749// SetServiceSpecification sets the ServiceSpecification field's value.
4750func (s *GetReservationPurchaseRecommendationInput) SetServiceSpecification(v *ServiceSpecification) *GetReservationPurchaseRecommendationInput {
4751	s.ServiceSpecification = v
4752	return s
4753}
4754
4755// SetTermInYears sets the TermInYears field's value.
4756func (s *GetReservationPurchaseRecommendationInput) SetTermInYears(v string) *GetReservationPurchaseRecommendationInput {
4757	s.TermInYears = &v
4758	return s
4759}
4760
4761type GetReservationPurchaseRecommendationOutput struct {
4762	_ struct{} `type:"structure"`
4763
4764	// Information about this specific recommendation call, such as the time stamp
4765	// for when Cost Explorer generated this recommendation.
4766	Metadata *ReservationPurchaseRecommendationMetadata `type:"structure"`
4767
4768	// The pagination token for the next set of retrievable results.
4769	NextPageToken *string `type:"string"`
4770
4771	// Recommendations for reservations to purchase.
4772	Recommendations []*ReservationPurchaseRecommendation `type:"list"`
4773}
4774
4775// String returns the string representation
4776func (s GetReservationPurchaseRecommendationOutput) String() string {
4777	return awsutil.Prettify(s)
4778}
4779
4780// GoString returns the string representation
4781func (s GetReservationPurchaseRecommendationOutput) GoString() string {
4782	return s.String()
4783}
4784
4785// SetMetadata sets the Metadata field's value.
4786func (s *GetReservationPurchaseRecommendationOutput) SetMetadata(v *ReservationPurchaseRecommendationMetadata) *GetReservationPurchaseRecommendationOutput {
4787	s.Metadata = v
4788	return s
4789}
4790
4791// SetNextPageToken sets the NextPageToken field's value.
4792func (s *GetReservationPurchaseRecommendationOutput) SetNextPageToken(v string) *GetReservationPurchaseRecommendationOutput {
4793	s.NextPageToken = &v
4794	return s
4795}
4796
4797// SetRecommendations sets the Recommendations field's value.
4798func (s *GetReservationPurchaseRecommendationOutput) SetRecommendations(v []*ReservationPurchaseRecommendation) *GetReservationPurchaseRecommendationOutput {
4799	s.Recommendations = v
4800	return s
4801}
4802
4803type GetReservationUtilizationInput struct {
4804	_ struct{} `type:"structure"`
4805
4806	// Filters utilization data by dimensions. You can filter by the following dimensions:
4807	//
4808	//    * AZ
4809	//
4810	//    * CACHE_ENGINE
4811	//
4812	//    * DEPLOYMENT_OPTION
4813	//
4814	//    * INSTANCE_TYPE
4815	//
4816	//    * LINKED_ACCOUNT
4817	//
4818	//    * OPERATING_SYSTEM
4819	//
4820	//    * PLATFORM
4821	//
4822	//    * REGION
4823	//
4824	//    * SERVICE
4825	//
4826	//    * SCOPE
4827	//
4828	//    * TENANCY
4829	//
4830	// GetReservationUtilization uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
4831	// object as the other operations, but only AND is supported among each dimension,
4832	// and nesting is supported up to only one level deep. If there are multiple
4833	// values for a dimension, they are OR'd together.
4834	Filter *Expression `type:"structure"`
4835
4836	// If GroupBy is set, Granularity can't be set. If Granularity isn't set, the
4837	// response object doesn't include Granularity, either MONTHLY or DAILY. If
4838	// both GroupBy and Granularity aren't set, GetReservationUtilization defaults
4839	// to DAILY.
4840	//
4841	// The GetReservationUtilization operation supports only DAILY and MONTHLY granularities.
4842	Granularity *string `type:"string" enum:"Granularity"`
4843
4844	// Groups only by SUBSCRIPTION_ID. Metadata is included.
4845	GroupBy []*GroupDefinition `type:"list"`
4846
4847	// The token to retrieve the next set of results. AWS provides the token when
4848	// the response from a previous call has more results than the maximum page
4849	// size.
4850	NextPageToken *string `type:"string"`
4851
4852	// Sets the start and end dates for retrieving RI utilization. The start date
4853	// is inclusive, but the end date is exclusive. For example, if start is 2017-01-01
4854	// and end is 2017-05-01, then the cost and usage data is retrieved from 2017-01-01
4855	// up to and including 2017-04-30 but not including 2017-05-01.
4856	//
4857	// TimePeriod is a required field
4858	TimePeriod *DateInterval `type:"structure" required:"true"`
4859}
4860
4861// String returns the string representation
4862func (s GetReservationUtilizationInput) String() string {
4863	return awsutil.Prettify(s)
4864}
4865
4866// GoString returns the string representation
4867func (s GetReservationUtilizationInput) GoString() string {
4868	return s.String()
4869}
4870
4871// Validate inspects the fields of the type to determine if they are valid.
4872func (s *GetReservationUtilizationInput) Validate() error {
4873	invalidParams := request.ErrInvalidParams{Context: "GetReservationUtilizationInput"}
4874	if s.TimePeriod == nil {
4875		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
4876	}
4877	if s.Filter != nil {
4878		if err := s.Filter.Validate(); err != nil {
4879			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
4880		}
4881	}
4882	if s.TimePeriod != nil {
4883		if err := s.TimePeriod.Validate(); err != nil {
4884			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
4885		}
4886	}
4887
4888	if invalidParams.Len() > 0 {
4889		return invalidParams
4890	}
4891	return nil
4892}
4893
4894// SetFilter sets the Filter field's value.
4895func (s *GetReservationUtilizationInput) SetFilter(v *Expression) *GetReservationUtilizationInput {
4896	s.Filter = v
4897	return s
4898}
4899
4900// SetGranularity sets the Granularity field's value.
4901func (s *GetReservationUtilizationInput) SetGranularity(v string) *GetReservationUtilizationInput {
4902	s.Granularity = &v
4903	return s
4904}
4905
4906// SetGroupBy sets the GroupBy field's value.
4907func (s *GetReservationUtilizationInput) SetGroupBy(v []*GroupDefinition) *GetReservationUtilizationInput {
4908	s.GroupBy = v
4909	return s
4910}
4911
4912// SetNextPageToken sets the NextPageToken field's value.
4913func (s *GetReservationUtilizationInput) SetNextPageToken(v string) *GetReservationUtilizationInput {
4914	s.NextPageToken = &v
4915	return s
4916}
4917
4918// SetTimePeriod sets the TimePeriod field's value.
4919func (s *GetReservationUtilizationInput) SetTimePeriod(v *DateInterval) *GetReservationUtilizationInput {
4920	s.TimePeriod = v
4921	return s
4922}
4923
4924type GetReservationUtilizationOutput struct {
4925	_ struct{} `type:"structure"`
4926
4927	// The token for the next set of retrievable results. AWS provides the token
4928	// when the response from a previous call has more results than the maximum
4929	// page size.
4930	NextPageToken *string `type:"string"`
4931
4932	// The total amount of time that you used your RIs.
4933	Total *ReservationAggregates `type:"structure"`
4934
4935	// The amount of time that you used your RIs.
4936	//
4937	// UtilizationsByTime is a required field
4938	UtilizationsByTime []*UtilizationByTime `type:"list" required:"true"`
4939}
4940
4941// String returns the string representation
4942func (s GetReservationUtilizationOutput) String() string {
4943	return awsutil.Prettify(s)
4944}
4945
4946// GoString returns the string representation
4947func (s GetReservationUtilizationOutput) GoString() string {
4948	return s.String()
4949}
4950
4951// SetNextPageToken sets the NextPageToken field's value.
4952func (s *GetReservationUtilizationOutput) SetNextPageToken(v string) *GetReservationUtilizationOutput {
4953	s.NextPageToken = &v
4954	return s
4955}
4956
4957// SetTotal sets the Total field's value.
4958func (s *GetReservationUtilizationOutput) SetTotal(v *ReservationAggregates) *GetReservationUtilizationOutput {
4959	s.Total = v
4960	return s
4961}
4962
4963// SetUtilizationsByTime sets the UtilizationsByTime field's value.
4964func (s *GetReservationUtilizationOutput) SetUtilizationsByTime(v []*UtilizationByTime) *GetReservationUtilizationOutput {
4965	s.UtilizationsByTime = v
4966	return s
4967}
4968
4969type GetRightsizingRecommendationInput struct {
4970	_ struct{} `type:"structure"`
4971
4972	// Enables you to customize recommendations across two attributes. You can choose
4973	// to view recommendations for instances within the same instance families or
4974	// across different instance families. You can also choose to view your estimated
4975	// savings associated with recommendations with consideration of existing Savings
4976	// Plans or RI benefits, or neither.
4977	Configuration *RightsizingRecommendationConfiguration `type:"structure"`
4978
4979	// Use Expression to filter by cost or by usage. There are two patterns:
4980	//
4981	//    * Simple dimension values - You can set the dimension name and values
4982	//    for the filters that you plan to use. For example, you can filter for
4983	//    REGION==us-east-1 OR REGION==us-west-1. The Expression for that looks
4984	//    like this: { "Dimensions": { "Key": "REGION", "Values": [ "us-east-1",
4985	//    “us-west-1” ] } } The list of dimension values are OR'd together to
4986	//    retrieve cost or usage data. You can create Expression and DimensionValues
4987	//    objects using either with* methods or set* methods in multiple lines.
4988	//
4989	//    * Compound dimension values with logical operations - You can use multiple
4990	//    Expression types and the logical operators AND/OR/NOT to create a list
4991	//    of one or more Expression objects. This allows you to filter on more advanced
4992	//    options. For example, you can filter on ((REGION == us-east-1 OR REGION
4993	//    == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
4994	//    The Expression for that looks like this: { "And": [ {"Or": [ {"Dimensions":
4995	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
4996	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
4997	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
4998	//    Expression can have only one operator, the service returns an error if
4999	//    more than one is specified. The following example shows an Expression
5000	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
5001	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
5002	//
5003	// For GetRightsizingRecommendation action, a combination of OR and NOT is not
5004	// supported. OR is not supported between different dimensions, or dimensions
5005	// and tags. NOT operators aren't supported. Dimensions are also limited to
5006	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
5007	Filter *Expression `type:"structure"`
5008
5009	// The pagination token that indicates the next set of results that you want
5010	// to retrieve.
5011	NextPageToken *string `type:"string"`
5012
5013	// The number of recommendations that you want returned in a single response
5014	// object.
5015	PageSize *int64 `type:"integer"`
5016
5017	// The specific service that you want recommendations for. The only valid value
5018	// for GetRightsizingRecommendation is "AmazonEC2".
5019	//
5020	// Service is a required field
5021	Service *string `type:"string" required:"true"`
5022}
5023
5024// String returns the string representation
5025func (s GetRightsizingRecommendationInput) String() string {
5026	return awsutil.Prettify(s)
5027}
5028
5029// GoString returns the string representation
5030func (s GetRightsizingRecommendationInput) GoString() string {
5031	return s.String()
5032}
5033
5034// Validate inspects the fields of the type to determine if they are valid.
5035func (s *GetRightsizingRecommendationInput) Validate() error {
5036	invalidParams := request.ErrInvalidParams{Context: "GetRightsizingRecommendationInput"}
5037	if s.Service == nil {
5038		invalidParams.Add(request.NewErrParamRequired("Service"))
5039	}
5040	if s.Configuration != nil {
5041		if err := s.Configuration.Validate(); err != nil {
5042			invalidParams.AddNested("Configuration", err.(request.ErrInvalidParams))
5043		}
5044	}
5045	if s.Filter != nil {
5046		if err := s.Filter.Validate(); err != nil {
5047			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
5048		}
5049	}
5050
5051	if invalidParams.Len() > 0 {
5052		return invalidParams
5053	}
5054	return nil
5055}
5056
5057// SetConfiguration sets the Configuration field's value.
5058func (s *GetRightsizingRecommendationInput) SetConfiguration(v *RightsizingRecommendationConfiguration) *GetRightsizingRecommendationInput {
5059	s.Configuration = v
5060	return s
5061}
5062
5063// SetFilter sets the Filter field's value.
5064func (s *GetRightsizingRecommendationInput) SetFilter(v *Expression) *GetRightsizingRecommendationInput {
5065	s.Filter = v
5066	return s
5067}
5068
5069// SetNextPageToken sets the NextPageToken field's value.
5070func (s *GetRightsizingRecommendationInput) SetNextPageToken(v string) *GetRightsizingRecommendationInput {
5071	s.NextPageToken = &v
5072	return s
5073}
5074
5075// SetPageSize sets the PageSize field's value.
5076func (s *GetRightsizingRecommendationInput) SetPageSize(v int64) *GetRightsizingRecommendationInput {
5077	s.PageSize = &v
5078	return s
5079}
5080
5081// SetService sets the Service field's value.
5082func (s *GetRightsizingRecommendationInput) SetService(v string) *GetRightsizingRecommendationInput {
5083	s.Service = &v
5084	return s
5085}
5086
5087type GetRightsizingRecommendationOutput struct {
5088	_ struct{} `type:"structure"`
5089
5090	// Enables you to customize recommendations across two attributes. You can choose
5091	// to view recommendations for instances within the same instance families or
5092	// across different instance families. You can also choose to view your estimated
5093	// savings associated with recommendations with consideration of existing Savings
5094	// Plans or RI benefits, or neither.
5095	Configuration *RightsizingRecommendationConfiguration `type:"structure"`
5096
5097	// Information regarding this specific recommendation set.
5098	Metadata *RightsizingRecommendationMetadata `type:"structure"`
5099
5100	// The token to retrieve the next set of results.
5101	NextPageToken *string `type:"string"`
5102
5103	// Recommendations to rightsize resources.
5104	RightsizingRecommendations []*RightsizingRecommendation `type:"list"`
5105
5106	// Summary of this recommendation set.
5107	Summary *RightsizingRecommendationSummary `type:"structure"`
5108}
5109
5110// String returns the string representation
5111func (s GetRightsizingRecommendationOutput) String() string {
5112	return awsutil.Prettify(s)
5113}
5114
5115// GoString returns the string representation
5116func (s GetRightsizingRecommendationOutput) GoString() string {
5117	return s.String()
5118}
5119
5120// SetConfiguration sets the Configuration field's value.
5121func (s *GetRightsizingRecommendationOutput) SetConfiguration(v *RightsizingRecommendationConfiguration) *GetRightsizingRecommendationOutput {
5122	s.Configuration = v
5123	return s
5124}
5125
5126// SetMetadata sets the Metadata field's value.
5127func (s *GetRightsizingRecommendationOutput) SetMetadata(v *RightsizingRecommendationMetadata) *GetRightsizingRecommendationOutput {
5128	s.Metadata = v
5129	return s
5130}
5131
5132// SetNextPageToken sets the NextPageToken field's value.
5133func (s *GetRightsizingRecommendationOutput) SetNextPageToken(v string) *GetRightsizingRecommendationOutput {
5134	s.NextPageToken = &v
5135	return s
5136}
5137
5138// SetRightsizingRecommendations sets the RightsizingRecommendations field's value.
5139func (s *GetRightsizingRecommendationOutput) SetRightsizingRecommendations(v []*RightsizingRecommendation) *GetRightsizingRecommendationOutput {
5140	s.RightsizingRecommendations = v
5141	return s
5142}
5143
5144// SetSummary sets the Summary field's value.
5145func (s *GetRightsizingRecommendationOutput) SetSummary(v *RightsizingRecommendationSummary) *GetRightsizingRecommendationOutput {
5146	s.Summary = v
5147	return s
5148}
5149
5150type GetSavingsPlansCoverageInput struct {
5151	_ struct{} `type:"structure"`
5152
5153	// Filters Savings Plans coverage data by dimensions. You can filter data for
5154	// Savings Plans usage with the following dimensions:
5155	//
5156	//    * LINKED_ACCOUNT
5157	//
5158	//    * REGION
5159	//
5160	//    * SERVICE
5161	//
5162	//    * INSTANCE_FAMILY
5163	//
5164	// GetSavingsPlansCoverage uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
5165	// object as the other operations, but only AND is supported among each dimension.
5166	// If there are multiple values for a dimension, they are OR'd together.
5167	//
5168	// Cost category is also supported.
5169	Filter *Expression `type:"structure"`
5170
5171	// The granularity of the Amazon Web Services cost data for your Savings Plans.
5172	// Granularity can't be set if GroupBy is set.
5173	//
5174	// The GetSavingsPlansCoverage operation supports only DAILY and MONTHLY granularities.
5175	Granularity *string `type:"string" enum:"Granularity"`
5176
5177	// You can group the data using the attributes INSTANCE_FAMILY, REGION, or SERVICE.
5178	GroupBy []*GroupDefinition `type:"list"`
5179
5180	// The number of items to be returned in a response. The default is 20, with
5181	// a minimum value of 1.
5182	MaxResults *int64 `min:"1" type:"integer"`
5183
5184	// The measurement that you want your Savings Plans coverage reported in. The
5185	// only valid value is SpendCoveredBySavingsPlans.
5186	Metrics []*string `type:"list"`
5187
5188	// The token to retrieve the next set of results. Amazon Web Services provides
5189	// the token when the response from a previous call has more results than the
5190	// maximum page size.
5191	NextToken *string `type:"string"`
5192
5193	// The time period that you want the usage and costs for. The Start date must
5194	// be within 13 months. The End date must be after the Start date, and before
5195	// the current date. Future dates can't be used as an End date.
5196	//
5197	// TimePeriod is a required field
5198	TimePeriod *DateInterval `type:"structure" required:"true"`
5199}
5200
5201// String returns the string representation
5202func (s GetSavingsPlansCoverageInput) String() string {
5203	return awsutil.Prettify(s)
5204}
5205
5206// GoString returns the string representation
5207func (s GetSavingsPlansCoverageInput) GoString() string {
5208	return s.String()
5209}
5210
5211// Validate inspects the fields of the type to determine if they are valid.
5212func (s *GetSavingsPlansCoverageInput) Validate() error {
5213	invalidParams := request.ErrInvalidParams{Context: "GetSavingsPlansCoverageInput"}
5214	if s.MaxResults != nil && *s.MaxResults < 1 {
5215		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
5216	}
5217	if s.TimePeriod == nil {
5218		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
5219	}
5220	if s.Filter != nil {
5221		if err := s.Filter.Validate(); err != nil {
5222			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
5223		}
5224	}
5225	if s.TimePeriod != nil {
5226		if err := s.TimePeriod.Validate(); err != nil {
5227			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
5228		}
5229	}
5230
5231	if invalidParams.Len() > 0 {
5232		return invalidParams
5233	}
5234	return nil
5235}
5236
5237// SetFilter sets the Filter field's value.
5238func (s *GetSavingsPlansCoverageInput) SetFilter(v *Expression) *GetSavingsPlansCoverageInput {
5239	s.Filter = v
5240	return s
5241}
5242
5243// SetGranularity sets the Granularity field's value.
5244func (s *GetSavingsPlansCoverageInput) SetGranularity(v string) *GetSavingsPlansCoverageInput {
5245	s.Granularity = &v
5246	return s
5247}
5248
5249// SetGroupBy sets the GroupBy field's value.
5250func (s *GetSavingsPlansCoverageInput) SetGroupBy(v []*GroupDefinition) *GetSavingsPlansCoverageInput {
5251	s.GroupBy = v
5252	return s
5253}
5254
5255// SetMaxResults sets the MaxResults field's value.
5256func (s *GetSavingsPlansCoverageInput) SetMaxResults(v int64) *GetSavingsPlansCoverageInput {
5257	s.MaxResults = &v
5258	return s
5259}
5260
5261// SetMetrics sets the Metrics field's value.
5262func (s *GetSavingsPlansCoverageInput) SetMetrics(v []*string) *GetSavingsPlansCoverageInput {
5263	s.Metrics = v
5264	return s
5265}
5266
5267// SetNextToken sets the NextToken field's value.
5268func (s *GetSavingsPlansCoverageInput) SetNextToken(v string) *GetSavingsPlansCoverageInput {
5269	s.NextToken = &v
5270	return s
5271}
5272
5273// SetTimePeriod sets the TimePeriod field's value.
5274func (s *GetSavingsPlansCoverageInput) SetTimePeriod(v *DateInterval) *GetSavingsPlansCoverageInput {
5275	s.TimePeriod = v
5276	return s
5277}
5278
5279type GetSavingsPlansCoverageOutput struct {
5280	_ struct{} `type:"structure"`
5281
5282	// The token to retrieve the next set of results. Amazon Web Services provides
5283	// the token when the response from a previous call has more results than the
5284	// maximum page size.
5285	NextToken *string `type:"string"`
5286
5287	// The amount of spend that your Savings Plans covered.
5288	//
5289	// SavingsPlansCoverages is a required field
5290	SavingsPlansCoverages []*SavingsPlansCoverage `type:"list" required:"true"`
5291}
5292
5293// String returns the string representation
5294func (s GetSavingsPlansCoverageOutput) String() string {
5295	return awsutil.Prettify(s)
5296}
5297
5298// GoString returns the string representation
5299func (s GetSavingsPlansCoverageOutput) GoString() string {
5300	return s.String()
5301}
5302
5303// SetNextToken sets the NextToken field's value.
5304func (s *GetSavingsPlansCoverageOutput) SetNextToken(v string) *GetSavingsPlansCoverageOutput {
5305	s.NextToken = &v
5306	return s
5307}
5308
5309// SetSavingsPlansCoverages sets the SavingsPlansCoverages field's value.
5310func (s *GetSavingsPlansCoverageOutput) SetSavingsPlansCoverages(v []*SavingsPlansCoverage) *GetSavingsPlansCoverageOutput {
5311	s.SavingsPlansCoverages = v
5312	return s
5313}
5314
5315type GetSavingsPlansPurchaseRecommendationInput struct {
5316	_ struct{} `type:"structure"`
5317
5318	// The account scope that you want your recommendations for. Amazon Web Services
5319	// calculates recommendations including the payer account and linked accounts
5320	// if the value is set to PAYER. If the value is LINKED, recommendations are
5321	// calculated for individual linked accounts only.
5322	AccountScope *string `type:"string" enum:"AccountScope"`
5323
5324	// You can filter your recommendations by Account ID with the LINKED_ACCOUNT
5325	// dimension. To filter your recommendations by Account ID, specify Key as LINKED_ACCOUNT
5326	// and Value as the comma-separated Acount ID(s) for which you want to see Savings
5327	// Plans purchase recommendations.
5328	//
5329	// For GetSavingsPlansPurchaseRecommendation, the Filter does not include CostCategories
5330	// or Tags. It only includes Dimensions. With Dimensions, Key must be LINKED_ACCOUNT
5331	// and Value can be a single Account ID or multiple comma-separated Account
5332	// IDs for which you want to see Savings Plans Purchase Recommendations. AND
5333	// and OR operators are not supported.
5334	Filter *Expression `type:"structure"`
5335
5336	// The lookback period used to generate the recommendation.
5337	//
5338	// LookbackPeriodInDays is a required field
5339	LookbackPeriodInDays *string `type:"string" required:"true" enum:"LookbackPeriodInDays"`
5340
5341	// The token to retrieve the next set of results. Amazon Web Services provides
5342	// the token when the response from a previous call has more results than the
5343	// maximum page size.
5344	NextPageToken *string `type:"string"`
5345
5346	// The number of recommendations that you want returned in a single response
5347	// object.
5348	PageSize *int64 `type:"integer"`
5349
5350	// The payment option used to generate these recommendations.
5351	//
5352	// PaymentOption is a required field
5353	PaymentOption *string `type:"string" required:"true" enum:"PaymentOption"`
5354
5355	// The Savings Plans recommendation type requested.
5356	//
5357	// SavingsPlansType is a required field
5358	SavingsPlansType *string `type:"string" required:"true" enum:"SupportedSavingsPlansType"`
5359
5360	// The savings plan recommendation term used to generate these recommendations.
5361	//
5362	// TermInYears is a required field
5363	TermInYears *string `type:"string" required:"true" enum:"TermInYears"`
5364}
5365
5366// String returns the string representation
5367func (s GetSavingsPlansPurchaseRecommendationInput) String() string {
5368	return awsutil.Prettify(s)
5369}
5370
5371// GoString returns the string representation
5372func (s GetSavingsPlansPurchaseRecommendationInput) GoString() string {
5373	return s.String()
5374}
5375
5376// Validate inspects the fields of the type to determine if they are valid.
5377func (s *GetSavingsPlansPurchaseRecommendationInput) Validate() error {
5378	invalidParams := request.ErrInvalidParams{Context: "GetSavingsPlansPurchaseRecommendationInput"}
5379	if s.LookbackPeriodInDays == nil {
5380		invalidParams.Add(request.NewErrParamRequired("LookbackPeriodInDays"))
5381	}
5382	if s.PaymentOption == nil {
5383		invalidParams.Add(request.NewErrParamRequired("PaymentOption"))
5384	}
5385	if s.SavingsPlansType == nil {
5386		invalidParams.Add(request.NewErrParamRequired("SavingsPlansType"))
5387	}
5388	if s.TermInYears == nil {
5389		invalidParams.Add(request.NewErrParamRequired("TermInYears"))
5390	}
5391	if s.Filter != nil {
5392		if err := s.Filter.Validate(); err != nil {
5393			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
5394		}
5395	}
5396
5397	if invalidParams.Len() > 0 {
5398		return invalidParams
5399	}
5400	return nil
5401}
5402
5403// SetAccountScope sets the AccountScope field's value.
5404func (s *GetSavingsPlansPurchaseRecommendationInput) SetAccountScope(v string) *GetSavingsPlansPurchaseRecommendationInput {
5405	s.AccountScope = &v
5406	return s
5407}
5408
5409// SetFilter sets the Filter field's value.
5410func (s *GetSavingsPlansPurchaseRecommendationInput) SetFilter(v *Expression) *GetSavingsPlansPurchaseRecommendationInput {
5411	s.Filter = v
5412	return s
5413}
5414
5415// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
5416func (s *GetSavingsPlansPurchaseRecommendationInput) SetLookbackPeriodInDays(v string) *GetSavingsPlansPurchaseRecommendationInput {
5417	s.LookbackPeriodInDays = &v
5418	return s
5419}
5420
5421// SetNextPageToken sets the NextPageToken field's value.
5422func (s *GetSavingsPlansPurchaseRecommendationInput) SetNextPageToken(v string) *GetSavingsPlansPurchaseRecommendationInput {
5423	s.NextPageToken = &v
5424	return s
5425}
5426
5427// SetPageSize sets the PageSize field's value.
5428func (s *GetSavingsPlansPurchaseRecommendationInput) SetPageSize(v int64) *GetSavingsPlansPurchaseRecommendationInput {
5429	s.PageSize = &v
5430	return s
5431}
5432
5433// SetPaymentOption sets the PaymentOption field's value.
5434func (s *GetSavingsPlansPurchaseRecommendationInput) SetPaymentOption(v string) *GetSavingsPlansPurchaseRecommendationInput {
5435	s.PaymentOption = &v
5436	return s
5437}
5438
5439// SetSavingsPlansType sets the SavingsPlansType field's value.
5440func (s *GetSavingsPlansPurchaseRecommendationInput) SetSavingsPlansType(v string) *GetSavingsPlansPurchaseRecommendationInput {
5441	s.SavingsPlansType = &v
5442	return s
5443}
5444
5445// SetTermInYears sets the TermInYears field's value.
5446func (s *GetSavingsPlansPurchaseRecommendationInput) SetTermInYears(v string) *GetSavingsPlansPurchaseRecommendationInput {
5447	s.TermInYears = &v
5448	return s
5449}
5450
5451type GetSavingsPlansPurchaseRecommendationOutput struct {
5452	_ struct{} `type:"structure"`
5453
5454	// Information regarding this specific recommendation set.
5455	Metadata *SavingsPlansPurchaseRecommendationMetadata `type:"structure"`
5456
5457	// The token for the next set of retrievable results. AWS provides the token
5458	// when the response from a previous call has more results than the maximum
5459	// page size.
5460	NextPageToken *string `type:"string"`
5461
5462	// Contains your request parameters, Savings Plan Recommendations Summary, and
5463	// Details.
5464	SavingsPlansPurchaseRecommendation *SavingsPlansPurchaseRecommendation `type:"structure"`
5465}
5466
5467// String returns the string representation
5468func (s GetSavingsPlansPurchaseRecommendationOutput) String() string {
5469	return awsutil.Prettify(s)
5470}
5471
5472// GoString returns the string representation
5473func (s GetSavingsPlansPurchaseRecommendationOutput) GoString() string {
5474	return s.String()
5475}
5476
5477// SetMetadata sets the Metadata field's value.
5478func (s *GetSavingsPlansPurchaseRecommendationOutput) SetMetadata(v *SavingsPlansPurchaseRecommendationMetadata) *GetSavingsPlansPurchaseRecommendationOutput {
5479	s.Metadata = v
5480	return s
5481}
5482
5483// SetNextPageToken sets the NextPageToken field's value.
5484func (s *GetSavingsPlansPurchaseRecommendationOutput) SetNextPageToken(v string) *GetSavingsPlansPurchaseRecommendationOutput {
5485	s.NextPageToken = &v
5486	return s
5487}
5488
5489// SetSavingsPlansPurchaseRecommendation sets the SavingsPlansPurchaseRecommendation field's value.
5490func (s *GetSavingsPlansPurchaseRecommendationOutput) SetSavingsPlansPurchaseRecommendation(v *SavingsPlansPurchaseRecommendation) *GetSavingsPlansPurchaseRecommendationOutput {
5491	s.SavingsPlansPurchaseRecommendation = v
5492	return s
5493}
5494
5495type GetSavingsPlansUtilizationDetailsInput struct {
5496	_ struct{} `type:"structure"`
5497
5498	// Filters Savings Plans utilization coverage data for active Savings Plans
5499	// dimensions. You can filter data with the following dimensions:
5500	//
5501	//    * LINKED_ACCOUNT
5502	//
5503	//    * SAVINGS_PLAN_ARN
5504	//
5505	//    * REGION
5506	//
5507	//    * PAYMENT_OPTION
5508	//
5509	//    * INSTANCE_TYPE_FAMILY
5510	//
5511	// GetSavingsPlansUtilizationDetails uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
5512	// object as the other operations, but only AND is supported among each dimension.
5513	Filter *Expression `type:"structure"`
5514
5515	// The number of items to be returned in a response. The default is 20, with
5516	// a minimum value of 1.
5517	MaxResults *int64 `min:"1" type:"integer"`
5518
5519	// The token to retrieve the next set of results. Amazon Web Services provides
5520	// the token when the response from a previous call has more results than the
5521	// maximum page size.
5522	NextToken *string `type:"string"`
5523
5524	// The time period that you want the usage and costs for. The Start date must
5525	// be within 13 months. The End date must be after the Start date, and before
5526	// the current date. Future dates can't be used as an End date.
5527	//
5528	// TimePeriod is a required field
5529	TimePeriod *DateInterval `type:"structure" required:"true"`
5530}
5531
5532// String returns the string representation
5533func (s GetSavingsPlansUtilizationDetailsInput) String() string {
5534	return awsutil.Prettify(s)
5535}
5536
5537// GoString returns the string representation
5538func (s GetSavingsPlansUtilizationDetailsInput) GoString() string {
5539	return s.String()
5540}
5541
5542// Validate inspects the fields of the type to determine if they are valid.
5543func (s *GetSavingsPlansUtilizationDetailsInput) Validate() error {
5544	invalidParams := request.ErrInvalidParams{Context: "GetSavingsPlansUtilizationDetailsInput"}
5545	if s.MaxResults != nil && *s.MaxResults < 1 {
5546		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
5547	}
5548	if s.TimePeriod == nil {
5549		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
5550	}
5551	if s.Filter != nil {
5552		if err := s.Filter.Validate(); err != nil {
5553			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
5554		}
5555	}
5556	if s.TimePeriod != nil {
5557		if err := s.TimePeriod.Validate(); err != nil {
5558			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
5559		}
5560	}
5561
5562	if invalidParams.Len() > 0 {
5563		return invalidParams
5564	}
5565	return nil
5566}
5567
5568// SetFilter sets the Filter field's value.
5569func (s *GetSavingsPlansUtilizationDetailsInput) SetFilter(v *Expression) *GetSavingsPlansUtilizationDetailsInput {
5570	s.Filter = v
5571	return s
5572}
5573
5574// SetMaxResults sets the MaxResults field's value.
5575func (s *GetSavingsPlansUtilizationDetailsInput) SetMaxResults(v int64) *GetSavingsPlansUtilizationDetailsInput {
5576	s.MaxResults = &v
5577	return s
5578}
5579
5580// SetNextToken sets the NextToken field's value.
5581func (s *GetSavingsPlansUtilizationDetailsInput) SetNextToken(v string) *GetSavingsPlansUtilizationDetailsInput {
5582	s.NextToken = &v
5583	return s
5584}
5585
5586// SetTimePeriod sets the TimePeriod field's value.
5587func (s *GetSavingsPlansUtilizationDetailsInput) SetTimePeriod(v *DateInterval) *GetSavingsPlansUtilizationDetailsInput {
5588	s.TimePeriod = v
5589	return s
5590}
5591
5592type GetSavingsPlansUtilizationDetailsOutput struct {
5593	_ struct{} `type:"structure"`
5594
5595	// The token to retrieve the next set of results. Amazon Web Services provides
5596	// the token when the response from a previous call has more results than the
5597	// maximum page size.
5598	NextToken *string `type:"string"`
5599
5600	// Retrieves a single daily or monthly Savings Plans utilization rate and details
5601	// for your account.
5602	//
5603	// SavingsPlansUtilizationDetails is a required field
5604	SavingsPlansUtilizationDetails []*SavingsPlansUtilizationDetail `type:"list" required:"true"`
5605
5606	// The time period that you want the usage and costs for.
5607	//
5608	// TimePeriod is a required field
5609	TimePeriod *DateInterval `type:"structure" required:"true"`
5610
5611	// The total Savings Plans utilization, regardless of time period.
5612	Total *SavingsPlansUtilizationAggregates `type:"structure"`
5613}
5614
5615// String returns the string representation
5616func (s GetSavingsPlansUtilizationDetailsOutput) String() string {
5617	return awsutil.Prettify(s)
5618}
5619
5620// GoString returns the string representation
5621func (s GetSavingsPlansUtilizationDetailsOutput) GoString() string {
5622	return s.String()
5623}
5624
5625// SetNextToken sets the NextToken field's value.
5626func (s *GetSavingsPlansUtilizationDetailsOutput) SetNextToken(v string) *GetSavingsPlansUtilizationDetailsOutput {
5627	s.NextToken = &v
5628	return s
5629}
5630
5631// SetSavingsPlansUtilizationDetails sets the SavingsPlansUtilizationDetails field's value.
5632func (s *GetSavingsPlansUtilizationDetailsOutput) SetSavingsPlansUtilizationDetails(v []*SavingsPlansUtilizationDetail) *GetSavingsPlansUtilizationDetailsOutput {
5633	s.SavingsPlansUtilizationDetails = v
5634	return s
5635}
5636
5637// SetTimePeriod sets the TimePeriod field's value.
5638func (s *GetSavingsPlansUtilizationDetailsOutput) SetTimePeriod(v *DateInterval) *GetSavingsPlansUtilizationDetailsOutput {
5639	s.TimePeriod = v
5640	return s
5641}
5642
5643// SetTotal sets the Total field's value.
5644func (s *GetSavingsPlansUtilizationDetailsOutput) SetTotal(v *SavingsPlansUtilizationAggregates) *GetSavingsPlansUtilizationDetailsOutput {
5645	s.Total = v
5646	return s
5647}
5648
5649type GetSavingsPlansUtilizationInput struct {
5650	_ struct{} `type:"structure"`
5651
5652	// Filters Savings Plans utilization coverage data for active Savings Plans
5653	// dimensions. You can filter data with the following dimensions:
5654	//
5655	//    * LINKED_ACCOUNT
5656	//
5657	//    * SAVINGS_PLAN_ARN
5658	//
5659	//    * SAVINGS_PLANS_TYPE
5660	//
5661	//    * REGION
5662	//
5663	//    * PAYMENT_OPTION
5664	//
5665	//    * INSTANCE_TYPE_FAMILY
5666	//
5667	// GetSavingsPlansUtilization uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
5668	// object as the other operations, but only AND is supported among each dimension.
5669	Filter *Expression `type:"structure"`
5670
5671	// The granularity of the Amazon Web Services utillization data for your Savings
5672	// Plans.
5673	//
5674	// The GetSavingsPlansUtilization operation supports only DAILY and MONTHLY
5675	// granularities.
5676	Granularity *string `type:"string" enum:"Granularity"`
5677
5678	// The time period that you want the usage and costs for. The Start date must
5679	// be within 13 months. The End date must be after the Start date, and before
5680	// the current date. Future dates can't be used as an End date.
5681	//
5682	// TimePeriod is a required field
5683	TimePeriod *DateInterval `type:"structure" required:"true"`
5684}
5685
5686// String returns the string representation
5687func (s GetSavingsPlansUtilizationInput) String() string {
5688	return awsutil.Prettify(s)
5689}
5690
5691// GoString returns the string representation
5692func (s GetSavingsPlansUtilizationInput) GoString() string {
5693	return s.String()
5694}
5695
5696// Validate inspects the fields of the type to determine if they are valid.
5697func (s *GetSavingsPlansUtilizationInput) Validate() error {
5698	invalidParams := request.ErrInvalidParams{Context: "GetSavingsPlansUtilizationInput"}
5699	if s.TimePeriod == nil {
5700		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
5701	}
5702	if s.Filter != nil {
5703		if err := s.Filter.Validate(); err != nil {
5704			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
5705		}
5706	}
5707	if s.TimePeriod != nil {
5708		if err := s.TimePeriod.Validate(); err != nil {
5709			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
5710		}
5711	}
5712
5713	if invalidParams.Len() > 0 {
5714		return invalidParams
5715	}
5716	return nil
5717}
5718
5719// SetFilter sets the Filter field's value.
5720func (s *GetSavingsPlansUtilizationInput) SetFilter(v *Expression) *GetSavingsPlansUtilizationInput {
5721	s.Filter = v
5722	return s
5723}
5724
5725// SetGranularity sets the Granularity field's value.
5726func (s *GetSavingsPlansUtilizationInput) SetGranularity(v string) *GetSavingsPlansUtilizationInput {
5727	s.Granularity = &v
5728	return s
5729}
5730
5731// SetTimePeriod sets the TimePeriod field's value.
5732func (s *GetSavingsPlansUtilizationInput) SetTimePeriod(v *DateInterval) *GetSavingsPlansUtilizationInput {
5733	s.TimePeriod = v
5734	return s
5735}
5736
5737type GetSavingsPlansUtilizationOutput struct {
5738	_ struct{} `type:"structure"`
5739
5740	// The amount of cost/commitment you used your Savings Plans. This allows you
5741	// to specify date ranges.
5742	SavingsPlansUtilizationsByTime []*SavingsPlansUtilizationByTime `type:"list"`
5743
5744	// The total amount of cost/commitment that you used your Savings Plans, regardless
5745	// of date ranges.
5746	//
5747	// Total is a required field
5748	Total *SavingsPlansUtilizationAggregates `type:"structure" required:"true"`
5749}
5750
5751// String returns the string representation
5752func (s GetSavingsPlansUtilizationOutput) String() string {
5753	return awsutil.Prettify(s)
5754}
5755
5756// GoString returns the string representation
5757func (s GetSavingsPlansUtilizationOutput) GoString() string {
5758	return s.String()
5759}
5760
5761// SetSavingsPlansUtilizationsByTime sets the SavingsPlansUtilizationsByTime field's value.
5762func (s *GetSavingsPlansUtilizationOutput) SetSavingsPlansUtilizationsByTime(v []*SavingsPlansUtilizationByTime) *GetSavingsPlansUtilizationOutput {
5763	s.SavingsPlansUtilizationsByTime = v
5764	return s
5765}
5766
5767// SetTotal sets the Total field's value.
5768func (s *GetSavingsPlansUtilizationOutput) SetTotal(v *SavingsPlansUtilizationAggregates) *GetSavingsPlansUtilizationOutput {
5769	s.Total = v
5770	return s
5771}
5772
5773type GetTagsInput struct {
5774	_ struct{} `type:"structure"`
5775
5776	// The token to retrieve the next set of results. AWS provides the token when
5777	// the response from a previous call has more results than the maximum page
5778	// size.
5779	NextPageToken *string `type:"string"`
5780
5781	// The value that you want to search for.
5782	SearchString *string `type:"string"`
5783
5784	// The key of the tag that you want to return values for.
5785	TagKey *string `type:"string"`
5786
5787	// The start and end dates for retrieving the dimension values. The start date
5788	// is inclusive, but the end date is exclusive. For example, if start is 2017-01-01
5789	// and end is 2017-05-01, then the cost and usage data is retrieved from 2017-01-01
5790	// up to and including 2017-04-30 but not including 2017-05-01.
5791	//
5792	// TimePeriod is a required field
5793	TimePeriod *DateInterval `type:"structure" required:"true"`
5794}
5795
5796// String returns the string representation
5797func (s GetTagsInput) String() string {
5798	return awsutil.Prettify(s)
5799}
5800
5801// GoString returns the string representation
5802func (s GetTagsInput) GoString() string {
5803	return s.String()
5804}
5805
5806// Validate inspects the fields of the type to determine if they are valid.
5807func (s *GetTagsInput) Validate() error {
5808	invalidParams := request.ErrInvalidParams{Context: "GetTagsInput"}
5809	if s.TimePeriod == nil {
5810		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
5811	}
5812	if s.TimePeriod != nil {
5813		if err := s.TimePeriod.Validate(); err != nil {
5814			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
5815		}
5816	}
5817
5818	if invalidParams.Len() > 0 {
5819		return invalidParams
5820	}
5821	return nil
5822}
5823
5824// SetNextPageToken sets the NextPageToken field's value.
5825func (s *GetTagsInput) SetNextPageToken(v string) *GetTagsInput {
5826	s.NextPageToken = &v
5827	return s
5828}
5829
5830// SetSearchString sets the SearchString field's value.
5831func (s *GetTagsInput) SetSearchString(v string) *GetTagsInput {
5832	s.SearchString = &v
5833	return s
5834}
5835
5836// SetTagKey sets the TagKey field's value.
5837func (s *GetTagsInput) SetTagKey(v string) *GetTagsInput {
5838	s.TagKey = &v
5839	return s
5840}
5841
5842// SetTimePeriod sets the TimePeriod field's value.
5843func (s *GetTagsInput) SetTimePeriod(v *DateInterval) *GetTagsInput {
5844	s.TimePeriod = v
5845	return s
5846}
5847
5848type GetTagsOutput struct {
5849	_ struct{} `type:"structure"`
5850
5851	// The token for the next set of retrievable results. AWS provides the token
5852	// when the response from a previous call has more results than the maximum
5853	// page size.
5854	NextPageToken *string `type:"string"`
5855
5856	// The number of query results that AWS returns at a time.
5857	//
5858	// ReturnSize is a required field
5859	ReturnSize *int64 `type:"integer" required:"true"`
5860
5861	// The tags that match your request.
5862	//
5863	// Tags is a required field
5864	Tags []*string `type:"list" required:"true"`
5865
5866	// The total number of query results.
5867	//
5868	// TotalSize is a required field
5869	TotalSize *int64 `type:"integer" required:"true"`
5870}
5871
5872// String returns the string representation
5873func (s GetTagsOutput) String() string {
5874	return awsutil.Prettify(s)
5875}
5876
5877// GoString returns the string representation
5878func (s GetTagsOutput) GoString() string {
5879	return s.String()
5880}
5881
5882// SetNextPageToken sets the NextPageToken field's value.
5883func (s *GetTagsOutput) SetNextPageToken(v string) *GetTagsOutput {
5884	s.NextPageToken = &v
5885	return s
5886}
5887
5888// SetReturnSize sets the ReturnSize field's value.
5889func (s *GetTagsOutput) SetReturnSize(v int64) *GetTagsOutput {
5890	s.ReturnSize = &v
5891	return s
5892}
5893
5894// SetTags sets the Tags field's value.
5895func (s *GetTagsOutput) SetTags(v []*string) *GetTagsOutput {
5896	s.Tags = v
5897	return s
5898}
5899
5900// SetTotalSize sets the TotalSize field's value.
5901func (s *GetTagsOutput) SetTotalSize(v int64) *GetTagsOutput {
5902	s.TotalSize = &v
5903	return s
5904}
5905
5906type GetUsageForecastInput struct {
5907	_ struct{} `type:"structure"`
5908
5909	// The filters that you want to use to filter your forecast. Cost Explorer API
5910	// supports all of the Cost Explorer filters.
5911	Filter *Expression `type:"structure"`
5912
5913	// How granular you want the forecast to be. You can get 3 months of DAILY forecasts
5914	// or 12 months of MONTHLY forecasts.
5915	//
5916	// The GetUsageForecast operation supports only DAILY and MONTHLY granularities.
5917	//
5918	// Granularity is a required field
5919	Granularity *string `type:"string" required:"true" enum:"Granularity"`
5920
5921	// Which metric Cost Explorer uses to create your forecast.
5922	//
5923	// Valid values for a GetUsageForecast call are the following:
5924	//
5925	//    * USAGE_QUANTITY
5926	//
5927	//    * NORMALIZED_USAGE_AMOUNT
5928	//
5929	// Metric is a required field
5930	Metric *string `type:"string" required:"true" enum:"Metric"`
5931
5932	// Cost Explorer always returns the mean forecast as a single point. You can
5933	// request a prediction interval around the mean by specifying a confidence
5934	// level. The higher the confidence level, the more confident Cost Explorer
5935	// is about the actual value falling in the prediction interval. Higher confidence
5936	// levels result in wider prediction intervals.
5937	PredictionIntervalLevel *int64 `min:"51" type:"integer"`
5938
5939	// The start and end dates of the period that you want to retrieve usage forecast
5940	// for. The start date is inclusive, but the end date is exclusive. For example,
5941	// if start is 2017-01-01 and end is 2017-05-01, then the cost and usage data
5942	// is retrieved from 2017-01-01 up to and including 2017-04-30 but not including
5943	// 2017-05-01.
5944	//
5945	// TimePeriod is a required field
5946	TimePeriod *DateInterval `type:"structure" required:"true"`
5947}
5948
5949// String returns the string representation
5950func (s GetUsageForecastInput) String() string {
5951	return awsutil.Prettify(s)
5952}
5953
5954// GoString returns the string representation
5955func (s GetUsageForecastInput) GoString() string {
5956	return s.String()
5957}
5958
5959// Validate inspects the fields of the type to determine if they are valid.
5960func (s *GetUsageForecastInput) Validate() error {
5961	invalidParams := request.ErrInvalidParams{Context: "GetUsageForecastInput"}
5962	if s.Granularity == nil {
5963		invalidParams.Add(request.NewErrParamRequired("Granularity"))
5964	}
5965	if s.Metric == nil {
5966		invalidParams.Add(request.NewErrParamRequired("Metric"))
5967	}
5968	if s.PredictionIntervalLevel != nil && *s.PredictionIntervalLevel < 51 {
5969		invalidParams.Add(request.NewErrParamMinValue("PredictionIntervalLevel", 51))
5970	}
5971	if s.TimePeriod == nil {
5972		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
5973	}
5974	if s.Filter != nil {
5975		if err := s.Filter.Validate(); err != nil {
5976			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
5977		}
5978	}
5979	if s.TimePeriod != nil {
5980		if err := s.TimePeriod.Validate(); err != nil {
5981			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
5982		}
5983	}
5984
5985	if invalidParams.Len() > 0 {
5986		return invalidParams
5987	}
5988	return nil
5989}
5990
5991// SetFilter sets the Filter field's value.
5992func (s *GetUsageForecastInput) SetFilter(v *Expression) *GetUsageForecastInput {
5993	s.Filter = v
5994	return s
5995}
5996
5997// SetGranularity sets the Granularity field's value.
5998func (s *GetUsageForecastInput) SetGranularity(v string) *GetUsageForecastInput {
5999	s.Granularity = &v
6000	return s
6001}
6002
6003// SetMetric sets the Metric field's value.
6004func (s *GetUsageForecastInput) SetMetric(v string) *GetUsageForecastInput {
6005	s.Metric = &v
6006	return s
6007}
6008
6009// SetPredictionIntervalLevel sets the PredictionIntervalLevel field's value.
6010func (s *GetUsageForecastInput) SetPredictionIntervalLevel(v int64) *GetUsageForecastInput {
6011	s.PredictionIntervalLevel = &v
6012	return s
6013}
6014
6015// SetTimePeriod sets the TimePeriod field's value.
6016func (s *GetUsageForecastInput) SetTimePeriod(v *DateInterval) *GetUsageForecastInput {
6017	s.TimePeriod = v
6018	return s
6019}
6020
6021type GetUsageForecastOutput struct {
6022	_ struct{} `type:"structure"`
6023
6024	// The forecasts for your query, in order. For DAILY forecasts, this is a list
6025	// of days. For MONTHLY forecasts, this is a list of months.
6026	ForecastResultsByTime []*ForecastResult `type:"list"`
6027
6028	// How much you're forecasted to use over the forecast period.
6029	Total *MetricValue `type:"structure"`
6030}
6031
6032// String returns the string representation
6033func (s GetUsageForecastOutput) String() string {
6034	return awsutil.Prettify(s)
6035}
6036
6037// GoString returns the string representation
6038func (s GetUsageForecastOutput) GoString() string {
6039	return s.String()
6040}
6041
6042// SetForecastResultsByTime sets the ForecastResultsByTime field's value.
6043func (s *GetUsageForecastOutput) SetForecastResultsByTime(v []*ForecastResult) *GetUsageForecastOutput {
6044	s.ForecastResultsByTime = v
6045	return s
6046}
6047
6048// SetTotal sets the Total field's value.
6049func (s *GetUsageForecastOutput) SetTotal(v *MetricValue) *GetUsageForecastOutput {
6050	s.Total = v
6051	return s
6052}
6053
6054// One level of grouped data in the results.
6055type Group struct {
6056	_ struct{} `type:"structure"`
6057
6058	// The keys that are included in this group.
6059	Keys []*string `type:"list"`
6060
6061	// The metrics that are included in this group.
6062	Metrics map[string]*MetricValue `type:"map"`
6063}
6064
6065// String returns the string representation
6066func (s Group) String() string {
6067	return awsutil.Prettify(s)
6068}
6069
6070// GoString returns the string representation
6071func (s Group) GoString() string {
6072	return s.String()
6073}
6074
6075// SetKeys sets the Keys field's value.
6076func (s *Group) SetKeys(v []*string) *Group {
6077	s.Keys = v
6078	return s
6079}
6080
6081// SetMetrics sets the Metrics field's value.
6082func (s *Group) SetMetrics(v map[string]*MetricValue) *Group {
6083	s.Metrics = v
6084	return s
6085}
6086
6087// Represents a group when you specify a group by criteria or in the response
6088// to a query with a specific grouping.
6089type GroupDefinition struct {
6090	_ struct{} `type:"structure"`
6091
6092	// The string that represents a key for a specified group.
6093	Key *string `type:"string"`
6094
6095	// The string that represents the type of group.
6096	Type *string `type:"string" enum:"GroupDefinitionType"`
6097}
6098
6099// String returns the string representation
6100func (s GroupDefinition) String() string {
6101	return awsutil.Prettify(s)
6102}
6103
6104// GoString returns the string representation
6105func (s GroupDefinition) GoString() string {
6106	return s.String()
6107}
6108
6109// SetKey sets the Key field's value.
6110func (s *GroupDefinition) SetKey(v string) *GroupDefinition {
6111	s.Key = &v
6112	return s
6113}
6114
6115// SetType sets the Type field's value.
6116func (s *GroupDefinition) SetType(v string) *GroupDefinition {
6117	s.Type = &v
6118	return s
6119}
6120
6121// Details about the instances that AWS recommends that you purchase.
6122type InstanceDetails struct {
6123	_ struct{} `type:"structure"`
6124
6125	// The Amazon EC2 instances that AWS recommends that you purchase.
6126	EC2InstanceDetails *EC2InstanceDetails `type:"structure"`
6127
6128	// The Amazon ES instances that AWS recommends that you purchase.
6129	ESInstanceDetails *ESInstanceDetails `type:"structure"`
6130
6131	// The ElastiCache instances that AWS recommends that you purchase.
6132	ElastiCacheInstanceDetails *ElastiCacheInstanceDetails `type:"structure"`
6133
6134	// The Amazon RDS instances that AWS recommends that you purchase.
6135	RDSInstanceDetails *RDSInstanceDetails `type:"structure"`
6136
6137	// The Amazon Redshift instances that AWS recommends that you purchase.
6138	RedshiftInstanceDetails *RedshiftInstanceDetails `type:"structure"`
6139}
6140
6141// String returns the string representation
6142func (s InstanceDetails) String() string {
6143	return awsutil.Prettify(s)
6144}
6145
6146// GoString returns the string representation
6147func (s InstanceDetails) GoString() string {
6148	return s.String()
6149}
6150
6151// SetEC2InstanceDetails sets the EC2InstanceDetails field's value.
6152func (s *InstanceDetails) SetEC2InstanceDetails(v *EC2InstanceDetails) *InstanceDetails {
6153	s.EC2InstanceDetails = v
6154	return s
6155}
6156
6157// SetESInstanceDetails sets the ESInstanceDetails field's value.
6158func (s *InstanceDetails) SetESInstanceDetails(v *ESInstanceDetails) *InstanceDetails {
6159	s.ESInstanceDetails = v
6160	return s
6161}
6162
6163// SetElastiCacheInstanceDetails sets the ElastiCacheInstanceDetails field's value.
6164func (s *InstanceDetails) SetElastiCacheInstanceDetails(v *ElastiCacheInstanceDetails) *InstanceDetails {
6165	s.ElastiCacheInstanceDetails = v
6166	return s
6167}
6168
6169// SetRDSInstanceDetails sets the RDSInstanceDetails field's value.
6170func (s *InstanceDetails) SetRDSInstanceDetails(v *RDSInstanceDetails) *InstanceDetails {
6171	s.RDSInstanceDetails = v
6172	return s
6173}
6174
6175// SetRedshiftInstanceDetails sets the RedshiftInstanceDetails field's value.
6176func (s *InstanceDetails) SetRedshiftInstanceDetails(v *RedshiftInstanceDetails) *InstanceDetails {
6177	s.RedshiftInstanceDetails = v
6178	return s
6179}
6180
6181// The pagination token is invalid. Try again without a pagination token.
6182type InvalidNextTokenException struct {
6183	_            struct{}                  `type:"structure"`
6184	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
6185
6186	Message_ *string `locationName:"Message" type:"string"`
6187}
6188
6189// String returns the string representation
6190func (s InvalidNextTokenException) String() string {
6191	return awsutil.Prettify(s)
6192}
6193
6194// GoString returns the string representation
6195func (s InvalidNextTokenException) GoString() string {
6196	return s.String()
6197}
6198
6199func newErrorInvalidNextTokenException(v protocol.ResponseMetadata) error {
6200	return &InvalidNextTokenException{
6201		RespMetadata: v,
6202	}
6203}
6204
6205// Code returns the exception type name.
6206func (s *InvalidNextTokenException) Code() string {
6207	return "InvalidNextTokenException"
6208}
6209
6210// Message returns the exception's message.
6211func (s *InvalidNextTokenException) Message() string {
6212	if s.Message_ != nil {
6213		return *s.Message_
6214	}
6215	return ""
6216}
6217
6218// OrigErr always returns nil, satisfies awserr.Error interface.
6219func (s *InvalidNextTokenException) OrigErr() error {
6220	return nil
6221}
6222
6223func (s *InvalidNextTokenException) Error() string {
6224	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
6225}
6226
6227// Status code returns the HTTP status code for the request's response error.
6228func (s *InvalidNextTokenException) StatusCode() int {
6229	return s.RespMetadata.StatusCode
6230}
6231
6232// RequestID returns the service's response RequestID for request.
6233func (s *InvalidNextTokenException) RequestID() string {
6234	return s.RespMetadata.RequestID
6235}
6236
6237// You made too many calls in a short period of time. Try again later.
6238type LimitExceededException struct {
6239	_            struct{}                  `type:"structure"`
6240	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
6241
6242	Message_ *string `locationName:"Message" type:"string"`
6243}
6244
6245// String returns the string representation
6246func (s LimitExceededException) String() string {
6247	return awsutil.Prettify(s)
6248}
6249
6250// GoString returns the string representation
6251func (s LimitExceededException) GoString() string {
6252	return s.String()
6253}
6254
6255func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
6256	return &LimitExceededException{
6257		RespMetadata: v,
6258	}
6259}
6260
6261// Code returns the exception type name.
6262func (s *LimitExceededException) Code() string {
6263	return "LimitExceededException"
6264}
6265
6266// Message returns the exception's message.
6267func (s *LimitExceededException) Message() string {
6268	if s.Message_ != nil {
6269		return *s.Message_
6270	}
6271	return ""
6272}
6273
6274// OrigErr always returns nil, satisfies awserr.Error interface.
6275func (s *LimitExceededException) OrigErr() error {
6276	return nil
6277}
6278
6279func (s *LimitExceededException) Error() string {
6280	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
6281}
6282
6283// Status code returns the HTTP status code for the request's response error.
6284func (s *LimitExceededException) StatusCode() int {
6285	return s.RespMetadata.StatusCode
6286}
6287
6288// RequestID returns the service's response RequestID for request.
6289func (s *LimitExceededException) RequestID() string {
6290	return s.RespMetadata.RequestID
6291}
6292
6293type ListCostCategoryDefinitionsInput struct {
6294	_ struct{} `type:"structure"`
6295
6296	// The date when the Cost Category was effective.
6297	EffectiveOn *string `min:"20" type:"string"`
6298
6299	// The number of entries a paginated response contains.
6300	MaxResults *int64 `min:"1" type:"integer"`
6301
6302	// The token to retrieve the next set of results. Amazon Web Services provides
6303	// the token when the response from a previous call has more results than the
6304	// maximum page size.
6305	NextToken *string `type:"string"`
6306}
6307
6308// String returns the string representation
6309func (s ListCostCategoryDefinitionsInput) String() string {
6310	return awsutil.Prettify(s)
6311}
6312
6313// GoString returns the string representation
6314func (s ListCostCategoryDefinitionsInput) GoString() string {
6315	return s.String()
6316}
6317
6318// Validate inspects the fields of the type to determine if they are valid.
6319func (s *ListCostCategoryDefinitionsInput) Validate() error {
6320	invalidParams := request.ErrInvalidParams{Context: "ListCostCategoryDefinitionsInput"}
6321	if s.EffectiveOn != nil && len(*s.EffectiveOn) < 20 {
6322		invalidParams.Add(request.NewErrParamMinLen("EffectiveOn", 20))
6323	}
6324	if s.MaxResults != nil && *s.MaxResults < 1 {
6325		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
6326	}
6327
6328	if invalidParams.Len() > 0 {
6329		return invalidParams
6330	}
6331	return nil
6332}
6333
6334// SetEffectiveOn sets the EffectiveOn field's value.
6335func (s *ListCostCategoryDefinitionsInput) SetEffectiveOn(v string) *ListCostCategoryDefinitionsInput {
6336	s.EffectiveOn = &v
6337	return s
6338}
6339
6340// SetMaxResults sets the MaxResults field's value.
6341func (s *ListCostCategoryDefinitionsInput) SetMaxResults(v int64) *ListCostCategoryDefinitionsInput {
6342	s.MaxResults = &v
6343	return s
6344}
6345
6346// SetNextToken sets the NextToken field's value.
6347func (s *ListCostCategoryDefinitionsInput) SetNextToken(v string) *ListCostCategoryDefinitionsInput {
6348	s.NextToken = &v
6349	return s
6350}
6351
6352type ListCostCategoryDefinitionsOutput struct {
6353	_ struct{} `type:"structure"`
6354
6355	// A reference to a Cost Category containing enough information to identify
6356	// the Cost Category.
6357	CostCategoryReferences []*CostCategoryReference `type:"list"`
6358
6359	// The token to retrieve the next set of results. Amazon Web Services provides
6360	// the token when the response from a previous call has more results than the
6361	// maximum page size.
6362	NextToken *string `type:"string"`
6363}
6364
6365// String returns the string representation
6366func (s ListCostCategoryDefinitionsOutput) String() string {
6367	return awsutil.Prettify(s)
6368}
6369
6370// GoString returns the string representation
6371func (s ListCostCategoryDefinitionsOutput) GoString() string {
6372	return s.String()
6373}
6374
6375// SetCostCategoryReferences sets the CostCategoryReferences field's value.
6376func (s *ListCostCategoryDefinitionsOutput) SetCostCategoryReferences(v []*CostCategoryReference) *ListCostCategoryDefinitionsOutput {
6377	s.CostCategoryReferences = v
6378	return s
6379}
6380
6381// SetNextToken sets the NextToken field's value.
6382func (s *ListCostCategoryDefinitionsOutput) SetNextToken(v string) *ListCostCategoryDefinitionsOutput {
6383	s.NextToken = &v
6384	return s
6385}
6386
6387// The aggregated value for a metric.
6388type MetricValue struct {
6389	_ struct{} `type:"structure"`
6390
6391	// The actual number that represents the metric.
6392	Amount *string `type:"string"`
6393
6394	// The unit that the metric is given in.
6395	Unit *string `type:"string"`
6396}
6397
6398// String returns the string representation
6399func (s MetricValue) String() string {
6400	return awsutil.Prettify(s)
6401}
6402
6403// GoString returns the string representation
6404func (s MetricValue) GoString() string {
6405	return s.String()
6406}
6407
6408// SetAmount sets the Amount field's value.
6409func (s *MetricValue) SetAmount(v string) *MetricValue {
6410	s.Amount = &v
6411	return s
6412}
6413
6414// SetUnit sets the Unit field's value.
6415func (s *MetricValue) SetUnit(v string) *MetricValue {
6416	s.Unit = &v
6417	return s
6418}
6419
6420// Details on the modification recommendation.
6421type ModifyRecommendationDetail struct {
6422	_ struct{} `type:"structure"`
6423
6424	// Identifies whether this instance type is the Amazon Web Services default
6425	// recommendation.
6426	TargetInstances []*TargetInstance `type:"list"`
6427}
6428
6429// String returns the string representation
6430func (s ModifyRecommendationDetail) String() string {
6431	return awsutil.Prettify(s)
6432}
6433
6434// GoString returns the string representation
6435func (s ModifyRecommendationDetail) GoString() string {
6436	return s.String()
6437}
6438
6439// SetTargetInstances sets the TargetInstances field's value.
6440func (s *ModifyRecommendationDetail) SetTargetInstances(v []*TargetInstance) *ModifyRecommendationDetail {
6441	s.TargetInstances = v
6442	return s
6443}
6444
6445// Details about the Amazon RDS instances that AWS recommends that you purchase.
6446type RDSInstanceDetails struct {
6447	_ struct{} `type:"structure"`
6448
6449	// Whether the recommendation is for a current-generation instance.
6450	CurrentGeneration *bool `type:"boolean"`
6451
6452	// The database edition that the recommended reservation supports.
6453	DatabaseEdition *string `type:"string"`
6454
6455	// The database engine that the recommended reservation supports.
6456	DatabaseEngine *string `type:"string"`
6457
6458	// Whether the recommendation is for a reservation in a single Availability
6459	// Zone or a reservation with a backup in a second Availability Zone.
6460	DeploymentOption *string `type:"string"`
6461
6462	// The instance family of the recommended reservation.
6463	Family *string `type:"string"`
6464
6465	// The type of instance that AWS recommends.
6466	InstanceType *string `type:"string"`
6467
6468	// The license model that the recommended reservation supports.
6469	LicenseModel *string `type:"string"`
6470
6471	// The AWS Region of the recommended reservation.
6472	Region *string `type:"string"`
6473
6474	// Whether the recommended reservation is size flexible.
6475	SizeFlexEligible *bool `type:"boolean"`
6476}
6477
6478// String returns the string representation
6479func (s RDSInstanceDetails) String() string {
6480	return awsutil.Prettify(s)
6481}
6482
6483// GoString returns the string representation
6484func (s RDSInstanceDetails) GoString() string {
6485	return s.String()
6486}
6487
6488// SetCurrentGeneration sets the CurrentGeneration field's value.
6489func (s *RDSInstanceDetails) SetCurrentGeneration(v bool) *RDSInstanceDetails {
6490	s.CurrentGeneration = &v
6491	return s
6492}
6493
6494// SetDatabaseEdition sets the DatabaseEdition field's value.
6495func (s *RDSInstanceDetails) SetDatabaseEdition(v string) *RDSInstanceDetails {
6496	s.DatabaseEdition = &v
6497	return s
6498}
6499
6500// SetDatabaseEngine sets the DatabaseEngine field's value.
6501func (s *RDSInstanceDetails) SetDatabaseEngine(v string) *RDSInstanceDetails {
6502	s.DatabaseEngine = &v
6503	return s
6504}
6505
6506// SetDeploymentOption sets the DeploymentOption field's value.
6507func (s *RDSInstanceDetails) SetDeploymentOption(v string) *RDSInstanceDetails {
6508	s.DeploymentOption = &v
6509	return s
6510}
6511
6512// SetFamily sets the Family field's value.
6513func (s *RDSInstanceDetails) SetFamily(v string) *RDSInstanceDetails {
6514	s.Family = &v
6515	return s
6516}
6517
6518// SetInstanceType sets the InstanceType field's value.
6519func (s *RDSInstanceDetails) SetInstanceType(v string) *RDSInstanceDetails {
6520	s.InstanceType = &v
6521	return s
6522}
6523
6524// SetLicenseModel sets the LicenseModel field's value.
6525func (s *RDSInstanceDetails) SetLicenseModel(v string) *RDSInstanceDetails {
6526	s.LicenseModel = &v
6527	return s
6528}
6529
6530// SetRegion sets the Region field's value.
6531func (s *RDSInstanceDetails) SetRegion(v string) *RDSInstanceDetails {
6532	s.Region = &v
6533	return s
6534}
6535
6536// SetSizeFlexEligible sets the SizeFlexEligible field's value.
6537func (s *RDSInstanceDetails) SetSizeFlexEligible(v bool) *RDSInstanceDetails {
6538	s.SizeFlexEligible = &v
6539	return s
6540}
6541
6542// Details about the Amazon Redshift instances that AWS recommends that you
6543// purchase.
6544type RedshiftInstanceDetails struct {
6545	_ struct{} `type:"structure"`
6546
6547	// Whether the recommendation is for a current-generation instance.
6548	CurrentGeneration *bool `type:"boolean"`
6549
6550	// The instance family of the recommended reservation.
6551	Family *string `type:"string"`
6552
6553	// The type of node that AWS recommends.
6554	NodeType *string `type:"string"`
6555
6556	// The AWS Region of the recommended reservation.
6557	Region *string `type:"string"`
6558
6559	// Whether the recommended reservation is size flexible.
6560	SizeFlexEligible *bool `type:"boolean"`
6561}
6562
6563// String returns the string representation
6564func (s RedshiftInstanceDetails) String() string {
6565	return awsutil.Prettify(s)
6566}
6567
6568// GoString returns the string representation
6569func (s RedshiftInstanceDetails) GoString() string {
6570	return s.String()
6571}
6572
6573// SetCurrentGeneration sets the CurrentGeneration field's value.
6574func (s *RedshiftInstanceDetails) SetCurrentGeneration(v bool) *RedshiftInstanceDetails {
6575	s.CurrentGeneration = &v
6576	return s
6577}
6578
6579// SetFamily sets the Family field's value.
6580func (s *RedshiftInstanceDetails) SetFamily(v string) *RedshiftInstanceDetails {
6581	s.Family = &v
6582	return s
6583}
6584
6585// SetNodeType sets the NodeType field's value.
6586func (s *RedshiftInstanceDetails) SetNodeType(v string) *RedshiftInstanceDetails {
6587	s.NodeType = &v
6588	return s
6589}
6590
6591// SetRegion sets the Region field's value.
6592func (s *RedshiftInstanceDetails) SetRegion(v string) *RedshiftInstanceDetails {
6593	s.Region = &v
6594	return s
6595}
6596
6597// SetSizeFlexEligible sets the SizeFlexEligible field's value.
6598func (s *RedshiftInstanceDetails) SetSizeFlexEligible(v bool) *RedshiftInstanceDetails {
6599	s.SizeFlexEligible = &v
6600	return s
6601}
6602
6603// Your request parameters changed between pages. Try again with the old parameters
6604// or without a pagination token.
6605type RequestChangedException struct {
6606	_            struct{}                  `type:"structure"`
6607	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
6608
6609	Message_ *string `locationName:"Message" type:"string"`
6610}
6611
6612// String returns the string representation
6613func (s RequestChangedException) String() string {
6614	return awsutil.Prettify(s)
6615}
6616
6617// GoString returns the string representation
6618func (s RequestChangedException) GoString() string {
6619	return s.String()
6620}
6621
6622func newErrorRequestChangedException(v protocol.ResponseMetadata) error {
6623	return &RequestChangedException{
6624		RespMetadata: v,
6625	}
6626}
6627
6628// Code returns the exception type name.
6629func (s *RequestChangedException) Code() string {
6630	return "RequestChangedException"
6631}
6632
6633// Message returns the exception's message.
6634func (s *RequestChangedException) Message() string {
6635	if s.Message_ != nil {
6636		return *s.Message_
6637	}
6638	return ""
6639}
6640
6641// OrigErr always returns nil, satisfies awserr.Error interface.
6642func (s *RequestChangedException) OrigErr() error {
6643	return nil
6644}
6645
6646func (s *RequestChangedException) Error() string {
6647	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
6648}
6649
6650// Status code returns the HTTP status code for the request's response error.
6651func (s *RequestChangedException) StatusCode() int {
6652	return s.RespMetadata.StatusCode
6653}
6654
6655// RequestID returns the service's response RequestID for request.
6656func (s *RequestChangedException) RequestID() string {
6657	return s.RespMetadata.RequestID
6658}
6659
6660// The aggregated numbers for your reservation usage.
6661type ReservationAggregates struct {
6662	_ struct{} `type:"structure"`
6663
6664	// The monthly cost of your reservation, amortized over the reservation period.
6665	AmortizedRecurringFee *string `type:"string"`
6666
6667	// The upfront cost of your reservation, amortized over the reservation period.
6668	AmortizedUpfrontFee *string `type:"string"`
6669
6670	// How much you saved due to purchasing and utilizing reservation. AWS calculates
6671	// this by subtracting TotalAmortizedFee from OnDemandCostOfRIHoursUsed.
6672	NetRISavings *string `type:"string"`
6673
6674	// How much your reservation would cost if charged On-Demand rates.
6675	OnDemandCostOfRIHoursUsed *string `type:"string"`
6676
6677	// How many reservation hours that you purchased.
6678	PurchasedHours *string `type:"string"`
6679
6680	// How many Amazon EC2 reservation hours that you purchased, converted to normalized
6681	// units. Normalized units are available only for Amazon EC2 usage after November
6682	// 11, 2017.
6683	PurchasedUnits *string `type:"string"`
6684
6685	// The total number of reservation hours that you used.
6686	TotalActualHours *string `type:"string"`
6687
6688	// The total number of Amazon EC2 reservation hours that you used, converted
6689	// to normalized units. Normalized units are available only for Amazon EC2 usage
6690	// after November 11, 2017.
6691	TotalActualUnits *string `type:"string"`
6692
6693	// The total cost of your reservation, amortized over the reservation period.
6694	TotalAmortizedFee *string `type:"string"`
6695
6696	// How much you could save if you use your entire reservation.
6697	TotalPotentialRISavings *string `type:"string"`
6698
6699	// The number of reservation hours that you didn't use.
6700	UnusedHours *string `type:"string"`
6701
6702	// The number of Amazon EC2 reservation hours that you didn't use, converted
6703	// to normalized units. Normalized units are available only for Amazon EC2 usage
6704	// after November 11, 2017.
6705	UnusedUnits *string `type:"string"`
6706
6707	// The percentage of reservation time that you used.
6708	UtilizationPercentage *string `type:"string"`
6709
6710	// The percentage of Amazon EC2 reservation time that you used, converted to
6711	// normalized units. Normalized units are available only for Amazon EC2 usage
6712	// after November 11, 2017.
6713	UtilizationPercentageInUnits *string `type:"string"`
6714}
6715
6716// String returns the string representation
6717func (s ReservationAggregates) String() string {
6718	return awsutil.Prettify(s)
6719}
6720
6721// GoString returns the string representation
6722func (s ReservationAggregates) GoString() string {
6723	return s.String()
6724}
6725
6726// SetAmortizedRecurringFee sets the AmortizedRecurringFee field's value.
6727func (s *ReservationAggregates) SetAmortizedRecurringFee(v string) *ReservationAggregates {
6728	s.AmortizedRecurringFee = &v
6729	return s
6730}
6731
6732// SetAmortizedUpfrontFee sets the AmortizedUpfrontFee field's value.
6733func (s *ReservationAggregates) SetAmortizedUpfrontFee(v string) *ReservationAggregates {
6734	s.AmortizedUpfrontFee = &v
6735	return s
6736}
6737
6738// SetNetRISavings sets the NetRISavings field's value.
6739func (s *ReservationAggregates) SetNetRISavings(v string) *ReservationAggregates {
6740	s.NetRISavings = &v
6741	return s
6742}
6743
6744// SetOnDemandCostOfRIHoursUsed sets the OnDemandCostOfRIHoursUsed field's value.
6745func (s *ReservationAggregates) SetOnDemandCostOfRIHoursUsed(v string) *ReservationAggregates {
6746	s.OnDemandCostOfRIHoursUsed = &v
6747	return s
6748}
6749
6750// SetPurchasedHours sets the PurchasedHours field's value.
6751func (s *ReservationAggregates) SetPurchasedHours(v string) *ReservationAggregates {
6752	s.PurchasedHours = &v
6753	return s
6754}
6755
6756// SetPurchasedUnits sets the PurchasedUnits field's value.
6757func (s *ReservationAggregates) SetPurchasedUnits(v string) *ReservationAggregates {
6758	s.PurchasedUnits = &v
6759	return s
6760}
6761
6762// SetTotalActualHours sets the TotalActualHours field's value.
6763func (s *ReservationAggregates) SetTotalActualHours(v string) *ReservationAggregates {
6764	s.TotalActualHours = &v
6765	return s
6766}
6767
6768// SetTotalActualUnits sets the TotalActualUnits field's value.
6769func (s *ReservationAggregates) SetTotalActualUnits(v string) *ReservationAggregates {
6770	s.TotalActualUnits = &v
6771	return s
6772}
6773
6774// SetTotalAmortizedFee sets the TotalAmortizedFee field's value.
6775func (s *ReservationAggregates) SetTotalAmortizedFee(v string) *ReservationAggregates {
6776	s.TotalAmortizedFee = &v
6777	return s
6778}
6779
6780// SetTotalPotentialRISavings sets the TotalPotentialRISavings field's value.
6781func (s *ReservationAggregates) SetTotalPotentialRISavings(v string) *ReservationAggregates {
6782	s.TotalPotentialRISavings = &v
6783	return s
6784}
6785
6786// SetUnusedHours sets the UnusedHours field's value.
6787func (s *ReservationAggregates) SetUnusedHours(v string) *ReservationAggregates {
6788	s.UnusedHours = &v
6789	return s
6790}
6791
6792// SetUnusedUnits sets the UnusedUnits field's value.
6793func (s *ReservationAggregates) SetUnusedUnits(v string) *ReservationAggregates {
6794	s.UnusedUnits = &v
6795	return s
6796}
6797
6798// SetUtilizationPercentage sets the UtilizationPercentage field's value.
6799func (s *ReservationAggregates) SetUtilizationPercentage(v string) *ReservationAggregates {
6800	s.UtilizationPercentage = &v
6801	return s
6802}
6803
6804// SetUtilizationPercentageInUnits sets the UtilizationPercentageInUnits field's value.
6805func (s *ReservationAggregates) SetUtilizationPercentageInUnits(v string) *ReservationAggregates {
6806	s.UtilizationPercentageInUnits = &v
6807	return s
6808}
6809
6810// A group of reservations that share a set of attributes.
6811type ReservationCoverageGroup struct {
6812	_ struct{} `type:"structure"`
6813
6814	// The attributes for this group of reservations.
6815	Attributes map[string]*string `type:"map"`
6816
6817	// How much instance usage this group of reservations covered.
6818	Coverage *Coverage `type:"structure"`
6819}
6820
6821// String returns the string representation
6822func (s ReservationCoverageGroup) String() string {
6823	return awsutil.Prettify(s)
6824}
6825
6826// GoString returns the string representation
6827func (s ReservationCoverageGroup) GoString() string {
6828	return s.String()
6829}
6830
6831// SetAttributes sets the Attributes field's value.
6832func (s *ReservationCoverageGroup) SetAttributes(v map[string]*string) *ReservationCoverageGroup {
6833	s.Attributes = v
6834	return s
6835}
6836
6837// SetCoverage sets the Coverage field's value.
6838func (s *ReservationCoverageGroup) SetCoverage(v *Coverage) *ReservationCoverageGroup {
6839	s.Coverage = v
6840	return s
6841}
6842
6843// A specific reservation that AWS recommends for purchase.
6844type ReservationPurchaseRecommendation struct {
6845	_ struct{} `type:"structure"`
6846
6847	// The account scope that AWS recommends that you purchase this instance for.
6848	// For example, you can purchase this reservation for an entire organization
6849	// in AWS Organizations.
6850	AccountScope *string `type:"string" enum:"AccountScope"`
6851
6852	// How many days of previous usage that AWS considers when making this recommendation.
6853	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
6854
6855	// The payment option for the reservation. For example, AllUpfront or NoUpfront.
6856	PaymentOption *string `type:"string" enum:"PaymentOption"`
6857
6858	// Details about the recommended purchases.
6859	RecommendationDetails []*ReservationPurchaseRecommendationDetail `type:"list"`
6860
6861	// A summary about the recommended purchase.
6862	RecommendationSummary *ReservationPurchaseRecommendationSummary `type:"structure"`
6863
6864	// Hardware specifications for the service that you want recommendations for.
6865	ServiceSpecification *ServiceSpecification `type:"structure"`
6866
6867	// The term of the reservation that you want recommendations for, in years.
6868	TermInYears *string `type:"string" enum:"TermInYears"`
6869}
6870
6871// String returns the string representation
6872func (s ReservationPurchaseRecommendation) String() string {
6873	return awsutil.Prettify(s)
6874}
6875
6876// GoString returns the string representation
6877func (s ReservationPurchaseRecommendation) GoString() string {
6878	return s.String()
6879}
6880
6881// SetAccountScope sets the AccountScope field's value.
6882func (s *ReservationPurchaseRecommendation) SetAccountScope(v string) *ReservationPurchaseRecommendation {
6883	s.AccountScope = &v
6884	return s
6885}
6886
6887// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
6888func (s *ReservationPurchaseRecommendation) SetLookbackPeriodInDays(v string) *ReservationPurchaseRecommendation {
6889	s.LookbackPeriodInDays = &v
6890	return s
6891}
6892
6893// SetPaymentOption sets the PaymentOption field's value.
6894func (s *ReservationPurchaseRecommendation) SetPaymentOption(v string) *ReservationPurchaseRecommendation {
6895	s.PaymentOption = &v
6896	return s
6897}
6898
6899// SetRecommendationDetails sets the RecommendationDetails field's value.
6900func (s *ReservationPurchaseRecommendation) SetRecommendationDetails(v []*ReservationPurchaseRecommendationDetail) *ReservationPurchaseRecommendation {
6901	s.RecommendationDetails = v
6902	return s
6903}
6904
6905// SetRecommendationSummary sets the RecommendationSummary field's value.
6906func (s *ReservationPurchaseRecommendation) SetRecommendationSummary(v *ReservationPurchaseRecommendationSummary) *ReservationPurchaseRecommendation {
6907	s.RecommendationSummary = v
6908	return s
6909}
6910
6911// SetServiceSpecification sets the ServiceSpecification field's value.
6912func (s *ReservationPurchaseRecommendation) SetServiceSpecification(v *ServiceSpecification) *ReservationPurchaseRecommendation {
6913	s.ServiceSpecification = v
6914	return s
6915}
6916
6917// SetTermInYears sets the TermInYears field's value.
6918func (s *ReservationPurchaseRecommendation) SetTermInYears(v string) *ReservationPurchaseRecommendation {
6919	s.TermInYears = &v
6920	return s
6921}
6922
6923// Details about your recommended reservation purchase.
6924type ReservationPurchaseRecommendationDetail struct {
6925	_ struct{} `type:"structure"`
6926
6927	// The account that this RI recommendation is for.
6928	AccountId *string `type:"string"`
6929
6930	// The average number of normalized units that you used in an hour during the
6931	// historical period. AWS uses this to calculate your recommended reservation
6932	// purchases.
6933	AverageNormalizedUnitsUsedPerHour *string `type:"string"`
6934
6935	// The average number of instances that you used in an hour during the historical
6936	// period. AWS uses this to calculate your recommended reservation purchases.
6937	AverageNumberOfInstancesUsedPerHour *string `type:"string"`
6938
6939	// The average utilization of your instances. AWS uses this to calculate your
6940	// recommended reservation purchases.
6941	AverageUtilization *string `type:"string"`
6942
6943	// The currency code that AWS used to calculate the costs for this instance.
6944	CurrencyCode *string `type:"string"`
6945
6946	// How long AWS estimates that it takes for this instance to start saving you
6947	// money, in months.
6948	EstimatedBreakEvenInMonths *string `type:"string"`
6949
6950	// How much AWS estimates that you spend on On-Demand Instances in a month.
6951	EstimatedMonthlyOnDemandCost *string `type:"string"`
6952
6953	// How much AWS estimates that this specific recommendation could save you in
6954	// a month.
6955	EstimatedMonthlySavingsAmount *string `type:"string"`
6956
6957	// How much AWS estimates that this specific recommendation could save you in
6958	// a month, as a percentage of your overall costs.
6959	EstimatedMonthlySavingsPercentage *string `type:"string"`
6960
6961	// How much AWS estimates that you would have spent for all usage during the
6962	// specified historical period if you had a reservation.
6963	EstimatedReservationCostForLookbackPeriod *string `type:"string"`
6964
6965	// Details about the instances that AWS recommends that you purchase.
6966	InstanceDetails *InstanceDetails `type:"structure"`
6967
6968	// The maximum number of normalized units that you used in an hour during the
6969	// historical period. AWS uses this to calculate your recommended reservation
6970	// purchases.
6971	MaximumNormalizedUnitsUsedPerHour *string `type:"string"`
6972
6973	// The maximum number of instances that you used in an hour during the historical
6974	// period. AWS uses this to calculate your recommended reservation purchases.
6975	MaximumNumberOfInstancesUsedPerHour *string `type:"string"`
6976
6977	// The minimum number of normalized units that you used in an hour during the
6978	// historical period. AWS uses this to calculate your recommended reservation
6979	// purchases.
6980	MinimumNormalizedUnitsUsedPerHour *string `type:"string"`
6981
6982	// The minimum number of instances that you used in an hour during the historical
6983	// period. AWS uses this to calculate your recommended reservation purchases.
6984	MinimumNumberOfInstancesUsedPerHour *string `type:"string"`
6985
6986	// The number of normalized units that AWS recommends that you purchase.
6987	RecommendedNormalizedUnitsToPurchase *string `type:"string"`
6988
6989	// The number of instances that AWS recommends that you purchase.
6990	RecommendedNumberOfInstancesToPurchase *string `type:"string"`
6991
6992	// How much purchasing this instance costs you on a monthly basis.
6993	RecurringStandardMonthlyCost *string `type:"string"`
6994
6995	// How much purchasing this instance costs you upfront.
6996	UpfrontCost *string `type:"string"`
6997}
6998
6999// String returns the string representation
7000func (s ReservationPurchaseRecommendationDetail) String() string {
7001	return awsutil.Prettify(s)
7002}
7003
7004// GoString returns the string representation
7005func (s ReservationPurchaseRecommendationDetail) GoString() string {
7006	return s.String()
7007}
7008
7009// SetAccountId sets the AccountId field's value.
7010func (s *ReservationPurchaseRecommendationDetail) SetAccountId(v string) *ReservationPurchaseRecommendationDetail {
7011	s.AccountId = &v
7012	return s
7013}
7014
7015// SetAverageNormalizedUnitsUsedPerHour sets the AverageNormalizedUnitsUsedPerHour field's value.
7016func (s *ReservationPurchaseRecommendationDetail) SetAverageNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
7017	s.AverageNormalizedUnitsUsedPerHour = &v
7018	return s
7019}
7020
7021// SetAverageNumberOfInstancesUsedPerHour sets the AverageNumberOfInstancesUsedPerHour field's value.
7022func (s *ReservationPurchaseRecommendationDetail) SetAverageNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
7023	s.AverageNumberOfInstancesUsedPerHour = &v
7024	return s
7025}
7026
7027// SetAverageUtilization sets the AverageUtilization field's value.
7028func (s *ReservationPurchaseRecommendationDetail) SetAverageUtilization(v string) *ReservationPurchaseRecommendationDetail {
7029	s.AverageUtilization = &v
7030	return s
7031}
7032
7033// SetCurrencyCode sets the CurrencyCode field's value.
7034func (s *ReservationPurchaseRecommendationDetail) SetCurrencyCode(v string) *ReservationPurchaseRecommendationDetail {
7035	s.CurrencyCode = &v
7036	return s
7037}
7038
7039// SetEstimatedBreakEvenInMonths sets the EstimatedBreakEvenInMonths field's value.
7040func (s *ReservationPurchaseRecommendationDetail) SetEstimatedBreakEvenInMonths(v string) *ReservationPurchaseRecommendationDetail {
7041	s.EstimatedBreakEvenInMonths = &v
7042	return s
7043}
7044
7045// SetEstimatedMonthlyOnDemandCost sets the EstimatedMonthlyOnDemandCost field's value.
7046func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlyOnDemandCost(v string) *ReservationPurchaseRecommendationDetail {
7047	s.EstimatedMonthlyOnDemandCost = &v
7048	return s
7049}
7050
7051// SetEstimatedMonthlySavingsAmount sets the EstimatedMonthlySavingsAmount field's value.
7052func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlySavingsAmount(v string) *ReservationPurchaseRecommendationDetail {
7053	s.EstimatedMonthlySavingsAmount = &v
7054	return s
7055}
7056
7057// SetEstimatedMonthlySavingsPercentage sets the EstimatedMonthlySavingsPercentage field's value.
7058func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlySavingsPercentage(v string) *ReservationPurchaseRecommendationDetail {
7059	s.EstimatedMonthlySavingsPercentage = &v
7060	return s
7061}
7062
7063// SetEstimatedReservationCostForLookbackPeriod sets the EstimatedReservationCostForLookbackPeriod field's value.
7064func (s *ReservationPurchaseRecommendationDetail) SetEstimatedReservationCostForLookbackPeriod(v string) *ReservationPurchaseRecommendationDetail {
7065	s.EstimatedReservationCostForLookbackPeriod = &v
7066	return s
7067}
7068
7069// SetInstanceDetails sets the InstanceDetails field's value.
7070func (s *ReservationPurchaseRecommendationDetail) SetInstanceDetails(v *InstanceDetails) *ReservationPurchaseRecommendationDetail {
7071	s.InstanceDetails = v
7072	return s
7073}
7074
7075// SetMaximumNormalizedUnitsUsedPerHour sets the MaximumNormalizedUnitsUsedPerHour field's value.
7076func (s *ReservationPurchaseRecommendationDetail) SetMaximumNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
7077	s.MaximumNormalizedUnitsUsedPerHour = &v
7078	return s
7079}
7080
7081// SetMaximumNumberOfInstancesUsedPerHour sets the MaximumNumberOfInstancesUsedPerHour field's value.
7082func (s *ReservationPurchaseRecommendationDetail) SetMaximumNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
7083	s.MaximumNumberOfInstancesUsedPerHour = &v
7084	return s
7085}
7086
7087// SetMinimumNormalizedUnitsUsedPerHour sets the MinimumNormalizedUnitsUsedPerHour field's value.
7088func (s *ReservationPurchaseRecommendationDetail) SetMinimumNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
7089	s.MinimumNormalizedUnitsUsedPerHour = &v
7090	return s
7091}
7092
7093// SetMinimumNumberOfInstancesUsedPerHour sets the MinimumNumberOfInstancesUsedPerHour field's value.
7094func (s *ReservationPurchaseRecommendationDetail) SetMinimumNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
7095	s.MinimumNumberOfInstancesUsedPerHour = &v
7096	return s
7097}
7098
7099// SetRecommendedNormalizedUnitsToPurchase sets the RecommendedNormalizedUnitsToPurchase field's value.
7100func (s *ReservationPurchaseRecommendationDetail) SetRecommendedNormalizedUnitsToPurchase(v string) *ReservationPurchaseRecommendationDetail {
7101	s.RecommendedNormalizedUnitsToPurchase = &v
7102	return s
7103}
7104
7105// SetRecommendedNumberOfInstancesToPurchase sets the RecommendedNumberOfInstancesToPurchase field's value.
7106func (s *ReservationPurchaseRecommendationDetail) SetRecommendedNumberOfInstancesToPurchase(v string) *ReservationPurchaseRecommendationDetail {
7107	s.RecommendedNumberOfInstancesToPurchase = &v
7108	return s
7109}
7110
7111// SetRecurringStandardMonthlyCost sets the RecurringStandardMonthlyCost field's value.
7112func (s *ReservationPurchaseRecommendationDetail) SetRecurringStandardMonthlyCost(v string) *ReservationPurchaseRecommendationDetail {
7113	s.RecurringStandardMonthlyCost = &v
7114	return s
7115}
7116
7117// SetUpfrontCost sets the UpfrontCost field's value.
7118func (s *ReservationPurchaseRecommendationDetail) SetUpfrontCost(v string) *ReservationPurchaseRecommendationDetail {
7119	s.UpfrontCost = &v
7120	return s
7121}
7122
7123// Information about this specific recommendation, such as the timestamp for
7124// when AWS made a specific recommendation.
7125type ReservationPurchaseRecommendationMetadata struct {
7126	_ struct{} `type:"structure"`
7127
7128	// The timestamp for when AWS made this recommendation.
7129	GenerationTimestamp *string `type:"string"`
7130
7131	// The ID for this specific recommendation.
7132	RecommendationId *string `type:"string"`
7133}
7134
7135// String returns the string representation
7136func (s ReservationPurchaseRecommendationMetadata) String() string {
7137	return awsutil.Prettify(s)
7138}
7139
7140// GoString returns the string representation
7141func (s ReservationPurchaseRecommendationMetadata) GoString() string {
7142	return s.String()
7143}
7144
7145// SetGenerationTimestamp sets the GenerationTimestamp field's value.
7146func (s *ReservationPurchaseRecommendationMetadata) SetGenerationTimestamp(v string) *ReservationPurchaseRecommendationMetadata {
7147	s.GenerationTimestamp = &v
7148	return s
7149}
7150
7151// SetRecommendationId sets the RecommendationId field's value.
7152func (s *ReservationPurchaseRecommendationMetadata) SetRecommendationId(v string) *ReservationPurchaseRecommendationMetadata {
7153	s.RecommendationId = &v
7154	return s
7155}
7156
7157// A summary about this recommendation, such as the currency code, the amount
7158// that AWS estimates that you could save, and the total amount of reservation
7159// to purchase.
7160type ReservationPurchaseRecommendationSummary struct {
7161	_ struct{} `type:"structure"`
7162
7163	// The currency code used for this recommendation.
7164	CurrencyCode *string `type:"string"`
7165
7166	// The total amount that AWS estimates that this recommendation could save you
7167	// in a month.
7168	TotalEstimatedMonthlySavingsAmount *string `type:"string"`
7169
7170	// The total amount that AWS estimates that this recommendation could save you
7171	// in a month, as a percentage of your costs.
7172	TotalEstimatedMonthlySavingsPercentage *string `type:"string"`
7173}
7174
7175// String returns the string representation
7176func (s ReservationPurchaseRecommendationSummary) String() string {
7177	return awsutil.Prettify(s)
7178}
7179
7180// GoString returns the string representation
7181func (s ReservationPurchaseRecommendationSummary) GoString() string {
7182	return s.String()
7183}
7184
7185// SetCurrencyCode sets the CurrencyCode field's value.
7186func (s *ReservationPurchaseRecommendationSummary) SetCurrencyCode(v string) *ReservationPurchaseRecommendationSummary {
7187	s.CurrencyCode = &v
7188	return s
7189}
7190
7191// SetTotalEstimatedMonthlySavingsAmount sets the TotalEstimatedMonthlySavingsAmount field's value.
7192func (s *ReservationPurchaseRecommendationSummary) SetTotalEstimatedMonthlySavingsAmount(v string) *ReservationPurchaseRecommendationSummary {
7193	s.TotalEstimatedMonthlySavingsAmount = &v
7194	return s
7195}
7196
7197// SetTotalEstimatedMonthlySavingsPercentage sets the TotalEstimatedMonthlySavingsPercentage field's value.
7198func (s *ReservationPurchaseRecommendationSummary) SetTotalEstimatedMonthlySavingsPercentage(v string) *ReservationPurchaseRecommendationSummary {
7199	s.TotalEstimatedMonthlySavingsPercentage = &v
7200	return s
7201}
7202
7203// A group of reservations that share a set of attributes.
7204type ReservationUtilizationGroup struct {
7205	_ struct{} `type:"structure"`
7206
7207	// The attributes for this group of reservations.
7208	Attributes map[string]*string `type:"map"`
7209
7210	// The key for a specific reservation attribute.
7211	Key *string `type:"string"`
7212
7213	// How much you used this group of reservations.
7214	Utilization *ReservationAggregates `type:"structure"`
7215
7216	// The value of a specific reservation attribute.
7217	Value *string `type:"string"`
7218}
7219
7220// String returns the string representation
7221func (s ReservationUtilizationGroup) String() string {
7222	return awsutil.Prettify(s)
7223}
7224
7225// GoString returns the string representation
7226func (s ReservationUtilizationGroup) GoString() string {
7227	return s.String()
7228}
7229
7230// SetAttributes sets the Attributes field's value.
7231func (s *ReservationUtilizationGroup) SetAttributes(v map[string]*string) *ReservationUtilizationGroup {
7232	s.Attributes = v
7233	return s
7234}
7235
7236// SetKey sets the Key field's value.
7237func (s *ReservationUtilizationGroup) SetKey(v string) *ReservationUtilizationGroup {
7238	s.Key = &v
7239	return s
7240}
7241
7242// SetUtilization sets the Utilization field's value.
7243func (s *ReservationUtilizationGroup) SetUtilization(v *ReservationAggregates) *ReservationUtilizationGroup {
7244	s.Utilization = v
7245	return s
7246}
7247
7248// SetValue sets the Value field's value.
7249func (s *ReservationUtilizationGroup) SetValue(v string) *ReservationUtilizationGroup {
7250	s.Value = &v
7251	return s
7252}
7253
7254// Details on the resource.
7255type ResourceDetails struct {
7256	_ struct{} `type:"structure"`
7257
7258	// Details on the Amazon EC2 resource.
7259	EC2ResourceDetails *EC2ResourceDetails `type:"structure"`
7260}
7261
7262// String returns the string representation
7263func (s ResourceDetails) String() string {
7264	return awsutil.Prettify(s)
7265}
7266
7267// GoString returns the string representation
7268func (s ResourceDetails) GoString() string {
7269	return s.String()
7270}
7271
7272// SetEC2ResourceDetails sets the EC2ResourceDetails field's value.
7273func (s *ResourceDetails) SetEC2ResourceDetails(v *EC2ResourceDetails) *ResourceDetails {
7274	s.EC2ResourceDetails = v
7275	return s
7276}
7277
7278// The specified ARN in the request doesn't exist.
7279type ResourceNotFoundException struct {
7280	_            struct{}                  `type:"structure"`
7281	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
7282
7283	Message_ *string `locationName:"Message" type:"string"`
7284}
7285
7286// String returns the string representation
7287func (s ResourceNotFoundException) String() string {
7288	return awsutil.Prettify(s)
7289}
7290
7291// GoString returns the string representation
7292func (s ResourceNotFoundException) GoString() string {
7293	return s.String()
7294}
7295
7296func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
7297	return &ResourceNotFoundException{
7298		RespMetadata: v,
7299	}
7300}
7301
7302// Code returns the exception type name.
7303func (s *ResourceNotFoundException) Code() string {
7304	return "ResourceNotFoundException"
7305}
7306
7307// Message returns the exception's message.
7308func (s *ResourceNotFoundException) Message() string {
7309	if s.Message_ != nil {
7310		return *s.Message_
7311	}
7312	return ""
7313}
7314
7315// OrigErr always returns nil, satisfies awserr.Error interface.
7316func (s *ResourceNotFoundException) OrigErr() error {
7317	return nil
7318}
7319
7320func (s *ResourceNotFoundException) Error() string {
7321	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
7322}
7323
7324// Status code returns the HTTP status code for the request's response error.
7325func (s *ResourceNotFoundException) StatusCode() int {
7326	return s.RespMetadata.StatusCode
7327}
7328
7329// RequestID returns the service's response RequestID for request.
7330func (s *ResourceNotFoundException) RequestID() string {
7331	return s.RespMetadata.RequestID
7332}
7333
7334// Resource utilization of current resource.
7335type ResourceUtilization struct {
7336	_ struct{} `type:"structure"`
7337
7338	// Utilization of current Amazon EC2 Instance
7339	EC2ResourceUtilization *EC2ResourceUtilization `type:"structure"`
7340}
7341
7342// String returns the string representation
7343func (s ResourceUtilization) String() string {
7344	return awsutil.Prettify(s)
7345}
7346
7347// GoString returns the string representation
7348func (s ResourceUtilization) GoString() string {
7349	return s.String()
7350}
7351
7352// SetEC2ResourceUtilization sets the EC2ResourceUtilization field's value.
7353func (s *ResourceUtilization) SetEC2ResourceUtilization(v *EC2ResourceUtilization) *ResourceUtilization {
7354	s.EC2ResourceUtilization = v
7355	return s
7356}
7357
7358// The result that is associated with a time period.
7359type ResultByTime struct {
7360	_ struct{} `type:"structure"`
7361
7362	// Whether the result is estimated.
7363	Estimated *bool `type:"boolean"`
7364
7365	// The groups that this time period includes.
7366	Groups []*Group `type:"list"`
7367
7368	// The time period that the result covers.
7369	TimePeriod *DateInterval `type:"structure"`
7370
7371	// The total amount of cost or usage accrued during the time period.
7372	Total map[string]*MetricValue `type:"map"`
7373}
7374
7375// String returns the string representation
7376func (s ResultByTime) String() string {
7377	return awsutil.Prettify(s)
7378}
7379
7380// GoString returns the string representation
7381func (s ResultByTime) GoString() string {
7382	return s.String()
7383}
7384
7385// SetEstimated sets the Estimated field's value.
7386func (s *ResultByTime) SetEstimated(v bool) *ResultByTime {
7387	s.Estimated = &v
7388	return s
7389}
7390
7391// SetGroups sets the Groups field's value.
7392func (s *ResultByTime) SetGroups(v []*Group) *ResultByTime {
7393	s.Groups = v
7394	return s
7395}
7396
7397// SetTimePeriod sets the TimePeriod field's value.
7398func (s *ResultByTime) SetTimePeriod(v *DateInterval) *ResultByTime {
7399	s.TimePeriod = v
7400	return s
7401}
7402
7403// SetTotal sets the Total field's value.
7404func (s *ResultByTime) SetTotal(v map[string]*MetricValue) *ResultByTime {
7405	s.Total = v
7406	return s
7407}
7408
7409// Recommendations to rightsize resources.
7410type RightsizingRecommendation struct {
7411	_ struct{} `type:"structure"`
7412
7413	// The account that this recommendation is for.
7414	AccountId *string `type:"string"`
7415
7416	// Context regarding the current instance.
7417	CurrentInstance *CurrentInstance `type:"structure"`
7418
7419	// Details for modification recommendations.
7420	ModifyRecommendationDetail *ModifyRecommendationDetail `type:"structure"`
7421
7422	// Recommendation to either terminate or modify the resource.
7423	RightsizingType *string `type:"string" enum:"RightsizingType"`
7424
7425	// Details for termination recommendations.
7426	TerminateRecommendationDetail *TerminateRecommendationDetail `type:"structure"`
7427}
7428
7429// String returns the string representation
7430func (s RightsizingRecommendation) String() string {
7431	return awsutil.Prettify(s)
7432}
7433
7434// GoString returns the string representation
7435func (s RightsizingRecommendation) GoString() string {
7436	return s.String()
7437}
7438
7439// SetAccountId sets the AccountId field's value.
7440func (s *RightsizingRecommendation) SetAccountId(v string) *RightsizingRecommendation {
7441	s.AccountId = &v
7442	return s
7443}
7444
7445// SetCurrentInstance sets the CurrentInstance field's value.
7446func (s *RightsizingRecommendation) SetCurrentInstance(v *CurrentInstance) *RightsizingRecommendation {
7447	s.CurrentInstance = v
7448	return s
7449}
7450
7451// SetModifyRecommendationDetail sets the ModifyRecommendationDetail field's value.
7452func (s *RightsizingRecommendation) SetModifyRecommendationDetail(v *ModifyRecommendationDetail) *RightsizingRecommendation {
7453	s.ModifyRecommendationDetail = v
7454	return s
7455}
7456
7457// SetRightsizingType sets the RightsizingType field's value.
7458func (s *RightsizingRecommendation) SetRightsizingType(v string) *RightsizingRecommendation {
7459	s.RightsizingType = &v
7460	return s
7461}
7462
7463// SetTerminateRecommendationDetail sets the TerminateRecommendationDetail field's value.
7464func (s *RightsizingRecommendation) SetTerminateRecommendationDetail(v *TerminateRecommendationDetail) *RightsizingRecommendation {
7465	s.TerminateRecommendationDetail = v
7466	return s
7467}
7468
7469// Enables you to customize recommendations across two attributes. You can choose
7470// to view recommendations for instances within the same instance families or
7471// across different instance families. You can also choose to view your estimated
7472// savings associated with recommendations with consideration of existing Savings
7473// Plans or RI benefits, or neither.
7474type RightsizingRecommendationConfiguration struct {
7475	_ struct{} `type:"structure"`
7476
7477	// The option to consider RI or Savings Plans discount benefits in your savings
7478	// calculation. The default value is TRUE.
7479	//
7480	// BenefitsConsidered is a required field
7481	BenefitsConsidered *bool `type:"boolean" required:"true"`
7482
7483	// The option to see recommendations within the same instance family, or recommendations
7484	// for instances across other families. The default value is SAME_INSTANCE_FAMILY.
7485	//
7486	// RecommendationTarget is a required field
7487	RecommendationTarget *string `type:"string" required:"true" enum:"RecommendationTarget"`
7488}
7489
7490// String returns the string representation
7491func (s RightsizingRecommendationConfiguration) String() string {
7492	return awsutil.Prettify(s)
7493}
7494
7495// GoString returns the string representation
7496func (s RightsizingRecommendationConfiguration) GoString() string {
7497	return s.String()
7498}
7499
7500// Validate inspects the fields of the type to determine if they are valid.
7501func (s *RightsizingRecommendationConfiguration) Validate() error {
7502	invalidParams := request.ErrInvalidParams{Context: "RightsizingRecommendationConfiguration"}
7503	if s.BenefitsConsidered == nil {
7504		invalidParams.Add(request.NewErrParamRequired("BenefitsConsidered"))
7505	}
7506	if s.RecommendationTarget == nil {
7507		invalidParams.Add(request.NewErrParamRequired("RecommendationTarget"))
7508	}
7509
7510	if invalidParams.Len() > 0 {
7511		return invalidParams
7512	}
7513	return nil
7514}
7515
7516// SetBenefitsConsidered sets the BenefitsConsidered field's value.
7517func (s *RightsizingRecommendationConfiguration) SetBenefitsConsidered(v bool) *RightsizingRecommendationConfiguration {
7518	s.BenefitsConsidered = &v
7519	return s
7520}
7521
7522// SetRecommendationTarget sets the RecommendationTarget field's value.
7523func (s *RightsizingRecommendationConfiguration) SetRecommendationTarget(v string) *RightsizingRecommendationConfiguration {
7524	s.RecommendationTarget = &v
7525	return s
7526}
7527
7528// Metadata for this recommendation set.
7529type RightsizingRecommendationMetadata struct {
7530	_ struct{} `type:"structure"`
7531
7532	// The timestamp for when Amazon Web Services made this recommendation.
7533	GenerationTimestamp *string `type:"string"`
7534
7535	// How many days of previous usage that Amazon Web Services considers when making
7536	// this recommendation.
7537	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
7538
7539	// The ID for this specific recommendation.
7540	RecommendationId *string `type:"string"`
7541}
7542
7543// String returns the string representation
7544func (s RightsizingRecommendationMetadata) String() string {
7545	return awsutil.Prettify(s)
7546}
7547
7548// GoString returns the string representation
7549func (s RightsizingRecommendationMetadata) GoString() string {
7550	return s.String()
7551}
7552
7553// SetGenerationTimestamp sets the GenerationTimestamp field's value.
7554func (s *RightsizingRecommendationMetadata) SetGenerationTimestamp(v string) *RightsizingRecommendationMetadata {
7555	s.GenerationTimestamp = &v
7556	return s
7557}
7558
7559// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
7560func (s *RightsizingRecommendationMetadata) SetLookbackPeriodInDays(v string) *RightsizingRecommendationMetadata {
7561	s.LookbackPeriodInDays = &v
7562	return s
7563}
7564
7565// SetRecommendationId sets the RecommendationId field's value.
7566func (s *RightsizingRecommendationMetadata) SetRecommendationId(v string) *RightsizingRecommendationMetadata {
7567	s.RecommendationId = &v
7568	return s
7569}
7570
7571// Summary of rightsizing recommendations
7572type RightsizingRecommendationSummary struct {
7573	_ struct{} `type:"structure"`
7574
7575	// Estimated total savings resulting from modifications, on a monthly basis.
7576	EstimatedTotalMonthlySavingsAmount *string `type:"string"`
7577
7578	// The currency code that Amazon Web Services used to calculate the savings.
7579	SavingsCurrencyCode *string `type:"string"`
7580
7581	// Savings percentage based on the recommended modifications, relative to the
7582	// total On-Demand costs associated with these instances.
7583	SavingsPercentage *string `type:"string"`
7584
7585	// Total number of instance recommendations.
7586	TotalRecommendationCount *string `type:"string"`
7587}
7588
7589// String returns the string representation
7590func (s RightsizingRecommendationSummary) String() string {
7591	return awsutil.Prettify(s)
7592}
7593
7594// GoString returns the string representation
7595func (s RightsizingRecommendationSummary) GoString() string {
7596	return s.String()
7597}
7598
7599// SetEstimatedTotalMonthlySavingsAmount sets the EstimatedTotalMonthlySavingsAmount field's value.
7600func (s *RightsizingRecommendationSummary) SetEstimatedTotalMonthlySavingsAmount(v string) *RightsizingRecommendationSummary {
7601	s.EstimatedTotalMonthlySavingsAmount = &v
7602	return s
7603}
7604
7605// SetSavingsCurrencyCode sets the SavingsCurrencyCode field's value.
7606func (s *RightsizingRecommendationSummary) SetSavingsCurrencyCode(v string) *RightsizingRecommendationSummary {
7607	s.SavingsCurrencyCode = &v
7608	return s
7609}
7610
7611// SetSavingsPercentage sets the SavingsPercentage field's value.
7612func (s *RightsizingRecommendationSummary) SetSavingsPercentage(v string) *RightsizingRecommendationSummary {
7613	s.SavingsPercentage = &v
7614	return s
7615}
7616
7617// SetTotalRecommendationCount sets the TotalRecommendationCount field's value.
7618func (s *RightsizingRecommendationSummary) SetTotalRecommendationCount(v string) *RightsizingRecommendationSummary {
7619	s.TotalRecommendationCount = &v
7620	return s
7621}
7622
7623// The amortized amount of Savings Plans purchased in a specific account during
7624// a specific time interval.
7625type SavingsPlansAmortizedCommitment struct {
7626	_ struct{} `type:"structure"`
7627
7628	// The amortized amount of your Savings Plans commitment that was purchased
7629	// with either a Partial or a NoUpfront.
7630	AmortizedRecurringCommitment *string `type:"string"`
7631
7632	// The amortized amount of your Savings Plans commitment that was purchased
7633	// with an Upfront or PartialUpfront Savings Plans.
7634	AmortizedUpfrontCommitment *string `type:"string"`
7635
7636	// The total amortized amount of your Savings Plans commitment, regardless of
7637	// your Savings Plans purchase method.
7638	TotalAmortizedCommitment *string `type:"string"`
7639}
7640
7641// String returns the string representation
7642func (s SavingsPlansAmortizedCommitment) String() string {
7643	return awsutil.Prettify(s)
7644}
7645
7646// GoString returns the string representation
7647func (s SavingsPlansAmortizedCommitment) GoString() string {
7648	return s.String()
7649}
7650
7651// SetAmortizedRecurringCommitment sets the AmortizedRecurringCommitment field's value.
7652func (s *SavingsPlansAmortizedCommitment) SetAmortizedRecurringCommitment(v string) *SavingsPlansAmortizedCommitment {
7653	s.AmortizedRecurringCommitment = &v
7654	return s
7655}
7656
7657// SetAmortizedUpfrontCommitment sets the AmortizedUpfrontCommitment field's value.
7658func (s *SavingsPlansAmortizedCommitment) SetAmortizedUpfrontCommitment(v string) *SavingsPlansAmortizedCommitment {
7659	s.AmortizedUpfrontCommitment = &v
7660	return s
7661}
7662
7663// SetTotalAmortizedCommitment sets the TotalAmortizedCommitment field's value.
7664func (s *SavingsPlansAmortizedCommitment) SetTotalAmortizedCommitment(v string) *SavingsPlansAmortizedCommitment {
7665	s.TotalAmortizedCommitment = &v
7666	return s
7667}
7668
7669// The amount of Savings Plans eligible usage that is covered by Savings Plans.
7670// All calculations consider the On-Demand equivalent of your Savings Plans
7671// usage.
7672type SavingsPlansCoverage struct {
7673	_ struct{} `type:"structure"`
7674
7675	// The attribute that applies to a specific Dimension.
7676	Attributes map[string]*string `type:"map"`
7677
7678	// The amount of Savings Plans eligible usage that the Savings Plans covered.
7679	Coverage *SavingsPlansCoverageData `type:"structure"`
7680
7681	// The time period that you want the usage and costs for.
7682	TimePeriod *DateInterval `type:"structure"`
7683}
7684
7685// String returns the string representation
7686func (s SavingsPlansCoverage) String() string {
7687	return awsutil.Prettify(s)
7688}
7689
7690// GoString returns the string representation
7691func (s SavingsPlansCoverage) GoString() string {
7692	return s.String()
7693}
7694
7695// SetAttributes sets the Attributes field's value.
7696func (s *SavingsPlansCoverage) SetAttributes(v map[string]*string) *SavingsPlansCoverage {
7697	s.Attributes = v
7698	return s
7699}
7700
7701// SetCoverage sets the Coverage field's value.
7702func (s *SavingsPlansCoverage) SetCoverage(v *SavingsPlansCoverageData) *SavingsPlansCoverage {
7703	s.Coverage = v
7704	return s
7705}
7706
7707// SetTimePeriod sets the TimePeriod field's value.
7708func (s *SavingsPlansCoverage) SetTimePeriod(v *DateInterval) *SavingsPlansCoverage {
7709	s.TimePeriod = v
7710	return s
7711}
7712
7713// Specific coverage percentage, On-Demand costs, and spend covered by Savings
7714// Plans, and total Savings Plans costs for an account.
7715type SavingsPlansCoverageData struct {
7716	_ struct{} `type:"structure"`
7717
7718	// The percentage of your existing Savings Plans covered usage, divided by all
7719	// of your eligible Savings Plans usage in an account(or set of accounts).
7720	CoveragePercentage *string `type:"string"`
7721
7722	// The cost of your Amazon Web Services usage at the public On-Demand rate.
7723	OnDemandCost *string `type:"string"`
7724
7725	// The amount of your Amazon Web Services usage that is covered by a Savings
7726	// Plans.
7727	SpendCoveredBySavingsPlans *string `type:"string"`
7728
7729	// The total cost of your Amazon Web Services usage, regardless of your purchase
7730	// option.
7731	TotalCost *string `type:"string"`
7732}
7733
7734// String returns the string representation
7735func (s SavingsPlansCoverageData) String() string {
7736	return awsutil.Prettify(s)
7737}
7738
7739// GoString returns the string representation
7740func (s SavingsPlansCoverageData) GoString() string {
7741	return s.String()
7742}
7743
7744// SetCoveragePercentage sets the CoveragePercentage field's value.
7745func (s *SavingsPlansCoverageData) SetCoveragePercentage(v string) *SavingsPlansCoverageData {
7746	s.CoveragePercentage = &v
7747	return s
7748}
7749
7750// SetOnDemandCost sets the OnDemandCost field's value.
7751func (s *SavingsPlansCoverageData) SetOnDemandCost(v string) *SavingsPlansCoverageData {
7752	s.OnDemandCost = &v
7753	return s
7754}
7755
7756// SetSpendCoveredBySavingsPlans sets the SpendCoveredBySavingsPlans field's value.
7757func (s *SavingsPlansCoverageData) SetSpendCoveredBySavingsPlans(v string) *SavingsPlansCoverageData {
7758	s.SpendCoveredBySavingsPlans = &v
7759	return s
7760}
7761
7762// SetTotalCost sets the TotalCost field's value.
7763func (s *SavingsPlansCoverageData) SetTotalCost(v string) *SavingsPlansCoverageData {
7764	s.TotalCost = &v
7765	return s
7766}
7767
7768// Attribute details on a specific Savings Plan.
7769type SavingsPlansDetails struct {
7770	_ struct{} `type:"structure"`
7771
7772	// A group of instance types that Savings Plans applies to.
7773	InstanceFamily *string `type:"string"`
7774
7775	// The unique ID used to distinguish Savings Plans from one another.
7776	OfferingId *string `type:"string"`
7777
7778	// A collection of AWS resources in a geographic area. Each AWS Region is isolated
7779	// and independent of the other Regions.
7780	Region *string `type:"string"`
7781}
7782
7783// String returns the string representation
7784func (s SavingsPlansDetails) String() string {
7785	return awsutil.Prettify(s)
7786}
7787
7788// GoString returns the string representation
7789func (s SavingsPlansDetails) GoString() string {
7790	return s.String()
7791}
7792
7793// SetInstanceFamily sets the InstanceFamily field's value.
7794func (s *SavingsPlansDetails) SetInstanceFamily(v string) *SavingsPlansDetails {
7795	s.InstanceFamily = &v
7796	return s
7797}
7798
7799// SetOfferingId sets the OfferingId field's value.
7800func (s *SavingsPlansDetails) SetOfferingId(v string) *SavingsPlansDetails {
7801	s.OfferingId = &v
7802	return s
7803}
7804
7805// SetRegion sets the Region field's value.
7806func (s *SavingsPlansDetails) SetRegion(v string) *SavingsPlansDetails {
7807	s.Region = &v
7808	return s
7809}
7810
7811// Contains your request parameters, Savings Plan Recommendations Summary, and
7812// Details.
7813type SavingsPlansPurchaseRecommendation struct {
7814	_ struct{} `type:"structure"`
7815
7816	// The account scope that you want your recommendations for. Amazon Web Services
7817	// calculates recommendations including the payer account and linked accounts
7818	// if the value is set to PAYER. If the value is LINKED, recommendations are
7819	// calculated for individual linked accounts only.
7820	AccountScope *string `type:"string" enum:"AccountScope"`
7821
7822	// The lookback period in days, used to generate the recommendation.
7823	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
7824
7825	// The payment option used to generate the recommendation.
7826	PaymentOption *string `type:"string" enum:"PaymentOption"`
7827
7828	// Details for the Savings Plans we recommend that you purchase to cover existing
7829	// Savings Plans eligible workloads.
7830	SavingsPlansPurchaseRecommendationDetails []*SavingsPlansPurchaseRecommendationDetail `type:"list"`
7831
7832	// Summary metrics for your Savings Plans Recommendations.
7833	SavingsPlansPurchaseRecommendationSummary *SavingsPlansPurchaseRecommendationSummary `type:"structure"`
7834
7835	// The requested Savings Plans recommendation type.
7836	SavingsPlansType *string `type:"string" enum:"SupportedSavingsPlansType"`
7837
7838	// The Savings Plans recommendation term in years, used to generate the recommendation.
7839	TermInYears *string `type:"string" enum:"TermInYears"`
7840}
7841
7842// String returns the string representation
7843func (s SavingsPlansPurchaseRecommendation) String() string {
7844	return awsutil.Prettify(s)
7845}
7846
7847// GoString returns the string representation
7848func (s SavingsPlansPurchaseRecommendation) GoString() string {
7849	return s.String()
7850}
7851
7852// SetAccountScope sets the AccountScope field's value.
7853func (s *SavingsPlansPurchaseRecommendation) SetAccountScope(v string) *SavingsPlansPurchaseRecommendation {
7854	s.AccountScope = &v
7855	return s
7856}
7857
7858// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
7859func (s *SavingsPlansPurchaseRecommendation) SetLookbackPeriodInDays(v string) *SavingsPlansPurchaseRecommendation {
7860	s.LookbackPeriodInDays = &v
7861	return s
7862}
7863
7864// SetPaymentOption sets the PaymentOption field's value.
7865func (s *SavingsPlansPurchaseRecommendation) SetPaymentOption(v string) *SavingsPlansPurchaseRecommendation {
7866	s.PaymentOption = &v
7867	return s
7868}
7869
7870// SetSavingsPlansPurchaseRecommendationDetails sets the SavingsPlansPurchaseRecommendationDetails field's value.
7871func (s *SavingsPlansPurchaseRecommendation) SetSavingsPlansPurchaseRecommendationDetails(v []*SavingsPlansPurchaseRecommendationDetail) *SavingsPlansPurchaseRecommendation {
7872	s.SavingsPlansPurchaseRecommendationDetails = v
7873	return s
7874}
7875
7876// SetSavingsPlansPurchaseRecommendationSummary sets the SavingsPlansPurchaseRecommendationSummary field's value.
7877func (s *SavingsPlansPurchaseRecommendation) SetSavingsPlansPurchaseRecommendationSummary(v *SavingsPlansPurchaseRecommendationSummary) *SavingsPlansPurchaseRecommendation {
7878	s.SavingsPlansPurchaseRecommendationSummary = v
7879	return s
7880}
7881
7882// SetSavingsPlansType sets the SavingsPlansType field's value.
7883func (s *SavingsPlansPurchaseRecommendation) SetSavingsPlansType(v string) *SavingsPlansPurchaseRecommendation {
7884	s.SavingsPlansType = &v
7885	return s
7886}
7887
7888// SetTermInYears sets the TermInYears field's value.
7889func (s *SavingsPlansPurchaseRecommendation) SetTermInYears(v string) *SavingsPlansPurchaseRecommendation {
7890	s.TermInYears = &v
7891	return s
7892}
7893
7894// Details for your recommended Savings Plans.
7895type SavingsPlansPurchaseRecommendationDetail struct {
7896	_ struct{} `type:"structure"`
7897
7898	// The AccountID the recommendation is generated for.
7899	AccountId *string `type:"string"`
7900
7901	// The currency code Amazon Web Services used to generate the recommendations
7902	// and present potential savings.
7903	CurrencyCode *string `type:"string"`
7904
7905	// The average value of hourly On-Demand spend over the lookback period of the
7906	// applicable usage type.
7907	CurrentAverageHourlyOnDemandSpend *string `type:"string"`
7908
7909	// The highest value of hourly On-Demand spend over the lookback period of the
7910	// applicable usage type.
7911	CurrentMaximumHourlyOnDemandSpend *string `type:"string"`
7912
7913	// The lowest value of hourly On-Demand spend over the lookback period of the
7914	// applicable usage type.
7915	CurrentMinimumHourlyOnDemandSpend *string `type:"string"`
7916
7917	// The estimated utilization of the recommended Savings Plans.
7918	EstimatedAverageUtilization *string `type:"string"`
7919
7920	// The estimated monthly savings amount, based on the recommended Savings Plans.
7921	EstimatedMonthlySavingsAmount *string `type:"string"`
7922
7923	// The remaining On-Demand cost estimated to not be covered by the recommended
7924	// Savings Plans, over the length of the lookback period.
7925	EstimatedOnDemandCost *string `type:"string"`
7926
7927	// The estimated On-Demand costs you would expect with no additional commitment,
7928	// based on your usage of the selected time period and the Savings Plans you
7929	// own.
7930	EstimatedOnDemandCostWithCurrentCommitment *string `type:"string"`
7931
7932	// The estimated return on investment based on the recommended Savings Plans
7933	// purchased. This is calculated as estimatedSavingsAmount/ estimatedSPCost*100.
7934	EstimatedROI *string `type:"string"`
7935
7936	// The cost of the recommended Savings Plans over the length of the lookback
7937	// period.
7938	EstimatedSPCost *string `type:"string"`
7939
7940	// The estimated savings amount based on the recommended Savings Plans over
7941	// the length of the lookback period.
7942	EstimatedSavingsAmount *string `type:"string"`
7943
7944	// The estimated savings percentage relative to the total cost of applicable
7945	// On-Demand usage over the lookback period.
7946	EstimatedSavingsPercentage *string `type:"string"`
7947
7948	// The recommended hourly commitment level for the Savings Plans type, and configuration
7949	// based on the usage during the lookback period.
7950	HourlyCommitmentToPurchase *string `type:"string"`
7951
7952	// Details for your recommended Savings Plans.
7953	SavingsPlansDetails *SavingsPlansDetails `type:"structure"`
7954
7955	// The upfront cost of the recommended Savings Plans, based on the selected
7956	// payment option.
7957	UpfrontCost *string `type:"string"`
7958}
7959
7960// String returns the string representation
7961func (s SavingsPlansPurchaseRecommendationDetail) String() string {
7962	return awsutil.Prettify(s)
7963}
7964
7965// GoString returns the string representation
7966func (s SavingsPlansPurchaseRecommendationDetail) GoString() string {
7967	return s.String()
7968}
7969
7970// SetAccountId sets the AccountId field's value.
7971func (s *SavingsPlansPurchaseRecommendationDetail) SetAccountId(v string) *SavingsPlansPurchaseRecommendationDetail {
7972	s.AccountId = &v
7973	return s
7974}
7975
7976// SetCurrencyCode sets the CurrencyCode field's value.
7977func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrencyCode(v string) *SavingsPlansPurchaseRecommendationDetail {
7978	s.CurrencyCode = &v
7979	return s
7980}
7981
7982// SetCurrentAverageHourlyOnDemandSpend sets the CurrentAverageHourlyOnDemandSpend field's value.
7983func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrentAverageHourlyOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationDetail {
7984	s.CurrentAverageHourlyOnDemandSpend = &v
7985	return s
7986}
7987
7988// SetCurrentMaximumHourlyOnDemandSpend sets the CurrentMaximumHourlyOnDemandSpend field's value.
7989func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrentMaximumHourlyOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationDetail {
7990	s.CurrentMaximumHourlyOnDemandSpend = &v
7991	return s
7992}
7993
7994// SetCurrentMinimumHourlyOnDemandSpend sets the CurrentMinimumHourlyOnDemandSpend field's value.
7995func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrentMinimumHourlyOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationDetail {
7996	s.CurrentMinimumHourlyOnDemandSpend = &v
7997	return s
7998}
7999
8000// SetEstimatedAverageUtilization sets the EstimatedAverageUtilization field's value.
8001func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedAverageUtilization(v string) *SavingsPlansPurchaseRecommendationDetail {
8002	s.EstimatedAverageUtilization = &v
8003	return s
8004}
8005
8006// SetEstimatedMonthlySavingsAmount sets the EstimatedMonthlySavingsAmount field's value.
8007func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedMonthlySavingsAmount(v string) *SavingsPlansPurchaseRecommendationDetail {
8008	s.EstimatedMonthlySavingsAmount = &v
8009	return s
8010}
8011
8012// SetEstimatedOnDemandCost sets the EstimatedOnDemandCost field's value.
8013func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedOnDemandCost(v string) *SavingsPlansPurchaseRecommendationDetail {
8014	s.EstimatedOnDemandCost = &v
8015	return s
8016}
8017
8018// SetEstimatedOnDemandCostWithCurrentCommitment sets the EstimatedOnDemandCostWithCurrentCommitment field's value.
8019func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedOnDemandCostWithCurrentCommitment(v string) *SavingsPlansPurchaseRecommendationDetail {
8020	s.EstimatedOnDemandCostWithCurrentCommitment = &v
8021	return s
8022}
8023
8024// SetEstimatedROI sets the EstimatedROI field's value.
8025func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedROI(v string) *SavingsPlansPurchaseRecommendationDetail {
8026	s.EstimatedROI = &v
8027	return s
8028}
8029
8030// SetEstimatedSPCost sets the EstimatedSPCost field's value.
8031func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedSPCost(v string) *SavingsPlansPurchaseRecommendationDetail {
8032	s.EstimatedSPCost = &v
8033	return s
8034}
8035
8036// SetEstimatedSavingsAmount sets the EstimatedSavingsAmount field's value.
8037func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedSavingsAmount(v string) *SavingsPlansPurchaseRecommendationDetail {
8038	s.EstimatedSavingsAmount = &v
8039	return s
8040}
8041
8042// SetEstimatedSavingsPercentage sets the EstimatedSavingsPercentage field's value.
8043func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedSavingsPercentage(v string) *SavingsPlansPurchaseRecommendationDetail {
8044	s.EstimatedSavingsPercentage = &v
8045	return s
8046}
8047
8048// SetHourlyCommitmentToPurchase sets the HourlyCommitmentToPurchase field's value.
8049func (s *SavingsPlansPurchaseRecommendationDetail) SetHourlyCommitmentToPurchase(v string) *SavingsPlansPurchaseRecommendationDetail {
8050	s.HourlyCommitmentToPurchase = &v
8051	return s
8052}
8053
8054// SetSavingsPlansDetails sets the SavingsPlansDetails field's value.
8055func (s *SavingsPlansPurchaseRecommendationDetail) SetSavingsPlansDetails(v *SavingsPlansDetails) *SavingsPlansPurchaseRecommendationDetail {
8056	s.SavingsPlansDetails = v
8057	return s
8058}
8059
8060// SetUpfrontCost sets the UpfrontCost field's value.
8061func (s *SavingsPlansPurchaseRecommendationDetail) SetUpfrontCost(v string) *SavingsPlansPurchaseRecommendationDetail {
8062	s.UpfrontCost = &v
8063	return s
8064}
8065
8066// Metadata about your Savings Plans Purchase Recommendations.
8067type SavingsPlansPurchaseRecommendationMetadata struct {
8068	_ struct{} `type:"structure"`
8069
8070	// The timestamp showing when the recommendations were generated.
8071	GenerationTimestamp *string `type:"string"`
8072
8073	// The unique identifier for the recommendation set.
8074	RecommendationId *string `type:"string"`
8075}
8076
8077// String returns the string representation
8078func (s SavingsPlansPurchaseRecommendationMetadata) String() string {
8079	return awsutil.Prettify(s)
8080}
8081
8082// GoString returns the string representation
8083func (s SavingsPlansPurchaseRecommendationMetadata) GoString() string {
8084	return s.String()
8085}
8086
8087// SetGenerationTimestamp sets the GenerationTimestamp field's value.
8088func (s *SavingsPlansPurchaseRecommendationMetadata) SetGenerationTimestamp(v string) *SavingsPlansPurchaseRecommendationMetadata {
8089	s.GenerationTimestamp = &v
8090	return s
8091}
8092
8093// SetRecommendationId sets the RecommendationId field's value.
8094func (s *SavingsPlansPurchaseRecommendationMetadata) SetRecommendationId(v string) *SavingsPlansPurchaseRecommendationMetadata {
8095	s.RecommendationId = &v
8096	return s
8097}
8098
8099// Summary metrics for your Savings Plans Purchase Recommendations.
8100type SavingsPlansPurchaseRecommendationSummary struct {
8101	_ struct{} `type:"structure"`
8102
8103	// The currency code Amazon Web Services used to generate the recommendations
8104	// and present potential savings.
8105	CurrencyCode *string `type:"string"`
8106
8107	// The current total on demand spend of the applicable usage types over the
8108	// lookback period.
8109	CurrentOnDemandSpend *string `type:"string"`
8110
8111	// The recommended Savings Plans cost on a daily (24 hourly) basis.
8112	DailyCommitmentToPurchase *string `type:"string"`
8113
8114	// The estimated monthly savings amount, based on the recommended Savings Plans
8115	// purchase.
8116	EstimatedMonthlySavingsAmount *string `type:"string"`
8117
8118	// The estimated On-Demand costs you would expect with no additional commitment,
8119	// based on your usage of the selected time period and the Savings Plans you
8120	// own.
8121	EstimatedOnDemandCostWithCurrentCommitment *string `type:"string"`
8122
8123	// The estimated return on investment based on the recommended Savings Plans
8124	// and estimated savings.
8125	EstimatedROI *string `type:"string"`
8126
8127	// The estimated total savings over the lookback period, based on the purchase
8128	// of the recommended Savings Plans.
8129	EstimatedSavingsAmount *string `type:"string"`
8130
8131	// The estimated savings relative to the total cost of On-Demand usage, over
8132	// the lookback period. This is calculated as estimatedSavingsAmount/ CurrentOnDemandSpend*100.
8133	EstimatedSavingsPercentage *string `type:"string"`
8134
8135	// The estimated total cost of the usage after purchasing the recommended Savings
8136	// Plans. This is a sum of the cost of Savings Plans during this term, and the
8137	// remaining On-Demand usage.
8138	EstimatedTotalCost *string `type:"string"`
8139
8140	// The recommended hourly commitment based on the recommendation parameters.
8141	HourlyCommitmentToPurchase *string `type:"string"`
8142
8143	// The aggregate number of Savings Plans recommendations that exist for your
8144	// account.
8145	TotalRecommendationCount *string `type:"string"`
8146}
8147
8148// String returns the string representation
8149func (s SavingsPlansPurchaseRecommendationSummary) String() string {
8150	return awsutil.Prettify(s)
8151}
8152
8153// GoString returns the string representation
8154func (s SavingsPlansPurchaseRecommendationSummary) GoString() string {
8155	return s.String()
8156}
8157
8158// SetCurrencyCode sets the CurrencyCode field's value.
8159func (s *SavingsPlansPurchaseRecommendationSummary) SetCurrencyCode(v string) *SavingsPlansPurchaseRecommendationSummary {
8160	s.CurrencyCode = &v
8161	return s
8162}
8163
8164// SetCurrentOnDemandSpend sets the CurrentOnDemandSpend field's value.
8165func (s *SavingsPlansPurchaseRecommendationSummary) SetCurrentOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationSummary {
8166	s.CurrentOnDemandSpend = &v
8167	return s
8168}
8169
8170// SetDailyCommitmentToPurchase sets the DailyCommitmentToPurchase field's value.
8171func (s *SavingsPlansPurchaseRecommendationSummary) SetDailyCommitmentToPurchase(v string) *SavingsPlansPurchaseRecommendationSummary {
8172	s.DailyCommitmentToPurchase = &v
8173	return s
8174}
8175
8176// SetEstimatedMonthlySavingsAmount sets the EstimatedMonthlySavingsAmount field's value.
8177func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedMonthlySavingsAmount(v string) *SavingsPlansPurchaseRecommendationSummary {
8178	s.EstimatedMonthlySavingsAmount = &v
8179	return s
8180}
8181
8182// SetEstimatedOnDemandCostWithCurrentCommitment sets the EstimatedOnDemandCostWithCurrentCommitment field's value.
8183func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedOnDemandCostWithCurrentCommitment(v string) *SavingsPlansPurchaseRecommendationSummary {
8184	s.EstimatedOnDemandCostWithCurrentCommitment = &v
8185	return s
8186}
8187
8188// SetEstimatedROI sets the EstimatedROI field's value.
8189func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedROI(v string) *SavingsPlansPurchaseRecommendationSummary {
8190	s.EstimatedROI = &v
8191	return s
8192}
8193
8194// SetEstimatedSavingsAmount sets the EstimatedSavingsAmount field's value.
8195func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedSavingsAmount(v string) *SavingsPlansPurchaseRecommendationSummary {
8196	s.EstimatedSavingsAmount = &v
8197	return s
8198}
8199
8200// SetEstimatedSavingsPercentage sets the EstimatedSavingsPercentage field's value.
8201func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedSavingsPercentage(v string) *SavingsPlansPurchaseRecommendationSummary {
8202	s.EstimatedSavingsPercentage = &v
8203	return s
8204}
8205
8206// SetEstimatedTotalCost sets the EstimatedTotalCost field's value.
8207func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedTotalCost(v string) *SavingsPlansPurchaseRecommendationSummary {
8208	s.EstimatedTotalCost = &v
8209	return s
8210}
8211
8212// SetHourlyCommitmentToPurchase sets the HourlyCommitmentToPurchase field's value.
8213func (s *SavingsPlansPurchaseRecommendationSummary) SetHourlyCommitmentToPurchase(v string) *SavingsPlansPurchaseRecommendationSummary {
8214	s.HourlyCommitmentToPurchase = &v
8215	return s
8216}
8217
8218// SetTotalRecommendationCount sets the TotalRecommendationCount field's value.
8219func (s *SavingsPlansPurchaseRecommendationSummary) SetTotalRecommendationCount(v string) *SavingsPlansPurchaseRecommendationSummary {
8220	s.TotalRecommendationCount = &v
8221	return s
8222}
8223
8224// The amount of savings you're accumulating, against the public On-Demand rate
8225// of the usage accrued in an account.
8226type SavingsPlansSavings struct {
8227	_ struct{} `type:"structure"`
8228
8229	// The savings amount that you are accumulating for the usage that is covered
8230	// by a Savings Plans, when compared to the On-Demand equivalent of the same
8231	// usage.
8232	NetSavings *string `type:"string"`
8233
8234	// How much the amount that the usage would have cost if it was accrued at the
8235	// On-Demand rate.
8236	OnDemandCostEquivalent *string `type:"string"`
8237}
8238
8239// String returns the string representation
8240func (s SavingsPlansSavings) String() string {
8241	return awsutil.Prettify(s)
8242}
8243
8244// GoString returns the string representation
8245func (s SavingsPlansSavings) GoString() string {
8246	return s.String()
8247}
8248
8249// SetNetSavings sets the NetSavings field's value.
8250func (s *SavingsPlansSavings) SetNetSavings(v string) *SavingsPlansSavings {
8251	s.NetSavings = &v
8252	return s
8253}
8254
8255// SetOnDemandCostEquivalent sets the OnDemandCostEquivalent field's value.
8256func (s *SavingsPlansSavings) SetOnDemandCostEquivalent(v string) *SavingsPlansSavings {
8257	s.OnDemandCostEquivalent = &v
8258	return s
8259}
8260
8261// The measurement of how well you are using your existing Savings Plans.
8262type SavingsPlansUtilization struct {
8263	_ struct{} `type:"structure"`
8264
8265	// The total amount of Savings Plans commitment that's been purchased in an
8266	// account (or set of accounts).
8267	TotalCommitment *string `type:"string"`
8268
8269	// The amount of your Savings Plans commitment that was not consumed from Savings
8270	// Plans eligible usage in a specific period.
8271	UnusedCommitment *string `type:"string"`
8272
8273	// The amount of your Savings Plans commitment that was consumed from Savings
8274	// Plans eligible usage in a specific period.
8275	UsedCommitment *string `type:"string"`
8276
8277	// The amount of UsedCommitment divided by the TotalCommitment for your Savings
8278	// Plans.
8279	UtilizationPercentage *string `type:"string"`
8280}
8281
8282// String returns the string representation
8283func (s SavingsPlansUtilization) String() string {
8284	return awsutil.Prettify(s)
8285}
8286
8287// GoString returns the string representation
8288func (s SavingsPlansUtilization) GoString() string {
8289	return s.String()
8290}
8291
8292// SetTotalCommitment sets the TotalCommitment field's value.
8293func (s *SavingsPlansUtilization) SetTotalCommitment(v string) *SavingsPlansUtilization {
8294	s.TotalCommitment = &v
8295	return s
8296}
8297
8298// SetUnusedCommitment sets the UnusedCommitment field's value.
8299func (s *SavingsPlansUtilization) SetUnusedCommitment(v string) *SavingsPlansUtilization {
8300	s.UnusedCommitment = &v
8301	return s
8302}
8303
8304// SetUsedCommitment sets the UsedCommitment field's value.
8305func (s *SavingsPlansUtilization) SetUsedCommitment(v string) *SavingsPlansUtilization {
8306	s.UsedCommitment = &v
8307	return s
8308}
8309
8310// SetUtilizationPercentage sets the UtilizationPercentage field's value.
8311func (s *SavingsPlansUtilization) SetUtilizationPercentage(v string) *SavingsPlansUtilization {
8312	s.UtilizationPercentage = &v
8313	return s
8314}
8315
8316// The aggregated utilization metrics for your Savings Plans usage.
8317type SavingsPlansUtilizationAggregates struct {
8318	_ struct{} `type:"structure"`
8319
8320	// The total amortized commitment for a Savings Plans. This includes the sum
8321	// of the upfront and recurring Savings Plans fees.
8322	AmortizedCommitment *SavingsPlansAmortizedCommitment `type:"structure"`
8323
8324	// The amount saved by using existing Savings Plans. Savings returns both net
8325	// savings from Savings Plans, as well as the onDemandCostEquivalent of the
8326	// Savings Plans when considering the utilization rate.
8327	Savings *SavingsPlansSavings `type:"structure"`
8328
8329	// A ratio of your effectiveness of using existing Savings Plans to apply to
8330	// workloads that are Savings Plans eligible.
8331	//
8332	// Utilization is a required field
8333	Utilization *SavingsPlansUtilization `type:"structure" required:"true"`
8334}
8335
8336// String returns the string representation
8337func (s SavingsPlansUtilizationAggregates) String() string {
8338	return awsutil.Prettify(s)
8339}
8340
8341// GoString returns the string representation
8342func (s SavingsPlansUtilizationAggregates) GoString() string {
8343	return s.String()
8344}
8345
8346// SetAmortizedCommitment sets the AmortizedCommitment field's value.
8347func (s *SavingsPlansUtilizationAggregates) SetAmortizedCommitment(v *SavingsPlansAmortizedCommitment) *SavingsPlansUtilizationAggregates {
8348	s.AmortizedCommitment = v
8349	return s
8350}
8351
8352// SetSavings sets the Savings field's value.
8353func (s *SavingsPlansUtilizationAggregates) SetSavings(v *SavingsPlansSavings) *SavingsPlansUtilizationAggregates {
8354	s.Savings = v
8355	return s
8356}
8357
8358// SetUtilization sets the Utilization field's value.
8359func (s *SavingsPlansUtilizationAggregates) SetUtilization(v *SavingsPlansUtilization) *SavingsPlansUtilizationAggregates {
8360	s.Utilization = v
8361	return s
8362}
8363
8364// The amount of Savings Plans utilization, in hours.
8365type SavingsPlansUtilizationByTime struct {
8366	_ struct{} `type:"structure"`
8367
8368	// The total amortized commitment for a Savings Plans. This includes the sum
8369	// of the upfront and recurring Savings Plans fees.
8370	AmortizedCommitment *SavingsPlansAmortizedCommitment `type:"structure"`
8371
8372	// The amount saved by using existing Savings Plans. Savings returns both net
8373	// savings from Savings Plans as well as the onDemandCostEquivalent of the Savings
8374	// Plans when considering the utilization rate.
8375	Savings *SavingsPlansSavings `type:"structure"`
8376
8377	// The time period that you want the usage and costs for.
8378	//
8379	// TimePeriod is a required field
8380	TimePeriod *DateInterval `type:"structure" required:"true"`
8381
8382	// A ratio of your effectiveness of using existing Savings Plans to apply to
8383	// workloads that are Savings Plans eligible.
8384	//
8385	// Utilization is a required field
8386	Utilization *SavingsPlansUtilization `type:"structure" required:"true"`
8387}
8388
8389// String returns the string representation
8390func (s SavingsPlansUtilizationByTime) String() string {
8391	return awsutil.Prettify(s)
8392}
8393
8394// GoString returns the string representation
8395func (s SavingsPlansUtilizationByTime) GoString() string {
8396	return s.String()
8397}
8398
8399// SetAmortizedCommitment sets the AmortizedCommitment field's value.
8400func (s *SavingsPlansUtilizationByTime) SetAmortizedCommitment(v *SavingsPlansAmortizedCommitment) *SavingsPlansUtilizationByTime {
8401	s.AmortizedCommitment = v
8402	return s
8403}
8404
8405// SetSavings sets the Savings field's value.
8406func (s *SavingsPlansUtilizationByTime) SetSavings(v *SavingsPlansSavings) *SavingsPlansUtilizationByTime {
8407	s.Savings = v
8408	return s
8409}
8410
8411// SetTimePeriod sets the TimePeriod field's value.
8412func (s *SavingsPlansUtilizationByTime) SetTimePeriod(v *DateInterval) *SavingsPlansUtilizationByTime {
8413	s.TimePeriod = v
8414	return s
8415}
8416
8417// SetUtilization sets the Utilization field's value.
8418func (s *SavingsPlansUtilizationByTime) SetUtilization(v *SavingsPlansUtilization) *SavingsPlansUtilizationByTime {
8419	s.Utilization = v
8420	return s
8421}
8422
8423// A single daily or monthly Savings Plans utilization rate, and details for
8424// your account. Master accounts in an organization have access to member accounts.
8425// You can use GetDimensionValues to determine the possible dimension values.
8426type SavingsPlansUtilizationDetail struct {
8427	_ struct{} `type:"structure"`
8428
8429	// The total amortized commitment for a Savings Plans. Includes the sum of the
8430	// upfront and recurring Savings Plans fees.
8431	AmortizedCommitment *SavingsPlansAmortizedCommitment `type:"structure"`
8432
8433	// The attribute that applies to a specific Dimension.
8434	Attributes map[string]*string `type:"map"`
8435
8436	// The amount saved by using existing Savings Plans. Savings returns both net
8437	// savings from savings plans as well as the onDemandCostEquivalent of the Savings
8438	// Plans when considering the utilization rate.
8439	Savings *SavingsPlansSavings `type:"structure"`
8440
8441	// The unique Amazon Resource Name (ARN) for a particular Savings Plan.
8442	SavingsPlanArn *string `type:"string"`
8443
8444	// A ratio of your effectiveness of using existing Savings Plans to apply to
8445	// workloads that are Savings Plans eligible.
8446	Utilization *SavingsPlansUtilization `type:"structure"`
8447}
8448
8449// String returns the string representation
8450func (s SavingsPlansUtilizationDetail) String() string {
8451	return awsutil.Prettify(s)
8452}
8453
8454// GoString returns the string representation
8455func (s SavingsPlansUtilizationDetail) GoString() string {
8456	return s.String()
8457}
8458
8459// SetAmortizedCommitment sets the AmortizedCommitment field's value.
8460func (s *SavingsPlansUtilizationDetail) SetAmortizedCommitment(v *SavingsPlansAmortizedCommitment) *SavingsPlansUtilizationDetail {
8461	s.AmortizedCommitment = v
8462	return s
8463}
8464
8465// SetAttributes sets the Attributes field's value.
8466func (s *SavingsPlansUtilizationDetail) SetAttributes(v map[string]*string) *SavingsPlansUtilizationDetail {
8467	s.Attributes = v
8468	return s
8469}
8470
8471// SetSavings sets the Savings field's value.
8472func (s *SavingsPlansUtilizationDetail) SetSavings(v *SavingsPlansSavings) *SavingsPlansUtilizationDetail {
8473	s.Savings = v
8474	return s
8475}
8476
8477// SetSavingsPlanArn sets the SavingsPlanArn field's value.
8478func (s *SavingsPlansUtilizationDetail) SetSavingsPlanArn(v string) *SavingsPlansUtilizationDetail {
8479	s.SavingsPlanArn = &v
8480	return s
8481}
8482
8483// SetUtilization sets the Utilization field's value.
8484func (s *SavingsPlansUtilizationDetail) SetUtilization(v *SavingsPlansUtilization) *SavingsPlansUtilizationDetail {
8485	s.Utilization = v
8486	return s
8487}
8488
8489// You've reached the limit on the number of resources you can create, or exceeded
8490// the size of an individual resources.
8491type ServiceQuotaExceededException struct {
8492	_            struct{}                  `type:"structure"`
8493	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
8494
8495	Message_ *string `locationName:"Message" type:"string"`
8496}
8497
8498// String returns the string representation
8499func (s ServiceQuotaExceededException) String() string {
8500	return awsutil.Prettify(s)
8501}
8502
8503// GoString returns the string representation
8504func (s ServiceQuotaExceededException) GoString() string {
8505	return s.String()
8506}
8507
8508func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
8509	return &ServiceQuotaExceededException{
8510		RespMetadata: v,
8511	}
8512}
8513
8514// Code returns the exception type name.
8515func (s *ServiceQuotaExceededException) Code() string {
8516	return "ServiceQuotaExceededException"
8517}
8518
8519// Message returns the exception's message.
8520func (s *ServiceQuotaExceededException) Message() string {
8521	if s.Message_ != nil {
8522		return *s.Message_
8523	}
8524	return ""
8525}
8526
8527// OrigErr always returns nil, satisfies awserr.Error interface.
8528func (s *ServiceQuotaExceededException) OrigErr() error {
8529	return nil
8530}
8531
8532func (s *ServiceQuotaExceededException) Error() string {
8533	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
8534}
8535
8536// Status code returns the HTTP status code for the request's response error.
8537func (s *ServiceQuotaExceededException) StatusCode() int {
8538	return s.RespMetadata.StatusCode
8539}
8540
8541// RequestID returns the service's response RequestID for request.
8542func (s *ServiceQuotaExceededException) RequestID() string {
8543	return s.RespMetadata.RequestID
8544}
8545
8546// Hardware specifications for the service that you want recommendations for.
8547type ServiceSpecification struct {
8548	_ struct{} `type:"structure"`
8549
8550	// The Amazon EC2 hardware specifications that you want AWS to provide recommendations
8551	// for.
8552	EC2Specification *EC2Specification `type:"structure"`
8553}
8554
8555// String returns the string representation
8556func (s ServiceSpecification) String() string {
8557	return awsutil.Prettify(s)
8558}
8559
8560// GoString returns the string representation
8561func (s ServiceSpecification) GoString() string {
8562	return s.String()
8563}
8564
8565// SetEC2Specification sets the EC2Specification field's value.
8566func (s *ServiceSpecification) SetEC2Specification(v *EC2Specification) *ServiceSpecification {
8567	s.EC2Specification = v
8568	return s
8569}
8570
8571// The values that are available for a tag.
8572type TagValues struct {
8573	_ struct{} `type:"structure"`
8574
8575	// The key for the tag.
8576	Key *string `type:"string"`
8577
8578	// The match options that you can use to filter your results. MatchOptions is
8579	// only applicable for only applicable for actions related to Cost Category.
8580	// The default values for MatchOptions is EQUALS and CASE_SENSITIVE.
8581	MatchOptions []*string `type:"list"`
8582
8583	// The specific value of the tag.
8584	Values []*string `type:"list"`
8585}
8586
8587// String returns the string representation
8588func (s TagValues) String() string {
8589	return awsutil.Prettify(s)
8590}
8591
8592// GoString returns the string representation
8593func (s TagValues) GoString() string {
8594	return s.String()
8595}
8596
8597// SetKey sets the Key field's value.
8598func (s *TagValues) SetKey(v string) *TagValues {
8599	s.Key = &v
8600	return s
8601}
8602
8603// SetMatchOptions sets the MatchOptions field's value.
8604func (s *TagValues) SetMatchOptions(v []*string) *TagValues {
8605	s.MatchOptions = v
8606	return s
8607}
8608
8609// SetValues sets the Values field's value.
8610func (s *TagValues) SetValues(v []*string) *TagValues {
8611	s.Values = v
8612	return s
8613}
8614
8615// Details on recommended instance.
8616type TargetInstance struct {
8617	_ struct{} `type:"structure"`
8618
8619	// The currency code that Amazon Web Services used to calculate the costs for
8620	// this instance.
8621	CurrencyCode *string `type:"string"`
8622
8623	// Indicates whether or not this recommendation is the defaulted Amazon Web
8624	// Services recommendation.
8625	DefaultTargetInstance *bool `type:"boolean"`
8626
8627	// Expected cost to operate this instance type on a monthly basis.
8628	EstimatedMonthlyCost *string `type:"string"`
8629
8630	// Estimated savings resulting from modification, on a monthly basis.
8631	EstimatedMonthlySavings *string `type:"string"`
8632
8633	// Expected utilization metrics for target instance type.
8634	ExpectedResourceUtilization *ResourceUtilization `type:"structure"`
8635
8636	// Details on the target instance type.
8637	ResourceDetails *ResourceDetails `type:"structure"`
8638}
8639
8640// String returns the string representation
8641func (s TargetInstance) String() string {
8642	return awsutil.Prettify(s)
8643}
8644
8645// GoString returns the string representation
8646func (s TargetInstance) GoString() string {
8647	return s.String()
8648}
8649
8650// SetCurrencyCode sets the CurrencyCode field's value.
8651func (s *TargetInstance) SetCurrencyCode(v string) *TargetInstance {
8652	s.CurrencyCode = &v
8653	return s
8654}
8655
8656// SetDefaultTargetInstance sets the DefaultTargetInstance field's value.
8657func (s *TargetInstance) SetDefaultTargetInstance(v bool) *TargetInstance {
8658	s.DefaultTargetInstance = &v
8659	return s
8660}
8661
8662// SetEstimatedMonthlyCost sets the EstimatedMonthlyCost field's value.
8663func (s *TargetInstance) SetEstimatedMonthlyCost(v string) *TargetInstance {
8664	s.EstimatedMonthlyCost = &v
8665	return s
8666}
8667
8668// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
8669func (s *TargetInstance) SetEstimatedMonthlySavings(v string) *TargetInstance {
8670	s.EstimatedMonthlySavings = &v
8671	return s
8672}
8673
8674// SetExpectedResourceUtilization sets the ExpectedResourceUtilization field's value.
8675func (s *TargetInstance) SetExpectedResourceUtilization(v *ResourceUtilization) *TargetInstance {
8676	s.ExpectedResourceUtilization = v
8677	return s
8678}
8679
8680// SetResourceDetails sets the ResourceDetails field's value.
8681func (s *TargetInstance) SetResourceDetails(v *ResourceDetails) *TargetInstance {
8682	s.ResourceDetails = v
8683	return s
8684}
8685
8686// Details on termination recommendation.
8687type TerminateRecommendationDetail struct {
8688	_ struct{} `type:"structure"`
8689
8690	// The currency code that Amazon Web Services used to calculate the costs for
8691	// this instance.
8692	CurrencyCode *string `type:"string"`
8693
8694	// Estimated savings resulting from modification, on a monthly basis.
8695	EstimatedMonthlySavings *string `type:"string"`
8696}
8697
8698// String returns the string representation
8699func (s TerminateRecommendationDetail) String() string {
8700	return awsutil.Prettify(s)
8701}
8702
8703// GoString returns the string representation
8704func (s TerminateRecommendationDetail) GoString() string {
8705	return s.String()
8706}
8707
8708// SetCurrencyCode sets the CurrencyCode field's value.
8709func (s *TerminateRecommendationDetail) SetCurrencyCode(v string) *TerminateRecommendationDetail {
8710	s.CurrencyCode = &v
8711	return s
8712}
8713
8714// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
8715func (s *TerminateRecommendationDetail) SetEstimatedMonthlySavings(v string) *TerminateRecommendationDetail {
8716	s.EstimatedMonthlySavings = &v
8717	return s
8718}
8719
8720// Cost Explorer was unable to identify the usage unit. Provide UsageType/UsageTypeGroup
8721// filter selections that contain matching units, for example: hours.
8722type UnresolvableUsageUnitException struct {
8723	_            struct{}                  `type:"structure"`
8724	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
8725
8726	Message_ *string `locationName:"Message" type:"string"`
8727}
8728
8729// String returns the string representation
8730func (s UnresolvableUsageUnitException) String() string {
8731	return awsutil.Prettify(s)
8732}
8733
8734// GoString returns the string representation
8735func (s UnresolvableUsageUnitException) GoString() string {
8736	return s.String()
8737}
8738
8739func newErrorUnresolvableUsageUnitException(v protocol.ResponseMetadata) error {
8740	return &UnresolvableUsageUnitException{
8741		RespMetadata: v,
8742	}
8743}
8744
8745// Code returns the exception type name.
8746func (s *UnresolvableUsageUnitException) Code() string {
8747	return "UnresolvableUsageUnitException"
8748}
8749
8750// Message returns the exception's message.
8751func (s *UnresolvableUsageUnitException) Message() string {
8752	if s.Message_ != nil {
8753		return *s.Message_
8754	}
8755	return ""
8756}
8757
8758// OrigErr always returns nil, satisfies awserr.Error interface.
8759func (s *UnresolvableUsageUnitException) OrigErr() error {
8760	return nil
8761}
8762
8763func (s *UnresolvableUsageUnitException) Error() string {
8764	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
8765}
8766
8767// Status code returns the HTTP status code for the request's response error.
8768func (s *UnresolvableUsageUnitException) StatusCode() int {
8769	return s.RespMetadata.StatusCode
8770}
8771
8772// RequestID returns the service's response RequestID for request.
8773func (s *UnresolvableUsageUnitException) RequestID() string {
8774	return s.RespMetadata.RequestID
8775}
8776
8777type UpdateCostCategoryDefinitionInput struct {
8778	_ struct{} `type:"structure"`
8779
8780	// The unique identifier for your Cost Category.
8781	//
8782	// CostCategoryArn is a required field
8783	CostCategoryArn *string `min:"20" type:"string" required:"true"`
8784
8785	// The rule schema version in this particular Cost Category.
8786	//
8787	// RuleVersion is a required field
8788	RuleVersion *string `type:"string" required:"true" enum:"CostCategoryRuleVersion"`
8789
8790	// The Expression object used to categorize costs. For more information, see
8791	// CostCategoryRule (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_CostCategoryRule.html).
8792	//
8793	// Rules is a required field
8794	Rules []*CostCategoryRule `min:"1" type:"list" required:"true"`
8795}
8796
8797// String returns the string representation
8798func (s UpdateCostCategoryDefinitionInput) String() string {
8799	return awsutil.Prettify(s)
8800}
8801
8802// GoString returns the string representation
8803func (s UpdateCostCategoryDefinitionInput) GoString() string {
8804	return s.String()
8805}
8806
8807// Validate inspects the fields of the type to determine if they are valid.
8808func (s *UpdateCostCategoryDefinitionInput) Validate() error {
8809	invalidParams := request.ErrInvalidParams{Context: "UpdateCostCategoryDefinitionInput"}
8810	if s.CostCategoryArn == nil {
8811		invalidParams.Add(request.NewErrParamRequired("CostCategoryArn"))
8812	}
8813	if s.CostCategoryArn != nil && len(*s.CostCategoryArn) < 20 {
8814		invalidParams.Add(request.NewErrParamMinLen("CostCategoryArn", 20))
8815	}
8816	if s.RuleVersion == nil {
8817		invalidParams.Add(request.NewErrParamRequired("RuleVersion"))
8818	}
8819	if s.Rules == nil {
8820		invalidParams.Add(request.NewErrParamRequired("Rules"))
8821	}
8822	if s.Rules != nil && len(s.Rules) < 1 {
8823		invalidParams.Add(request.NewErrParamMinLen("Rules", 1))
8824	}
8825	if s.Rules != nil {
8826		for i, v := range s.Rules {
8827			if v == nil {
8828				continue
8829			}
8830			if err := v.Validate(); err != nil {
8831				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
8832			}
8833		}
8834	}
8835
8836	if invalidParams.Len() > 0 {
8837		return invalidParams
8838	}
8839	return nil
8840}
8841
8842// SetCostCategoryArn sets the CostCategoryArn field's value.
8843func (s *UpdateCostCategoryDefinitionInput) SetCostCategoryArn(v string) *UpdateCostCategoryDefinitionInput {
8844	s.CostCategoryArn = &v
8845	return s
8846}
8847
8848// SetRuleVersion sets the RuleVersion field's value.
8849func (s *UpdateCostCategoryDefinitionInput) SetRuleVersion(v string) *UpdateCostCategoryDefinitionInput {
8850	s.RuleVersion = &v
8851	return s
8852}
8853
8854// SetRules sets the Rules field's value.
8855func (s *UpdateCostCategoryDefinitionInput) SetRules(v []*CostCategoryRule) *UpdateCostCategoryDefinitionInput {
8856	s.Rules = v
8857	return s
8858}
8859
8860type UpdateCostCategoryDefinitionOutput struct {
8861	_ struct{} `type:"structure"`
8862
8863	// The unique identifier for your Cost Category.
8864	CostCategoryArn *string `min:"20" type:"string"`
8865
8866	// The Cost Category's effective start date.
8867	EffectiveStart *string `min:"20" type:"string"`
8868}
8869
8870// String returns the string representation
8871func (s UpdateCostCategoryDefinitionOutput) String() string {
8872	return awsutil.Prettify(s)
8873}
8874
8875// GoString returns the string representation
8876func (s UpdateCostCategoryDefinitionOutput) GoString() string {
8877	return s.String()
8878}
8879
8880// SetCostCategoryArn sets the CostCategoryArn field's value.
8881func (s *UpdateCostCategoryDefinitionOutput) SetCostCategoryArn(v string) *UpdateCostCategoryDefinitionOutput {
8882	s.CostCategoryArn = &v
8883	return s
8884}
8885
8886// SetEffectiveStart sets the EffectiveStart field's value.
8887func (s *UpdateCostCategoryDefinitionOutput) SetEffectiveStart(v string) *UpdateCostCategoryDefinitionOutput {
8888	s.EffectiveStart = &v
8889	return s
8890}
8891
8892// The amount of utilization, in hours.
8893type UtilizationByTime struct {
8894	_ struct{} `type:"structure"`
8895
8896	// The groups that this utilization result uses.
8897	Groups []*ReservationUtilizationGroup `type:"list"`
8898
8899	// The period of time that this utilization was used for.
8900	TimePeriod *DateInterval `type:"structure"`
8901
8902	// The total number of reservation hours that were used.
8903	Total *ReservationAggregates `type:"structure"`
8904}
8905
8906// String returns the string representation
8907func (s UtilizationByTime) String() string {
8908	return awsutil.Prettify(s)
8909}
8910
8911// GoString returns the string representation
8912func (s UtilizationByTime) GoString() string {
8913	return s.String()
8914}
8915
8916// SetGroups sets the Groups field's value.
8917func (s *UtilizationByTime) SetGroups(v []*ReservationUtilizationGroup) *UtilizationByTime {
8918	s.Groups = v
8919	return s
8920}
8921
8922// SetTimePeriod sets the TimePeriod field's value.
8923func (s *UtilizationByTime) SetTimePeriod(v *DateInterval) *UtilizationByTime {
8924	s.TimePeriod = v
8925	return s
8926}
8927
8928// SetTotal sets the Total field's value.
8929func (s *UtilizationByTime) SetTotal(v *ReservationAggregates) *UtilizationByTime {
8930	s.Total = v
8931	return s
8932}
8933
8934const (
8935	// AccountScopePayer is a AccountScope enum value
8936	AccountScopePayer = "PAYER"
8937
8938	// AccountScopeLinked is a AccountScope enum value
8939	AccountScopeLinked = "LINKED"
8940)
8941
8942const (
8943	// ContextCostAndUsage is a Context enum value
8944	ContextCostAndUsage = "COST_AND_USAGE"
8945
8946	// ContextReservations is a Context enum value
8947	ContextReservations = "RESERVATIONS"
8948
8949	// ContextSavingsPlans is a Context enum value
8950	ContextSavingsPlans = "SAVINGS_PLANS"
8951)
8952
8953// The rule schema version in this particular Cost Category.
8954const (
8955	// CostCategoryRuleVersionCostCategoryExpressionV1 is a CostCategoryRuleVersion enum value
8956	CostCategoryRuleVersionCostCategoryExpressionV1 = "CostCategoryExpression.v1"
8957)
8958
8959const (
8960	// DimensionAz is a Dimension enum value
8961	DimensionAz = "AZ"
8962
8963	// DimensionInstanceType is a Dimension enum value
8964	DimensionInstanceType = "INSTANCE_TYPE"
8965
8966	// DimensionLinkedAccount is a Dimension enum value
8967	DimensionLinkedAccount = "LINKED_ACCOUNT"
8968
8969	// DimensionLinkedAccountName is a Dimension enum value
8970	DimensionLinkedAccountName = "LINKED_ACCOUNT_NAME"
8971
8972	// DimensionOperation is a Dimension enum value
8973	DimensionOperation = "OPERATION"
8974
8975	// DimensionPurchaseType is a Dimension enum value
8976	DimensionPurchaseType = "PURCHASE_TYPE"
8977
8978	// DimensionRegion is a Dimension enum value
8979	DimensionRegion = "REGION"
8980
8981	// DimensionService is a Dimension enum value
8982	DimensionService = "SERVICE"
8983
8984	// DimensionServiceCode is a Dimension enum value
8985	DimensionServiceCode = "SERVICE_CODE"
8986
8987	// DimensionUsageType is a Dimension enum value
8988	DimensionUsageType = "USAGE_TYPE"
8989
8990	// DimensionUsageTypeGroup is a Dimension enum value
8991	DimensionUsageTypeGroup = "USAGE_TYPE_GROUP"
8992
8993	// DimensionRecordType is a Dimension enum value
8994	DimensionRecordType = "RECORD_TYPE"
8995
8996	// DimensionOperatingSystem is a Dimension enum value
8997	DimensionOperatingSystem = "OPERATING_SYSTEM"
8998
8999	// DimensionTenancy is a Dimension enum value
9000	DimensionTenancy = "TENANCY"
9001
9002	// DimensionScope is a Dimension enum value
9003	DimensionScope = "SCOPE"
9004
9005	// DimensionPlatform is a Dimension enum value
9006	DimensionPlatform = "PLATFORM"
9007
9008	// DimensionSubscriptionId is a Dimension enum value
9009	DimensionSubscriptionId = "SUBSCRIPTION_ID"
9010
9011	// DimensionLegalEntityName is a Dimension enum value
9012	DimensionLegalEntityName = "LEGAL_ENTITY_NAME"
9013
9014	// DimensionDeploymentOption is a Dimension enum value
9015	DimensionDeploymentOption = "DEPLOYMENT_OPTION"
9016
9017	// DimensionDatabaseEngine is a Dimension enum value
9018	DimensionDatabaseEngine = "DATABASE_ENGINE"
9019
9020	// DimensionCacheEngine is a Dimension enum value
9021	DimensionCacheEngine = "CACHE_ENGINE"
9022
9023	// DimensionInstanceTypeFamily is a Dimension enum value
9024	DimensionInstanceTypeFamily = "INSTANCE_TYPE_FAMILY"
9025
9026	// DimensionBillingEntity is a Dimension enum value
9027	DimensionBillingEntity = "BILLING_ENTITY"
9028
9029	// DimensionReservationId is a Dimension enum value
9030	DimensionReservationId = "RESERVATION_ID"
9031
9032	// DimensionResourceId is a Dimension enum value
9033	DimensionResourceId = "RESOURCE_ID"
9034
9035	// DimensionRightsizingType is a Dimension enum value
9036	DimensionRightsizingType = "RIGHTSIZING_TYPE"
9037
9038	// DimensionSavingsPlansType is a Dimension enum value
9039	DimensionSavingsPlansType = "SAVINGS_PLANS_TYPE"
9040
9041	// DimensionSavingsPlanArn is a Dimension enum value
9042	DimensionSavingsPlanArn = "SAVINGS_PLAN_ARN"
9043
9044	// DimensionPaymentOption is a Dimension enum value
9045	DimensionPaymentOption = "PAYMENT_OPTION"
9046)
9047
9048const (
9049	// GranularityDaily is a Granularity enum value
9050	GranularityDaily = "DAILY"
9051
9052	// GranularityMonthly is a Granularity enum value
9053	GranularityMonthly = "MONTHLY"
9054
9055	// GranularityHourly is a Granularity enum value
9056	GranularityHourly = "HOURLY"
9057)
9058
9059const (
9060	// GroupDefinitionTypeDimension is a GroupDefinitionType enum value
9061	GroupDefinitionTypeDimension = "DIMENSION"
9062
9063	// GroupDefinitionTypeTag is a GroupDefinitionType enum value
9064	GroupDefinitionTypeTag = "TAG"
9065
9066	// GroupDefinitionTypeCostCategory is a GroupDefinitionType enum value
9067	GroupDefinitionTypeCostCategory = "COST_CATEGORY"
9068)
9069
9070const (
9071	// LookbackPeriodInDaysSevenDays is a LookbackPeriodInDays enum value
9072	LookbackPeriodInDaysSevenDays = "SEVEN_DAYS"
9073
9074	// LookbackPeriodInDaysThirtyDays is a LookbackPeriodInDays enum value
9075	LookbackPeriodInDaysThirtyDays = "THIRTY_DAYS"
9076
9077	// LookbackPeriodInDaysSixtyDays is a LookbackPeriodInDays enum value
9078	LookbackPeriodInDaysSixtyDays = "SIXTY_DAYS"
9079)
9080
9081const (
9082	// MatchOptionEquals is a MatchOption enum value
9083	MatchOptionEquals = "EQUALS"
9084
9085	// MatchOptionStartsWith is a MatchOption enum value
9086	MatchOptionStartsWith = "STARTS_WITH"
9087
9088	// MatchOptionEndsWith is a MatchOption enum value
9089	MatchOptionEndsWith = "ENDS_WITH"
9090
9091	// MatchOptionContains is a MatchOption enum value
9092	MatchOptionContains = "CONTAINS"
9093
9094	// MatchOptionCaseSensitive is a MatchOption enum value
9095	MatchOptionCaseSensitive = "CASE_SENSITIVE"
9096
9097	// MatchOptionCaseInsensitive is a MatchOption enum value
9098	MatchOptionCaseInsensitive = "CASE_INSENSITIVE"
9099)
9100
9101const (
9102	// MetricBlendedCost is a Metric enum value
9103	MetricBlendedCost = "BLENDED_COST"
9104
9105	// MetricUnblendedCost is a Metric enum value
9106	MetricUnblendedCost = "UNBLENDED_COST"
9107
9108	// MetricAmortizedCost is a Metric enum value
9109	MetricAmortizedCost = "AMORTIZED_COST"
9110
9111	// MetricNetUnblendedCost is a Metric enum value
9112	MetricNetUnblendedCost = "NET_UNBLENDED_COST"
9113
9114	// MetricNetAmortizedCost is a Metric enum value
9115	MetricNetAmortizedCost = "NET_AMORTIZED_COST"
9116
9117	// MetricUsageQuantity is a Metric enum value
9118	MetricUsageQuantity = "USAGE_QUANTITY"
9119
9120	// MetricNormalizedUsageAmount is a Metric enum value
9121	MetricNormalizedUsageAmount = "NORMALIZED_USAGE_AMOUNT"
9122)
9123
9124const (
9125	// OfferingClassStandard is a OfferingClass enum value
9126	OfferingClassStandard = "STANDARD"
9127
9128	// OfferingClassConvertible is a OfferingClass enum value
9129	OfferingClassConvertible = "CONVERTIBLE"
9130)
9131
9132const (
9133	// PaymentOptionNoUpfront is a PaymentOption enum value
9134	PaymentOptionNoUpfront = "NO_UPFRONT"
9135
9136	// PaymentOptionPartialUpfront is a PaymentOption enum value
9137	PaymentOptionPartialUpfront = "PARTIAL_UPFRONT"
9138
9139	// PaymentOptionAllUpfront is a PaymentOption enum value
9140	PaymentOptionAllUpfront = "ALL_UPFRONT"
9141
9142	// PaymentOptionLightUtilization is a PaymentOption enum value
9143	PaymentOptionLightUtilization = "LIGHT_UTILIZATION"
9144
9145	// PaymentOptionMediumUtilization is a PaymentOption enum value
9146	PaymentOptionMediumUtilization = "MEDIUM_UTILIZATION"
9147
9148	// PaymentOptionHeavyUtilization is a PaymentOption enum value
9149	PaymentOptionHeavyUtilization = "HEAVY_UTILIZATION"
9150)
9151
9152const (
9153	// RecommendationTargetSameInstanceFamily is a RecommendationTarget enum value
9154	RecommendationTargetSameInstanceFamily = "SAME_INSTANCE_FAMILY"
9155
9156	// RecommendationTargetCrossInstanceFamily is a RecommendationTarget enum value
9157	RecommendationTargetCrossInstanceFamily = "CROSS_INSTANCE_FAMILY"
9158)
9159
9160const (
9161	// RightsizingTypeTerminate is a RightsizingType enum value
9162	RightsizingTypeTerminate = "TERMINATE"
9163
9164	// RightsizingTypeModify is a RightsizingType enum value
9165	RightsizingTypeModify = "MODIFY"
9166)
9167
9168const (
9169	// SupportedSavingsPlansTypeComputeSp is a SupportedSavingsPlansType enum value
9170	SupportedSavingsPlansTypeComputeSp = "COMPUTE_SP"
9171
9172	// SupportedSavingsPlansTypeEc2InstanceSp is a SupportedSavingsPlansType enum value
9173	SupportedSavingsPlansTypeEc2InstanceSp = "EC2_INSTANCE_SP"
9174)
9175
9176const (
9177	// TermInYearsOneYear is a TermInYears enum value
9178	TermInYearsOneYear = "ONE_YEAR"
9179
9180	// TermInYearsThreeYears is a TermInYears enum value
9181	TermInYearsThreeYears = "THREE_YEARS"
9182)
9183