1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package costexplorer
4
5import (
6	"github.com/aws/aws-sdk-go/aws"
7	"github.com/aws/aws-sdk-go/aws/awsutil"
8	"github.com/aws/aws-sdk-go/aws/request"
9)
10
11const opGetCostAndUsage = "GetCostAndUsage"
12
13// GetCostAndUsageRequest generates a "aws/request.Request" representing the
14// client's request for the GetCostAndUsage operation. The "output" return
15// value will be populated with the request's response once the request completes
16// successfully.
17//
18// Use "Send" method on the returned Request to send the API call to the service.
19// the "output" return value is not valid until after Send returns without error.
20//
21// See GetCostAndUsage for more information on using the GetCostAndUsage
22// API call, and error handling.
23//
24// This method is useful when you want to inject custom logic or configuration
25// into the SDK's request lifecycle. Such as custom headers, or retry logic.
26//
27//
28//    // Example sending a request using the GetCostAndUsageRequest method.
29//    req, resp := client.GetCostAndUsageRequest(params)
30//
31//    err := req.Send()
32//    if err == nil { // resp is now filled
33//        fmt.Println(resp)
34//    }
35//
36// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsage
37func (c *CostExplorer) GetCostAndUsageRequest(input *GetCostAndUsageInput) (req *request.Request, output *GetCostAndUsageOutput) {
38	op := &request.Operation{
39		Name:       opGetCostAndUsage,
40		HTTPMethod: "POST",
41		HTTPPath:   "/",
42	}
43
44	if input == nil {
45		input = &GetCostAndUsageInput{}
46	}
47
48	output = &GetCostAndUsageOutput{}
49	req = c.newRequest(op, input, output)
50	return
51}
52
53// GetCostAndUsage API operation for AWS Cost Explorer Service.
54//
55// Retrieves cost and usage metrics for your account. You can specify which
56// cost and usage-related metric, such as BlendedCosts or UsageQuantity, that
57// you want the request to return. You can also filter and group your data by
58// various dimensions, such as SERVICE or AZ, in a specific time range. For
59// a complete list of valid dimensions, see the GetDimensionValues (http://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_GetDimensionValues.html)
60// operation. Master accounts in an organization in AWS Organizations have access
61// to all member accounts.
62//
63// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
64// with awserr.Error's Code and Message methods to get detailed information about
65// the error.
66//
67// See the AWS API reference guide for AWS Cost Explorer Service's
68// API operation GetCostAndUsage for usage and error information.
69//
70// Returned Error Codes:
71//   * ErrCodeLimitExceededException "LimitExceededException"
72//   You made too many calls in a short period of time. Try again later.
73//
74//   * ErrCodeBillExpirationException "BillExpirationException"
75//   The requested report expired. Update the date interval and try again.
76//
77//   * ErrCodeDataUnavailableException "DataUnavailableException"
78//   The requested data is unavailable.
79//
80//   * ErrCodeInvalidNextTokenException "InvalidNextTokenException"
81//   The pagination token is invalid. Try again without a pagination token.
82//
83//   * ErrCodeRequestChangedException "RequestChangedException"
84//   Your request parameters changed between pages. Try again with the old parameters
85//   or without a pagination token.
86//
87// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsage
88func (c *CostExplorer) GetCostAndUsage(input *GetCostAndUsageInput) (*GetCostAndUsageOutput, error) {
89	req, out := c.GetCostAndUsageRequest(input)
90	return out, req.Send()
91}
92
93// GetCostAndUsageWithContext is the same as GetCostAndUsage with the addition of
94// the ability to pass a context and additional request options.
95//
96// See GetCostAndUsage for details on how to use this API operation.
97//
98// The context must be non-nil and will be used for request cancellation. If
99// the context is nil a panic will occur. In the future the SDK may create
100// sub-contexts for http.Requests. See https://golang.org/pkg/context/
101// for more information on using Contexts.
102func (c *CostExplorer) GetCostAndUsageWithContext(ctx aws.Context, input *GetCostAndUsageInput, opts ...request.Option) (*GetCostAndUsageOutput, error) {
103	req, out := c.GetCostAndUsageRequest(input)
104	req.SetContext(ctx)
105	req.ApplyOptions(opts...)
106	return out, req.Send()
107}
108
109const opGetCostForecast = "GetCostForecast"
110
111// GetCostForecastRequest generates a "aws/request.Request" representing the
112// client's request for the GetCostForecast operation. The "output" return
113// value will be populated with the request's response once the request completes
114// successfully.
115//
116// Use "Send" method on the returned Request to send the API call to the service.
117// the "output" return value is not valid until after Send returns without error.
118//
119// See GetCostForecast for more information on using the GetCostForecast
120// API call, and error handling.
121//
122// This method is useful when you want to inject custom logic or configuration
123// into the SDK's request lifecycle. Such as custom headers, or retry logic.
124//
125//
126//    // Example sending a request using the GetCostForecastRequest method.
127//    req, resp := client.GetCostForecastRequest(params)
128//
129//    err := req.Send()
130//    if err == nil { // resp is now filled
131//        fmt.Println(resp)
132//    }
133//
134// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostForecast
135func (c *CostExplorer) GetCostForecastRequest(input *GetCostForecastInput) (req *request.Request, output *GetCostForecastOutput) {
136	op := &request.Operation{
137		Name:       opGetCostForecast,
138		HTTPMethod: "POST",
139		HTTPPath:   "/",
140	}
141
142	if input == nil {
143		input = &GetCostForecastInput{}
144	}
145
146	output = &GetCostForecastOutput{}
147	req = c.newRequest(op, input, output)
148	return
149}
150
151// GetCostForecast API operation for AWS Cost Explorer Service.
152//
153// Retrieves a forecast for how much Amazon Web Services predicts that you will
154// spend over the forecast time period that you select, based on your past costs.
155//
156// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
157// with awserr.Error's Code and Message methods to get detailed information about
158// the error.
159//
160// See the AWS API reference guide for AWS Cost Explorer Service's
161// API operation GetCostForecast for usage and error information.
162//
163// Returned Error Codes:
164//   * ErrCodeLimitExceededException "LimitExceededException"
165//   You made too many calls in a short period of time. Try again later.
166//
167//   * ErrCodeDataUnavailableException "DataUnavailableException"
168//   The requested data is unavailable.
169//
170// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostForecast
171func (c *CostExplorer) GetCostForecast(input *GetCostForecastInput) (*GetCostForecastOutput, error) {
172	req, out := c.GetCostForecastRequest(input)
173	return out, req.Send()
174}
175
176// GetCostForecastWithContext is the same as GetCostForecast with the addition of
177// the ability to pass a context and additional request options.
178//
179// See GetCostForecast for details on how to use this API operation.
180//
181// The context must be non-nil and will be used for request cancellation. If
182// the context is nil a panic will occur. In the future the SDK may create
183// sub-contexts for http.Requests. See https://golang.org/pkg/context/
184// for more information on using Contexts.
185func (c *CostExplorer) GetCostForecastWithContext(ctx aws.Context, input *GetCostForecastInput, opts ...request.Option) (*GetCostForecastOutput, error) {
186	req, out := c.GetCostForecastRequest(input)
187	req.SetContext(ctx)
188	req.ApplyOptions(opts...)
189	return out, req.Send()
190}
191
192const opGetDimensionValues = "GetDimensionValues"
193
194// GetDimensionValuesRequest generates a "aws/request.Request" representing the
195// client's request for the GetDimensionValues operation. The "output" return
196// value will be populated with the request's response once the request completes
197// successfully.
198//
199// Use "Send" method on the returned Request to send the API call to the service.
200// the "output" return value is not valid until after Send returns without error.
201//
202// See GetDimensionValues for more information on using the GetDimensionValues
203// API call, and error handling.
204//
205// This method is useful when you want to inject custom logic or configuration
206// into the SDK's request lifecycle. Such as custom headers, or retry logic.
207//
208//
209//    // Example sending a request using the GetDimensionValuesRequest method.
210//    req, resp := client.GetDimensionValuesRequest(params)
211//
212//    err := req.Send()
213//    if err == nil { // resp is now filled
214//        fmt.Println(resp)
215//    }
216//
217// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetDimensionValues
218func (c *CostExplorer) GetDimensionValuesRequest(input *GetDimensionValuesInput) (req *request.Request, output *GetDimensionValuesOutput) {
219	op := &request.Operation{
220		Name:       opGetDimensionValues,
221		HTTPMethod: "POST",
222		HTTPPath:   "/",
223	}
224
225	if input == nil {
226		input = &GetDimensionValuesInput{}
227	}
228
229	output = &GetDimensionValuesOutput{}
230	req = c.newRequest(op, input, output)
231	return
232}
233
234// GetDimensionValues API operation for AWS Cost Explorer Service.
235//
236// Retrieves all available filter values for a specified filter over a period
237// of time. You can search the dimension values for an arbitrary string.
238//
239// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
240// with awserr.Error's Code and Message methods to get detailed information about
241// the error.
242//
243// See the AWS API reference guide for AWS Cost Explorer Service's
244// API operation GetDimensionValues for usage and error information.
245//
246// Returned Error Codes:
247//   * ErrCodeLimitExceededException "LimitExceededException"
248//   You made too many calls in a short period of time. Try again later.
249//
250//   * ErrCodeBillExpirationException "BillExpirationException"
251//   The requested report expired. Update the date interval and try again.
252//
253//   * ErrCodeDataUnavailableException "DataUnavailableException"
254//   The requested data is unavailable.
255//
256//   * ErrCodeInvalidNextTokenException "InvalidNextTokenException"
257//   The pagination token is invalid. Try again without a pagination token.
258//
259//   * ErrCodeRequestChangedException "RequestChangedException"
260//   Your request parameters changed between pages. Try again with the old parameters
261//   or without a pagination token.
262//
263// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetDimensionValues
264func (c *CostExplorer) GetDimensionValues(input *GetDimensionValuesInput) (*GetDimensionValuesOutput, error) {
265	req, out := c.GetDimensionValuesRequest(input)
266	return out, req.Send()
267}
268
269// GetDimensionValuesWithContext is the same as GetDimensionValues with the addition of
270// the ability to pass a context and additional request options.
271//
272// See GetDimensionValues for details on how to use this API operation.
273//
274// The context must be non-nil and will be used for request cancellation. If
275// the context is nil a panic will occur. In the future the SDK may create
276// sub-contexts for http.Requests. See https://golang.org/pkg/context/
277// for more information on using Contexts.
278func (c *CostExplorer) GetDimensionValuesWithContext(ctx aws.Context, input *GetDimensionValuesInput, opts ...request.Option) (*GetDimensionValuesOutput, error) {
279	req, out := c.GetDimensionValuesRequest(input)
280	req.SetContext(ctx)
281	req.ApplyOptions(opts...)
282	return out, req.Send()
283}
284
285const opGetReservationCoverage = "GetReservationCoverage"
286
287// GetReservationCoverageRequest generates a "aws/request.Request" representing the
288// client's request for the GetReservationCoverage operation. The "output" return
289// value will be populated with the request's response once the request completes
290// successfully.
291//
292// Use "Send" method on the returned Request to send the API call to the service.
293// the "output" return value is not valid until after Send returns without error.
294//
295// See GetReservationCoverage for more information on using the GetReservationCoverage
296// API call, and error handling.
297//
298// This method is useful when you want to inject custom logic or configuration
299// into the SDK's request lifecycle. Such as custom headers, or retry logic.
300//
301//
302//    // Example sending a request using the GetReservationCoverageRequest method.
303//    req, resp := client.GetReservationCoverageRequest(params)
304//
305//    err := req.Send()
306//    if err == nil { // resp is now filled
307//        fmt.Println(resp)
308//    }
309//
310// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationCoverage
311func (c *CostExplorer) GetReservationCoverageRequest(input *GetReservationCoverageInput) (req *request.Request, output *GetReservationCoverageOutput) {
312	op := &request.Operation{
313		Name:       opGetReservationCoverage,
314		HTTPMethod: "POST",
315		HTTPPath:   "/",
316	}
317
318	if input == nil {
319		input = &GetReservationCoverageInput{}
320	}
321
322	output = &GetReservationCoverageOutput{}
323	req = c.newRequest(op, input, output)
324	return
325}
326
327// GetReservationCoverage API operation for AWS Cost Explorer Service.
328//
329// Retrieves the reservation coverage for your account. This enables you to
330// see how much of your Amazon Elastic Compute Cloud, Amazon ElastiCache, Amazon
331// Relational Database Service, or Amazon Redshift usage is covered by a reservation.
332// An organization's master account can see the coverage of the associated member
333// accounts. For any time period, you can filter data about reservation usage
334// by the following dimensions:
335//
336//    * AZ
337//
338//    * CACHE_ENGINE
339//
340//    * DATABASE_ENGINE
341//
342//    * DEPLOYMENT_OPTION
343//
344//    * INSTANCE_TYPE
345//
346//    * LINKED_ACCOUNT
347//
348//    * OPERATING_SYSTEM
349//
350//    * PLATFORM
351//
352//    * REGION
353//
354//    * SERVICE
355//
356//    * TAG
357//
358//    * TENANCY
359//
360// To determine valid values for a dimension, use the GetDimensionValues operation.
361//
362// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
363// with awserr.Error's Code and Message methods to get detailed information about
364// the error.
365//
366// See the AWS API reference guide for AWS Cost Explorer Service's
367// API operation GetReservationCoverage for usage and error information.
368//
369// Returned Error Codes:
370//   * ErrCodeLimitExceededException "LimitExceededException"
371//   You made too many calls in a short period of time. Try again later.
372//
373//   * ErrCodeDataUnavailableException "DataUnavailableException"
374//   The requested data is unavailable.
375//
376//   * ErrCodeInvalidNextTokenException "InvalidNextTokenException"
377//   The pagination token is invalid. Try again without a pagination token.
378//
379// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationCoverage
380func (c *CostExplorer) GetReservationCoverage(input *GetReservationCoverageInput) (*GetReservationCoverageOutput, error) {
381	req, out := c.GetReservationCoverageRequest(input)
382	return out, req.Send()
383}
384
385// GetReservationCoverageWithContext is the same as GetReservationCoverage with the addition of
386// the ability to pass a context and additional request options.
387//
388// See GetReservationCoverage for details on how to use this API operation.
389//
390// The context must be non-nil and will be used for request cancellation. If
391// the context is nil a panic will occur. In the future the SDK may create
392// sub-contexts for http.Requests. See https://golang.org/pkg/context/
393// for more information on using Contexts.
394func (c *CostExplorer) GetReservationCoverageWithContext(ctx aws.Context, input *GetReservationCoverageInput, opts ...request.Option) (*GetReservationCoverageOutput, error) {
395	req, out := c.GetReservationCoverageRequest(input)
396	req.SetContext(ctx)
397	req.ApplyOptions(opts...)
398	return out, req.Send()
399}
400
401const opGetReservationPurchaseRecommendation = "GetReservationPurchaseRecommendation"
402
403// GetReservationPurchaseRecommendationRequest generates a "aws/request.Request" representing the
404// client's request for the GetReservationPurchaseRecommendation operation. The "output" return
405// value will be populated with the request's response once the request completes
406// successfully.
407//
408// Use "Send" method on the returned Request to send the API call to the service.
409// the "output" return value is not valid until after Send returns without error.
410//
411// See GetReservationPurchaseRecommendation for more information on using the GetReservationPurchaseRecommendation
412// API call, and error handling.
413//
414// This method is useful when you want to inject custom logic or configuration
415// into the SDK's request lifecycle. Such as custom headers, or retry logic.
416//
417//
418//    // Example sending a request using the GetReservationPurchaseRecommendationRequest method.
419//    req, resp := client.GetReservationPurchaseRecommendationRequest(params)
420//
421//    err := req.Send()
422//    if err == nil { // resp is now filled
423//        fmt.Println(resp)
424//    }
425//
426// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationPurchaseRecommendation
427func (c *CostExplorer) GetReservationPurchaseRecommendationRequest(input *GetReservationPurchaseRecommendationInput) (req *request.Request, output *GetReservationPurchaseRecommendationOutput) {
428	op := &request.Operation{
429		Name:       opGetReservationPurchaseRecommendation,
430		HTTPMethod: "POST",
431		HTTPPath:   "/",
432	}
433
434	if input == nil {
435		input = &GetReservationPurchaseRecommendationInput{}
436	}
437
438	output = &GetReservationPurchaseRecommendationOutput{}
439	req = c.newRequest(op, input, output)
440	return
441}
442
443// GetReservationPurchaseRecommendation API operation for AWS Cost Explorer Service.
444//
445// Gets recommendations for which reservations to purchase. These recommendations
446// could help you reduce your costs. Reservations provide a discounted hourly
447// rate (up to 75%) compared to On-Demand pricing.
448//
449// AWS generates your recommendations by identifying your On-Demand usage during
450// a specific time period and collecting your usage into categories that are
451// eligible for a reservation. After AWS has these categories, it simulates
452// every combination of reservations in each category of usage to identify the
453// best number of each type of RI to purchase to maximize your estimated savings.
454//
455// For example, AWS automatically aggregates your Amazon EC2 Linux, shared tenancy,
456// and c4 family usage in the US West (Oregon) Region and recommends that you
457// buy size-flexible regional reservations to apply to the c4 family usage.
458// AWS recommends the smallest size instance in an instance family. This makes
459// it easier to purchase a size-flexible RI. AWS also shows the equal number
460// of normalized units so that you can purchase any instance size that you want.
461// For this example, your RI recommendation would be for c4.large because that
462// is the smallest size instance in the c4 instance family.
463//
464// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
465// with awserr.Error's Code and Message methods to get detailed information about
466// the error.
467//
468// See the AWS API reference guide for AWS Cost Explorer Service's
469// API operation GetReservationPurchaseRecommendation for usage and error information.
470//
471// Returned Error Codes:
472//   * ErrCodeLimitExceededException "LimitExceededException"
473//   You made too many calls in a short period of time. Try again later.
474//
475//   * ErrCodeDataUnavailableException "DataUnavailableException"
476//   The requested data is unavailable.
477//
478//   * ErrCodeInvalidNextTokenException "InvalidNextTokenException"
479//   The pagination token is invalid. Try again without a pagination token.
480//
481// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationPurchaseRecommendation
482func (c *CostExplorer) GetReservationPurchaseRecommendation(input *GetReservationPurchaseRecommendationInput) (*GetReservationPurchaseRecommendationOutput, error) {
483	req, out := c.GetReservationPurchaseRecommendationRequest(input)
484	return out, req.Send()
485}
486
487// GetReservationPurchaseRecommendationWithContext is the same as GetReservationPurchaseRecommendation with the addition of
488// the ability to pass a context and additional request options.
489//
490// See GetReservationPurchaseRecommendation for details on how to use this API operation.
491//
492// The context must be non-nil and will be used for request cancellation. If
493// the context is nil a panic will occur. In the future the SDK may create
494// sub-contexts for http.Requests. See https://golang.org/pkg/context/
495// for more information on using Contexts.
496func (c *CostExplorer) GetReservationPurchaseRecommendationWithContext(ctx aws.Context, input *GetReservationPurchaseRecommendationInput, opts ...request.Option) (*GetReservationPurchaseRecommendationOutput, error) {
497	req, out := c.GetReservationPurchaseRecommendationRequest(input)
498	req.SetContext(ctx)
499	req.ApplyOptions(opts...)
500	return out, req.Send()
501}
502
503const opGetReservationUtilization = "GetReservationUtilization"
504
505// GetReservationUtilizationRequest generates a "aws/request.Request" representing the
506// client's request for the GetReservationUtilization operation. The "output" return
507// value will be populated with the request's response once the request completes
508// successfully.
509//
510// Use "Send" method on the returned Request to send the API call to the service.
511// the "output" return value is not valid until after Send returns without error.
512//
513// See GetReservationUtilization for more information on using the GetReservationUtilization
514// API call, and error handling.
515//
516// This method is useful when you want to inject custom logic or configuration
517// into the SDK's request lifecycle. Such as custom headers, or retry logic.
518//
519//
520//    // Example sending a request using the GetReservationUtilizationRequest method.
521//    req, resp := client.GetReservationUtilizationRequest(params)
522//
523//    err := req.Send()
524//    if err == nil { // resp is now filled
525//        fmt.Println(resp)
526//    }
527//
528// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationUtilization
529func (c *CostExplorer) GetReservationUtilizationRequest(input *GetReservationUtilizationInput) (req *request.Request, output *GetReservationUtilizationOutput) {
530	op := &request.Operation{
531		Name:       opGetReservationUtilization,
532		HTTPMethod: "POST",
533		HTTPPath:   "/",
534	}
535
536	if input == nil {
537		input = &GetReservationUtilizationInput{}
538	}
539
540	output = &GetReservationUtilizationOutput{}
541	req = c.newRequest(op, input, output)
542	return
543}
544
545// GetReservationUtilization API operation for AWS Cost Explorer Service.
546//
547// Retrieves the reservation utilization for your account. Master accounts in
548// an organization have access to member accounts. You can filter data by dimensions
549// in a time period. You can use GetDimensionValues to determine the possible
550// dimension values. Currently, you can group only by SUBSCRIPTION_ID.
551//
552// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
553// with awserr.Error's Code and Message methods to get detailed information about
554// the error.
555//
556// See the AWS API reference guide for AWS Cost Explorer Service's
557// API operation GetReservationUtilization for usage and error information.
558//
559// Returned Error Codes:
560//   * ErrCodeLimitExceededException "LimitExceededException"
561//   You made too many calls in a short period of time. Try again later.
562//
563//   * ErrCodeDataUnavailableException "DataUnavailableException"
564//   The requested data is unavailable.
565//
566//   * ErrCodeInvalidNextTokenException "InvalidNextTokenException"
567//   The pagination token is invalid. Try again without a pagination token.
568//
569// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationUtilization
570func (c *CostExplorer) GetReservationUtilization(input *GetReservationUtilizationInput) (*GetReservationUtilizationOutput, error) {
571	req, out := c.GetReservationUtilizationRequest(input)
572	return out, req.Send()
573}
574
575// GetReservationUtilizationWithContext is the same as GetReservationUtilization with the addition of
576// the ability to pass a context and additional request options.
577//
578// See GetReservationUtilization for details on how to use this API operation.
579//
580// The context must be non-nil and will be used for request cancellation. If
581// the context is nil a panic will occur. In the future the SDK may create
582// sub-contexts for http.Requests. See https://golang.org/pkg/context/
583// for more information on using Contexts.
584func (c *CostExplorer) GetReservationUtilizationWithContext(ctx aws.Context, input *GetReservationUtilizationInput, opts ...request.Option) (*GetReservationUtilizationOutput, error) {
585	req, out := c.GetReservationUtilizationRequest(input)
586	req.SetContext(ctx)
587	req.ApplyOptions(opts...)
588	return out, req.Send()
589}
590
591const opGetRightsizingRecommendation = "GetRightsizingRecommendation"
592
593// GetRightsizingRecommendationRequest generates a "aws/request.Request" representing the
594// client's request for the GetRightsizingRecommendation operation. The "output" return
595// value will be populated with the request's response once the request completes
596// successfully.
597//
598// Use "Send" method on the returned Request to send the API call to the service.
599// the "output" return value is not valid until after Send returns without error.
600//
601// See GetRightsizingRecommendation for more information on using the GetRightsizingRecommendation
602// API call, and error handling.
603//
604// This method is useful when you want to inject custom logic or configuration
605// into the SDK's request lifecycle. Such as custom headers, or retry logic.
606//
607//
608//    // Example sending a request using the GetRightsizingRecommendationRequest method.
609//    req, resp := client.GetRightsizingRecommendationRequest(params)
610//
611//    err := req.Send()
612//    if err == nil { // resp is now filled
613//        fmt.Println(resp)
614//    }
615//
616// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetRightsizingRecommendation
617func (c *CostExplorer) GetRightsizingRecommendationRequest(input *GetRightsizingRecommendationInput) (req *request.Request, output *GetRightsizingRecommendationOutput) {
618	op := &request.Operation{
619		Name:       opGetRightsizingRecommendation,
620		HTTPMethod: "POST",
621		HTTPPath:   "/",
622	}
623
624	if input == nil {
625		input = &GetRightsizingRecommendationInput{}
626	}
627
628	output = &GetRightsizingRecommendationOutput{}
629	req = c.newRequest(op, input, output)
630	return
631}
632
633// GetRightsizingRecommendation API operation for AWS Cost Explorer Service.
634//
635// Creates recommendations that helps you save cost by identifying idle and
636// underutilized Amazon EC2 instances.
637//
638// Recommendations are generated to either downsize or terminate instances,
639// along with providing savings detail and metrics. For details on calculation
640// and function, see Optimizing Your Cost with Rightsizing Recommendations (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/ce-what-is.html).
641//
642// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
643// with awserr.Error's Code and Message methods to get detailed information about
644// the error.
645//
646// See the AWS API reference guide for AWS Cost Explorer Service's
647// API operation GetRightsizingRecommendation for usage and error information.
648//
649// Returned Error Codes:
650//   * ErrCodeLimitExceededException "LimitExceededException"
651//   You made too many calls in a short period of time. Try again later.
652//
653//   * ErrCodeInvalidNextTokenException "InvalidNextTokenException"
654//   The pagination token is invalid. Try again without a pagination token.
655//
656// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetRightsizingRecommendation
657func (c *CostExplorer) GetRightsizingRecommendation(input *GetRightsizingRecommendationInput) (*GetRightsizingRecommendationOutput, error) {
658	req, out := c.GetRightsizingRecommendationRequest(input)
659	return out, req.Send()
660}
661
662// GetRightsizingRecommendationWithContext is the same as GetRightsizingRecommendation with the addition of
663// the ability to pass a context and additional request options.
664//
665// See GetRightsizingRecommendation for details on how to use this API operation.
666//
667// The context must be non-nil and will be used for request cancellation. If
668// the context is nil a panic will occur. In the future the SDK may create
669// sub-contexts for http.Requests. See https://golang.org/pkg/context/
670// for more information on using Contexts.
671func (c *CostExplorer) GetRightsizingRecommendationWithContext(ctx aws.Context, input *GetRightsizingRecommendationInput, opts ...request.Option) (*GetRightsizingRecommendationOutput, error) {
672	req, out := c.GetRightsizingRecommendationRequest(input)
673	req.SetContext(ctx)
674	req.ApplyOptions(opts...)
675	return out, req.Send()
676}
677
678const opGetTags = "GetTags"
679
680// GetTagsRequest generates a "aws/request.Request" representing the
681// client's request for the GetTags operation. The "output" return
682// value will be populated with the request's response once the request completes
683// successfully.
684//
685// Use "Send" method on the returned Request to send the API call to the service.
686// the "output" return value is not valid until after Send returns without error.
687//
688// See GetTags for more information on using the GetTags
689// API call, and error handling.
690//
691// This method is useful when you want to inject custom logic or configuration
692// into the SDK's request lifecycle. Such as custom headers, or retry logic.
693//
694//
695//    // Example sending a request using the GetTagsRequest method.
696//    req, resp := client.GetTagsRequest(params)
697//
698//    err := req.Send()
699//    if err == nil { // resp is now filled
700//        fmt.Println(resp)
701//    }
702//
703// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetTags
704func (c *CostExplorer) GetTagsRequest(input *GetTagsInput) (req *request.Request, output *GetTagsOutput) {
705	op := &request.Operation{
706		Name:       opGetTags,
707		HTTPMethod: "POST",
708		HTTPPath:   "/",
709	}
710
711	if input == nil {
712		input = &GetTagsInput{}
713	}
714
715	output = &GetTagsOutput{}
716	req = c.newRequest(op, input, output)
717	return
718}
719
720// GetTags API operation for AWS Cost Explorer Service.
721//
722// Queries for available tag keys and tag values for a specified period. You
723// can search the tag values for an arbitrary string.
724//
725// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
726// with awserr.Error's Code and Message methods to get detailed information about
727// the error.
728//
729// See the AWS API reference guide for AWS Cost Explorer Service's
730// API operation GetTags for usage and error information.
731//
732// Returned Error Codes:
733//   * ErrCodeLimitExceededException "LimitExceededException"
734//   You made too many calls in a short period of time. Try again later.
735//
736//   * ErrCodeBillExpirationException "BillExpirationException"
737//   The requested report expired. Update the date interval and try again.
738//
739//   * ErrCodeDataUnavailableException "DataUnavailableException"
740//   The requested data is unavailable.
741//
742//   * ErrCodeInvalidNextTokenException "InvalidNextTokenException"
743//   The pagination token is invalid. Try again without a pagination token.
744//
745//   * ErrCodeRequestChangedException "RequestChangedException"
746//   Your request parameters changed between pages. Try again with the old parameters
747//   or without a pagination token.
748//
749// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetTags
750func (c *CostExplorer) GetTags(input *GetTagsInput) (*GetTagsOutput, error) {
751	req, out := c.GetTagsRequest(input)
752	return out, req.Send()
753}
754
755// GetTagsWithContext is the same as GetTags with the addition of
756// the ability to pass a context and additional request options.
757//
758// See GetTags for details on how to use this API operation.
759//
760// The context must be non-nil and will be used for request cancellation. If
761// the context is nil a panic will occur. In the future the SDK may create
762// sub-contexts for http.Requests. See https://golang.org/pkg/context/
763// for more information on using Contexts.
764func (c *CostExplorer) GetTagsWithContext(ctx aws.Context, input *GetTagsInput, opts ...request.Option) (*GetTagsOutput, error) {
765	req, out := c.GetTagsRequest(input)
766	req.SetContext(ctx)
767	req.ApplyOptions(opts...)
768	return out, req.Send()
769}
770
771const opGetUsageForecast = "GetUsageForecast"
772
773// GetUsageForecastRequest generates a "aws/request.Request" representing the
774// client's request for the GetUsageForecast operation. The "output" return
775// value will be populated with the request's response once the request completes
776// successfully.
777//
778// Use "Send" method on the returned Request to send the API call to the service.
779// the "output" return value is not valid until after Send returns without error.
780//
781// See GetUsageForecast for more information on using the GetUsageForecast
782// API call, and error handling.
783//
784// This method is useful when you want to inject custom logic or configuration
785// into the SDK's request lifecycle. Such as custom headers, or retry logic.
786//
787//
788//    // Example sending a request using the GetUsageForecastRequest method.
789//    req, resp := client.GetUsageForecastRequest(params)
790//
791//    err := req.Send()
792//    if err == nil { // resp is now filled
793//        fmt.Println(resp)
794//    }
795//
796// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetUsageForecast
797func (c *CostExplorer) GetUsageForecastRequest(input *GetUsageForecastInput) (req *request.Request, output *GetUsageForecastOutput) {
798	op := &request.Operation{
799		Name:       opGetUsageForecast,
800		HTTPMethod: "POST",
801		HTTPPath:   "/",
802	}
803
804	if input == nil {
805		input = &GetUsageForecastInput{}
806	}
807
808	output = &GetUsageForecastOutput{}
809	req = c.newRequest(op, input, output)
810	return
811}
812
813// GetUsageForecast API operation for AWS Cost Explorer Service.
814//
815// Retrieves a forecast for how much Amazon Web Services predicts that you will
816// use over the forecast time period that you select, based on your past usage.
817//
818// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
819// with awserr.Error's Code and Message methods to get detailed information about
820// the error.
821//
822// See the AWS API reference guide for AWS Cost Explorer Service's
823// API operation GetUsageForecast for usage and error information.
824//
825// Returned Error Codes:
826//   * ErrCodeLimitExceededException "LimitExceededException"
827//   You made too many calls in a short period of time. Try again later.
828//
829//   * ErrCodeDataUnavailableException "DataUnavailableException"
830//   The requested data is unavailable.
831//
832//   * ErrCodeUnresolvableUsageUnitException "UnresolvableUsageUnitException"
833//   Cost Explorer was unable to identify the usage unit. Provide UsageType/UsageTypeGroup
834//   filter selections that contain matching units, for example: hours.
835//
836// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetUsageForecast
837func (c *CostExplorer) GetUsageForecast(input *GetUsageForecastInput) (*GetUsageForecastOutput, error) {
838	req, out := c.GetUsageForecastRequest(input)
839	return out, req.Send()
840}
841
842// GetUsageForecastWithContext is the same as GetUsageForecast with the addition of
843// the ability to pass a context and additional request options.
844//
845// See GetUsageForecast for details on how to use this API operation.
846//
847// The context must be non-nil and will be used for request cancellation. If
848// the context is nil a panic will occur. In the future the SDK may create
849// sub-contexts for http.Requests. See https://golang.org/pkg/context/
850// for more information on using Contexts.
851func (c *CostExplorer) GetUsageForecastWithContext(ctx aws.Context, input *GetUsageForecastInput, opts ...request.Option) (*GetUsageForecastOutput, error) {
852	req, out := c.GetUsageForecastRequest(input)
853	req.SetContext(ctx)
854	req.ApplyOptions(opts...)
855	return out, req.Send()
856}
857
858// The amount of instance usage that a reservation covered.
859type Coverage struct {
860	_ struct{} `type:"structure"`
861
862	// The amount of cost that the reservation covered.
863	CoverageCost *CoverageCost `type:"structure"`
864
865	// The amount of instance usage that the reservation covered, in hours.
866	CoverageHours *CoverageHours `type:"structure"`
867
868	// The amount of instance usage that the reservation covered, in normalized
869	// units.
870	CoverageNormalizedUnits *CoverageNormalizedUnits `type:"structure"`
871}
872
873// String returns the string representation
874func (s Coverage) String() string {
875	return awsutil.Prettify(s)
876}
877
878// GoString returns the string representation
879func (s Coverage) GoString() string {
880	return s.String()
881}
882
883// SetCoverageCost sets the CoverageCost field's value.
884func (s *Coverage) SetCoverageCost(v *CoverageCost) *Coverage {
885	s.CoverageCost = v
886	return s
887}
888
889// SetCoverageHours sets the CoverageHours field's value.
890func (s *Coverage) SetCoverageHours(v *CoverageHours) *Coverage {
891	s.CoverageHours = v
892	return s
893}
894
895// SetCoverageNormalizedUnits sets the CoverageNormalizedUnits field's value.
896func (s *Coverage) SetCoverageNormalizedUnits(v *CoverageNormalizedUnits) *Coverage {
897	s.CoverageNormalizedUnits = v
898	return s
899}
900
901// Reservation coverage for a specified period, in hours.
902type CoverageByTime struct {
903	_ struct{} `type:"structure"`
904
905	// The groups of instances that the reservation covered.
906	Groups []*ReservationCoverageGroup `type:"list"`
907
908	// The period that this coverage was used over.
909	TimePeriod *DateInterval `type:"structure"`
910
911	// The total reservation coverage, in hours.
912	Total *Coverage `type:"structure"`
913}
914
915// String returns the string representation
916func (s CoverageByTime) String() string {
917	return awsutil.Prettify(s)
918}
919
920// GoString returns the string representation
921func (s CoverageByTime) GoString() string {
922	return s.String()
923}
924
925// SetGroups sets the Groups field's value.
926func (s *CoverageByTime) SetGroups(v []*ReservationCoverageGroup) *CoverageByTime {
927	s.Groups = v
928	return s
929}
930
931// SetTimePeriod sets the TimePeriod field's value.
932func (s *CoverageByTime) SetTimePeriod(v *DateInterval) *CoverageByTime {
933	s.TimePeriod = v
934	return s
935}
936
937// SetTotal sets the Total field's value.
938func (s *CoverageByTime) SetTotal(v *Coverage) *CoverageByTime {
939	s.Total = v
940	return s
941}
942
943// How much it cost to run an instance.
944type CoverageCost struct {
945	_ struct{} `type:"structure"`
946
947	// How much an On-Demand instance cost.
948	OnDemandCost *string `type:"string"`
949}
950
951// String returns the string representation
952func (s CoverageCost) String() string {
953	return awsutil.Prettify(s)
954}
955
956// GoString returns the string representation
957func (s CoverageCost) GoString() string {
958	return s.String()
959}
960
961// SetOnDemandCost sets the OnDemandCost field's value.
962func (s *CoverageCost) SetOnDemandCost(v string) *CoverageCost {
963	s.OnDemandCost = &v
964	return s
965}
966
967// How long a running instance either used a reservation or was On-Demand.
968type CoverageHours struct {
969	_ struct{} `type:"structure"`
970
971	// The percentage of instance hours that a reservation covered.
972	CoverageHoursPercentage *string `type:"string"`
973
974	// The number of instance running hours that On-Demand Instances covered.
975	OnDemandHours *string `type:"string"`
976
977	// The number of instance running hours that reservations covered.
978	ReservedHours *string `type:"string"`
979
980	// The total instance usage, in hours.
981	TotalRunningHours *string `type:"string"`
982}
983
984// String returns the string representation
985func (s CoverageHours) String() string {
986	return awsutil.Prettify(s)
987}
988
989// GoString returns the string representation
990func (s CoverageHours) GoString() string {
991	return s.String()
992}
993
994// SetCoverageHoursPercentage sets the CoverageHoursPercentage field's value.
995func (s *CoverageHours) SetCoverageHoursPercentage(v string) *CoverageHours {
996	s.CoverageHoursPercentage = &v
997	return s
998}
999
1000// SetOnDemandHours sets the OnDemandHours field's value.
1001func (s *CoverageHours) SetOnDemandHours(v string) *CoverageHours {
1002	s.OnDemandHours = &v
1003	return s
1004}
1005
1006// SetReservedHours sets the ReservedHours field's value.
1007func (s *CoverageHours) SetReservedHours(v string) *CoverageHours {
1008	s.ReservedHours = &v
1009	return s
1010}
1011
1012// SetTotalRunningHours sets the TotalRunningHours field's value.
1013func (s *CoverageHours) SetTotalRunningHours(v string) *CoverageHours {
1014	s.TotalRunningHours = &v
1015	return s
1016}
1017
1018// The amount of instance usage, in normalized units. Normalized units enable
1019// you to see your EC2 usage for multiple sizes of instances in a uniform way.
1020// For example, suppose you run an xlarge instance and a 2xlarge instance. If
1021// you run both instances for the same amount of time, the 2xlarge instance
1022// uses twice as much of your reservation as the xlarge instance, even though
1023// both instances show only one instance-hour. Using normalized units instead
1024// of instance-hours, the xlarge instance used 8 normalized units, and the 2xlarge
1025// instance used 16 normalized units.
1026//
1027// For more information, see Modifying Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html)
1028// in the Amazon Elastic Compute Cloud User Guide for Linux Instances.
1029type CoverageNormalizedUnits struct {
1030	_ struct{} `type:"structure"`
1031
1032	// The percentage of your used instance normalized units that a reservation
1033	// covers.
1034	CoverageNormalizedUnitsPercentage *string `type:"string"`
1035
1036	// The number of normalized units that are covered by On-Demand Instances instead
1037	// of a reservation.
1038	OnDemandNormalizedUnits *string `type:"string"`
1039
1040	// The number of normalized units that a reservation covers.
1041	ReservedNormalizedUnits *string `type:"string"`
1042
1043	// The total number of normalized units that you used.
1044	TotalRunningNormalizedUnits *string `type:"string"`
1045}
1046
1047// String returns the string representation
1048func (s CoverageNormalizedUnits) String() string {
1049	return awsutil.Prettify(s)
1050}
1051
1052// GoString returns the string representation
1053func (s CoverageNormalizedUnits) GoString() string {
1054	return s.String()
1055}
1056
1057// SetCoverageNormalizedUnitsPercentage sets the CoverageNormalizedUnitsPercentage field's value.
1058func (s *CoverageNormalizedUnits) SetCoverageNormalizedUnitsPercentage(v string) *CoverageNormalizedUnits {
1059	s.CoverageNormalizedUnitsPercentage = &v
1060	return s
1061}
1062
1063// SetOnDemandNormalizedUnits sets the OnDemandNormalizedUnits field's value.
1064func (s *CoverageNormalizedUnits) SetOnDemandNormalizedUnits(v string) *CoverageNormalizedUnits {
1065	s.OnDemandNormalizedUnits = &v
1066	return s
1067}
1068
1069// SetReservedNormalizedUnits sets the ReservedNormalizedUnits field's value.
1070func (s *CoverageNormalizedUnits) SetReservedNormalizedUnits(v string) *CoverageNormalizedUnits {
1071	s.ReservedNormalizedUnits = &v
1072	return s
1073}
1074
1075// SetTotalRunningNormalizedUnits sets the TotalRunningNormalizedUnits field's value.
1076func (s *CoverageNormalizedUnits) SetTotalRunningNormalizedUnits(v string) *CoverageNormalizedUnits {
1077	s.TotalRunningNormalizedUnits = &v
1078	return s
1079}
1080
1081// Context about the current instance.
1082type CurrentInstance struct {
1083	_ struct{} `type:"structure"`
1084
1085	// The currency code that Amazon Web Services used to calculate the costs for
1086	// this instance.
1087	CurrencyCode *string `type:"string"`
1088
1089	// Current On Demand cost of operating this instance on a monthly basis.
1090	MonthlyCost *string `type:"string"`
1091
1092	// Number of hours during the lookback period billed at On Demand rates.
1093	OnDemandHoursInLookbackPeriod *string `type:"string"`
1094
1095	// Number of hours during the lookback period covered by reservations.
1096	ReservationCoveredHoursInLookbackPeriod *string `type:"string"`
1097
1098	// Details about the resource and utilization.
1099	ResourceDetails *ResourceDetails `type:"structure"`
1100
1101	// Resource ID of the current instance.
1102	ResourceId *string `type:"string"`
1103
1104	// Utilization information of the current instance during the lookback period.
1105	ResourceUtilization *ResourceUtilization `type:"structure"`
1106
1107	// Cost allocation resource tags applied to the instance.
1108	Tags []*TagValues `type:"list"`
1109
1110	// The total number of hours the instance ran during the lookback period.
1111	TotalRunningHoursInLookbackPeriod *string `type:"string"`
1112}
1113
1114// String returns the string representation
1115func (s CurrentInstance) String() string {
1116	return awsutil.Prettify(s)
1117}
1118
1119// GoString returns the string representation
1120func (s CurrentInstance) GoString() string {
1121	return s.String()
1122}
1123
1124// SetCurrencyCode sets the CurrencyCode field's value.
1125func (s *CurrentInstance) SetCurrencyCode(v string) *CurrentInstance {
1126	s.CurrencyCode = &v
1127	return s
1128}
1129
1130// SetMonthlyCost sets the MonthlyCost field's value.
1131func (s *CurrentInstance) SetMonthlyCost(v string) *CurrentInstance {
1132	s.MonthlyCost = &v
1133	return s
1134}
1135
1136// SetOnDemandHoursInLookbackPeriod sets the OnDemandHoursInLookbackPeriod field's value.
1137func (s *CurrentInstance) SetOnDemandHoursInLookbackPeriod(v string) *CurrentInstance {
1138	s.OnDemandHoursInLookbackPeriod = &v
1139	return s
1140}
1141
1142// SetReservationCoveredHoursInLookbackPeriod sets the ReservationCoveredHoursInLookbackPeriod field's value.
1143func (s *CurrentInstance) SetReservationCoveredHoursInLookbackPeriod(v string) *CurrentInstance {
1144	s.ReservationCoveredHoursInLookbackPeriod = &v
1145	return s
1146}
1147
1148// SetResourceDetails sets the ResourceDetails field's value.
1149func (s *CurrentInstance) SetResourceDetails(v *ResourceDetails) *CurrentInstance {
1150	s.ResourceDetails = v
1151	return s
1152}
1153
1154// SetResourceId sets the ResourceId field's value.
1155func (s *CurrentInstance) SetResourceId(v string) *CurrentInstance {
1156	s.ResourceId = &v
1157	return s
1158}
1159
1160// SetResourceUtilization sets the ResourceUtilization field's value.
1161func (s *CurrentInstance) SetResourceUtilization(v *ResourceUtilization) *CurrentInstance {
1162	s.ResourceUtilization = v
1163	return s
1164}
1165
1166// SetTags sets the Tags field's value.
1167func (s *CurrentInstance) SetTags(v []*TagValues) *CurrentInstance {
1168	s.Tags = v
1169	return s
1170}
1171
1172// SetTotalRunningHoursInLookbackPeriod sets the TotalRunningHoursInLookbackPeriod field's value.
1173func (s *CurrentInstance) SetTotalRunningHoursInLookbackPeriod(v string) *CurrentInstance {
1174	s.TotalRunningHoursInLookbackPeriod = &v
1175	return s
1176}
1177
1178// The time period that you want the usage and costs for.
1179type DateInterval struct {
1180	_ struct{} `type:"structure"`
1181
1182	// The end of the time period that you want the usage and costs for. The end
1183	// date is exclusive. For example, if end is 2017-05-01, AWS retrieves cost
1184	// and usage data from the start date up to, but not including, 2017-05-01.
1185	//
1186	// End is a required field
1187	End *string `type:"string" required:"true"`
1188
1189	// The beginning of the time period that you want the usage and costs for. The
1190	// start date is inclusive. For example, if start is 2017-01-01, AWS retrieves
1191	// cost and usage data starting at 2017-01-01 up to the end date.
1192	//
1193	// Start is a required field
1194	Start *string `type:"string" required:"true"`
1195}
1196
1197// String returns the string representation
1198func (s DateInterval) String() string {
1199	return awsutil.Prettify(s)
1200}
1201
1202// GoString returns the string representation
1203func (s DateInterval) GoString() string {
1204	return s.String()
1205}
1206
1207// Validate inspects the fields of the type to determine if they are valid.
1208func (s *DateInterval) Validate() error {
1209	invalidParams := request.ErrInvalidParams{Context: "DateInterval"}
1210	if s.End == nil {
1211		invalidParams.Add(request.NewErrParamRequired("End"))
1212	}
1213	if s.Start == nil {
1214		invalidParams.Add(request.NewErrParamRequired("Start"))
1215	}
1216
1217	if invalidParams.Len() > 0 {
1218		return invalidParams
1219	}
1220	return nil
1221}
1222
1223// SetEnd sets the End field's value.
1224func (s *DateInterval) SetEnd(v string) *DateInterval {
1225	s.End = &v
1226	return s
1227}
1228
1229// SetStart sets the Start field's value.
1230func (s *DateInterval) SetStart(v string) *DateInterval {
1231	s.Start = &v
1232	return s
1233}
1234
1235// The metadata that you can use to filter and group your results. You can use
1236// GetDimensionValues to find specific values.
1237type DimensionValues struct {
1238	_ struct{} `type:"structure"`
1239
1240	// The names of the metadata types that you can use to filter and group your
1241	// results. For example, AZ returns a list of Availability Zones.
1242	Key *string `type:"string" enum:"Dimension"`
1243
1244	// The metadata values that you can use to filter and group your results. You
1245	// can use GetDimensionValues to find specific values.
1246	//
1247	// Valid values for the SERVICE dimension are Amazon Elastic Compute Cloud -
1248	// Compute, Amazon Elasticsearch Service, Amazon ElastiCache, Amazon Redshift,
1249	// and Amazon Relational Database Service.
1250	Values []*string `type:"list"`
1251}
1252
1253// String returns the string representation
1254func (s DimensionValues) String() string {
1255	return awsutil.Prettify(s)
1256}
1257
1258// GoString returns the string representation
1259func (s DimensionValues) GoString() string {
1260	return s.String()
1261}
1262
1263// SetKey sets the Key field's value.
1264func (s *DimensionValues) SetKey(v string) *DimensionValues {
1265	s.Key = &v
1266	return s
1267}
1268
1269// SetValues sets the Values field's value.
1270func (s *DimensionValues) SetValues(v []*string) *DimensionValues {
1271	s.Values = v
1272	return s
1273}
1274
1275// The metadata of a specific type that you can use to filter and group your
1276// results. You can use GetDimensionValues to find specific values.
1277type DimensionValuesWithAttributes struct {
1278	_ struct{} `type:"structure"`
1279
1280	// The attribute that applies to a specific Dimension.
1281	Attributes map[string]*string `type:"map"`
1282
1283	// The value of a dimension with a specific attribute.
1284	Value *string `type:"string"`
1285}
1286
1287// String returns the string representation
1288func (s DimensionValuesWithAttributes) String() string {
1289	return awsutil.Prettify(s)
1290}
1291
1292// GoString returns the string representation
1293func (s DimensionValuesWithAttributes) GoString() string {
1294	return s.String()
1295}
1296
1297// SetAttributes sets the Attributes field's value.
1298func (s *DimensionValuesWithAttributes) SetAttributes(v map[string]*string) *DimensionValuesWithAttributes {
1299	s.Attributes = v
1300	return s
1301}
1302
1303// SetValue sets the Value field's value.
1304func (s *DimensionValuesWithAttributes) SetValue(v string) *DimensionValuesWithAttributes {
1305	s.Value = &v
1306	return s
1307}
1308
1309// Details about the Amazon EC2 instances that AWS recommends that you purchase.
1310type EC2InstanceDetails struct {
1311	_ struct{} `type:"structure"`
1312
1313	// The Availability Zone of the recommended reservation.
1314	AvailabilityZone *string `type:"string"`
1315
1316	// Whether the recommendation is for a current-generation instance.
1317	CurrentGeneration *bool `type:"boolean"`
1318
1319	// The instance family of the recommended reservation.
1320	Family *string `type:"string"`
1321
1322	// The type of instance that AWS recommends.
1323	InstanceType *string `type:"string"`
1324
1325	// The platform of the recommended reservation. The platform is the specific
1326	// combination of operating system, license model, and software on an instance.
1327	Platform *string `type:"string"`
1328
1329	// The AWS Region of the recommended reservation.
1330	Region *string `type:"string"`
1331
1332	// Whether the recommended reservation is size flexible.
1333	SizeFlexEligible *bool `type:"boolean"`
1334
1335	// Whether the recommended reservation is dedicated or shared.
1336	Tenancy *string `type:"string"`
1337}
1338
1339// String returns the string representation
1340func (s EC2InstanceDetails) String() string {
1341	return awsutil.Prettify(s)
1342}
1343
1344// GoString returns the string representation
1345func (s EC2InstanceDetails) GoString() string {
1346	return s.String()
1347}
1348
1349// SetAvailabilityZone sets the AvailabilityZone field's value.
1350func (s *EC2InstanceDetails) SetAvailabilityZone(v string) *EC2InstanceDetails {
1351	s.AvailabilityZone = &v
1352	return s
1353}
1354
1355// SetCurrentGeneration sets the CurrentGeneration field's value.
1356func (s *EC2InstanceDetails) SetCurrentGeneration(v bool) *EC2InstanceDetails {
1357	s.CurrentGeneration = &v
1358	return s
1359}
1360
1361// SetFamily sets the Family field's value.
1362func (s *EC2InstanceDetails) SetFamily(v string) *EC2InstanceDetails {
1363	s.Family = &v
1364	return s
1365}
1366
1367// SetInstanceType sets the InstanceType field's value.
1368func (s *EC2InstanceDetails) SetInstanceType(v string) *EC2InstanceDetails {
1369	s.InstanceType = &v
1370	return s
1371}
1372
1373// SetPlatform sets the Platform field's value.
1374func (s *EC2InstanceDetails) SetPlatform(v string) *EC2InstanceDetails {
1375	s.Platform = &v
1376	return s
1377}
1378
1379// SetRegion sets the Region field's value.
1380func (s *EC2InstanceDetails) SetRegion(v string) *EC2InstanceDetails {
1381	s.Region = &v
1382	return s
1383}
1384
1385// SetSizeFlexEligible sets the SizeFlexEligible field's value.
1386func (s *EC2InstanceDetails) SetSizeFlexEligible(v bool) *EC2InstanceDetails {
1387	s.SizeFlexEligible = &v
1388	return s
1389}
1390
1391// SetTenancy sets the Tenancy field's value.
1392func (s *EC2InstanceDetails) SetTenancy(v string) *EC2InstanceDetails {
1393	s.Tenancy = &v
1394	return s
1395}
1396
1397// Details on the Amazon EC2 Resource.
1398type EC2ResourceDetails struct {
1399	_ struct{} `type:"structure"`
1400
1401	// Hourly public On Demand rate for the instance type.
1402	HourlyOnDemandRate *string `type:"string"`
1403
1404	// The type of Amazon Web Services instance.
1405	InstanceType *string `type:"string"`
1406
1407	// Memory capacity of Amazon Web Services instance.
1408	Memory *string `type:"string"`
1409
1410	// Network performance capacity of the Amazon Web Services instance.
1411	NetworkPerformance *string `type:"string"`
1412
1413	// The platform of the Amazon Web Services instance. The platform is the specific
1414	// combination of operating system, license model, and software on an instance.
1415	Platform *string `type:"string"`
1416
1417	// The Amazon Web Services Region of the instance.
1418	Region *string `type:"string"`
1419
1420	// The SKU of the product.
1421	Sku *string `type:"string"`
1422
1423	// The disk storage of the Amazon Web Services instance (Not EBS storage).
1424	Storage *string `type:"string"`
1425
1426	// Number of VCPU cores in the Amazon Web Services instance type.
1427	Vcpu *string `type:"string"`
1428}
1429
1430// String returns the string representation
1431func (s EC2ResourceDetails) String() string {
1432	return awsutil.Prettify(s)
1433}
1434
1435// GoString returns the string representation
1436func (s EC2ResourceDetails) GoString() string {
1437	return s.String()
1438}
1439
1440// SetHourlyOnDemandRate sets the HourlyOnDemandRate field's value.
1441func (s *EC2ResourceDetails) SetHourlyOnDemandRate(v string) *EC2ResourceDetails {
1442	s.HourlyOnDemandRate = &v
1443	return s
1444}
1445
1446// SetInstanceType sets the InstanceType field's value.
1447func (s *EC2ResourceDetails) SetInstanceType(v string) *EC2ResourceDetails {
1448	s.InstanceType = &v
1449	return s
1450}
1451
1452// SetMemory sets the Memory field's value.
1453func (s *EC2ResourceDetails) SetMemory(v string) *EC2ResourceDetails {
1454	s.Memory = &v
1455	return s
1456}
1457
1458// SetNetworkPerformance sets the NetworkPerformance field's value.
1459func (s *EC2ResourceDetails) SetNetworkPerformance(v string) *EC2ResourceDetails {
1460	s.NetworkPerformance = &v
1461	return s
1462}
1463
1464// SetPlatform sets the Platform field's value.
1465func (s *EC2ResourceDetails) SetPlatform(v string) *EC2ResourceDetails {
1466	s.Platform = &v
1467	return s
1468}
1469
1470// SetRegion sets the Region field's value.
1471func (s *EC2ResourceDetails) SetRegion(v string) *EC2ResourceDetails {
1472	s.Region = &v
1473	return s
1474}
1475
1476// SetSku sets the Sku field's value.
1477func (s *EC2ResourceDetails) SetSku(v string) *EC2ResourceDetails {
1478	s.Sku = &v
1479	return s
1480}
1481
1482// SetStorage sets the Storage field's value.
1483func (s *EC2ResourceDetails) SetStorage(v string) *EC2ResourceDetails {
1484	s.Storage = &v
1485	return s
1486}
1487
1488// SetVcpu sets the Vcpu field's value.
1489func (s *EC2ResourceDetails) SetVcpu(v string) *EC2ResourceDetails {
1490	s.Vcpu = &v
1491	return s
1492}
1493
1494// Utilization metrics of the instance.
1495type EC2ResourceUtilization struct {
1496	_ struct{} `type:"structure"`
1497
1498	// Maximum observed or expected CPU utilization of the instance.
1499	MaxCpuUtilizationPercentage *string `type:"string"`
1500
1501	// Maximum observed or expected memory utilization of the instance.
1502	MaxMemoryUtilizationPercentage *string `type:"string"`
1503
1504	// Maximum observed or expected storage utilization of the instance (does not
1505	// measure EBS storage).
1506	MaxStorageUtilizationPercentage *string `type:"string"`
1507}
1508
1509// String returns the string representation
1510func (s EC2ResourceUtilization) String() string {
1511	return awsutil.Prettify(s)
1512}
1513
1514// GoString returns the string representation
1515func (s EC2ResourceUtilization) GoString() string {
1516	return s.String()
1517}
1518
1519// SetMaxCpuUtilizationPercentage sets the MaxCpuUtilizationPercentage field's value.
1520func (s *EC2ResourceUtilization) SetMaxCpuUtilizationPercentage(v string) *EC2ResourceUtilization {
1521	s.MaxCpuUtilizationPercentage = &v
1522	return s
1523}
1524
1525// SetMaxMemoryUtilizationPercentage sets the MaxMemoryUtilizationPercentage field's value.
1526func (s *EC2ResourceUtilization) SetMaxMemoryUtilizationPercentage(v string) *EC2ResourceUtilization {
1527	s.MaxMemoryUtilizationPercentage = &v
1528	return s
1529}
1530
1531// SetMaxStorageUtilizationPercentage sets the MaxStorageUtilizationPercentage field's value.
1532func (s *EC2ResourceUtilization) SetMaxStorageUtilizationPercentage(v string) *EC2ResourceUtilization {
1533	s.MaxStorageUtilizationPercentage = &v
1534	return s
1535}
1536
1537// The Amazon EC2 hardware specifications that you want AWS to provide recommendations
1538// for.
1539type EC2Specification struct {
1540	_ struct{} `type:"structure"`
1541
1542	// Whether you want a recommendation for standard or convertible reservations.
1543	OfferingClass *string `type:"string" enum:"OfferingClass"`
1544}
1545
1546// String returns the string representation
1547func (s EC2Specification) String() string {
1548	return awsutil.Prettify(s)
1549}
1550
1551// GoString returns the string representation
1552func (s EC2Specification) GoString() string {
1553	return s.String()
1554}
1555
1556// SetOfferingClass sets the OfferingClass field's value.
1557func (s *EC2Specification) SetOfferingClass(v string) *EC2Specification {
1558	s.OfferingClass = &v
1559	return s
1560}
1561
1562// Details about the Amazon ES instances that AWS recommends that you purchase.
1563type ESInstanceDetails struct {
1564	_ struct{} `type:"structure"`
1565
1566	// Whether the recommendation is for a current-generation instance.
1567	CurrentGeneration *bool `type:"boolean"`
1568
1569	// The class of instance that AWS recommends.
1570	InstanceClass *string `type:"string"`
1571
1572	// The size of instance that AWS recommends.
1573	InstanceSize *string `type:"string"`
1574
1575	// The AWS Region of the recommended reservation.
1576	Region *string `type:"string"`
1577
1578	// Whether the recommended reservation is size flexible.
1579	SizeFlexEligible *bool `type:"boolean"`
1580}
1581
1582// String returns the string representation
1583func (s ESInstanceDetails) String() string {
1584	return awsutil.Prettify(s)
1585}
1586
1587// GoString returns the string representation
1588func (s ESInstanceDetails) GoString() string {
1589	return s.String()
1590}
1591
1592// SetCurrentGeneration sets the CurrentGeneration field's value.
1593func (s *ESInstanceDetails) SetCurrentGeneration(v bool) *ESInstanceDetails {
1594	s.CurrentGeneration = &v
1595	return s
1596}
1597
1598// SetInstanceClass sets the InstanceClass field's value.
1599func (s *ESInstanceDetails) SetInstanceClass(v string) *ESInstanceDetails {
1600	s.InstanceClass = &v
1601	return s
1602}
1603
1604// SetInstanceSize sets the InstanceSize field's value.
1605func (s *ESInstanceDetails) SetInstanceSize(v string) *ESInstanceDetails {
1606	s.InstanceSize = &v
1607	return s
1608}
1609
1610// SetRegion sets the Region field's value.
1611func (s *ESInstanceDetails) SetRegion(v string) *ESInstanceDetails {
1612	s.Region = &v
1613	return s
1614}
1615
1616// SetSizeFlexEligible sets the SizeFlexEligible field's value.
1617func (s *ESInstanceDetails) SetSizeFlexEligible(v bool) *ESInstanceDetails {
1618	s.SizeFlexEligible = &v
1619	return s
1620}
1621
1622// Details about the Amazon ElastiCache instances that AWS recommends that you
1623// purchase.
1624type ElastiCacheInstanceDetails struct {
1625	_ struct{} `type:"structure"`
1626
1627	// Whether the recommendation is for a current generation instance.
1628	CurrentGeneration *bool `type:"boolean"`
1629
1630	// The instance family of the recommended reservation.
1631	Family *string `type:"string"`
1632
1633	// The type of node that AWS recommends.
1634	NodeType *string `type:"string"`
1635
1636	// The description of the recommended reservation.
1637	ProductDescription *string `type:"string"`
1638
1639	// The AWS Region of the recommended reservation.
1640	Region *string `type:"string"`
1641
1642	// Whether the recommended reservation is size flexible.
1643	SizeFlexEligible *bool `type:"boolean"`
1644}
1645
1646// String returns the string representation
1647func (s ElastiCacheInstanceDetails) String() string {
1648	return awsutil.Prettify(s)
1649}
1650
1651// GoString returns the string representation
1652func (s ElastiCacheInstanceDetails) GoString() string {
1653	return s.String()
1654}
1655
1656// SetCurrentGeneration sets the CurrentGeneration field's value.
1657func (s *ElastiCacheInstanceDetails) SetCurrentGeneration(v bool) *ElastiCacheInstanceDetails {
1658	s.CurrentGeneration = &v
1659	return s
1660}
1661
1662// SetFamily sets the Family field's value.
1663func (s *ElastiCacheInstanceDetails) SetFamily(v string) *ElastiCacheInstanceDetails {
1664	s.Family = &v
1665	return s
1666}
1667
1668// SetNodeType sets the NodeType field's value.
1669func (s *ElastiCacheInstanceDetails) SetNodeType(v string) *ElastiCacheInstanceDetails {
1670	s.NodeType = &v
1671	return s
1672}
1673
1674// SetProductDescription sets the ProductDescription field's value.
1675func (s *ElastiCacheInstanceDetails) SetProductDescription(v string) *ElastiCacheInstanceDetails {
1676	s.ProductDescription = &v
1677	return s
1678}
1679
1680// SetRegion sets the Region field's value.
1681func (s *ElastiCacheInstanceDetails) SetRegion(v string) *ElastiCacheInstanceDetails {
1682	s.Region = &v
1683	return s
1684}
1685
1686// SetSizeFlexEligible sets the SizeFlexEligible field's value.
1687func (s *ElastiCacheInstanceDetails) SetSizeFlexEligible(v bool) *ElastiCacheInstanceDetails {
1688	s.SizeFlexEligible = &v
1689	return s
1690}
1691
1692// Use Expression to filter by cost or by usage. There are two patterns:
1693//
1694//    * Simple dimension values - You can set the dimension name and values
1695//    for the filters that you plan to use. For example, you can filter for
1696//    REGION==us-east-1 OR REGION==us-west-1. The Expression for that looks
1697//    like this: { "Dimensions": { "Key": "REGION", "Values": [ "us-east-1",
1698//    “us-west-1” ] } } The list of dimension values are OR'd together to
1699//    retrieve cost or usage data. You can create Expression and DimensionValues
1700//    objects using either with* methods or set* methods in multiple lines.
1701//
1702//    * Compound dimension values with logical operations - You can use multiple
1703//    Expression types and the logical operators AND/OR/NOT to create a list
1704//    of one or more Expression objects. This allows you to filter on more advanced
1705//    options. For example, you can filter on ((REGION == us-east-1 OR REGION
1706//    == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
1707//    The Expression for that looks like this: { "And": [ {"Or": [ {"Dimensions":
1708//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
1709//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
1710//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
1711//    Expression can have only one operator, the service returns an error if
1712//    more than one is specified. The following example shows an Expression
1713//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
1714//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
1715//
1716// For GetRightsizingRecommendation action, a combination of OR and NOT is not
1717// supported. OR is not supported between different dimensions, or dimensions
1718// and tags. NOT operators aren't supported. Dimentions are also limited to
1719// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
1720type Expression struct {
1721	_ struct{} `type:"structure"`
1722
1723	// Return results that match both Dimension objects.
1724	And []*Expression `type:"list"`
1725
1726	// The specific Dimension to use for Expression.
1727	Dimensions *DimensionValues `type:"structure"`
1728
1729	// Return results that don't match a Dimension object.
1730	Not *Expression `type:"structure"`
1731
1732	// Return results that match either Dimension object.
1733	Or []*Expression `type:"list"`
1734
1735	// The specific Tag to use for Expression.
1736	Tags *TagValues `type:"structure"`
1737}
1738
1739// String returns the string representation
1740func (s Expression) String() string {
1741	return awsutil.Prettify(s)
1742}
1743
1744// GoString returns the string representation
1745func (s Expression) GoString() string {
1746	return s.String()
1747}
1748
1749// SetAnd sets the And field's value.
1750func (s *Expression) SetAnd(v []*Expression) *Expression {
1751	s.And = v
1752	return s
1753}
1754
1755// SetDimensions sets the Dimensions field's value.
1756func (s *Expression) SetDimensions(v *DimensionValues) *Expression {
1757	s.Dimensions = v
1758	return s
1759}
1760
1761// SetNot sets the Not field's value.
1762func (s *Expression) SetNot(v *Expression) *Expression {
1763	s.Not = v
1764	return s
1765}
1766
1767// SetOr sets the Or field's value.
1768func (s *Expression) SetOr(v []*Expression) *Expression {
1769	s.Or = v
1770	return s
1771}
1772
1773// SetTags sets the Tags field's value.
1774func (s *Expression) SetTags(v *TagValues) *Expression {
1775	s.Tags = v
1776	return s
1777}
1778
1779// The forecast created for your query.
1780type ForecastResult struct {
1781	_ struct{} `type:"structure"`
1782
1783	// The mean value of the forecast.
1784	MeanValue *string `type:"string"`
1785
1786	// The lower limit for the prediction interval.
1787	PredictionIntervalLowerBound *string `type:"string"`
1788
1789	// The upper limit for the prediction interval.
1790	PredictionIntervalUpperBound *string `type:"string"`
1791
1792	// The period of time that the forecast covers.
1793	TimePeriod *DateInterval `type:"structure"`
1794}
1795
1796// String returns the string representation
1797func (s ForecastResult) String() string {
1798	return awsutil.Prettify(s)
1799}
1800
1801// GoString returns the string representation
1802func (s ForecastResult) GoString() string {
1803	return s.String()
1804}
1805
1806// SetMeanValue sets the MeanValue field's value.
1807func (s *ForecastResult) SetMeanValue(v string) *ForecastResult {
1808	s.MeanValue = &v
1809	return s
1810}
1811
1812// SetPredictionIntervalLowerBound sets the PredictionIntervalLowerBound field's value.
1813func (s *ForecastResult) SetPredictionIntervalLowerBound(v string) *ForecastResult {
1814	s.PredictionIntervalLowerBound = &v
1815	return s
1816}
1817
1818// SetPredictionIntervalUpperBound sets the PredictionIntervalUpperBound field's value.
1819func (s *ForecastResult) SetPredictionIntervalUpperBound(v string) *ForecastResult {
1820	s.PredictionIntervalUpperBound = &v
1821	return s
1822}
1823
1824// SetTimePeriod sets the TimePeriod field's value.
1825func (s *ForecastResult) SetTimePeriod(v *DateInterval) *ForecastResult {
1826	s.TimePeriod = v
1827	return s
1828}
1829
1830type GetCostAndUsageInput struct {
1831	_ struct{} `type:"structure"`
1832
1833	// Filters AWS costs by different dimensions. For example, you can specify SERVICE
1834	// and LINKED_ACCOUNT and get the costs that are associated with that account's
1835	// usage of that service. You can nest Expression objects to define any combination
1836	// of dimension filters. For more information, see Expression (http://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html).
1837	Filter *Expression `type:"structure"`
1838
1839	// Sets the AWS cost granularity to MONTHLY or DAILY. If Granularity isn't set,
1840	// the response object doesn't include the Granularity, either MONTHLY or DAILY.
1841	//
1842	// The GetCostAndUsageRequest operation supports only DAILY and MONTHLY granularities.
1843	Granularity *string `type:"string" enum:"Granularity"`
1844
1845	// You can group AWS costs using up to two different groups, either dimensions,
1846	// tag keys, or both.
1847	//
1848	// When you group by tag key, you get all tag values, including empty strings.
1849	//
1850	// Valid values are AZ, INSTANCE_TYPE, LEGAL_ENTITY_NAME, LINKED_ACCOUNT, OPERATION,
1851	// PLATFORM, PURCHASE_TYPE, SERVICE, TAGS, TENANCY, and USAGE_TYPE.
1852	GroupBy []*GroupDefinition `type:"list"`
1853
1854	// Which metrics are returned in the query. For more information about blended
1855	// and unblended rates, see Why does the "blended" annotation appear on some
1856	// line items in my bill? (https://aws.amazon.com/premiumsupport/knowledge-center/blended-rates-intro/).
1857	//
1858	// Valid values are AmortizedCost, BlendedCost, NetAmortizedCost, NetUnblendedCost,
1859	// NormalizedUsageAmount, UnblendedCost, and UsageQuantity.
1860	//
1861	// If you return the UsageQuantity metric, the service aggregates all usage
1862	// numbers without taking into account the units. For example, if you aggregate
1863	// usageQuantity across all of Amazon EC2, the results aren't meaningful because
1864	// Amazon EC2 compute hours and data transfer are measured in different units
1865	// (for example, hours vs. GB). To get more meaningful UsageQuantity metrics,
1866	// filter by UsageType or UsageTypeGroups.
1867	//
1868	// Metrics is required for GetCostAndUsage requests.
1869	Metrics []*string `type:"list"`
1870
1871	// The token to retrieve the next set of results. AWS provides the token when
1872	// the response from a previous call has more results than the maximum page
1873	// size.
1874	NextPageToken *string `type:"string"`
1875
1876	// Sets the start and end dates for retrieving AWS costs. The start date is
1877	// inclusive, but the end date is exclusive. For example, if start is 2017-01-01
1878	// and end is 2017-05-01, then the cost and usage data is retrieved from 2017-01-01
1879	// up to and including 2017-04-30 but not including 2017-05-01.
1880	//
1881	// TimePeriod is a required field
1882	TimePeriod *DateInterval `type:"structure" required:"true"`
1883}
1884
1885// String returns the string representation
1886func (s GetCostAndUsageInput) String() string {
1887	return awsutil.Prettify(s)
1888}
1889
1890// GoString returns the string representation
1891func (s GetCostAndUsageInput) GoString() string {
1892	return s.String()
1893}
1894
1895// Validate inspects the fields of the type to determine if they are valid.
1896func (s *GetCostAndUsageInput) Validate() error {
1897	invalidParams := request.ErrInvalidParams{Context: "GetCostAndUsageInput"}
1898	if s.TimePeriod == nil {
1899		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
1900	}
1901	if s.TimePeriod != nil {
1902		if err := s.TimePeriod.Validate(); err != nil {
1903			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
1904		}
1905	}
1906
1907	if invalidParams.Len() > 0 {
1908		return invalidParams
1909	}
1910	return nil
1911}
1912
1913// SetFilter sets the Filter field's value.
1914func (s *GetCostAndUsageInput) SetFilter(v *Expression) *GetCostAndUsageInput {
1915	s.Filter = v
1916	return s
1917}
1918
1919// SetGranularity sets the Granularity field's value.
1920func (s *GetCostAndUsageInput) SetGranularity(v string) *GetCostAndUsageInput {
1921	s.Granularity = &v
1922	return s
1923}
1924
1925// SetGroupBy sets the GroupBy field's value.
1926func (s *GetCostAndUsageInput) SetGroupBy(v []*GroupDefinition) *GetCostAndUsageInput {
1927	s.GroupBy = v
1928	return s
1929}
1930
1931// SetMetrics sets the Metrics field's value.
1932func (s *GetCostAndUsageInput) SetMetrics(v []*string) *GetCostAndUsageInput {
1933	s.Metrics = v
1934	return s
1935}
1936
1937// SetNextPageToken sets the NextPageToken field's value.
1938func (s *GetCostAndUsageInput) SetNextPageToken(v string) *GetCostAndUsageInput {
1939	s.NextPageToken = &v
1940	return s
1941}
1942
1943// SetTimePeriod sets the TimePeriod field's value.
1944func (s *GetCostAndUsageInput) SetTimePeriod(v *DateInterval) *GetCostAndUsageInput {
1945	s.TimePeriod = v
1946	return s
1947}
1948
1949type GetCostAndUsageOutput struct {
1950	_ struct{} `type:"structure"`
1951
1952	// The groups that are specified by the Filter or GroupBy parameters in the
1953	// request.
1954	GroupDefinitions []*GroupDefinition `type:"list"`
1955
1956	// The token for the next set of retrievable results. AWS provides the token
1957	// when the response from a previous call has more results than the maximum
1958	// page size.
1959	NextPageToken *string `type:"string"`
1960
1961	// The time period that is covered by the results in the response.
1962	ResultsByTime []*ResultByTime `type:"list"`
1963}
1964
1965// String returns the string representation
1966func (s GetCostAndUsageOutput) String() string {
1967	return awsutil.Prettify(s)
1968}
1969
1970// GoString returns the string representation
1971func (s GetCostAndUsageOutput) GoString() string {
1972	return s.String()
1973}
1974
1975// SetGroupDefinitions sets the GroupDefinitions field's value.
1976func (s *GetCostAndUsageOutput) SetGroupDefinitions(v []*GroupDefinition) *GetCostAndUsageOutput {
1977	s.GroupDefinitions = v
1978	return s
1979}
1980
1981// SetNextPageToken sets the NextPageToken field's value.
1982func (s *GetCostAndUsageOutput) SetNextPageToken(v string) *GetCostAndUsageOutput {
1983	s.NextPageToken = &v
1984	return s
1985}
1986
1987// SetResultsByTime sets the ResultsByTime field's value.
1988func (s *GetCostAndUsageOutput) SetResultsByTime(v []*ResultByTime) *GetCostAndUsageOutput {
1989	s.ResultsByTime = v
1990	return s
1991}
1992
1993type GetCostForecastInput struct {
1994	_ struct{} `type:"structure"`
1995
1996	// The filters that you want to use to filter your forecast. Cost Explorer API
1997	// supports all of the Cost Explorer filters.
1998	Filter *Expression `type:"structure"`
1999
2000	// How granular you want the forecast to be. You can get 3 months of DAILY forecasts
2001	// or 12 months of MONTHLY forecasts.
2002	//
2003	// The GetCostForecast operation supports only DAILY and MONTHLY granularities.
2004	//
2005	// Granularity is a required field
2006	Granularity *string `type:"string" required:"true" enum:"Granularity"`
2007
2008	// Which metric Cost Explorer uses to create your forecast. For more information
2009	// about blended and unblended rates, see Why does the "blended" annotation
2010	// appear on some line items in my bill? (https://aws.amazon.com/premiumsupport/knowledge-center/blended-rates-intro/).
2011	//
2012	// Valid values for a GetCostForecast call are the following:
2013	//
2014	//    * AMORTIZED_COST
2015	//
2016	//    * BLENDED_COST
2017	//
2018	//    * NET_AMORTIZED_COST
2019	//
2020	//    * NET_UNBLENDED_COST
2021	//
2022	//    * UNBLENDED_COST
2023	//
2024	// Metric is a required field
2025	Metric *string `type:"string" required:"true" enum:"Metric"`
2026
2027	// Cost Explorer always returns the mean forecast as a single point. You can
2028	// request a prediction interval around the mean by specifying a confidence
2029	// level. The higher the confidence level, the more confident Cost Explorer
2030	// is about the actual value falling in the prediction interval. Higher confidence
2031	// levels result in wider prediction intervals.
2032	PredictionIntervalLevel *int64 `min:"51" type:"integer"`
2033
2034	// The period of time that you want the forecast to cover.
2035	//
2036	// TimePeriod is a required field
2037	TimePeriod *DateInterval `type:"structure" required:"true"`
2038}
2039
2040// String returns the string representation
2041func (s GetCostForecastInput) String() string {
2042	return awsutil.Prettify(s)
2043}
2044
2045// GoString returns the string representation
2046func (s GetCostForecastInput) GoString() string {
2047	return s.String()
2048}
2049
2050// Validate inspects the fields of the type to determine if they are valid.
2051func (s *GetCostForecastInput) Validate() error {
2052	invalidParams := request.ErrInvalidParams{Context: "GetCostForecastInput"}
2053	if s.Granularity == nil {
2054		invalidParams.Add(request.NewErrParamRequired("Granularity"))
2055	}
2056	if s.Metric == nil {
2057		invalidParams.Add(request.NewErrParamRequired("Metric"))
2058	}
2059	if s.PredictionIntervalLevel != nil && *s.PredictionIntervalLevel < 51 {
2060		invalidParams.Add(request.NewErrParamMinValue("PredictionIntervalLevel", 51))
2061	}
2062	if s.TimePeriod == nil {
2063		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
2064	}
2065	if s.TimePeriod != nil {
2066		if err := s.TimePeriod.Validate(); err != nil {
2067			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
2068		}
2069	}
2070
2071	if invalidParams.Len() > 0 {
2072		return invalidParams
2073	}
2074	return nil
2075}
2076
2077// SetFilter sets the Filter field's value.
2078func (s *GetCostForecastInput) SetFilter(v *Expression) *GetCostForecastInput {
2079	s.Filter = v
2080	return s
2081}
2082
2083// SetGranularity sets the Granularity field's value.
2084func (s *GetCostForecastInput) SetGranularity(v string) *GetCostForecastInput {
2085	s.Granularity = &v
2086	return s
2087}
2088
2089// SetMetric sets the Metric field's value.
2090func (s *GetCostForecastInput) SetMetric(v string) *GetCostForecastInput {
2091	s.Metric = &v
2092	return s
2093}
2094
2095// SetPredictionIntervalLevel sets the PredictionIntervalLevel field's value.
2096func (s *GetCostForecastInput) SetPredictionIntervalLevel(v int64) *GetCostForecastInput {
2097	s.PredictionIntervalLevel = &v
2098	return s
2099}
2100
2101// SetTimePeriod sets the TimePeriod field's value.
2102func (s *GetCostForecastInput) SetTimePeriod(v *DateInterval) *GetCostForecastInput {
2103	s.TimePeriod = v
2104	return s
2105}
2106
2107type GetCostForecastOutput struct {
2108	_ struct{} `type:"structure"`
2109
2110	// The forecasts for your query, in order. For DAILY forecasts, this is a list
2111	// of days. For MONTHLY forecasts, this is a list of months.
2112	ForecastResultsByTime []*ForecastResult `type:"list"`
2113
2114	// How much you are forecasted to spend over the forecast period, in USD.
2115	Total *MetricValue `type:"structure"`
2116}
2117
2118// String returns the string representation
2119func (s GetCostForecastOutput) String() string {
2120	return awsutil.Prettify(s)
2121}
2122
2123// GoString returns the string representation
2124func (s GetCostForecastOutput) GoString() string {
2125	return s.String()
2126}
2127
2128// SetForecastResultsByTime sets the ForecastResultsByTime field's value.
2129func (s *GetCostForecastOutput) SetForecastResultsByTime(v []*ForecastResult) *GetCostForecastOutput {
2130	s.ForecastResultsByTime = v
2131	return s
2132}
2133
2134// SetTotal sets the Total field's value.
2135func (s *GetCostForecastOutput) SetTotal(v *MetricValue) *GetCostForecastOutput {
2136	s.Total = v
2137	return s
2138}
2139
2140type GetDimensionValuesInput struct {
2141	_ struct{} `type:"structure"`
2142
2143	// The context for the call to GetDimensionValues. This can be RESERVATIONS
2144	// or COST_AND_USAGE. The default value is COST_AND_USAGE. If the context is
2145	// set to RESERVATIONS, the resulting dimension values can be used in the GetReservationUtilization
2146	// operation. If the context is set to COST_AND_USAGE, the resulting dimension
2147	// values can be used in the GetCostAndUsage operation.
2148	//
2149	// If you set the context to COST_AND_USAGE, you can use the following dimensions
2150	// for searching:
2151	//
2152	//    * AZ - The Availability Zone. An example is us-east-1a.
2153	//
2154	//    * DATABASE_ENGINE - The Amazon Relational Database Service database. Examples
2155	//    are Aurora or MySQL.
2156	//
2157	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
2158	//
2159	//    * LEGAL_ENTITY_NAME - The name of the organization that sells you AWS
2160	//    services, such as Amazon Web Services.
2161	//
2162	//    * LINKED_ACCOUNT - The description in the attribute map that includes
2163	//    the full name of the member account. The value field contains the AWS
2164	//    ID of the member account.
2165	//
2166	//    * OPERATING_SYSTEM - The operating system. Examples are Windows or Linux.
2167	//
2168	//    * OPERATION - The action performed. Examples include RunInstance and CreateBucket.
2169	//
2170	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
2171	//    Linux.
2172	//
2173	//    * PURCHASE_TYPE - The reservation type of the purchase to which this usage
2174	//    is related. Examples include On-Demand Instances and Standard Reserved
2175	//    Instances.
2176	//
2177	//    * SERVICE - The AWS service such as Amazon DynamoDB.
2178	//
2179	//    * USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes.
2180	//    The response for the GetDimensionValues operation includes a unit attribute.
2181	//    Examples include GB and Hrs.
2182	//
2183	//    * USAGE_TYPE_GROUP - The grouping of common usage types. An example is
2184	//    Amazon EC2: CloudWatch – Alarms. The response for this operation includes
2185	//    a unit attribute.
2186	//
2187	//    * RECORD_TYPE - The different types of charges such as RI fees, usage
2188	//    costs, tax refunds, and credits.
2189	//
2190	// If you set the context to RESERVATIONS, you can use the following dimensions
2191	// for searching:
2192	//
2193	//    * AZ - The Availability Zone. An example is us-east-1a.
2194	//
2195	//    * CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are
2196	//    Windows or Linux.
2197	//
2198	//    * DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service
2199	//    deployments. Valid values are SingleAZ and MultiAZ.
2200	//
2201	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
2202	//
2203	//    * LINKED_ACCOUNT - The description in the attribute map that includes
2204	//    the full name of the member account. The value field contains the AWS
2205	//    ID of the member account.
2206	//
2207	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
2208	//    Linux.
2209	//
2210	//    * REGION - The AWS Region.
2211	//
2212	//    * SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values
2213	//    are regional or a single Availability Zone.
2214	//
2215	//    * TAG (Coverage only) - The tags that are associated with a Reserved Instance
2216	//    (RI).
2217	//
2218	//    * TENANCY - The tenancy of a resource. Examples are shared or dedicated.
2219	Context *string `type:"string" enum:"Context"`
2220
2221	// The name of the dimension. Each Dimension is available for a different Context.
2222	// For more information, see Context.
2223	//
2224	// Dimension is a required field
2225	Dimension *string `type:"string" required:"true" enum:"Dimension"`
2226
2227	// The token to retrieve the next set of results. AWS provides the token when
2228	// the response from a previous call has more results than the maximum page
2229	// size.
2230	NextPageToken *string `type:"string"`
2231
2232	// The value that you want to search the filter values for.
2233	SearchString *string `type:"string"`
2234
2235	// The start and end dates for retrieving the dimension values. The start date
2236	// is inclusive, but the end date is exclusive. For example, if start is 2017-01-01
2237	// and end is 2017-05-01, then the cost and usage data is retrieved from 2017-01-01
2238	// up to and including 2017-04-30 but not including 2017-05-01.
2239	//
2240	// TimePeriod is a required field
2241	TimePeriod *DateInterval `type:"structure" required:"true"`
2242}
2243
2244// String returns the string representation
2245func (s GetDimensionValuesInput) String() string {
2246	return awsutil.Prettify(s)
2247}
2248
2249// GoString returns the string representation
2250func (s GetDimensionValuesInput) GoString() string {
2251	return s.String()
2252}
2253
2254// Validate inspects the fields of the type to determine if they are valid.
2255func (s *GetDimensionValuesInput) Validate() error {
2256	invalidParams := request.ErrInvalidParams{Context: "GetDimensionValuesInput"}
2257	if s.Dimension == nil {
2258		invalidParams.Add(request.NewErrParamRequired("Dimension"))
2259	}
2260	if s.TimePeriod == nil {
2261		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
2262	}
2263	if s.TimePeriod != nil {
2264		if err := s.TimePeriod.Validate(); err != nil {
2265			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
2266		}
2267	}
2268
2269	if invalidParams.Len() > 0 {
2270		return invalidParams
2271	}
2272	return nil
2273}
2274
2275// SetContext sets the Context field's value.
2276func (s *GetDimensionValuesInput) SetContext(v string) *GetDimensionValuesInput {
2277	s.Context = &v
2278	return s
2279}
2280
2281// SetDimension sets the Dimension field's value.
2282func (s *GetDimensionValuesInput) SetDimension(v string) *GetDimensionValuesInput {
2283	s.Dimension = &v
2284	return s
2285}
2286
2287// SetNextPageToken sets the NextPageToken field's value.
2288func (s *GetDimensionValuesInput) SetNextPageToken(v string) *GetDimensionValuesInput {
2289	s.NextPageToken = &v
2290	return s
2291}
2292
2293// SetSearchString sets the SearchString field's value.
2294func (s *GetDimensionValuesInput) SetSearchString(v string) *GetDimensionValuesInput {
2295	s.SearchString = &v
2296	return s
2297}
2298
2299// SetTimePeriod sets the TimePeriod field's value.
2300func (s *GetDimensionValuesInput) SetTimePeriod(v *DateInterval) *GetDimensionValuesInput {
2301	s.TimePeriod = v
2302	return s
2303}
2304
2305type GetDimensionValuesOutput struct {
2306	_ struct{} `type:"structure"`
2307
2308	// The filters that you used to filter your request. Some dimensions are available
2309	// only for a specific context.
2310	//
2311	// If you set the context to COST_AND_USAGE, you can use the following dimensions
2312	// for searching:
2313	//
2314	//    * AZ - The Availability Zone. An example is us-east-1a.
2315	//
2316	//    * DATABASE_ENGINE - The Amazon Relational Database Service database. Examples
2317	//    are Aurora or MySQL.
2318	//
2319	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
2320	//
2321	//    * LEGAL_ENTITY_NAME - The name of the organization that sells you AWS
2322	//    services, such as Amazon Web Services.
2323	//
2324	//    * LINKED_ACCOUNT - The description in the attribute map that includes
2325	//    the full name of the member account. The value field contains the AWS
2326	//    ID of the member account.
2327	//
2328	//    * OPERATING_SYSTEM - The operating system. Examples are Windows or Linux.
2329	//
2330	//    * OPERATION - The action performed. Examples include RunInstance and CreateBucket.
2331	//
2332	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
2333	//    Linux.
2334	//
2335	//    * PURCHASE_TYPE - The reservation type of the purchase to which this usage
2336	//    is related. Examples include On-Demand Instances and Standard Reserved
2337	//    Instances.
2338	//
2339	//    * SERVICE - The AWS service such as Amazon DynamoDB.
2340	//
2341	//    * USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes.
2342	//    The response for the GetDimensionValues operation includes a unit attribute.
2343	//    Examples include GB and Hrs.
2344	//
2345	//    * USAGE_TYPE_GROUP - The grouping of common usage types. An example is
2346	//    Amazon EC2: CloudWatch – Alarms. The response for this operation includes
2347	//    a unit attribute.
2348	//
2349	//    * RECORD_TYPE - The different types of charges such as RI fees, usage
2350	//    costs, tax refunds, and credits.
2351	//
2352	// If you set the context to RESERVATIONS, you can use the following dimensions
2353	// for searching:
2354	//
2355	//    * AZ - The Availability Zone. An example is us-east-1a.
2356	//
2357	//    * CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are
2358	//    Windows or Linux.
2359	//
2360	//    * DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service
2361	//    deployments. Valid values are SingleAZ and MultiAZ.
2362	//
2363	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
2364	//
2365	//    * LINKED_ACCOUNT - The description in the attribute map that includes
2366	//    the full name of the member account. The value field contains the AWS
2367	//    ID of the member account.
2368	//
2369	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
2370	//    Linux.
2371	//
2372	//    * REGION - The AWS Region.
2373	//
2374	//    * SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values
2375	//    are regional or a single Availability Zone.
2376	//
2377	//    * TAG (Coverage only) - The tags that are associated with a Reserved Instance
2378	//    (RI).
2379	//
2380	//    * TENANCY - The tenancy of a resource. Examples are shared or dedicated.
2381	//
2382	// DimensionValues is a required field
2383	DimensionValues []*DimensionValuesWithAttributes `type:"list" required:"true"`
2384
2385	// The token for the next set of retrievable results. AWS provides the token
2386	// when the response from a previous call has more results than the maximum
2387	// page size.
2388	NextPageToken *string `type:"string"`
2389
2390	// The number of results that AWS returned at one time.
2391	//
2392	// ReturnSize is a required field
2393	ReturnSize *int64 `type:"integer" required:"true"`
2394
2395	// The total number of search results.
2396	//
2397	// TotalSize is a required field
2398	TotalSize *int64 `type:"integer" required:"true"`
2399}
2400
2401// String returns the string representation
2402func (s GetDimensionValuesOutput) String() string {
2403	return awsutil.Prettify(s)
2404}
2405
2406// GoString returns the string representation
2407func (s GetDimensionValuesOutput) GoString() string {
2408	return s.String()
2409}
2410
2411// SetDimensionValues sets the DimensionValues field's value.
2412func (s *GetDimensionValuesOutput) SetDimensionValues(v []*DimensionValuesWithAttributes) *GetDimensionValuesOutput {
2413	s.DimensionValues = v
2414	return s
2415}
2416
2417// SetNextPageToken sets the NextPageToken field's value.
2418func (s *GetDimensionValuesOutput) SetNextPageToken(v string) *GetDimensionValuesOutput {
2419	s.NextPageToken = &v
2420	return s
2421}
2422
2423// SetReturnSize sets the ReturnSize field's value.
2424func (s *GetDimensionValuesOutput) SetReturnSize(v int64) *GetDimensionValuesOutput {
2425	s.ReturnSize = &v
2426	return s
2427}
2428
2429// SetTotalSize sets the TotalSize field's value.
2430func (s *GetDimensionValuesOutput) SetTotalSize(v int64) *GetDimensionValuesOutput {
2431	s.TotalSize = &v
2432	return s
2433}
2434
2435// You can use the following request parameters to query for how much of your
2436// instance usage a reservation covered.
2437type GetReservationCoverageInput struct {
2438	_ struct{} `type:"structure"`
2439
2440	// Filters utilization data by dimensions. You can filter by the following dimensions:
2441	//
2442	//    * AZ
2443	//
2444	//    * CACHE_ENGINE
2445	//
2446	//    * DATABASE_ENGINE
2447	//
2448	//    * DEPLOYMENT_OPTION
2449	//
2450	//    * INSTANCE_TYPE
2451	//
2452	//    * LINKED_ACCOUNT
2453	//
2454	//    * OPERATING_SYSTEM
2455	//
2456	//    * PLATFORM
2457	//
2458	//    * REGION
2459	//
2460	//    * SERVICE
2461	//
2462	//    * TAG
2463	//
2464	//    * TENANCY
2465	//
2466	// GetReservationCoverage uses the same Expression (http://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
2467	// object as the other operations, but only AND is supported among each dimension.
2468	// You can nest only one level deep. If there are multiple values for a dimension,
2469	// they are OR'd together.
2470	//
2471	// If you don't provide a SERVICE filter, Cost Explorer defaults to EC2.
2472	Filter *Expression `type:"structure"`
2473
2474	// The granularity of the AWS cost data for the reservation. Valid values are
2475	// MONTHLY and DAILY.
2476	//
2477	// If GroupBy is set, Granularity can't be set. If Granularity isn't set, the
2478	// response object doesn't include Granularity, either MONTHLY or DAILY.
2479	//
2480	// The GetReservationCoverage operation supports only DAILY and MONTHLY granularities.
2481	Granularity *string `type:"string" enum:"Granularity"`
2482
2483	// You can group the data by the following attributes:
2484	//
2485	//    * AZ
2486	//
2487	//    * CACHE_ENGINE
2488	//
2489	//    * DATABASE_ENGINE
2490	//
2491	//    * DEPLOYMENT_OPTION
2492	//
2493	//    * INSTANCE_TYPE
2494	//
2495	//    * LINKED_ACCOUNT
2496	//
2497	//    * OPERATING_SYSTEM
2498	//
2499	//    * PLATFORM
2500	//
2501	//    * REGION
2502	//
2503	//    * TENANCY
2504	GroupBy []*GroupDefinition `type:"list"`
2505
2506	// The measurement that you want your reservation coverage reported in.
2507	//
2508	// Valid values are Hour, Unit, and Cost. You can use multiple values in a request.
2509	Metrics []*string `type:"list"`
2510
2511	// The token to retrieve the next set of results. AWS provides the token when
2512	// the response from a previous call has more results than the maximum page
2513	// size.
2514	NextPageToken *string `type:"string"`
2515
2516	// The start and end dates of the period that you want to retrieve data about
2517	// reservation coverage for. You can retrieve data for a maximum of 13 months:
2518	// the last 12 months and the current month. The start date is inclusive, but
2519	// the end date is exclusive. For example, if start is 2017-01-01 and end is
2520	// 2017-05-01, then the cost and usage data is retrieved from 2017-01-01 up
2521	// to and including 2017-04-30 but not including 2017-05-01.
2522	//
2523	// TimePeriod is a required field
2524	TimePeriod *DateInterval `type:"structure" required:"true"`
2525}
2526
2527// String returns the string representation
2528func (s GetReservationCoverageInput) String() string {
2529	return awsutil.Prettify(s)
2530}
2531
2532// GoString returns the string representation
2533func (s GetReservationCoverageInput) GoString() string {
2534	return s.String()
2535}
2536
2537// Validate inspects the fields of the type to determine if they are valid.
2538func (s *GetReservationCoverageInput) Validate() error {
2539	invalidParams := request.ErrInvalidParams{Context: "GetReservationCoverageInput"}
2540	if s.TimePeriod == nil {
2541		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
2542	}
2543	if s.TimePeriod != nil {
2544		if err := s.TimePeriod.Validate(); err != nil {
2545			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
2546		}
2547	}
2548
2549	if invalidParams.Len() > 0 {
2550		return invalidParams
2551	}
2552	return nil
2553}
2554
2555// SetFilter sets the Filter field's value.
2556func (s *GetReservationCoverageInput) SetFilter(v *Expression) *GetReservationCoverageInput {
2557	s.Filter = v
2558	return s
2559}
2560
2561// SetGranularity sets the Granularity field's value.
2562func (s *GetReservationCoverageInput) SetGranularity(v string) *GetReservationCoverageInput {
2563	s.Granularity = &v
2564	return s
2565}
2566
2567// SetGroupBy sets the GroupBy field's value.
2568func (s *GetReservationCoverageInput) SetGroupBy(v []*GroupDefinition) *GetReservationCoverageInput {
2569	s.GroupBy = v
2570	return s
2571}
2572
2573// SetMetrics sets the Metrics field's value.
2574func (s *GetReservationCoverageInput) SetMetrics(v []*string) *GetReservationCoverageInput {
2575	s.Metrics = v
2576	return s
2577}
2578
2579// SetNextPageToken sets the NextPageToken field's value.
2580func (s *GetReservationCoverageInput) SetNextPageToken(v string) *GetReservationCoverageInput {
2581	s.NextPageToken = &v
2582	return s
2583}
2584
2585// SetTimePeriod sets the TimePeriod field's value.
2586func (s *GetReservationCoverageInput) SetTimePeriod(v *DateInterval) *GetReservationCoverageInput {
2587	s.TimePeriod = v
2588	return s
2589}
2590
2591type GetReservationCoverageOutput struct {
2592	_ struct{} `type:"structure"`
2593
2594	// The amount of time that your reservations covered.
2595	//
2596	// CoveragesByTime is a required field
2597	CoveragesByTime []*CoverageByTime `type:"list" required:"true"`
2598
2599	// The token for the next set of retrievable results. AWS provides the token
2600	// when the response from a previous call has more results than the maximum
2601	// page size.
2602	NextPageToken *string `type:"string"`
2603
2604	// The total amount of instance usage that a reservation covered.
2605	Total *Coverage `type:"structure"`
2606}
2607
2608// String returns the string representation
2609func (s GetReservationCoverageOutput) String() string {
2610	return awsutil.Prettify(s)
2611}
2612
2613// GoString returns the string representation
2614func (s GetReservationCoverageOutput) GoString() string {
2615	return s.String()
2616}
2617
2618// SetCoveragesByTime sets the CoveragesByTime field's value.
2619func (s *GetReservationCoverageOutput) SetCoveragesByTime(v []*CoverageByTime) *GetReservationCoverageOutput {
2620	s.CoveragesByTime = v
2621	return s
2622}
2623
2624// SetNextPageToken sets the NextPageToken field's value.
2625func (s *GetReservationCoverageOutput) SetNextPageToken(v string) *GetReservationCoverageOutput {
2626	s.NextPageToken = &v
2627	return s
2628}
2629
2630// SetTotal sets the Total field's value.
2631func (s *GetReservationCoverageOutput) SetTotal(v *Coverage) *GetReservationCoverageOutput {
2632	s.Total = v
2633	return s
2634}
2635
2636type GetReservationPurchaseRecommendationInput struct {
2637	_ struct{} `type:"structure"`
2638
2639	// The account ID that is associated with the recommendation.
2640	AccountId *string `type:"string"`
2641
2642	// The account scope that you want recommendations for. PAYER means that AWS
2643	// includes the master account and any member accounts when it calculates its
2644	// recommendations. LINKED means that AWS includes only member accounts when
2645	// it calculates its recommendations.
2646	//
2647	// Valid values are PAYER and LINKED.
2648	AccountScope *string `type:"string" enum:"AccountScope"`
2649
2650	// The number of previous days that you want AWS to consider when it calculates
2651	// your recommendations.
2652	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
2653
2654	// The pagination token that indicates the next set of results that you want
2655	// to retrieve.
2656	NextPageToken *string `type:"string"`
2657
2658	// The number of recommendations that you want returned in a single response
2659	// object.
2660	PageSize *int64 `type:"integer"`
2661
2662	// The reservation purchase option that you want recommendations for.
2663	PaymentOption *string `type:"string" enum:"PaymentOption"`
2664
2665	// The specific service that you want recommendations for.
2666	//
2667	// Service is a required field
2668	Service *string `type:"string" required:"true"`
2669
2670	// The hardware specifications for the service instances that you want recommendations
2671	// for, such as standard or convertible Amazon EC2 instances.
2672	ServiceSpecification *ServiceSpecification `type:"structure"`
2673
2674	// The reservation term that you want recommendations for.
2675	TermInYears *string `type:"string" enum:"TermInYears"`
2676}
2677
2678// String returns the string representation
2679func (s GetReservationPurchaseRecommendationInput) String() string {
2680	return awsutil.Prettify(s)
2681}
2682
2683// GoString returns the string representation
2684func (s GetReservationPurchaseRecommendationInput) GoString() string {
2685	return s.String()
2686}
2687
2688// Validate inspects the fields of the type to determine if they are valid.
2689func (s *GetReservationPurchaseRecommendationInput) Validate() error {
2690	invalidParams := request.ErrInvalidParams{Context: "GetReservationPurchaseRecommendationInput"}
2691	if s.Service == nil {
2692		invalidParams.Add(request.NewErrParamRequired("Service"))
2693	}
2694
2695	if invalidParams.Len() > 0 {
2696		return invalidParams
2697	}
2698	return nil
2699}
2700
2701// SetAccountId sets the AccountId field's value.
2702func (s *GetReservationPurchaseRecommendationInput) SetAccountId(v string) *GetReservationPurchaseRecommendationInput {
2703	s.AccountId = &v
2704	return s
2705}
2706
2707// SetAccountScope sets the AccountScope field's value.
2708func (s *GetReservationPurchaseRecommendationInput) SetAccountScope(v string) *GetReservationPurchaseRecommendationInput {
2709	s.AccountScope = &v
2710	return s
2711}
2712
2713// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
2714func (s *GetReservationPurchaseRecommendationInput) SetLookbackPeriodInDays(v string) *GetReservationPurchaseRecommendationInput {
2715	s.LookbackPeriodInDays = &v
2716	return s
2717}
2718
2719// SetNextPageToken sets the NextPageToken field's value.
2720func (s *GetReservationPurchaseRecommendationInput) SetNextPageToken(v string) *GetReservationPurchaseRecommendationInput {
2721	s.NextPageToken = &v
2722	return s
2723}
2724
2725// SetPageSize sets the PageSize field's value.
2726func (s *GetReservationPurchaseRecommendationInput) SetPageSize(v int64) *GetReservationPurchaseRecommendationInput {
2727	s.PageSize = &v
2728	return s
2729}
2730
2731// SetPaymentOption sets the PaymentOption field's value.
2732func (s *GetReservationPurchaseRecommendationInput) SetPaymentOption(v string) *GetReservationPurchaseRecommendationInput {
2733	s.PaymentOption = &v
2734	return s
2735}
2736
2737// SetService sets the Service field's value.
2738func (s *GetReservationPurchaseRecommendationInput) SetService(v string) *GetReservationPurchaseRecommendationInput {
2739	s.Service = &v
2740	return s
2741}
2742
2743// SetServiceSpecification sets the ServiceSpecification field's value.
2744func (s *GetReservationPurchaseRecommendationInput) SetServiceSpecification(v *ServiceSpecification) *GetReservationPurchaseRecommendationInput {
2745	s.ServiceSpecification = v
2746	return s
2747}
2748
2749// SetTermInYears sets the TermInYears field's value.
2750func (s *GetReservationPurchaseRecommendationInput) SetTermInYears(v string) *GetReservationPurchaseRecommendationInput {
2751	s.TermInYears = &v
2752	return s
2753}
2754
2755type GetReservationPurchaseRecommendationOutput struct {
2756	_ struct{} `type:"structure"`
2757
2758	// Information about this specific recommendation call, such as the time stamp
2759	// for when Cost Explorer generated this recommendation.
2760	Metadata *ReservationPurchaseRecommendationMetadata `type:"structure"`
2761
2762	// The pagination token for the next set of retrievable results.
2763	NextPageToken *string `type:"string"`
2764
2765	// Recommendations for reservations to purchase.
2766	Recommendations []*ReservationPurchaseRecommendation `type:"list"`
2767}
2768
2769// String returns the string representation
2770func (s GetReservationPurchaseRecommendationOutput) String() string {
2771	return awsutil.Prettify(s)
2772}
2773
2774// GoString returns the string representation
2775func (s GetReservationPurchaseRecommendationOutput) GoString() string {
2776	return s.String()
2777}
2778
2779// SetMetadata sets the Metadata field's value.
2780func (s *GetReservationPurchaseRecommendationOutput) SetMetadata(v *ReservationPurchaseRecommendationMetadata) *GetReservationPurchaseRecommendationOutput {
2781	s.Metadata = v
2782	return s
2783}
2784
2785// SetNextPageToken sets the NextPageToken field's value.
2786func (s *GetReservationPurchaseRecommendationOutput) SetNextPageToken(v string) *GetReservationPurchaseRecommendationOutput {
2787	s.NextPageToken = &v
2788	return s
2789}
2790
2791// SetRecommendations sets the Recommendations field's value.
2792func (s *GetReservationPurchaseRecommendationOutput) SetRecommendations(v []*ReservationPurchaseRecommendation) *GetReservationPurchaseRecommendationOutput {
2793	s.Recommendations = v
2794	return s
2795}
2796
2797type GetReservationUtilizationInput struct {
2798	_ struct{} `type:"structure"`
2799
2800	// Filters utilization data by dimensions. You can filter by the following dimensions:
2801	//
2802	//    * AZ
2803	//
2804	//    * CACHE_ENGINE
2805	//
2806	//    * DATABASE_ENGINE
2807	//
2808	//    * DEPLOYMENT_OPTION
2809	//
2810	//    * INSTANCE_TYPE
2811	//
2812	//    * LINKED_ACCOUNT
2813	//
2814	//    * OPERATING_SYSTEM
2815	//
2816	//    * PLATFORM
2817	//
2818	//    * REGION
2819	//
2820	//    * SERVICE
2821	//
2822	//    * SCOPE
2823	//
2824	//    * TENANCY
2825	//
2826	// GetReservationUtilization uses the same Expression (http://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
2827	// object as the other operations, but only AND is supported among each dimension,
2828	// and nesting is supported up to only one level deep. If there are multiple
2829	// values for a dimension, they are OR'd together.
2830	Filter *Expression `type:"structure"`
2831
2832	// If GroupBy is set, Granularity can't be set. If Granularity isn't set, the
2833	// response object doesn't include Granularity, either MONTHLY or DAILY. If
2834	// both GroupBy and Granularity aren't set, GetReservationUtilization defaults
2835	// to DAILY.
2836	//
2837	// The GetReservationUtilization operation supports only DAILY and MONTHLY granularities.
2838	Granularity *string `type:"string" enum:"Granularity"`
2839
2840	// Groups only by SUBSCRIPTION_ID. Metadata is included.
2841	GroupBy []*GroupDefinition `type:"list"`
2842
2843	// The token to retrieve the next set of results. AWS provides the token when
2844	// the response from a previous call has more results than the maximum page
2845	// size.
2846	NextPageToken *string `type:"string"`
2847
2848	// Sets the start and end dates for retrieving RI utilization. The start date
2849	// is inclusive, but the end date is exclusive. For example, if start is 2017-01-01
2850	// and end is 2017-05-01, then the cost and usage data is retrieved from 2017-01-01
2851	// up to and including 2017-04-30 but not including 2017-05-01.
2852	//
2853	// TimePeriod is a required field
2854	TimePeriod *DateInterval `type:"structure" required:"true"`
2855}
2856
2857// String returns the string representation
2858func (s GetReservationUtilizationInput) String() string {
2859	return awsutil.Prettify(s)
2860}
2861
2862// GoString returns the string representation
2863func (s GetReservationUtilizationInput) GoString() string {
2864	return s.String()
2865}
2866
2867// Validate inspects the fields of the type to determine if they are valid.
2868func (s *GetReservationUtilizationInput) Validate() error {
2869	invalidParams := request.ErrInvalidParams{Context: "GetReservationUtilizationInput"}
2870	if s.TimePeriod == nil {
2871		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
2872	}
2873	if s.TimePeriod != nil {
2874		if err := s.TimePeriod.Validate(); err != nil {
2875			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
2876		}
2877	}
2878
2879	if invalidParams.Len() > 0 {
2880		return invalidParams
2881	}
2882	return nil
2883}
2884
2885// SetFilter sets the Filter field's value.
2886func (s *GetReservationUtilizationInput) SetFilter(v *Expression) *GetReservationUtilizationInput {
2887	s.Filter = v
2888	return s
2889}
2890
2891// SetGranularity sets the Granularity field's value.
2892func (s *GetReservationUtilizationInput) SetGranularity(v string) *GetReservationUtilizationInput {
2893	s.Granularity = &v
2894	return s
2895}
2896
2897// SetGroupBy sets the GroupBy field's value.
2898func (s *GetReservationUtilizationInput) SetGroupBy(v []*GroupDefinition) *GetReservationUtilizationInput {
2899	s.GroupBy = v
2900	return s
2901}
2902
2903// SetNextPageToken sets the NextPageToken field's value.
2904func (s *GetReservationUtilizationInput) SetNextPageToken(v string) *GetReservationUtilizationInput {
2905	s.NextPageToken = &v
2906	return s
2907}
2908
2909// SetTimePeriod sets the TimePeriod field's value.
2910func (s *GetReservationUtilizationInput) SetTimePeriod(v *DateInterval) *GetReservationUtilizationInput {
2911	s.TimePeriod = v
2912	return s
2913}
2914
2915type GetReservationUtilizationOutput struct {
2916	_ struct{} `type:"structure"`
2917
2918	// The token for the next set of retrievable results. AWS provides the token
2919	// when the response from a previous call has more results than the maximum
2920	// page size.
2921	NextPageToken *string `type:"string"`
2922
2923	// The total amount of time that you used your RIs.
2924	Total *ReservationAggregates `type:"structure"`
2925
2926	// The amount of time that you used your RIs.
2927	//
2928	// UtilizationsByTime is a required field
2929	UtilizationsByTime []*UtilizationByTime `type:"list" required:"true"`
2930}
2931
2932// String returns the string representation
2933func (s GetReservationUtilizationOutput) String() string {
2934	return awsutil.Prettify(s)
2935}
2936
2937// GoString returns the string representation
2938func (s GetReservationUtilizationOutput) GoString() string {
2939	return s.String()
2940}
2941
2942// SetNextPageToken sets the NextPageToken field's value.
2943func (s *GetReservationUtilizationOutput) SetNextPageToken(v string) *GetReservationUtilizationOutput {
2944	s.NextPageToken = &v
2945	return s
2946}
2947
2948// SetTotal sets the Total field's value.
2949func (s *GetReservationUtilizationOutput) SetTotal(v *ReservationAggregates) *GetReservationUtilizationOutput {
2950	s.Total = v
2951	return s
2952}
2953
2954// SetUtilizationsByTime sets the UtilizationsByTime field's value.
2955func (s *GetReservationUtilizationOutput) SetUtilizationsByTime(v []*UtilizationByTime) *GetReservationUtilizationOutput {
2956	s.UtilizationsByTime = v
2957	return s
2958}
2959
2960type GetRightsizingRecommendationInput struct {
2961	_ struct{} `type:"structure"`
2962
2963	// Use Expression to filter by cost or by usage. There are two patterns:
2964	//
2965	//    * Simple dimension values - You can set the dimension name and values
2966	//    for the filters that you plan to use. For example, you can filter for
2967	//    REGION==us-east-1 OR REGION==us-west-1. The Expression for that looks
2968	//    like this: { "Dimensions": { "Key": "REGION", "Values": [ "us-east-1",
2969	//    “us-west-1” ] } } The list of dimension values are OR'd together to
2970	//    retrieve cost or usage data. You can create Expression and DimensionValues
2971	//    objects using either with* methods or set* methods in multiple lines.
2972	//
2973	//    * Compound dimension values with logical operations - You can use multiple
2974	//    Expression types and the logical operators AND/OR/NOT to create a list
2975	//    of one or more Expression objects. This allows you to filter on more advanced
2976	//    options. For example, you can filter on ((REGION == us-east-1 OR REGION
2977	//    == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
2978	//    The Expression for that looks like this: { "And": [ {"Or": [ {"Dimensions":
2979	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
2980	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
2981	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
2982	//    Expression can have only one operator, the service returns an error if
2983	//    more than one is specified. The following example shows an Expression
2984	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
2985	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
2986	//
2987	// For GetRightsizingRecommendation action, a combination of OR and NOT is not
2988	// supported. OR is not supported between different dimensions, or dimensions
2989	// and tags. NOT operators aren't supported. Dimentions are also limited to
2990	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
2991	Filter *Expression `type:"structure"`
2992
2993	// The pagination token that indicates the next set of results that you want
2994	// to retrieve.
2995	NextPageToken *string `type:"string"`
2996
2997	// The number of recommendations that you want returned in a single response
2998	// object.
2999	PageSize *int64 `type:"integer"`
3000
3001	// The specific service that you want recommendations for.
3002	//
3003	// Service is a required field
3004	Service *string `type:"string" required:"true"`
3005}
3006
3007// String returns the string representation
3008func (s GetRightsizingRecommendationInput) String() string {
3009	return awsutil.Prettify(s)
3010}
3011
3012// GoString returns the string representation
3013func (s GetRightsizingRecommendationInput) GoString() string {
3014	return s.String()
3015}
3016
3017// Validate inspects the fields of the type to determine if they are valid.
3018func (s *GetRightsizingRecommendationInput) Validate() error {
3019	invalidParams := request.ErrInvalidParams{Context: "GetRightsizingRecommendationInput"}
3020	if s.Service == nil {
3021		invalidParams.Add(request.NewErrParamRequired("Service"))
3022	}
3023
3024	if invalidParams.Len() > 0 {
3025		return invalidParams
3026	}
3027	return nil
3028}
3029
3030// SetFilter sets the Filter field's value.
3031func (s *GetRightsizingRecommendationInput) SetFilter(v *Expression) *GetRightsizingRecommendationInput {
3032	s.Filter = v
3033	return s
3034}
3035
3036// SetNextPageToken sets the NextPageToken field's value.
3037func (s *GetRightsizingRecommendationInput) SetNextPageToken(v string) *GetRightsizingRecommendationInput {
3038	s.NextPageToken = &v
3039	return s
3040}
3041
3042// SetPageSize sets the PageSize field's value.
3043func (s *GetRightsizingRecommendationInput) SetPageSize(v int64) *GetRightsizingRecommendationInput {
3044	s.PageSize = &v
3045	return s
3046}
3047
3048// SetService sets the Service field's value.
3049func (s *GetRightsizingRecommendationInput) SetService(v string) *GetRightsizingRecommendationInput {
3050	s.Service = &v
3051	return s
3052}
3053
3054type GetRightsizingRecommendationOutput struct {
3055	_ struct{} `type:"structure"`
3056
3057	// Information regarding this specific recommendation set.
3058	Metadata *RightsizingRecommendationMetadata `type:"structure"`
3059
3060	// The token to retrieve the next set of results.
3061	NextPageToken *string `type:"string"`
3062
3063	// Recommendations to rightsize resources.
3064	RightsizingRecommendations []*RightsizingRecommendation `type:"list"`
3065
3066	// Summary of this recommendation set.
3067	Summary *RightsizingRecommendationSummary `type:"structure"`
3068}
3069
3070// String returns the string representation
3071func (s GetRightsizingRecommendationOutput) String() string {
3072	return awsutil.Prettify(s)
3073}
3074
3075// GoString returns the string representation
3076func (s GetRightsizingRecommendationOutput) GoString() string {
3077	return s.String()
3078}
3079
3080// SetMetadata sets the Metadata field's value.
3081func (s *GetRightsizingRecommendationOutput) SetMetadata(v *RightsizingRecommendationMetadata) *GetRightsizingRecommendationOutput {
3082	s.Metadata = v
3083	return s
3084}
3085
3086// SetNextPageToken sets the NextPageToken field's value.
3087func (s *GetRightsizingRecommendationOutput) SetNextPageToken(v string) *GetRightsizingRecommendationOutput {
3088	s.NextPageToken = &v
3089	return s
3090}
3091
3092// SetRightsizingRecommendations sets the RightsizingRecommendations field's value.
3093func (s *GetRightsizingRecommendationOutput) SetRightsizingRecommendations(v []*RightsizingRecommendation) *GetRightsizingRecommendationOutput {
3094	s.RightsizingRecommendations = v
3095	return s
3096}
3097
3098// SetSummary sets the Summary field's value.
3099func (s *GetRightsizingRecommendationOutput) SetSummary(v *RightsizingRecommendationSummary) *GetRightsizingRecommendationOutput {
3100	s.Summary = v
3101	return s
3102}
3103
3104type GetTagsInput struct {
3105	_ struct{} `type:"structure"`
3106
3107	// The token to retrieve the next set of results. AWS provides the token when
3108	// the response from a previous call has more results than the maximum page
3109	// size.
3110	NextPageToken *string `type:"string"`
3111
3112	// The value that you want to search for.
3113	SearchString *string `type:"string"`
3114
3115	// The key of the tag that you want to return values for.
3116	TagKey *string `type:"string"`
3117
3118	// The start and end dates for retrieving the dimension values. The start date
3119	// is inclusive, but the end date is exclusive. For example, if start is 2017-01-01
3120	// and end is 2017-05-01, then the cost and usage data is retrieved from 2017-01-01
3121	// up to and including 2017-04-30 but not including 2017-05-01.
3122	//
3123	// TimePeriod is a required field
3124	TimePeriod *DateInterval `type:"structure" required:"true"`
3125}
3126
3127// String returns the string representation
3128func (s GetTagsInput) String() string {
3129	return awsutil.Prettify(s)
3130}
3131
3132// GoString returns the string representation
3133func (s GetTagsInput) GoString() string {
3134	return s.String()
3135}
3136
3137// Validate inspects the fields of the type to determine if they are valid.
3138func (s *GetTagsInput) Validate() error {
3139	invalidParams := request.ErrInvalidParams{Context: "GetTagsInput"}
3140	if s.TimePeriod == nil {
3141		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
3142	}
3143	if s.TimePeriod != nil {
3144		if err := s.TimePeriod.Validate(); err != nil {
3145			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
3146		}
3147	}
3148
3149	if invalidParams.Len() > 0 {
3150		return invalidParams
3151	}
3152	return nil
3153}
3154
3155// SetNextPageToken sets the NextPageToken field's value.
3156func (s *GetTagsInput) SetNextPageToken(v string) *GetTagsInput {
3157	s.NextPageToken = &v
3158	return s
3159}
3160
3161// SetSearchString sets the SearchString field's value.
3162func (s *GetTagsInput) SetSearchString(v string) *GetTagsInput {
3163	s.SearchString = &v
3164	return s
3165}
3166
3167// SetTagKey sets the TagKey field's value.
3168func (s *GetTagsInput) SetTagKey(v string) *GetTagsInput {
3169	s.TagKey = &v
3170	return s
3171}
3172
3173// SetTimePeriod sets the TimePeriod field's value.
3174func (s *GetTagsInput) SetTimePeriod(v *DateInterval) *GetTagsInput {
3175	s.TimePeriod = v
3176	return s
3177}
3178
3179type GetTagsOutput struct {
3180	_ struct{} `type:"structure"`
3181
3182	// The token for the next set of retrievable results. AWS provides the token
3183	// when the response from a previous call has more results than the maximum
3184	// page size.
3185	NextPageToken *string `type:"string"`
3186
3187	// The number of query results that AWS returns at a time.
3188	//
3189	// ReturnSize is a required field
3190	ReturnSize *int64 `type:"integer" required:"true"`
3191
3192	// The tags that match your request.
3193	//
3194	// Tags is a required field
3195	Tags []*string `type:"list" required:"true"`
3196
3197	// The total number of query results.
3198	//
3199	// TotalSize is a required field
3200	TotalSize *int64 `type:"integer" required:"true"`
3201}
3202
3203// String returns the string representation
3204func (s GetTagsOutput) String() string {
3205	return awsutil.Prettify(s)
3206}
3207
3208// GoString returns the string representation
3209func (s GetTagsOutput) GoString() string {
3210	return s.String()
3211}
3212
3213// SetNextPageToken sets the NextPageToken field's value.
3214func (s *GetTagsOutput) SetNextPageToken(v string) *GetTagsOutput {
3215	s.NextPageToken = &v
3216	return s
3217}
3218
3219// SetReturnSize sets the ReturnSize field's value.
3220func (s *GetTagsOutput) SetReturnSize(v int64) *GetTagsOutput {
3221	s.ReturnSize = &v
3222	return s
3223}
3224
3225// SetTags sets the Tags field's value.
3226func (s *GetTagsOutput) SetTags(v []*string) *GetTagsOutput {
3227	s.Tags = v
3228	return s
3229}
3230
3231// SetTotalSize sets the TotalSize field's value.
3232func (s *GetTagsOutput) SetTotalSize(v int64) *GetTagsOutput {
3233	s.TotalSize = &v
3234	return s
3235}
3236
3237type GetUsageForecastInput struct {
3238	_ struct{} `type:"structure"`
3239
3240	// The filters that you want to use to filter your forecast. Cost Explorer API
3241	// supports all of the Cost Explorer filters.
3242	Filter *Expression `type:"structure"`
3243
3244	// How granular you want the forecast to be. You can get 3 months of DAILY forecasts
3245	// or 12 months of MONTHLY forecasts.
3246	//
3247	// The GetUsageForecast operation supports only DAILY and MONTHLY granularities.
3248	//
3249	// Granularity is a required field
3250	Granularity *string `type:"string" required:"true" enum:"Granularity"`
3251
3252	// Which metric Cost Explorer uses to create your forecast.
3253	//
3254	// Valid values for a GetUsageForecast call are the following:
3255	//
3256	//    * USAGE_QUANTITY
3257	//
3258	//    * NORMALIZED_USAGE_AMOUNT
3259	//
3260	// Metric is a required field
3261	Metric *string `type:"string" required:"true" enum:"Metric"`
3262
3263	// Cost Explorer always returns the mean forecast as a single point. You can
3264	// request a prediction interval around the mean by specifying a confidence
3265	// level. The higher the confidence level, the more confident Cost Explorer
3266	// is about the actual value falling in the prediction interval. Higher confidence
3267	// levels result in wider prediction intervals.
3268	PredictionIntervalLevel *int64 `min:"51" type:"integer"`
3269
3270	// The start and end dates of the period that you want to retrieve usage forecast
3271	// for. The start date is inclusive, but the end date is exclusive. For example,
3272	// if start is 2017-01-01 and end is 2017-05-01, then the cost and usage data
3273	// is retrieved from 2017-01-01 up to and including 2017-04-30 but not including
3274	// 2017-05-01.
3275	//
3276	// TimePeriod is a required field
3277	TimePeriod *DateInterval `type:"structure" required:"true"`
3278}
3279
3280// String returns the string representation
3281func (s GetUsageForecastInput) String() string {
3282	return awsutil.Prettify(s)
3283}
3284
3285// GoString returns the string representation
3286func (s GetUsageForecastInput) GoString() string {
3287	return s.String()
3288}
3289
3290// Validate inspects the fields of the type to determine if they are valid.
3291func (s *GetUsageForecastInput) Validate() error {
3292	invalidParams := request.ErrInvalidParams{Context: "GetUsageForecastInput"}
3293	if s.Granularity == nil {
3294		invalidParams.Add(request.NewErrParamRequired("Granularity"))
3295	}
3296	if s.Metric == nil {
3297		invalidParams.Add(request.NewErrParamRequired("Metric"))
3298	}
3299	if s.PredictionIntervalLevel != nil && *s.PredictionIntervalLevel < 51 {
3300		invalidParams.Add(request.NewErrParamMinValue("PredictionIntervalLevel", 51))
3301	}
3302	if s.TimePeriod == nil {
3303		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
3304	}
3305	if s.TimePeriod != nil {
3306		if err := s.TimePeriod.Validate(); err != nil {
3307			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
3308		}
3309	}
3310
3311	if invalidParams.Len() > 0 {
3312		return invalidParams
3313	}
3314	return nil
3315}
3316
3317// SetFilter sets the Filter field's value.
3318func (s *GetUsageForecastInput) SetFilter(v *Expression) *GetUsageForecastInput {
3319	s.Filter = v
3320	return s
3321}
3322
3323// SetGranularity sets the Granularity field's value.
3324func (s *GetUsageForecastInput) SetGranularity(v string) *GetUsageForecastInput {
3325	s.Granularity = &v
3326	return s
3327}
3328
3329// SetMetric sets the Metric field's value.
3330func (s *GetUsageForecastInput) SetMetric(v string) *GetUsageForecastInput {
3331	s.Metric = &v
3332	return s
3333}
3334
3335// SetPredictionIntervalLevel sets the PredictionIntervalLevel field's value.
3336func (s *GetUsageForecastInput) SetPredictionIntervalLevel(v int64) *GetUsageForecastInput {
3337	s.PredictionIntervalLevel = &v
3338	return s
3339}
3340
3341// SetTimePeriod sets the TimePeriod field's value.
3342func (s *GetUsageForecastInput) SetTimePeriod(v *DateInterval) *GetUsageForecastInput {
3343	s.TimePeriod = v
3344	return s
3345}
3346
3347type GetUsageForecastOutput struct {
3348	_ struct{} `type:"structure"`
3349
3350	// The forecasts for your query, in order. For DAILY forecasts, this is a list
3351	// of days. For MONTHLY forecasts, this is a list of months.
3352	ForecastResultsByTime []*ForecastResult `type:"list"`
3353
3354	// How much you're forecasted to use over the forecast period.
3355	Total *MetricValue `type:"structure"`
3356}
3357
3358// String returns the string representation
3359func (s GetUsageForecastOutput) String() string {
3360	return awsutil.Prettify(s)
3361}
3362
3363// GoString returns the string representation
3364func (s GetUsageForecastOutput) GoString() string {
3365	return s.String()
3366}
3367
3368// SetForecastResultsByTime sets the ForecastResultsByTime field's value.
3369func (s *GetUsageForecastOutput) SetForecastResultsByTime(v []*ForecastResult) *GetUsageForecastOutput {
3370	s.ForecastResultsByTime = v
3371	return s
3372}
3373
3374// SetTotal sets the Total field's value.
3375func (s *GetUsageForecastOutput) SetTotal(v *MetricValue) *GetUsageForecastOutput {
3376	s.Total = v
3377	return s
3378}
3379
3380// One level of grouped data in the results.
3381type Group struct {
3382	_ struct{} `type:"structure"`
3383
3384	// The keys that are included in this group.
3385	Keys []*string `type:"list"`
3386
3387	// The metrics that are included in this group.
3388	Metrics map[string]*MetricValue `type:"map"`
3389}
3390
3391// String returns the string representation
3392func (s Group) String() string {
3393	return awsutil.Prettify(s)
3394}
3395
3396// GoString returns the string representation
3397func (s Group) GoString() string {
3398	return s.String()
3399}
3400
3401// SetKeys sets the Keys field's value.
3402func (s *Group) SetKeys(v []*string) *Group {
3403	s.Keys = v
3404	return s
3405}
3406
3407// SetMetrics sets the Metrics field's value.
3408func (s *Group) SetMetrics(v map[string]*MetricValue) *Group {
3409	s.Metrics = v
3410	return s
3411}
3412
3413// Represents a group when you specify a group by criteria or in the response
3414// to a query with a specific grouping.
3415type GroupDefinition struct {
3416	_ struct{} `type:"structure"`
3417
3418	// The string that represents a key for a specified group.
3419	Key *string `type:"string"`
3420
3421	// The string that represents the type of group.
3422	Type *string `type:"string" enum:"GroupDefinitionType"`
3423}
3424
3425// String returns the string representation
3426func (s GroupDefinition) String() string {
3427	return awsutil.Prettify(s)
3428}
3429
3430// GoString returns the string representation
3431func (s GroupDefinition) GoString() string {
3432	return s.String()
3433}
3434
3435// SetKey sets the Key field's value.
3436func (s *GroupDefinition) SetKey(v string) *GroupDefinition {
3437	s.Key = &v
3438	return s
3439}
3440
3441// SetType sets the Type field's value.
3442func (s *GroupDefinition) SetType(v string) *GroupDefinition {
3443	s.Type = &v
3444	return s
3445}
3446
3447// Details about the instances that AWS recommends that you purchase.
3448type InstanceDetails struct {
3449	_ struct{} `type:"structure"`
3450
3451	// The Amazon EC2 instances that AWS recommends that you purchase.
3452	EC2InstanceDetails *EC2InstanceDetails `type:"structure"`
3453
3454	// The Amazon ES instances that AWS recommends that you purchase.
3455	ESInstanceDetails *ESInstanceDetails `type:"structure"`
3456
3457	// The ElastiCache instances that AWS recommends that you purchase.
3458	ElastiCacheInstanceDetails *ElastiCacheInstanceDetails `type:"structure"`
3459
3460	// The Amazon RDS instances that AWS recommends that you purchase.
3461	RDSInstanceDetails *RDSInstanceDetails `type:"structure"`
3462
3463	// The Amazon Redshift instances that AWS recommends that you purchase.
3464	RedshiftInstanceDetails *RedshiftInstanceDetails `type:"structure"`
3465}
3466
3467// String returns the string representation
3468func (s InstanceDetails) String() string {
3469	return awsutil.Prettify(s)
3470}
3471
3472// GoString returns the string representation
3473func (s InstanceDetails) GoString() string {
3474	return s.String()
3475}
3476
3477// SetEC2InstanceDetails sets the EC2InstanceDetails field's value.
3478func (s *InstanceDetails) SetEC2InstanceDetails(v *EC2InstanceDetails) *InstanceDetails {
3479	s.EC2InstanceDetails = v
3480	return s
3481}
3482
3483// SetESInstanceDetails sets the ESInstanceDetails field's value.
3484func (s *InstanceDetails) SetESInstanceDetails(v *ESInstanceDetails) *InstanceDetails {
3485	s.ESInstanceDetails = v
3486	return s
3487}
3488
3489// SetElastiCacheInstanceDetails sets the ElastiCacheInstanceDetails field's value.
3490func (s *InstanceDetails) SetElastiCacheInstanceDetails(v *ElastiCacheInstanceDetails) *InstanceDetails {
3491	s.ElastiCacheInstanceDetails = v
3492	return s
3493}
3494
3495// SetRDSInstanceDetails sets the RDSInstanceDetails field's value.
3496func (s *InstanceDetails) SetRDSInstanceDetails(v *RDSInstanceDetails) *InstanceDetails {
3497	s.RDSInstanceDetails = v
3498	return s
3499}
3500
3501// SetRedshiftInstanceDetails sets the RedshiftInstanceDetails field's value.
3502func (s *InstanceDetails) SetRedshiftInstanceDetails(v *RedshiftInstanceDetails) *InstanceDetails {
3503	s.RedshiftInstanceDetails = v
3504	return s
3505}
3506
3507// The aggregated value for a metric.
3508type MetricValue struct {
3509	_ struct{} `type:"structure"`
3510
3511	// The actual number that represents the metric.
3512	Amount *string `type:"string"`
3513
3514	// The unit that the metric is given in.
3515	Unit *string `type:"string"`
3516}
3517
3518// String returns the string representation
3519func (s MetricValue) String() string {
3520	return awsutil.Prettify(s)
3521}
3522
3523// GoString returns the string representation
3524func (s MetricValue) GoString() string {
3525	return s.String()
3526}
3527
3528// SetAmount sets the Amount field's value.
3529func (s *MetricValue) SetAmount(v string) *MetricValue {
3530	s.Amount = &v
3531	return s
3532}
3533
3534// SetUnit sets the Unit field's value.
3535func (s *MetricValue) SetUnit(v string) *MetricValue {
3536	s.Unit = &v
3537	return s
3538}
3539
3540// Details on the modification recommendation.
3541type ModifyRecommendationDetail struct {
3542	_ struct{} `type:"structure"`
3543
3544	// Identifies whether this instance type is the Amazon Web Services default
3545	// recommendation.
3546	TargetInstances []*TargetInstance `type:"list"`
3547}
3548
3549// String returns the string representation
3550func (s ModifyRecommendationDetail) String() string {
3551	return awsutil.Prettify(s)
3552}
3553
3554// GoString returns the string representation
3555func (s ModifyRecommendationDetail) GoString() string {
3556	return s.String()
3557}
3558
3559// SetTargetInstances sets the TargetInstances field's value.
3560func (s *ModifyRecommendationDetail) SetTargetInstances(v []*TargetInstance) *ModifyRecommendationDetail {
3561	s.TargetInstances = v
3562	return s
3563}
3564
3565// Details about the Amazon RDS instances that AWS recommends that you purchase.
3566type RDSInstanceDetails struct {
3567	_ struct{} `type:"structure"`
3568
3569	// Whether the recommendation is for a current-generation instance.
3570	CurrentGeneration *bool `type:"boolean"`
3571
3572	// The database edition that the recommended reservation supports.
3573	DatabaseEdition *string `type:"string"`
3574
3575	// The database engine that the recommended reservation supports.
3576	DatabaseEngine *string `type:"string"`
3577
3578	// Whether the recommendation is for a reservation in a single Availability
3579	// Zone or a reservation with a backup in a second Availability Zone.
3580	DeploymentOption *string `type:"string"`
3581
3582	// The instance family of the recommended reservation.
3583	Family *string `type:"string"`
3584
3585	// The type of instance that AWS recommends.
3586	InstanceType *string `type:"string"`
3587
3588	// The license model that the recommended reservation supports.
3589	LicenseModel *string `type:"string"`
3590
3591	// The AWS Region of the recommended reservation.
3592	Region *string `type:"string"`
3593
3594	// Whether the recommended reservation is size flexible.
3595	SizeFlexEligible *bool `type:"boolean"`
3596}
3597
3598// String returns the string representation
3599func (s RDSInstanceDetails) String() string {
3600	return awsutil.Prettify(s)
3601}
3602
3603// GoString returns the string representation
3604func (s RDSInstanceDetails) GoString() string {
3605	return s.String()
3606}
3607
3608// SetCurrentGeneration sets the CurrentGeneration field's value.
3609func (s *RDSInstanceDetails) SetCurrentGeneration(v bool) *RDSInstanceDetails {
3610	s.CurrentGeneration = &v
3611	return s
3612}
3613
3614// SetDatabaseEdition sets the DatabaseEdition field's value.
3615func (s *RDSInstanceDetails) SetDatabaseEdition(v string) *RDSInstanceDetails {
3616	s.DatabaseEdition = &v
3617	return s
3618}
3619
3620// SetDatabaseEngine sets the DatabaseEngine field's value.
3621func (s *RDSInstanceDetails) SetDatabaseEngine(v string) *RDSInstanceDetails {
3622	s.DatabaseEngine = &v
3623	return s
3624}
3625
3626// SetDeploymentOption sets the DeploymentOption field's value.
3627func (s *RDSInstanceDetails) SetDeploymentOption(v string) *RDSInstanceDetails {
3628	s.DeploymentOption = &v
3629	return s
3630}
3631
3632// SetFamily sets the Family field's value.
3633func (s *RDSInstanceDetails) SetFamily(v string) *RDSInstanceDetails {
3634	s.Family = &v
3635	return s
3636}
3637
3638// SetInstanceType sets the InstanceType field's value.
3639func (s *RDSInstanceDetails) SetInstanceType(v string) *RDSInstanceDetails {
3640	s.InstanceType = &v
3641	return s
3642}
3643
3644// SetLicenseModel sets the LicenseModel field's value.
3645func (s *RDSInstanceDetails) SetLicenseModel(v string) *RDSInstanceDetails {
3646	s.LicenseModel = &v
3647	return s
3648}
3649
3650// SetRegion sets the Region field's value.
3651func (s *RDSInstanceDetails) SetRegion(v string) *RDSInstanceDetails {
3652	s.Region = &v
3653	return s
3654}
3655
3656// SetSizeFlexEligible sets the SizeFlexEligible field's value.
3657func (s *RDSInstanceDetails) SetSizeFlexEligible(v bool) *RDSInstanceDetails {
3658	s.SizeFlexEligible = &v
3659	return s
3660}
3661
3662// Details about the Amazon Redshift instances that AWS recommends that you
3663// purchase.
3664type RedshiftInstanceDetails struct {
3665	_ struct{} `type:"structure"`
3666
3667	// Whether the recommendation is for a current-generation instance.
3668	CurrentGeneration *bool `type:"boolean"`
3669
3670	// The instance family of the recommended reservation.
3671	Family *string `type:"string"`
3672
3673	// The type of node that AWS recommends.
3674	NodeType *string `type:"string"`
3675
3676	// The AWS Region of the recommended reservation.
3677	Region *string `type:"string"`
3678
3679	// Whether the recommended reservation is size flexible.
3680	SizeFlexEligible *bool `type:"boolean"`
3681}
3682
3683// String returns the string representation
3684func (s RedshiftInstanceDetails) String() string {
3685	return awsutil.Prettify(s)
3686}
3687
3688// GoString returns the string representation
3689func (s RedshiftInstanceDetails) GoString() string {
3690	return s.String()
3691}
3692
3693// SetCurrentGeneration sets the CurrentGeneration field's value.
3694func (s *RedshiftInstanceDetails) SetCurrentGeneration(v bool) *RedshiftInstanceDetails {
3695	s.CurrentGeneration = &v
3696	return s
3697}
3698
3699// SetFamily sets the Family field's value.
3700func (s *RedshiftInstanceDetails) SetFamily(v string) *RedshiftInstanceDetails {
3701	s.Family = &v
3702	return s
3703}
3704
3705// SetNodeType sets the NodeType field's value.
3706func (s *RedshiftInstanceDetails) SetNodeType(v string) *RedshiftInstanceDetails {
3707	s.NodeType = &v
3708	return s
3709}
3710
3711// SetRegion sets the Region field's value.
3712func (s *RedshiftInstanceDetails) SetRegion(v string) *RedshiftInstanceDetails {
3713	s.Region = &v
3714	return s
3715}
3716
3717// SetSizeFlexEligible sets the SizeFlexEligible field's value.
3718func (s *RedshiftInstanceDetails) SetSizeFlexEligible(v bool) *RedshiftInstanceDetails {
3719	s.SizeFlexEligible = &v
3720	return s
3721}
3722
3723// The aggregated numbers for your reservation usage.
3724type ReservationAggregates struct {
3725	_ struct{} `type:"structure"`
3726
3727	// The monthly cost of your reservation, amortized over the reservation period.
3728	AmortizedRecurringFee *string `type:"string"`
3729
3730	// The upfront cost of your reservation, amortized over the reservation period.
3731	AmortizedUpfrontFee *string `type:"string"`
3732
3733	// How much you saved due to purchasing and utilizing reservation. AWS calculates
3734	// this by subtracting TotalAmortizedFee from OnDemandCostOfRIHoursUsed.
3735	NetRISavings *string `type:"string"`
3736
3737	// How much your reservation would cost if charged On-Demand rates.
3738	OnDemandCostOfRIHoursUsed *string `type:"string"`
3739
3740	// How many reservation hours that you purchased.
3741	PurchasedHours *string `type:"string"`
3742
3743	// How many Amazon EC2 reservation hours that you purchased, converted to normalized
3744	// units. Normalized units are available only for Amazon EC2 usage after November
3745	// 11, 2017.
3746	PurchasedUnits *string `type:"string"`
3747
3748	// The total number of reservation hours that you used.
3749	TotalActualHours *string `type:"string"`
3750
3751	// The total number of Amazon EC2 reservation hours that you used, converted
3752	// to normalized units. Normalized units are available only for Amazon EC2 usage
3753	// after November 11, 2017.
3754	TotalActualUnits *string `type:"string"`
3755
3756	// The total cost of your reservation, amortized over the reservation period.
3757	TotalAmortizedFee *string `type:"string"`
3758
3759	// How much you could save if you use your entire reservation.
3760	TotalPotentialRISavings *string `type:"string"`
3761
3762	// The number of reservation hours that you didn't use.
3763	UnusedHours *string `type:"string"`
3764
3765	// The number of Amazon EC2 reservation hours that you didn't use, converted
3766	// to normalized units. Normalized units are available only for Amazon EC2 usage
3767	// after November 11, 2017.
3768	UnusedUnits *string `type:"string"`
3769
3770	// The percentage of reservation time that you used.
3771	UtilizationPercentage *string `type:"string"`
3772
3773	// The percentage of Amazon EC2 reservation time that you used, converted to
3774	// normalized units. Normalized units are available only for Amazon EC2 usage
3775	// after November 11, 2017.
3776	UtilizationPercentageInUnits *string `type:"string"`
3777}
3778
3779// String returns the string representation
3780func (s ReservationAggregates) String() string {
3781	return awsutil.Prettify(s)
3782}
3783
3784// GoString returns the string representation
3785func (s ReservationAggregates) GoString() string {
3786	return s.String()
3787}
3788
3789// SetAmortizedRecurringFee sets the AmortizedRecurringFee field's value.
3790func (s *ReservationAggregates) SetAmortizedRecurringFee(v string) *ReservationAggregates {
3791	s.AmortizedRecurringFee = &v
3792	return s
3793}
3794
3795// SetAmortizedUpfrontFee sets the AmortizedUpfrontFee field's value.
3796func (s *ReservationAggregates) SetAmortizedUpfrontFee(v string) *ReservationAggregates {
3797	s.AmortizedUpfrontFee = &v
3798	return s
3799}
3800
3801// SetNetRISavings sets the NetRISavings field's value.
3802func (s *ReservationAggregates) SetNetRISavings(v string) *ReservationAggregates {
3803	s.NetRISavings = &v
3804	return s
3805}
3806
3807// SetOnDemandCostOfRIHoursUsed sets the OnDemandCostOfRIHoursUsed field's value.
3808func (s *ReservationAggregates) SetOnDemandCostOfRIHoursUsed(v string) *ReservationAggregates {
3809	s.OnDemandCostOfRIHoursUsed = &v
3810	return s
3811}
3812
3813// SetPurchasedHours sets the PurchasedHours field's value.
3814func (s *ReservationAggregates) SetPurchasedHours(v string) *ReservationAggregates {
3815	s.PurchasedHours = &v
3816	return s
3817}
3818
3819// SetPurchasedUnits sets the PurchasedUnits field's value.
3820func (s *ReservationAggregates) SetPurchasedUnits(v string) *ReservationAggregates {
3821	s.PurchasedUnits = &v
3822	return s
3823}
3824
3825// SetTotalActualHours sets the TotalActualHours field's value.
3826func (s *ReservationAggregates) SetTotalActualHours(v string) *ReservationAggregates {
3827	s.TotalActualHours = &v
3828	return s
3829}
3830
3831// SetTotalActualUnits sets the TotalActualUnits field's value.
3832func (s *ReservationAggregates) SetTotalActualUnits(v string) *ReservationAggregates {
3833	s.TotalActualUnits = &v
3834	return s
3835}
3836
3837// SetTotalAmortizedFee sets the TotalAmortizedFee field's value.
3838func (s *ReservationAggregates) SetTotalAmortizedFee(v string) *ReservationAggregates {
3839	s.TotalAmortizedFee = &v
3840	return s
3841}
3842
3843// SetTotalPotentialRISavings sets the TotalPotentialRISavings field's value.
3844func (s *ReservationAggregates) SetTotalPotentialRISavings(v string) *ReservationAggregates {
3845	s.TotalPotentialRISavings = &v
3846	return s
3847}
3848
3849// SetUnusedHours sets the UnusedHours field's value.
3850func (s *ReservationAggregates) SetUnusedHours(v string) *ReservationAggregates {
3851	s.UnusedHours = &v
3852	return s
3853}
3854
3855// SetUnusedUnits sets the UnusedUnits field's value.
3856func (s *ReservationAggregates) SetUnusedUnits(v string) *ReservationAggregates {
3857	s.UnusedUnits = &v
3858	return s
3859}
3860
3861// SetUtilizationPercentage sets the UtilizationPercentage field's value.
3862func (s *ReservationAggregates) SetUtilizationPercentage(v string) *ReservationAggregates {
3863	s.UtilizationPercentage = &v
3864	return s
3865}
3866
3867// SetUtilizationPercentageInUnits sets the UtilizationPercentageInUnits field's value.
3868func (s *ReservationAggregates) SetUtilizationPercentageInUnits(v string) *ReservationAggregates {
3869	s.UtilizationPercentageInUnits = &v
3870	return s
3871}
3872
3873// A group of reservations that share a set of attributes.
3874type ReservationCoverageGroup struct {
3875	_ struct{} `type:"structure"`
3876
3877	// The attributes for this group of reservations.
3878	Attributes map[string]*string `type:"map"`
3879
3880	// How much instance usage this group of reservations covered.
3881	Coverage *Coverage `type:"structure"`
3882}
3883
3884// String returns the string representation
3885func (s ReservationCoverageGroup) String() string {
3886	return awsutil.Prettify(s)
3887}
3888
3889// GoString returns the string representation
3890func (s ReservationCoverageGroup) GoString() string {
3891	return s.String()
3892}
3893
3894// SetAttributes sets the Attributes field's value.
3895func (s *ReservationCoverageGroup) SetAttributes(v map[string]*string) *ReservationCoverageGroup {
3896	s.Attributes = v
3897	return s
3898}
3899
3900// SetCoverage sets the Coverage field's value.
3901func (s *ReservationCoverageGroup) SetCoverage(v *Coverage) *ReservationCoverageGroup {
3902	s.Coverage = v
3903	return s
3904}
3905
3906// A specific reservation that AWS recommends for purchase.
3907type ReservationPurchaseRecommendation struct {
3908	_ struct{} `type:"structure"`
3909
3910	// The account scope that AWS recommends that you purchase this instance for.
3911	// For example, you can purchase this reservation for an entire organization
3912	// in AWS Organizations.
3913	AccountScope *string `type:"string" enum:"AccountScope"`
3914
3915	// How many days of previous usage that AWS considers when making this recommendation.
3916	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
3917
3918	// The payment option for the reservation. For example, AllUpfront or NoUpfront.
3919	PaymentOption *string `type:"string" enum:"PaymentOption"`
3920
3921	// Details about the recommended purchases.
3922	RecommendationDetails []*ReservationPurchaseRecommendationDetail `type:"list"`
3923
3924	// A summary about the recommended purchase.
3925	RecommendationSummary *ReservationPurchaseRecommendationSummary `type:"structure"`
3926
3927	// Hardware specifications for the service that you want recommendations for.
3928	ServiceSpecification *ServiceSpecification `type:"structure"`
3929
3930	// The term of the reservation that you want recommendations for, in years.
3931	TermInYears *string `type:"string" enum:"TermInYears"`
3932}
3933
3934// String returns the string representation
3935func (s ReservationPurchaseRecommendation) String() string {
3936	return awsutil.Prettify(s)
3937}
3938
3939// GoString returns the string representation
3940func (s ReservationPurchaseRecommendation) GoString() string {
3941	return s.String()
3942}
3943
3944// SetAccountScope sets the AccountScope field's value.
3945func (s *ReservationPurchaseRecommendation) SetAccountScope(v string) *ReservationPurchaseRecommendation {
3946	s.AccountScope = &v
3947	return s
3948}
3949
3950// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
3951func (s *ReservationPurchaseRecommendation) SetLookbackPeriodInDays(v string) *ReservationPurchaseRecommendation {
3952	s.LookbackPeriodInDays = &v
3953	return s
3954}
3955
3956// SetPaymentOption sets the PaymentOption field's value.
3957func (s *ReservationPurchaseRecommendation) SetPaymentOption(v string) *ReservationPurchaseRecommendation {
3958	s.PaymentOption = &v
3959	return s
3960}
3961
3962// SetRecommendationDetails sets the RecommendationDetails field's value.
3963func (s *ReservationPurchaseRecommendation) SetRecommendationDetails(v []*ReservationPurchaseRecommendationDetail) *ReservationPurchaseRecommendation {
3964	s.RecommendationDetails = v
3965	return s
3966}
3967
3968// SetRecommendationSummary sets the RecommendationSummary field's value.
3969func (s *ReservationPurchaseRecommendation) SetRecommendationSummary(v *ReservationPurchaseRecommendationSummary) *ReservationPurchaseRecommendation {
3970	s.RecommendationSummary = v
3971	return s
3972}
3973
3974// SetServiceSpecification sets the ServiceSpecification field's value.
3975func (s *ReservationPurchaseRecommendation) SetServiceSpecification(v *ServiceSpecification) *ReservationPurchaseRecommendation {
3976	s.ServiceSpecification = v
3977	return s
3978}
3979
3980// SetTermInYears sets the TermInYears field's value.
3981func (s *ReservationPurchaseRecommendation) SetTermInYears(v string) *ReservationPurchaseRecommendation {
3982	s.TermInYears = &v
3983	return s
3984}
3985
3986// Details about your recommended reservation purchase.
3987type ReservationPurchaseRecommendationDetail struct {
3988	_ struct{} `type:"structure"`
3989
3990	// The account that this RI recommendation is for.
3991	AccountId *string `type:"string"`
3992
3993	// The average number of normalized units that you used in an hour during the
3994	// historical period. AWS uses this to calculate your recommended reservation
3995	// purchases.
3996	AverageNormalizedUnitsUsedPerHour *string `type:"string"`
3997
3998	// The average number of instances that you used in an hour during the historical
3999	// period. AWS uses this to calculate your recommended reservation purchases.
4000	AverageNumberOfInstancesUsedPerHour *string `type:"string"`
4001
4002	// The average utilization of your instances. AWS uses this to calculate your
4003	// recommended reservation purchases.
4004	AverageUtilization *string `type:"string"`
4005
4006	// The currency code that AWS used to calculate the costs for this instance.
4007	CurrencyCode *string `type:"string"`
4008
4009	// How long AWS estimates that it takes for this instance to start saving you
4010	// money, in months.
4011	EstimatedBreakEvenInMonths *string `type:"string"`
4012
4013	// How much AWS estimates that you spend on On-Demand Instances in a month.
4014	EstimatedMonthlyOnDemandCost *string `type:"string"`
4015
4016	// How much AWS estimates that this specific recommendation could save you in
4017	// a month.
4018	EstimatedMonthlySavingsAmount *string `type:"string"`
4019
4020	// How much AWS estimates that this specific recommendation could save you in
4021	// a month, as a percentage of your overall costs.
4022	EstimatedMonthlySavingsPercentage *string `type:"string"`
4023
4024	// How much AWS estimates that you would have spent for all usage during the
4025	// specified historical period if you had had a reservation.
4026	EstimatedReservationCostForLookbackPeriod *string `type:"string"`
4027
4028	// Details about the instances that AWS recommends that you purchase.
4029	InstanceDetails *InstanceDetails `type:"structure"`
4030
4031	// The maximum number of normalized units that you used in an hour during the
4032	// historical period. AWS uses this to calculate your recommended reservation
4033	// purchases.
4034	MaximumNormalizedUnitsUsedPerHour *string `type:"string"`
4035
4036	// The maximum number of instances that you used in an hour during the historical
4037	// period. AWS uses this to calculate your recommended reservation purchases.
4038	MaximumNumberOfInstancesUsedPerHour *string `type:"string"`
4039
4040	// The minimum number of normalized units that you used in an hour during the
4041	// historical period. AWS uses this to calculate your recommended reservation
4042	// purchases.
4043	MinimumNormalizedUnitsUsedPerHour *string `type:"string"`
4044
4045	// The minimum number of instances that you used in an hour during the historical
4046	// period. AWS uses this to calculate your recommended reservation purchases.
4047	MinimumNumberOfInstancesUsedPerHour *string `type:"string"`
4048
4049	// The number of normalized units that AWS recommends that you purchase.
4050	RecommendedNormalizedUnitsToPurchase *string `type:"string"`
4051
4052	// The number of instances that AWS recommends that you purchase.
4053	RecommendedNumberOfInstancesToPurchase *string `type:"string"`
4054
4055	// How much purchasing this instance costs you on a monthly basis.
4056	RecurringStandardMonthlyCost *string `type:"string"`
4057
4058	// How much purchasing this instance costs you upfront.
4059	UpfrontCost *string `type:"string"`
4060}
4061
4062// String returns the string representation
4063func (s ReservationPurchaseRecommendationDetail) String() string {
4064	return awsutil.Prettify(s)
4065}
4066
4067// GoString returns the string representation
4068func (s ReservationPurchaseRecommendationDetail) GoString() string {
4069	return s.String()
4070}
4071
4072// SetAccountId sets the AccountId field's value.
4073func (s *ReservationPurchaseRecommendationDetail) SetAccountId(v string) *ReservationPurchaseRecommendationDetail {
4074	s.AccountId = &v
4075	return s
4076}
4077
4078// SetAverageNormalizedUnitsUsedPerHour sets the AverageNormalizedUnitsUsedPerHour field's value.
4079func (s *ReservationPurchaseRecommendationDetail) SetAverageNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
4080	s.AverageNormalizedUnitsUsedPerHour = &v
4081	return s
4082}
4083
4084// SetAverageNumberOfInstancesUsedPerHour sets the AverageNumberOfInstancesUsedPerHour field's value.
4085func (s *ReservationPurchaseRecommendationDetail) SetAverageNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
4086	s.AverageNumberOfInstancesUsedPerHour = &v
4087	return s
4088}
4089
4090// SetAverageUtilization sets the AverageUtilization field's value.
4091func (s *ReservationPurchaseRecommendationDetail) SetAverageUtilization(v string) *ReservationPurchaseRecommendationDetail {
4092	s.AverageUtilization = &v
4093	return s
4094}
4095
4096// SetCurrencyCode sets the CurrencyCode field's value.
4097func (s *ReservationPurchaseRecommendationDetail) SetCurrencyCode(v string) *ReservationPurchaseRecommendationDetail {
4098	s.CurrencyCode = &v
4099	return s
4100}
4101
4102// SetEstimatedBreakEvenInMonths sets the EstimatedBreakEvenInMonths field's value.
4103func (s *ReservationPurchaseRecommendationDetail) SetEstimatedBreakEvenInMonths(v string) *ReservationPurchaseRecommendationDetail {
4104	s.EstimatedBreakEvenInMonths = &v
4105	return s
4106}
4107
4108// SetEstimatedMonthlyOnDemandCost sets the EstimatedMonthlyOnDemandCost field's value.
4109func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlyOnDemandCost(v string) *ReservationPurchaseRecommendationDetail {
4110	s.EstimatedMonthlyOnDemandCost = &v
4111	return s
4112}
4113
4114// SetEstimatedMonthlySavingsAmount sets the EstimatedMonthlySavingsAmount field's value.
4115func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlySavingsAmount(v string) *ReservationPurchaseRecommendationDetail {
4116	s.EstimatedMonthlySavingsAmount = &v
4117	return s
4118}
4119
4120// SetEstimatedMonthlySavingsPercentage sets the EstimatedMonthlySavingsPercentage field's value.
4121func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlySavingsPercentage(v string) *ReservationPurchaseRecommendationDetail {
4122	s.EstimatedMonthlySavingsPercentage = &v
4123	return s
4124}
4125
4126// SetEstimatedReservationCostForLookbackPeriod sets the EstimatedReservationCostForLookbackPeriod field's value.
4127func (s *ReservationPurchaseRecommendationDetail) SetEstimatedReservationCostForLookbackPeriod(v string) *ReservationPurchaseRecommendationDetail {
4128	s.EstimatedReservationCostForLookbackPeriod = &v
4129	return s
4130}
4131
4132// SetInstanceDetails sets the InstanceDetails field's value.
4133func (s *ReservationPurchaseRecommendationDetail) SetInstanceDetails(v *InstanceDetails) *ReservationPurchaseRecommendationDetail {
4134	s.InstanceDetails = v
4135	return s
4136}
4137
4138// SetMaximumNormalizedUnitsUsedPerHour sets the MaximumNormalizedUnitsUsedPerHour field's value.
4139func (s *ReservationPurchaseRecommendationDetail) SetMaximumNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
4140	s.MaximumNormalizedUnitsUsedPerHour = &v
4141	return s
4142}
4143
4144// SetMaximumNumberOfInstancesUsedPerHour sets the MaximumNumberOfInstancesUsedPerHour field's value.
4145func (s *ReservationPurchaseRecommendationDetail) SetMaximumNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
4146	s.MaximumNumberOfInstancesUsedPerHour = &v
4147	return s
4148}
4149
4150// SetMinimumNormalizedUnitsUsedPerHour sets the MinimumNormalizedUnitsUsedPerHour field's value.
4151func (s *ReservationPurchaseRecommendationDetail) SetMinimumNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
4152	s.MinimumNormalizedUnitsUsedPerHour = &v
4153	return s
4154}
4155
4156// SetMinimumNumberOfInstancesUsedPerHour sets the MinimumNumberOfInstancesUsedPerHour field's value.
4157func (s *ReservationPurchaseRecommendationDetail) SetMinimumNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
4158	s.MinimumNumberOfInstancesUsedPerHour = &v
4159	return s
4160}
4161
4162// SetRecommendedNormalizedUnitsToPurchase sets the RecommendedNormalizedUnitsToPurchase field's value.
4163func (s *ReservationPurchaseRecommendationDetail) SetRecommendedNormalizedUnitsToPurchase(v string) *ReservationPurchaseRecommendationDetail {
4164	s.RecommendedNormalizedUnitsToPurchase = &v
4165	return s
4166}
4167
4168// SetRecommendedNumberOfInstancesToPurchase sets the RecommendedNumberOfInstancesToPurchase field's value.
4169func (s *ReservationPurchaseRecommendationDetail) SetRecommendedNumberOfInstancesToPurchase(v string) *ReservationPurchaseRecommendationDetail {
4170	s.RecommendedNumberOfInstancesToPurchase = &v
4171	return s
4172}
4173
4174// SetRecurringStandardMonthlyCost sets the RecurringStandardMonthlyCost field's value.
4175func (s *ReservationPurchaseRecommendationDetail) SetRecurringStandardMonthlyCost(v string) *ReservationPurchaseRecommendationDetail {
4176	s.RecurringStandardMonthlyCost = &v
4177	return s
4178}
4179
4180// SetUpfrontCost sets the UpfrontCost field's value.
4181func (s *ReservationPurchaseRecommendationDetail) SetUpfrontCost(v string) *ReservationPurchaseRecommendationDetail {
4182	s.UpfrontCost = &v
4183	return s
4184}
4185
4186// Information about this specific recommendation, such as the time stamp for
4187// when AWS made a specific recommendation.
4188type ReservationPurchaseRecommendationMetadata struct {
4189	_ struct{} `type:"structure"`
4190
4191	// The time stamp for when AWS made this recommendation.
4192	GenerationTimestamp *string `type:"string"`
4193
4194	// The ID for this specific recommendation.
4195	RecommendationId *string `type:"string"`
4196}
4197
4198// String returns the string representation
4199func (s ReservationPurchaseRecommendationMetadata) String() string {
4200	return awsutil.Prettify(s)
4201}
4202
4203// GoString returns the string representation
4204func (s ReservationPurchaseRecommendationMetadata) GoString() string {
4205	return s.String()
4206}
4207
4208// SetGenerationTimestamp sets the GenerationTimestamp field's value.
4209func (s *ReservationPurchaseRecommendationMetadata) SetGenerationTimestamp(v string) *ReservationPurchaseRecommendationMetadata {
4210	s.GenerationTimestamp = &v
4211	return s
4212}
4213
4214// SetRecommendationId sets the RecommendationId field's value.
4215func (s *ReservationPurchaseRecommendationMetadata) SetRecommendationId(v string) *ReservationPurchaseRecommendationMetadata {
4216	s.RecommendationId = &v
4217	return s
4218}
4219
4220// A summary about this recommendation, such as the currency code, the amount
4221// that AWS estimates that you could save, and the total amount of reservation
4222// to purchase.
4223type ReservationPurchaseRecommendationSummary struct {
4224	_ struct{} `type:"structure"`
4225
4226	// The currency code used for this recommendation.
4227	CurrencyCode *string `type:"string"`
4228
4229	// The total amount that AWS estimates that this recommendation could save you
4230	// in a month.
4231	TotalEstimatedMonthlySavingsAmount *string `type:"string"`
4232
4233	// The total amount that AWS estimates that this recommendation could save you
4234	// in a month, as a percentage of your costs.
4235	TotalEstimatedMonthlySavingsPercentage *string `type:"string"`
4236}
4237
4238// String returns the string representation
4239func (s ReservationPurchaseRecommendationSummary) String() string {
4240	return awsutil.Prettify(s)
4241}
4242
4243// GoString returns the string representation
4244func (s ReservationPurchaseRecommendationSummary) GoString() string {
4245	return s.String()
4246}
4247
4248// SetCurrencyCode sets the CurrencyCode field's value.
4249func (s *ReservationPurchaseRecommendationSummary) SetCurrencyCode(v string) *ReservationPurchaseRecommendationSummary {
4250	s.CurrencyCode = &v
4251	return s
4252}
4253
4254// SetTotalEstimatedMonthlySavingsAmount sets the TotalEstimatedMonthlySavingsAmount field's value.
4255func (s *ReservationPurchaseRecommendationSummary) SetTotalEstimatedMonthlySavingsAmount(v string) *ReservationPurchaseRecommendationSummary {
4256	s.TotalEstimatedMonthlySavingsAmount = &v
4257	return s
4258}
4259
4260// SetTotalEstimatedMonthlySavingsPercentage sets the TotalEstimatedMonthlySavingsPercentage field's value.
4261func (s *ReservationPurchaseRecommendationSummary) SetTotalEstimatedMonthlySavingsPercentage(v string) *ReservationPurchaseRecommendationSummary {
4262	s.TotalEstimatedMonthlySavingsPercentage = &v
4263	return s
4264}
4265
4266// A group of reservations that share a set of attributes.
4267type ReservationUtilizationGroup struct {
4268	_ struct{} `type:"structure"`
4269
4270	// The attributes for this group of reservations.
4271	Attributes map[string]*string `type:"map"`
4272
4273	// The key for a specific reservation attribute.
4274	Key *string `type:"string"`
4275
4276	// How much you used this group of reservations.
4277	Utilization *ReservationAggregates `type:"structure"`
4278
4279	// The value of a specific reservation attribute.
4280	Value *string `type:"string"`
4281}
4282
4283// String returns the string representation
4284func (s ReservationUtilizationGroup) String() string {
4285	return awsutil.Prettify(s)
4286}
4287
4288// GoString returns the string representation
4289func (s ReservationUtilizationGroup) GoString() string {
4290	return s.String()
4291}
4292
4293// SetAttributes sets the Attributes field's value.
4294func (s *ReservationUtilizationGroup) SetAttributes(v map[string]*string) *ReservationUtilizationGroup {
4295	s.Attributes = v
4296	return s
4297}
4298
4299// SetKey sets the Key field's value.
4300func (s *ReservationUtilizationGroup) SetKey(v string) *ReservationUtilizationGroup {
4301	s.Key = &v
4302	return s
4303}
4304
4305// SetUtilization sets the Utilization field's value.
4306func (s *ReservationUtilizationGroup) SetUtilization(v *ReservationAggregates) *ReservationUtilizationGroup {
4307	s.Utilization = v
4308	return s
4309}
4310
4311// SetValue sets the Value field's value.
4312func (s *ReservationUtilizationGroup) SetValue(v string) *ReservationUtilizationGroup {
4313	s.Value = &v
4314	return s
4315}
4316
4317// Details on the resource.
4318type ResourceDetails struct {
4319	_ struct{} `type:"structure"`
4320
4321	// Details on the Amazon EC2 resource.
4322	EC2ResourceDetails *EC2ResourceDetails `type:"structure"`
4323}
4324
4325// String returns the string representation
4326func (s ResourceDetails) String() string {
4327	return awsutil.Prettify(s)
4328}
4329
4330// GoString returns the string representation
4331func (s ResourceDetails) GoString() string {
4332	return s.String()
4333}
4334
4335// SetEC2ResourceDetails sets the EC2ResourceDetails field's value.
4336func (s *ResourceDetails) SetEC2ResourceDetails(v *EC2ResourceDetails) *ResourceDetails {
4337	s.EC2ResourceDetails = v
4338	return s
4339}
4340
4341// Resource utilization of current resource.
4342type ResourceUtilization struct {
4343	_ struct{} `type:"structure"`
4344
4345	// Utilization of current Amazon EC2 Instance
4346	EC2ResourceUtilization *EC2ResourceUtilization `type:"structure"`
4347}
4348
4349// String returns the string representation
4350func (s ResourceUtilization) String() string {
4351	return awsutil.Prettify(s)
4352}
4353
4354// GoString returns the string representation
4355func (s ResourceUtilization) GoString() string {
4356	return s.String()
4357}
4358
4359// SetEC2ResourceUtilization sets the EC2ResourceUtilization field's value.
4360func (s *ResourceUtilization) SetEC2ResourceUtilization(v *EC2ResourceUtilization) *ResourceUtilization {
4361	s.EC2ResourceUtilization = v
4362	return s
4363}
4364
4365// The result that is associated with a time period.
4366type ResultByTime struct {
4367	_ struct{} `type:"structure"`
4368
4369	// Whether the result is estimated.
4370	Estimated *bool `type:"boolean"`
4371
4372	// The groups that this time period includes.
4373	Groups []*Group `type:"list"`
4374
4375	// The time period that the result covers.
4376	TimePeriod *DateInterval `type:"structure"`
4377
4378	// The total amount of cost or usage accrued during the time period.
4379	Total map[string]*MetricValue `type:"map"`
4380}
4381
4382// String returns the string representation
4383func (s ResultByTime) String() string {
4384	return awsutil.Prettify(s)
4385}
4386
4387// GoString returns the string representation
4388func (s ResultByTime) GoString() string {
4389	return s.String()
4390}
4391
4392// SetEstimated sets the Estimated field's value.
4393func (s *ResultByTime) SetEstimated(v bool) *ResultByTime {
4394	s.Estimated = &v
4395	return s
4396}
4397
4398// SetGroups sets the Groups field's value.
4399func (s *ResultByTime) SetGroups(v []*Group) *ResultByTime {
4400	s.Groups = v
4401	return s
4402}
4403
4404// SetTimePeriod sets the TimePeriod field's value.
4405func (s *ResultByTime) SetTimePeriod(v *DateInterval) *ResultByTime {
4406	s.TimePeriod = v
4407	return s
4408}
4409
4410// SetTotal sets the Total field's value.
4411func (s *ResultByTime) SetTotal(v map[string]*MetricValue) *ResultByTime {
4412	s.Total = v
4413	return s
4414}
4415
4416// Recommendations to rightsize resources.
4417type RightsizingRecommendation struct {
4418	_ struct{} `type:"structure"`
4419
4420	// The account that this recommendation is for.
4421	AccountId *string `type:"string"`
4422
4423	// Context regarding the current instance.
4424	CurrentInstance *CurrentInstance `type:"structure"`
4425
4426	// Details for modification recommendations.
4427	ModifyRecommendationDetail *ModifyRecommendationDetail `type:"structure"`
4428
4429	// Recommendation to either terminate or modify the resource.
4430	RightsizingType *string `type:"string" enum:"RightsizingType"`
4431
4432	// Details for termination recommendations.
4433	TerminateRecommendationDetail *TerminateRecommendationDetail `type:"structure"`
4434}
4435
4436// String returns the string representation
4437func (s RightsizingRecommendation) String() string {
4438	return awsutil.Prettify(s)
4439}
4440
4441// GoString returns the string representation
4442func (s RightsizingRecommendation) GoString() string {
4443	return s.String()
4444}
4445
4446// SetAccountId sets the AccountId field's value.
4447func (s *RightsizingRecommendation) SetAccountId(v string) *RightsizingRecommendation {
4448	s.AccountId = &v
4449	return s
4450}
4451
4452// SetCurrentInstance sets the CurrentInstance field's value.
4453func (s *RightsizingRecommendation) SetCurrentInstance(v *CurrentInstance) *RightsizingRecommendation {
4454	s.CurrentInstance = v
4455	return s
4456}
4457
4458// SetModifyRecommendationDetail sets the ModifyRecommendationDetail field's value.
4459func (s *RightsizingRecommendation) SetModifyRecommendationDetail(v *ModifyRecommendationDetail) *RightsizingRecommendation {
4460	s.ModifyRecommendationDetail = v
4461	return s
4462}
4463
4464// SetRightsizingType sets the RightsizingType field's value.
4465func (s *RightsizingRecommendation) SetRightsizingType(v string) *RightsizingRecommendation {
4466	s.RightsizingType = &v
4467	return s
4468}
4469
4470// SetTerminateRecommendationDetail sets the TerminateRecommendationDetail field's value.
4471func (s *RightsizingRecommendation) SetTerminateRecommendationDetail(v *TerminateRecommendationDetail) *RightsizingRecommendation {
4472	s.TerminateRecommendationDetail = v
4473	return s
4474}
4475
4476// Metadata for this recommendation set.
4477type RightsizingRecommendationMetadata struct {
4478	_ struct{} `type:"structure"`
4479
4480	// The time stamp for when Amazon Web Services made this recommendation.
4481	GenerationTimestamp *string `type:"string"`
4482
4483	// How many days of previous usage that Amazon Web Services considers when making
4484	// this recommendation.
4485	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
4486
4487	// The ID for this specific recommendation.
4488	RecommendationId *string `type:"string"`
4489}
4490
4491// String returns the string representation
4492func (s RightsizingRecommendationMetadata) String() string {
4493	return awsutil.Prettify(s)
4494}
4495
4496// GoString returns the string representation
4497func (s RightsizingRecommendationMetadata) GoString() string {
4498	return s.String()
4499}
4500
4501// SetGenerationTimestamp sets the GenerationTimestamp field's value.
4502func (s *RightsizingRecommendationMetadata) SetGenerationTimestamp(v string) *RightsizingRecommendationMetadata {
4503	s.GenerationTimestamp = &v
4504	return s
4505}
4506
4507// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
4508func (s *RightsizingRecommendationMetadata) SetLookbackPeriodInDays(v string) *RightsizingRecommendationMetadata {
4509	s.LookbackPeriodInDays = &v
4510	return s
4511}
4512
4513// SetRecommendationId sets the RecommendationId field's value.
4514func (s *RightsizingRecommendationMetadata) SetRecommendationId(v string) *RightsizingRecommendationMetadata {
4515	s.RecommendationId = &v
4516	return s
4517}
4518
4519// Summary of rightsizing recommendations
4520type RightsizingRecommendationSummary struct {
4521	_ struct{} `type:"structure"`
4522
4523	// Estimated total savings resulting from modifications, on a monthly basis.
4524	EstimatedTotalMonthlySavingsAmount *string `type:"string"`
4525
4526	// The currency code that Amazon Web Services used to calculate the savings.
4527	SavingsCurrencyCode *string `type:"string"`
4528
4529	// Savings percentage based on the recommended modifications, relative to the
4530	// total On Demand costs associated with these instances.
4531	SavingsPercentage *string `type:"string"`
4532
4533	// Total number of instance recommendations.
4534	TotalRecommendationCount *string `type:"string"`
4535}
4536
4537// String returns the string representation
4538func (s RightsizingRecommendationSummary) String() string {
4539	return awsutil.Prettify(s)
4540}
4541
4542// GoString returns the string representation
4543func (s RightsizingRecommendationSummary) GoString() string {
4544	return s.String()
4545}
4546
4547// SetEstimatedTotalMonthlySavingsAmount sets the EstimatedTotalMonthlySavingsAmount field's value.
4548func (s *RightsizingRecommendationSummary) SetEstimatedTotalMonthlySavingsAmount(v string) *RightsizingRecommendationSummary {
4549	s.EstimatedTotalMonthlySavingsAmount = &v
4550	return s
4551}
4552
4553// SetSavingsCurrencyCode sets the SavingsCurrencyCode field's value.
4554func (s *RightsizingRecommendationSummary) SetSavingsCurrencyCode(v string) *RightsizingRecommendationSummary {
4555	s.SavingsCurrencyCode = &v
4556	return s
4557}
4558
4559// SetSavingsPercentage sets the SavingsPercentage field's value.
4560func (s *RightsizingRecommendationSummary) SetSavingsPercentage(v string) *RightsizingRecommendationSummary {
4561	s.SavingsPercentage = &v
4562	return s
4563}
4564
4565// SetTotalRecommendationCount sets the TotalRecommendationCount field's value.
4566func (s *RightsizingRecommendationSummary) SetTotalRecommendationCount(v string) *RightsizingRecommendationSummary {
4567	s.TotalRecommendationCount = &v
4568	return s
4569}
4570
4571// Hardware specifications for the service that you want recommendations for.
4572type ServiceSpecification struct {
4573	_ struct{} `type:"structure"`
4574
4575	// The Amazon EC2 hardware specifications that you want AWS to provide recommendations
4576	// for.
4577	EC2Specification *EC2Specification `type:"structure"`
4578}
4579
4580// String returns the string representation
4581func (s ServiceSpecification) String() string {
4582	return awsutil.Prettify(s)
4583}
4584
4585// GoString returns the string representation
4586func (s ServiceSpecification) GoString() string {
4587	return s.String()
4588}
4589
4590// SetEC2Specification sets the EC2Specification field's value.
4591func (s *ServiceSpecification) SetEC2Specification(v *EC2Specification) *ServiceSpecification {
4592	s.EC2Specification = v
4593	return s
4594}
4595
4596// The values that are available for a tag.
4597type TagValues struct {
4598	_ struct{} `type:"structure"`
4599
4600	// The key for the tag.
4601	Key *string `type:"string"`
4602
4603	// The specific value of the tag.
4604	Values []*string `type:"list"`
4605}
4606
4607// String returns the string representation
4608func (s TagValues) String() string {
4609	return awsutil.Prettify(s)
4610}
4611
4612// GoString returns the string representation
4613func (s TagValues) GoString() string {
4614	return s.String()
4615}
4616
4617// SetKey sets the Key field's value.
4618func (s *TagValues) SetKey(v string) *TagValues {
4619	s.Key = &v
4620	return s
4621}
4622
4623// SetValues sets the Values field's value.
4624func (s *TagValues) SetValues(v []*string) *TagValues {
4625	s.Values = v
4626	return s
4627}
4628
4629// Details on recommended instance.
4630type TargetInstance struct {
4631	_ struct{} `type:"structure"`
4632
4633	// The currency code that Amazon Web Services used to calculate the costs for
4634	// this instance.
4635	CurrencyCode *string `type:"string"`
4636
4637	// Indicates whether or not this recommendation is the defaulted Amazon Web
4638	// Services recommendation.
4639	DefaultTargetInstance *bool `type:"boolean"`
4640
4641	// Expected cost to operate this instance type on a monthly basis.
4642	EstimatedMonthlyCost *string `type:"string"`
4643
4644	// Estimated savings resulting from modification, on a monthly basis.
4645	EstimatedMonthlySavings *string `type:"string"`
4646
4647	// Expected utilization metrics for target instance type.
4648	ExpectedResourceUtilization *ResourceUtilization `type:"structure"`
4649
4650	// Details on the target instance type.
4651	ResourceDetails *ResourceDetails `type:"structure"`
4652}
4653
4654// String returns the string representation
4655func (s TargetInstance) String() string {
4656	return awsutil.Prettify(s)
4657}
4658
4659// GoString returns the string representation
4660func (s TargetInstance) GoString() string {
4661	return s.String()
4662}
4663
4664// SetCurrencyCode sets the CurrencyCode field's value.
4665func (s *TargetInstance) SetCurrencyCode(v string) *TargetInstance {
4666	s.CurrencyCode = &v
4667	return s
4668}
4669
4670// SetDefaultTargetInstance sets the DefaultTargetInstance field's value.
4671func (s *TargetInstance) SetDefaultTargetInstance(v bool) *TargetInstance {
4672	s.DefaultTargetInstance = &v
4673	return s
4674}
4675
4676// SetEstimatedMonthlyCost sets the EstimatedMonthlyCost field's value.
4677func (s *TargetInstance) SetEstimatedMonthlyCost(v string) *TargetInstance {
4678	s.EstimatedMonthlyCost = &v
4679	return s
4680}
4681
4682// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
4683func (s *TargetInstance) SetEstimatedMonthlySavings(v string) *TargetInstance {
4684	s.EstimatedMonthlySavings = &v
4685	return s
4686}
4687
4688// SetExpectedResourceUtilization sets the ExpectedResourceUtilization field's value.
4689func (s *TargetInstance) SetExpectedResourceUtilization(v *ResourceUtilization) *TargetInstance {
4690	s.ExpectedResourceUtilization = v
4691	return s
4692}
4693
4694// SetResourceDetails sets the ResourceDetails field's value.
4695func (s *TargetInstance) SetResourceDetails(v *ResourceDetails) *TargetInstance {
4696	s.ResourceDetails = v
4697	return s
4698}
4699
4700// Details on termination recommendation.
4701type TerminateRecommendationDetail struct {
4702	_ struct{} `type:"structure"`
4703
4704	// The currency code that Amazon Web Services used to calculate the costs for
4705	// this instance.
4706	CurrencyCode *string `type:"string"`
4707
4708	// Estimated savings resulting from modification, on a monthly basis.
4709	EstimatedMonthlySavings *string `type:"string"`
4710}
4711
4712// String returns the string representation
4713func (s TerminateRecommendationDetail) String() string {
4714	return awsutil.Prettify(s)
4715}
4716
4717// GoString returns the string representation
4718func (s TerminateRecommendationDetail) GoString() string {
4719	return s.String()
4720}
4721
4722// SetCurrencyCode sets the CurrencyCode field's value.
4723func (s *TerminateRecommendationDetail) SetCurrencyCode(v string) *TerminateRecommendationDetail {
4724	s.CurrencyCode = &v
4725	return s
4726}
4727
4728// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
4729func (s *TerminateRecommendationDetail) SetEstimatedMonthlySavings(v string) *TerminateRecommendationDetail {
4730	s.EstimatedMonthlySavings = &v
4731	return s
4732}
4733
4734// The amount of utilization, in hours.
4735type UtilizationByTime struct {
4736	_ struct{} `type:"structure"`
4737
4738	// The groups that this utilization result uses.
4739	Groups []*ReservationUtilizationGroup `type:"list"`
4740
4741	// The period of time that this utilization was used for.
4742	TimePeriod *DateInterval `type:"structure"`
4743
4744	// The total number of reservation hours that were used.
4745	Total *ReservationAggregates `type:"structure"`
4746}
4747
4748// String returns the string representation
4749func (s UtilizationByTime) String() string {
4750	return awsutil.Prettify(s)
4751}
4752
4753// GoString returns the string representation
4754func (s UtilizationByTime) GoString() string {
4755	return s.String()
4756}
4757
4758// SetGroups sets the Groups field's value.
4759func (s *UtilizationByTime) SetGroups(v []*ReservationUtilizationGroup) *UtilizationByTime {
4760	s.Groups = v
4761	return s
4762}
4763
4764// SetTimePeriod sets the TimePeriod field's value.
4765func (s *UtilizationByTime) SetTimePeriod(v *DateInterval) *UtilizationByTime {
4766	s.TimePeriod = v
4767	return s
4768}
4769
4770// SetTotal sets the Total field's value.
4771func (s *UtilizationByTime) SetTotal(v *ReservationAggregates) *UtilizationByTime {
4772	s.Total = v
4773	return s
4774}
4775
4776const (
4777	// AccountScopePayer is a AccountScope enum value
4778	AccountScopePayer = "PAYER"
4779
4780	// AccountScopeLinked is a AccountScope enum value
4781	AccountScopeLinked = "LINKED"
4782)
4783
4784const (
4785	// ContextCostAndUsage is a Context enum value
4786	ContextCostAndUsage = "COST_AND_USAGE"
4787
4788	// ContextReservations is a Context enum value
4789	ContextReservations = "RESERVATIONS"
4790)
4791
4792const (
4793	// DimensionAz is a Dimension enum value
4794	DimensionAz = "AZ"
4795
4796	// DimensionInstanceType is a Dimension enum value
4797	DimensionInstanceType = "INSTANCE_TYPE"
4798
4799	// DimensionLinkedAccount is a Dimension enum value
4800	DimensionLinkedAccount = "LINKED_ACCOUNT"
4801
4802	// DimensionOperation is a Dimension enum value
4803	DimensionOperation = "OPERATION"
4804
4805	// DimensionPurchaseType is a Dimension enum value
4806	DimensionPurchaseType = "PURCHASE_TYPE"
4807
4808	// DimensionRegion is a Dimension enum value
4809	DimensionRegion = "REGION"
4810
4811	// DimensionService is a Dimension enum value
4812	DimensionService = "SERVICE"
4813
4814	// DimensionUsageType is a Dimension enum value
4815	DimensionUsageType = "USAGE_TYPE"
4816
4817	// DimensionUsageTypeGroup is a Dimension enum value
4818	DimensionUsageTypeGroup = "USAGE_TYPE_GROUP"
4819
4820	// DimensionRecordType is a Dimension enum value
4821	DimensionRecordType = "RECORD_TYPE"
4822
4823	// DimensionOperatingSystem is a Dimension enum value
4824	DimensionOperatingSystem = "OPERATING_SYSTEM"
4825
4826	// DimensionTenancy is a Dimension enum value
4827	DimensionTenancy = "TENANCY"
4828
4829	// DimensionScope is a Dimension enum value
4830	DimensionScope = "SCOPE"
4831
4832	// DimensionPlatform is a Dimension enum value
4833	DimensionPlatform = "PLATFORM"
4834
4835	// DimensionSubscriptionId is a Dimension enum value
4836	DimensionSubscriptionId = "SUBSCRIPTION_ID"
4837
4838	// DimensionLegalEntityName is a Dimension enum value
4839	DimensionLegalEntityName = "LEGAL_ENTITY_NAME"
4840
4841	// DimensionDeploymentOption is a Dimension enum value
4842	DimensionDeploymentOption = "DEPLOYMENT_OPTION"
4843
4844	// DimensionDatabaseEngine is a Dimension enum value
4845	DimensionDatabaseEngine = "DATABASE_ENGINE"
4846
4847	// DimensionCacheEngine is a Dimension enum value
4848	DimensionCacheEngine = "CACHE_ENGINE"
4849
4850	// DimensionInstanceTypeFamily is a Dimension enum value
4851	DimensionInstanceTypeFamily = "INSTANCE_TYPE_FAMILY"
4852
4853	// DimensionBillingEntity is a Dimension enum value
4854	DimensionBillingEntity = "BILLING_ENTITY"
4855
4856	// DimensionReservationId is a Dimension enum value
4857	DimensionReservationId = "RESERVATION_ID"
4858
4859	// DimensionRightsizingType is a Dimension enum value
4860	DimensionRightsizingType = "RIGHTSIZING_TYPE"
4861)
4862
4863const (
4864	// GranularityDaily is a Granularity enum value
4865	GranularityDaily = "DAILY"
4866
4867	// GranularityMonthly is a Granularity enum value
4868	GranularityMonthly = "MONTHLY"
4869
4870	// GranularityHourly is a Granularity enum value
4871	GranularityHourly = "HOURLY"
4872)
4873
4874const (
4875	// GroupDefinitionTypeDimension is a GroupDefinitionType enum value
4876	GroupDefinitionTypeDimension = "DIMENSION"
4877
4878	// GroupDefinitionTypeTag is a GroupDefinitionType enum value
4879	GroupDefinitionTypeTag = "TAG"
4880)
4881
4882const (
4883	// LookbackPeriodInDaysSevenDays is a LookbackPeriodInDays enum value
4884	LookbackPeriodInDaysSevenDays = "SEVEN_DAYS"
4885
4886	// LookbackPeriodInDaysThirtyDays is a LookbackPeriodInDays enum value
4887	LookbackPeriodInDaysThirtyDays = "THIRTY_DAYS"
4888
4889	// LookbackPeriodInDaysSixtyDays is a LookbackPeriodInDays enum value
4890	LookbackPeriodInDaysSixtyDays = "SIXTY_DAYS"
4891)
4892
4893const (
4894	// MetricBlendedCost is a Metric enum value
4895	MetricBlendedCost = "BLENDED_COST"
4896
4897	// MetricUnblendedCost is a Metric enum value
4898	MetricUnblendedCost = "UNBLENDED_COST"
4899
4900	// MetricAmortizedCost is a Metric enum value
4901	MetricAmortizedCost = "AMORTIZED_COST"
4902
4903	// MetricNetUnblendedCost is a Metric enum value
4904	MetricNetUnblendedCost = "NET_UNBLENDED_COST"
4905
4906	// MetricNetAmortizedCost is a Metric enum value
4907	MetricNetAmortizedCost = "NET_AMORTIZED_COST"
4908
4909	// MetricUsageQuantity is a Metric enum value
4910	MetricUsageQuantity = "USAGE_QUANTITY"
4911
4912	// MetricNormalizedUsageAmount is a Metric enum value
4913	MetricNormalizedUsageAmount = "NORMALIZED_USAGE_AMOUNT"
4914)
4915
4916const (
4917	// OfferingClassStandard is a OfferingClass enum value
4918	OfferingClassStandard = "STANDARD"
4919
4920	// OfferingClassConvertible is a OfferingClass enum value
4921	OfferingClassConvertible = "CONVERTIBLE"
4922)
4923
4924const (
4925	// PaymentOptionNoUpfront is a PaymentOption enum value
4926	PaymentOptionNoUpfront = "NO_UPFRONT"
4927
4928	// PaymentOptionPartialUpfront is a PaymentOption enum value
4929	PaymentOptionPartialUpfront = "PARTIAL_UPFRONT"
4930
4931	// PaymentOptionAllUpfront is a PaymentOption enum value
4932	PaymentOptionAllUpfront = "ALL_UPFRONT"
4933
4934	// PaymentOptionLightUtilization is a PaymentOption enum value
4935	PaymentOptionLightUtilization = "LIGHT_UTILIZATION"
4936
4937	// PaymentOptionMediumUtilization is a PaymentOption enum value
4938	PaymentOptionMediumUtilization = "MEDIUM_UTILIZATION"
4939
4940	// PaymentOptionHeavyUtilization is a PaymentOption enum value
4941	PaymentOptionHeavyUtilization = "HEAVY_UTILIZATION"
4942)
4943
4944const (
4945	// RightsizingTypeTerminate is a RightsizingType enum value
4946	RightsizingTypeTerminate = "TERMINATE"
4947
4948	// RightsizingTypeModify is a RightsizingType enum value
4949	RightsizingTypeModify = "MODIFY"
4950)
4951
4952const (
4953	// TermInYearsOneYear is a TermInYears enum value
4954	TermInYearsOneYear = "ONE_YEAR"
4955
4956	// TermInYearsThreeYears is a TermInYears enum value
4957	TermInYearsThreeYears = "THREE_YEARS"
4958)
4959