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