1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package costexplorer
4
5import (
6	"fmt"
7
8	"github.com/aws/aws-sdk-go/aws"
9	"github.com/aws/aws-sdk-go/aws/awsutil"
10	"github.com/aws/aws-sdk-go/aws/request"
11	"github.com/aws/aws-sdk-go/private/protocol"
12	"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
13)
14
15const opCreateAnomalyMonitor = "CreateAnomalyMonitor"
16
17// CreateAnomalyMonitorRequest generates a "aws/request.Request" representing the
18// client's request for the CreateAnomalyMonitor operation. The "output" return
19// value will be populated with the request's response once the request completes
20// successfully.
21//
22// Use "Send" method on the returned Request to send the API call to the service.
23// the "output" return value is not valid until after Send returns without error.
24//
25// See CreateAnomalyMonitor for more information on using the CreateAnomalyMonitor
26// API call, and error handling.
27//
28// This method is useful when you want to inject custom logic or configuration
29// into the SDK's request lifecycle. Such as custom headers, or retry logic.
30//
31//
32//    // Example sending a request using the CreateAnomalyMonitorRequest method.
33//    req, resp := client.CreateAnomalyMonitorRequest(params)
34//
35//    err := req.Send()
36//    if err == nil { // resp is now filled
37//        fmt.Println(resp)
38//    }
39//
40// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateAnomalyMonitor
41func (c *CostExplorer) CreateAnomalyMonitorRequest(input *CreateAnomalyMonitorInput) (req *request.Request, output *CreateAnomalyMonitorOutput) {
42	op := &request.Operation{
43		Name:       opCreateAnomalyMonitor,
44		HTTPMethod: "POST",
45		HTTPPath:   "/",
46	}
47
48	if input == nil {
49		input = &CreateAnomalyMonitorInput{}
50	}
51
52	output = &CreateAnomalyMonitorOutput{}
53	req = c.newRequest(op, input, output)
54	return
55}
56
57// CreateAnomalyMonitor API operation for AWS Cost Explorer Service.
58//
59// Creates a new cost anomaly detection monitor with the requested type and
60// monitor specification.
61//
62// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
63// with awserr.Error's Code and Message methods to get detailed information about
64// the error.
65//
66// See the AWS API reference guide for AWS Cost Explorer Service's
67// API operation CreateAnomalyMonitor for usage and error information.
68//
69// Returned Error Types:
70//   * LimitExceededException
71//   You made too many calls in a short period of time. Try again later.
72//
73// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateAnomalyMonitor
74func (c *CostExplorer) CreateAnomalyMonitor(input *CreateAnomalyMonitorInput) (*CreateAnomalyMonitorOutput, error) {
75	req, out := c.CreateAnomalyMonitorRequest(input)
76	return out, req.Send()
77}
78
79// CreateAnomalyMonitorWithContext is the same as CreateAnomalyMonitor with the addition of
80// the ability to pass a context and additional request options.
81//
82// See CreateAnomalyMonitor for details on how to use this API operation.
83//
84// The context must be non-nil and will be used for request cancellation. If
85// the context is nil a panic will occur. In the future the SDK may create
86// sub-contexts for http.Requests. See https://golang.org/pkg/context/
87// for more information on using Contexts.
88func (c *CostExplorer) CreateAnomalyMonitorWithContext(ctx aws.Context, input *CreateAnomalyMonitorInput, opts ...request.Option) (*CreateAnomalyMonitorOutput, error) {
89	req, out := c.CreateAnomalyMonitorRequest(input)
90	req.SetContext(ctx)
91	req.ApplyOptions(opts...)
92	return out, req.Send()
93}
94
95const opCreateAnomalySubscription = "CreateAnomalySubscription"
96
97// CreateAnomalySubscriptionRequest generates a "aws/request.Request" representing the
98// client's request for the CreateAnomalySubscription operation. The "output" return
99// value will be populated with the request's response once the request completes
100// successfully.
101//
102// Use "Send" method on the returned Request to send the API call to the service.
103// the "output" return value is not valid until after Send returns without error.
104//
105// See CreateAnomalySubscription for more information on using the CreateAnomalySubscription
106// API call, and error handling.
107//
108// This method is useful when you want to inject custom logic or configuration
109// into the SDK's request lifecycle. Such as custom headers, or retry logic.
110//
111//
112//    // Example sending a request using the CreateAnomalySubscriptionRequest method.
113//    req, resp := client.CreateAnomalySubscriptionRequest(params)
114//
115//    err := req.Send()
116//    if err == nil { // resp is now filled
117//        fmt.Println(resp)
118//    }
119//
120// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateAnomalySubscription
121func (c *CostExplorer) CreateAnomalySubscriptionRequest(input *CreateAnomalySubscriptionInput) (req *request.Request, output *CreateAnomalySubscriptionOutput) {
122	op := &request.Operation{
123		Name:       opCreateAnomalySubscription,
124		HTTPMethod: "POST",
125		HTTPPath:   "/",
126	}
127
128	if input == nil {
129		input = &CreateAnomalySubscriptionInput{}
130	}
131
132	output = &CreateAnomalySubscriptionOutput{}
133	req = c.newRequest(op, input, output)
134	return
135}
136
137// CreateAnomalySubscription API operation for AWS Cost Explorer Service.
138//
139// Adds a subscription to a cost anomaly detection monitor. You can use each
140// subscription to define subscribers with email or SNS notifications. Email
141// subscribers can set a dollar threshold and a time frequency for receiving
142// notifications.
143//
144// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
145// with awserr.Error's Code and Message methods to get detailed information about
146// the error.
147//
148// See the AWS API reference guide for AWS Cost Explorer Service's
149// API operation CreateAnomalySubscription for usage and error information.
150//
151// Returned Error Types:
152//   * UnknownMonitorException
153//   The cost anomaly monitor does not exist for the account.
154//
155//   * LimitExceededException
156//   You made too many calls in a short period of time. Try again later.
157//
158// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateAnomalySubscription
159func (c *CostExplorer) CreateAnomalySubscription(input *CreateAnomalySubscriptionInput) (*CreateAnomalySubscriptionOutput, error) {
160	req, out := c.CreateAnomalySubscriptionRequest(input)
161	return out, req.Send()
162}
163
164// CreateAnomalySubscriptionWithContext is the same as CreateAnomalySubscription with the addition of
165// the ability to pass a context and additional request options.
166//
167// See CreateAnomalySubscription for details on how to use this API operation.
168//
169// The context must be non-nil and will be used for request cancellation. If
170// the context is nil a panic will occur. In the future the SDK may create
171// sub-contexts for http.Requests. See https://golang.org/pkg/context/
172// for more information on using Contexts.
173func (c *CostExplorer) CreateAnomalySubscriptionWithContext(ctx aws.Context, input *CreateAnomalySubscriptionInput, opts ...request.Option) (*CreateAnomalySubscriptionOutput, error) {
174	req, out := c.CreateAnomalySubscriptionRequest(input)
175	req.SetContext(ctx)
176	req.ApplyOptions(opts...)
177	return out, req.Send()
178}
179
180const opCreateCostCategoryDefinition = "CreateCostCategoryDefinition"
181
182// CreateCostCategoryDefinitionRequest generates a "aws/request.Request" representing the
183// client's request for the CreateCostCategoryDefinition operation. The "output" return
184// value will be populated with the request's response once the request completes
185// successfully.
186//
187// Use "Send" method on the returned Request to send the API call to the service.
188// the "output" return value is not valid until after Send returns without error.
189//
190// See CreateCostCategoryDefinition for more information on using the CreateCostCategoryDefinition
191// API call, and error handling.
192//
193// This method is useful when you want to inject custom logic or configuration
194// into the SDK's request lifecycle. Such as custom headers, or retry logic.
195//
196//
197//    // Example sending a request using the CreateCostCategoryDefinitionRequest method.
198//    req, resp := client.CreateCostCategoryDefinitionRequest(params)
199//
200//    err := req.Send()
201//    if err == nil { // resp is now filled
202//        fmt.Println(resp)
203//    }
204//
205// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateCostCategoryDefinition
206func (c *CostExplorer) CreateCostCategoryDefinitionRequest(input *CreateCostCategoryDefinitionInput) (req *request.Request, output *CreateCostCategoryDefinitionOutput) {
207	op := &request.Operation{
208		Name:       opCreateCostCategoryDefinition,
209		HTTPMethod: "POST",
210		HTTPPath:   "/",
211	}
212
213	if input == nil {
214		input = &CreateCostCategoryDefinitionInput{}
215	}
216
217	output = &CreateCostCategoryDefinitionOutput{}
218	req = c.newRequest(op, input, output)
219	return
220}
221
222// CreateCostCategoryDefinition API operation for AWS Cost Explorer Service.
223//
224// Creates a new Cost Category with the requested name and rules.
225//
226// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
227// with awserr.Error's Code and Message methods to get detailed information about
228// the error.
229//
230// See the AWS API reference guide for AWS Cost Explorer Service's
231// API operation CreateCostCategoryDefinition for usage and error information.
232//
233// Returned Error Types:
234//   * ServiceQuotaExceededException
235//   You've reached the limit on the number of resources you can create, or exceeded
236//   the size of an individual resource.
237//
238//   * LimitExceededException
239//   You made too many calls in a short period of time. Try again later.
240//
241// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CreateCostCategoryDefinition
242func (c *CostExplorer) CreateCostCategoryDefinition(input *CreateCostCategoryDefinitionInput) (*CreateCostCategoryDefinitionOutput, error) {
243	req, out := c.CreateCostCategoryDefinitionRequest(input)
244	return out, req.Send()
245}
246
247// CreateCostCategoryDefinitionWithContext is the same as CreateCostCategoryDefinition with the addition of
248// the ability to pass a context and additional request options.
249//
250// See CreateCostCategoryDefinition for details on how to use this API operation.
251//
252// The context must be non-nil and will be used for request cancellation. If
253// the context is nil a panic will occur. In the future the SDK may create
254// sub-contexts for http.Requests. See https://golang.org/pkg/context/
255// for more information on using Contexts.
256func (c *CostExplorer) CreateCostCategoryDefinitionWithContext(ctx aws.Context, input *CreateCostCategoryDefinitionInput, opts ...request.Option) (*CreateCostCategoryDefinitionOutput, error) {
257	req, out := c.CreateCostCategoryDefinitionRequest(input)
258	req.SetContext(ctx)
259	req.ApplyOptions(opts...)
260	return out, req.Send()
261}
262
263const opDeleteAnomalyMonitor = "DeleteAnomalyMonitor"
264
265// DeleteAnomalyMonitorRequest generates a "aws/request.Request" representing the
266// client's request for the DeleteAnomalyMonitor operation. The "output" return
267// value will be populated with the request's response once the request completes
268// successfully.
269//
270// Use "Send" method on the returned Request to send the API call to the service.
271// the "output" return value is not valid until after Send returns without error.
272//
273// See DeleteAnomalyMonitor for more information on using the DeleteAnomalyMonitor
274// API call, and error handling.
275//
276// This method is useful when you want to inject custom logic or configuration
277// into the SDK's request lifecycle. Such as custom headers, or retry logic.
278//
279//
280//    // Example sending a request using the DeleteAnomalyMonitorRequest method.
281//    req, resp := client.DeleteAnomalyMonitorRequest(params)
282//
283//    err := req.Send()
284//    if err == nil { // resp is now filled
285//        fmt.Println(resp)
286//    }
287//
288// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DeleteAnomalyMonitor
289func (c *CostExplorer) DeleteAnomalyMonitorRequest(input *DeleteAnomalyMonitorInput) (req *request.Request, output *DeleteAnomalyMonitorOutput) {
290	op := &request.Operation{
291		Name:       opDeleteAnomalyMonitor,
292		HTTPMethod: "POST",
293		HTTPPath:   "/",
294	}
295
296	if input == nil {
297		input = &DeleteAnomalyMonitorInput{}
298	}
299
300	output = &DeleteAnomalyMonitorOutput{}
301	req = c.newRequest(op, input, output)
302	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
303	return
304}
305
306// DeleteAnomalyMonitor API operation for AWS Cost Explorer Service.
307//
308// Deletes a cost anomaly monitor.
309//
310// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
311// with awserr.Error's Code and Message methods to get detailed information about
312// the error.
313//
314// See the AWS API reference guide for AWS Cost Explorer Service's
315// API operation DeleteAnomalyMonitor for usage and error information.
316//
317// Returned Error Types:
318//   * LimitExceededException
319//   You made too many calls in a short period of time. Try again later.
320//
321//   * UnknownMonitorException
322//   The cost anomaly monitor does not exist for the account.
323//
324// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DeleteAnomalyMonitor
325func (c *CostExplorer) DeleteAnomalyMonitor(input *DeleteAnomalyMonitorInput) (*DeleteAnomalyMonitorOutput, error) {
326	req, out := c.DeleteAnomalyMonitorRequest(input)
327	return out, req.Send()
328}
329
330// DeleteAnomalyMonitorWithContext is the same as DeleteAnomalyMonitor with the addition of
331// the ability to pass a context and additional request options.
332//
333// See DeleteAnomalyMonitor for details on how to use this API operation.
334//
335// The context must be non-nil and will be used for request cancellation. If
336// the context is nil a panic will occur. In the future the SDK may create
337// sub-contexts for http.Requests. See https://golang.org/pkg/context/
338// for more information on using Contexts.
339func (c *CostExplorer) DeleteAnomalyMonitorWithContext(ctx aws.Context, input *DeleteAnomalyMonitorInput, opts ...request.Option) (*DeleteAnomalyMonitorOutput, error) {
340	req, out := c.DeleteAnomalyMonitorRequest(input)
341	req.SetContext(ctx)
342	req.ApplyOptions(opts...)
343	return out, req.Send()
344}
345
346const opDeleteAnomalySubscription = "DeleteAnomalySubscription"
347
348// DeleteAnomalySubscriptionRequest generates a "aws/request.Request" representing the
349// client's request for the DeleteAnomalySubscription operation. The "output" return
350// value will be populated with the request's response once the request completes
351// successfully.
352//
353// Use "Send" method on the returned Request to send the API call to the service.
354// the "output" return value is not valid until after Send returns without error.
355//
356// See DeleteAnomalySubscription for more information on using the DeleteAnomalySubscription
357// API call, and error handling.
358//
359// This method is useful when you want to inject custom logic or configuration
360// into the SDK's request lifecycle. Such as custom headers, or retry logic.
361//
362//
363//    // Example sending a request using the DeleteAnomalySubscriptionRequest method.
364//    req, resp := client.DeleteAnomalySubscriptionRequest(params)
365//
366//    err := req.Send()
367//    if err == nil { // resp is now filled
368//        fmt.Println(resp)
369//    }
370//
371// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DeleteAnomalySubscription
372func (c *CostExplorer) DeleteAnomalySubscriptionRequest(input *DeleteAnomalySubscriptionInput) (req *request.Request, output *DeleteAnomalySubscriptionOutput) {
373	op := &request.Operation{
374		Name:       opDeleteAnomalySubscription,
375		HTTPMethod: "POST",
376		HTTPPath:   "/",
377	}
378
379	if input == nil {
380		input = &DeleteAnomalySubscriptionInput{}
381	}
382
383	output = &DeleteAnomalySubscriptionOutput{}
384	req = c.newRequest(op, input, output)
385	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
386	return
387}
388
389// DeleteAnomalySubscription API operation for AWS Cost Explorer Service.
390//
391// Deletes a cost anomaly subscription.
392//
393// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
394// with awserr.Error's Code and Message methods to get detailed information about
395// the error.
396//
397// See the AWS API reference guide for AWS Cost Explorer Service's
398// API operation DeleteAnomalySubscription for usage and error information.
399//
400// Returned Error Types:
401//   * LimitExceededException
402//   You made too many calls in a short period of time. Try again later.
403//
404//   * UnknownSubscriptionException
405//   The cost anomaly subscription does not exist for the account.
406//
407// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DeleteAnomalySubscription
408func (c *CostExplorer) DeleteAnomalySubscription(input *DeleteAnomalySubscriptionInput) (*DeleteAnomalySubscriptionOutput, error) {
409	req, out := c.DeleteAnomalySubscriptionRequest(input)
410	return out, req.Send()
411}
412
413// DeleteAnomalySubscriptionWithContext is the same as DeleteAnomalySubscription with the addition of
414// the ability to pass a context and additional request options.
415//
416// See DeleteAnomalySubscription for details on how to use this API operation.
417//
418// The context must be non-nil and will be used for request cancellation. If
419// the context is nil a panic will occur. In the future the SDK may create
420// sub-contexts for http.Requests. See https://golang.org/pkg/context/
421// for more information on using Contexts.
422func (c *CostExplorer) DeleteAnomalySubscriptionWithContext(ctx aws.Context, input *DeleteAnomalySubscriptionInput, opts ...request.Option) (*DeleteAnomalySubscriptionOutput, error) {
423	req, out := c.DeleteAnomalySubscriptionRequest(input)
424	req.SetContext(ctx)
425	req.ApplyOptions(opts...)
426	return out, req.Send()
427}
428
429const opDeleteCostCategoryDefinition = "DeleteCostCategoryDefinition"
430
431// DeleteCostCategoryDefinitionRequest generates a "aws/request.Request" representing the
432// client's request for the DeleteCostCategoryDefinition operation. The "output" return
433// value will be populated with the request's response once the request completes
434// successfully.
435//
436// Use "Send" method on the returned Request to send the API call to the service.
437// the "output" return value is not valid until after Send returns without error.
438//
439// See DeleteCostCategoryDefinition for more information on using the DeleteCostCategoryDefinition
440// API call, and error handling.
441//
442// This method is useful when you want to inject custom logic or configuration
443// into the SDK's request lifecycle. Such as custom headers, or retry logic.
444//
445//
446//    // Example sending a request using the DeleteCostCategoryDefinitionRequest method.
447//    req, resp := client.DeleteCostCategoryDefinitionRequest(params)
448//
449//    err := req.Send()
450//    if err == nil { // resp is now filled
451//        fmt.Println(resp)
452//    }
453//
454// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DeleteCostCategoryDefinition
455func (c *CostExplorer) DeleteCostCategoryDefinitionRequest(input *DeleteCostCategoryDefinitionInput) (req *request.Request, output *DeleteCostCategoryDefinitionOutput) {
456	op := &request.Operation{
457		Name:       opDeleteCostCategoryDefinition,
458		HTTPMethod: "POST",
459		HTTPPath:   "/",
460	}
461
462	if input == nil {
463		input = &DeleteCostCategoryDefinitionInput{}
464	}
465
466	output = &DeleteCostCategoryDefinitionOutput{}
467	req = c.newRequest(op, input, output)
468	return
469}
470
471// DeleteCostCategoryDefinition API operation for AWS Cost Explorer Service.
472//
473// Deletes a Cost Category. Expenses from this month going forward will no longer
474// be categorized with this Cost Category.
475//
476// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
477// with awserr.Error's Code and Message methods to get detailed information about
478// the error.
479//
480// See the AWS API reference guide for AWS Cost Explorer Service's
481// API operation DeleteCostCategoryDefinition for usage and error information.
482//
483// Returned Error Types:
484//   * ResourceNotFoundException
485//   The specified ARN in the request doesn't exist.
486//
487//   * LimitExceededException
488//   You made too many calls in a short period of time. Try again later.
489//
490// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DeleteCostCategoryDefinition
491func (c *CostExplorer) DeleteCostCategoryDefinition(input *DeleteCostCategoryDefinitionInput) (*DeleteCostCategoryDefinitionOutput, error) {
492	req, out := c.DeleteCostCategoryDefinitionRequest(input)
493	return out, req.Send()
494}
495
496// DeleteCostCategoryDefinitionWithContext is the same as DeleteCostCategoryDefinition with the addition of
497// the ability to pass a context and additional request options.
498//
499// See DeleteCostCategoryDefinition for details on how to use this API operation.
500//
501// The context must be non-nil and will be used for request cancellation. If
502// the context is nil a panic will occur. In the future the SDK may create
503// sub-contexts for http.Requests. See https://golang.org/pkg/context/
504// for more information on using Contexts.
505func (c *CostExplorer) DeleteCostCategoryDefinitionWithContext(ctx aws.Context, input *DeleteCostCategoryDefinitionInput, opts ...request.Option) (*DeleteCostCategoryDefinitionOutput, error) {
506	req, out := c.DeleteCostCategoryDefinitionRequest(input)
507	req.SetContext(ctx)
508	req.ApplyOptions(opts...)
509	return out, req.Send()
510}
511
512const opDescribeCostCategoryDefinition = "DescribeCostCategoryDefinition"
513
514// DescribeCostCategoryDefinitionRequest generates a "aws/request.Request" representing the
515// client's request for the DescribeCostCategoryDefinition operation. The "output" return
516// value will be populated with the request's response once the request completes
517// successfully.
518//
519// Use "Send" method on the returned Request to send the API call to the service.
520// the "output" return value is not valid until after Send returns without error.
521//
522// See DescribeCostCategoryDefinition for more information on using the DescribeCostCategoryDefinition
523// API call, and error handling.
524//
525// This method is useful when you want to inject custom logic or configuration
526// into the SDK's request lifecycle. Such as custom headers, or retry logic.
527//
528//
529//    // Example sending a request using the DescribeCostCategoryDefinitionRequest method.
530//    req, resp := client.DescribeCostCategoryDefinitionRequest(params)
531//
532//    err := req.Send()
533//    if err == nil { // resp is now filled
534//        fmt.Println(resp)
535//    }
536//
537// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DescribeCostCategoryDefinition
538func (c *CostExplorer) DescribeCostCategoryDefinitionRequest(input *DescribeCostCategoryDefinitionInput) (req *request.Request, output *DescribeCostCategoryDefinitionOutput) {
539	op := &request.Operation{
540		Name:       opDescribeCostCategoryDefinition,
541		HTTPMethod: "POST",
542		HTTPPath:   "/",
543	}
544
545	if input == nil {
546		input = &DescribeCostCategoryDefinitionInput{}
547	}
548
549	output = &DescribeCostCategoryDefinitionOutput{}
550	req = c.newRequest(op, input, output)
551	return
552}
553
554// DescribeCostCategoryDefinition API operation for AWS Cost Explorer Service.
555//
556// Returns the name, ARN, rules, definition, and effective dates of a Cost Category
557// that's defined in the account.
558//
559// You have the option to use EffectiveOn to return a Cost Category that is
560// active on a specific date. If there is no EffectiveOn specified, you’ll
561// see a Cost Category that is effective on the current date. If Cost Category
562// is still effective, EffectiveEnd is omitted in the response.
563//
564// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
565// with awserr.Error's Code and Message methods to get detailed information about
566// the error.
567//
568// See the AWS API reference guide for AWS Cost Explorer Service's
569// API operation DescribeCostCategoryDefinition for usage and error information.
570//
571// Returned Error Types:
572//   * ResourceNotFoundException
573//   The specified ARN in the request doesn't exist.
574//
575//   * LimitExceededException
576//   You made too many calls in a short period of time. Try again later.
577//
578// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/DescribeCostCategoryDefinition
579func (c *CostExplorer) DescribeCostCategoryDefinition(input *DescribeCostCategoryDefinitionInput) (*DescribeCostCategoryDefinitionOutput, error) {
580	req, out := c.DescribeCostCategoryDefinitionRequest(input)
581	return out, req.Send()
582}
583
584// DescribeCostCategoryDefinitionWithContext is the same as DescribeCostCategoryDefinition with the addition of
585// the ability to pass a context and additional request options.
586//
587// See DescribeCostCategoryDefinition for details on how to use this API operation.
588//
589// The context must be non-nil and will be used for request cancellation. If
590// the context is nil a panic will occur. In the future the SDK may create
591// sub-contexts for http.Requests. See https://golang.org/pkg/context/
592// for more information on using Contexts.
593func (c *CostExplorer) DescribeCostCategoryDefinitionWithContext(ctx aws.Context, input *DescribeCostCategoryDefinitionInput, opts ...request.Option) (*DescribeCostCategoryDefinitionOutput, error) {
594	req, out := c.DescribeCostCategoryDefinitionRequest(input)
595	req.SetContext(ctx)
596	req.ApplyOptions(opts...)
597	return out, req.Send()
598}
599
600const opGetAnomalies = "GetAnomalies"
601
602// GetAnomaliesRequest generates a "aws/request.Request" representing the
603// client's request for the GetAnomalies operation. The "output" return
604// value will be populated with the request's response once the request completes
605// successfully.
606//
607// Use "Send" method on the returned Request to send the API call to the service.
608// the "output" return value is not valid until after Send returns without error.
609//
610// See GetAnomalies for more information on using the GetAnomalies
611// API call, and error handling.
612//
613// This method is useful when you want to inject custom logic or configuration
614// into the SDK's request lifecycle. Such as custom headers, or retry logic.
615//
616//
617//    // Example sending a request using the GetAnomaliesRequest method.
618//    req, resp := client.GetAnomaliesRequest(params)
619//
620//    err := req.Send()
621//    if err == nil { // resp is now filled
622//        fmt.Println(resp)
623//    }
624//
625// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetAnomalies
626func (c *CostExplorer) GetAnomaliesRequest(input *GetAnomaliesInput) (req *request.Request, output *GetAnomaliesOutput) {
627	op := &request.Operation{
628		Name:       opGetAnomalies,
629		HTTPMethod: "POST",
630		HTTPPath:   "/",
631	}
632
633	if input == nil {
634		input = &GetAnomaliesInput{}
635	}
636
637	output = &GetAnomaliesOutput{}
638	req = c.newRequest(op, input, output)
639	return
640}
641
642// GetAnomalies API operation for AWS Cost Explorer Service.
643//
644// Retrieves all of the cost anomalies detected on your account during the time
645// period that's specified by the DateInterval object.
646//
647// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
648// with awserr.Error's Code and Message methods to get detailed information about
649// the error.
650//
651// See the AWS API reference guide for AWS Cost Explorer Service's
652// API operation GetAnomalies for usage and error information.
653//
654// Returned Error Types:
655//   * LimitExceededException
656//   You made too many calls in a short period of time. Try again later.
657//
658//   * InvalidNextTokenException
659//   The pagination token is invalid. Try again without a pagination token.
660//
661// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetAnomalies
662func (c *CostExplorer) GetAnomalies(input *GetAnomaliesInput) (*GetAnomaliesOutput, error) {
663	req, out := c.GetAnomaliesRequest(input)
664	return out, req.Send()
665}
666
667// GetAnomaliesWithContext is the same as GetAnomalies with the addition of
668// the ability to pass a context and additional request options.
669//
670// See GetAnomalies for details on how to use this API operation.
671//
672// The context must be non-nil and will be used for request cancellation. If
673// the context is nil a panic will occur. In the future the SDK may create
674// sub-contexts for http.Requests. See https://golang.org/pkg/context/
675// for more information on using Contexts.
676func (c *CostExplorer) GetAnomaliesWithContext(ctx aws.Context, input *GetAnomaliesInput, opts ...request.Option) (*GetAnomaliesOutput, error) {
677	req, out := c.GetAnomaliesRequest(input)
678	req.SetContext(ctx)
679	req.ApplyOptions(opts...)
680	return out, req.Send()
681}
682
683const opGetAnomalyMonitors = "GetAnomalyMonitors"
684
685// GetAnomalyMonitorsRequest generates a "aws/request.Request" representing the
686// client's request for the GetAnomalyMonitors operation. The "output" return
687// value will be populated with the request's response once the request completes
688// successfully.
689//
690// Use "Send" method on the returned Request to send the API call to the service.
691// the "output" return value is not valid until after Send returns without error.
692//
693// See GetAnomalyMonitors for more information on using the GetAnomalyMonitors
694// API call, and error handling.
695//
696// This method is useful when you want to inject custom logic or configuration
697// into the SDK's request lifecycle. Such as custom headers, or retry logic.
698//
699//
700//    // Example sending a request using the GetAnomalyMonitorsRequest method.
701//    req, resp := client.GetAnomalyMonitorsRequest(params)
702//
703//    err := req.Send()
704//    if err == nil { // resp is now filled
705//        fmt.Println(resp)
706//    }
707//
708// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetAnomalyMonitors
709func (c *CostExplorer) GetAnomalyMonitorsRequest(input *GetAnomalyMonitorsInput) (req *request.Request, output *GetAnomalyMonitorsOutput) {
710	op := &request.Operation{
711		Name:       opGetAnomalyMonitors,
712		HTTPMethod: "POST",
713		HTTPPath:   "/",
714	}
715
716	if input == nil {
717		input = &GetAnomalyMonitorsInput{}
718	}
719
720	output = &GetAnomalyMonitorsOutput{}
721	req = c.newRequest(op, input, output)
722	return
723}
724
725// GetAnomalyMonitors API operation for AWS Cost Explorer Service.
726//
727// Retrieves the cost anomaly monitor definitions for your account. You can
728// filter using a list of cost anomaly monitor Amazon Resource Names (ARNs).
729//
730// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
731// with awserr.Error's Code and Message methods to get detailed information about
732// the error.
733//
734// See the AWS API reference guide for AWS Cost Explorer Service's
735// API operation GetAnomalyMonitors for usage and error information.
736//
737// Returned Error Types:
738//   * LimitExceededException
739//   You made too many calls in a short period of time. Try again later.
740//
741//   * UnknownMonitorException
742//   The cost anomaly monitor does not exist for the account.
743//
744//   * InvalidNextTokenException
745//   The pagination token is invalid. Try again without a pagination token.
746//
747// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetAnomalyMonitors
748func (c *CostExplorer) GetAnomalyMonitors(input *GetAnomalyMonitorsInput) (*GetAnomalyMonitorsOutput, error) {
749	req, out := c.GetAnomalyMonitorsRequest(input)
750	return out, req.Send()
751}
752
753// GetAnomalyMonitorsWithContext is the same as GetAnomalyMonitors with the addition of
754// the ability to pass a context and additional request options.
755//
756// See GetAnomalyMonitors for details on how to use this API operation.
757//
758// The context must be non-nil and will be used for request cancellation. If
759// the context is nil a panic will occur. In the future the SDK may create
760// sub-contexts for http.Requests. See https://golang.org/pkg/context/
761// for more information on using Contexts.
762func (c *CostExplorer) GetAnomalyMonitorsWithContext(ctx aws.Context, input *GetAnomalyMonitorsInput, opts ...request.Option) (*GetAnomalyMonitorsOutput, error) {
763	req, out := c.GetAnomalyMonitorsRequest(input)
764	req.SetContext(ctx)
765	req.ApplyOptions(opts...)
766	return out, req.Send()
767}
768
769const opGetAnomalySubscriptions = "GetAnomalySubscriptions"
770
771// GetAnomalySubscriptionsRequest generates a "aws/request.Request" representing the
772// client's request for the GetAnomalySubscriptions operation. The "output" return
773// value will be populated with the request's response once the request completes
774// successfully.
775//
776// Use "Send" method on the returned Request to send the API call to the service.
777// the "output" return value is not valid until after Send returns without error.
778//
779// See GetAnomalySubscriptions for more information on using the GetAnomalySubscriptions
780// API call, and error handling.
781//
782// This method is useful when you want to inject custom logic or configuration
783// into the SDK's request lifecycle. Such as custom headers, or retry logic.
784//
785//
786//    // Example sending a request using the GetAnomalySubscriptionsRequest method.
787//    req, resp := client.GetAnomalySubscriptionsRequest(params)
788//
789//    err := req.Send()
790//    if err == nil { // resp is now filled
791//        fmt.Println(resp)
792//    }
793//
794// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetAnomalySubscriptions
795func (c *CostExplorer) GetAnomalySubscriptionsRequest(input *GetAnomalySubscriptionsInput) (req *request.Request, output *GetAnomalySubscriptionsOutput) {
796	op := &request.Operation{
797		Name:       opGetAnomalySubscriptions,
798		HTTPMethod: "POST",
799		HTTPPath:   "/",
800	}
801
802	if input == nil {
803		input = &GetAnomalySubscriptionsInput{}
804	}
805
806	output = &GetAnomalySubscriptionsOutput{}
807	req = c.newRequest(op, input, output)
808	return
809}
810
811// GetAnomalySubscriptions API operation for AWS Cost Explorer Service.
812//
813// Retrieves the cost anomaly subscription objects for your account. You can
814// filter using a list of cost anomaly monitor Amazon Resource Names (ARNs).
815//
816// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
817// with awserr.Error's Code and Message methods to get detailed information about
818// the error.
819//
820// See the AWS API reference guide for AWS Cost Explorer Service's
821// API operation GetAnomalySubscriptions for usage and error information.
822//
823// Returned Error Types:
824//   * LimitExceededException
825//   You made too many calls in a short period of time. Try again later.
826//
827//   * UnknownSubscriptionException
828//   The cost anomaly subscription does not exist for the account.
829//
830//   * InvalidNextTokenException
831//   The pagination token is invalid. Try again without a pagination token.
832//
833// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetAnomalySubscriptions
834func (c *CostExplorer) GetAnomalySubscriptions(input *GetAnomalySubscriptionsInput) (*GetAnomalySubscriptionsOutput, error) {
835	req, out := c.GetAnomalySubscriptionsRequest(input)
836	return out, req.Send()
837}
838
839// GetAnomalySubscriptionsWithContext is the same as GetAnomalySubscriptions with the addition of
840// the ability to pass a context and additional request options.
841//
842// See GetAnomalySubscriptions for details on how to use this API operation.
843//
844// The context must be non-nil and will be used for request cancellation. If
845// the context is nil a panic will occur. In the future the SDK may create
846// sub-contexts for http.Requests. See https://golang.org/pkg/context/
847// for more information on using Contexts.
848func (c *CostExplorer) GetAnomalySubscriptionsWithContext(ctx aws.Context, input *GetAnomalySubscriptionsInput, opts ...request.Option) (*GetAnomalySubscriptionsOutput, error) {
849	req, out := c.GetAnomalySubscriptionsRequest(input)
850	req.SetContext(ctx)
851	req.ApplyOptions(opts...)
852	return out, req.Send()
853}
854
855const opGetCostAndUsage = "GetCostAndUsage"
856
857// GetCostAndUsageRequest generates a "aws/request.Request" representing the
858// client's request for the GetCostAndUsage operation. The "output" return
859// value will be populated with the request's response once the request completes
860// successfully.
861//
862// Use "Send" method on the returned Request to send the API call to the service.
863// the "output" return value is not valid until after Send returns without error.
864//
865// See GetCostAndUsage for more information on using the GetCostAndUsage
866// API call, and error handling.
867//
868// This method is useful when you want to inject custom logic or configuration
869// into the SDK's request lifecycle. Such as custom headers, or retry logic.
870//
871//
872//    // Example sending a request using the GetCostAndUsageRequest method.
873//    req, resp := client.GetCostAndUsageRequest(params)
874//
875//    err := req.Send()
876//    if err == nil { // resp is now filled
877//        fmt.Println(resp)
878//    }
879//
880// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsage
881func (c *CostExplorer) GetCostAndUsageRequest(input *GetCostAndUsageInput) (req *request.Request, output *GetCostAndUsageOutput) {
882	op := &request.Operation{
883		Name:       opGetCostAndUsage,
884		HTTPMethod: "POST",
885		HTTPPath:   "/",
886	}
887
888	if input == nil {
889		input = &GetCostAndUsageInput{}
890	}
891
892	output = &GetCostAndUsageOutput{}
893	req = c.newRequest(op, input, output)
894	return
895}
896
897// GetCostAndUsage API operation for AWS Cost Explorer Service.
898//
899// Retrieves cost and usage metrics for your account. You can specify which
900// cost and usage-related metric that you want the request to return. For example,
901// you can specify BlendedCosts or UsageQuantity. You can also filter and group
902// your data by various dimensions, such as SERVICE or AZ, in a specific time
903// range. For a complete list of valid dimensions, see the GetDimensionValues
904// (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_GetDimensionValues.html)
905// operation. Management account in an organization in Organizations have access
906// to all member accounts.
907//
908// For information about filter limitations, see Quotas and restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-limits.html)
909// in the Billing and Cost Management User Guide.
910//
911// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
912// with awserr.Error's Code and Message methods to get detailed information about
913// the error.
914//
915// See the AWS API reference guide for AWS Cost Explorer Service's
916// API operation GetCostAndUsage for usage and error information.
917//
918// Returned Error Types:
919//   * LimitExceededException
920//   You made too many calls in a short period of time. Try again later.
921//
922//   * BillExpirationException
923//   The requested report expired. Update the date interval and try again.
924//
925//   * DataUnavailableException
926//   The requested data is unavailable.
927//
928//   * InvalidNextTokenException
929//   The pagination token is invalid. Try again without a pagination token.
930//
931//   * RequestChangedException
932//   Your request parameters changed between pages. Try again with the old parameters
933//   or without a pagination token.
934//
935// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsage
936func (c *CostExplorer) GetCostAndUsage(input *GetCostAndUsageInput) (*GetCostAndUsageOutput, error) {
937	req, out := c.GetCostAndUsageRequest(input)
938	return out, req.Send()
939}
940
941// GetCostAndUsageWithContext is the same as GetCostAndUsage with the addition of
942// the ability to pass a context and additional request options.
943//
944// See GetCostAndUsage for details on how to use this API operation.
945//
946// The context must be non-nil and will be used for request cancellation. If
947// the context is nil a panic will occur. In the future the SDK may create
948// sub-contexts for http.Requests. See https://golang.org/pkg/context/
949// for more information on using Contexts.
950func (c *CostExplorer) GetCostAndUsageWithContext(ctx aws.Context, input *GetCostAndUsageInput, opts ...request.Option) (*GetCostAndUsageOutput, error) {
951	req, out := c.GetCostAndUsageRequest(input)
952	req.SetContext(ctx)
953	req.ApplyOptions(opts...)
954	return out, req.Send()
955}
956
957const opGetCostAndUsageWithResources = "GetCostAndUsageWithResources"
958
959// GetCostAndUsageWithResourcesRequest generates a "aws/request.Request" representing the
960// client's request for the GetCostAndUsageWithResources operation. The "output" return
961// value will be populated with the request's response once the request completes
962// successfully.
963//
964// Use "Send" method on the returned Request to send the API call to the service.
965// the "output" return value is not valid until after Send returns without error.
966//
967// See GetCostAndUsageWithResources for more information on using the GetCostAndUsageWithResources
968// API call, and error handling.
969//
970// This method is useful when you want to inject custom logic or configuration
971// into the SDK's request lifecycle. Such as custom headers, or retry logic.
972//
973//
974//    // Example sending a request using the GetCostAndUsageWithResourcesRequest method.
975//    req, resp := client.GetCostAndUsageWithResourcesRequest(params)
976//
977//    err := req.Send()
978//    if err == nil { // resp is now filled
979//        fmt.Println(resp)
980//    }
981//
982// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsageWithResources
983func (c *CostExplorer) GetCostAndUsageWithResourcesRequest(input *GetCostAndUsageWithResourcesInput) (req *request.Request, output *GetCostAndUsageWithResourcesOutput) {
984	op := &request.Operation{
985		Name:       opGetCostAndUsageWithResources,
986		HTTPMethod: "POST",
987		HTTPPath:   "/",
988	}
989
990	if input == nil {
991		input = &GetCostAndUsageWithResourcesInput{}
992	}
993
994	output = &GetCostAndUsageWithResourcesOutput{}
995	req = c.newRequest(op, input, output)
996	return
997}
998
999// GetCostAndUsageWithResources API operation for AWS Cost Explorer Service.
1000//
1001// Retrieves cost and usage metrics with resources for your account. You can
1002// specify which cost and usage-related metric, such as BlendedCosts or UsageQuantity,
1003// that you want the request to return. You can also filter and group your data
1004// by various dimensions, such as SERVICE or AZ, in a specific time range. For
1005// a complete list of valid dimensions, see the GetDimensionValues (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_GetDimensionValues.html)
1006// operation. Management account in an organization in Organizations have access
1007// to all member accounts. This API is currently available for the Amazon Elastic
1008// Compute Cloud – Compute service only.
1009//
1010// This is an opt-in only feature. You can enable this feature from the Cost
1011// Explorer Settings page. For information on how to access the Settings page,
1012// see Controlling Access for Cost Explorer (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/ce-access.html)
1013// in the Billing and Cost Management User Guide.
1014//
1015// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1016// with awserr.Error's Code and Message methods to get detailed information about
1017// the error.
1018//
1019// See the AWS API reference guide for AWS Cost Explorer Service's
1020// API operation GetCostAndUsageWithResources for usage and error information.
1021//
1022// Returned Error Types:
1023//   * DataUnavailableException
1024//   The requested data is unavailable.
1025//
1026//   * LimitExceededException
1027//   You made too many calls in a short period of time. Try again later.
1028//
1029//   * BillExpirationException
1030//   The requested report expired. Update the date interval and try again.
1031//
1032//   * InvalidNextTokenException
1033//   The pagination token is invalid. Try again without a pagination token.
1034//
1035//   * RequestChangedException
1036//   Your request parameters changed between pages. Try again with the old parameters
1037//   or without a pagination token.
1038//
1039// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostAndUsageWithResources
1040func (c *CostExplorer) GetCostAndUsageWithResources(input *GetCostAndUsageWithResourcesInput) (*GetCostAndUsageWithResourcesOutput, error) {
1041	req, out := c.GetCostAndUsageWithResourcesRequest(input)
1042	return out, req.Send()
1043}
1044
1045// GetCostAndUsageWithResourcesWithContext is the same as GetCostAndUsageWithResources with the addition of
1046// the ability to pass a context and additional request options.
1047//
1048// See GetCostAndUsageWithResources for details on how to use this API operation.
1049//
1050// The context must be non-nil and will be used for request cancellation. If
1051// the context is nil a panic will occur. In the future the SDK may create
1052// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1053// for more information on using Contexts.
1054func (c *CostExplorer) GetCostAndUsageWithResourcesWithContext(ctx aws.Context, input *GetCostAndUsageWithResourcesInput, opts ...request.Option) (*GetCostAndUsageWithResourcesOutput, error) {
1055	req, out := c.GetCostAndUsageWithResourcesRequest(input)
1056	req.SetContext(ctx)
1057	req.ApplyOptions(opts...)
1058	return out, req.Send()
1059}
1060
1061const opGetCostCategories = "GetCostCategories"
1062
1063// GetCostCategoriesRequest generates a "aws/request.Request" representing the
1064// client's request for the GetCostCategories operation. The "output" return
1065// value will be populated with the request's response once the request completes
1066// successfully.
1067//
1068// Use "Send" method on the returned Request to send the API call to the service.
1069// the "output" return value is not valid until after Send returns without error.
1070//
1071// See GetCostCategories for more information on using the GetCostCategories
1072// API call, and error handling.
1073//
1074// This method is useful when you want to inject custom logic or configuration
1075// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1076//
1077//
1078//    // Example sending a request using the GetCostCategoriesRequest method.
1079//    req, resp := client.GetCostCategoriesRequest(params)
1080//
1081//    err := req.Send()
1082//    if err == nil { // resp is now filled
1083//        fmt.Println(resp)
1084//    }
1085//
1086// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostCategories
1087func (c *CostExplorer) GetCostCategoriesRequest(input *GetCostCategoriesInput) (req *request.Request, output *GetCostCategoriesOutput) {
1088	op := &request.Operation{
1089		Name:       opGetCostCategories,
1090		HTTPMethod: "POST",
1091		HTTPPath:   "/",
1092	}
1093
1094	if input == nil {
1095		input = &GetCostCategoriesInput{}
1096	}
1097
1098	output = &GetCostCategoriesOutput{}
1099	req = c.newRequest(op, input, output)
1100	return
1101}
1102
1103// GetCostCategories API operation for AWS Cost Explorer Service.
1104//
1105// Retrieves an array of Cost Category names and values incurred cost.
1106//
1107// If some Cost Category names and values are not associated with any cost,
1108// they will not be returned by this API.
1109//
1110// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1111// with awserr.Error's Code and Message methods to get detailed information about
1112// the error.
1113//
1114// See the AWS API reference guide for AWS Cost Explorer Service's
1115// API operation GetCostCategories for usage and error information.
1116//
1117// Returned Error Types:
1118//   * LimitExceededException
1119//   You made too many calls in a short period of time. Try again later.
1120//
1121//   * BillExpirationException
1122//   The requested report expired. Update the date interval and try again.
1123//
1124//   * DataUnavailableException
1125//   The requested data is unavailable.
1126//
1127//   * InvalidNextTokenException
1128//   The pagination token is invalid. Try again without a pagination token.
1129//
1130//   * RequestChangedException
1131//   Your request parameters changed between pages. Try again with the old parameters
1132//   or without a pagination token.
1133//
1134// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostCategories
1135func (c *CostExplorer) GetCostCategories(input *GetCostCategoriesInput) (*GetCostCategoriesOutput, error) {
1136	req, out := c.GetCostCategoriesRequest(input)
1137	return out, req.Send()
1138}
1139
1140// GetCostCategoriesWithContext is the same as GetCostCategories with the addition of
1141// the ability to pass a context and additional request options.
1142//
1143// See GetCostCategories for details on how to use this API operation.
1144//
1145// The context must be non-nil and will be used for request cancellation. If
1146// the context is nil a panic will occur. In the future the SDK may create
1147// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1148// for more information on using Contexts.
1149func (c *CostExplorer) GetCostCategoriesWithContext(ctx aws.Context, input *GetCostCategoriesInput, opts ...request.Option) (*GetCostCategoriesOutput, error) {
1150	req, out := c.GetCostCategoriesRequest(input)
1151	req.SetContext(ctx)
1152	req.ApplyOptions(opts...)
1153	return out, req.Send()
1154}
1155
1156const opGetCostForecast = "GetCostForecast"
1157
1158// GetCostForecastRequest generates a "aws/request.Request" representing the
1159// client's request for the GetCostForecast operation. The "output" return
1160// value will be populated with the request's response once the request completes
1161// successfully.
1162//
1163// Use "Send" method on the returned Request to send the API call to the service.
1164// the "output" return value is not valid until after Send returns without error.
1165//
1166// See GetCostForecast for more information on using the GetCostForecast
1167// API call, and error handling.
1168//
1169// This method is useful when you want to inject custom logic or configuration
1170// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1171//
1172//
1173//    // Example sending a request using the GetCostForecastRequest method.
1174//    req, resp := client.GetCostForecastRequest(params)
1175//
1176//    err := req.Send()
1177//    if err == nil { // resp is now filled
1178//        fmt.Println(resp)
1179//    }
1180//
1181// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostForecast
1182func (c *CostExplorer) GetCostForecastRequest(input *GetCostForecastInput) (req *request.Request, output *GetCostForecastOutput) {
1183	op := &request.Operation{
1184		Name:       opGetCostForecast,
1185		HTTPMethod: "POST",
1186		HTTPPath:   "/",
1187	}
1188
1189	if input == nil {
1190		input = &GetCostForecastInput{}
1191	}
1192
1193	output = &GetCostForecastOutput{}
1194	req = c.newRequest(op, input, output)
1195	return
1196}
1197
1198// GetCostForecast API operation for AWS Cost Explorer Service.
1199//
1200// Retrieves a forecast for how much Amazon Web Services predicts that you will
1201// spend over the forecast time period that you select, based on your past costs.
1202//
1203// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1204// with awserr.Error's Code and Message methods to get detailed information about
1205// the error.
1206//
1207// See the AWS API reference guide for AWS Cost Explorer Service's
1208// API operation GetCostForecast for usage and error information.
1209//
1210// Returned Error Types:
1211//   * LimitExceededException
1212//   You made too many calls in a short period of time. Try again later.
1213//
1214//   * DataUnavailableException
1215//   The requested data is unavailable.
1216//
1217// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetCostForecast
1218func (c *CostExplorer) GetCostForecast(input *GetCostForecastInput) (*GetCostForecastOutput, error) {
1219	req, out := c.GetCostForecastRequest(input)
1220	return out, req.Send()
1221}
1222
1223// GetCostForecastWithContext is the same as GetCostForecast with the addition of
1224// the ability to pass a context and additional request options.
1225//
1226// See GetCostForecast for details on how to use this API operation.
1227//
1228// The context must be non-nil and will be used for request cancellation. If
1229// the context is nil a panic will occur. In the future the SDK may create
1230// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1231// for more information on using Contexts.
1232func (c *CostExplorer) GetCostForecastWithContext(ctx aws.Context, input *GetCostForecastInput, opts ...request.Option) (*GetCostForecastOutput, error) {
1233	req, out := c.GetCostForecastRequest(input)
1234	req.SetContext(ctx)
1235	req.ApplyOptions(opts...)
1236	return out, req.Send()
1237}
1238
1239const opGetDimensionValues = "GetDimensionValues"
1240
1241// GetDimensionValuesRequest generates a "aws/request.Request" representing the
1242// client's request for the GetDimensionValues operation. The "output" return
1243// value will be populated with the request's response once the request completes
1244// successfully.
1245//
1246// Use "Send" method on the returned Request to send the API call to the service.
1247// the "output" return value is not valid until after Send returns without error.
1248//
1249// See GetDimensionValues for more information on using the GetDimensionValues
1250// API call, and error handling.
1251//
1252// This method is useful when you want to inject custom logic or configuration
1253// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1254//
1255//
1256//    // Example sending a request using the GetDimensionValuesRequest method.
1257//    req, resp := client.GetDimensionValuesRequest(params)
1258//
1259//    err := req.Send()
1260//    if err == nil { // resp is now filled
1261//        fmt.Println(resp)
1262//    }
1263//
1264// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetDimensionValues
1265func (c *CostExplorer) GetDimensionValuesRequest(input *GetDimensionValuesInput) (req *request.Request, output *GetDimensionValuesOutput) {
1266	op := &request.Operation{
1267		Name:       opGetDimensionValues,
1268		HTTPMethod: "POST",
1269		HTTPPath:   "/",
1270	}
1271
1272	if input == nil {
1273		input = &GetDimensionValuesInput{}
1274	}
1275
1276	output = &GetDimensionValuesOutput{}
1277	req = c.newRequest(op, input, output)
1278	return
1279}
1280
1281// GetDimensionValues API operation for AWS Cost Explorer Service.
1282//
1283// Retrieves all available filter values for a specified filter over a period
1284// of time. You can search the dimension values for an arbitrary string.
1285//
1286// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1287// with awserr.Error's Code and Message methods to get detailed information about
1288// the error.
1289//
1290// See the AWS API reference guide for AWS Cost Explorer Service's
1291// API operation GetDimensionValues for usage and error information.
1292//
1293// Returned Error Types:
1294//   * LimitExceededException
1295//   You made too many calls in a short period of time. Try again later.
1296//
1297//   * BillExpirationException
1298//   The requested report expired. Update the date interval and try again.
1299//
1300//   * DataUnavailableException
1301//   The requested data is unavailable.
1302//
1303//   * InvalidNextTokenException
1304//   The pagination token is invalid. Try again without a pagination token.
1305//
1306//   * RequestChangedException
1307//   Your request parameters changed between pages. Try again with the old parameters
1308//   or without a pagination token.
1309//
1310// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetDimensionValues
1311func (c *CostExplorer) GetDimensionValues(input *GetDimensionValuesInput) (*GetDimensionValuesOutput, error) {
1312	req, out := c.GetDimensionValuesRequest(input)
1313	return out, req.Send()
1314}
1315
1316// GetDimensionValuesWithContext is the same as GetDimensionValues with the addition of
1317// the ability to pass a context and additional request options.
1318//
1319// See GetDimensionValues for details on how to use this API operation.
1320//
1321// The context must be non-nil and will be used for request cancellation. If
1322// the context is nil a panic will occur. In the future the SDK may create
1323// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1324// for more information on using Contexts.
1325func (c *CostExplorer) GetDimensionValuesWithContext(ctx aws.Context, input *GetDimensionValuesInput, opts ...request.Option) (*GetDimensionValuesOutput, error) {
1326	req, out := c.GetDimensionValuesRequest(input)
1327	req.SetContext(ctx)
1328	req.ApplyOptions(opts...)
1329	return out, req.Send()
1330}
1331
1332const opGetReservationCoverage = "GetReservationCoverage"
1333
1334// GetReservationCoverageRequest generates a "aws/request.Request" representing the
1335// client's request for the GetReservationCoverage operation. The "output" return
1336// value will be populated with the request's response once the request completes
1337// successfully.
1338//
1339// Use "Send" method on the returned Request to send the API call to the service.
1340// the "output" return value is not valid until after Send returns without error.
1341//
1342// See GetReservationCoverage for more information on using the GetReservationCoverage
1343// API call, and error handling.
1344//
1345// This method is useful when you want to inject custom logic or configuration
1346// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1347//
1348//
1349//    // Example sending a request using the GetReservationCoverageRequest method.
1350//    req, resp := client.GetReservationCoverageRequest(params)
1351//
1352//    err := req.Send()
1353//    if err == nil { // resp is now filled
1354//        fmt.Println(resp)
1355//    }
1356//
1357// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationCoverage
1358func (c *CostExplorer) GetReservationCoverageRequest(input *GetReservationCoverageInput) (req *request.Request, output *GetReservationCoverageOutput) {
1359	op := &request.Operation{
1360		Name:       opGetReservationCoverage,
1361		HTTPMethod: "POST",
1362		HTTPPath:   "/",
1363	}
1364
1365	if input == nil {
1366		input = &GetReservationCoverageInput{}
1367	}
1368
1369	output = &GetReservationCoverageOutput{}
1370	req = c.newRequest(op, input, output)
1371	return
1372}
1373
1374// GetReservationCoverage API operation for AWS Cost Explorer Service.
1375//
1376// Retrieves the reservation coverage for your account. This enables you to
1377// see how much of your Amazon Elastic Compute Cloud, Amazon ElastiCache, Amazon
1378// Relational Database Service, or Amazon Redshift usage is covered by a reservation.
1379// An organization's management account can see the coverage of the associated
1380// member accounts. This supports dimensions, Cost Categories, and nested expressions.
1381// For any time period, you can filter data about reservation usage by the following
1382// dimensions:
1383//
1384//    * AZ
1385//
1386//    * CACHE_ENGINE
1387//
1388//    * DATABASE_ENGINE
1389//
1390//    * DEPLOYMENT_OPTION
1391//
1392//    * INSTANCE_TYPE
1393//
1394//    * LINKED_ACCOUNT
1395//
1396//    * OPERATING_SYSTEM
1397//
1398//    * PLATFORM
1399//
1400//    * REGION
1401//
1402//    * SERVICE
1403//
1404//    * TAG
1405//
1406//    * TENANCY
1407//
1408// To determine valid values for a dimension, use the GetDimensionValues operation.
1409//
1410// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1411// with awserr.Error's Code and Message methods to get detailed information about
1412// the error.
1413//
1414// See the AWS API reference guide for AWS Cost Explorer Service's
1415// API operation GetReservationCoverage for usage and error information.
1416//
1417// Returned Error Types:
1418//   * LimitExceededException
1419//   You made too many calls in a short period of time. Try again later.
1420//
1421//   * DataUnavailableException
1422//   The requested data is unavailable.
1423//
1424//   * InvalidNextTokenException
1425//   The pagination token is invalid. Try again without a pagination token.
1426//
1427// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationCoverage
1428func (c *CostExplorer) GetReservationCoverage(input *GetReservationCoverageInput) (*GetReservationCoverageOutput, error) {
1429	req, out := c.GetReservationCoverageRequest(input)
1430	return out, req.Send()
1431}
1432
1433// GetReservationCoverageWithContext is the same as GetReservationCoverage with the addition of
1434// the ability to pass a context and additional request options.
1435//
1436// See GetReservationCoverage for details on how to use this API operation.
1437//
1438// The context must be non-nil and will be used for request cancellation. If
1439// the context is nil a panic will occur. In the future the SDK may create
1440// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1441// for more information on using Contexts.
1442func (c *CostExplorer) GetReservationCoverageWithContext(ctx aws.Context, input *GetReservationCoverageInput, opts ...request.Option) (*GetReservationCoverageOutput, error) {
1443	req, out := c.GetReservationCoverageRequest(input)
1444	req.SetContext(ctx)
1445	req.ApplyOptions(opts...)
1446	return out, req.Send()
1447}
1448
1449const opGetReservationPurchaseRecommendation = "GetReservationPurchaseRecommendation"
1450
1451// GetReservationPurchaseRecommendationRequest generates a "aws/request.Request" representing the
1452// client's request for the GetReservationPurchaseRecommendation operation. The "output" return
1453// value will be populated with the request's response once the request completes
1454// successfully.
1455//
1456// Use "Send" method on the returned Request to send the API call to the service.
1457// the "output" return value is not valid until after Send returns without error.
1458//
1459// See GetReservationPurchaseRecommendation for more information on using the GetReservationPurchaseRecommendation
1460// API call, and error handling.
1461//
1462// This method is useful when you want to inject custom logic or configuration
1463// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1464//
1465//
1466//    // Example sending a request using the GetReservationPurchaseRecommendationRequest method.
1467//    req, resp := client.GetReservationPurchaseRecommendationRequest(params)
1468//
1469//    err := req.Send()
1470//    if err == nil { // resp is now filled
1471//        fmt.Println(resp)
1472//    }
1473//
1474// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationPurchaseRecommendation
1475func (c *CostExplorer) GetReservationPurchaseRecommendationRequest(input *GetReservationPurchaseRecommendationInput) (req *request.Request, output *GetReservationPurchaseRecommendationOutput) {
1476	op := &request.Operation{
1477		Name:       opGetReservationPurchaseRecommendation,
1478		HTTPMethod: "POST",
1479		HTTPPath:   "/",
1480	}
1481
1482	if input == nil {
1483		input = &GetReservationPurchaseRecommendationInput{}
1484	}
1485
1486	output = &GetReservationPurchaseRecommendationOutput{}
1487	req = c.newRequest(op, input, output)
1488	return
1489}
1490
1491// GetReservationPurchaseRecommendation API operation for AWS Cost Explorer Service.
1492//
1493// Gets recommendations for which reservations to purchase. These recommendations
1494// could help you reduce your costs. Reservations provide a discounted hourly
1495// rate (up to 75%) compared to On-Demand pricing.
1496//
1497// Amazon Web Services generates your recommendations by identifying your On-Demand
1498// usage during a specific time period and collecting your usage into categories
1499// that are eligible for a reservation. After Amazon Web Services has these
1500// categories, it simulates every combination of reservations in each category
1501// of usage to identify the best number of each type of RI to purchase to maximize
1502// your estimated savings.
1503//
1504// For example, Amazon Web Services automatically aggregates your Amazon EC2
1505// Linux, shared tenancy, and c4 family usage in the US West (Oregon) Region
1506// and recommends that you buy size-flexible regional reservations to apply
1507// to the c4 family usage. Amazon Web Services recommends the smallest size
1508// instance in an instance family. This makes it easier to purchase a size-flexible
1509// RI. Amazon Web Services also shows the equal number of normalized units so
1510// that you can purchase any instance size that you want. For this example,
1511// your RI recommendation would be for c4.large because that is the smallest
1512// size instance in the c4 instance family.
1513//
1514// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1515// with awserr.Error's Code and Message methods to get detailed information about
1516// the error.
1517//
1518// See the AWS API reference guide for AWS Cost Explorer Service's
1519// API operation GetReservationPurchaseRecommendation for usage and error information.
1520//
1521// Returned Error Types:
1522//   * LimitExceededException
1523//   You made too many calls in a short period of time. Try again later.
1524//
1525//   * DataUnavailableException
1526//   The requested data is unavailable.
1527//
1528//   * InvalidNextTokenException
1529//   The pagination token is invalid. Try again without a pagination token.
1530//
1531// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationPurchaseRecommendation
1532func (c *CostExplorer) GetReservationPurchaseRecommendation(input *GetReservationPurchaseRecommendationInput) (*GetReservationPurchaseRecommendationOutput, error) {
1533	req, out := c.GetReservationPurchaseRecommendationRequest(input)
1534	return out, req.Send()
1535}
1536
1537// GetReservationPurchaseRecommendationWithContext is the same as GetReservationPurchaseRecommendation with the addition of
1538// the ability to pass a context and additional request options.
1539//
1540// See GetReservationPurchaseRecommendation for details on how to use this API operation.
1541//
1542// The context must be non-nil and will be used for request cancellation. If
1543// the context is nil a panic will occur. In the future the SDK may create
1544// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1545// for more information on using Contexts.
1546func (c *CostExplorer) GetReservationPurchaseRecommendationWithContext(ctx aws.Context, input *GetReservationPurchaseRecommendationInput, opts ...request.Option) (*GetReservationPurchaseRecommendationOutput, error) {
1547	req, out := c.GetReservationPurchaseRecommendationRequest(input)
1548	req.SetContext(ctx)
1549	req.ApplyOptions(opts...)
1550	return out, req.Send()
1551}
1552
1553const opGetReservationUtilization = "GetReservationUtilization"
1554
1555// GetReservationUtilizationRequest generates a "aws/request.Request" representing the
1556// client's request for the GetReservationUtilization operation. The "output" return
1557// value will be populated with the request's response once the request completes
1558// successfully.
1559//
1560// Use "Send" method on the returned Request to send the API call to the service.
1561// the "output" return value is not valid until after Send returns without error.
1562//
1563// See GetReservationUtilization for more information on using the GetReservationUtilization
1564// API call, and error handling.
1565//
1566// This method is useful when you want to inject custom logic or configuration
1567// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1568//
1569//
1570//    // Example sending a request using the GetReservationUtilizationRequest method.
1571//    req, resp := client.GetReservationUtilizationRequest(params)
1572//
1573//    err := req.Send()
1574//    if err == nil { // resp is now filled
1575//        fmt.Println(resp)
1576//    }
1577//
1578// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationUtilization
1579func (c *CostExplorer) GetReservationUtilizationRequest(input *GetReservationUtilizationInput) (req *request.Request, output *GetReservationUtilizationOutput) {
1580	op := &request.Operation{
1581		Name:       opGetReservationUtilization,
1582		HTTPMethod: "POST",
1583		HTTPPath:   "/",
1584	}
1585
1586	if input == nil {
1587		input = &GetReservationUtilizationInput{}
1588	}
1589
1590	output = &GetReservationUtilizationOutput{}
1591	req = c.newRequest(op, input, output)
1592	return
1593}
1594
1595// GetReservationUtilization API operation for AWS Cost Explorer Service.
1596//
1597// Retrieves the reservation utilization for your account. Management account
1598// in an organization have access to member accounts. You can filter data by
1599// dimensions in a time period. You can use GetDimensionValues to determine
1600// the possible dimension values. Currently, you can group only by SUBSCRIPTION_ID.
1601//
1602// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1603// with awserr.Error's Code and Message methods to get detailed information about
1604// the error.
1605//
1606// See the AWS API reference guide for AWS Cost Explorer Service's
1607// API operation GetReservationUtilization for usage and error information.
1608//
1609// Returned Error Types:
1610//   * LimitExceededException
1611//   You made too many calls in a short period of time. Try again later.
1612//
1613//   * DataUnavailableException
1614//   The requested data is unavailable.
1615//
1616//   * InvalidNextTokenException
1617//   The pagination token is invalid. Try again without a pagination token.
1618//
1619// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationUtilization
1620func (c *CostExplorer) GetReservationUtilization(input *GetReservationUtilizationInput) (*GetReservationUtilizationOutput, error) {
1621	req, out := c.GetReservationUtilizationRequest(input)
1622	return out, req.Send()
1623}
1624
1625// GetReservationUtilizationWithContext is the same as GetReservationUtilization with the addition of
1626// the ability to pass a context and additional request options.
1627//
1628// See GetReservationUtilization for details on how to use this API operation.
1629//
1630// The context must be non-nil and will be used for request cancellation. If
1631// the context is nil a panic will occur. In the future the SDK may create
1632// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1633// for more information on using Contexts.
1634func (c *CostExplorer) GetReservationUtilizationWithContext(ctx aws.Context, input *GetReservationUtilizationInput, opts ...request.Option) (*GetReservationUtilizationOutput, error) {
1635	req, out := c.GetReservationUtilizationRequest(input)
1636	req.SetContext(ctx)
1637	req.ApplyOptions(opts...)
1638	return out, req.Send()
1639}
1640
1641const opGetRightsizingRecommendation = "GetRightsizingRecommendation"
1642
1643// GetRightsizingRecommendationRequest generates a "aws/request.Request" representing the
1644// client's request for the GetRightsizingRecommendation operation. The "output" return
1645// value will be populated with the request's response once the request completes
1646// successfully.
1647//
1648// Use "Send" method on the returned Request to send the API call to the service.
1649// the "output" return value is not valid until after Send returns without error.
1650//
1651// See GetRightsizingRecommendation for more information on using the GetRightsizingRecommendation
1652// API call, and error handling.
1653//
1654// This method is useful when you want to inject custom logic or configuration
1655// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1656//
1657//
1658//    // Example sending a request using the GetRightsizingRecommendationRequest method.
1659//    req, resp := client.GetRightsizingRecommendationRequest(params)
1660//
1661//    err := req.Send()
1662//    if err == nil { // resp is now filled
1663//        fmt.Println(resp)
1664//    }
1665//
1666// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetRightsizingRecommendation
1667func (c *CostExplorer) GetRightsizingRecommendationRequest(input *GetRightsizingRecommendationInput) (req *request.Request, output *GetRightsizingRecommendationOutput) {
1668	op := &request.Operation{
1669		Name:       opGetRightsizingRecommendation,
1670		HTTPMethod: "POST",
1671		HTTPPath:   "/",
1672	}
1673
1674	if input == nil {
1675		input = &GetRightsizingRecommendationInput{}
1676	}
1677
1678	output = &GetRightsizingRecommendationOutput{}
1679	req = c.newRequest(op, input, output)
1680	return
1681}
1682
1683// GetRightsizingRecommendation API operation for AWS Cost Explorer Service.
1684//
1685// Creates recommendations that help you save cost by identifying idle and underutilized
1686// Amazon EC2 instances.
1687//
1688// Recommendations are generated to either downsize or terminate instances,
1689// along with providing savings detail and metrics. For details on calculation
1690// and function, see Optimizing Your Cost with Rightsizing Recommendations (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/ce-rightsizing.html)
1691// in the Billing and Cost Management User Guide.
1692//
1693// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1694// with awserr.Error's Code and Message methods to get detailed information about
1695// the error.
1696//
1697// See the AWS API reference guide for AWS Cost Explorer Service's
1698// API operation GetRightsizingRecommendation for usage and error information.
1699//
1700// Returned Error Types:
1701//   * LimitExceededException
1702//   You made too many calls in a short period of time. Try again later.
1703//
1704//   * InvalidNextTokenException
1705//   The pagination token is invalid. Try again without a pagination token.
1706//
1707// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetRightsizingRecommendation
1708func (c *CostExplorer) GetRightsizingRecommendation(input *GetRightsizingRecommendationInput) (*GetRightsizingRecommendationOutput, error) {
1709	req, out := c.GetRightsizingRecommendationRequest(input)
1710	return out, req.Send()
1711}
1712
1713// GetRightsizingRecommendationWithContext is the same as GetRightsizingRecommendation with the addition of
1714// the ability to pass a context and additional request options.
1715//
1716// See GetRightsizingRecommendation for details on how to use this API operation.
1717//
1718// The context must be non-nil and will be used for request cancellation. If
1719// the context is nil a panic will occur. In the future the SDK may create
1720// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1721// for more information on using Contexts.
1722func (c *CostExplorer) GetRightsizingRecommendationWithContext(ctx aws.Context, input *GetRightsizingRecommendationInput, opts ...request.Option) (*GetRightsizingRecommendationOutput, error) {
1723	req, out := c.GetRightsizingRecommendationRequest(input)
1724	req.SetContext(ctx)
1725	req.ApplyOptions(opts...)
1726	return out, req.Send()
1727}
1728
1729const opGetSavingsPlansCoverage = "GetSavingsPlansCoverage"
1730
1731// GetSavingsPlansCoverageRequest generates a "aws/request.Request" representing the
1732// client's request for the GetSavingsPlansCoverage operation. The "output" return
1733// value will be populated with the request's response once the request completes
1734// successfully.
1735//
1736// Use "Send" method on the returned Request to send the API call to the service.
1737// the "output" return value is not valid until after Send returns without error.
1738//
1739// See GetSavingsPlansCoverage for more information on using the GetSavingsPlansCoverage
1740// API call, and error handling.
1741//
1742// This method is useful when you want to inject custom logic or configuration
1743// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1744//
1745//
1746//    // Example sending a request using the GetSavingsPlansCoverageRequest method.
1747//    req, resp := client.GetSavingsPlansCoverageRequest(params)
1748//
1749//    err := req.Send()
1750//    if err == nil { // resp is now filled
1751//        fmt.Println(resp)
1752//    }
1753//
1754// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansCoverage
1755func (c *CostExplorer) GetSavingsPlansCoverageRequest(input *GetSavingsPlansCoverageInput) (req *request.Request, output *GetSavingsPlansCoverageOutput) {
1756	op := &request.Operation{
1757		Name:       opGetSavingsPlansCoverage,
1758		HTTPMethod: "POST",
1759		HTTPPath:   "/",
1760		Paginator: &request.Paginator{
1761			InputTokens:     []string{"NextToken"},
1762			OutputTokens:    []string{"NextToken"},
1763			LimitToken:      "MaxResults",
1764			TruncationToken: "",
1765		},
1766	}
1767
1768	if input == nil {
1769		input = &GetSavingsPlansCoverageInput{}
1770	}
1771
1772	output = &GetSavingsPlansCoverageOutput{}
1773	req = c.newRequest(op, input, output)
1774	return
1775}
1776
1777// GetSavingsPlansCoverage API operation for AWS Cost Explorer Service.
1778//
1779// Retrieves the Savings Plans covered for your account. This enables you to
1780// see how much of your cost is covered by a Savings Plan. An organization’s
1781// management account can see the coverage of the associated member accounts.
1782// This supports dimensions, Cost Categories, and nested expressions. For any
1783// time period, you can filter data for Savings Plans usage with the following
1784// dimensions:
1785//
1786//    * LINKED_ACCOUNT
1787//
1788//    * REGION
1789//
1790//    * SERVICE
1791//
1792//    * INSTANCE_FAMILY
1793//
1794// To determine valid values for a dimension, use the GetDimensionValues operation.
1795//
1796// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1797// with awserr.Error's Code and Message methods to get detailed information about
1798// the error.
1799//
1800// See the AWS API reference guide for AWS Cost Explorer Service's
1801// API operation GetSavingsPlansCoverage for usage and error information.
1802//
1803// Returned Error Types:
1804//   * LimitExceededException
1805//   You made too many calls in a short period of time. Try again later.
1806//
1807//   * DataUnavailableException
1808//   The requested data is unavailable.
1809//
1810//   * InvalidNextTokenException
1811//   The pagination token is invalid. Try again without a pagination token.
1812//
1813// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansCoverage
1814func (c *CostExplorer) GetSavingsPlansCoverage(input *GetSavingsPlansCoverageInput) (*GetSavingsPlansCoverageOutput, error) {
1815	req, out := c.GetSavingsPlansCoverageRequest(input)
1816	return out, req.Send()
1817}
1818
1819// GetSavingsPlansCoverageWithContext is the same as GetSavingsPlansCoverage with the addition of
1820// the ability to pass a context and additional request options.
1821//
1822// See GetSavingsPlansCoverage for details on how to use this API operation.
1823//
1824// The context must be non-nil and will be used for request cancellation. If
1825// the context is nil a panic will occur. In the future the SDK may create
1826// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1827// for more information on using Contexts.
1828func (c *CostExplorer) GetSavingsPlansCoverageWithContext(ctx aws.Context, input *GetSavingsPlansCoverageInput, opts ...request.Option) (*GetSavingsPlansCoverageOutput, error) {
1829	req, out := c.GetSavingsPlansCoverageRequest(input)
1830	req.SetContext(ctx)
1831	req.ApplyOptions(opts...)
1832	return out, req.Send()
1833}
1834
1835// GetSavingsPlansCoveragePages iterates over the pages of a GetSavingsPlansCoverage operation,
1836// calling the "fn" function with the response data for each page. To stop
1837// iterating, return false from the fn function.
1838//
1839// See GetSavingsPlansCoverage method for more information on how to use this operation.
1840//
1841// Note: This operation can generate multiple requests to a service.
1842//
1843//    // Example iterating over at most 3 pages of a GetSavingsPlansCoverage operation.
1844//    pageNum := 0
1845//    err := client.GetSavingsPlansCoveragePages(params,
1846//        func(page *costexplorer.GetSavingsPlansCoverageOutput, lastPage bool) bool {
1847//            pageNum++
1848//            fmt.Println(page)
1849//            return pageNum <= 3
1850//        })
1851//
1852func (c *CostExplorer) GetSavingsPlansCoveragePages(input *GetSavingsPlansCoverageInput, fn func(*GetSavingsPlansCoverageOutput, bool) bool) error {
1853	return c.GetSavingsPlansCoveragePagesWithContext(aws.BackgroundContext(), input, fn)
1854}
1855
1856// GetSavingsPlansCoveragePagesWithContext same as GetSavingsPlansCoveragePages except
1857// it takes a Context and allows setting request options on the pages.
1858//
1859// The context must be non-nil and will be used for request cancellation. If
1860// the context is nil a panic will occur. In the future the SDK may create
1861// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1862// for more information on using Contexts.
1863func (c *CostExplorer) GetSavingsPlansCoveragePagesWithContext(ctx aws.Context, input *GetSavingsPlansCoverageInput, fn func(*GetSavingsPlansCoverageOutput, bool) bool, opts ...request.Option) error {
1864	p := request.Pagination{
1865		NewRequest: func() (*request.Request, error) {
1866			var inCpy *GetSavingsPlansCoverageInput
1867			if input != nil {
1868				tmp := *input
1869				inCpy = &tmp
1870			}
1871			req, _ := c.GetSavingsPlansCoverageRequest(inCpy)
1872			req.SetContext(ctx)
1873			req.ApplyOptions(opts...)
1874			return req, nil
1875		},
1876	}
1877
1878	for p.Next() {
1879		if !fn(p.Page().(*GetSavingsPlansCoverageOutput), !p.HasNextPage()) {
1880			break
1881		}
1882	}
1883
1884	return p.Err()
1885}
1886
1887const opGetSavingsPlansPurchaseRecommendation = "GetSavingsPlansPurchaseRecommendation"
1888
1889// GetSavingsPlansPurchaseRecommendationRequest generates a "aws/request.Request" representing the
1890// client's request for the GetSavingsPlansPurchaseRecommendation operation. The "output" return
1891// value will be populated with the request's response once the request completes
1892// successfully.
1893//
1894// Use "Send" method on the returned Request to send the API call to the service.
1895// the "output" return value is not valid until after Send returns without error.
1896//
1897// See GetSavingsPlansPurchaseRecommendation for more information on using the GetSavingsPlansPurchaseRecommendation
1898// API call, and error handling.
1899//
1900// This method is useful when you want to inject custom logic or configuration
1901// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1902//
1903//
1904//    // Example sending a request using the GetSavingsPlansPurchaseRecommendationRequest method.
1905//    req, resp := client.GetSavingsPlansPurchaseRecommendationRequest(params)
1906//
1907//    err := req.Send()
1908//    if err == nil { // resp is now filled
1909//        fmt.Println(resp)
1910//    }
1911//
1912// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansPurchaseRecommendation
1913func (c *CostExplorer) GetSavingsPlansPurchaseRecommendationRequest(input *GetSavingsPlansPurchaseRecommendationInput) (req *request.Request, output *GetSavingsPlansPurchaseRecommendationOutput) {
1914	op := &request.Operation{
1915		Name:       opGetSavingsPlansPurchaseRecommendation,
1916		HTTPMethod: "POST",
1917		HTTPPath:   "/",
1918	}
1919
1920	if input == nil {
1921		input = &GetSavingsPlansPurchaseRecommendationInput{}
1922	}
1923
1924	output = &GetSavingsPlansPurchaseRecommendationOutput{}
1925	req = c.newRequest(op, input, output)
1926	return
1927}
1928
1929// GetSavingsPlansPurchaseRecommendation API operation for AWS Cost Explorer Service.
1930//
1931// Retrieves your request parameters, Savings Plan Recommendations Summary and
1932// Details.
1933//
1934// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1935// with awserr.Error's Code and Message methods to get detailed information about
1936// the error.
1937//
1938// See the AWS API reference guide for AWS Cost Explorer Service's
1939// API operation GetSavingsPlansPurchaseRecommendation for usage and error information.
1940//
1941// Returned Error Types:
1942//   * LimitExceededException
1943//   You made too many calls in a short period of time. Try again later.
1944//
1945//   * InvalidNextTokenException
1946//   The pagination token is invalid. Try again without a pagination token.
1947//
1948// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansPurchaseRecommendation
1949func (c *CostExplorer) GetSavingsPlansPurchaseRecommendation(input *GetSavingsPlansPurchaseRecommendationInput) (*GetSavingsPlansPurchaseRecommendationOutput, error) {
1950	req, out := c.GetSavingsPlansPurchaseRecommendationRequest(input)
1951	return out, req.Send()
1952}
1953
1954// GetSavingsPlansPurchaseRecommendationWithContext is the same as GetSavingsPlansPurchaseRecommendation with the addition of
1955// the ability to pass a context and additional request options.
1956//
1957// See GetSavingsPlansPurchaseRecommendation for details on how to use this API operation.
1958//
1959// The context must be non-nil and will be used for request cancellation. If
1960// the context is nil a panic will occur. In the future the SDK may create
1961// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1962// for more information on using Contexts.
1963func (c *CostExplorer) GetSavingsPlansPurchaseRecommendationWithContext(ctx aws.Context, input *GetSavingsPlansPurchaseRecommendationInput, opts ...request.Option) (*GetSavingsPlansPurchaseRecommendationOutput, error) {
1964	req, out := c.GetSavingsPlansPurchaseRecommendationRequest(input)
1965	req.SetContext(ctx)
1966	req.ApplyOptions(opts...)
1967	return out, req.Send()
1968}
1969
1970const opGetSavingsPlansUtilization = "GetSavingsPlansUtilization"
1971
1972// GetSavingsPlansUtilizationRequest generates a "aws/request.Request" representing the
1973// client's request for the GetSavingsPlansUtilization operation. The "output" return
1974// value will be populated with the request's response once the request completes
1975// successfully.
1976//
1977// Use "Send" method on the returned Request to send the API call to the service.
1978// the "output" return value is not valid until after Send returns without error.
1979//
1980// See GetSavingsPlansUtilization for more information on using the GetSavingsPlansUtilization
1981// API call, and error handling.
1982//
1983// This method is useful when you want to inject custom logic or configuration
1984// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1985//
1986//
1987//    // Example sending a request using the GetSavingsPlansUtilizationRequest method.
1988//    req, resp := client.GetSavingsPlansUtilizationRequest(params)
1989//
1990//    err := req.Send()
1991//    if err == nil { // resp is now filled
1992//        fmt.Println(resp)
1993//    }
1994//
1995// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansUtilization
1996func (c *CostExplorer) GetSavingsPlansUtilizationRequest(input *GetSavingsPlansUtilizationInput) (req *request.Request, output *GetSavingsPlansUtilizationOutput) {
1997	op := &request.Operation{
1998		Name:       opGetSavingsPlansUtilization,
1999		HTTPMethod: "POST",
2000		HTTPPath:   "/",
2001	}
2002
2003	if input == nil {
2004		input = &GetSavingsPlansUtilizationInput{}
2005	}
2006
2007	output = &GetSavingsPlansUtilizationOutput{}
2008	req = c.newRequest(op, input, output)
2009	return
2010}
2011
2012// GetSavingsPlansUtilization API operation for AWS Cost Explorer Service.
2013//
2014// Retrieves the Savings Plans utilization for your account across date ranges
2015// with daily or monthly granularity. Management account in an organization
2016// have access to member accounts. You can use GetDimensionValues in SAVINGS_PLANS
2017// to determine the possible dimension values.
2018//
2019// You cannot group by any dimension values for GetSavingsPlansUtilization.
2020//
2021// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2022// with awserr.Error's Code and Message methods to get detailed information about
2023// the error.
2024//
2025// See the AWS API reference guide for AWS Cost Explorer Service's
2026// API operation GetSavingsPlansUtilization for usage and error information.
2027//
2028// Returned Error Types:
2029//   * LimitExceededException
2030//   You made too many calls in a short period of time. Try again later.
2031//
2032//   * DataUnavailableException
2033//   The requested data is unavailable.
2034//
2035// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansUtilization
2036func (c *CostExplorer) GetSavingsPlansUtilization(input *GetSavingsPlansUtilizationInput) (*GetSavingsPlansUtilizationOutput, error) {
2037	req, out := c.GetSavingsPlansUtilizationRequest(input)
2038	return out, req.Send()
2039}
2040
2041// GetSavingsPlansUtilizationWithContext is the same as GetSavingsPlansUtilization with the addition of
2042// the ability to pass a context and additional request options.
2043//
2044// See GetSavingsPlansUtilization for details on how to use this API operation.
2045//
2046// The context must be non-nil and will be used for request cancellation. If
2047// the context is nil a panic will occur. In the future the SDK may create
2048// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2049// for more information on using Contexts.
2050func (c *CostExplorer) GetSavingsPlansUtilizationWithContext(ctx aws.Context, input *GetSavingsPlansUtilizationInput, opts ...request.Option) (*GetSavingsPlansUtilizationOutput, error) {
2051	req, out := c.GetSavingsPlansUtilizationRequest(input)
2052	req.SetContext(ctx)
2053	req.ApplyOptions(opts...)
2054	return out, req.Send()
2055}
2056
2057const opGetSavingsPlansUtilizationDetails = "GetSavingsPlansUtilizationDetails"
2058
2059// GetSavingsPlansUtilizationDetailsRequest generates a "aws/request.Request" representing the
2060// client's request for the GetSavingsPlansUtilizationDetails operation. The "output" return
2061// value will be populated with the request's response once the request completes
2062// successfully.
2063//
2064// Use "Send" method on the returned Request to send the API call to the service.
2065// the "output" return value is not valid until after Send returns without error.
2066//
2067// See GetSavingsPlansUtilizationDetails for more information on using the GetSavingsPlansUtilizationDetails
2068// API call, and error handling.
2069//
2070// This method is useful when you want to inject custom logic or configuration
2071// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2072//
2073//
2074//    // Example sending a request using the GetSavingsPlansUtilizationDetailsRequest method.
2075//    req, resp := client.GetSavingsPlansUtilizationDetailsRequest(params)
2076//
2077//    err := req.Send()
2078//    if err == nil { // resp is now filled
2079//        fmt.Println(resp)
2080//    }
2081//
2082// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansUtilizationDetails
2083func (c *CostExplorer) GetSavingsPlansUtilizationDetailsRequest(input *GetSavingsPlansUtilizationDetailsInput) (req *request.Request, output *GetSavingsPlansUtilizationDetailsOutput) {
2084	op := &request.Operation{
2085		Name:       opGetSavingsPlansUtilizationDetails,
2086		HTTPMethod: "POST",
2087		HTTPPath:   "/",
2088		Paginator: &request.Paginator{
2089			InputTokens:     []string{"NextToken"},
2090			OutputTokens:    []string{"NextToken"},
2091			LimitToken:      "MaxResults",
2092			TruncationToken: "",
2093		},
2094	}
2095
2096	if input == nil {
2097		input = &GetSavingsPlansUtilizationDetailsInput{}
2098	}
2099
2100	output = &GetSavingsPlansUtilizationDetailsOutput{}
2101	req = c.newRequest(op, input, output)
2102	return
2103}
2104
2105// GetSavingsPlansUtilizationDetails API operation for AWS Cost Explorer Service.
2106//
2107// Retrieves attribute data along with aggregate utilization and savings data
2108// for a given time period. This doesn't support granular or grouped data (daily/monthly)
2109// in response. You can't retrieve data by dates in a single response similar
2110// to GetSavingsPlanUtilization, but you have the option to make multiple calls
2111// to GetSavingsPlanUtilizationDetails by providing individual dates. You can
2112// use GetDimensionValues in SAVINGS_PLANS to determine the possible dimension
2113// values.
2114//
2115// GetSavingsPlanUtilizationDetails internally groups data by SavingsPlansArn.
2116//
2117// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2118// with awserr.Error's Code and Message methods to get detailed information about
2119// the error.
2120//
2121// See the AWS API reference guide for AWS Cost Explorer Service's
2122// API operation GetSavingsPlansUtilizationDetails for usage and error information.
2123//
2124// Returned Error Types:
2125//   * LimitExceededException
2126//   You made too many calls in a short period of time. Try again later.
2127//
2128//   * DataUnavailableException
2129//   The requested data is unavailable.
2130//
2131//   * InvalidNextTokenException
2132//   The pagination token is invalid. Try again without a pagination token.
2133//
2134// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlansUtilizationDetails
2135func (c *CostExplorer) GetSavingsPlansUtilizationDetails(input *GetSavingsPlansUtilizationDetailsInput) (*GetSavingsPlansUtilizationDetailsOutput, error) {
2136	req, out := c.GetSavingsPlansUtilizationDetailsRequest(input)
2137	return out, req.Send()
2138}
2139
2140// GetSavingsPlansUtilizationDetailsWithContext is the same as GetSavingsPlansUtilizationDetails with the addition of
2141// the ability to pass a context and additional request options.
2142//
2143// See GetSavingsPlansUtilizationDetails for details on how to use this API operation.
2144//
2145// The context must be non-nil and will be used for request cancellation. If
2146// the context is nil a panic will occur. In the future the SDK may create
2147// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2148// for more information on using Contexts.
2149func (c *CostExplorer) GetSavingsPlansUtilizationDetailsWithContext(ctx aws.Context, input *GetSavingsPlansUtilizationDetailsInput, opts ...request.Option) (*GetSavingsPlansUtilizationDetailsOutput, error) {
2150	req, out := c.GetSavingsPlansUtilizationDetailsRequest(input)
2151	req.SetContext(ctx)
2152	req.ApplyOptions(opts...)
2153	return out, req.Send()
2154}
2155
2156// GetSavingsPlansUtilizationDetailsPages iterates over the pages of a GetSavingsPlansUtilizationDetails operation,
2157// calling the "fn" function with the response data for each page. To stop
2158// iterating, return false from the fn function.
2159//
2160// See GetSavingsPlansUtilizationDetails method for more information on how to use this operation.
2161//
2162// Note: This operation can generate multiple requests to a service.
2163//
2164//    // Example iterating over at most 3 pages of a GetSavingsPlansUtilizationDetails operation.
2165//    pageNum := 0
2166//    err := client.GetSavingsPlansUtilizationDetailsPages(params,
2167//        func(page *costexplorer.GetSavingsPlansUtilizationDetailsOutput, lastPage bool) bool {
2168//            pageNum++
2169//            fmt.Println(page)
2170//            return pageNum <= 3
2171//        })
2172//
2173func (c *CostExplorer) GetSavingsPlansUtilizationDetailsPages(input *GetSavingsPlansUtilizationDetailsInput, fn func(*GetSavingsPlansUtilizationDetailsOutput, bool) bool) error {
2174	return c.GetSavingsPlansUtilizationDetailsPagesWithContext(aws.BackgroundContext(), input, fn)
2175}
2176
2177// GetSavingsPlansUtilizationDetailsPagesWithContext same as GetSavingsPlansUtilizationDetailsPages except
2178// it takes a Context and allows setting request options on the pages.
2179//
2180// The context must be non-nil and will be used for request cancellation. If
2181// the context is nil a panic will occur. In the future the SDK may create
2182// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2183// for more information on using Contexts.
2184func (c *CostExplorer) GetSavingsPlansUtilizationDetailsPagesWithContext(ctx aws.Context, input *GetSavingsPlansUtilizationDetailsInput, fn func(*GetSavingsPlansUtilizationDetailsOutput, bool) bool, opts ...request.Option) error {
2185	p := request.Pagination{
2186		NewRequest: func() (*request.Request, error) {
2187			var inCpy *GetSavingsPlansUtilizationDetailsInput
2188			if input != nil {
2189				tmp := *input
2190				inCpy = &tmp
2191			}
2192			req, _ := c.GetSavingsPlansUtilizationDetailsRequest(inCpy)
2193			req.SetContext(ctx)
2194			req.ApplyOptions(opts...)
2195			return req, nil
2196		},
2197	}
2198
2199	for p.Next() {
2200		if !fn(p.Page().(*GetSavingsPlansUtilizationDetailsOutput), !p.HasNextPage()) {
2201			break
2202		}
2203	}
2204
2205	return p.Err()
2206}
2207
2208const opGetTags = "GetTags"
2209
2210// GetTagsRequest generates a "aws/request.Request" representing the
2211// client's request for the GetTags operation. The "output" return
2212// value will be populated with the request's response once the request completes
2213// successfully.
2214//
2215// Use "Send" method on the returned Request to send the API call to the service.
2216// the "output" return value is not valid until after Send returns without error.
2217//
2218// See GetTags for more information on using the GetTags
2219// API call, and error handling.
2220//
2221// This method is useful when you want to inject custom logic or configuration
2222// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2223//
2224//
2225//    // Example sending a request using the GetTagsRequest method.
2226//    req, resp := client.GetTagsRequest(params)
2227//
2228//    err := req.Send()
2229//    if err == nil { // resp is now filled
2230//        fmt.Println(resp)
2231//    }
2232//
2233// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetTags
2234func (c *CostExplorer) GetTagsRequest(input *GetTagsInput) (req *request.Request, output *GetTagsOutput) {
2235	op := &request.Operation{
2236		Name:       opGetTags,
2237		HTTPMethod: "POST",
2238		HTTPPath:   "/",
2239	}
2240
2241	if input == nil {
2242		input = &GetTagsInput{}
2243	}
2244
2245	output = &GetTagsOutput{}
2246	req = c.newRequest(op, input, output)
2247	return
2248}
2249
2250// GetTags API operation for AWS Cost Explorer Service.
2251//
2252// Queries for available tag keys and tag values for a specified period. You
2253// can search the tag values for an arbitrary string.
2254//
2255// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2256// with awserr.Error's Code and Message methods to get detailed information about
2257// the error.
2258//
2259// See the AWS API reference guide for AWS Cost Explorer Service's
2260// API operation GetTags for usage and error information.
2261//
2262// Returned Error Types:
2263//   * LimitExceededException
2264//   You made too many calls in a short period of time. Try again later.
2265//
2266//   * BillExpirationException
2267//   The requested report expired. Update the date interval and try again.
2268//
2269//   * DataUnavailableException
2270//   The requested data is unavailable.
2271//
2272//   * InvalidNextTokenException
2273//   The pagination token is invalid. Try again without a pagination token.
2274//
2275//   * RequestChangedException
2276//   Your request parameters changed between pages. Try again with the old parameters
2277//   or without a pagination token.
2278//
2279// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetTags
2280func (c *CostExplorer) GetTags(input *GetTagsInput) (*GetTagsOutput, error) {
2281	req, out := c.GetTagsRequest(input)
2282	return out, req.Send()
2283}
2284
2285// GetTagsWithContext is the same as GetTags with the addition of
2286// the ability to pass a context and additional request options.
2287//
2288// See GetTags for details on how to use this API operation.
2289//
2290// The context must be non-nil and will be used for request cancellation. If
2291// the context is nil a panic will occur. In the future the SDK may create
2292// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2293// for more information on using Contexts.
2294func (c *CostExplorer) GetTagsWithContext(ctx aws.Context, input *GetTagsInput, opts ...request.Option) (*GetTagsOutput, error) {
2295	req, out := c.GetTagsRequest(input)
2296	req.SetContext(ctx)
2297	req.ApplyOptions(opts...)
2298	return out, req.Send()
2299}
2300
2301const opGetUsageForecast = "GetUsageForecast"
2302
2303// GetUsageForecastRequest generates a "aws/request.Request" representing the
2304// client's request for the GetUsageForecast operation. The "output" return
2305// value will be populated with the request's response once the request completes
2306// successfully.
2307//
2308// Use "Send" method on the returned Request to send the API call to the service.
2309// the "output" return value is not valid until after Send returns without error.
2310//
2311// See GetUsageForecast for more information on using the GetUsageForecast
2312// API call, and error handling.
2313//
2314// This method is useful when you want to inject custom logic or configuration
2315// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2316//
2317//
2318//    // Example sending a request using the GetUsageForecastRequest method.
2319//    req, resp := client.GetUsageForecastRequest(params)
2320//
2321//    err := req.Send()
2322//    if err == nil { // resp is now filled
2323//        fmt.Println(resp)
2324//    }
2325//
2326// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetUsageForecast
2327func (c *CostExplorer) GetUsageForecastRequest(input *GetUsageForecastInput) (req *request.Request, output *GetUsageForecastOutput) {
2328	op := &request.Operation{
2329		Name:       opGetUsageForecast,
2330		HTTPMethod: "POST",
2331		HTTPPath:   "/",
2332	}
2333
2334	if input == nil {
2335		input = &GetUsageForecastInput{}
2336	}
2337
2338	output = &GetUsageForecastOutput{}
2339	req = c.newRequest(op, input, output)
2340	return
2341}
2342
2343// GetUsageForecast API operation for AWS Cost Explorer Service.
2344//
2345// Retrieves a forecast for how much Amazon Web Services predicts that you will
2346// use over the forecast time period that you select, based on your past usage.
2347//
2348// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2349// with awserr.Error's Code and Message methods to get detailed information about
2350// the error.
2351//
2352// See the AWS API reference guide for AWS Cost Explorer Service's
2353// API operation GetUsageForecast for usage and error information.
2354//
2355// Returned Error Types:
2356//   * LimitExceededException
2357//   You made too many calls in a short period of time. Try again later.
2358//
2359//   * DataUnavailableException
2360//   The requested data is unavailable.
2361//
2362//   * UnresolvableUsageUnitException
2363//   Cost Explorer was unable to identify the usage unit. Provide UsageType/UsageTypeGroup
2364//   filter selections that contain matching units, for example: hours.
2365//
2366// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetUsageForecast
2367func (c *CostExplorer) GetUsageForecast(input *GetUsageForecastInput) (*GetUsageForecastOutput, error) {
2368	req, out := c.GetUsageForecastRequest(input)
2369	return out, req.Send()
2370}
2371
2372// GetUsageForecastWithContext is the same as GetUsageForecast with the addition of
2373// the ability to pass a context and additional request options.
2374//
2375// See GetUsageForecast for details on how to use this API operation.
2376//
2377// The context must be non-nil and will be used for request cancellation. If
2378// the context is nil a panic will occur. In the future the SDK may create
2379// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2380// for more information on using Contexts.
2381func (c *CostExplorer) GetUsageForecastWithContext(ctx aws.Context, input *GetUsageForecastInput, opts ...request.Option) (*GetUsageForecastOutput, error) {
2382	req, out := c.GetUsageForecastRequest(input)
2383	req.SetContext(ctx)
2384	req.ApplyOptions(opts...)
2385	return out, req.Send()
2386}
2387
2388const opListCostCategoryDefinitions = "ListCostCategoryDefinitions"
2389
2390// ListCostCategoryDefinitionsRequest generates a "aws/request.Request" representing the
2391// client's request for the ListCostCategoryDefinitions operation. The "output" return
2392// value will be populated with the request's response once the request completes
2393// successfully.
2394//
2395// Use "Send" method on the returned Request to send the API call to the service.
2396// the "output" return value is not valid until after Send returns without error.
2397//
2398// See ListCostCategoryDefinitions for more information on using the ListCostCategoryDefinitions
2399// API call, and error handling.
2400//
2401// This method is useful when you want to inject custom logic or configuration
2402// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2403//
2404//
2405//    // Example sending a request using the ListCostCategoryDefinitionsRequest method.
2406//    req, resp := client.ListCostCategoryDefinitionsRequest(params)
2407//
2408//    err := req.Send()
2409//    if err == nil { // resp is now filled
2410//        fmt.Println(resp)
2411//    }
2412//
2413// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ListCostCategoryDefinitions
2414func (c *CostExplorer) ListCostCategoryDefinitionsRequest(input *ListCostCategoryDefinitionsInput) (req *request.Request, output *ListCostCategoryDefinitionsOutput) {
2415	op := &request.Operation{
2416		Name:       opListCostCategoryDefinitions,
2417		HTTPMethod: "POST",
2418		HTTPPath:   "/",
2419		Paginator: &request.Paginator{
2420			InputTokens:     []string{"NextToken"},
2421			OutputTokens:    []string{"NextToken"},
2422			LimitToken:      "MaxResults",
2423			TruncationToken: "",
2424		},
2425	}
2426
2427	if input == nil {
2428		input = &ListCostCategoryDefinitionsInput{}
2429	}
2430
2431	output = &ListCostCategoryDefinitionsOutput{}
2432	req = c.newRequest(op, input, output)
2433	return
2434}
2435
2436// ListCostCategoryDefinitions API operation for AWS Cost Explorer Service.
2437//
2438// Returns the name, ARN, NumberOfRules and effective dates of all Cost Categories
2439// defined in the account. You have the option to use EffectiveOn to return
2440// a list of Cost Categories that were active on a specific date. If there is
2441// no EffectiveOn specified, you’ll see Cost Categories that are effective
2442// on the current date. If Cost Category is still effective, EffectiveEnd is
2443// omitted in the response. ListCostCategoryDefinitions supports pagination.
2444// The request can have a MaxResults range up to 100.
2445//
2446// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2447// with awserr.Error's Code and Message methods to get detailed information about
2448// the error.
2449//
2450// See the AWS API reference guide for AWS Cost Explorer Service's
2451// API operation ListCostCategoryDefinitions for usage and error information.
2452//
2453// Returned Error Types:
2454//   * LimitExceededException
2455//   You made too many calls in a short period of time. Try again later.
2456//
2457// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ListCostCategoryDefinitions
2458func (c *CostExplorer) ListCostCategoryDefinitions(input *ListCostCategoryDefinitionsInput) (*ListCostCategoryDefinitionsOutput, error) {
2459	req, out := c.ListCostCategoryDefinitionsRequest(input)
2460	return out, req.Send()
2461}
2462
2463// ListCostCategoryDefinitionsWithContext is the same as ListCostCategoryDefinitions with the addition of
2464// the ability to pass a context and additional request options.
2465//
2466// See ListCostCategoryDefinitions for details on how to use this API operation.
2467//
2468// The context must be non-nil and will be used for request cancellation. If
2469// the context is nil a panic will occur. In the future the SDK may create
2470// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2471// for more information on using Contexts.
2472func (c *CostExplorer) ListCostCategoryDefinitionsWithContext(ctx aws.Context, input *ListCostCategoryDefinitionsInput, opts ...request.Option) (*ListCostCategoryDefinitionsOutput, error) {
2473	req, out := c.ListCostCategoryDefinitionsRequest(input)
2474	req.SetContext(ctx)
2475	req.ApplyOptions(opts...)
2476	return out, req.Send()
2477}
2478
2479// ListCostCategoryDefinitionsPages iterates over the pages of a ListCostCategoryDefinitions operation,
2480// calling the "fn" function with the response data for each page. To stop
2481// iterating, return false from the fn function.
2482//
2483// See ListCostCategoryDefinitions method for more information on how to use this operation.
2484//
2485// Note: This operation can generate multiple requests to a service.
2486//
2487//    // Example iterating over at most 3 pages of a ListCostCategoryDefinitions operation.
2488//    pageNum := 0
2489//    err := client.ListCostCategoryDefinitionsPages(params,
2490//        func(page *costexplorer.ListCostCategoryDefinitionsOutput, lastPage bool) bool {
2491//            pageNum++
2492//            fmt.Println(page)
2493//            return pageNum <= 3
2494//        })
2495//
2496func (c *CostExplorer) ListCostCategoryDefinitionsPages(input *ListCostCategoryDefinitionsInput, fn func(*ListCostCategoryDefinitionsOutput, bool) bool) error {
2497	return c.ListCostCategoryDefinitionsPagesWithContext(aws.BackgroundContext(), input, fn)
2498}
2499
2500// ListCostCategoryDefinitionsPagesWithContext same as ListCostCategoryDefinitionsPages except
2501// it takes a Context and allows setting request options on the pages.
2502//
2503// The context must be non-nil and will be used for request cancellation. If
2504// the context is nil a panic will occur. In the future the SDK may create
2505// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2506// for more information on using Contexts.
2507func (c *CostExplorer) ListCostCategoryDefinitionsPagesWithContext(ctx aws.Context, input *ListCostCategoryDefinitionsInput, fn func(*ListCostCategoryDefinitionsOutput, bool) bool, opts ...request.Option) error {
2508	p := request.Pagination{
2509		NewRequest: func() (*request.Request, error) {
2510			var inCpy *ListCostCategoryDefinitionsInput
2511			if input != nil {
2512				tmp := *input
2513				inCpy = &tmp
2514			}
2515			req, _ := c.ListCostCategoryDefinitionsRequest(inCpy)
2516			req.SetContext(ctx)
2517			req.ApplyOptions(opts...)
2518			return req, nil
2519		},
2520	}
2521
2522	for p.Next() {
2523		if !fn(p.Page().(*ListCostCategoryDefinitionsOutput), !p.HasNextPage()) {
2524			break
2525		}
2526	}
2527
2528	return p.Err()
2529}
2530
2531const opProvideAnomalyFeedback = "ProvideAnomalyFeedback"
2532
2533// ProvideAnomalyFeedbackRequest generates a "aws/request.Request" representing the
2534// client's request for the ProvideAnomalyFeedback operation. The "output" return
2535// value will be populated with the request's response once the request completes
2536// successfully.
2537//
2538// Use "Send" method on the returned Request to send the API call to the service.
2539// the "output" return value is not valid until after Send returns without error.
2540//
2541// See ProvideAnomalyFeedback for more information on using the ProvideAnomalyFeedback
2542// API call, and error handling.
2543//
2544// This method is useful when you want to inject custom logic or configuration
2545// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2546//
2547//
2548//    // Example sending a request using the ProvideAnomalyFeedbackRequest method.
2549//    req, resp := client.ProvideAnomalyFeedbackRequest(params)
2550//
2551//    err := req.Send()
2552//    if err == nil { // resp is now filled
2553//        fmt.Println(resp)
2554//    }
2555//
2556// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ProvideAnomalyFeedback
2557func (c *CostExplorer) ProvideAnomalyFeedbackRequest(input *ProvideAnomalyFeedbackInput) (req *request.Request, output *ProvideAnomalyFeedbackOutput) {
2558	op := &request.Operation{
2559		Name:       opProvideAnomalyFeedback,
2560		HTTPMethod: "POST",
2561		HTTPPath:   "/",
2562	}
2563
2564	if input == nil {
2565		input = &ProvideAnomalyFeedbackInput{}
2566	}
2567
2568	output = &ProvideAnomalyFeedbackOutput{}
2569	req = c.newRequest(op, input, output)
2570	return
2571}
2572
2573// ProvideAnomalyFeedback API operation for AWS Cost Explorer Service.
2574//
2575// Modifies the feedback property of a given cost anomaly.
2576//
2577// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2578// with awserr.Error's Code and Message methods to get detailed information about
2579// the error.
2580//
2581// See the AWS API reference guide for AWS Cost Explorer Service's
2582// API operation ProvideAnomalyFeedback for usage and error information.
2583//
2584// Returned Error Types:
2585//   * LimitExceededException
2586//   You made too many calls in a short period of time. Try again later.
2587//
2588// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ProvideAnomalyFeedback
2589func (c *CostExplorer) ProvideAnomalyFeedback(input *ProvideAnomalyFeedbackInput) (*ProvideAnomalyFeedbackOutput, error) {
2590	req, out := c.ProvideAnomalyFeedbackRequest(input)
2591	return out, req.Send()
2592}
2593
2594// ProvideAnomalyFeedbackWithContext is the same as ProvideAnomalyFeedback with the addition of
2595// the ability to pass a context and additional request options.
2596//
2597// See ProvideAnomalyFeedback for details on how to use this API operation.
2598//
2599// The context must be non-nil and will be used for request cancellation. If
2600// the context is nil a panic will occur. In the future the SDK may create
2601// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2602// for more information on using Contexts.
2603func (c *CostExplorer) ProvideAnomalyFeedbackWithContext(ctx aws.Context, input *ProvideAnomalyFeedbackInput, opts ...request.Option) (*ProvideAnomalyFeedbackOutput, error) {
2604	req, out := c.ProvideAnomalyFeedbackRequest(input)
2605	req.SetContext(ctx)
2606	req.ApplyOptions(opts...)
2607	return out, req.Send()
2608}
2609
2610const opUpdateAnomalyMonitor = "UpdateAnomalyMonitor"
2611
2612// UpdateAnomalyMonitorRequest generates a "aws/request.Request" representing the
2613// client's request for the UpdateAnomalyMonitor operation. The "output" return
2614// value will be populated with the request's response once the request completes
2615// successfully.
2616//
2617// Use "Send" method on the returned Request to send the API call to the service.
2618// the "output" return value is not valid until after Send returns without error.
2619//
2620// See UpdateAnomalyMonitor for more information on using the UpdateAnomalyMonitor
2621// API call, and error handling.
2622//
2623// This method is useful when you want to inject custom logic or configuration
2624// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2625//
2626//
2627//    // Example sending a request using the UpdateAnomalyMonitorRequest method.
2628//    req, resp := client.UpdateAnomalyMonitorRequest(params)
2629//
2630//    err := req.Send()
2631//    if err == nil { // resp is now filled
2632//        fmt.Println(resp)
2633//    }
2634//
2635// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateAnomalyMonitor
2636func (c *CostExplorer) UpdateAnomalyMonitorRequest(input *UpdateAnomalyMonitorInput) (req *request.Request, output *UpdateAnomalyMonitorOutput) {
2637	op := &request.Operation{
2638		Name:       opUpdateAnomalyMonitor,
2639		HTTPMethod: "POST",
2640		HTTPPath:   "/",
2641	}
2642
2643	if input == nil {
2644		input = &UpdateAnomalyMonitorInput{}
2645	}
2646
2647	output = &UpdateAnomalyMonitorOutput{}
2648	req = c.newRequest(op, input, output)
2649	return
2650}
2651
2652// UpdateAnomalyMonitor API operation for AWS Cost Explorer Service.
2653//
2654// Updates an existing cost anomaly monitor. The changes made are applied going
2655// forward, and doesn'tt change anomalies detected in the past.
2656//
2657// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2658// with awserr.Error's Code and Message methods to get detailed information about
2659// the error.
2660//
2661// See the AWS API reference guide for AWS Cost Explorer Service's
2662// API operation UpdateAnomalyMonitor for usage and error information.
2663//
2664// Returned Error Types:
2665//   * LimitExceededException
2666//   You made too many calls in a short period of time. Try again later.
2667//
2668//   * UnknownMonitorException
2669//   The cost anomaly monitor does not exist for the account.
2670//
2671// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateAnomalyMonitor
2672func (c *CostExplorer) UpdateAnomalyMonitor(input *UpdateAnomalyMonitorInput) (*UpdateAnomalyMonitorOutput, error) {
2673	req, out := c.UpdateAnomalyMonitorRequest(input)
2674	return out, req.Send()
2675}
2676
2677// UpdateAnomalyMonitorWithContext is the same as UpdateAnomalyMonitor with the addition of
2678// the ability to pass a context and additional request options.
2679//
2680// See UpdateAnomalyMonitor for details on how to use this API operation.
2681//
2682// The context must be non-nil and will be used for request cancellation. If
2683// the context is nil a panic will occur. In the future the SDK may create
2684// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2685// for more information on using Contexts.
2686func (c *CostExplorer) UpdateAnomalyMonitorWithContext(ctx aws.Context, input *UpdateAnomalyMonitorInput, opts ...request.Option) (*UpdateAnomalyMonitorOutput, error) {
2687	req, out := c.UpdateAnomalyMonitorRequest(input)
2688	req.SetContext(ctx)
2689	req.ApplyOptions(opts...)
2690	return out, req.Send()
2691}
2692
2693const opUpdateAnomalySubscription = "UpdateAnomalySubscription"
2694
2695// UpdateAnomalySubscriptionRequest generates a "aws/request.Request" representing the
2696// client's request for the UpdateAnomalySubscription operation. The "output" return
2697// value will be populated with the request's response once the request completes
2698// successfully.
2699//
2700// Use "Send" method on the returned Request to send the API call to the service.
2701// the "output" return value is not valid until after Send returns without error.
2702//
2703// See UpdateAnomalySubscription for more information on using the UpdateAnomalySubscription
2704// API call, and error handling.
2705//
2706// This method is useful when you want to inject custom logic or configuration
2707// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2708//
2709//
2710//    // Example sending a request using the UpdateAnomalySubscriptionRequest method.
2711//    req, resp := client.UpdateAnomalySubscriptionRequest(params)
2712//
2713//    err := req.Send()
2714//    if err == nil { // resp is now filled
2715//        fmt.Println(resp)
2716//    }
2717//
2718// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateAnomalySubscription
2719func (c *CostExplorer) UpdateAnomalySubscriptionRequest(input *UpdateAnomalySubscriptionInput) (req *request.Request, output *UpdateAnomalySubscriptionOutput) {
2720	op := &request.Operation{
2721		Name:       opUpdateAnomalySubscription,
2722		HTTPMethod: "POST",
2723		HTTPPath:   "/",
2724	}
2725
2726	if input == nil {
2727		input = &UpdateAnomalySubscriptionInput{}
2728	}
2729
2730	output = &UpdateAnomalySubscriptionOutput{}
2731	req = c.newRequest(op, input, output)
2732	return
2733}
2734
2735// UpdateAnomalySubscription API operation for AWS Cost Explorer Service.
2736//
2737// Updates an existing cost anomaly monitor subscription.
2738//
2739// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2740// with awserr.Error's Code and Message methods to get detailed information about
2741// the error.
2742//
2743// See the AWS API reference guide for AWS Cost Explorer Service's
2744// API operation UpdateAnomalySubscription for usage and error information.
2745//
2746// Returned Error Types:
2747//   * LimitExceededException
2748//   You made too many calls in a short period of time. Try again later.
2749//
2750//   * UnknownMonitorException
2751//   The cost anomaly monitor does not exist for the account.
2752//
2753//   * UnknownSubscriptionException
2754//   The cost anomaly subscription does not exist for the account.
2755//
2756// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateAnomalySubscription
2757func (c *CostExplorer) UpdateAnomalySubscription(input *UpdateAnomalySubscriptionInput) (*UpdateAnomalySubscriptionOutput, error) {
2758	req, out := c.UpdateAnomalySubscriptionRequest(input)
2759	return out, req.Send()
2760}
2761
2762// UpdateAnomalySubscriptionWithContext is the same as UpdateAnomalySubscription with the addition of
2763// the ability to pass a context and additional request options.
2764//
2765// See UpdateAnomalySubscription for details on how to use this API operation.
2766//
2767// The context must be non-nil and will be used for request cancellation. If
2768// the context is nil a panic will occur. In the future the SDK may create
2769// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2770// for more information on using Contexts.
2771func (c *CostExplorer) UpdateAnomalySubscriptionWithContext(ctx aws.Context, input *UpdateAnomalySubscriptionInput, opts ...request.Option) (*UpdateAnomalySubscriptionOutput, error) {
2772	req, out := c.UpdateAnomalySubscriptionRequest(input)
2773	req.SetContext(ctx)
2774	req.ApplyOptions(opts...)
2775	return out, req.Send()
2776}
2777
2778const opUpdateCostCategoryDefinition = "UpdateCostCategoryDefinition"
2779
2780// UpdateCostCategoryDefinitionRequest generates a "aws/request.Request" representing the
2781// client's request for the UpdateCostCategoryDefinition operation. The "output" return
2782// value will be populated with the request's response once the request completes
2783// successfully.
2784//
2785// Use "Send" method on the returned Request to send the API call to the service.
2786// the "output" return value is not valid until after Send returns without error.
2787//
2788// See UpdateCostCategoryDefinition for more information on using the UpdateCostCategoryDefinition
2789// API call, and error handling.
2790//
2791// This method is useful when you want to inject custom logic or configuration
2792// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2793//
2794//
2795//    // Example sending a request using the UpdateCostCategoryDefinitionRequest method.
2796//    req, resp := client.UpdateCostCategoryDefinitionRequest(params)
2797//
2798//    err := req.Send()
2799//    if err == nil { // resp is now filled
2800//        fmt.Println(resp)
2801//    }
2802//
2803// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateCostCategoryDefinition
2804func (c *CostExplorer) UpdateCostCategoryDefinitionRequest(input *UpdateCostCategoryDefinitionInput) (req *request.Request, output *UpdateCostCategoryDefinitionOutput) {
2805	op := &request.Operation{
2806		Name:       opUpdateCostCategoryDefinition,
2807		HTTPMethod: "POST",
2808		HTTPPath:   "/",
2809	}
2810
2811	if input == nil {
2812		input = &UpdateCostCategoryDefinitionInput{}
2813	}
2814
2815	output = &UpdateCostCategoryDefinitionOutput{}
2816	req = c.newRequest(op, input, output)
2817	return
2818}
2819
2820// UpdateCostCategoryDefinition API operation for AWS Cost Explorer Service.
2821//
2822// Updates an existing Cost Category. Changes made to the Cost Category rules
2823// will be used to categorize the current month’s expenses and future expenses.
2824// This won’t change categorization for the previous months.
2825//
2826// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2827// with awserr.Error's Code and Message methods to get detailed information about
2828// the error.
2829//
2830// See the AWS API reference guide for AWS Cost Explorer Service's
2831// API operation UpdateCostCategoryDefinition for usage and error information.
2832//
2833// Returned Error Types:
2834//   * ResourceNotFoundException
2835//   The specified ARN in the request doesn't exist.
2836//
2837//   * ServiceQuotaExceededException
2838//   You've reached the limit on the number of resources you can create, or exceeded
2839//   the size of an individual resource.
2840//
2841//   * LimitExceededException
2842//   You made too many calls in a short period of time. Try again later.
2843//
2844// See also, https://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateCostCategoryDefinition
2845func (c *CostExplorer) UpdateCostCategoryDefinition(input *UpdateCostCategoryDefinitionInput) (*UpdateCostCategoryDefinitionOutput, error) {
2846	req, out := c.UpdateCostCategoryDefinitionRequest(input)
2847	return out, req.Send()
2848}
2849
2850// UpdateCostCategoryDefinitionWithContext is the same as UpdateCostCategoryDefinition with the addition of
2851// the ability to pass a context and additional request options.
2852//
2853// See UpdateCostCategoryDefinition for details on how to use this API operation.
2854//
2855// The context must be non-nil and will be used for request cancellation. If
2856// the context is nil a panic will occur. In the future the SDK may create
2857// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2858// for more information on using Contexts.
2859func (c *CostExplorer) UpdateCostCategoryDefinitionWithContext(ctx aws.Context, input *UpdateCostCategoryDefinitionInput, opts ...request.Option) (*UpdateCostCategoryDefinitionOutput, error) {
2860	req, out := c.UpdateCostCategoryDefinitionRequest(input)
2861	req.SetContext(ctx)
2862	req.ApplyOptions(opts...)
2863	return out, req.Send()
2864}
2865
2866// An unusual cost pattern. This consists of the detailed metadata and the current
2867// status of the anomaly object.
2868type Anomaly struct {
2869	_ struct{} `type:"structure"`
2870
2871	// The last day the anomaly is detected.
2872	AnomalyEndDate *string `type:"string"`
2873
2874	// The unique identifier for the anomaly.
2875	//
2876	// AnomalyId is a required field
2877	AnomalyId *string `type:"string" required:"true"`
2878
2879	// The latest and maximum score for the anomaly.
2880	//
2881	// AnomalyScore is a required field
2882	AnomalyScore *AnomalyScore `type:"structure" required:"true"`
2883
2884	// The first day the anomaly is detected.
2885	AnomalyStartDate *string `type:"string"`
2886
2887	// The dimension for the anomaly (for example, an Amazon Web Services service
2888	// in a service monitor).
2889	DimensionValue *string `type:"string"`
2890
2891	// The feedback value.
2892	Feedback *string `type:"string" enum:"AnomalyFeedbackType"`
2893
2894	// The dollar impact for the anomaly.
2895	//
2896	// Impact is a required field
2897	Impact *Impact `type:"structure" required:"true"`
2898
2899	// The Amazon Resource Name (ARN) for the cost monitor that generated this anomaly.
2900	//
2901	// MonitorArn is a required field
2902	MonitorArn *string `type:"string" required:"true"`
2903
2904	// The list of identified root causes for the anomaly.
2905	RootCauses []*RootCause `type:"list"`
2906}
2907
2908// String returns the string representation.
2909//
2910// API parameter values that are decorated as "sensitive" in the API will not
2911// be included in the string output. The member name will be present, but the
2912// value will be replaced with "sensitive".
2913func (s Anomaly) String() string {
2914	return awsutil.Prettify(s)
2915}
2916
2917// GoString returns the string representation.
2918//
2919// API parameter values that are decorated as "sensitive" in the API will not
2920// be included in the string output. The member name will be present, but the
2921// value will be replaced with "sensitive".
2922func (s Anomaly) GoString() string {
2923	return s.String()
2924}
2925
2926// SetAnomalyEndDate sets the AnomalyEndDate field's value.
2927func (s *Anomaly) SetAnomalyEndDate(v string) *Anomaly {
2928	s.AnomalyEndDate = &v
2929	return s
2930}
2931
2932// SetAnomalyId sets the AnomalyId field's value.
2933func (s *Anomaly) SetAnomalyId(v string) *Anomaly {
2934	s.AnomalyId = &v
2935	return s
2936}
2937
2938// SetAnomalyScore sets the AnomalyScore field's value.
2939func (s *Anomaly) SetAnomalyScore(v *AnomalyScore) *Anomaly {
2940	s.AnomalyScore = v
2941	return s
2942}
2943
2944// SetAnomalyStartDate sets the AnomalyStartDate field's value.
2945func (s *Anomaly) SetAnomalyStartDate(v string) *Anomaly {
2946	s.AnomalyStartDate = &v
2947	return s
2948}
2949
2950// SetDimensionValue sets the DimensionValue field's value.
2951func (s *Anomaly) SetDimensionValue(v string) *Anomaly {
2952	s.DimensionValue = &v
2953	return s
2954}
2955
2956// SetFeedback sets the Feedback field's value.
2957func (s *Anomaly) SetFeedback(v string) *Anomaly {
2958	s.Feedback = &v
2959	return s
2960}
2961
2962// SetImpact sets the Impact field's value.
2963func (s *Anomaly) SetImpact(v *Impact) *Anomaly {
2964	s.Impact = v
2965	return s
2966}
2967
2968// SetMonitorArn sets the MonitorArn field's value.
2969func (s *Anomaly) SetMonitorArn(v string) *Anomaly {
2970	s.MonitorArn = &v
2971	return s
2972}
2973
2974// SetRootCauses sets the RootCauses field's value.
2975func (s *Anomaly) SetRootCauses(v []*RootCause) *Anomaly {
2976	s.RootCauses = v
2977	return s
2978}
2979
2980// The time period for an anomaly.
2981type AnomalyDateInterval struct {
2982	_ struct{} `type:"structure"`
2983
2984	// The last date an anomaly was observed.
2985	EndDate *string `type:"string"`
2986
2987	// The first date an anomaly was observed.
2988	//
2989	// StartDate is a required field
2990	StartDate *string `type:"string" required:"true"`
2991}
2992
2993// String returns the string representation.
2994//
2995// API parameter values that are decorated as "sensitive" in the API will not
2996// be included in the string output. The member name will be present, but the
2997// value will be replaced with "sensitive".
2998func (s AnomalyDateInterval) String() string {
2999	return awsutil.Prettify(s)
3000}
3001
3002// GoString returns the string representation.
3003//
3004// API parameter values that are decorated as "sensitive" in the API will not
3005// be included in the string output. The member name will be present, but the
3006// value will be replaced with "sensitive".
3007func (s AnomalyDateInterval) GoString() string {
3008	return s.String()
3009}
3010
3011// Validate inspects the fields of the type to determine if they are valid.
3012func (s *AnomalyDateInterval) Validate() error {
3013	invalidParams := request.ErrInvalidParams{Context: "AnomalyDateInterval"}
3014	if s.StartDate == nil {
3015		invalidParams.Add(request.NewErrParamRequired("StartDate"))
3016	}
3017
3018	if invalidParams.Len() > 0 {
3019		return invalidParams
3020	}
3021	return nil
3022}
3023
3024// SetEndDate sets the EndDate field's value.
3025func (s *AnomalyDateInterval) SetEndDate(v string) *AnomalyDateInterval {
3026	s.EndDate = &v
3027	return s
3028}
3029
3030// SetStartDate sets the StartDate field's value.
3031func (s *AnomalyDateInterval) SetStartDate(v string) *AnomalyDateInterval {
3032	s.StartDate = &v
3033	return s
3034}
3035
3036// This object continuously inspects your account's cost data for anomalies.
3037// It's based on MonitorType and MonitorSpecification. The content consists
3038// of detailed metadata and the current status of the monitor object.
3039type AnomalyMonitor struct {
3040	_ struct{} `type:"structure"`
3041
3042	// The date when the monitor was created.
3043	CreationDate *string `type:"string"`
3044
3045	// The value for evaluated dimensions.
3046	DimensionalValueCount *int64 `type:"integer"`
3047
3048	// The date when the monitor last evaluated for anomalies.
3049	LastEvaluatedDate *string `type:"string"`
3050
3051	// The date when the monitor was last updated.
3052	LastUpdatedDate *string `type:"string"`
3053
3054	// The Amazon Resource Name (ARN) value.
3055	MonitorArn *string `type:"string"`
3056
3057	// The dimensions to evaluate.
3058	MonitorDimension *string `type:"string" enum:"MonitorDimension"`
3059
3060	// The name of the monitor.
3061	//
3062	// MonitorName is a required field
3063	MonitorName *string `type:"string" required:"true"`
3064
3065	// Use Expression to filter by cost or by usage. There are two patterns:
3066	//
3067	//    * Simple dimension values - You can set the dimension name and values
3068	//    for the filters that you plan to use. For example, you can filter for
3069	//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
3070	//    the Region is a full name (for example, REGION==US East (N. Virginia).
3071	//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
3072	//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
3073	//    are OR'd together to retrieve cost or usage data. You can create Expression
3074	//    and DimensionValues objects using either with* methods or set* methods
3075	//    in multiple lines.
3076	//
3077	//    * Compound dimension values with logical operations - You can use multiple
3078	//    Expression types and the logical operators AND/OR/NOT to create a list
3079	//    of one or more Expression objects. By doing this, you can filter on more
3080	//    advanced options. For example, you can filter on ((REGION == us-east-1
3081	//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
3082	//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
3083	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
3084	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
3085	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
3086	//    Expression can have only one operator, the service returns an error if
3087	//    more than one is specified. The following example shows an Expression
3088	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
3089	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
3090	//
3091	// For the GetRightsizingRecommendation action, a combination of OR and NOT
3092	// isn't supported. OR isn't supported between different dimensions, or dimensions
3093	// and tags. NOT operators aren't supported. Dimensions are also limited to
3094	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
3095	//
3096	// For the GetReservationPurchaseRecommendation action, only NOT is supported.
3097	// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
3098	MonitorSpecification *Expression `type:"structure"`
3099
3100	// The possible type values.
3101	//
3102	// MonitorType is a required field
3103	MonitorType *string `type:"string" required:"true" enum:"MonitorType"`
3104}
3105
3106// String returns the string representation.
3107//
3108// API parameter values that are decorated as "sensitive" in the API will not
3109// be included in the string output. The member name will be present, but the
3110// value will be replaced with "sensitive".
3111func (s AnomalyMonitor) String() string {
3112	return awsutil.Prettify(s)
3113}
3114
3115// GoString returns the string representation.
3116//
3117// API parameter values that are decorated as "sensitive" in the API will not
3118// be included in the string output. The member name will be present, but the
3119// value will be replaced with "sensitive".
3120func (s AnomalyMonitor) GoString() string {
3121	return s.String()
3122}
3123
3124// Validate inspects the fields of the type to determine if they are valid.
3125func (s *AnomalyMonitor) Validate() error {
3126	invalidParams := request.ErrInvalidParams{Context: "AnomalyMonitor"}
3127	if s.MonitorName == nil {
3128		invalidParams.Add(request.NewErrParamRequired("MonitorName"))
3129	}
3130	if s.MonitorType == nil {
3131		invalidParams.Add(request.NewErrParamRequired("MonitorType"))
3132	}
3133	if s.MonitorSpecification != nil {
3134		if err := s.MonitorSpecification.Validate(); err != nil {
3135			invalidParams.AddNested("MonitorSpecification", err.(request.ErrInvalidParams))
3136		}
3137	}
3138
3139	if invalidParams.Len() > 0 {
3140		return invalidParams
3141	}
3142	return nil
3143}
3144
3145// SetCreationDate sets the CreationDate field's value.
3146func (s *AnomalyMonitor) SetCreationDate(v string) *AnomalyMonitor {
3147	s.CreationDate = &v
3148	return s
3149}
3150
3151// SetDimensionalValueCount sets the DimensionalValueCount field's value.
3152func (s *AnomalyMonitor) SetDimensionalValueCount(v int64) *AnomalyMonitor {
3153	s.DimensionalValueCount = &v
3154	return s
3155}
3156
3157// SetLastEvaluatedDate sets the LastEvaluatedDate field's value.
3158func (s *AnomalyMonitor) SetLastEvaluatedDate(v string) *AnomalyMonitor {
3159	s.LastEvaluatedDate = &v
3160	return s
3161}
3162
3163// SetLastUpdatedDate sets the LastUpdatedDate field's value.
3164func (s *AnomalyMonitor) SetLastUpdatedDate(v string) *AnomalyMonitor {
3165	s.LastUpdatedDate = &v
3166	return s
3167}
3168
3169// SetMonitorArn sets the MonitorArn field's value.
3170func (s *AnomalyMonitor) SetMonitorArn(v string) *AnomalyMonitor {
3171	s.MonitorArn = &v
3172	return s
3173}
3174
3175// SetMonitorDimension sets the MonitorDimension field's value.
3176func (s *AnomalyMonitor) SetMonitorDimension(v string) *AnomalyMonitor {
3177	s.MonitorDimension = &v
3178	return s
3179}
3180
3181// SetMonitorName sets the MonitorName field's value.
3182func (s *AnomalyMonitor) SetMonitorName(v string) *AnomalyMonitor {
3183	s.MonitorName = &v
3184	return s
3185}
3186
3187// SetMonitorSpecification sets the MonitorSpecification field's value.
3188func (s *AnomalyMonitor) SetMonitorSpecification(v *Expression) *AnomalyMonitor {
3189	s.MonitorSpecification = v
3190	return s
3191}
3192
3193// SetMonitorType sets the MonitorType field's value.
3194func (s *AnomalyMonitor) SetMonitorType(v string) *AnomalyMonitor {
3195	s.MonitorType = &v
3196	return s
3197}
3198
3199// Quantifies the anomaly. The higher score means that it's more anomalous.
3200type AnomalyScore struct {
3201	_ struct{} `type:"structure"`
3202
3203	// The last observed score.
3204	//
3205	// CurrentScore is a required field
3206	CurrentScore *float64 `type:"double" required:"true"`
3207
3208	// The maximum score that's observed during the AnomalyDateInterval.
3209	//
3210	// MaxScore is a required field
3211	MaxScore *float64 `type:"double" required:"true"`
3212}
3213
3214// String returns the string representation.
3215//
3216// API parameter values that are decorated as "sensitive" in the API will not
3217// be included in the string output. The member name will be present, but the
3218// value will be replaced with "sensitive".
3219func (s AnomalyScore) String() string {
3220	return awsutil.Prettify(s)
3221}
3222
3223// GoString returns the string representation.
3224//
3225// API parameter values that are decorated as "sensitive" in the API will not
3226// be included in the string output. The member name will be present, but the
3227// value will be replaced with "sensitive".
3228func (s AnomalyScore) GoString() string {
3229	return s.String()
3230}
3231
3232// SetCurrentScore sets the CurrentScore field's value.
3233func (s *AnomalyScore) SetCurrentScore(v float64) *AnomalyScore {
3234	s.CurrentScore = &v
3235	return s
3236}
3237
3238// SetMaxScore sets the MaxScore field's value.
3239func (s *AnomalyScore) SetMaxScore(v float64) *AnomalyScore {
3240	s.MaxScore = &v
3241	return s
3242}
3243
3244// The association between a monitor, threshold, and list of subscribers used
3245// to deliver notifications about anomalies detected by a monitor that exceeds
3246// a threshold. The content consists of the detailed metadata and the current
3247// status of the AnomalySubscription object.
3248type AnomalySubscription struct {
3249	_ struct{} `type:"structure"`
3250
3251	// Your unique account identifier.
3252	AccountId *string `type:"string"`
3253
3254	// The frequency that anomaly reports are sent over email.
3255	//
3256	// Frequency is a required field
3257	Frequency *string `type:"string" required:"true" enum:"AnomalySubscriptionFrequency"`
3258
3259	// A list of cost anomaly monitors.
3260	//
3261	// MonitorArnList is a required field
3262	MonitorArnList []*string `type:"list" required:"true"`
3263
3264	// A list of subscribers to notify.
3265	//
3266	// Subscribers is a required field
3267	Subscribers []*Subscriber `type:"list" required:"true"`
3268
3269	// The AnomalySubscription Amazon Resource Name (ARN).
3270	SubscriptionArn *string `type:"string"`
3271
3272	// The name for the subscription.
3273	//
3274	// SubscriptionName is a required field
3275	SubscriptionName *string `type:"string" required:"true"`
3276
3277	// The dollar value that triggers a notification if the threshold is exceeded.
3278	//
3279	// Threshold is a required field
3280	Threshold *float64 `type:"double" required:"true"`
3281}
3282
3283// String returns the string representation.
3284//
3285// API parameter values that are decorated as "sensitive" in the API will not
3286// be included in the string output. The member name will be present, but the
3287// value will be replaced with "sensitive".
3288func (s AnomalySubscription) String() string {
3289	return awsutil.Prettify(s)
3290}
3291
3292// GoString returns the string representation.
3293//
3294// API parameter values that are decorated as "sensitive" in the API will not
3295// be included in the string output. The member name will be present, but the
3296// value will be replaced with "sensitive".
3297func (s AnomalySubscription) GoString() string {
3298	return s.String()
3299}
3300
3301// Validate inspects the fields of the type to determine if they are valid.
3302func (s *AnomalySubscription) Validate() error {
3303	invalidParams := request.ErrInvalidParams{Context: "AnomalySubscription"}
3304	if s.Frequency == nil {
3305		invalidParams.Add(request.NewErrParamRequired("Frequency"))
3306	}
3307	if s.MonitorArnList == nil {
3308		invalidParams.Add(request.NewErrParamRequired("MonitorArnList"))
3309	}
3310	if s.Subscribers == nil {
3311		invalidParams.Add(request.NewErrParamRequired("Subscribers"))
3312	}
3313	if s.SubscriptionName == nil {
3314		invalidParams.Add(request.NewErrParamRequired("SubscriptionName"))
3315	}
3316	if s.Threshold == nil {
3317		invalidParams.Add(request.NewErrParamRequired("Threshold"))
3318	}
3319	if s.Subscribers != nil {
3320		for i, v := range s.Subscribers {
3321			if v == nil {
3322				continue
3323			}
3324			if err := v.Validate(); err != nil {
3325				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Subscribers", i), err.(request.ErrInvalidParams))
3326			}
3327		}
3328	}
3329
3330	if invalidParams.Len() > 0 {
3331		return invalidParams
3332	}
3333	return nil
3334}
3335
3336// SetAccountId sets the AccountId field's value.
3337func (s *AnomalySubscription) SetAccountId(v string) *AnomalySubscription {
3338	s.AccountId = &v
3339	return s
3340}
3341
3342// SetFrequency sets the Frequency field's value.
3343func (s *AnomalySubscription) SetFrequency(v string) *AnomalySubscription {
3344	s.Frequency = &v
3345	return s
3346}
3347
3348// SetMonitorArnList sets the MonitorArnList field's value.
3349func (s *AnomalySubscription) SetMonitorArnList(v []*string) *AnomalySubscription {
3350	s.MonitorArnList = v
3351	return s
3352}
3353
3354// SetSubscribers sets the Subscribers field's value.
3355func (s *AnomalySubscription) SetSubscribers(v []*Subscriber) *AnomalySubscription {
3356	s.Subscribers = v
3357	return s
3358}
3359
3360// SetSubscriptionArn sets the SubscriptionArn field's value.
3361func (s *AnomalySubscription) SetSubscriptionArn(v string) *AnomalySubscription {
3362	s.SubscriptionArn = &v
3363	return s
3364}
3365
3366// SetSubscriptionName sets the SubscriptionName field's value.
3367func (s *AnomalySubscription) SetSubscriptionName(v string) *AnomalySubscription {
3368	s.SubscriptionName = &v
3369	return s
3370}
3371
3372// SetThreshold sets the Threshold field's value.
3373func (s *AnomalySubscription) SetThreshold(v float64) *AnomalySubscription {
3374	s.Threshold = &v
3375	return s
3376}
3377
3378// The requested report expired. Update the date interval and try again.
3379type BillExpirationException struct {
3380	_            struct{}                  `type:"structure"`
3381	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
3382
3383	Message_ *string `locationName:"Message" type:"string"`
3384}
3385
3386// String returns the string representation.
3387//
3388// API parameter values that are decorated as "sensitive" in the API will not
3389// be included in the string output. The member name will be present, but the
3390// value will be replaced with "sensitive".
3391func (s BillExpirationException) String() string {
3392	return awsutil.Prettify(s)
3393}
3394
3395// GoString returns the string representation.
3396//
3397// API parameter values that are decorated as "sensitive" in the API will not
3398// be included in the string output. The member name will be present, but the
3399// value will be replaced with "sensitive".
3400func (s BillExpirationException) GoString() string {
3401	return s.String()
3402}
3403
3404func newErrorBillExpirationException(v protocol.ResponseMetadata) error {
3405	return &BillExpirationException{
3406		RespMetadata: v,
3407	}
3408}
3409
3410// Code returns the exception type name.
3411func (s *BillExpirationException) Code() string {
3412	return "BillExpirationException"
3413}
3414
3415// Message returns the exception's message.
3416func (s *BillExpirationException) Message() string {
3417	if s.Message_ != nil {
3418		return *s.Message_
3419	}
3420	return ""
3421}
3422
3423// OrigErr always returns nil, satisfies awserr.Error interface.
3424func (s *BillExpirationException) OrigErr() error {
3425	return nil
3426}
3427
3428func (s *BillExpirationException) Error() string {
3429	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
3430}
3431
3432// Status code returns the HTTP status code for the request's response error.
3433func (s *BillExpirationException) StatusCode() int {
3434	return s.RespMetadata.StatusCode
3435}
3436
3437// RequestID returns the service's response RequestID for request.
3438func (s *BillExpirationException) RequestID() string {
3439	return s.RespMetadata.RequestID
3440}
3441
3442// The structure of Cost Categories. This includes detailed metadata and the
3443// set of rules for the CostCategory object.
3444type CostCategory struct {
3445	_ struct{} `type:"structure"`
3446
3447	// The unique identifier for your Cost Category.
3448	//
3449	// CostCategoryArn is a required field
3450	CostCategoryArn *string `min:"20" type:"string" required:"true"`
3451
3452	// The default value for the cost category.
3453	DefaultValue *string `min:"1" type:"string"`
3454
3455	// The effective end data of your Cost Category.
3456	EffectiveEnd *string `min:"20" type:"string"`
3457
3458	// The effective state data of your Cost Category.
3459	//
3460	// EffectiveStart is a required field
3461	EffectiveStart *string `min:"20" type:"string" required:"true"`
3462
3463	// The unique name of the Cost Category.
3464	//
3465	// Name is a required field
3466	Name *string `min:"1" type:"string" required:"true"`
3467
3468	// The list of processing statuses for Cost Management products for a specific
3469	// cost category.
3470	ProcessingStatus []*CostCategoryProcessingStatus `type:"list"`
3471
3472	// The rule schema version in this particular Cost Category.
3473	//
3474	// RuleVersion is a required field
3475	RuleVersion *string `type:"string" required:"true" enum:"CostCategoryRuleVersion"`
3476
3477	// The rules are processed in order. If there are multiple rules that match
3478	// the line item, then the first rule to match is used to determine that Cost
3479	// Category value.
3480	//
3481	// Rules is a required field
3482	Rules []*CostCategoryRule `min:"1" type:"list" required:"true"`
3483
3484	// The split charge rules that are used to allocate your charges between your
3485	// Cost Category values.
3486	SplitChargeRules []*CostCategorySplitChargeRule `min:"1" type:"list"`
3487}
3488
3489// String returns the string representation.
3490//
3491// API parameter values that are decorated as "sensitive" in the API will not
3492// be included in the string output. The member name will be present, but the
3493// value will be replaced with "sensitive".
3494func (s CostCategory) String() string {
3495	return awsutil.Prettify(s)
3496}
3497
3498// GoString returns the string representation.
3499//
3500// API parameter values that are decorated as "sensitive" in the API will not
3501// be included in the string output. The member name will be present, but the
3502// value will be replaced with "sensitive".
3503func (s CostCategory) GoString() string {
3504	return s.String()
3505}
3506
3507// SetCostCategoryArn sets the CostCategoryArn field's value.
3508func (s *CostCategory) SetCostCategoryArn(v string) *CostCategory {
3509	s.CostCategoryArn = &v
3510	return s
3511}
3512
3513// SetDefaultValue sets the DefaultValue field's value.
3514func (s *CostCategory) SetDefaultValue(v string) *CostCategory {
3515	s.DefaultValue = &v
3516	return s
3517}
3518
3519// SetEffectiveEnd sets the EffectiveEnd field's value.
3520func (s *CostCategory) SetEffectiveEnd(v string) *CostCategory {
3521	s.EffectiveEnd = &v
3522	return s
3523}
3524
3525// SetEffectiveStart sets the EffectiveStart field's value.
3526func (s *CostCategory) SetEffectiveStart(v string) *CostCategory {
3527	s.EffectiveStart = &v
3528	return s
3529}
3530
3531// SetName sets the Name field's value.
3532func (s *CostCategory) SetName(v string) *CostCategory {
3533	s.Name = &v
3534	return s
3535}
3536
3537// SetProcessingStatus sets the ProcessingStatus field's value.
3538func (s *CostCategory) SetProcessingStatus(v []*CostCategoryProcessingStatus) *CostCategory {
3539	s.ProcessingStatus = v
3540	return s
3541}
3542
3543// SetRuleVersion sets the RuleVersion field's value.
3544func (s *CostCategory) SetRuleVersion(v string) *CostCategory {
3545	s.RuleVersion = &v
3546	return s
3547}
3548
3549// SetRules sets the Rules field's value.
3550func (s *CostCategory) SetRules(v []*CostCategoryRule) *CostCategory {
3551	s.Rules = v
3552	return s
3553}
3554
3555// SetSplitChargeRules sets the SplitChargeRules field's value.
3556func (s *CostCategory) SetSplitChargeRules(v []*CostCategorySplitChargeRule) *CostCategory {
3557	s.SplitChargeRules = v
3558	return s
3559}
3560
3561// When creating or updating a cost category, you can define the CostCategoryRule
3562// rule type as INHERITED_VALUE. This rule type adds the flexibility of defining
3563// a rule that dynamically inherits the cost category value from the dimension
3564// value defined by CostCategoryInheritedValueDimension. For example, if you
3565// want to dynamically group costs that are based on the value of a specific
3566// tag key, first choose an inherited value rule type, then choose the tag dimension
3567// and specify the tag key to use.
3568type CostCategoryInheritedValueDimension struct {
3569	_ struct{} `type:"structure"`
3570
3571	// The key to extract cost category values.
3572	DimensionKey *string `type:"string"`
3573
3574	// The name of the dimension that's used to group costs.
3575	//
3576	// If you specify LINKED_ACCOUNT_NAME, the cost category value is based on account
3577	// name. If you specify TAG, the cost category value will be based on the value
3578	// of the specified tag key.
3579	DimensionName *string `type:"string" enum:"CostCategoryInheritedValueDimensionName"`
3580}
3581
3582// String returns the string representation.
3583//
3584// API parameter values that are decorated as "sensitive" in the API will not
3585// be included in the string output. The member name will be present, but the
3586// value will be replaced with "sensitive".
3587func (s CostCategoryInheritedValueDimension) String() string {
3588	return awsutil.Prettify(s)
3589}
3590
3591// GoString returns the string representation.
3592//
3593// API parameter values that are decorated as "sensitive" in the API will not
3594// be included in the string output. The member name will be present, but the
3595// value will be replaced with "sensitive".
3596func (s CostCategoryInheritedValueDimension) GoString() string {
3597	return s.String()
3598}
3599
3600// SetDimensionKey sets the DimensionKey field's value.
3601func (s *CostCategoryInheritedValueDimension) SetDimensionKey(v string) *CostCategoryInheritedValueDimension {
3602	s.DimensionKey = &v
3603	return s
3604}
3605
3606// SetDimensionName sets the DimensionName field's value.
3607func (s *CostCategoryInheritedValueDimension) SetDimensionName(v string) *CostCategoryInheritedValueDimension {
3608	s.DimensionName = &v
3609	return s
3610}
3611
3612// The list of processing statuses for Cost Management products for a specific
3613// cost category.
3614type CostCategoryProcessingStatus struct {
3615	_ struct{} `type:"structure"`
3616
3617	// The Cost Management product name of the applied status.
3618	Component *string `type:"string" enum:"CostCategoryStatusComponent"`
3619
3620	// The process status for a specific cost category.
3621	Status *string `type:"string" enum:"CostCategoryStatus"`
3622}
3623
3624// String returns the string representation.
3625//
3626// API parameter values that are decorated as "sensitive" in the API will not
3627// be included in the string output. The member name will be present, but the
3628// value will be replaced with "sensitive".
3629func (s CostCategoryProcessingStatus) String() string {
3630	return awsutil.Prettify(s)
3631}
3632
3633// GoString returns the string representation.
3634//
3635// API parameter values that are decorated as "sensitive" in the API will not
3636// be included in the string output. The member name will be present, but the
3637// value will be replaced with "sensitive".
3638func (s CostCategoryProcessingStatus) GoString() string {
3639	return s.String()
3640}
3641
3642// SetComponent sets the Component field's value.
3643func (s *CostCategoryProcessingStatus) SetComponent(v string) *CostCategoryProcessingStatus {
3644	s.Component = &v
3645	return s
3646}
3647
3648// SetStatus sets the Status field's value.
3649func (s *CostCategoryProcessingStatus) SetStatus(v string) *CostCategoryProcessingStatus {
3650	s.Status = &v
3651	return s
3652}
3653
3654// A reference to a Cost Category containing only enough information to identify
3655// the Cost Category.
3656//
3657// You can use this information to retrieve the full Cost Category information
3658// using DescribeCostCategory.
3659type CostCategoryReference struct {
3660	_ struct{} `type:"structure"`
3661
3662	// The unique identifier for your Cost Category.
3663	CostCategoryArn *string `min:"20" type:"string"`
3664
3665	// The default value for the cost category.
3666	DefaultValue *string `min:"1" type:"string"`
3667
3668	// The Cost Category's effective end date.
3669	EffectiveEnd *string `min:"20" type:"string"`
3670
3671	// The Cost Category's effective start date.
3672	EffectiveStart *string `min:"20" type:"string"`
3673
3674	// The unique name of the Cost Category.
3675	Name *string `min:"1" type:"string"`
3676
3677	// The number of rules that are associated with a specific Cost Category.
3678	NumberOfRules *int64 `type:"integer"`
3679
3680	// The list of processing statuses for Cost Management products for a specific
3681	// cost category.
3682	ProcessingStatus []*CostCategoryProcessingStatus `type:"list"`
3683
3684	// A list of unique cost category values in a specific cost category.
3685	Values []*string `type:"list"`
3686}
3687
3688// String returns the string representation.
3689//
3690// API parameter values that are decorated as "sensitive" in the API will not
3691// be included in the string output. The member name will be present, but the
3692// value will be replaced with "sensitive".
3693func (s CostCategoryReference) String() string {
3694	return awsutil.Prettify(s)
3695}
3696
3697// GoString returns the string representation.
3698//
3699// API parameter values that are decorated as "sensitive" in the API will not
3700// be included in the string output. The member name will be present, but the
3701// value will be replaced with "sensitive".
3702func (s CostCategoryReference) GoString() string {
3703	return s.String()
3704}
3705
3706// SetCostCategoryArn sets the CostCategoryArn field's value.
3707func (s *CostCategoryReference) SetCostCategoryArn(v string) *CostCategoryReference {
3708	s.CostCategoryArn = &v
3709	return s
3710}
3711
3712// SetDefaultValue sets the DefaultValue field's value.
3713func (s *CostCategoryReference) SetDefaultValue(v string) *CostCategoryReference {
3714	s.DefaultValue = &v
3715	return s
3716}
3717
3718// SetEffectiveEnd sets the EffectiveEnd field's value.
3719func (s *CostCategoryReference) SetEffectiveEnd(v string) *CostCategoryReference {
3720	s.EffectiveEnd = &v
3721	return s
3722}
3723
3724// SetEffectiveStart sets the EffectiveStart field's value.
3725func (s *CostCategoryReference) SetEffectiveStart(v string) *CostCategoryReference {
3726	s.EffectiveStart = &v
3727	return s
3728}
3729
3730// SetName sets the Name field's value.
3731func (s *CostCategoryReference) SetName(v string) *CostCategoryReference {
3732	s.Name = &v
3733	return s
3734}
3735
3736// SetNumberOfRules sets the NumberOfRules field's value.
3737func (s *CostCategoryReference) SetNumberOfRules(v int64) *CostCategoryReference {
3738	s.NumberOfRules = &v
3739	return s
3740}
3741
3742// SetProcessingStatus sets the ProcessingStatus field's value.
3743func (s *CostCategoryReference) SetProcessingStatus(v []*CostCategoryProcessingStatus) *CostCategoryReference {
3744	s.ProcessingStatus = v
3745	return s
3746}
3747
3748// SetValues sets the Values field's value.
3749func (s *CostCategoryReference) SetValues(v []*string) *CostCategoryReference {
3750	s.Values = v
3751	return s
3752}
3753
3754// Rules are processed in order. If there are multiple rules that match the
3755// line item, then the first rule to match is used to determine that Cost Category
3756// value.
3757type CostCategoryRule struct {
3758	_ struct{} `type:"structure"`
3759
3760	// The value the line item is categorized as if the line item contains the matched
3761	// dimension.
3762	InheritedValue *CostCategoryInheritedValueDimension `type:"structure"`
3763
3764	// An Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
3765	// object used to categorize costs. This supports dimensions, tags, and nested
3766	// expressions. Currently the only dimensions supported are LINKED_ACCOUNT,
3767	// SERVICE_CODE, RECORD_TYPE, and LINKED_ACCOUNT_NAME.
3768	//
3769	// Root level OR isn't supported. We recommend that you create a separate rule
3770	// instead.
3771	//
3772	// RECORD_TYPE is a dimension used for Cost Explorer APIs, and is also supported
3773	// for Cost Category expressions. This dimension uses different terms, depending
3774	// on whether you're using the console or API/JSON editor. For a detailed comparison,
3775	// see Term Comparisons (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/manage-cost-categories.html#cost-categories-terms)
3776	// in the Billing and Cost Management User Guide.
3777	Rule *Expression `type:"structure"`
3778
3779	// You can define the CostCategoryRule rule type as either REGULAR or INHERITED_VALUE.
3780	// The INHERITED_VALUE rule type adds the flexibility of defining a rule that
3781	// dynamically inherits the cost category value from the dimension value defined
3782	// by CostCategoryInheritedValueDimension. For example, if you want to dynamically
3783	// group costs based on the value of a specific tag key, first choose an inherited
3784	// value rule type, then choose the tag dimension and specify the tag key to
3785	// use.
3786	Type *string `type:"string" enum:"CostCategoryRuleType"`
3787
3788	// The default value for the cost category.
3789	Value *string `min:"1" type:"string"`
3790}
3791
3792// String returns the string representation.
3793//
3794// API parameter values that are decorated as "sensitive" in the API will not
3795// be included in the string output. The member name will be present, but the
3796// value will be replaced with "sensitive".
3797func (s CostCategoryRule) String() string {
3798	return awsutil.Prettify(s)
3799}
3800
3801// GoString returns the string representation.
3802//
3803// API parameter values that are decorated as "sensitive" in the API will not
3804// be included in the string output. The member name will be present, but the
3805// value will be replaced with "sensitive".
3806func (s CostCategoryRule) GoString() string {
3807	return s.String()
3808}
3809
3810// Validate inspects the fields of the type to determine if they are valid.
3811func (s *CostCategoryRule) Validate() error {
3812	invalidParams := request.ErrInvalidParams{Context: "CostCategoryRule"}
3813	if s.Value != nil && len(*s.Value) < 1 {
3814		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
3815	}
3816	if s.Rule != nil {
3817		if err := s.Rule.Validate(); err != nil {
3818			invalidParams.AddNested("Rule", err.(request.ErrInvalidParams))
3819		}
3820	}
3821
3822	if invalidParams.Len() > 0 {
3823		return invalidParams
3824	}
3825	return nil
3826}
3827
3828// SetInheritedValue sets the InheritedValue field's value.
3829func (s *CostCategoryRule) SetInheritedValue(v *CostCategoryInheritedValueDimension) *CostCategoryRule {
3830	s.InheritedValue = v
3831	return s
3832}
3833
3834// SetRule sets the Rule field's value.
3835func (s *CostCategoryRule) SetRule(v *Expression) *CostCategoryRule {
3836	s.Rule = v
3837	return s
3838}
3839
3840// SetType sets the Type field's value.
3841func (s *CostCategoryRule) SetType(v string) *CostCategoryRule {
3842	s.Type = &v
3843	return s
3844}
3845
3846// SetValue sets the Value field's value.
3847func (s *CostCategoryRule) SetValue(v string) *CostCategoryRule {
3848	s.Value = &v
3849	return s
3850}
3851
3852// Use the split charge rule to split the cost of one Cost Category value across
3853// several other target values.
3854type CostCategorySplitChargeRule struct {
3855	_ struct{} `type:"structure"`
3856
3857	// The method that's used to define how to split your source costs across your
3858	// targets.
3859	//
3860	// Proportional - Allocates charges across your targets based on the proportional
3861	// weighted cost of each target.
3862	//
3863	// Fixed - Allocates charges across your targets based on your defined allocation
3864	// percentage.
3865	//
3866	// >Even - Allocates costs evenly across all targets.
3867	//
3868	// Method is a required field
3869	Method *string `type:"string" required:"true" enum:"CostCategorySplitChargeMethod"`
3870
3871	// The parameters for a split charge method. This is only required for the FIXED
3872	// method.
3873	Parameters []*CostCategorySplitChargeRuleParameter `min:"1" type:"list"`
3874
3875	// The Cost Category value that you want to split. That value can't be used
3876	// as a source or a target in other split charge rules. To indicate uncategorized
3877	// costs, you can use an empty string as the source.
3878	//
3879	// Source is a required field
3880	Source *string `type:"string" required:"true"`
3881
3882	// The Cost Category values that you want to split costs across. These values
3883	// can't be used as a source in other split charge rules.
3884	//
3885	// Targets is a required field
3886	Targets []*string `min:"1" type:"list" required:"true"`
3887}
3888
3889// String returns the string representation.
3890//
3891// API parameter values that are decorated as "sensitive" in the API will not
3892// be included in the string output. The member name will be present, but the
3893// value will be replaced with "sensitive".
3894func (s CostCategorySplitChargeRule) String() string {
3895	return awsutil.Prettify(s)
3896}
3897
3898// GoString returns the string representation.
3899//
3900// API parameter values that are decorated as "sensitive" in the API will not
3901// be included in the string output. The member name will be present, but the
3902// value will be replaced with "sensitive".
3903func (s CostCategorySplitChargeRule) GoString() string {
3904	return s.String()
3905}
3906
3907// Validate inspects the fields of the type to determine if they are valid.
3908func (s *CostCategorySplitChargeRule) Validate() error {
3909	invalidParams := request.ErrInvalidParams{Context: "CostCategorySplitChargeRule"}
3910	if s.Method == nil {
3911		invalidParams.Add(request.NewErrParamRequired("Method"))
3912	}
3913	if s.Parameters != nil && len(s.Parameters) < 1 {
3914		invalidParams.Add(request.NewErrParamMinLen("Parameters", 1))
3915	}
3916	if s.Source == nil {
3917		invalidParams.Add(request.NewErrParamRequired("Source"))
3918	}
3919	if s.Targets == nil {
3920		invalidParams.Add(request.NewErrParamRequired("Targets"))
3921	}
3922	if s.Targets != nil && len(s.Targets) < 1 {
3923		invalidParams.Add(request.NewErrParamMinLen("Targets", 1))
3924	}
3925	if s.Parameters != nil {
3926		for i, v := range s.Parameters {
3927			if v == nil {
3928				continue
3929			}
3930			if err := v.Validate(); err != nil {
3931				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Parameters", i), err.(request.ErrInvalidParams))
3932			}
3933		}
3934	}
3935
3936	if invalidParams.Len() > 0 {
3937		return invalidParams
3938	}
3939	return nil
3940}
3941
3942// SetMethod sets the Method field's value.
3943func (s *CostCategorySplitChargeRule) SetMethod(v string) *CostCategorySplitChargeRule {
3944	s.Method = &v
3945	return s
3946}
3947
3948// SetParameters sets the Parameters field's value.
3949func (s *CostCategorySplitChargeRule) SetParameters(v []*CostCategorySplitChargeRuleParameter) *CostCategorySplitChargeRule {
3950	s.Parameters = v
3951	return s
3952}
3953
3954// SetSource sets the Source field's value.
3955func (s *CostCategorySplitChargeRule) SetSource(v string) *CostCategorySplitChargeRule {
3956	s.Source = &v
3957	return s
3958}
3959
3960// SetTargets sets the Targets field's value.
3961func (s *CostCategorySplitChargeRule) SetTargets(v []*string) *CostCategorySplitChargeRule {
3962	s.Targets = v
3963	return s
3964}
3965
3966// The parameters for a split charge method.
3967type CostCategorySplitChargeRuleParameter struct {
3968	_ struct{} `type:"structure"`
3969
3970	// The parameter type.
3971	//
3972	// Type is a required field
3973	Type *string `type:"string" required:"true" enum:"CostCategorySplitChargeRuleParameterType"`
3974
3975	// The parameter values.
3976	//
3977	// Values is a required field
3978	Values []*string `min:"1" type:"list" required:"true"`
3979}
3980
3981// String returns the string representation.
3982//
3983// API parameter values that are decorated as "sensitive" in the API will not
3984// be included in the string output. The member name will be present, but the
3985// value will be replaced with "sensitive".
3986func (s CostCategorySplitChargeRuleParameter) String() string {
3987	return awsutil.Prettify(s)
3988}
3989
3990// GoString returns the string representation.
3991//
3992// API parameter values that are decorated as "sensitive" in the API will not
3993// be included in the string output. The member name will be present, but the
3994// value will be replaced with "sensitive".
3995func (s CostCategorySplitChargeRuleParameter) GoString() string {
3996	return s.String()
3997}
3998
3999// Validate inspects the fields of the type to determine if they are valid.
4000func (s *CostCategorySplitChargeRuleParameter) Validate() error {
4001	invalidParams := request.ErrInvalidParams{Context: "CostCategorySplitChargeRuleParameter"}
4002	if s.Type == nil {
4003		invalidParams.Add(request.NewErrParamRequired("Type"))
4004	}
4005	if s.Values == nil {
4006		invalidParams.Add(request.NewErrParamRequired("Values"))
4007	}
4008	if s.Values != nil && len(s.Values) < 1 {
4009		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
4010	}
4011
4012	if invalidParams.Len() > 0 {
4013		return invalidParams
4014	}
4015	return nil
4016}
4017
4018// SetType sets the Type field's value.
4019func (s *CostCategorySplitChargeRuleParameter) SetType(v string) *CostCategorySplitChargeRuleParameter {
4020	s.Type = &v
4021	return s
4022}
4023
4024// SetValues sets the Values field's value.
4025func (s *CostCategorySplitChargeRuleParameter) SetValues(v []*string) *CostCategorySplitChargeRuleParameter {
4026	s.Values = v
4027	return s
4028}
4029
4030// The Cost Categories values used for filtering the costs.
4031//
4032// If Values and Key are not specified, the ABSENT MatchOption is applied to
4033// all Cost Categories. That is, it filters on resources that aren't mapped
4034// to any Cost Categories.
4035//
4036// If Values is provided and Key isn't specified, the ABSENT MatchOption is
4037// applied to the Cost Categories Key only. That is, it filters on resources
4038// without the given Cost Categories key.
4039type CostCategoryValues struct {
4040	_ struct{} `type:"structure"`
4041
4042	// The unique name of the Cost Category.
4043	Key *string `min:"1" type:"string"`
4044
4045	// The match options that you can use to filter your results. MatchOptions is
4046	// only applicable for actions related to cost category. The default values
4047	// for MatchOptions is EQUALS and CASE_SENSITIVE.
4048	MatchOptions []*string `type:"list"`
4049
4050	// The specific value of the Cost Category.
4051	Values []*string `type:"list"`
4052}
4053
4054// String returns the string representation.
4055//
4056// API parameter values that are decorated as "sensitive" in the API will not
4057// be included in the string output. The member name will be present, but the
4058// value will be replaced with "sensitive".
4059func (s CostCategoryValues) String() string {
4060	return awsutil.Prettify(s)
4061}
4062
4063// GoString returns the string representation.
4064//
4065// API parameter values that are decorated as "sensitive" in the API will not
4066// be included in the string output. The member name will be present, but the
4067// value will be replaced with "sensitive".
4068func (s CostCategoryValues) GoString() string {
4069	return s.String()
4070}
4071
4072// Validate inspects the fields of the type to determine if they are valid.
4073func (s *CostCategoryValues) Validate() error {
4074	invalidParams := request.ErrInvalidParams{Context: "CostCategoryValues"}
4075	if s.Key != nil && len(*s.Key) < 1 {
4076		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
4077	}
4078
4079	if invalidParams.Len() > 0 {
4080		return invalidParams
4081	}
4082	return nil
4083}
4084
4085// SetKey sets the Key field's value.
4086func (s *CostCategoryValues) SetKey(v string) *CostCategoryValues {
4087	s.Key = &v
4088	return s
4089}
4090
4091// SetMatchOptions sets the MatchOptions field's value.
4092func (s *CostCategoryValues) SetMatchOptions(v []*string) *CostCategoryValues {
4093	s.MatchOptions = v
4094	return s
4095}
4096
4097// SetValues sets the Values field's value.
4098func (s *CostCategoryValues) SetValues(v []*string) *CostCategoryValues {
4099	s.Values = v
4100	return s
4101}
4102
4103// The amount of instance usage that a reservation covered.
4104type Coverage struct {
4105	_ struct{} `type:"structure"`
4106
4107	// The amount of cost that the reservation covered.
4108	CoverageCost *CoverageCost `type:"structure"`
4109
4110	// The amount of instance usage that the reservation covered, in hours.
4111	CoverageHours *CoverageHours `type:"structure"`
4112
4113	// The amount of instance usage that the reservation covered, in normalized
4114	// units.
4115	CoverageNormalizedUnits *CoverageNormalizedUnits `type:"structure"`
4116}
4117
4118// String returns the string representation.
4119//
4120// API parameter values that are decorated as "sensitive" in the API will not
4121// be included in the string output. The member name will be present, but the
4122// value will be replaced with "sensitive".
4123func (s Coverage) String() string {
4124	return awsutil.Prettify(s)
4125}
4126
4127// GoString returns the string representation.
4128//
4129// API parameter values that are decorated as "sensitive" in the API will not
4130// be included in the string output. The member name will be present, but the
4131// value will be replaced with "sensitive".
4132func (s Coverage) GoString() string {
4133	return s.String()
4134}
4135
4136// SetCoverageCost sets the CoverageCost field's value.
4137func (s *Coverage) SetCoverageCost(v *CoverageCost) *Coverage {
4138	s.CoverageCost = v
4139	return s
4140}
4141
4142// SetCoverageHours sets the CoverageHours field's value.
4143func (s *Coverage) SetCoverageHours(v *CoverageHours) *Coverage {
4144	s.CoverageHours = v
4145	return s
4146}
4147
4148// SetCoverageNormalizedUnits sets the CoverageNormalizedUnits field's value.
4149func (s *Coverage) SetCoverageNormalizedUnits(v *CoverageNormalizedUnits) *Coverage {
4150	s.CoverageNormalizedUnits = v
4151	return s
4152}
4153
4154// Reservation coverage for a specified period, in hours.
4155type CoverageByTime struct {
4156	_ struct{} `type:"structure"`
4157
4158	// The groups of instances that the reservation covered.
4159	Groups []*ReservationCoverageGroup `type:"list"`
4160
4161	// The period that this coverage was used over.
4162	TimePeriod *DateInterval `type:"structure"`
4163
4164	// The total reservation coverage, in hours.
4165	Total *Coverage `type:"structure"`
4166}
4167
4168// String returns the string representation.
4169//
4170// API parameter values that are decorated as "sensitive" in the API will not
4171// be included in the string output. The member name will be present, but the
4172// value will be replaced with "sensitive".
4173func (s CoverageByTime) String() string {
4174	return awsutil.Prettify(s)
4175}
4176
4177// GoString returns the string representation.
4178//
4179// API parameter values that are decorated as "sensitive" in the API will not
4180// be included in the string output. The member name will be present, but the
4181// value will be replaced with "sensitive".
4182func (s CoverageByTime) GoString() string {
4183	return s.String()
4184}
4185
4186// SetGroups sets the Groups field's value.
4187func (s *CoverageByTime) SetGroups(v []*ReservationCoverageGroup) *CoverageByTime {
4188	s.Groups = v
4189	return s
4190}
4191
4192// SetTimePeriod sets the TimePeriod field's value.
4193func (s *CoverageByTime) SetTimePeriod(v *DateInterval) *CoverageByTime {
4194	s.TimePeriod = v
4195	return s
4196}
4197
4198// SetTotal sets the Total field's value.
4199func (s *CoverageByTime) SetTotal(v *Coverage) *CoverageByTime {
4200	s.Total = v
4201	return s
4202}
4203
4204// How much it costs to run an instance.
4205type CoverageCost struct {
4206	_ struct{} `type:"structure"`
4207
4208	// How much an On-Demand Instance costs.
4209	OnDemandCost *string `type:"string"`
4210}
4211
4212// String returns the string representation.
4213//
4214// API parameter values that are decorated as "sensitive" in the API will not
4215// be included in the string output. The member name will be present, but the
4216// value will be replaced with "sensitive".
4217func (s CoverageCost) String() string {
4218	return awsutil.Prettify(s)
4219}
4220
4221// GoString returns the string representation.
4222//
4223// API parameter values that are decorated as "sensitive" in the API will not
4224// be included in the string output. The member name will be present, but the
4225// value will be replaced with "sensitive".
4226func (s CoverageCost) GoString() string {
4227	return s.String()
4228}
4229
4230// SetOnDemandCost sets the OnDemandCost field's value.
4231func (s *CoverageCost) SetOnDemandCost(v string) *CoverageCost {
4232	s.OnDemandCost = &v
4233	return s
4234}
4235
4236// How long a running instance either used a reservation or was On-Demand.
4237type CoverageHours struct {
4238	_ struct{} `type:"structure"`
4239
4240	// The percentage of instance hours that a reservation covered.
4241	CoverageHoursPercentage *string `type:"string"`
4242
4243	// The number of instance running hours that On-Demand Instances covered.
4244	OnDemandHours *string `type:"string"`
4245
4246	// The number of instance running hours that reservations covered.
4247	ReservedHours *string `type:"string"`
4248
4249	// The total instance usage, in hours.
4250	TotalRunningHours *string `type:"string"`
4251}
4252
4253// String returns the string representation.
4254//
4255// API parameter values that are decorated as "sensitive" in the API will not
4256// be included in the string output. The member name will be present, but the
4257// value will be replaced with "sensitive".
4258func (s CoverageHours) String() string {
4259	return awsutil.Prettify(s)
4260}
4261
4262// GoString returns the string representation.
4263//
4264// API parameter values that are decorated as "sensitive" in the API will not
4265// be included in the string output. The member name will be present, but the
4266// value will be replaced with "sensitive".
4267func (s CoverageHours) GoString() string {
4268	return s.String()
4269}
4270
4271// SetCoverageHoursPercentage sets the CoverageHoursPercentage field's value.
4272func (s *CoverageHours) SetCoverageHoursPercentage(v string) *CoverageHours {
4273	s.CoverageHoursPercentage = &v
4274	return s
4275}
4276
4277// SetOnDemandHours sets the OnDemandHours field's value.
4278func (s *CoverageHours) SetOnDemandHours(v string) *CoverageHours {
4279	s.OnDemandHours = &v
4280	return s
4281}
4282
4283// SetReservedHours sets the ReservedHours field's value.
4284func (s *CoverageHours) SetReservedHours(v string) *CoverageHours {
4285	s.ReservedHours = &v
4286	return s
4287}
4288
4289// SetTotalRunningHours sets the TotalRunningHours field's value.
4290func (s *CoverageHours) SetTotalRunningHours(v string) *CoverageHours {
4291	s.TotalRunningHours = &v
4292	return s
4293}
4294
4295// The amount of instance usage, in normalized units. You can use normalized
4296// units to see your EC2 usage for multiple sizes of instances in a uniform
4297// way. For example, suppose that you run an xlarge instance and a 2xlarge instance.
4298// If you run both instances for the same amount of time, the 2xlarge instance
4299// uses twice as much of your reservation as the xlarge instance, even though
4300// both instances show only one instance-hour. When you use normalized units
4301// instead of instance-hours, the xlarge instance used 8 normalized units, and
4302// the 2xlarge instance used 16 normalized units.
4303//
4304// For more information, see Modifying Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html)
4305// in the Amazon Elastic Compute Cloud User Guide for Linux Instances.
4306type CoverageNormalizedUnits struct {
4307	_ struct{} `type:"structure"`
4308
4309	// The percentage of your used instance normalized units that a reservation
4310	// covers.
4311	CoverageNormalizedUnitsPercentage *string `type:"string"`
4312
4313	// The number of normalized units that are covered by On-Demand Instances instead
4314	// of a reservation.
4315	OnDemandNormalizedUnits *string `type:"string"`
4316
4317	// The number of normalized units that a reservation covers.
4318	ReservedNormalizedUnits *string `type:"string"`
4319
4320	// The total number of normalized units that you used.
4321	TotalRunningNormalizedUnits *string `type:"string"`
4322}
4323
4324// String returns the string representation.
4325//
4326// API parameter values that are decorated as "sensitive" in the API will not
4327// be included in the string output. The member name will be present, but the
4328// value will be replaced with "sensitive".
4329func (s CoverageNormalizedUnits) String() string {
4330	return awsutil.Prettify(s)
4331}
4332
4333// GoString returns the string representation.
4334//
4335// API parameter values that are decorated as "sensitive" in the API will not
4336// be included in the string output. The member name will be present, but the
4337// value will be replaced with "sensitive".
4338func (s CoverageNormalizedUnits) GoString() string {
4339	return s.String()
4340}
4341
4342// SetCoverageNormalizedUnitsPercentage sets the CoverageNormalizedUnitsPercentage field's value.
4343func (s *CoverageNormalizedUnits) SetCoverageNormalizedUnitsPercentage(v string) *CoverageNormalizedUnits {
4344	s.CoverageNormalizedUnitsPercentage = &v
4345	return s
4346}
4347
4348// SetOnDemandNormalizedUnits sets the OnDemandNormalizedUnits field's value.
4349func (s *CoverageNormalizedUnits) SetOnDemandNormalizedUnits(v string) *CoverageNormalizedUnits {
4350	s.OnDemandNormalizedUnits = &v
4351	return s
4352}
4353
4354// SetReservedNormalizedUnits sets the ReservedNormalizedUnits field's value.
4355func (s *CoverageNormalizedUnits) SetReservedNormalizedUnits(v string) *CoverageNormalizedUnits {
4356	s.ReservedNormalizedUnits = &v
4357	return s
4358}
4359
4360// SetTotalRunningNormalizedUnits sets the TotalRunningNormalizedUnits field's value.
4361func (s *CoverageNormalizedUnits) SetTotalRunningNormalizedUnits(v string) *CoverageNormalizedUnits {
4362	s.TotalRunningNormalizedUnits = &v
4363	return s
4364}
4365
4366type CreateAnomalyMonitorInput struct {
4367	_ struct{} `type:"structure"`
4368
4369	// The cost anomaly detection monitor object that you want to create.
4370	//
4371	// AnomalyMonitor is a required field
4372	AnomalyMonitor *AnomalyMonitor `type:"structure" required:"true"`
4373}
4374
4375// String returns the string representation.
4376//
4377// API parameter values that are decorated as "sensitive" in the API will not
4378// be included in the string output. The member name will be present, but the
4379// value will be replaced with "sensitive".
4380func (s CreateAnomalyMonitorInput) String() string {
4381	return awsutil.Prettify(s)
4382}
4383
4384// GoString returns the string representation.
4385//
4386// API parameter values that are decorated as "sensitive" in the API will not
4387// be included in the string output. The member name will be present, but the
4388// value will be replaced with "sensitive".
4389func (s CreateAnomalyMonitorInput) GoString() string {
4390	return s.String()
4391}
4392
4393// Validate inspects the fields of the type to determine if they are valid.
4394func (s *CreateAnomalyMonitorInput) Validate() error {
4395	invalidParams := request.ErrInvalidParams{Context: "CreateAnomalyMonitorInput"}
4396	if s.AnomalyMonitor == nil {
4397		invalidParams.Add(request.NewErrParamRequired("AnomalyMonitor"))
4398	}
4399	if s.AnomalyMonitor != nil {
4400		if err := s.AnomalyMonitor.Validate(); err != nil {
4401			invalidParams.AddNested("AnomalyMonitor", err.(request.ErrInvalidParams))
4402		}
4403	}
4404
4405	if invalidParams.Len() > 0 {
4406		return invalidParams
4407	}
4408	return nil
4409}
4410
4411// SetAnomalyMonitor sets the AnomalyMonitor field's value.
4412func (s *CreateAnomalyMonitorInput) SetAnomalyMonitor(v *AnomalyMonitor) *CreateAnomalyMonitorInput {
4413	s.AnomalyMonitor = v
4414	return s
4415}
4416
4417type CreateAnomalyMonitorOutput struct {
4418	_ struct{} `type:"structure"`
4419
4420	// The unique identifier of your newly created cost anomaly detection monitor.
4421	//
4422	// MonitorArn is a required field
4423	MonitorArn *string `type:"string" required:"true"`
4424}
4425
4426// String returns the string representation.
4427//
4428// API parameter values that are decorated as "sensitive" in the API will not
4429// be included in the string output. The member name will be present, but the
4430// value will be replaced with "sensitive".
4431func (s CreateAnomalyMonitorOutput) String() string {
4432	return awsutil.Prettify(s)
4433}
4434
4435// GoString returns the string representation.
4436//
4437// API parameter values that are decorated as "sensitive" in the API will not
4438// be included in the string output. The member name will be present, but the
4439// value will be replaced with "sensitive".
4440func (s CreateAnomalyMonitorOutput) GoString() string {
4441	return s.String()
4442}
4443
4444// SetMonitorArn sets the MonitorArn field's value.
4445func (s *CreateAnomalyMonitorOutput) SetMonitorArn(v string) *CreateAnomalyMonitorOutput {
4446	s.MonitorArn = &v
4447	return s
4448}
4449
4450type CreateAnomalySubscriptionInput struct {
4451	_ struct{} `type:"structure"`
4452
4453	// The cost anomaly subscription object that you want to create.
4454	//
4455	// AnomalySubscription is a required field
4456	AnomalySubscription *AnomalySubscription `type:"structure" required:"true"`
4457}
4458
4459// String returns the string representation.
4460//
4461// API parameter values that are decorated as "sensitive" in the API will not
4462// be included in the string output. The member name will be present, but the
4463// value will be replaced with "sensitive".
4464func (s CreateAnomalySubscriptionInput) String() string {
4465	return awsutil.Prettify(s)
4466}
4467
4468// GoString returns the string representation.
4469//
4470// API parameter values that are decorated as "sensitive" in the API will not
4471// be included in the string output. The member name will be present, but the
4472// value will be replaced with "sensitive".
4473func (s CreateAnomalySubscriptionInput) GoString() string {
4474	return s.String()
4475}
4476
4477// Validate inspects the fields of the type to determine if they are valid.
4478func (s *CreateAnomalySubscriptionInput) Validate() error {
4479	invalidParams := request.ErrInvalidParams{Context: "CreateAnomalySubscriptionInput"}
4480	if s.AnomalySubscription == nil {
4481		invalidParams.Add(request.NewErrParamRequired("AnomalySubscription"))
4482	}
4483	if s.AnomalySubscription != nil {
4484		if err := s.AnomalySubscription.Validate(); err != nil {
4485			invalidParams.AddNested("AnomalySubscription", err.(request.ErrInvalidParams))
4486		}
4487	}
4488
4489	if invalidParams.Len() > 0 {
4490		return invalidParams
4491	}
4492	return nil
4493}
4494
4495// SetAnomalySubscription sets the AnomalySubscription field's value.
4496func (s *CreateAnomalySubscriptionInput) SetAnomalySubscription(v *AnomalySubscription) *CreateAnomalySubscriptionInput {
4497	s.AnomalySubscription = v
4498	return s
4499}
4500
4501type CreateAnomalySubscriptionOutput struct {
4502	_ struct{} `type:"structure"`
4503
4504	// The unique identifier of your newly created cost anomaly subscription.
4505	//
4506	// SubscriptionArn is a required field
4507	SubscriptionArn *string `type:"string" required:"true"`
4508}
4509
4510// String returns the string representation.
4511//
4512// API parameter values that are decorated as "sensitive" in the API will not
4513// be included in the string output. The member name will be present, but the
4514// value will be replaced with "sensitive".
4515func (s CreateAnomalySubscriptionOutput) String() string {
4516	return awsutil.Prettify(s)
4517}
4518
4519// GoString returns the string representation.
4520//
4521// API parameter values that are decorated as "sensitive" in the API will not
4522// be included in the string output. The member name will be present, but the
4523// value will be replaced with "sensitive".
4524func (s CreateAnomalySubscriptionOutput) GoString() string {
4525	return s.String()
4526}
4527
4528// SetSubscriptionArn sets the SubscriptionArn field's value.
4529func (s *CreateAnomalySubscriptionOutput) SetSubscriptionArn(v string) *CreateAnomalySubscriptionOutput {
4530	s.SubscriptionArn = &v
4531	return s
4532}
4533
4534type CreateCostCategoryDefinitionInput struct {
4535	_ struct{} `type:"structure"`
4536
4537	// The default value for the cost category.
4538	DefaultValue *string `min:"1" type:"string"`
4539
4540	// The unique name of the Cost Category.
4541	//
4542	// Name is a required field
4543	Name *string `min:"1" type:"string" required:"true"`
4544
4545	// The rule schema version in this particular Cost Category.
4546	//
4547	// RuleVersion is a required field
4548	RuleVersion *string `type:"string" required:"true" enum:"CostCategoryRuleVersion"`
4549
4550	// The Cost Category rules used to categorize costs. For more information, see
4551	// CostCategoryRule (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_CostCategoryRule.html).
4552	//
4553	// Rules is a required field
4554	Rules []*CostCategoryRule `min:"1" type:"list" required:"true"`
4555
4556	// The split charge rules used to allocate your charges between your Cost Category
4557	// values.
4558	SplitChargeRules []*CostCategorySplitChargeRule `min:"1" type:"list"`
4559}
4560
4561// String returns the string representation.
4562//
4563// API parameter values that are decorated as "sensitive" in the API will not
4564// be included in the string output. The member name will be present, but the
4565// value will be replaced with "sensitive".
4566func (s CreateCostCategoryDefinitionInput) String() string {
4567	return awsutil.Prettify(s)
4568}
4569
4570// GoString returns the string representation.
4571//
4572// API parameter values that are decorated as "sensitive" in the API will not
4573// be included in the string output. The member name will be present, but the
4574// value will be replaced with "sensitive".
4575func (s CreateCostCategoryDefinitionInput) GoString() string {
4576	return s.String()
4577}
4578
4579// Validate inspects the fields of the type to determine if they are valid.
4580func (s *CreateCostCategoryDefinitionInput) Validate() error {
4581	invalidParams := request.ErrInvalidParams{Context: "CreateCostCategoryDefinitionInput"}
4582	if s.DefaultValue != nil && len(*s.DefaultValue) < 1 {
4583		invalidParams.Add(request.NewErrParamMinLen("DefaultValue", 1))
4584	}
4585	if s.Name == nil {
4586		invalidParams.Add(request.NewErrParamRequired("Name"))
4587	}
4588	if s.Name != nil && len(*s.Name) < 1 {
4589		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
4590	}
4591	if s.RuleVersion == nil {
4592		invalidParams.Add(request.NewErrParamRequired("RuleVersion"))
4593	}
4594	if s.Rules == nil {
4595		invalidParams.Add(request.NewErrParamRequired("Rules"))
4596	}
4597	if s.Rules != nil && len(s.Rules) < 1 {
4598		invalidParams.Add(request.NewErrParamMinLen("Rules", 1))
4599	}
4600	if s.SplitChargeRules != nil && len(s.SplitChargeRules) < 1 {
4601		invalidParams.Add(request.NewErrParamMinLen("SplitChargeRules", 1))
4602	}
4603	if s.Rules != nil {
4604		for i, v := range s.Rules {
4605			if v == nil {
4606				continue
4607			}
4608			if err := v.Validate(); err != nil {
4609				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
4610			}
4611		}
4612	}
4613	if s.SplitChargeRules != nil {
4614		for i, v := range s.SplitChargeRules {
4615			if v == nil {
4616				continue
4617			}
4618			if err := v.Validate(); err != nil {
4619				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SplitChargeRules", i), err.(request.ErrInvalidParams))
4620			}
4621		}
4622	}
4623
4624	if invalidParams.Len() > 0 {
4625		return invalidParams
4626	}
4627	return nil
4628}
4629
4630// SetDefaultValue sets the DefaultValue field's value.
4631func (s *CreateCostCategoryDefinitionInput) SetDefaultValue(v string) *CreateCostCategoryDefinitionInput {
4632	s.DefaultValue = &v
4633	return s
4634}
4635
4636// SetName sets the Name field's value.
4637func (s *CreateCostCategoryDefinitionInput) SetName(v string) *CreateCostCategoryDefinitionInput {
4638	s.Name = &v
4639	return s
4640}
4641
4642// SetRuleVersion sets the RuleVersion field's value.
4643func (s *CreateCostCategoryDefinitionInput) SetRuleVersion(v string) *CreateCostCategoryDefinitionInput {
4644	s.RuleVersion = &v
4645	return s
4646}
4647
4648// SetRules sets the Rules field's value.
4649func (s *CreateCostCategoryDefinitionInput) SetRules(v []*CostCategoryRule) *CreateCostCategoryDefinitionInput {
4650	s.Rules = v
4651	return s
4652}
4653
4654// SetSplitChargeRules sets the SplitChargeRules field's value.
4655func (s *CreateCostCategoryDefinitionInput) SetSplitChargeRules(v []*CostCategorySplitChargeRule) *CreateCostCategoryDefinitionInput {
4656	s.SplitChargeRules = v
4657	return s
4658}
4659
4660type CreateCostCategoryDefinitionOutput struct {
4661	_ struct{} `type:"structure"`
4662
4663	// The unique identifier for your newly created Cost Category.
4664	CostCategoryArn *string `min:"20" type:"string"`
4665
4666	// The Cost Category's effective start date.
4667	EffectiveStart *string `min:"20" type:"string"`
4668}
4669
4670// String returns the string representation.
4671//
4672// API parameter values that are decorated as "sensitive" in the API will not
4673// be included in the string output. The member name will be present, but the
4674// value will be replaced with "sensitive".
4675func (s CreateCostCategoryDefinitionOutput) String() string {
4676	return awsutil.Prettify(s)
4677}
4678
4679// GoString returns the string representation.
4680//
4681// API parameter values that are decorated as "sensitive" in the API will not
4682// be included in the string output. The member name will be present, but the
4683// value will be replaced with "sensitive".
4684func (s CreateCostCategoryDefinitionOutput) GoString() string {
4685	return s.String()
4686}
4687
4688// SetCostCategoryArn sets the CostCategoryArn field's value.
4689func (s *CreateCostCategoryDefinitionOutput) SetCostCategoryArn(v string) *CreateCostCategoryDefinitionOutput {
4690	s.CostCategoryArn = &v
4691	return s
4692}
4693
4694// SetEffectiveStart sets the EffectiveStart field's value.
4695func (s *CreateCostCategoryDefinitionOutput) SetEffectiveStart(v string) *CreateCostCategoryDefinitionOutput {
4696	s.EffectiveStart = &v
4697	return s
4698}
4699
4700// Context about the current instance.
4701type CurrentInstance 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	// The name that you given an instance. This field shows as blank if you haven't
4709	// given the instance a name.
4710	InstanceName *string `type:"string"`
4711
4712	// The current On-Demand cost of operating this instance on a monthly basis.
4713	MonthlyCost *string `type:"string"`
4714
4715	// The number of hours during the lookback period that's billed at On-Demand
4716	// rates.
4717	OnDemandHoursInLookbackPeriod *string `type:"string"`
4718
4719	// The number of hours during the lookback period that's covered by reservations.
4720	ReservationCoveredHoursInLookbackPeriod *string `type:"string"`
4721
4722	// Details about the resource and utilization.
4723	ResourceDetails *ResourceDetails `type:"structure"`
4724
4725	// Resource ID of the current instance.
4726	ResourceId *string `type:"string"`
4727
4728	// Utilization information of the current instance during the lookback period.
4729	ResourceUtilization *ResourceUtilization `type:"structure"`
4730
4731	// The number of hours during the lookback period that's covered by Savings
4732	// Plans.
4733	SavingsPlansCoveredHoursInLookbackPeriod *string `type:"string"`
4734
4735	// Cost allocation resource tags that are applied to the instance.
4736	Tags []*TagValues `type:"list"`
4737
4738	// The total number of hours that the instance ran during the lookback period.
4739	TotalRunningHoursInLookbackPeriod *string `type:"string"`
4740}
4741
4742// String returns the string representation.
4743//
4744// API parameter values that are decorated as "sensitive" in the API will not
4745// be included in the string output. The member name will be present, but the
4746// value will be replaced with "sensitive".
4747func (s CurrentInstance) String() string {
4748	return awsutil.Prettify(s)
4749}
4750
4751// GoString returns the string representation.
4752//
4753// API parameter values that are decorated as "sensitive" in the API will not
4754// be included in the string output. The member name will be present, but the
4755// value will be replaced with "sensitive".
4756func (s CurrentInstance) GoString() string {
4757	return s.String()
4758}
4759
4760// SetCurrencyCode sets the CurrencyCode field's value.
4761func (s *CurrentInstance) SetCurrencyCode(v string) *CurrentInstance {
4762	s.CurrencyCode = &v
4763	return s
4764}
4765
4766// SetInstanceName sets the InstanceName field's value.
4767func (s *CurrentInstance) SetInstanceName(v string) *CurrentInstance {
4768	s.InstanceName = &v
4769	return s
4770}
4771
4772// SetMonthlyCost sets the MonthlyCost field's value.
4773func (s *CurrentInstance) SetMonthlyCost(v string) *CurrentInstance {
4774	s.MonthlyCost = &v
4775	return s
4776}
4777
4778// SetOnDemandHoursInLookbackPeriod sets the OnDemandHoursInLookbackPeriod field's value.
4779func (s *CurrentInstance) SetOnDemandHoursInLookbackPeriod(v string) *CurrentInstance {
4780	s.OnDemandHoursInLookbackPeriod = &v
4781	return s
4782}
4783
4784// SetReservationCoveredHoursInLookbackPeriod sets the ReservationCoveredHoursInLookbackPeriod field's value.
4785func (s *CurrentInstance) SetReservationCoveredHoursInLookbackPeriod(v string) *CurrentInstance {
4786	s.ReservationCoveredHoursInLookbackPeriod = &v
4787	return s
4788}
4789
4790// SetResourceDetails sets the ResourceDetails field's value.
4791func (s *CurrentInstance) SetResourceDetails(v *ResourceDetails) *CurrentInstance {
4792	s.ResourceDetails = v
4793	return s
4794}
4795
4796// SetResourceId sets the ResourceId field's value.
4797func (s *CurrentInstance) SetResourceId(v string) *CurrentInstance {
4798	s.ResourceId = &v
4799	return s
4800}
4801
4802// SetResourceUtilization sets the ResourceUtilization field's value.
4803func (s *CurrentInstance) SetResourceUtilization(v *ResourceUtilization) *CurrentInstance {
4804	s.ResourceUtilization = v
4805	return s
4806}
4807
4808// SetSavingsPlansCoveredHoursInLookbackPeriod sets the SavingsPlansCoveredHoursInLookbackPeriod field's value.
4809func (s *CurrentInstance) SetSavingsPlansCoveredHoursInLookbackPeriod(v string) *CurrentInstance {
4810	s.SavingsPlansCoveredHoursInLookbackPeriod = &v
4811	return s
4812}
4813
4814// SetTags sets the Tags field's value.
4815func (s *CurrentInstance) SetTags(v []*TagValues) *CurrentInstance {
4816	s.Tags = v
4817	return s
4818}
4819
4820// SetTotalRunningHoursInLookbackPeriod sets the TotalRunningHoursInLookbackPeriod field's value.
4821func (s *CurrentInstance) SetTotalRunningHoursInLookbackPeriod(v string) *CurrentInstance {
4822	s.TotalRunningHoursInLookbackPeriod = &v
4823	return s
4824}
4825
4826// The requested data is unavailable.
4827type DataUnavailableException struct {
4828	_            struct{}                  `type:"structure"`
4829	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
4830
4831	Message_ *string `locationName:"Message" type:"string"`
4832}
4833
4834// String returns the string representation.
4835//
4836// API parameter values that are decorated as "sensitive" in the API will not
4837// be included in the string output. The member name will be present, but the
4838// value will be replaced with "sensitive".
4839func (s DataUnavailableException) String() string {
4840	return awsutil.Prettify(s)
4841}
4842
4843// GoString returns the string representation.
4844//
4845// API parameter values that are decorated as "sensitive" in the API will not
4846// be included in the string output. The member name will be present, but the
4847// value will be replaced with "sensitive".
4848func (s DataUnavailableException) GoString() string {
4849	return s.String()
4850}
4851
4852func newErrorDataUnavailableException(v protocol.ResponseMetadata) error {
4853	return &DataUnavailableException{
4854		RespMetadata: v,
4855	}
4856}
4857
4858// Code returns the exception type name.
4859func (s *DataUnavailableException) Code() string {
4860	return "DataUnavailableException"
4861}
4862
4863// Message returns the exception's message.
4864func (s *DataUnavailableException) Message() string {
4865	if s.Message_ != nil {
4866		return *s.Message_
4867	}
4868	return ""
4869}
4870
4871// OrigErr always returns nil, satisfies awserr.Error interface.
4872func (s *DataUnavailableException) OrigErr() error {
4873	return nil
4874}
4875
4876func (s *DataUnavailableException) Error() string {
4877	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
4878}
4879
4880// Status code returns the HTTP status code for the request's response error.
4881func (s *DataUnavailableException) StatusCode() int {
4882	return s.RespMetadata.StatusCode
4883}
4884
4885// RequestID returns the service's response RequestID for request.
4886func (s *DataUnavailableException) RequestID() string {
4887	return s.RespMetadata.RequestID
4888}
4889
4890// The time period of the request.
4891type DateInterval struct {
4892	_ struct{} `type:"structure"`
4893
4894	// The end of the time period. The end date is exclusive. For example, if end
4895	// is 2017-05-01, Amazon Web Services retrieves cost and usage data from the
4896	// start date up to, but not including, 2017-05-01.
4897	//
4898	// End is a required field
4899	End *string `type:"string" required:"true"`
4900
4901	// The beginning of the time period. The start date is inclusive. For example,
4902	// if start is 2017-01-01, Amazon Web Services retrieves cost and usage data
4903	// starting at 2017-01-01 up to the end date. The start date must be equal to
4904	// or no later than the current date to avoid a validation error.
4905	//
4906	// Start is a required field
4907	Start *string `type:"string" required:"true"`
4908}
4909
4910// String returns the string representation.
4911//
4912// API parameter values that are decorated as "sensitive" in the API will not
4913// be included in the string output. The member name will be present, but the
4914// value will be replaced with "sensitive".
4915func (s DateInterval) String() string {
4916	return awsutil.Prettify(s)
4917}
4918
4919// GoString returns the string representation.
4920//
4921// API parameter values that are decorated as "sensitive" in the API will not
4922// be included in the string output. The member name will be present, but the
4923// value will be replaced with "sensitive".
4924func (s DateInterval) GoString() string {
4925	return s.String()
4926}
4927
4928// Validate inspects the fields of the type to determine if they are valid.
4929func (s *DateInterval) Validate() error {
4930	invalidParams := request.ErrInvalidParams{Context: "DateInterval"}
4931	if s.End == nil {
4932		invalidParams.Add(request.NewErrParamRequired("End"))
4933	}
4934	if s.Start == nil {
4935		invalidParams.Add(request.NewErrParamRequired("Start"))
4936	}
4937
4938	if invalidParams.Len() > 0 {
4939		return invalidParams
4940	}
4941	return nil
4942}
4943
4944// SetEnd sets the End field's value.
4945func (s *DateInterval) SetEnd(v string) *DateInterval {
4946	s.End = &v
4947	return s
4948}
4949
4950// SetStart sets the Start field's value.
4951func (s *DateInterval) SetStart(v string) *DateInterval {
4952	s.Start = &v
4953	return s
4954}
4955
4956type DeleteAnomalyMonitorInput struct {
4957	_ struct{} `type:"structure"`
4958
4959	// The unique identifier of the cost anomaly monitor that you want to delete.
4960	//
4961	// MonitorArn is a required field
4962	MonitorArn *string `type:"string" required:"true"`
4963}
4964
4965// String returns the string representation.
4966//
4967// API parameter values that are decorated as "sensitive" in the API will not
4968// be included in the string output. The member name will be present, but the
4969// value will be replaced with "sensitive".
4970func (s DeleteAnomalyMonitorInput) String() string {
4971	return awsutil.Prettify(s)
4972}
4973
4974// GoString returns the string representation.
4975//
4976// API parameter values that are decorated as "sensitive" in the API will not
4977// be included in the string output. The member name will be present, but the
4978// value will be replaced with "sensitive".
4979func (s DeleteAnomalyMonitorInput) GoString() string {
4980	return s.String()
4981}
4982
4983// Validate inspects the fields of the type to determine if they are valid.
4984func (s *DeleteAnomalyMonitorInput) Validate() error {
4985	invalidParams := request.ErrInvalidParams{Context: "DeleteAnomalyMonitorInput"}
4986	if s.MonitorArn == nil {
4987		invalidParams.Add(request.NewErrParamRequired("MonitorArn"))
4988	}
4989
4990	if invalidParams.Len() > 0 {
4991		return invalidParams
4992	}
4993	return nil
4994}
4995
4996// SetMonitorArn sets the MonitorArn field's value.
4997func (s *DeleteAnomalyMonitorInput) SetMonitorArn(v string) *DeleteAnomalyMonitorInput {
4998	s.MonitorArn = &v
4999	return s
5000}
5001
5002type DeleteAnomalyMonitorOutput struct {
5003	_ struct{} `type:"structure"`
5004}
5005
5006// String returns the string representation.
5007//
5008// API parameter values that are decorated as "sensitive" in the API will not
5009// be included in the string output. The member name will be present, but the
5010// value will be replaced with "sensitive".
5011func (s DeleteAnomalyMonitorOutput) String() string {
5012	return awsutil.Prettify(s)
5013}
5014
5015// GoString returns the string representation.
5016//
5017// API parameter values that are decorated as "sensitive" in the API will not
5018// be included in the string output. The member name will be present, but the
5019// value will be replaced with "sensitive".
5020func (s DeleteAnomalyMonitorOutput) GoString() string {
5021	return s.String()
5022}
5023
5024type DeleteAnomalySubscriptionInput struct {
5025	_ struct{} `type:"structure"`
5026
5027	// The unique identifier of the cost anomaly subscription that you want to delete.
5028	//
5029	// SubscriptionArn is a required field
5030	SubscriptionArn *string `type:"string" required:"true"`
5031}
5032
5033// String returns the string representation.
5034//
5035// API parameter values that are decorated as "sensitive" in the API will not
5036// be included in the string output. The member name will be present, but the
5037// value will be replaced with "sensitive".
5038func (s DeleteAnomalySubscriptionInput) String() string {
5039	return awsutil.Prettify(s)
5040}
5041
5042// GoString returns the string representation.
5043//
5044// API parameter values that are decorated as "sensitive" in the API will not
5045// be included in the string output. The member name will be present, but the
5046// value will be replaced with "sensitive".
5047func (s DeleteAnomalySubscriptionInput) GoString() string {
5048	return s.String()
5049}
5050
5051// Validate inspects the fields of the type to determine if they are valid.
5052func (s *DeleteAnomalySubscriptionInput) Validate() error {
5053	invalidParams := request.ErrInvalidParams{Context: "DeleteAnomalySubscriptionInput"}
5054	if s.SubscriptionArn == nil {
5055		invalidParams.Add(request.NewErrParamRequired("SubscriptionArn"))
5056	}
5057
5058	if invalidParams.Len() > 0 {
5059		return invalidParams
5060	}
5061	return nil
5062}
5063
5064// SetSubscriptionArn sets the SubscriptionArn field's value.
5065func (s *DeleteAnomalySubscriptionInput) SetSubscriptionArn(v string) *DeleteAnomalySubscriptionInput {
5066	s.SubscriptionArn = &v
5067	return s
5068}
5069
5070type DeleteAnomalySubscriptionOutput struct {
5071	_ struct{} `type:"structure"`
5072}
5073
5074// String returns the string representation.
5075//
5076// API parameter values that are decorated as "sensitive" in the API will not
5077// be included in the string output. The member name will be present, but the
5078// value will be replaced with "sensitive".
5079func (s DeleteAnomalySubscriptionOutput) String() string {
5080	return awsutil.Prettify(s)
5081}
5082
5083// GoString returns the string representation.
5084//
5085// API parameter values that are decorated as "sensitive" in the API will not
5086// be included in the string output. The member name will be present, but the
5087// value will be replaced with "sensitive".
5088func (s DeleteAnomalySubscriptionOutput) GoString() string {
5089	return s.String()
5090}
5091
5092type DeleteCostCategoryDefinitionInput struct {
5093	_ struct{} `type:"structure"`
5094
5095	// The unique identifier for your Cost Category.
5096	//
5097	// CostCategoryArn is a required field
5098	CostCategoryArn *string `min:"20" type:"string" required:"true"`
5099}
5100
5101// String returns the string representation.
5102//
5103// API parameter values that are decorated as "sensitive" in the API will not
5104// be included in the string output. The member name will be present, but the
5105// value will be replaced with "sensitive".
5106func (s DeleteCostCategoryDefinitionInput) String() string {
5107	return awsutil.Prettify(s)
5108}
5109
5110// GoString returns the string representation.
5111//
5112// API parameter values that are decorated as "sensitive" in the API will not
5113// be included in the string output. The member name will be present, but the
5114// value will be replaced with "sensitive".
5115func (s DeleteCostCategoryDefinitionInput) GoString() string {
5116	return s.String()
5117}
5118
5119// Validate inspects the fields of the type to determine if they are valid.
5120func (s *DeleteCostCategoryDefinitionInput) Validate() error {
5121	invalidParams := request.ErrInvalidParams{Context: "DeleteCostCategoryDefinitionInput"}
5122	if s.CostCategoryArn == nil {
5123		invalidParams.Add(request.NewErrParamRequired("CostCategoryArn"))
5124	}
5125	if s.CostCategoryArn != nil && len(*s.CostCategoryArn) < 20 {
5126		invalidParams.Add(request.NewErrParamMinLen("CostCategoryArn", 20))
5127	}
5128
5129	if invalidParams.Len() > 0 {
5130		return invalidParams
5131	}
5132	return nil
5133}
5134
5135// SetCostCategoryArn sets the CostCategoryArn field's value.
5136func (s *DeleteCostCategoryDefinitionInput) SetCostCategoryArn(v string) *DeleteCostCategoryDefinitionInput {
5137	s.CostCategoryArn = &v
5138	return s
5139}
5140
5141type DeleteCostCategoryDefinitionOutput struct {
5142	_ struct{} `type:"structure"`
5143
5144	// The unique identifier for your Cost Category.
5145	CostCategoryArn *string `min:"20" type:"string"`
5146
5147	// The effective end date of the Cost Category as a result of deleting it. No
5148	// costs after this date will be categorized by the deleted Cost Category.
5149	EffectiveEnd *string `min:"20" type:"string"`
5150}
5151
5152// String returns the string representation.
5153//
5154// API parameter values that are decorated as "sensitive" in the API will not
5155// be included in the string output. The member name will be present, but the
5156// value will be replaced with "sensitive".
5157func (s DeleteCostCategoryDefinitionOutput) String() string {
5158	return awsutil.Prettify(s)
5159}
5160
5161// GoString returns the string representation.
5162//
5163// API parameter values that are decorated as "sensitive" in the API will not
5164// be included in the string output. The member name will be present, but the
5165// value will be replaced with "sensitive".
5166func (s DeleteCostCategoryDefinitionOutput) GoString() string {
5167	return s.String()
5168}
5169
5170// SetCostCategoryArn sets the CostCategoryArn field's value.
5171func (s *DeleteCostCategoryDefinitionOutput) SetCostCategoryArn(v string) *DeleteCostCategoryDefinitionOutput {
5172	s.CostCategoryArn = &v
5173	return s
5174}
5175
5176// SetEffectiveEnd sets the EffectiveEnd field's value.
5177func (s *DeleteCostCategoryDefinitionOutput) SetEffectiveEnd(v string) *DeleteCostCategoryDefinitionOutput {
5178	s.EffectiveEnd = &v
5179	return s
5180}
5181
5182type DescribeCostCategoryDefinitionInput struct {
5183	_ struct{} `type:"structure"`
5184
5185	// The unique identifier for your Cost Category.
5186	//
5187	// CostCategoryArn is a required field
5188	CostCategoryArn *string `min:"20" type:"string" required:"true"`
5189
5190	// The date when the Cost Category was effective.
5191	EffectiveOn *string `min:"20" type:"string"`
5192}
5193
5194// String returns the string representation.
5195//
5196// API parameter values that are decorated as "sensitive" in the API will not
5197// be included in the string output. The member name will be present, but the
5198// value will be replaced with "sensitive".
5199func (s DescribeCostCategoryDefinitionInput) String() string {
5200	return awsutil.Prettify(s)
5201}
5202
5203// GoString returns the string representation.
5204//
5205// API parameter values that are decorated as "sensitive" in the API will not
5206// be included in the string output. The member name will be present, but the
5207// value will be replaced with "sensitive".
5208func (s DescribeCostCategoryDefinitionInput) GoString() string {
5209	return s.String()
5210}
5211
5212// Validate inspects the fields of the type to determine if they are valid.
5213func (s *DescribeCostCategoryDefinitionInput) Validate() error {
5214	invalidParams := request.ErrInvalidParams{Context: "DescribeCostCategoryDefinitionInput"}
5215	if s.CostCategoryArn == nil {
5216		invalidParams.Add(request.NewErrParamRequired("CostCategoryArn"))
5217	}
5218	if s.CostCategoryArn != nil && len(*s.CostCategoryArn) < 20 {
5219		invalidParams.Add(request.NewErrParamMinLen("CostCategoryArn", 20))
5220	}
5221	if s.EffectiveOn != nil && len(*s.EffectiveOn) < 20 {
5222		invalidParams.Add(request.NewErrParamMinLen("EffectiveOn", 20))
5223	}
5224
5225	if invalidParams.Len() > 0 {
5226		return invalidParams
5227	}
5228	return nil
5229}
5230
5231// SetCostCategoryArn sets the CostCategoryArn field's value.
5232func (s *DescribeCostCategoryDefinitionInput) SetCostCategoryArn(v string) *DescribeCostCategoryDefinitionInput {
5233	s.CostCategoryArn = &v
5234	return s
5235}
5236
5237// SetEffectiveOn sets the EffectiveOn field's value.
5238func (s *DescribeCostCategoryDefinitionInput) SetEffectiveOn(v string) *DescribeCostCategoryDefinitionInput {
5239	s.EffectiveOn = &v
5240	return s
5241}
5242
5243type DescribeCostCategoryDefinitionOutput struct {
5244	_ struct{} `type:"structure"`
5245
5246	// The structure of Cost Categories. This includes detailed metadata and the
5247	// set of rules for the CostCategory object.
5248	CostCategory *CostCategory `type:"structure"`
5249}
5250
5251// String returns the string representation.
5252//
5253// API parameter values that are decorated as "sensitive" in the API will not
5254// be included in the string output. The member name will be present, but the
5255// value will be replaced with "sensitive".
5256func (s DescribeCostCategoryDefinitionOutput) String() string {
5257	return awsutil.Prettify(s)
5258}
5259
5260// GoString returns the string representation.
5261//
5262// API parameter values that are decorated as "sensitive" in the API will not
5263// be included in the string output. The member name will be present, but the
5264// value will be replaced with "sensitive".
5265func (s DescribeCostCategoryDefinitionOutput) GoString() string {
5266	return s.String()
5267}
5268
5269// SetCostCategory sets the CostCategory field's value.
5270func (s *DescribeCostCategoryDefinitionOutput) SetCostCategory(v *CostCategory) *DescribeCostCategoryDefinitionOutput {
5271	s.CostCategory = v
5272	return s
5273}
5274
5275// The metadata that you can use to filter and group your results. You can use
5276// GetDimensionValues to find specific values.
5277type DimensionValues struct {
5278	_ struct{} `type:"structure"`
5279
5280	// The names of the metadata types that you can use to filter and group your
5281	// results. For example, AZ returns a list of Availability Zones.
5282	Key *string `type:"string" enum:"Dimension"`
5283
5284	// The match options that you can use to filter your results. MatchOptions is
5285	// only applicable for actions related to Cost Category. The default values
5286	// for MatchOptions are EQUALS and CASE_SENSITIVE.
5287	MatchOptions []*string `type:"list"`
5288
5289	// The metadata values that you can use to filter and group your results. You
5290	// can use GetDimensionValues to find specific values.
5291	Values []*string `type:"list"`
5292}
5293
5294// String returns the string representation.
5295//
5296// API parameter values that are decorated as "sensitive" in the API will not
5297// be included in the string output. The member name will be present, but the
5298// value will be replaced with "sensitive".
5299func (s DimensionValues) String() string {
5300	return awsutil.Prettify(s)
5301}
5302
5303// GoString returns the string representation.
5304//
5305// API parameter values that are decorated as "sensitive" in the API will not
5306// be included in the string output. The member name will be present, but the
5307// value will be replaced with "sensitive".
5308func (s DimensionValues) GoString() string {
5309	return s.String()
5310}
5311
5312// SetKey sets the Key field's value.
5313func (s *DimensionValues) SetKey(v string) *DimensionValues {
5314	s.Key = &v
5315	return s
5316}
5317
5318// SetMatchOptions sets the MatchOptions field's value.
5319func (s *DimensionValues) SetMatchOptions(v []*string) *DimensionValues {
5320	s.MatchOptions = v
5321	return s
5322}
5323
5324// SetValues sets the Values field's value.
5325func (s *DimensionValues) SetValues(v []*string) *DimensionValues {
5326	s.Values = v
5327	return s
5328}
5329
5330// The metadata of a specific type that you can use to filter and group your
5331// results. You can use GetDimensionValues to find specific values.
5332type DimensionValuesWithAttributes struct {
5333	_ struct{} `type:"structure"`
5334
5335	// The attribute that applies to a specific Dimension.
5336	Attributes map[string]*string `type:"map"`
5337
5338	// The value of a dimension with a specific attribute.
5339	Value *string `type:"string"`
5340}
5341
5342// String returns the string representation.
5343//
5344// API parameter values that are decorated as "sensitive" in the API will not
5345// be included in the string output. The member name will be present, but the
5346// value will be replaced with "sensitive".
5347func (s DimensionValuesWithAttributes) String() string {
5348	return awsutil.Prettify(s)
5349}
5350
5351// GoString returns the string representation.
5352//
5353// API parameter values that are decorated as "sensitive" in the API will not
5354// be included in the string output. The member name will be present, but the
5355// value will be replaced with "sensitive".
5356func (s DimensionValuesWithAttributes) GoString() string {
5357	return s.String()
5358}
5359
5360// SetAttributes sets the Attributes field's value.
5361func (s *DimensionValuesWithAttributes) SetAttributes(v map[string]*string) *DimensionValuesWithAttributes {
5362	s.Attributes = v
5363	return s
5364}
5365
5366// SetValue sets the Value field's value.
5367func (s *DimensionValuesWithAttributes) SetValue(v string) *DimensionValuesWithAttributes {
5368	s.Value = &v
5369	return s
5370}
5371
5372// The field that contains a list of disk (local storage) metrics that are associated
5373// with the current instance.
5374type DiskResourceUtilization struct {
5375	_ struct{} `type:"structure"`
5376
5377	// The maximum read throughput operations per second.
5378	DiskReadBytesPerSecond *string `type:"string"`
5379
5380	// The maximum number of read operations per second.
5381	DiskReadOpsPerSecond *string `type:"string"`
5382
5383	// The maximum write throughput operations per second.
5384	DiskWriteBytesPerSecond *string `type:"string"`
5385
5386	// The maximum number of write operations per second.
5387	DiskWriteOpsPerSecond *string `type:"string"`
5388}
5389
5390// String returns the string representation.
5391//
5392// API parameter values that are decorated as "sensitive" in the API will not
5393// be included in the string output. The member name will be present, but the
5394// value will be replaced with "sensitive".
5395func (s DiskResourceUtilization) String() string {
5396	return awsutil.Prettify(s)
5397}
5398
5399// GoString returns the string representation.
5400//
5401// API parameter values that are decorated as "sensitive" in the API will not
5402// be included in the string output. The member name will be present, but the
5403// value will be replaced with "sensitive".
5404func (s DiskResourceUtilization) GoString() string {
5405	return s.String()
5406}
5407
5408// SetDiskReadBytesPerSecond sets the DiskReadBytesPerSecond field's value.
5409func (s *DiskResourceUtilization) SetDiskReadBytesPerSecond(v string) *DiskResourceUtilization {
5410	s.DiskReadBytesPerSecond = &v
5411	return s
5412}
5413
5414// SetDiskReadOpsPerSecond sets the DiskReadOpsPerSecond field's value.
5415func (s *DiskResourceUtilization) SetDiskReadOpsPerSecond(v string) *DiskResourceUtilization {
5416	s.DiskReadOpsPerSecond = &v
5417	return s
5418}
5419
5420// SetDiskWriteBytesPerSecond sets the DiskWriteBytesPerSecond field's value.
5421func (s *DiskResourceUtilization) SetDiskWriteBytesPerSecond(v string) *DiskResourceUtilization {
5422	s.DiskWriteBytesPerSecond = &v
5423	return s
5424}
5425
5426// SetDiskWriteOpsPerSecond sets the DiskWriteOpsPerSecond field's value.
5427func (s *DiskResourceUtilization) SetDiskWriteOpsPerSecond(v string) *DiskResourceUtilization {
5428	s.DiskWriteOpsPerSecond = &v
5429	return s
5430}
5431
5432// The EBS field that contains a list of EBS metrics that are associated with
5433// the current instance.
5434type EBSResourceUtilization struct {
5435	_ struct{} `type:"structure"`
5436
5437	// The maximum size of read operations per second
5438	EbsReadBytesPerSecond *string `type:"string"`
5439
5440	// The maximum number of read operations per second.
5441	EbsReadOpsPerSecond *string `type:"string"`
5442
5443	// The maximum size of write operations per second.
5444	EbsWriteBytesPerSecond *string `type:"string"`
5445
5446	// The maximum number of write operations per second.
5447	EbsWriteOpsPerSecond *string `type:"string"`
5448}
5449
5450// String returns the string representation.
5451//
5452// API parameter values that are decorated as "sensitive" in the API will not
5453// be included in the string output. The member name will be present, but the
5454// value will be replaced with "sensitive".
5455func (s EBSResourceUtilization) String() string {
5456	return awsutil.Prettify(s)
5457}
5458
5459// GoString returns the string representation.
5460//
5461// API parameter values that are decorated as "sensitive" in the API will not
5462// be included in the string output. The member name will be present, but the
5463// value will be replaced with "sensitive".
5464func (s EBSResourceUtilization) GoString() string {
5465	return s.String()
5466}
5467
5468// SetEbsReadBytesPerSecond sets the EbsReadBytesPerSecond field's value.
5469func (s *EBSResourceUtilization) SetEbsReadBytesPerSecond(v string) *EBSResourceUtilization {
5470	s.EbsReadBytesPerSecond = &v
5471	return s
5472}
5473
5474// SetEbsReadOpsPerSecond sets the EbsReadOpsPerSecond field's value.
5475func (s *EBSResourceUtilization) SetEbsReadOpsPerSecond(v string) *EBSResourceUtilization {
5476	s.EbsReadOpsPerSecond = &v
5477	return s
5478}
5479
5480// SetEbsWriteBytesPerSecond sets the EbsWriteBytesPerSecond field's value.
5481func (s *EBSResourceUtilization) SetEbsWriteBytesPerSecond(v string) *EBSResourceUtilization {
5482	s.EbsWriteBytesPerSecond = &v
5483	return s
5484}
5485
5486// SetEbsWriteOpsPerSecond sets the EbsWriteOpsPerSecond field's value.
5487func (s *EBSResourceUtilization) SetEbsWriteOpsPerSecond(v string) *EBSResourceUtilization {
5488	s.EbsWriteOpsPerSecond = &v
5489	return s
5490}
5491
5492// Details about the Amazon EC2 instances that Amazon Web Services recommends
5493// that you purchase.
5494type EC2InstanceDetails struct {
5495	_ struct{} `type:"structure"`
5496
5497	// The Availability Zone of the recommended reservation.
5498	AvailabilityZone *string `type:"string"`
5499
5500	// Determines whether the recommendation is for a current-generation instance.
5501	CurrentGeneration *bool `type:"boolean"`
5502
5503	// The instance family of the recommended reservation.
5504	Family *string `type:"string"`
5505
5506	// The type of instance that Amazon Web Services recommends.
5507	InstanceType *string `type:"string"`
5508
5509	// The platform of the recommended reservation. The platform is the specific
5510	// combination of operating system, license model, and software on an instance.
5511	Platform *string `type:"string"`
5512
5513	// The Amazon Web Services Region of the recommended reservation.
5514	Region *string `type:"string"`
5515
5516	// Determines whether the recommended reservation is size flexible.
5517	SizeFlexEligible *bool `type:"boolean"`
5518
5519	// Determines whether the recommended reservation is dedicated or shared.
5520	Tenancy *string `type:"string"`
5521}
5522
5523// String returns the string representation.
5524//
5525// API parameter values that are decorated as "sensitive" in the API will not
5526// be included in the string output. The member name will be present, but the
5527// value will be replaced with "sensitive".
5528func (s EC2InstanceDetails) String() string {
5529	return awsutil.Prettify(s)
5530}
5531
5532// GoString returns the string representation.
5533//
5534// API parameter values that are decorated as "sensitive" in the API will not
5535// be included in the string output. The member name will be present, but the
5536// value will be replaced with "sensitive".
5537func (s EC2InstanceDetails) GoString() string {
5538	return s.String()
5539}
5540
5541// SetAvailabilityZone sets the AvailabilityZone field's value.
5542func (s *EC2InstanceDetails) SetAvailabilityZone(v string) *EC2InstanceDetails {
5543	s.AvailabilityZone = &v
5544	return s
5545}
5546
5547// SetCurrentGeneration sets the CurrentGeneration field's value.
5548func (s *EC2InstanceDetails) SetCurrentGeneration(v bool) *EC2InstanceDetails {
5549	s.CurrentGeneration = &v
5550	return s
5551}
5552
5553// SetFamily sets the Family field's value.
5554func (s *EC2InstanceDetails) SetFamily(v string) *EC2InstanceDetails {
5555	s.Family = &v
5556	return s
5557}
5558
5559// SetInstanceType sets the InstanceType field's value.
5560func (s *EC2InstanceDetails) SetInstanceType(v string) *EC2InstanceDetails {
5561	s.InstanceType = &v
5562	return s
5563}
5564
5565// SetPlatform sets the Platform field's value.
5566func (s *EC2InstanceDetails) SetPlatform(v string) *EC2InstanceDetails {
5567	s.Platform = &v
5568	return s
5569}
5570
5571// SetRegion sets the Region field's value.
5572func (s *EC2InstanceDetails) SetRegion(v string) *EC2InstanceDetails {
5573	s.Region = &v
5574	return s
5575}
5576
5577// SetSizeFlexEligible sets the SizeFlexEligible field's value.
5578func (s *EC2InstanceDetails) SetSizeFlexEligible(v bool) *EC2InstanceDetails {
5579	s.SizeFlexEligible = &v
5580	return s
5581}
5582
5583// SetTenancy sets the Tenancy field's value.
5584func (s *EC2InstanceDetails) SetTenancy(v string) *EC2InstanceDetails {
5585	s.Tenancy = &v
5586	return s
5587}
5588
5589// Details on the Amazon EC2 Resource.
5590type EC2ResourceDetails struct {
5591	_ struct{} `type:"structure"`
5592
5593	// The hourly public On-Demand rate for the instance type.
5594	HourlyOnDemandRate *string `type:"string"`
5595
5596	// The type of Amazon Web Services instance.
5597	InstanceType *string `type:"string"`
5598
5599	// The memory capacity of the Amazon Web Services instance.
5600	Memory *string `type:"string"`
5601
5602	// The network performance capacity of the Amazon Web Services instance.
5603	NetworkPerformance *string `type:"string"`
5604
5605	// The platform of the Amazon Web Services instance. The platform is the specific
5606	// combination of operating system, license model, and software on an instance.
5607	Platform *string `type:"string"`
5608
5609	// The Amazon Web Services Region of the instance.
5610	Region *string `type:"string"`
5611
5612	// The SKU of the product.
5613	Sku *string `type:"string"`
5614
5615	// The disk storage of the Amazon Web Services instance. This doesn't include
5616	// EBS storage.
5617	Storage *string `type:"string"`
5618
5619	// The number of VCPU cores in the Amazon Web Services instance type.
5620	Vcpu *string `type:"string"`
5621}
5622
5623// String returns the string representation.
5624//
5625// API parameter values that are decorated as "sensitive" in the API will not
5626// be included in the string output. The member name will be present, but the
5627// value will be replaced with "sensitive".
5628func (s EC2ResourceDetails) String() string {
5629	return awsutil.Prettify(s)
5630}
5631
5632// GoString returns the string representation.
5633//
5634// API parameter values that are decorated as "sensitive" in the API will not
5635// be included in the string output. The member name will be present, but the
5636// value will be replaced with "sensitive".
5637func (s EC2ResourceDetails) GoString() string {
5638	return s.String()
5639}
5640
5641// SetHourlyOnDemandRate sets the HourlyOnDemandRate field's value.
5642func (s *EC2ResourceDetails) SetHourlyOnDemandRate(v string) *EC2ResourceDetails {
5643	s.HourlyOnDemandRate = &v
5644	return s
5645}
5646
5647// SetInstanceType sets the InstanceType field's value.
5648func (s *EC2ResourceDetails) SetInstanceType(v string) *EC2ResourceDetails {
5649	s.InstanceType = &v
5650	return s
5651}
5652
5653// SetMemory sets the Memory field's value.
5654func (s *EC2ResourceDetails) SetMemory(v string) *EC2ResourceDetails {
5655	s.Memory = &v
5656	return s
5657}
5658
5659// SetNetworkPerformance sets the NetworkPerformance field's value.
5660func (s *EC2ResourceDetails) SetNetworkPerformance(v string) *EC2ResourceDetails {
5661	s.NetworkPerformance = &v
5662	return s
5663}
5664
5665// SetPlatform sets the Platform field's value.
5666func (s *EC2ResourceDetails) SetPlatform(v string) *EC2ResourceDetails {
5667	s.Platform = &v
5668	return s
5669}
5670
5671// SetRegion sets the Region field's value.
5672func (s *EC2ResourceDetails) SetRegion(v string) *EC2ResourceDetails {
5673	s.Region = &v
5674	return s
5675}
5676
5677// SetSku sets the Sku field's value.
5678func (s *EC2ResourceDetails) SetSku(v string) *EC2ResourceDetails {
5679	s.Sku = &v
5680	return s
5681}
5682
5683// SetStorage sets the Storage field's value.
5684func (s *EC2ResourceDetails) SetStorage(v string) *EC2ResourceDetails {
5685	s.Storage = &v
5686	return s
5687}
5688
5689// SetVcpu sets the Vcpu field's value.
5690func (s *EC2ResourceDetails) SetVcpu(v string) *EC2ResourceDetails {
5691	s.Vcpu = &v
5692	return s
5693}
5694
5695// Utilization metrics of the instance.
5696type EC2ResourceUtilization struct {
5697	_ struct{} `type:"structure"`
5698
5699	// The field that contains a list of disk (local storage) metrics that are associated
5700	// with the current instance.
5701	DiskResourceUtilization *DiskResourceUtilization `type:"structure"`
5702
5703	// The EBS field that contains a list of EBS metrics that are associated with
5704	// the current instance.
5705	EBSResourceUtilization *EBSResourceUtilization `type:"structure"`
5706
5707	// The maximum observed or expected CPU utilization of the instance.
5708	MaxCpuUtilizationPercentage *string `type:"string"`
5709
5710	// The maximum observed or expected memory utilization of the instance.
5711	MaxMemoryUtilizationPercentage *string `type:"string"`
5712
5713	// The maximum observed or expected storage utilization of the instance. This
5714	// doesn't include EBS storage.
5715	MaxStorageUtilizationPercentage *string `type:"string"`
5716
5717	// The network field that contains a list of network metrics that are associated
5718	// with the current instance.
5719	NetworkResourceUtilization *NetworkResourceUtilization `type:"structure"`
5720}
5721
5722// String returns the string representation.
5723//
5724// API parameter values that are decorated as "sensitive" in the API will not
5725// be included in the string output. The member name will be present, but the
5726// value will be replaced with "sensitive".
5727func (s EC2ResourceUtilization) String() string {
5728	return awsutil.Prettify(s)
5729}
5730
5731// GoString returns the string representation.
5732//
5733// API parameter values that are decorated as "sensitive" in the API will not
5734// be included in the string output. The member name will be present, but the
5735// value will be replaced with "sensitive".
5736func (s EC2ResourceUtilization) GoString() string {
5737	return s.String()
5738}
5739
5740// SetDiskResourceUtilization sets the DiskResourceUtilization field's value.
5741func (s *EC2ResourceUtilization) SetDiskResourceUtilization(v *DiskResourceUtilization) *EC2ResourceUtilization {
5742	s.DiskResourceUtilization = v
5743	return s
5744}
5745
5746// SetEBSResourceUtilization sets the EBSResourceUtilization field's value.
5747func (s *EC2ResourceUtilization) SetEBSResourceUtilization(v *EBSResourceUtilization) *EC2ResourceUtilization {
5748	s.EBSResourceUtilization = v
5749	return s
5750}
5751
5752// SetMaxCpuUtilizationPercentage sets the MaxCpuUtilizationPercentage field's value.
5753func (s *EC2ResourceUtilization) SetMaxCpuUtilizationPercentage(v string) *EC2ResourceUtilization {
5754	s.MaxCpuUtilizationPercentage = &v
5755	return s
5756}
5757
5758// SetMaxMemoryUtilizationPercentage sets the MaxMemoryUtilizationPercentage field's value.
5759func (s *EC2ResourceUtilization) SetMaxMemoryUtilizationPercentage(v string) *EC2ResourceUtilization {
5760	s.MaxMemoryUtilizationPercentage = &v
5761	return s
5762}
5763
5764// SetMaxStorageUtilizationPercentage sets the MaxStorageUtilizationPercentage field's value.
5765func (s *EC2ResourceUtilization) SetMaxStorageUtilizationPercentage(v string) *EC2ResourceUtilization {
5766	s.MaxStorageUtilizationPercentage = &v
5767	return s
5768}
5769
5770// SetNetworkResourceUtilization sets the NetworkResourceUtilization field's value.
5771func (s *EC2ResourceUtilization) SetNetworkResourceUtilization(v *NetworkResourceUtilization) *EC2ResourceUtilization {
5772	s.NetworkResourceUtilization = v
5773	return s
5774}
5775
5776// The Amazon EC2 hardware specifications that you want Amazon Web Services
5777// to provide recommendations for.
5778type EC2Specification struct {
5779	_ struct{} `type:"structure"`
5780
5781	// Indicates whether you want a recommendation for standard or convertible reservations.
5782	OfferingClass *string `type:"string" enum:"OfferingClass"`
5783}
5784
5785// String returns the string representation.
5786//
5787// API parameter values that are decorated as "sensitive" in the API will not
5788// be included in the string output. The member name will be present, but the
5789// value will be replaced with "sensitive".
5790func (s EC2Specification) String() string {
5791	return awsutil.Prettify(s)
5792}
5793
5794// GoString returns the string representation.
5795//
5796// API parameter values that are decorated as "sensitive" in the API will not
5797// be included in the string output. The member name will be present, but the
5798// value will be replaced with "sensitive".
5799func (s EC2Specification) GoString() string {
5800	return s.String()
5801}
5802
5803// SetOfferingClass sets the OfferingClass field's value.
5804func (s *EC2Specification) SetOfferingClass(v string) *EC2Specification {
5805	s.OfferingClass = &v
5806	return s
5807}
5808
5809// Details about the Amazon ES instances that Amazon Web Services recommends
5810// that you purchase.
5811type ESInstanceDetails struct {
5812	_ struct{} `type:"structure"`
5813
5814	// Determines whether the recommendation is for a current-generation instance.
5815	CurrentGeneration *bool `type:"boolean"`
5816
5817	// The class of instance that Amazon Web Services recommends.
5818	InstanceClass *string `type:"string"`
5819
5820	// The size of instance that Amazon Web Services recommends.
5821	InstanceSize *string `type:"string"`
5822
5823	// The Amazon Web Services Region of the recommended reservation.
5824	Region *string `type:"string"`
5825
5826	// Determines whether the recommended reservation is size flexible.
5827	SizeFlexEligible *bool `type:"boolean"`
5828}
5829
5830// String returns the string representation.
5831//
5832// API parameter values that are decorated as "sensitive" in the API will not
5833// be included in the string output. The member name will be present, but the
5834// value will be replaced with "sensitive".
5835func (s ESInstanceDetails) String() string {
5836	return awsutil.Prettify(s)
5837}
5838
5839// GoString returns the string representation.
5840//
5841// API parameter values that are decorated as "sensitive" in the API will not
5842// be included in the string output. The member name will be present, but the
5843// value will be replaced with "sensitive".
5844func (s ESInstanceDetails) GoString() string {
5845	return s.String()
5846}
5847
5848// SetCurrentGeneration sets the CurrentGeneration field's value.
5849func (s *ESInstanceDetails) SetCurrentGeneration(v bool) *ESInstanceDetails {
5850	s.CurrentGeneration = &v
5851	return s
5852}
5853
5854// SetInstanceClass sets the InstanceClass field's value.
5855func (s *ESInstanceDetails) SetInstanceClass(v string) *ESInstanceDetails {
5856	s.InstanceClass = &v
5857	return s
5858}
5859
5860// SetInstanceSize sets the InstanceSize field's value.
5861func (s *ESInstanceDetails) SetInstanceSize(v string) *ESInstanceDetails {
5862	s.InstanceSize = &v
5863	return s
5864}
5865
5866// SetRegion sets the Region field's value.
5867func (s *ESInstanceDetails) SetRegion(v string) *ESInstanceDetails {
5868	s.Region = &v
5869	return s
5870}
5871
5872// SetSizeFlexEligible sets the SizeFlexEligible field's value.
5873func (s *ESInstanceDetails) SetSizeFlexEligible(v bool) *ESInstanceDetails {
5874	s.SizeFlexEligible = &v
5875	return s
5876}
5877
5878// Details about the Amazon ElastiCache instances that Amazon Web Services recommends
5879// that you purchase.
5880type ElastiCacheInstanceDetails struct {
5881	_ struct{} `type:"structure"`
5882
5883	// Determines whether the recommendation is for a current generation instance.
5884	CurrentGeneration *bool `type:"boolean"`
5885
5886	// The instance family of the recommended reservation.
5887	Family *string `type:"string"`
5888
5889	// The type of node that Amazon Web Services recommends.
5890	NodeType *string `type:"string"`
5891
5892	// The description of the recommended reservation.
5893	ProductDescription *string `type:"string"`
5894
5895	// The Amazon Web Services Region of the recommended reservation.
5896	Region *string `type:"string"`
5897
5898	// Determines whether the recommended reservation is size flexible.
5899	SizeFlexEligible *bool `type:"boolean"`
5900}
5901
5902// String returns the string representation.
5903//
5904// API parameter values that are decorated as "sensitive" in the API will not
5905// be included in the string output. The member name will be present, but the
5906// value will be replaced with "sensitive".
5907func (s ElastiCacheInstanceDetails) String() string {
5908	return awsutil.Prettify(s)
5909}
5910
5911// GoString returns the string representation.
5912//
5913// API parameter values that are decorated as "sensitive" in the API will not
5914// be included in the string output. The member name will be present, but the
5915// value will be replaced with "sensitive".
5916func (s ElastiCacheInstanceDetails) GoString() string {
5917	return s.String()
5918}
5919
5920// SetCurrentGeneration sets the CurrentGeneration field's value.
5921func (s *ElastiCacheInstanceDetails) SetCurrentGeneration(v bool) *ElastiCacheInstanceDetails {
5922	s.CurrentGeneration = &v
5923	return s
5924}
5925
5926// SetFamily sets the Family field's value.
5927func (s *ElastiCacheInstanceDetails) SetFamily(v string) *ElastiCacheInstanceDetails {
5928	s.Family = &v
5929	return s
5930}
5931
5932// SetNodeType sets the NodeType field's value.
5933func (s *ElastiCacheInstanceDetails) SetNodeType(v string) *ElastiCacheInstanceDetails {
5934	s.NodeType = &v
5935	return s
5936}
5937
5938// SetProductDescription sets the ProductDescription field's value.
5939func (s *ElastiCacheInstanceDetails) SetProductDescription(v string) *ElastiCacheInstanceDetails {
5940	s.ProductDescription = &v
5941	return s
5942}
5943
5944// SetRegion sets the Region field's value.
5945func (s *ElastiCacheInstanceDetails) SetRegion(v string) *ElastiCacheInstanceDetails {
5946	s.Region = &v
5947	return s
5948}
5949
5950// SetSizeFlexEligible sets the SizeFlexEligible field's value.
5951func (s *ElastiCacheInstanceDetails) SetSizeFlexEligible(v bool) *ElastiCacheInstanceDetails {
5952	s.SizeFlexEligible = &v
5953	return s
5954}
5955
5956// Use Expression to filter by cost or by usage. There are two patterns:
5957//
5958//    * Simple dimension values - You can set the dimension name and values
5959//    for the filters that you plan to use. For example, you can filter for
5960//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
5961//    the Region is a full name (for example, REGION==US East (N. Virginia).
5962//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
5963//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
5964//    are OR'd together to retrieve cost or usage data. You can create Expression
5965//    and DimensionValues objects using either with* methods or set* methods
5966//    in multiple lines.
5967//
5968//    * Compound dimension values with logical operations - You can use multiple
5969//    Expression types and the logical operators AND/OR/NOT to create a list
5970//    of one or more Expression objects. By doing this, you can filter on more
5971//    advanced options. For example, you can filter on ((REGION == us-east-1
5972//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
5973//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
5974//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
5975//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
5976//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
5977//    Expression can have only one operator, the service returns an error if
5978//    more than one is specified. The following example shows an Expression
5979//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
5980//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
5981//
5982// For the GetRightsizingRecommendation action, a combination of OR and NOT
5983// isn't supported. OR isn't supported between different dimensions, or dimensions
5984// and tags. NOT operators aren't supported. Dimensions are also limited to
5985// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
5986//
5987// For the GetReservationPurchaseRecommendation action, only NOT is supported.
5988// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
5989type Expression struct {
5990	_ struct{} `type:"structure"`
5991
5992	// Return results that match both Dimension objects.
5993	And []*Expression `type:"list"`
5994
5995	// The filter that's based on CostCategory values.
5996	CostCategories *CostCategoryValues `type:"structure"`
5997
5998	// The specific Dimension to use for Expression.
5999	Dimensions *DimensionValues `type:"structure"`
6000
6001	// Return results that don't match a Dimension object.
6002	Not *Expression `type:"structure"`
6003
6004	// Return results that match either Dimension object.
6005	Or []*Expression `type:"list"`
6006
6007	// The specific Tag to use for Expression.
6008	Tags *TagValues `type:"structure"`
6009}
6010
6011// String returns the string representation.
6012//
6013// API parameter values that are decorated as "sensitive" in the API will not
6014// be included in the string output. The member name will be present, but the
6015// value will be replaced with "sensitive".
6016func (s Expression) String() string {
6017	return awsutil.Prettify(s)
6018}
6019
6020// GoString returns the string representation.
6021//
6022// API parameter values that are decorated as "sensitive" in the API will not
6023// be included in the string output. The member name will be present, but the
6024// value will be replaced with "sensitive".
6025func (s Expression) GoString() string {
6026	return s.String()
6027}
6028
6029// Validate inspects the fields of the type to determine if they are valid.
6030func (s *Expression) Validate() error {
6031	invalidParams := request.ErrInvalidParams{Context: "Expression"}
6032	if s.CostCategories != nil {
6033		if err := s.CostCategories.Validate(); err != nil {
6034			invalidParams.AddNested("CostCategories", err.(request.ErrInvalidParams))
6035		}
6036	}
6037	if s.Not != nil {
6038		if err := s.Not.Validate(); err != nil {
6039			invalidParams.AddNested("Not", err.(request.ErrInvalidParams))
6040		}
6041	}
6042	if s.Or != nil {
6043		for i, v := range s.Or {
6044			if v == nil {
6045				continue
6046			}
6047			if err := v.Validate(); err != nil {
6048				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Or", i), err.(request.ErrInvalidParams))
6049			}
6050		}
6051	}
6052
6053	if invalidParams.Len() > 0 {
6054		return invalidParams
6055	}
6056	return nil
6057}
6058
6059// SetAnd sets the And field's value.
6060func (s *Expression) SetAnd(v []*Expression) *Expression {
6061	s.And = v
6062	return s
6063}
6064
6065// SetCostCategories sets the CostCategories field's value.
6066func (s *Expression) SetCostCategories(v *CostCategoryValues) *Expression {
6067	s.CostCategories = v
6068	return s
6069}
6070
6071// SetDimensions sets the Dimensions field's value.
6072func (s *Expression) SetDimensions(v *DimensionValues) *Expression {
6073	s.Dimensions = v
6074	return s
6075}
6076
6077// SetNot sets the Not field's value.
6078func (s *Expression) SetNot(v *Expression) *Expression {
6079	s.Not = v
6080	return s
6081}
6082
6083// SetOr sets the Or field's value.
6084func (s *Expression) SetOr(v []*Expression) *Expression {
6085	s.Or = v
6086	return s
6087}
6088
6089// SetTags sets the Tags field's value.
6090func (s *Expression) SetTags(v *TagValues) *Expression {
6091	s.Tags = v
6092	return s
6093}
6094
6095// The forecast that's created for your query.
6096type ForecastResult struct {
6097	_ struct{} `type:"structure"`
6098
6099	// The mean value of the forecast.
6100	MeanValue *string `type:"string"`
6101
6102	// The lower limit for the prediction interval.
6103	PredictionIntervalLowerBound *string `type:"string"`
6104
6105	// The upper limit for the prediction interval.
6106	PredictionIntervalUpperBound *string `type:"string"`
6107
6108	// The period of time that the forecast covers.
6109	TimePeriod *DateInterval `type:"structure"`
6110}
6111
6112// String returns the string representation.
6113//
6114// API parameter values that are decorated as "sensitive" in the API will not
6115// be included in the string output. The member name will be present, but the
6116// value will be replaced with "sensitive".
6117func (s ForecastResult) String() string {
6118	return awsutil.Prettify(s)
6119}
6120
6121// GoString returns the string representation.
6122//
6123// API parameter values that are decorated as "sensitive" in the API will not
6124// be included in the string output. The member name will be present, but the
6125// value will be replaced with "sensitive".
6126func (s ForecastResult) GoString() string {
6127	return s.String()
6128}
6129
6130// SetMeanValue sets the MeanValue field's value.
6131func (s *ForecastResult) SetMeanValue(v string) *ForecastResult {
6132	s.MeanValue = &v
6133	return s
6134}
6135
6136// SetPredictionIntervalLowerBound sets the PredictionIntervalLowerBound field's value.
6137func (s *ForecastResult) SetPredictionIntervalLowerBound(v string) *ForecastResult {
6138	s.PredictionIntervalLowerBound = &v
6139	return s
6140}
6141
6142// SetPredictionIntervalUpperBound sets the PredictionIntervalUpperBound field's value.
6143func (s *ForecastResult) SetPredictionIntervalUpperBound(v string) *ForecastResult {
6144	s.PredictionIntervalUpperBound = &v
6145	return s
6146}
6147
6148// SetTimePeriod sets the TimePeriod field's value.
6149func (s *ForecastResult) SetTimePeriod(v *DateInterval) *ForecastResult {
6150	s.TimePeriod = v
6151	return s
6152}
6153
6154type GetAnomaliesInput struct {
6155	_ struct{} `type:"structure"`
6156
6157	// Assigns the start and end dates for retrieving cost anomalies. The returned
6158	// anomaly object will have an AnomalyEndDate in the specified time range.
6159	//
6160	// DateInterval is a required field
6161	DateInterval *AnomalyDateInterval `type:"structure" required:"true"`
6162
6163	// Filters anomaly results by the feedback field on the anomaly object.
6164	Feedback *string `type:"string" enum:"AnomalyFeedbackType"`
6165
6166	// The number of entries a paginated response contains.
6167	MaxResults *int64 `type:"integer"`
6168
6169	// Retrieves all of the cost anomalies detected for a specific cost anomaly
6170	// monitor Amazon Resource Name (ARN).
6171	MonitorArn *string `type:"string"`
6172
6173	// The token to retrieve the next set of results. Amazon Web Services provides
6174	// the token when the response from a previous call has more results than the
6175	// maximum page size.
6176	NextPageToken *string `type:"string"`
6177
6178	// Filters anomaly results by the total impact field on the anomaly object.
6179	// For example, you can filter anomalies GREATER_THAN 200.00 to retrieve anomalies,
6180	// with an estimated dollar impact greater than 200.
6181	TotalImpact *TotalImpactFilter `type:"structure"`
6182}
6183
6184// String returns the string representation.
6185//
6186// API parameter values that are decorated as "sensitive" in the API will not
6187// be included in the string output. The member name will be present, but the
6188// value will be replaced with "sensitive".
6189func (s GetAnomaliesInput) String() string {
6190	return awsutil.Prettify(s)
6191}
6192
6193// GoString returns the string representation.
6194//
6195// API parameter values that are decorated as "sensitive" in the API will not
6196// be included in the string output. The member name will be present, but the
6197// value will be replaced with "sensitive".
6198func (s GetAnomaliesInput) GoString() string {
6199	return s.String()
6200}
6201
6202// Validate inspects the fields of the type to determine if they are valid.
6203func (s *GetAnomaliesInput) Validate() error {
6204	invalidParams := request.ErrInvalidParams{Context: "GetAnomaliesInput"}
6205	if s.DateInterval == nil {
6206		invalidParams.Add(request.NewErrParamRequired("DateInterval"))
6207	}
6208	if s.DateInterval != nil {
6209		if err := s.DateInterval.Validate(); err != nil {
6210			invalidParams.AddNested("DateInterval", err.(request.ErrInvalidParams))
6211		}
6212	}
6213	if s.TotalImpact != nil {
6214		if err := s.TotalImpact.Validate(); err != nil {
6215			invalidParams.AddNested("TotalImpact", err.(request.ErrInvalidParams))
6216		}
6217	}
6218
6219	if invalidParams.Len() > 0 {
6220		return invalidParams
6221	}
6222	return nil
6223}
6224
6225// SetDateInterval sets the DateInterval field's value.
6226func (s *GetAnomaliesInput) SetDateInterval(v *AnomalyDateInterval) *GetAnomaliesInput {
6227	s.DateInterval = v
6228	return s
6229}
6230
6231// SetFeedback sets the Feedback field's value.
6232func (s *GetAnomaliesInput) SetFeedback(v string) *GetAnomaliesInput {
6233	s.Feedback = &v
6234	return s
6235}
6236
6237// SetMaxResults sets the MaxResults field's value.
6238func (s *GetAnomaliesInput) SetMaxResults(v int64) *GetAnomaliesInput {
6239	s.MaxResults = &v
6240	return s
6241}
6242
6243// SetMonitorArn sets the MonitorArn field's value.
6244func (s *GetAnomaliesInput) SetMonitorArn(v string) *GetAnomaliesInput {
6245	s.MonitorArn = &v
6246	return s
6247}
6248
6249// SetNextPageToken sets the NextPageToken field's value.
6250func (s *GetAnomaliesInput) SetNextPageToken(v string) *GetAnomaliesInput {
6251	s.NextPageToken = &v
6252	return s
6253}
6254
6255// SetTotalImpact sets the TotalImpact field's value.
6256func (s *GetAnomaliesInput) SetTotalImpact(v *TotalImpactFilter) *GetAnomaliesInput {
6257	s.TotalImpact = v
6258	return s
6259}
6260
6261type GetAnomaliesOutput struct {
6262	_ struct{} `type:"structure"`
6263
6264	// A list of cost anomalies.
6265	//
6266	// Anomalies is a required field
6267	Anomalies []*Anomaly `type:"list" required:"true"`
6268
6269	// The token to retrieve the next set of results. Amazon Web Services provides
6270	// the token when the response from a previous call has more results than the
6271	// maximum page size.
6272	NextPageToken *string `type:"string"`
6273}
6274
6275// String returns the string representation.
6276//
6277// API parameter values that are decorated as "sensitive" in the API will not
6278// be included in the string output. The member name will be present, but the
6279// value will be replaced with "sensitive".
6280func (s GetAnomaliesOutput) String() string {
6281	return awsutil.Prettify(s)
6282}
6283
6284// GoString returns the string representation.
6285//
6286// API parameter values that are decorated as "sensitive" in the API will not
6287// be included in the string output. The member name will be present, but the
6288// value will be replaced with "sensitive".
6289func (s GetAnomaliesOutput) GoString() string {
6290	return s.String()
6291}
6292
6293// SetAnomalies sets the Anomalies field's value.
6294func (s *GetAnomaliesOutput) SetAnomalies(v []*Anomaly) *GetAnomaliesOutput {
6295	s.Anomalies = v
6296	return s
6297}
6298
6299// SetNextPageToken sets the NextPageToken field's value.
6300func (s *GetAnomaliesOutput) SetNextPageToken(v string) *GetAnomaliesOutput {
6301	s.NextPageToken = &v
6302	return s
6303}
6304
6305type GetAnomalyMonitorsInput struct {
6306	_ struct{} `type:"structure"`
6307
6308	// The number of entries that a paginated response contains.
6309	MaxResults *int64 `type:"integer"`
6310
6311	// A list of cost anomaly monitor ARNs.
6312	MonitorArnList []*string `type:"list"`
6313
6314	// The token to retrieve the next set of results. Amazon Web Services provides
6315	// the token when the response from a previous call has more results than the
6316	// maximum page size.
6317	NextPageToken *string `type:"string"`
6318}
6319
6320// String returns the string representation.
6321//
6322// API parameter values that are decorated as "sensitive" in the API will not
6323// be included in the string output. The member name will be present, but the
6324// value will be replaced with "sensitive".
6325func (s GetAnomalyMonitorsInput) String() string {
6326	return awsutil.Prettify(s)
6327}
6328
6329// GoString returns the string representation.
6330//
6331// API parameter values that are decorated as "sensitive" in the API will not
6332// be included in the string output. The member name will be present, but the
6333// value will be replaced with "sensitive".
6334func (s GetAnomalyMonitorsInput) GoString() string {
6335	return s.String()
6336}
6337
6338// SetMaxResults sets the MaxResults field's value.
6339func (s *GetAnomalyMonitorsInput) SetMaxResults(v int64) *GetAnomalyMonitorsInput {
6340	s.MaxResults = &v
6341	return s
6342}
6343
6344// SetMonitorArnList sets the MonitorArnList field's value.
6345func (s *GetAnomalyMonitorsInput) SetMonitorArnList(v []*string) *GetAnomalyMonitorsInput {
6346	s.MonitorArnList = v
6347	return s
6348}
6349
6350// SetNextPageToken sets the NextPageToken field's value.
6351func (s *GetAnomalyMonitorsInput) SetNextPageToken(v string) *GetAnomalyMonitorsInput {
6352	s.NextPageToken = &v
6353	return s
6354}
6355
6356type GetAnomalyMonitorsOutput struct {
6357	_ struct{} `type:"structure"`
6358
6359	// A list of cost anomaly monitors that includes the detailed metadata for each
6360	// monitor.
6361	//
6362	// AnomalyMonitors is a required field
6363	AnomalyMonitors []*AnomalyMonitor `type:"list" required:"true"`
6364
6365	// The token to retrieve the next set of results. Amazon Web Services provides
6366	// the token when the response from a previous call has more results than the
6367	// maximum page size.
6368	NextPageToken *string `type:"string"`
6369}
6370
6371// String returns the string representation.
6372//
6373// API parameter values that are decorated as "sensitive" in the API will not
6374// be included in the string output. The member name will be present, but the
6375// value will be replaced with "sensitive".
6376func (s GetAnomalyMonitorsOutput) String() string {
6377	return awsutil.Prettify(s)
6378}
6379
6380// GoString returns the string representation.
6381//
6382// API parameter values that are decorated as "sensitive" in the API will not
6383// be included in the string output. The member name will be present, but the
6384// value will be replaced with "sensitive".
6385func (s GetAnomalyMonitorsOutput) GoString() string {
6386	return s.String()
6387}
6388
6389// SetAnomalyMonitors sets the AnomalyMonitors field's value.
6390func (s *GetAnomalyMonitorsOutput) SetAnomalyMonitors(v []*AnomalyMonitor) *GetAnomalyMonitorsOutput {
6391	s.AnomalyMonitors = v
6392	return s
6393}
6394
6395// SetNextPageToken sets the NextPageToken field's value.
6396func (s *GetAnomalyMonitorsOutput) SetNextPageToken(v string) *GetAnomalyMonitorsOutput {
6397	s.NextPageToken = &v
6398	return s
6399}
6400
6401type GetAnomalySubscriptionsInput struct {
6402	_ struct{} `type:"structure"`
6403
6404	// The number of entries a paginated response contains.
6405	MaxResults *int64 `type:"integer"`
6406
6407	// Cost anomaly monitor ARNs.
6408	MonitorArn *string `type:"string"`
6409
6410	// The token to retrieve the next set of results. Amazon Web Services provides
6411	// the token when the response from a previous call has more results than the
6412	// maximum page size.
6413	NextPageToken *string `type:"string"`
6414
6415	// A list of cost anomaly subscription ARNs.
6416	SubscriptionArnList []*string `type:"list"`
6417}
6418
6419// String returns the string representation.
6420//
6421// API parameter values that are decorated as "sensitive" in the API will not
6422// be included in the string output. The member name will be present, but the
6423// value will be replaced with "sensitive".
6424func (s GetAnomalySubscriptionsInput) String() string {
6425	return awsutil.Prettify(s)
6426}
6427
6428// GoString returns the string representation.
6429//
6430// API parameter values that are decorated as "sensitive" in the API will not
6431// be included in the string output. The member name will be present, but the
6432// value will be replaced with "sensitive".
6433func (s GetAnomalySubscriptionsInput) GoString() string {
6434	return s.String()
6435}
6436
6437// SetMaxResults sets the MaxResults field's value.
6438func (s *GetAnomalySubscriptionsInput) SetMaxResults(v int64) *GetAnomalySubscriptionsInput {
6439	s.MaxResults = &v
6440	return s
6441}
6442
6443// SetMonitorArn sets the MonitorArn field's value.
6444func (s *GetAnomalySubscriptionsInput) SetMonitorArn(v string) *GetAnomalySubscriptionsInput {
6445	s.MonitorArn = &v
6446	return s
6447}
6448
6449// SetNextPageToken sets the NextPageToken field's value.
6450func (s *GetAnomalySubscriptionsInput) SetNextPageToken(v string) *GetAnomalySubscriptionsInput {
6451	s.NextPageToken = &v
6452	return s
6453}
6454
6455// SetSubscriptionArnList sets the SubscriptionArnList field's value.
6456func (s *GetAnomalySubscriptionsInput) SetSubscriptionArnList(v []*string) *GetAnomalySubscriptionsInput {
6457	s.SubscriptionArnList = v
6458	return s
6459}
6460
6461type GetAnomalySubscriptionsOutput struct {
6462	_ struct{} `type:"structure"`
6463
6464	// A list of cost anomaly subscriptions that includes the detailed metadata
6465	// for each one.
6466	//
6467	// AnomalySubscriptions is a required field
6468	AnomalySubscriptions []*AnomalySubscription `type:"list" required:"true"`
6469
6470	// The token to retrieve the next set of results. Amazon Web Services provides
6471	// the token when the response from a previous call has more results than the
6472	// maximum page size.
6473	NextPageToken *string `type:"string"`
6474}
6475
6476// String returns the string representation.
6477//
6478// API parameter values that are decorated as "sensitive" in the API will not
6479// be included in the string output. The member name will be present, but the
6480// value will be replaced with "sensitive".
6481func (s GetAnomalySubscriptionsOutput) String() string {
6482	return awsutil.Prettify(s)
6483}
6484
6485// GoString returns the string representation.
6486//
6487// API parameter values that are decorated as "sensitive" in the API will not
6488// be included in the string output. The member name will be present, but the
6489// value will be replaced with "sensitive".
6490func (s GetAnomalySubscriptionsOutput) GoString() string {
6491	return s.String()
6492}
6493
6494// SetAnomalySubscriptions sets the AnomalySubscriptions field's value.
6495func (s *GetAnomalySubscriptionsOutput) SetAnomalySubscriptions(v []*AnomalySubscription) *GetAnomalySubscriptionsOutput {
6496	s.AnomalySubscriptions = v
6497	return s
6498}
6499
6500// SetNextPageToken sets the NextPageToken field's value.
6501func (s *GetAnomalySubscriptionsOutput) SetNextPageToken(v string) *GetAnomalySubscriptionsOutput {
6502	s.NextPageToken = &v
6503	return s
6504}
6505
6506type GetCostAndUsageInput struct {
6507	_ struct{} `type:"structure"`
6508
6509	// Filters Amazon Web Services costs by different dimensions. For example, you
6510	// can specify SERVICE and LINKED_ACCOUNT and get the costs that are associated
6511	// with that account's usage of that service. You can nest Expression objects
6512	// to define any combination of dimension filters. For more information, see
6513	// Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html).
6514	Filter *Expression `type:"structure"`
6515
6516	// Sets the Amazon Web Services cost granularity to MONTHLY or DAILY, or HOURLY.
6517	// If Granularity isn't set, the response object doesn't include the Granularity,
6518	// either MONTHLY or DAILY, or HOURLY.
6519	//
6520	// Granularity is a required field
6521	Granularity *string `type:"string" required:"true" enum:"Granularity"`
6522
6523	// You can group Amazon Web Services costs using up to two different groups,
6524	// either dimensions, tag keys, cost categories, or any two group by types.
6525	//
6526	// Valid values for the DIMENSION type are AZ, INSTANCE_TYPE, LEGAL_ENTITY_NAME,
6527	// LINKED_ACCOUNT, OPERATION, PLATFORM, PURCHASE_TYPE, SERVICE, TENANCY, RECORD_TYPE,
6528	// and USAGE_TYPE.
6529	//
6530	// When you group by the TAG type and include a valid tag key, you get all tag
6531	// values, including empty strings.
6532	GroupBy []*GroupDefinition `type:"list"`
6533
6534	// Which metrics are returned in the query. For more information about blended
6535	// and unblended rates, see Why does the "blended" annotation appear on some
6536	// line items in my bill? (http://aws.amazon.com/premiumsupport/knowledge-center/blended-rates-intro/).
6537	//
6538	// Valid values are AmortizedCost, BlendedCost, NetAmortizedCost, NetUnblendedCost,
6539	// NormalizedUsageAmount, UnblendedCost, and UsageQuantity.
6540	//
6541	// If you return the UsageQuantity metric, the service aggregates all usage
6542	// numbers without taking into account the units. For example, if you aggregate
6543	// usageQuantity across all of Amazon EC2, the results aren't meaningful because
6544	// Amazon EC2 compute hours and data transfer are measured in different units
6545	// (for example, hours and GB). To get more meaningful UsageQuantity metrics,
6546	// filter by UsageType or UsageTypeGroups.
6547	//
6548	// Metrics is required for GetCostAndUsage requests.
6549	//
6550	// Metrics is a required field
6551	Metrics []*string `type:"list" required:"true"`
6552
6553	// The token to retrieve the next set of results. Amazon Web Services provides
6554	// the token when the response from a previous call has more results than the
6555	// maximum page size.
6556	NextPageToken *string `type:"string"`
6557
6558	// Sets the start date and end date for retrieving Amazon Web Services costs.
6559	// The start date is inclusive, but the end date is exclusive. For example,
6560	// if start is 2017-01-01 and end is 2017-05-01, then the cost and usage data
6561	// is retrieved from 2017-01-01 up to and including 2017-04-30 but not including
6562	// 2017-05-01.
6563	//
6564	// TimePeriod is a required field
6565	TimePeriod *DateInterval `type:"structure" required:"true"`
6566}
6567
6568// String returns the string representation.
6569//
6570// API parameter values that are decorated as "sensitive" in the API will not
6571// be included in the string output. The member name will be present, but the
6572// value will be replaced with "sensitive".
6573func (s GetCostAndUsageInput) String() string {
6574	return awsutil.Prettify(s)
6575}
6576
6577// GoString returns the string representation.
6578//
6579// API parameter values that are decorated as "sensitive" in the API will not
6580// be included in the string output. The member name will be present, but the
6581// value will be replaced with "sensitive".
6582func (s GetCostAndUsageInput) GoString() string {
6583	return s.String()
6584}
6585
6586// Validate inspects the fields of the type to determine if they are valid.
6587func (s *GetCostAndUsageInput) Validate() error {
6588	invalidParams := request.ErrInvalidParams{Context: "GetCostAndUsageInput"}
6589	if s.Granularity == nil {
6590		invalidParams.Add(request.NewErrParamRequired("Granularity"))
6591	}
6592	if s.Metrics == nil {
6593		invalidParams.Add(request.NewErrParamRequired("Metrics"))
6594	}
6595	if s.TimePeriod == nil {
6596		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
6597	}
6598	if s.Filter != nil {
6599		if err := s.Filter.Validate(); err != nil {
6600			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
6601		}
6602	}
6603	if s.TimePeriod != nil {
6604		if err := s.TimePeriod.Validate(); err != nil {
6605			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
6606		}
6607	}
6608
6609	if invalidParams.Len() > 0 {
6610		return invalidParams
6611	}
6612	return nil
6613}
6614
6615// SetFilter sets the Filter field's value.
6616func (s *GetCostAndUsageInput) SetFilter(v *Expression) *GetCostAndUsageInput {
6617	s.Filter = v
6618	return s
6619}
6620
6621// SetGranularity sets the Granularity field's value.
6622func (s *GetCostAndUsageInput) SetGranularity(v string) *GetCostAndUsageInput {
6623	s.Granularity = &v
6624	return s
6625}
6626
6627// SetGroupBy sets the GroupBy field's value.
6628func (s *GetCostAndUsageInput) SetGroupBy(v []*GroupDefinition) *GetCostAndUsageInput {
6629	s.GroupBy = v
6630	return s
6631}
6632
6633// SetMetrics sets the Metrics field's value.
6634func (s *GetCostAndUsageInput) SetMetrics(v []*string) *GetCostAndUsageInput {
6635	s.Metrics = v
6636	return s
6637}
6638
6639// SetNextPageToken sets the NextPageToken field's value.
6640func (s *GetCostAndUsageInput) SetNextPageToken(v string) *GetCostAndUsageInput {
6641	s.NextPageToken = &v
6642	return s
6643}
6644
6645// SetTimePeriod sets the TimePeriod field's value.
6646func (s *GetCostAndUsageInput) SetTimePeriod(v *DateInterval) *GetCostAndUsageInput {
6647	s.TimePeriod = v
6648	return s
6649}
6650
6651type GetCostAndUsageOutput struct {
6652	_ struct{} `type:"structure"`
6653
6654	// The attributes that apply to a specific dimension value. For example, if
6655	// the value is a linked account, the attribute is that account name.
6656	DimensionValueAttributes []*DimensionValuesWithAttributes `type:"list"`
6657
6658	// The groups that are specified by the Filter or GroupBy parameters in the
6659	// request.
6660	GroupDefinitions []*GroupDefinition `type:"list"`
6661
6662	// The token for the next set of retrievable results. Amazon Web Services provides
6663	// the token when the response from a previous call has more results than the
6664	// maximum page size.
6665	NextPageToken *string `type:"string"`
6666
6667	// The time period that's covered by the results in the response.
6668	ResultsByTime []*ResultByTime `type:"list"`
6669}
6670
6671// String returns the string representation.
6672//
6673// API parameter values that are decorated as "sensitive" in the API will not
6674// be included in the string output. The member name will be present, but the
6675// value will be replaced with "sensitive".
6676func (s GetCostAndUsageOutput) String() string {
6677	return awsutil.Prettify(s)
6678}
6679
6680// GoString returns the string representation.
6681//
6682// API parameter values that are decorated as "sensitive" in the API will not
6683// be included in the string output. The member name will be present, but the
6684// value will be replaced with "sensitive".
6685func (s GetCostAndUsageOutput) GoString() string {
6686	return s.String()
6687}
6688
6689// SetDimensionValueAttributes sets the DimensionValueAttributes field's value.
6690func (s *GetCostAndUsageOutput) SetDimensionValueAttributes(v []*DimensionValuesWithAttributes) *GetCostAndUsageOutput {
6691	s.DimensionValueAttributes = v
6692	return s
6693}
6694
6695// SetGroupDefinitions sets the GroupDefinitions field's value.
6696func (s *GetCostAndUsageOutput) SetGroupDefinitions(v []*GroupDefinition) *GetCostAndUsageOutput {
6697	s.GroupDefinitions = v
6698	return s
6699}
6700
6701// SetNextPageToken sets the NextPageToken field's value.
6702func (s *GetCostAndUsageOutput) SetNextPageToken(v string) *GetCostAndUsageOutput {
6703	s.NextPageToken = &v
6704	return s
6705}
6706
6707// SetResultsByTime sets the ResultsByTime field's value.
6708func (s *GetCostAndUsageOutput) SetResultsByTime(v []*ResultByTime) *GetCostAndUsageOutput {
6709	s.ResultsByTime = v
6710	return s
6711}
6712
6713type GetCostAndUsageWithResourcesInput struct {
6714	_ struct{} `type:"structure"`
6715
6716	// Filters Amazon Web Services costs by different dimensions. For example, you
6717	// can specify SERVICE and LINKED_ACCOUNT and get the costs that are associated
6718	// with that account's usage of that service. You can nest Expression objects
6719	// to define any combination of dimension filters. For more information, see
6720	// Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html).
6721	//
6722	// The GetCostAndUsageWithResources operation requires that you either group
6723	// by or filter by a ResourceId. It requires the Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
6724	// "SERVICE = Amazon Elastic Compute Cloud - Compute" in the filter.
6725	//
6726	// Filter is a required field
6727	Filter *Expression `type:"structure" required:"true"`
6728
6729	// Sets the Amazon Web Services cost granularity to MONTHLY, DAILY, or HOURLY.
6730	// If Granularity isn't set, the response object doesn't include the Granularity,
6731	// MONTHLY, DAILY, or HOURLY.
6732	//
6733	// Granularity is a required field
6734	Granularity *string `type:"string" required:"true" enum:"Granularity"`
6735
6736	// You can group Amazon Web Services costs using up to two different groups:
6737	// DIMENSION, TAG, COST_CATEGORY.
6738	GroupBy []*GroupDefinition `type:"list"`
6739
6740	// Which metrics are returned in the query. For more information about blended
6741	// and unblended rates, see Why does the "blended" annotation appear on some
6742	// line items in my bill? (http://aws.amazon.com/premiumsupport/knowledge-center/blended-rates-intro/).
6743	//
6744	// Valid values are AmortizedCost, BlendedCost, NetAmortizedCost, NetUnblendedCost,
6745	// NormalizedUsageAmount, UnblendedCost, and UsageQuantity.
6746	//
6747	// If you return the UsageQuantity metric, the service aggregates all usage
6748	// numbers without taking the units into account. For example, if you aggregate
6749	// usageQuantity across all of Amazon EC2, the results aren't meaningful because
6750	// Amazon EC2 compute hours and data transfer are measured in different units
6751	// (for example, hours vs. GB). To get more meaningful UsageQuantity metrics,
6752	// filter by UsageType or UsageTypeGroups.
6753	//
6754	// Metrics is required for GetCostAndUsageWithResources requests.
6755	Metrics []*string `type:"list"`
6756
6757	// The token to retrieve the next set of results. Amazon Web Services provides
6758	// the token when the response from a previous call has more results than the
6759	// maximum page size.
6760	NextPageToken *string `type:"string"`
6761
6762	// Sets the start and end dates for retrieving Amazon Web Services costs. The
6763	// range must be within the last 14 days (the start date cannot be earlier than
6764	// 14 days ago). The start date is inclusive, but the end date is exclusive.
6765	// For example, if start is 2017-01-01 and end is 2017-05-01, then the cost
6766	// and usage data is retrieved from 2017-01-01 up to and including 2017-04-30
6767	// but not including 2017-05-01.
6768	//
6769	// TimePeriod is a required field
6770	TimePeriod *DateInterval `type:"structure" required:"true"`
6771}
6772
6773// String returns the string representation.
6774//
6775// API parameter values that are decorated as "sensitive" in the API will not
6776// be included in the string output. The member name will be present, but the
6777// value will be replaced with "sensitive".
6778func (s GetCostAndUsageWithResourcesInput) String() string {
6779	return awsutil.Prettify(s)
6780}
6781
6782// GoString returns the string representation.
6783//
6784// API parameter values that are decorated as "sensitive" in the API will not
6785// be included in the string output. The member name will be present, but the
6786// value will be replaced with "sensitive".
6787func (s GetCostAndUsageWithResourcesInput) GoString() string {
6788	return s.String()
6789}
6790
6791// Validate inspects the fields of the type to determine if they are valid.
6792func (s *GetCostAndUsageWithResourcesInput) Validate() error {
6793	invalidParams := request.ErrInvalidParams{Context: "GetCostAndUsageWithResourcesInput"}
6794	if s.Filter == nil {
6795		invalidParams.Add(request.NewErrParamRequired("Filter"))
6796	}
6797	if s.Granularity == nil {
6798		invalidParams.Add(request.NewErrParamRequired("Granularity"))
6799	}
6800	if s.TimePeriod == nil {
6801		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
6802	}
6803	if s.Filter != nil {
6804		if err := s.Filter.Validate(); err != nil {
6805			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
6806		}
6807	}
6808	if s.TimePeriod != nil {
6809		if err := s.TimePeriod.Validate(); err != nil {
6810			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
6811		}
6812	}
6813
6814	if invalidParams.Len() > 0 {
6815		return invalidParams
6816	}
6817	return nil
6818}
6819
6820// SetFilter sets the Filter field's value.
6821func (s *GetCostAndUsageWithResourcesInput) SetFilter(v *Expression) *GetCostAndUsageWithResourcesInput {
6822	s.Filter = v
6823	return s
6824}
6825
6826// SetGranularity sets the Granularity field's value.
6827func (s *GetCostAndUsageWithResourcesInput) SetGranularity(v string) *GetCostAndUsageWithResourcesInput {
6828	s.Granularity = &v
6829	return s
6830}
6831
6832// SetGroupBy sets the GroupBy field's value.
6833func (s *GetCostAndUsageWithResourcesInput) SetGroupBy(v []*GroupDefinition) *GetCostAndUsageWithResourcesInput {
6834	s.GroupBy = v
6835	return s
6836}
6837
6838// SetMetrics sets the Metrics field's value.
6839func (s *GetCostAndUsageWithResourcesInput) SetMetrics(v []*string) *GetCostAndUsageWithResourcesInput {
6840	s.Metrics = v
6841	return s
6842}
6843
6844// SetNextPageToken sets the NextPageToken field's value.
6845func (s *GetCostAndUsageWithResourcesInput) SetNextPageToken(v string) *GetCostAndUsageWithResourcesInput {
6846	s.NextPageToken = &v
6847	return s
6848}
6849
6850// SetTimePeriod sets the TimePeriod field's value.
6851func (s *GetCostAndUsageWithResourcesInput) SetTimePeriod(v *DateInterval) *GetCostAndUsageWithResourcesInput {
6852	s.TimePeriod = v
6853	return s
6854}
6855
6856type GetCostAndUsageWithResourcesOutput struct {
6857	_ struct{} `type:"structure"`
6858
6859	// The attributes that apply to a specific dimension value. For example, if
6860	// the value is a linked account, the attribute is that account name.
6861	DimensionValueAttributes []*DimensionValuesWithAttributes `type:"list"`
6862
6863	// The groups that are specified by the Filter or GroupBy parameters in the
6864	// request.
6865	GroupDefinitions []*GroupDefinition `type:"list"`
6866
6867	// The token for the next set of retrievable results. Amazon Web Services provides
6868	// the token when the response from a previous call has more results than the
6869	// maximum page size.
6870	NextPageToken *string `type:"string"`
6871
6872	// The time period that is covered by the results in the response.
6873	ResultsByTime []*ResultByTime `type:"list"`
6874}
6875
6876// String returns the string representation.
6877//
6878// API parameter values that are decorated as "sensitive" in the API will not
6879// be included in the string output. The member name will be present, but the
6880// value will be replaced with "sensitive".
6881func (s GetCostAndUsageWithResourcesOutput) String() string {
6882	return awsutil.Prettify(s)
6883}
6884
6885// GoString returns the string representation.
6886//
6887// API parameter values that are decorated as "sensitive" in the API will not
6888// be included in the string output. The member name will be present, but the
6889// value will be replaced with "sensitive".
6890func (s GetCostAndUsageWithResourcesOutput) GoString() string {
6891	return s.String()
6892}
6893
6894// SetDimensionValueAttributes sets the DimensionValueAttributes field's value.
6895func (s *GetCostAndUsageWithResourcesOutput) SetDimensionValueAttributes(v []*DimensionValuesWithAttributes) *GetCostAndUsageWithResourcesOutput {
6896	s.DimensionValueAttributes = v
6897	return s
6898}
6899
6900// SetGroupDefinitions sets the GroupDefinitions field's value.
6901func (s *GetCostAndUsageWithResourcesOutput) SetGroupDefinitions(v []*GroupDefinition) *GetCostAndUsageWithResourcesOutput {
6902	s.GroupDefinitions = v
6903	return s
6904}
6905
6906// SetNextPageToken sets the NextPageToken field's value.
6907func (s *GetCostAndUsageWithResourcesOutput) SetNextPageToken(v string) *GetCostAndUsageWithResourcesOutput {
6908	s.NextPageToken = &v
6909	return s
6910}
6911
6912// SetResultsByTime sets the ResultsByTime field's value.
6913func (s *GetCostAndUsageWithResourcesOutput) SetResultsByTime(v []*ResultByTime) *GetCostAndUsageWithResourcesOutput {
6914	s.ResultsByTime = v
6915	return s
6916}
6917
6918type GetCostCategoriesInput struct {
6919	_ struct{} `type:"structure"`
6920
6921	// The unique name of the Cost Category.
6922	CostCategoryName *string `min:"1" type:"string"`
6923
6924	// Use Expression to filter by cost or by usage. There are two patterns:
6925	//
6926	//    * Simple dimension values - You can set the dimension name and values
6927	//    for the filters that you plan to use. For example, you can filter for
6928	//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
6929	//    the Region is a full name (for example, REGION==US East (N. Virginia).
6930	//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
6931	//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
6932	//    are OR'd together to retrieve cost or usage data. You can create Expression
6933	//    and DimensionValues objects using either with* methods or set* methods
6934	//    in multiple lines.
6935	//
6936	//    * Compound dimension values with logical operations - You can use multiple
6937	//    Expression types and the logical operators AND/OR/NOT to create a list
6938	//    of one or more Expression objects. By doing this, you can filter on more
6939	//    advanced options. For example, you can filter on ((REGION == us-east-1
6940	//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
6941	//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
6942	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
6943	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
6944	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
6945	//    Expression can have only one operator, the service returns an error if
6946	//    more than one is specified. The following example shows an Expression
6947	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
6948	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
6949	//
6950	// For the GetRightsizingRecommendation action, a combination of OR and NOT
6951	// isn't supported. OR isn't supported between different dimensions, or dimensions
6952	// and tags. NOT operators aren't supported. Dimensions are also limited to
6953	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
6954	//
6955	// For the GetReservationPurchaseRecommendation action, only NOT is supported.
6956	// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
6957	Filter *Expression `type:"structure"`
6958
6959	// This field is only used when SortBy is provided in the request.
6960	//
6961	// The maximum number of objects that to be returned for this request. If MaxResults
6962	// is not specified with SortBy, the request will return 1000 results as the
6963	// default value for this parameter.
6964	//
6965	// For GetCostCategories, MaxResults has an upper limit of 1000.
6966	MaxResults *int64 `min:"1" type:"integer"`
6967
6968	// If the number of objects that are still available for retrieval exceeds the
6969	// limit, Amazon Web Services returns a NextPageToken value in the response.
6970	// To retrieve the next batch of objects, provide the NextPageToken from the
6971	// prior call in your next request.
6972	NextPageToken *string `type:"string"`
6973
6974	// The value that you want to search the filter values for.
6975	//
6976	// If you do not specify a CostCategoryName, SearchString will be used to filter
6977	// Cost Category names that match the SearchString pattern. If you do specifiy
6978	// a CostCategoryName, SearchString will be used to filter Cost Category values
6979	// that match the SearchString pattern.
6980	SearchString *string `type:"string"`
6981
6982	// The value by which you want to sort the data.
6983	//
6984	// The key represents cost and usage metrics. The following values are supported:
6985	//
6986	//    * BlendedCost
6987	//
6988	//    * UnblendedCost
6989	//
6990	//    * AmortizedCost
6991	//
6992	//    * NetAmortizedCost
6993	//
6994	//    * NetUnblendedCost
6995	//
6996	//    * UsageQuantity
6997	//
6998	//    * NormalizedUsageAmount
6999	//
7000	// Supported values for SortOrder are ASCENDING or DESCENDING.
7001	//
7002	// When using SortBy, NextPageToken and SearchString are not supported.
7003	SortBy []*SortDefinition `type:"list"`
7004
7005	// The time period of the request.
7006	//
7007	// TimePeriod is a required field
7008	TimePeriod *DateInterval `type:"structure" required:"true"`
7009}
7010
7011// String returns the string representation.
7012//
7013// API parameter values that are decorated as "sensitive" in the API will not
7014// be included in the string output. The member name will be present, but the
7015// value will be replaced with "sensitive".
7016func (s GetCostCategoriesInput) String() string {
7017	return awsutil.Prettify(s)
7018}
7019
7020// GoString returns the string representation.
7021//
7022// API parameter values that are decorated as "sensitive" in the API will not
7023// be included in the string output. The member name will be present, but the
7024// value will be replaced with "sensitive".
7025func (s GetCostCategoriesInput) GoString() string {
7026	return s.String()
7027}
7028
7029// Validate inspects the fields of the type to determine if they are valid.
7030func (s *GetCostCategoriesInput) Validate() error {
7031	invalidParams := request.ErrInvalidParams{Context: "GetCostCategoriesInput"}
7032	if s.CostCategoryName != nil && len(*s.CostCategoryName) < 1 {
7033		invalidParams.Add(request.NewErrParamMinLen("CostCategoryName", 1))
7034	}
7035	if s.MaxResults != nil && *s.MaxResults < 1 {
7036		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
7037	}
7038	if s.TimePeriod == nil {
7039		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
7040	}
7041	if s.Filter != nil {
7042		if err := s.Filter.Validate(); err != nil {
7043			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
7044		}
7045	}
7046	if s.SortBy != nil {
7047		for i, v := range s.SortBy {
7048			if v == nil {
7049				continue
7050			}
7051			if err := v.Validate(); err != nil {
7052				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SortBy", i), err.(request.ErrInvalidParams))
7053			}
7054		}
7055	}
7056	if s.TimePeriod != nil {
7057		if err := s.TimePeriod.Validate(); err != nil {
7058			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
7059		}
7060	}
7061
7062	if invalidParams.Len() > 0 {
7063		return invalidParams
7064	}
7065	return nil
7066}
7067
7068// SetCostCategoryName sets the CostCategoryName field's value.
7069func (s *GetCostCategoriesInput) SetCostCategoryName(v string) *GetCostCategoriesInput {
7070	s.CostCategoryName = &v
7071	return s
7072}
7073
7074// SetFilter sets the Filter field's value.
7075func (s *GetCostCategoriesInput) SetFilter(v *Expression) *GetCostCategoriesInput {
7076	s.Filter = v
7077	return s
7078}
7079
7080// SetMaxResults sets the MaxResults field's value.
7081func (s *GetCostCategoriesInput) SetMaxResults(v int64) *GetCostCategoriesInput {
7082	s.MaxResults = &v
7083	return s
7084}
7085
7086// SetNextPageToken sets the NextPageToken field's value.
7087func (s *GetCostCategoriesInput) SetNextPageToken(v string) *GetCostCategoriesInput {
7088	s.NextPageToken = &v
7089	return s
7090}
7091
7092// SetSearchString sets the SearchString field's value.
7093func (s *GetCostCategoriesInput) SetSearchString(v string) *GetCostCategoriesInput {
7094	s.SearchString = &v
7095	return s
7096}
7097
7098// SetSortBy sets the SortBy field's value.
7099func (s *GetCostCategoriesInput) SetSortBy(v []*SortDefinition) *GetCostCategoriesInput {
7100	s.SortBy = v
7101	return s
7102}
7103
7104// SetTimePeriod sets the TimePeriod field's value.
7105func (s *GetCostCategoriesInput) SetTimePeriod(v *DateInterval) *GetCostCategoriesInput {
7106	s.TimePeriod = v
7107	return s
7108}
7109
7110type GetCostCategoriesOutput struct {
7111	_ struct{} `type:"structure"`
7112
7113	// The names of the Cost Categories.
7114	CostCategoryNames []*string `type:"list"`
7115
7116	// The Cost Category values.
7117	//
7118	// CostCategoryValues are not returned if CostCategoryName is not specified
7119	// in the request.
7120	CostCategoryValues []*string `type:"list"`
7121
7122	// If the number of objects that are still available for retrieval exceeds the
7123	// limit, Amazon Web Services returns a NextPageToken value in the response.
7124	// To retrieve the next batch of objects, provide the marker from the prior
7125	// call in your next request.
7126	NextPageToken *string `type:"string"`
7127
7128	// The number of objects returned.
7129	//
7130	// ReturnSize is a required field
7131	ReturnSize *int64 `type:"integer" required:"true"`
7132
7133	// The total number of objects.
7134	//
7135	// TotalSize is a required field
7136	TotalSize *int64 `type:"integer" required:"true"`
7137}
7138
7139// String returns the string representation.
7140//
7141// API parameter values that are decorated as "sensitive" in the API will not
7142// be included in the string output. The member name will be present, but the
7143// value will be replaced with "sensitive".
7144func (s GetCostCategoriesOutput) String() string {
7145	return awsutil.Prettify(s)
7146}
7147
7148// GoString returns the string representation.
7149//
7150// API parameter values that are decorated as "sensitive" in the API will not
7151// be included in the string output. The member name will be present, but the
7152// value will be replaced with "sensitive".
7153func (s GetCostCategoriesOutput) GoString() string {
7154	return s.String()
7155}
7156
7157// SetCostCategoryNames sets the CostCategoryNames field's value.
7158func (s *GetCostCategoriesOutput) SetCostCategoryNames(v []*string) *GetCostCategoriesOutput {
7159	s.CostCategoryNames = v
7160	return s
7161}
7162
7163// SetCostCategoryValues sets the CostCategoryValues field's value.
7164func (s *GetCostCategoriesOutput) SetCostCategoryValues(v []*string) *GetCostCategoriesOutput {
7165	s.CostCategoryValues = v
7166	return s
7167}
7168
7169// SetNextPageToken sets the NextPageToken field's value.
7170func (s *GetCostCategoriesOutput) SetNextPageToken(v string) *GetCostCategoriesOutput {
7171	s.NextPageToken = &v
7172	return s
7173}
7174
7175// SetReturnSize sets the ReturnSize field's value.
7176func (s *GetCostCategoriesOutput) SetReturnSize(v int64) *GetCostCategoriesOutput {
7177	s.ReturnSize = &v
7178	return s
7179}
7180
7181// SetTotalSize sets the TotalSize field's value.
7182func (s *GetCostCategoriesOutput) SetTotalSize(v int64) *GetCostCategoriesOutput {
7183	s.TotalSize = &v
7184	return s
7185}
7186
7187type GetCostForecastInput struct {
7188	_ struct{} `type:"structure"`
7189
7190	// The filters that you want to use to filter your forecast. The GetCostForecast
7191	// API supports filtering by the following dimensions:
7192	//
7193	//    * AZ
7194	//
7195	//    * INSTANCE_TYPE
7196	//
7197	//    * LINKED_ACCOUNT
7198	//
7199	//    * LINKED_ACCOUNT_NAME
7200	//
7201	//    * OPERATION
7202	//
7203	//    * PURCHASE_TYPE
7204	//
7205	//    * REGION
7206	//
7207	//    * SERVICE
7208	//
7209	//    * USAGE_TYPE
7210	//
7211	//    * USAGE_TYPE_GROUP
7212	//
7213	//    * RECORD_TYPE
7214	//
7215	//    * OPERATING_SYSTEM
7216	//
7217	//    * TENANCY
7218	//
7219	//    * SCOPE
7220	//
7221	//    * PLATFORM
7222	//
7223	//    * SUBSCRIPTION_ID
7224	//
7225	//    * LEGAL_ENTITY_NAME
7226	//
7227	//    * DEPLOYMENT_OPTION
7228	//
7229	//    * DATABASE_ENGINE
7230	//
7231	//    * INSTANCE_TYPE_FAMILY
7232	//
7233	//    * BILLING_ENTITY
7234	//
7235	//    * RESERVATION_ID
7236	//
7237	//    * SAVINGS_PLAN_ARN
7238	Filter *Expression `type:"structure"`
7239
7240	// How granular you want the forecast to be. You can get 3 months of DAILY forecasts
7241	// or 12 months of MONTHLY forecasts.
7242	//
7243	// The GetCostForecast operation supports only DAILY and MONTHLY granularities.
7244	//
7245	// Granularity is a required field
7246	Granularity *string `type:"string" required:"true" enum:"Granularity"`
7247
7248	// Which metric Cost Explorer uses to create your forecast. For more information
7249	// about blended and unblended rates, see Why does the "blended" annotation
7250	// appear on some line items in my bill? (http://aws.amazon.com/premiumsupport/knowledge-center/blended-rates-intro/).
7251	//
7252	// Valid values for a GetCostForecast call are the following:
7253	//
7254	//    * AMORTIZED_COST
7255	//
7256	//    * BLENDED_COST
7257	//
7258	//    * NET_AMORTIZED_COST
7259	//
7260	//    * NET_UNBLENDED_COST
7261	//
7262	//    * UNBLENDED_COST
7263	//
7264	// Metric is a required field
7265	Metric *string `type:"string" required:"true" enum:"Metric"`
7266
7267	// Cost Explorer always returns the mean forecast as a single point. You can
7268	// request a prediction interval around the mean by specifying a confidence
7269	// level. The higher the confidence level, the more confident Cost Explorer
7270	// is about the actual value falling in the prediction interval. Higher confidence
7271	// levels result in wider prediction intervals.
7272	PredictionIntervalLevel *int64 `min:"51" type:"integer"`
7273
7274	// The period of time that you want the forecast to cover. The start date must
7275	// be equal to or no later than the current date to avoid a validation error.
7276	//
7277	// TimePeriod is a required field
7278	TimePeriod *DateInterval `type:"structure" required:"true"`
7279}
7280
7281// String returns the string representation.
7282//
7283// API parameter values that are decorated as "sensitive" in the API will not
7284// be included in the string output. The member name will be present, but the
7285// value will be replaced with "sensitive".
7286func (s GetCostForecastInput) String() string {
7287	return awsutil.Prettify(s)
7288}
7289
7290// GoString returns the string representation.
7291//
7292// API parameter values that are decorated as "sensitive" in the API will not
7293// be included in the string output. The member name will be present, but the
7294// value will be replaced with "sensitive".
7295func (s GetCostForecastInput) GoString() string {
7296	return s.String()
7297}
7298
7299// Validate inspects the fields of the type to determine if they are valid.
7300func (s *GetCostForecastInput) Validate() error {
7301	invalidParams := request.ErrInvalidParams{Context: "GetCostForecastInput"}
7302	if s.Granularity == nil {
7303		invalidParams.Add(request.NewErrParamRequired("Granularity"))
7304	}
7305	if s.Metric == nil {
7306		invalidParams.Add(request.NewErrParamRequired("Metric"))
7307	}
7308	if s.PredictionIntervalLevel != nil && *s.PredictionIntervalLevel < 51 {
7309		invalidParams.Add(request.NewErrParamMinValue("PredictionIntervalLevel", 51))
7310	}
7311	if s.TimePeriod == nil {
7312		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
7313	}
7314	if s.Filter != nil {
7315		if err := s.Filter.Validate(); err != nil {
7316			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
7317		}
7318	}
7319	if s.TimePeriod != nil {
7320		if err := s.TimePeriod.Validate(); err != nil {
7321			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
7322		}
7323	}
7324
7325	if invalidParams.Len() > 0 {
7326		return invalidParams
7327	}
7328	return nil
7329}
7330
7331// SetFilter sets the Filter field's value.
7332func (s *GetCostForecastInput) SetFilter(v *Expression) *GetCostForecastInput {
7333	s.Filter = v
7334	return s
7335}
7336
7337// SetGranularity sets the Granularity field's value.
7338func (s *GetCostForecastInput) SetGranularity(v string) *GetCostForecastInput {
7339	s.Granularity = &v
7340	return s
7341}
7342
7343// SetMetric sets the Metric field's value.
7344func (s *GetCostForecastInput) SetMetric(v string) *GetCostForecastInput {
7345	s.Metric = &v
7346	return s
7347}
7348
7349// SetPredictionIntervalLevel sets the PredictionIntervalLevel field's value.
7350func (s *GetCostForecastInput) SetPredictionIntervalLevel(v int64) *GetCostForecastInput {
7351	s.PredictionIntervalLevel = &v
7352	return s
7353}
7354
7355// SetTimePeriod sets the TimePeriod field's value.
7356func (s *GetCostForecastInput) SetTimePeriod(v *DateInterval) *GetCostForecastInput {
7357	s.TimePeriod = v
7358	return s
7359}
7360
7361type GetCostForecastOutput struct {
7362	_ struct{} `type:"structure"`
7363
7364	// The forecasts for your query, in order. For DAILY forecasts, this is a list
7365	// of days. For MONTHLY forecasts, this is a list of months.
7366	ForecastResultsByTime []*ForecastResult `type:"list"`
7367
7368	// How much you are forecasted to spend over the forecast period, in USD.
7369	Total *MetricValue `type:"structure"`
7370}
7371
7372// String returns the string representation.
7373//
7374// API parameter values that are decorated as "sensitive" in the API will not
7375// be included in the string output. The member name will be present, but the
7376// value will be replaced with "sensitive".
7377func (s GetCostForecastOutput) String() string {
7378	return awsutil.Prettify(s)
7379}
7380
7381// GoString returns the string representation.
7382//
7383// API parameter values that are decorated as "sensitive" in the API will not
7384// be included in the string output. The member name will be present, but the
7385// value will be replaced with "sensitive".
7386func (s GetCostForecastOutput) GoString() string {
7387	return s.String()
7388}
7389
7390// SetForecastResultsByTime sets the ForecastResultsByTime field's value.
7391func (s *GetCostForecastOutput) SetForecastResultsByTime(v []*ForecastResult) *GetCostForecastOutput {
7392	s.ForecastResultsByTime = v
7393	return s
7394}
7395
7396// SetTotal sets the Total field's value.
7397func (s *GetCostForecastOutput) SetTotal(v *MetricValue) *GetCostForecastOutput {
7398	s.Total = v
7399	return s
7400}
7401
7402type GetDimensionValuesInput struct {
7403	_ struct{} `type:"structure"`
7404
7405	// The context for the call to GetDimensionValues. This can be RESERVATIONS
7406	// or COST_AND_USAGE. The default value is COST_AND_USAGE. If the context is
7407	// set to RESERVATIONS, the resulting dimension values can be used in the GetReservationUtilization
7408	// operation. If the context is set to COST_AND_USAGE, the resulting dimension
7409	// values can be used in the GetCostAndUsage operation.
7410	//
7411	// If you set the context to COST_AND_USAGE, you can use the following dimensions
7412	// for searching:
7413	//
7414	//    * AZ - The Availability Zone. An example is us-east-1a.
7415	//
7416	//    * DATABASE_ENGINE - The Amazon Relational Database Service database. Examples
7417	//    are Aurora or MySQL.
7418	//
7419	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
7420	//
7421	//    * LEGAL_ENTITY_NAME - The name of the organization that sells you Amazon
7422	//    Web Services services, such as Amazon Web Services.
7423	//
7424	//    * LINKED_ACCOUNT - The description in the attribute map that includes
7425	//    the full name of the member account. The value field contains the Amazon
7426	//    Web Services ID of the member account.
7427	//
7428	//    * OPERATING_SYSTEM - The operating system. Examples are Windows or Linux.
7429	//
7430	//    * OPERATION - The action performed. Examples include RunInstance and CreateBucket.
7431	//
7432	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
7433	//    Linux.
7434	//
7435	//    * PURCHASE_TYPE - The reservation type of the purchase to which this usage
7436	//    is related. Examples include On-Demand Instances and Standard Reserved
7437	//    Instances.
7438	//
7439	//    * SERVICE - The Amazon Web Services service such as Amazon DynamoDB.
7440	//
7441	//    * USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes.
7442	//    The response for the GetDimensionValues operation includes a unit attribute.
7443	//    Examples include GB and Hrs.
7444	//
7445	//    * USAGE_TYPE_GROUP - The grouping of common usage types. An example is
7446	//    Amazon EC2: CloudWatch – Alarms. The response for this operation includes
7447	//    a unit attribute.
7448	//
7449	//    * REGION - The Amazon Web Services Region.
7450	//
7451	//    * RECORD_TYPE - The different types of charges such as RI fees, usage
7452	//    costs, tax refunds, and credits.
7453	//
7454	//    * RESOURCE_ID - The unique identifier of the resource. ResourceId is an
7455	//    opt-in feature only available for last 14 days for EC2-Compute Service.
7456	//
7457	// If you set the context to RESERVATIONS, you can use the following dimensions
7458	// for searching:
7459	//
7460	//    * AZ - The Availability Zone. An example is us-east-1a.
7461	//
7462	//    * CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are
7463	//    Windows or Linux.
7464	//
7465	//    * DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service
7466	//    deployments. Valid values are SingleAZ and MultiAZ.
7467	//
7468	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
7469	//
7470	//    * LINKED_ACCOUNT - The description in the attribute map that includes
7471	//    the full name of the member account. The value field contains the Amazon
7472	//    Web Services ID of the member account.
7473	//
7474	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
7475	//    Linux.
7476	//
7477	//    * REGION - The Amazon Web Services Region.
7478	//
7479	//    * SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values
7480	//    are regional or a single Availability Zone.
7481	//
7482	//    * TAG (Coverage only) - The tags that are associated with a Reserved Instance
7483	//    (RI).
7484	//
7485	//    * TENANCY - The tenancy of a resource. Examples are shared or dedicated.
7486	//
7487	// If you set the context to SAVINGS_PLANS, you can use the following dimensions
7488	// for searching:
7489	//
7490	//    * SAVINGS_PLANS_TYPE - Type of Savings Plans (EC2 Instance or Compute)
7491	//
7492	//    * PAYMENT_OPTION - Payment option for the given Savings Plans (for example,
7493	//    All Upfront)
7494	//
7495	//    * REGION - The Amazon Web Services Region.
7496	//
7497	//    * INSTANCE_TYPE_FAMILY - The family of instances (For example, m5)
7498	//
7499	//    * LINKED_ACCOUNT - The description in the attribute map that includes
7500	//    the full name of the member account. The value field contains the Amazon
7501	//    Web Services ID of the member account.
7502	//
7503	//    * SAVINGS_PLAN_ARN - The unique identifier for your Savings Plan
7504	Context *string `type:"string" enum:"Context"`
7505
7506	// The name of the dimension. Each Dimension is available for a different Context.
7507	// For more information, see Context.
7508	//
7509	// Dimension is a required field
7510	Dimension *string `type:"string" required:"true" enum:"Dimension"`
7511
7512	// Use Expression to filter by cost or by usage. There are two patterns:
7513	//
7514	//    * Simple dimension values - You can set the dimension name and values
7515	//    for the filters that you plan to use. For example, you can filter for
7516	//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
7517	//    the Region is a full name (for example, REGION==US East (N. Virginia).
7518	//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
7519	//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
7520	//    are OR'd together to retrieve cost or usage data. You can create Expression
7521	//    and DimensionValues objects using either with* methods or set* methods
7522	//    in multiple lines.
7523	//
7524	//    * Compound dimension values with logical operations - You can use multiple
7525	//    Expression types and the logical operators AND/OR/NOT to create a list
7526	//    of one or more Expression objects. By doing this, you can filter on more
7527	//    advanced options. For example, you can filter on ((REGION == us-east-1
7528	//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
7529	//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
7530	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
7531	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
7532	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
7533	//    Expression can have only one operator, the service returns an error if
7534	//    more than one is specified. The following example shows an Expression
7535	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
7536	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
7537	//
7538	// For the GetRightsizingRecommendation action, a combination of OR and NOT
7539	// isn't supported. OR isn't supported between different dimensions, or dimensions
7540	// and tags. NOT operators aren't supported. Dimensions are also limited to
7541	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
7542	//
7543	// For the GetReservationPurchaseRecommendation action, only NOT is supported.
7544	// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
7545	Filter *Expression `type:"structure"`
7546
7547	// This field is only used when SortBy is provided in the request. The maximum
7548	// number of objects that to be returned for this request. If MaxResults is
7549	// not specified with SortBy, the request will return 1000 results as the default
7550	// value for this parameter.
7551	//
7552	// For GetDimensionValues, MaxResults has an upper limit of 1000.
7553	MaxResults *int64 `min:"1" type:"integer"`
7554
7555	// The token to retrieve the next set of results. Amazon Web Services provides
7556	// the token when the response from a previous call has more results than the
7557	// maximum page size.
7558	NextPageToken *string `type:"string"`
7559
7560	// The value that you want to search the filter values for.
7561	SearchString *string `type:"string"`
7562
7563	// The value by which you want to sort the data.
7564	//
7565	// The key represents cost and usage metrics. The following values are supported:
7566	//
7567	//    * BlendedCost
7568	//
7569	//    * UnblendedCost
7570	//
7571	//    * AmortizedCost
7572	//
7573	//    * NetAmortizedCost
7574	//
7575	//    * NetUnblendedCost
7576	//
7577	//    * UsageQuantity
7578	//
7579	//    * NormalizedUsageAmount
7580	//
7581	// Supported values for SortOrder are ASCENDING or DESCENDING.
7582	//
7583	// When you specify a SortBy paramater, the context must be COST_AND_USAGE.
7584	// Further, when using SortBy, NextPageToken and SearchString are not supported.
7585	SortBy []*SortDefinition `type:"list"`
7586
7587	// The start date and end date for retrieving the dimension values. The start
7588	// date is inclusive, but the end date is exclusive. For example, if start is
7589	// 2017-01-01 and end is 2017-05-01, then the cost and usage data is retrieved
7590	// from 2017-01-01 up to and including 2017-04-30 but not including 2017-05-01.
7591	//
7592	// TimePeriod is a required field
7593	TimePeriod *DateInterval `type:"structure" required:"true"`
7594}
7595
7596// String returns the string representation.
7597//
7598// API parameter values that are decorated as "sensitive" in the API will not
7599// be included in the string output. The member name will be present, but the
7600// value will be replaced with "sensitive".
7601func (s GetDimensionValuesInput) String() string {
7602	return awsutil.Prettify(s)
7603}
7604
7605// GoString returns the string representation.
7606//
7607// API parameter values that are decorated as "sensitive" in the API will not
7608// be included in the string output. The member name will be present, but the
7609// value will be replaced with "sensitive".
7610func (s GetDimensionValuesInput) GoString() string {
7611	return s.String()
7612}
7613
7614// Validate inspects the fields of the type to determine if they are valid.
7615func (s *GetDimensionValuesInput) Validate() error {
7616	invalidParams := request.ErrInvalidParams{Context: "GetDimensionValuesInput"}
7617	if s.Dimension == nil {
7618		invalidParams.Add(request.NewErrParamRequired("Dimension"))
7619	}
7620	if s.MaxResults != nil && *s.MaxResults < 1 {
7621		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
7622	}
7623	if s.TimePeriod == nil {
7624		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
7625	}
7626	if s.Filter != nil {
7627		if err := s.Filter.Validate(); err != nil {
7628			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
7629		}
7630	}
7631	if s.SortBy != nil {
7632		for i, v := range s.SortBy {
7633			if v == nil {
7634				continue
7635			}
7636			if err := v.Validate(); err != nil {
7637				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SortBy", i), err.(request.ErrInvalidParams))
7638			}
7639		}
7640	}
7641	if s.TimePeriod != nil {
7642		if err := s.TimePeriod.Validate(); err != nil {
7643			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
7644		}
7645	}
7646
7647	if invalidParams.Len() > 0 {
7648		return invalidParams
7649	}
7650	return nil
7651}
7652
7653// SetContext sets the Context field's value.
7654func (s *GetDimensionValuesInput) SetContext(v string) *GetDimensionValuesInput {
7655	s.Context = &v
7656	return s
7657}
7658
7659// SetDimension sets the Dimension field's value.
7660func (s *GetDimensionValuesInput) SetDimension(v string) *GetDimensionValuesInput {
7661	s.Dimension = &v
7662	return s
7663}
7664
7665// SetFilter sets the Filter field's value.
7666func (s *GetDimensionValuesInput) SetFilter(v *Expression) *GetDimensionValuesInput {
7667	s.Filter = v
7668	return s
7669}
7670
7671// SetMaxResults sets the MaxResults field's value.
7672func (s *GetDimensionValuesInput) SetMaxResults(v int64) *GetDimensionValuesInput {
7673	s.MaxResults = &v
7674	return s
7675}
7676
7677// SetNextPageToken sets the NextPageToken field's value.
7678func (s *GetDimensionValuesInput) SetNextPageToken(v string) *GetDimensionValuesInput {
7679	s.NextPageToken = &v
7680	return s
7681}
7682
7683// SetSearchString sets the SearchString field's value.
7684func (s *GetDimensionValuesInput) SetSearchString(v string) *GetDimensionValuesInput {
7685	s.SearchString = &v
7686	return s
7687}
7688
7689// SetSortBy sets the SortBy field's value.
7690func (s *GetDimensionValuesInput) SetSortBy(v []*SortDefinition) *GetDimensionValuesInput {
7691	s.SortBy = v
7692	return s
7693}
7694
7695// SetTimePeriod sets the TimePeriod field's value.
7696func (s *GetDimensionValuesInput) SetTimePeriod(v *DateInterval) *GetDimensionValuesInput {
7697	s.TimePeriod = v
7698	return s
7699}
7700
7701type GetDimensionValuesOutput struct {
7702	_ struct{} `type:"structure"`
7703
7704	// The filters that you used to filter your request. Some dimensions are available
7705	// only for a specific context.
7706	//
7707	// If you set the context to COST_AND_USAGE, you can use the following dimensions
7708	// for searching:
7709	//
7710	//    * AZ - The Availability Zone. An example is us-east-1a.
7711	//
7712	//    * DATABASE_ENGINE - The Amazon Relational Database Service database. Examples
7713	//    are Aurora or MySQL.
7714	//
7715	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
7716	//
7717	//    * LEGAL_ENTITY_NAME - The name of the organization that sells you Amazon
7718	//    Web Services services, such as Amazon Web Services.
7719	//
7720	//    * LINKED_ACCOUNT - The description in the attribute map that includes
7721	//    the full name of the member account. The value field contains the Amazon
7722	//    Web Services ID of the member account.
7723	//
7724	//    * OPERATING_SYSTEM - The operating system. Examples are Windows or Linux.
7725	//
7726	//    * OPERATION - The action performed. Examples include RunInstance and CreateBucket.
7727	//
7728	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
7729	//    Linux.
7730	//
7731	//    * PURCHASE_TYPE - The reservation type of the purchase to which this usage
7732	//    is related. Examples include On-Demand Instances and Standard Reserved
7733	//    Instances.
7734	//
7735	//    * SERVICE - The Amazon Web Services service such as Amazon DynamoDB.
7736	//
7737	//    * USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes.
7738	//    The response for the GetDimensionValues operation includes a unit attribute.
7739	//    Examples include GB and Hrs.
7740	//
7741	//    * USAGE_TYPE_GROUP - The grouping of common usage types. An example is
7742	//    Amazon EC2: CloudWatch – Alarms. The response for this operation includes
7743	//    a unit attribute.
7744	//
7745	//    * RECORD_TYPE - The different types of charges such as RI fees, usage
7746	//    costs, tax refunds, and credits.
7747	//
7748	//    * RESOURCE_ID - The unique identifier of the resource. ResourceId is an
7749	//    opt-in feature only available for last 14 days for EC2-Compute Service.
7750	//
7751	// If you set the context to RESERVATIONS, you can use the following dimensions
7752	// for searching:
7753	//
7754	//    * AZ - The Availability Zone. An example is us-east-1a.
7755	//
7756	//    * CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are
7757	//    Windows or Linux.
7758	//
7759	//    * DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service
7760	//    deployments. Valid values are SingleAZ and MultiAZ.
7761	//
7762	//    * INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
7763	//
7764	//    * LINKED_ACCOUNT - The description in the attribute map that includes
7765	//    the full name of the member account. The value field contains the Amazon
7766	//    Web Services ID of the member account.
7767	//
7768	//    * PLATFORM - The Amazon EC2 operating system. Examples are Windows or
7769	//    Linux.
7770	//
7771	//    * REGION - The Amazon Web Services Region.
7772	//
7773	//    * SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values
7774	//    are regional or a single Availability Zone.
7775	//
7776	//    * TAG (Coverage only) - The tags that are associated with a Reserved Instance
7777	//    (RI).
7778	//
7779	//    * TENANCY - The tenancy of a resource. Examples are shared or dedicated.
7780	//
7781	// If you set the context to SAVINGS_PLANS, you can use the following dimensions
7782	// for searching:
7783	//
7784	//    * SAVINGS_PLANS_TYPE - Type of Savings Plans (EC2 Instance or Compute)
7785	//
7786	//    * PAYMENT_OPTION - Payment option for the given Savings Plans (for example,
7787	//    All Upfront)
7788	//
7789	//    * REGION - The Amazon Web Services Region.
7790	//
7791	//    * INSTANCE_TYPE_FAMILY - The family of instances (For example, m5)
7792	//
7793	//    * LINKED_ACCOUNT - The description in the attribute map that includes
7794	//    the full name of the member account. The value field contains the Amazon
7795	//    Web Services ID of the member account.
7796	//
7797	//    * SAVINGS_PLAN_ARN - The unique identifier for your Savings Plan
7798	//
7799	// DimensionValues is a required field
7800	DimensionValues []*DimensionValuesWithAttributes `type:"list" required:"true"`
7801
7802	// The token for the next set of retrievable results. Amazon Web Services provides
7803	// the token when the response from a previous call has more results than the
7804	// maximum page size.
7805	NextPageToken *string `type:"string"`
7806
7807	// The number of results that Amazon Web Services returned at one time.
7808	//
7809	// ReturnSize is a required field
7810	ReturnSize *int64 `type:"integer" required:"true"`
7811
7812	// The total number of search results.
7813	//
7814	// TotalSize is a required field
7815	TotalSize *int64 `type:"integer" required:"true"`
7816}
7817
7818// String returns the string representation.
7819//
7820// API parameter values that are decorated as "sensitive" in the API will not
7821// be included in the string output. The member name will be present, but the
7822// value will be replaced with "sensitive".
7823func (s GetDimensionValuesOutput) String() string {
7824	return awsutil.Prettify(s)
7825}
7826
7827// GoString returns the string representation.
7828//
7829// API parameter values that are decorated as "sensitive" in the API will not
7830// be included in the string output. The member name will be present, but the
7831// value will be replaced with "sensitive".
7832func (s GetDimensionValuesOutput) GoString() string {
7833	return s.String()
7834}
7835
7836// SetDimensionValues sets the DimensionValues field's value.
7837func (s *GetDimensionValuesOutput) SetDimensionValues(v []*DimensionValuesWithAttributes) *GetDimensionValuesOutput {
7838	s.DimensionValues = v
7839	return s
7840}
7841
7842// SetNextPageToken sets the NextPageToken field's value.
7843func (s *GetDimensionValuesOutput) SetNextPageToken(v string) *GetDimensionValuesOutput {
7844	s.NextPageToken = &v
7845	return s
7846}
7847
7848// SetReturnSize sets the ReturnSize field's value.
7849func (s *GetDimensionValuesOutput) SetReturnSize(v int64) *GetDimensionValuesOutput {
7850	s.ReturnSize = &v
7851	return s
7852}
7853
7854// SetTotalSize sets the TotalSize field's value.
7855func (s *GetDimensionValuesOutput) SetTotalSize(v int64) *GetDimensionValuesOutput {
7856	s.TotalSize = &v
7857	return s
7858}
7859
7860// You can use the following request parameters to query for how much of your
7861// instance usage a reservation covered.
7862type GetReservationCoverageInput struct {
7863	_ struct{} `type:"structure"`
7864
7865	// Filters utilization data by dimensions. You can filter by the following dimensions:
7866	//
7867	//    * AZ
7868	//
7869	//    * CACHE_ENGINE
7870	//
7871	//    * DATABASE_ENGINE
7872	//
7873	//    * DEPLOYMENT_OPTION
7874	//
7875	//    * INSTANCE_TYPE
7876	//
7877	//    * LINKED_ACCOUNT
7878	//
7879	//    * OPERATING_SYSTEM
7880	//
7881	//    * PLATFORM
7882	//
7883	//    * REGION
7884	//
7885	//    * SERVICE
7886	//
7887	//    * TAG
7888	//
7889	//    * TENANCY
7890	//
7891	// GetReservationCoverage uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
7892	// object as the other operations, but only AND is supported among each dimension.
7893	// You can nest only one level deep. If there are multiple values for a dimension,
7894	// they are OR'd together.
7895	//
7896	// If you don't provide a SERVICE filter, Cost Explorer defaults to EC2.
7897	//
7898	// Cost category is also supported.
7899	Filter *Expression `type:"structure"`
7900
7901	// The granularity of the Amazon Web Services cost data for the reservation.
7902	// Valid values are MONTHLY and DAILY.
7903	//
7904	// If GroupBy is set, Granularity can't be set. If Granularity isn't set, the
7905	// response object doesn't include Granularity, either MONTHLY or DAILY.
7906	//
7907	// The GetReservationCoverage operation supports only DAILY and MONTHLY granularities.
7908	Granularity *string `type:"string" enum:"Granularity"`
7909
7910	// You can group the data by the following attributes:
7911	//
7912	//    * AZ
7913	//
7914	//    * CACHE_ENGINE
7915	//
7916	//    * DATABASE_ENGINE
7917	//
7918	//    * DEPLOYMENT_OPTION
7919	//
7920	//    * INSTANCE_TYPE
7921	//
7922	//    * LINKED_ACCOUNT
7923	//
7924	//    * OPERATING_SYSTEM
7925	//
7926	//    * PLATFORM
7927	//
7928	//    * REGION
7929	//
7930	//    * TENANCY
7931	GroupBy []*GroupDefinition `type:"list"`
7932
7933	// The maximum number of objects that you returned for this request. If more
7934	// objects are available, in the response, Amazon Web Services provides a NextPageToken
7935	// value that you can use in a subsequent call to get the next batch of objects.
7936	MaxResults *int64 `min:"1" type:"integer"`
7937
7938	// The measurement that you want your reservation coverage reported in.
7939	//
7940	// Valid values are Hour, Unit, and Cost. You can use multiple values in a request.
7941	Metrics []*string `type:"list"`
7942
7943	// The token to retrieve the next set of results. Amazon Web Services provides
7944	// the token when the response from a previous call has more results than the
7945	// maximum page size.
7946	NextPageToken *string `type:"string"`
7947
7948	// The value by which you want to sort the data.
7949	//
7950	// The following values are supported for Key:
7951	//
7952	//    * OnDemandCost
7953	//
7954	//    * CoverageHoursPercentage
7955	//
7956	//    * OnDemandHours
7957	//
7958	//    * ReservedHours
7959	//
7960	//    * TotalRunningHours
7961	//
7962	//    * CoverageNormalizedUnitsPercentage
7963	//
7964	//    * OnDemandNormalizedUnits
7965	//
7966	//    * ReservedNormalizedUnits
7967	//
7968	//    * TotalRunningNormalizedUnits
7969	//
7970	//    * Time
7971	//
7972	// Supported values for SortOrder are ASCENDING or DESCENDING.
7973	SortBy *SortDefinition `type:"structure"`
7974
7975	// The start and end dates of the period that you want to retrieve data about
7976	// reservation coverage for. You can retrieve data for a maximum of 13 months:
7977	// the last 12 months and the current month. The start date is inclusive, but
7978	// the end date is exclusive. For example, if start is 2017-01-01 and end is
7979	// 2017-05-01, then the cost and usage data is retrieved from 2017-01-01 up
7980	// to and including 2017-04-30 but not including 2017-05-01.
7981	//
7982	// TimePeriod is a required field
7983	TimePeriod *DateInterval `type:"structure" required:"true"`
7984}
7985
7986// String returns the string representation.
7987//
7988// API parameter values that are decorated as "sensitive" in the API will not
7989// be included in the string output. The member name will be present, but the
7990// value will be replaced with "sensitive".
7991func (s GetReservationCoverageInput) String() string {
7992	return awsutil.Prettify(s)
7993}
7994
7995// GoString returns the string representation.
7996//
7997// API parameter values that are decorated as "sensitive" in the API will not
7998// be included in the string output. The member name will be present, but the
7999// value will be replaced with "sensitive".
8000func (s GetReservationCoverageInput) GoString() string {
8001	return s.String()
8002}
8003
8004// Validate inspects the fields of the type to determine if they are valid.
8005func (s *GetReservationCoverageInput) Validate() error {
8006	invalidParams := request.ErrInvalidParams{Context: "GetReservationCoverageInput"}
8007	if s.MaxResults != nil && *s.MaxResults < 1 {
8008		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
8009	}
8010	if s.TimePeriod == nil {
8011		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
8012	}
8013	if s.Filter != nil {
8014		if err := s.Filter.Validate(); err != nil {
8015			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
8016		}
8017	}
8018	if s.SortBy != nil {
8019		if err := s.SortBy.Validate(); err != nil {
8020			invalidParams.AddNested("SortBy", err.(request.ErrInvalidParams))
8021		}
8022	}
8023	if s.TimePeriod != nil {
8024		if err := s.TimePeriod.Validate(); err != nil {
8025			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
8026		}
8027	}
8028
8029	if invalidParams.Len() > 0 {
8030		return invalidParams
8031	}
8032	return nil
8033}
8034
8035// SetFilter sets the Filter field's value.
8036func (s *GetReservationCoverageInput) SetFilter(v *Expression) *GetReservationCoverageInput {
8037	s.Filter = v
8038	return s
8039}
8040
8041// SetGranularity sets the Granularity field's value.
8042func (s *GetReservationCoverageInput) SetGranularity(v string) *GetReservationCoverageInput {
8043	s.Granularity = &v
8044	return s
8045}
8046
8047// SetGroupBy sets the GroupBy field's value.
8048func (s *GetReservationCoverageInput) SetGroupBy(v []*GroupDefinition) *GetReservationCoverageInput {
8049	s.GroupBy = v
8050	return s
8051}
8052
8053// SetMaxResults sets the MaxResults field's value.
8054func (s *GetReservationCoverageInput) SetMaxResults(v int64) *GetReservationCoverageInput {
8055	s.MaxResults = &v
8056	return s
8057}
8058
8059// SetMetrics sets the Metrics field's value.
8060func (s *GetReservationCoverageInput) SetMetrics(v []*string) *GetReservationCoverageInput {
8061	s.Metrics = v
8062	return s
8063}
8064
8065// SetNextPageToken sets the NextPageToken field's value.
8066func (s *GetReservationCoverageInput) SetNextPageToken(v string) *GetReservationCoverageInput {
8067	s.NextPageToken = &v
8068	return s
8069}
8070
8071// SetSortBy sets the SortBy field's value.
8072func (s *GetReservationCoverageInput) SetSortBy(v *SortDefinition) *GetReservationCoverageInput {
8073	s.SortBy = v
8074	return s
8075}
8076
8077// SetTimePeriod sets the TimePeriod field's value.
8078func (s *GetReservationCoverageInput) SetTimePeriod(v *DateInterval) *GetReservationCoverageInput {
8079	s.TimePeriod = v
8080	return s
8081}
8082
8083type GetReservationCoverageOutput struct {
8084	_ struct{} `type:"structure"`
8085
8086	// The amount of time that your reservations covered.
8087	//
8088	// CoveragesByTime is a required field
8089	CoveragesByTime []*CoverageByTime `type:"list" required:"true"`
8090
8091	// The token for the next set of retrievable results. Amazon Web Services provides
8092	// the token when the response from a previous call has more results than the
8093	// maximum page size.
8094	NextPageToken *string `type:"string"`
8095
8096	// The total amount of instance usage that a reservation covered.
8097	Total *Coverage `type:"structure"`
8098}
8099
8100// String returns the string representation.
8101//
8102// API parameter values that are decorated as "sensitive" in the API will not
8103// be included in the string output. The member name will be present, but the
8104// value will be replaced with "sensitive".
8105func (s GetReservationCoverageOutput) String() string {
8106	return awsutil.Prettify(s)
8107}
8108
8109// GoString returns the string representation.
8110//
8111// API parameter values that are decorated as "sensitive" in the API will not
8112// be included in the string output. The member name will be present, but the
8113// value will be replaced with "sensitive".
8114func (s GetReservationCoverageOutput) GoString() string {
8115	return s.String()
8116}
8117
8118// SetCoveragesByTime sets the CoveragesByTime field's value.
8119func (s *GetReservationCoverageOutput) SetCoveragesByTime(v []*CoverageByTime) *GetReservationCoverageOutput {
8120	s.CoveragesByTime = v
8121	return s
8122}
8123
8124// SetNextPageToken sets the NextPageToken field's value.
8125func (s *GetReservationCoverageOutput) SetNextPageToken(v string) *GetReservationCoverageOutput {
8126	s.NextPageToken = &v
8127	return s
8128}
8129
8130// SetTotal sets the Total field's value.
8131func (s *GetReservationCoverageOutput) SetTotal(v *Coverage) *GetReservationCoverageOutput {
8132	s.Total = v
8133	return s
8134}
8135
8136type GetReservationPurchaseRecommendationInput struct {
8137	_ struct{} `type:"structure"`
8138
8139	// The account ID that is associated with the recommendation.
8140	AccountId *string `type:"string"`
8141
8142	// The account scope that you want your recommendations for. Amazon Web Services
8143	// calculates recommendations including the management account and member accounts
8144	// if the value is set to PAYER. If the value is LINKED, recommendations are
8145	// calculated for individual member accounts only.
8146	AccountScope *string `type:"string" enum:"AccountScope"`
8147
8148	// Use Expression to filter by cost or by usage. There are two patterns:
8149	//
8150	//    * Simple dimension values - You can set the dimension name and values
8151	//    for the filters that you plan to use. For example, you can filter for
8152	//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
8153	//    the Region is a full name (for example, REGION==US East (N. Virginia).
8154	//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
8155	//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
8156	//    are OR'd together to retrieve cost or usage data. You can create Expression
8157	//    and DimensionValues objects using either with* methods or set* methods
8158	//    in multiple lines.
8159	//
8160	//    * Compound dimension values with logical operations - You can use multiple
8161	//    Expression types and the logical operators AND/OR/NOT to create a list
8162	//    of one or more Expression objects. By doing this, you can filter on more
8163	//    advanced options. For example, you can filter on ((REGION == us-east-1
8164	//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
8165	//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
8166	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
8167	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
8168	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
8169	//    Expression can have only one operator, the service returns an error if
8170	//    more than one is specified. The following example shows an Expression
8171	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
8172	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
8173	//
8174	// For the GetRightsizingRecommendation action, a combination of OR and NOT
8175	// isn't supported. OR isn't supported between different dimensions, or dimensions
8176	// and tags. NOT operators aren't supported. Dimensions are also limited to
8177	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
8178	//
8179	// For the GetReservationPurchaseRecommendation action, only NOT is supported.
8180	// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
8181	Filter *Expression `type:"structure"`
8182
8183	// The number of previous days that you want Amazon Web Services to consider
8184	// when it calculates your recommendations.
8185	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
8186
8187	// The pagination token that indicates the next set of results that you want
8188	// to retrieve.
8189	NextPageToken *string `type:"string"`
8190
8191	// The number of recommendations that you want returned in a single response
8192	// object.
8193	PageSize *int64 `type:"integer"`
8194
8195	// The reservation purchase option that you want recommendations for.
8196	PaymentOption *string `type:"string" enum:"PaymentOption"`
8197
8198	// The specific service that you want recommendations for.
8199	//
8200	// Service is a required field
8201	Service *string `type:"string" required:"true"`
8202
8203	// The hardware specifications for the service instances that you want recommendations
8204	// for, such as standard or convertible Amazon EC2 instances.
8205	ServiceSpecification *ServiceSpecification `type:"structure"`
8206
8207	// The reservation term that you want recommendations for.
8208	TermInYears *string `type:"string" enum:"TermInYears"`
8209}
8210
8211// String returns the string representation.
8212//
8213// API parameter values that are decorated as "sensitive" in the API will not
8214// be included in the string output. The member name will be present, but the
8215// value will be replaced with "sensitive".
8216func (s GetReservationPurchaseRecommendationInput) String() string {
8217	return awsutil.Prettify(s)
8218}
8219
8220// GoString returns the string representation.
8221//
8222// API parameter values that are decorated as "sensitive" in the API will not
8223// be included in the string output. The member name will be present, but the
8224// value will be replaced with "sensitive".
8225func (s GetReservationPurchaseRecommendationInput) GoString() string {
8226	return s.String()
8227}
8228
8229// Validate inspects the fields of the type to determine if they are valid.
8230func (s *GetReservationPurchaseRecommendationInput) Validate() error {
8231	invalidParams := request.ErrInvalidParams{Context: "GetReservationPurchaseRecommendationInput"}
8232	if s.Service == nil {
8233		invalidParams.Add(request.NewErrParamRequired("Service"))
8234	}
8235	if s.Filter != nil {
8236		if err := s.Filter.Validate(); err != nil {
8237			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
8238		}
8239	}
8240
8241	if invalidParams.Len() > 0 {
8242		return invalidParams
8243	}
8244	return nil
8245}
8246
8247// SetAccountId sets the AccountId field's value.
8248func (s *GetReservationPurchaseRecommendationInput) SetAccountId(v string) *GetReservationPurchaseRecommendationInput {
8249	s.AccountId = &v
8250	return s
8251}
8252
8253// SetAccountScope sets the AccountScope field's value.
8254func (s *GetReservationPurchaseRecommendationInput) SetAccountScope(v string) *GetReservationPurchaseRecommendationInput {
8255	s.AccountScope = &v
8256	return s
8257}
8258
8259// SetFilter sets the Filter field's value.
8260func (s *GetReservationPurchaseRecommendationInput) SetFilter(v *Expression) *GetReservationPurchaseRecommendationInput {
8261	s.Filter = v
8262	return s
8263}
8264
8265// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
8266func (s *GetReservationPurchaseRecommendationInput) SetLookbackPeriodInDays(v string) *GetReservationPurchaseRecommendationInput {
8267	s.LookbackPeriodInDays = &v
8268	return s
8269}
8270
8271// SetNextPageToken sets the NextPageToken field's value.
8272func (s *GetReservationPurchaseRecommendationInput) SetNextPageToken(v string) *GetReservationPurchaseRecommendationInput {
8273	s.NextPageToken = &v
8274	return s
8275}
8276
8277// SetPageSize sets the PageSize field's value.
8278func (s *GetReservationPurchaseRecommendationInput) SetPageSize(v int64) *GetReservationPurchaseRecommendationInput {
8279	s.PageSize = &v
8280	return s
8281}
8282
8283// SetPaymentOption sets the PaymentOption field's value.
8284func (s *GetReservationPurchaseRecommendationInput) SetPaymentOption(v string) *GetReservationPurchaseRecommendationInput {
8285	s.PaymentOption = &v
8286	return s
8287}
8288
8289// SetService sets the Service field's value.
8290func (s *GetReservationPurchaseRecommendationInput) SetService(v string) *GetReservationPurchaseRecommendationInput {
8291	s.Service = &v
8292	return s
8293}
8294
8295// SetServiceSpecification sets the ServiceSpecification field's value.
8296func (s *GetReservationPurchaseRecommendationInput) SetServiceSpecification(v *ServiceSpecification) *GetReservationPurchaseRecommendationInput {
8297	s.ServiceSpecification = v
8298	return s
8299}
8300
8301// SetTermInYears sets the TermInYears field's value.
8302func (s *GetReservationPurchaseRecommendationInput) SetTermInYears(v string) *GetReservationPurchaseRecommendationInput {
8303	s.TermInYears = &v
8304	return s
8305}
8306
8307type GetReservationPurchaseRecommendationOutput struct {
8308	_ struct{} `type:"structure"`
8309
8310	// Information about this specific recommendation call, such as the time stamp
8311	// for when Cost Explorer generated this recommendation.
8312	Metadata *ReservationPurchaseRecommendationMetadata `type:"structure"`
8313
8314	// The pagination token for the next set of retrievable results.
8315	NextPageToken *string `type:"string"`
8316
8317	// Recommendations for reservations to purchase.
8318	Recommendations []*ReservationPurchaseRecommendation `type:"list"`
8319}
8320
8321// String returns the string representation.
8322//
8323// API parameter values that are decorated as "sensitive" in the API will not
8324// be included in the string output. The member name will be present, but the
8325// value will be replaced with "sensitive".
8326func (s GetReservationPurchaseRecommendationOutput) String() string {
8327	return awsutil.Prettify(s)
8328}
8329
8330// GoString returns the string representation.
8331//
8332// API parameter values that are decorated as "sensitive" in the API will not
8333// be included in the string output. The member name will be present, but the
8334// value will be replaced with "sensitive".
8335func (s GetReservationPurchaseRecommendationOutput) GoString() string {
8336	return s.String()
8337}
8338
8339// SetMetadata sets the Metadata field's value.
8340func (s *GetReservationPurchaseRecommendationOutput) SetMetadata(v *ReservationPurchaseRecommendationMetadata) *GetReservationPurchaseRecommendationOutput {
8341	s.Metadata = v
8342	return s
8343}
8344
8345// SetNextPageToken sets the NextPageToken field's value.
8346func (s *GetReservationPurchaseRecommendationOutput) SetNextPageToken(v string) *GetReservationPurchaseRecommendationOutput {
8347	s.NextPageToken = &v
8348	return s
8349}
8350
8351// SetRecommendations sets the Recommendations field's value.
8352func (s *GetReservationPurchaseRecommendationOutput) SetRecommendations(v []*ReservationPurchaseRecommendation) *GetReservationPurchaseRecommendationOutput {
8353	s.Recommendations = v
8354	return s
8355}
8356
8357type GetReservationUtilizationInput struct {
8358	_ struct{} `type:"structure"`
8359
8360	// Filters utilization data by dimensions. You can filter by the following dimensions:
8361	//
8362	//    * AZ
8363	//
8364	//    * CACHE_ENGINE
8365	//
8366	//    * DEPLOYMENT_OPTION
8367	//
8368	//    * INSTANCE_TYPE
8369	//
8370	//    * LINKED_ACCOUNT
8371	//
8372	//    * OPERATING_SYSTEM
8373	//
8374	//    * PLATFORM
8375	//
8376	//    * REGION
8377	//
8378	//    * SERVICE
8379	//
8380	//    * SCOPE
8381	//
8382	//    * TENANCY
8383	//
8384	// GetReservationUtilization uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
8385	// object as the other operations, but only AND is supported among each dimension,
8386	// and nesting is supported up to only one level deep. If there are multiple
8387	// values for a dimension, they are OR'd together.
8388	Filter *Expression `type:"structure"`
8389
8390	// If GroupBy is set, Granularity can't be set. If Granularity isn't set, the
8391	// response object doesn't include Granularity, either MONTHLY or DAILY. If
8392	// both GroupBy and Granularity aren't set, GetReservationUtilization defaults
8393	// to DAILY.
8394	//
8395	// The GetReservationUtilization operation supports only DAILY and MONTHLY granularities.
8396	Granularity *string `type:"string" enum:"Granularity"`
8397
8398	// Groups only by SUBSCRIPTION_ID. Metadata is included.
8399	GroupBy []*GroupDefinition `type:"list"`
8400
8401	// The maximum number of objects that you returned for this request. If more
8402	// objects are available, in the response, Amazon Web Services provides a NextPageToken
8403	// value that you can use in a subsequent call to get the next batch of objects.
8404	MaxResults *int64 `min:"1" type:"integer"`
8405
8406	// The token to retrieve the next set of results. Amazon Web Services provides
8407	// the token when the response from a previous call has more results than the
8408	// maximum page size.
8409	NextPageToken *string `type:"string"`
8410
8411	// The value by which you want to sort the data.
8412	//
8413	// The following values are supported for Key:
8414	//
8415	//    * UtilizationPercentage
8416	//
8417	//    * UtilizationPercentageInUnits
8418	//
8419	//    * PurchasedHours
8420	//
8421	//    * PurchasedUnits
8422	//
8423	//    * TotalActualHours
8424	//
8425	//    * TotalActualUnits
8426	//
8427	//    * UnusedHours
8428	//
8429	//    * UnusedUnits
8430	//
8431	//    * OnDemandCostOfRIHoursUsed
8432	//
8433	//    * NetRISavings
8434	//
8435	//    * TotalPotentialRISavings
8436	//
8437	//    * AmortizedUpfrontFee
8438	//
8439	//    * AmortizedRecurringFee
8440	//
8441	//    * TotalAmortizedFee
8442	//
8443	//    * RICostForUnusedHours
8444	//
8445	//    * RealizedSavings
8446	//
8447	//    * UnrealizedSavings
8448	//
8449	// Supported values for SortOrder are ASCENDING or DESCENDING.
8450	SortBy *SortDefinition `type:"structure"`
8451
8452	// Sets the start and end dates for retrieving RI utilization. The start date
8453	// is inclusive, but the end date is exclusive. For example, if start is 2017-01-01
8454	// and end is 2017-05-01, then the cost and usage data is retrieved from 2017-01-01
8455	// up to and including 2017-04-30 but not including 2017-05-01.
8456	//
8457	// TimePeriod is a required field
8458	TimePeriod *DateInterval `type:"structure" required:"true"`
8459}
8460
8461// String returns the string representation.
8462//
8463// API parameter values that are decorated as "sensitive" in the API will not
8464// be included in the string output. The member name will be present, but the
8465// value will be replaced with "sensitive".
8466func (s GetReservationUtilizationInput) String() string {
8467	return awsutil.Prettify(s)
8468}
8469
8470// GoString returns the string representation.
8471//
8472// API parameter values that are decorated as "sensitive" in the API will not
8473// be included in the string output. The member name will be present, but the
8474// value will be replaced with "sensitive".
8475func (s GetReservationUtilizationInput) GoString() string {
8476	return s.String()
8477}
8478
8479// Validate inspects the fields of the type to determine if they are valid.
8480func (s *GetReservationUtilizationInput) Validate() error {
8481	invalidParams := request.ErrInvalidParams{Context: "GetReservationUtilizationInput"}
8482	if s.MaxResults != nil && *s.MaxResults < 1 {
8483		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
8484	}
8485	if s.TimePeriod == nil {
8486		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
8487	}
8488	if s.Filter != nil {
8489		if err := s.Filter.Validate(); err != nil {
8490			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
8491		}
8492	}
8493	if s.SortBy != nil {
8494		if err := s.SortBy.Validate(); err != nil {
8495			invalidParams.AddNested("SortBy", err.(request.ErrInvalidParams))
8496		}
8497	}
8498	if s.TimePeriod != nil {
8499		if err := s.TimePeriod.Validate(); err != nil {
8500			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
8501		}
8502	}
8503
8504	if invalidParams.Len() > 0 {
8505		return invalidParams
8506	}
8507	return nil
8508}
8509
8510// SetFilter sets the Filter field's value.
8511func (s *GetReservationUtilizationInput) SetFilter(v *Expression) *GetReservationUtilizationInput {
8512	s.Filter = v
8513	return s
8514}
8515
8516// SetGranularity sets the Granularity field's value.
8517func (s *GetReservationUtilizationInput) SetGranularity(v string) *GetReservationUtilizationInput {
8518	s.Granularity = &v
8519	return s
8520}
8521
8522// SetGroupBy sets the GroupBy field's value.
8523func (s *GetReservationUtilizationInput) SetGroupBy(v []*GroupDefinition) *GetReservationUtilizationInput {
8524	s.GroupBy = v
8525	return s
8526}
8527
8528// SetMaxResults sets the MaxResults field's value.
8529func (s *GetReservationUtilizationInput) SetMaxResults(v int64) *GetReservationUtilizationInput {
8530	s.MaxResults = &v
8531	return s
8532}
8533
8534// SetNextPageToken sets the NextPageToken field's value.
8535func (s *GetReservationUtilizationInput) SetNextPageToken(v string) *GetReservationUtilizationInput {
8536	s.NextPageToken = &v
8537	return s
8538}
8539
8540// SetSortBy sets the SortBy field's value.
8541func (s *GetReservationUtilizationInput) SetSortBy(v *SortDefinition) *GetReservationUtilizationInput {
8542	s.SortBy = v
8543	return s
8544}
8545
8546// SetTimePeriod sets the TimePeriod field's value.
8547func (s *GetReservationUtilizationInput) SetTimePeriod(v *DateInterval) *GetReservationUtilizationInput {
8548	s.TimePeriod = v
8549	return s
8550}
8551
8552type GetReservationUtilizationOutput struct {
8553	_ struct{} `type:"structure"`
8554
8555	// The token for the next set of retrievable results. Amazon Web Services provides
8556	// the token when the response from a previous call has more results than the
8557	// maximum page size.
8558	NextPageToken *string `type:"string"`
8559
8560	// The total amount of time that you used your RIs.
8561	Total *ReservationAggregates `type:"structure"`
8562
8563	// The amount of time that you used your RIs.
8564	//
8565	// UtilizationsByTime is a required field
8566	UtilizationsByTime []*UtilizationByTime `type:"list" required:"true"`
8567}
8568
8569// String returns the string representation.
8570//
8571// API parameter values that are decorated as "sensitive" in the API will not
8572// be included in the string output. The member name will be present, but the
8573// value will be replaced with "sensitive".
8574func (s GetReservationUtilizationOutput) String() string {
8575	return awsutil.Prettify(s)
8576}
8577
8578// GoString returns the string representation.
8579//
8580// API parameter values that are decorated as "sensitive" in the API will not
8581// be included in the string output. The member name will be present, but the
8582// value will be replaced with "sensitive".
8583func (s GetReservationUtilizationOutput) GoString() string {
8584	return s.String()
8585}
8586
8587// SetNextPageToken sets the NextPageToken field's value.
8588func (s *GetReservationUtilizationOutput) SetNextPageToken(v string) *GetReservationUtilizationOutput {
8589	s.NextPageToken = &v
8590	return s
8591}
8592
8593// SetTotal sets the Total field's value.
8594func (s *GetReservationUtilizationOutput) SetTotal(v *ReservationAggregates) *GetReservationUtilizationOutput {
8595	s.Total = v
8596	return s
8597}
8598
8599// SetUtilizationsByTime sets the UtilizationsByTime field's value.
8600func (s *GetReservationUtilizationOutput) SetUtilizationsByTime(v []*UtilizationByTime) *GetReservationUtilizationOutput {
8601	s.UtilizationsByTime = v
8602	return s
8603}
8604
8605type GetRightsizingRecommendationInput struct {
8606	_ struct{} `type:"structure"`
8607
8608	// Enables you to customize recommendations across two attributes. You can choose
8609	// to view recommendations for instances within the same instance families or
8610	// across different instance families. You can also choose to view your estimated
8611	// savings associated with recommendations with consideration of existing Savings
8612	// Plans or RI benefits, or neither.
8613	Configuration *RightsizingRecommendationConfiguration `type:"structure"`
8614
8615	// Use Expression to filter by cost or by usage. There are two patterns:
8616	//
8617	//    * Simple dimension values - You can set the dimension name and values
8618	//    for the filters that you plan to use. For example, you can filter for
8619	//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
8620	//    the Region is a full name (for example, REGION==US East (N. Virginia).
8621	//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
8622	//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
8623	//    are OR'd together to retrieve cost or usage data. You can create Expression
8624	//    and DimensionValues objects using either with* methods or set* methods
8625	//    in multiple lines.
8626	//
8627	//    * Compound dimension values with logical operations - You can use multiple
8628	//    Expression types and the logical operators AND/OR/NOT to create a list
8629	//    of one or more Expression objects. By doing this, you can filter on more
8630	//    advanced options. For example, you can filter on ((REGION == us-east-1
8631	//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
8632	//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
8633	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
8634	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
8635	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
8636	//    Expression can have only one operator, the service returns an error if
8637	//    more than one is specified. The following example shows an Expression
8638	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
8639	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
8640	//
8641	// For the GetRightsizingRecommendation action, a combination of OR and NOT
8642	// isn't supported. OR isn't supported between different dimensions, or dimensions
8643	// and tags. NOT operators aren't supported. Dimensions are also limited to
8644	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
8645	//
8646	// For the GetReservationPurchaseRecommendation action, only NOT is supported.
8647	// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
8648	Filter *Expression `type:"structure"`
8649
8650	// The pagination token that indicates the next set of results that you want
8651	// to retrieve.
8652	NextPageToken *string `type:"string"`
8653
8654	// The number of recommendations that you want returned in a single response
8655	// object.
8656	PageSize *int64 `type:"integer"`
8657
8658	// The specific service that you want recommendations for. The only valid value
8659	// for GetRightsizingRecommendation is "AmazonEC2".
8660	//
8661	// Service is a required field
8662	Service *string `type:"string" required:"true"`
8663}
8664
8665// String returns the string representation.
8666//
8667// API parameter values that are decorated as "sensitive" in the API will not
8668// be included in the string output. The member name will be present, but the
8669// value will be replaced with "sensitive".
8670func (s GetRightsizingRecommendationInput) String() string {
8671	return awsutil.Prettify(s)
8672}
8673
8674// GoString returns the string representation.
8675//
8676// API parameter values that are decorated as "sensitive" in the API will not
8677// be included in the string output. The member name will be present, but the
8678// value will be replaced with "sensitive".
8679func (s GetRightsizingRecommendationInput) GoString() string {
8680	return s.String()
8681}
8682
8683// Validate inspects the fields of the type to determine if they are valid.
8684func (s *GetRightsizingRecommendationInput) Validate() error {
8685	invalidParams := request.ErrInvalidParams{Context: "GetRightsizingRecommendationInput"}
8686	if s.Service == nil {
8687		invalidParams.Add(request.NewErrParamRequired("Service"))
8688	}
8689	if s.Configuration != nil {
8690		if err := s.Configuration.Validate(); err != nil {
8691			invalidParams.AddNested("Configuration", err.(request.ErrInvalidParams))
8692		}
8693	}
8694	if s.Filter != nil {
8695		if err := s.Filter.Validate(); err != nil {
8696			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
8697		}
8698	}
8699
8700	if invalidParams.Len() > 0 {
8701		return invalidParams
8702	}
8703	return nil
8704}
8705
8706// SetConfiguration sets the Configuration field's value.
8707func (s *GetRightsizingRecommendationInput) SetConfiguration(v *RightsizingRecommendationConfiguration) *GetRightsizingRecommendationInput {
8708	s.Configuration = v
8709	return s
8710}
8711
8712// SetFilter sets the Filter field's value.
8713func (s *GetRightsizingRecommendationInput) SetFilter(v *Expression) *GetRightsizingRecommendationInput {
8714	s.Filter = v
8715	return s
8716}
8717
8718// SetNextPageToken sets the NextPageToken field's value.
8719func (s *GetRightsizingRecommendationInput) SetNextPageToken(v string) *GetRightsizingRecommendationInput {
8720	s.NextPageToken = &v
8721	return s
8722}
8723
8724// SetPageSize sets the PageSize field's value.
8725func (s *GetRightsizingRecommendationInput) SetPageSize(v int64) *GetRightsizingRecommendationInput {
8726	s.PageSize = &v
8727	return s
8728}
8729
8730// SetService sets the Service field's value.
8731func (s *GetRightsizingRecommendationInput) SetService(v string) *GetRightsizingRecommendationInput {
8732	s.Service = &v
8733	return s
8734}
8735
8736type GetRightsizingRecommendationOutput struct {
8737	_ struct{} `type:"structure"`
8738
8739	// Enables you to customize recommendations across two attributes. You can choose
8740	// to view recommendations for instances within the same instance families or
8741	// across different instance families. You can also choose to view your estimated
8742	// savings associated with recommendations with consideration of existing Savings
8743	// Plans or RI benefits, or neither.
8744	Configuration *RightsizingRecommendationConfiguration `type:"structure"`
8745
8746	// Information regarding this specific recommendation set.
8747	Metadata *RightsizingRecommendationMetadata `type:"structure"`
8748
8749	// The token to retrieve the next set of results.
8750	NextPageToken *string `type:"string"`
8751
8752	// Recommendations to rightsize resources.
8753	RightsizingRecommendations []*RightsizingRecommendation `type:"list"`
8754
8755	// Summary of this recommendation set.
8756	Summary *RightsizingRecommendationSummary `type:"structure"`
8757}
8758
8759// String returns the string representation.
8760//
8761// API parameter values that are decorated as "sensitive" in the API will not
8762// be included in the string output. The member name will be present, but the
8763// value will be replaced with "sensitive".
8764func (s GetRightsizingRecommendationOutput) String() string {
8765	return awsutil.Prettify(s)
8766}
8767
8768// GoString returns the string representation.
8769//
8770// API parameter values that are decorated as "sensitive" in the API will not
8771// be included in the string output. The member name will be present, but the
8772// value will be replaced with "sensitive".
8773func (s GetRightsizingRecommendationOutput) GoString() string {
8774	return s.String()
8775}
8776
8777// SetConfiguration sets the Configuration field's value.
8778func (s *GetRightsizingRecommendationOutput) SetConfiguration(v *RightsizingRecommendationConfiguration) *GetRightsizingRecommendationOutput {
8779	s.Configuration = v
8780	return s
8781}
8782
8783// SetMetadata sets the Metadata field's value.
8784func (s *GetRightsizingRecommendationOutput) SetMetadata(v *RightsizingRecommendationMetadata) *GetRightsizingRecommendationOutput {
8785	s.Metadata = v
8786	return s
8787}
8788
8789// SetNextPageToken sets the NextPageToken field's value.
8790func (s *GetRightsizingRecommendationOutput) SetNextPageToken(v string) *GetRightsizingRecommendationOutput {
8791	s.NextPageToken = &v
8792	return s
8793}
8794
8795// SetRightsizingRecommendations sets the RightsizingRecommendations field's value.
8796func (s *GetRightsizingRecommendationOutput) SetRightsizingRecommendations(v []*RightsizingRecommendation) *GetRightsizingRecommendationOutput {
8797	s.RightsizingRecommendations = v
8798	return s
8799}
8800
8801// SetSummary sets the Summary field's value.
8802func (s *GetRightsizingRecommendationOutput) SetSummary(v *RightsizingRecommendationSummary) *GetRightsizingRecommendationOutput {
8803	s.Summary = v
8804	return s
8805}
8806
8807type GetSavingsPlansCoverageInput struct {
8808	_ struct{} `type:"structure"`
8809
8810	// Filters Savings Plans coverage data by dimensions. You can filter data for
8811	// Savings Plans usage with the following dimensions:
8812	//
8813	//    * LINKED_ACCOUNT
8814	//
8815	//    * REGION
8816	//
8817	//    * SERVICE
8818	//
8819	//    * INSTANCE_FAMILY
8820	//
8821	// GetSavingsPlansCoverage uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
8822	// object as the other operations, but only AND is supported among each dimension.
8823	// If there are multiple values for a dimension, they are OR'd together.
8824	//
8825	// Cost category is also supported.
8826	Filter *Expression `type:"structure"`
8827
8828	// The granularity of the Amazon Web Services cost data for your Savings Plans.
8829	// Granularity can't be set if GroupBy is set.
8830	//
8831	// The GetSavingsPlansCoverage operation supports only DAILY and MONTHLY granularities.
8832	Granularity *string `type:"string" enum:"Granularity"`
8833
8834	// You can group the data using the attributes INSTANCE_FAMILY, REGION, or SERVICE.
8835	GroupBy []*GroupDefinition `type:"list"`
8836
8837	// The number of items to be returned in a response. The default is 20, with
8838	// a minimum value of 1.
8839	MaxResults *int64 `min:"1" type:"integer"`
8840
8841	// The measurement that you want your Savings Plans coverage reported in. The
8842	// only valid value is SpendCoveredBySavingsPlans.
8843	Metrics []*string `type:"list"`
8844
8845	// The token to retrieve the next set of results. Amazon Web Services provides
8846	// the token when the response from a previous call has more results than the
8847	// maximum page size.
8848	NextToken *string `type:"string"`
8849
8850	// The value by which you want to sort the data.
8851	//
8852	// The following values are supported for Key:
8853	//
8854	//    * SpendCoveredBySavingsPlan
8855	//
8856	//    * OnDemandCost
8857	//
8858	//    * CoveragePercentage
8859	//
8860	//    * TotalCost
8861	//
8862	//    * InstanceFamily
8863	//
8864	//    * Region
8865	//
8866	//    * Service
8867	//
8868	// Supported values for SortOrder are ASCENDING or DESCENDING.
8869	SortBy *SortDefinition `type:"structure"`
8870
8871	// The time period that you want the usage and costs for. The Start date must
8872	// be within 13 months. The End date must be after the Start date, and before
8873	// the current date. Future dates can't be used as an End date.
8874	//
8875	// TimePeriod is a required field
8876	TimePeriod *DateInterval `type:"structure" required:"true"`
8877}
8878
8879// String returns the string representation.
8880//
8881// API parameter values that are decorated as "sensitive" in the API will not
8882// be included in the string output. The member name will be present, but the
8883// value will be replaced with "sensitive".
8884func (s GetSavingsPlansCoverageInput) String() string {
8885	return awsutil.Prettify(s)
8886}
8887
8888// GoString returns the string representation.
8889//
8890// API parameter values that are decorated as "sensitive" in the API will not
8891// be included in the string output. The member name will be present, but the
8892// value will be replaced with "sensitive".
8893func (s GetSavingsPlansCoverageInput) GoString() string {
8894	return s.String()
8895}
8896
8897// Validate inspects the fields of the type to determine if they are valid.
8898func (s *GetSavingsPlansCoverageInput) Validate() error {
8899	invalidParams := request.ErrInvalidParams{Context: "GetSavingsPlansCoverageInput"}
8900	if s.MaxResults != nil && *s.MaxResults < 1 {
8901		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
8902	}
8903	if s.TimePeriod == nil {
8904		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
8905	}
8906	if s.Filter != nil {
8907		if err := s.Filter.Validate(); err != nil {
8908			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
8909		}
8910	}
8911	if s.SortBy != nil {
8912		if err := s.SortBy.Validate(); err != nil {
8913			invalidParams.AddNested("SortBy", err.(request.ErrInvalidParams))
8914		}
8915	}
8916	if s.TimePeriod != nil {
8917		if err := s.TimePeriod.Validate(); err != nil {
8918			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
8919		}
8920	}
8921
8922	if invalidParams.Len() > 0 {
8923		return invalidParams
8924	}
8925	return nil
8926}
8927
8928// SetFilter sets the Filter field's value.
8929func (s *GetSavingsPlansCoverageInput) SetFilter(v *Expression) *GetSavingsPlansCoverageInput {
8930	s.Filter = v
8931	return s
8932}
8933
8934// SetGranularity sets the Granularity field's value.
8935func (s *GetSavingsPlansCoverageInput) SetGranularity(v string) *GetSavingsPlansCoverageInput {
8936	s.Granularity = &v
8937	return s
8938}
8939
8940// SetGroupBy sets the GroupBy field's value.
8941func (s *GetSavingsPlansCoverageInput) SetGroupBy(v []*GroupDefinition) *GetSavingsPlansCoverageInput {
8942	s.GroupBy = v
8943	return s
8944}
8945
8946// SetMaxResults sets the MaxResults field's value.
8947func (s *GetSavingsPlansCoverageInput) SetMaxResults(v int64) *GetSavingsPlansCoverageInput {
8948	s.MaxResults = &v
8949	return s
8950}
8951
8952// SetMetrics sets the Metrics field's value.
8953func (s *GetSavingsPlansCoverageInput) SetMetrics(v []*string) *GetSavingsPlansCoverageInput {
8954	s.Metrics = v
8955	return s
8956}
8957
8958// SetNextToken sets the NextToken field's value.
8959func (s *GetSavingsPlansCoverageInput) SetNextToken(v string) *GetSavingsPlansCoverageInput {
8960	s.NextToken = &v
8961	return s
8962}
8963
8964// SetSortBy sets the SortBy field's value.
8965func (s *GetSavingsPlansCoverageInput) SetSortBy(v *SortDefinition) *GetSavingsPlansCoverageInput {
8966	s.SortBy = v
8967	return s
8968}
8969
8970// SetTimePeriod sets the TimePeriod field's value.
8971func (s *GetSavingsPlansCoverageInput) SetTimePeriod(v *DateInterval) *GetSavingsPlansCoverageInput {
8972	s.TimePeriod = v
8973	return s
8974}
8975
8976type GetSavingsPlansCoverageOutput struct {
8977	_ struct{} `type:"structure"`
8978
8979	// The token to retrieve the next set of results. Amazon Web Services provides
8980	// the token when the response from a previous call has more results than the
8981	// maximum page size.
8982	NextToken *string `type:"string"`
8983
8984	// The amount of spend that your Savings Plans covered.
8985	//
8986	// SavingsPlansCoverages is a required field
8987	SavingsPlansCoverages []*SavingsPlansCoverage `type:"list" required:"true"`
8988}
8989
8990// String returns the string representation.
8991//
8992// API parameter values that are decorated as "sensitive" in the API will not
8993// be included in the string output. The member name will be present, but the
8994// value will be replaced with "sensitive".
8995func (s GetSavingsPlansCoverageOutput) String() string {
8996	return awsutil.Prettify(s)
8997}
8998
8999// GoString returns the string representation.
9000//
9001// API parameter values that are decorated as "sensitive" in the API will not
9002// be included in the string output. The member name will be present, but the
9003// value will be replaced with "sensitive".
9004func (s GetSavingsPlansCoverageOutput) GoString() string {
9005	return s.String()
9006}
9007
9008// SetNextToken sets the NextToken field's value.
9009func (s *GetSavingsPlansCoverageOutput) SetNextToken(v string) *GetSavingsPlansCoverageOutput {
9010	s.NextToken = &v
9011	return s
9012}
9013
9014// SetSavingsPlansCoverages sets the SavingsPlansCoverages field's value.
9015func (s *GetSavingsPlansCoverageOutput) SetSavingsPlansCoverages(v []*SavingsPlansCoverage) *GetSavingsPlansCoverageOutput {
9016	s.SavingsPlansCoverages = v
9017	return s
9018}
9019
9020type GetSavingsPlansPurchaseRecommendationInput struct {
9021	_ struct{} `type:"structure"`
9022
9023	// The account scope that you want your recommendations for. Amazon Web Services
9024	// calculates recommendations including the management account and member accounts
9025	// if the value is set to PAYER. If the value is LINKED, recommendations are
9026	// calculated for individual member accounts only.
9027	AccountScope *string `type:"string" enum:"AccountScope"`
9028
9029	// You can filter your recommendations by Account ID with the LINKED_ACCOUNT
9030	// dimension. To filter your recommendations by Account ID, specify Key as LINKED_ACCOUNT
9031	// and Value as the comma-separated Acount ID(s) for which you want to see Savings
9032	// Plans purchase recommendations.
9033	//
9034	// For GetSavingsPlansPurchaseRecommendation, the Filter does not include CostCategories
9035	// or Tags. It only includes Dimensions. With Dimensions, Key must be LINKED_ACCOUNT
9036	// and Value can be a single Account ID or multiple comma-separated Account
9037	// IDs for which you want to see Savings Plans Purchase Recommendations. AND
9038	// and OR operators are not supported.
9039	Filter *Expression `type:"structure"`
9040
9041	// The lookback period used to generate the recommendation.
9042	//
9043	// LookbackPeriodInDays is a required field
9044	LookbackPeriodInDays *string `type:"string" required:"true" enum:"LookbackPeriodInDays"`
9045
9046	// The token to retrieve the next set of results. Amazon Web Services provides
9047	// the token when the response from a previous call has more results than the
9048	// maximum page size.
9049	NextPageToken *string `type:"string"`
9050
9051	// The number of recommendations that you want returned in a single response
9052	// object.
9053	PageSize *int64 `type:"integer"`
9054
9055	// The payment option used to generate these recommendations.
9056	//
9057	// PaymentOption is a required field
9058	PaymentOption *string `type:"string" required:"true" enum:"PaymentOption"`
9059
9060	// The Savings Plans recommendation type requested.
9061	//
9062	// SavingsPlansType is a required field
9063	SavingsPlansType *string `type:"string" required:"true" enum:"SupportedSavingsPlansType"`
9064
9065	// The savings plan recommendation term used to generate these recommendations.
9066	//
9067	// TermInYears is a required field
9068	TermInYears *string `type:"string" required:"true" enum:"TermInYears"`
9069}
9070
9071// String returns the string representation.
9072//
9073// API parameter values that are decorated as "sensitive" in the API will not
9074// be included in the string output. The member name will be present, but the
9075// value will be replaced with "sensitive".
9076func (s GetSavingsPlansPurchaseRecommendationInput) String() string {
9077	return awsutil.Prettify(s)
9078}
9079
9080// GoString returns the string representation.
9081//
9082// API parameter values that are decorated as "sensitive" in the API will not
9083// be included in the string output. The member name will be present, but the
9084// value will be replaced with "sensitive".
9085func (s GetSavingsPlansPurchaseRecommendationInput) GoString() string {
9086	return s.String()
9087}
9088
9089// Validate inspects the fields of the type to determine if they are valid.
9090func (s *GetSavingsPlansPurchaseRecommendationInput) Validate() error {
9091	invalidParams := request.ErrInvalidParams{Context: "GetSavingsPlansPurchaseRecommendationInput"}
9092	if s.LookbackPeriodInDays == nil {
9093		invalidParams.Add(request.NewErrParamRequired("LookbackPeriodInDays"))
9094	}
9095	if s.PaymentOption == nil {
9096		invalidParams.Add(request.NewErrParamRequired("PaymentOption"))
9097	}
9098	if s.SavingsPlansType == nil {
9099		invalidParams.Add(request.NewErrParamRequired("SavingsPlansType"))
9100	}
9101	if s.TermInYears == nil {
9102		invalidParams.Add(request.NewErrParamRequired("TermInYears"))
9103	}
9104	if s.Filter != nil {
9105		if err := s.Filter.Validate(); err != nil {
9106			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
9107		}
9108	}
9109
9110	if invalidParams.Len() > 0 {
9111		return invalidParams
9112	}
9113	return nil
9114}
9115
9116// SetAccountScope sets the AccountScope field's value.
9117func (s *GetSavingsPlansPurchaseRecommendationInput) SetAccountScope(v string) *GetSavingsPlansPurchaseRecommendationInput {
9118	s.AccountScope = &v
9119	return s
9120}
9121
9122// SetFilter sets the Filter field's value.
9123func (s *GetSavingsPlansPurchaseRecommendationInput) SetFilter(v *Expression) *GetSavingsPlansPurchaseRecommendationInput {
9124	s.Filter = v
9125	return s
9126}
9127
9128// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
9129func (s *GetSavingsPlansPurchaseRecommendationInput) SetLookbackPeriodInDays(v string) *GetSavingsPlansPurchaseRecommendationInput {
9130	s.LookbackPeriodInDays = &v
9131	return s
9132}
9133
9134// SetNextPageToken sets the NextPageToken field's value.
9135func (s *GetSavingsPlansPurchaseRecommendationInput) SetNextPageToken(v string) *GetSavingsPlansPurchaseRecommendationInput {
9136	s.NextPageToken = &v
9137	return s
9138}
9139
9140// SetPageSize sets the PageSize field's value.
9141func (s *GetSavingsPlansPurchaseRecommendationInput) SetPageSize(v int64) *GetSavingsPlansPurchaseRecommendationInput {
9142	s.PageSize = &v
9143	return s
9144}
9145
9146// SetPaymentOption sets the PaymentOption field's value.
9147func (s *GetSavingsPlansPurchaseRecommendationInput) SetPaymentOption(v string) *GetSavingsPlansPurchaseRecommendationInput {
9148	s.PaymentOption = &v
9149	return s
9150}
9151
9152// SetSavingsPlansType sets the SavingsPlansType field's value.
9153func (s *GetSavingsPlansPurchaseRecommendationInput) SetSavingsPlansType(v string) *GetSavingsPlansPurchaseRecommendationInput {
9154	s.SavingsPlansType = &v
9155	return s
9156}
9157
9158// SetTermInYears sets the TermInYears field's value.
9159func (s *GetSavingsPlansPurchaseRecommendationInput) SetTermInYears(v string) *GetSavingsPlansPurchaseRecommendationInput {
9160	s.TermInYears = &v
9161	return s
9162}
9163
9164type GetSavingsPlansPurchaseRecommendationOutput struct {
9165	_ struct{} `type:"structure"`
9166
9167	// Information regarding this specific recommendation set.
9168	Metadata *SavingsPlansPurchaseRecommendationMetadata `type:"structure"`
9169
9170	// The token for the next set of retrievable results. Amazon Web Services provides
9171	// the token when the response from a previous call has more results than the
9172	// maximum page size.
9173	NextPageToken *string `type:"string"`
9174
9175	// Contains your request parameters, Savings Plan Recommendations Summary, and
9176	// Details.
9177	SavingsPlansPurchaseRecommendation *SavingsPlansPurchaseRecommendation `type:"structure"`
9178}
9179
9180// String returns the string representation.
9181//
9182// API parameter values that are decorated as "sensitive" in the API will not
9183// be included in the string output. The member name will be present, but the
9184// value will be replaced with "sensitive".
9185func (s GetSavingsPlansPurchaseRecommendationOutput) String() string {
9186	return awsutil.Prettify(s)
9187}
9188
9189// GoString returns the string representation.
9190//
9191// API parameter values that are decorated as "sensitive" in the API will not
9192// be included in the string output. The member name will be present, but the
9193// value will be replaced with "sensitive".
9194func (s GetSavingsPlansPurchaseRecommendationOutput) GoString() string {
9195	return s.String()
9196}
9197
9198// SetMetadata sets the Metadata field's value.
9199func (s *GetSavingsPlansPurchaseRecommendationOutput) SetMetadata(v *SavingsPlansPurchaseRecommendationMetadata) *GetSavingsPlansPurchaseRecommendationOutput {
9200	s.Metadata = v
9201	return s
9202}
9203
9204// SetNextPageToken sets the NextPageToken field's value.
9205func (s *GetSavingsPlansPurchaseRecommendationOutput) SetNextPageToken(v string) *GetSavingsPlansPurchaseRecommendationOutput {
9206	s.NextPageToken = &v
9207	return s
9208}
9209
9210// SetSavingsPlansPurchaseRecommendation sets the SavingsPlansPurchaseRecommendation field's value.
9211func (s *GetSavingsPlansPurchaseRecommendationOutput) SetSavingsPlansPurchaseRecommendation(v *SavingsPlansPurchaseRecommendation) *GetSavingsPlansPurchaseRecommendationOutput {
9212	s.SavingsPlansPurchaseRecommendation = v
9213	return s
9214}
9215
9216type GetSavingsPlansUtilizationDetailsInput struct {
9217	_ struct{} `type:"structure"`
9218
9219	// The data type.
9220	DataType []*string `type:"list"`
9221
9222	// Filters Savings Plans utilization coverage data for active Savings Plans
9223	// dimensions. You can filter data with the following dimensions:
9224	//
9225	//    * LINKED_ACCOUNT
9226	//
9227	//    * SAVINGS_PLAN_ARN
9228	//
9229	//    * REGION
9230	//
9231	//    * PAYMENT_OPTION
9232	//
9233	//    * INSTANCE_TYPE_FAMILY
9234	//
9235	// GetSavingsPlansUtilizationDetails uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
9236	// object as the other operations, but only AND is supported among each dimension.
9237	Filter *Expression `type:"structure"`
9238
9239	// The number of items to be returned in a response. The default is 20, with
9240	// a minimum value of 1.
9241	MaxResults *int64 `min:"1" type:"integer"`
9242
9243	// The token to retrieve the next set of results. Amazon Web Services provides
9244	// the token when the response from a previous call has more results than the
9245	// maximum page size.
9246	NextToken *string `type:"string"`
9247
9248	// The value by which you want to sort the data.
9249	//
9250	// The following values are supported for Key:
9251	//
9252	//    * UtilizationPercentage
9253	//
9254	//    * TotalCommitment
9255	//
9256	//    * UsedCommitment
9257	//
9258	//    * UnusedCommitment
9259	//
9260	//    * NetSavings
9261	//
9262	//    * AmortizedRecurringCommitment
9263	//
9264	//    * AmortizedUpfrontCommitment
9265	//
9266	// Supported values for SortOrder are ASCENDING or DESCENDING.
9267	SortBy *SortDefinition `type:"structure"`
9268
9269	// The time period that you want the usage and costs for. The Start date must
9270	// be within 13 months. The End date must be after the Start date, and before
9271	// the current date. Future dates can't be used as an End date.
9272	//
9273	// TimePeriod is a required field
9274	TimePeriod *DateInterval `type:"structure" required:"true"`
9275}
9276
9277// String returns the string representation.
9278//
9279// API parameter values that are decorated as "sensitive" in the API will not
9280// be included in the string output. The member name will be present, but the
9281// value will be replaced with "sensitive".
9282func (s GetSavingsPlansUtilizationDetailsInput) String() string {
9283	return awsutil.Prettify(s)
9284}
9285
9286// GoString returns the string representation.
9287//
9288// API parameter values that are decorated as "sensitive" in the API will not
9289// be included in the string output. The member name will be present, but the
9290// value will be replaced with "sensitive".
9291func (s GetSavingsPlansUtilizationDetailsInput) GoString() string {
9292	return s.String()
9293}
9294
9295// Validate inspects the fields of the type to determine if they are valid.
9296func (s *GetSavingsPlansUtilizationDetailsInput) Validate() error {
9297	invalidParams := request.ErrInvalidParams{Context: "GetSavingsPlansUtilizationDetailsInput"}
9298	if s.MaxResults != nil && *s.MaxResults < 1 {
9299		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
9300	}
9301	if s.TimePeriod == nil {
9302		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
9303	}
9304	if s.Filter != nil {
9305		if err := s.Filter.Validate(); err != nil {
9306			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
9307		}
9308	}
9309	if s.SortBy != nil {
9310		if err := s.SortBy.Validate(); err != nil {
9311			invalidParams.AddNested("SortBy", err.(request.ErrInvalidParams))
9312		}
9313	}
9314	if s.TimePeriod != nil {
9315		if err := s.TimePeriod.Validate(); err != nil {
9316			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
9317		}
9318	}
9319
9320	if invalidParams.Len() > 0 {
9321		return invalidParams
9322	}
9323	return nil
9324}
9325
9326// SetDataType sets the DataType field's value.
9327func (s *GetSavingsPlansUtilizationDetailsInput) SetDataType(v []*string) *GetSavingsPlansUtilizationDetailsInput {
9328	s.DataType = v
9329	return s
9330}
9331
9332// SetFilter sets the Filter field's value.
9333func (s *GetSavingsPlansUtilizationDetailsInput) SetFilter(v *Expression) *GetSavingsPlansUtilizationDetailsInput {
9334	s.Filter = v
9335	return s
9336}
9337
9338// SetMaxResults sets the MaxResults field's value.
9339func (s *GetSavingsPlansUtilizationDetailsInput) SetMaxResults(v int64) *GetSavingsPlansUtilizationDetailsInput {
9340	s.MaxResults = &v
9341	return s
9342}
9343
9344// SetNextToken sets the NextToken field's value.
9345func (s *GetSavingsPlansUtilizationDetailsInput) SetNextToken(v string) *GetSavingsPlansUtilizationDetailsInput {
9346	s.NextToken = &v
9347	return s
9348}
9349
9350// SetSortBy sets the SortBy field's value.
9351func (s *GetSavingsPlansUtilizationDetailsInput) SetSortBy(v *SortDefinition) *GetSavingsPlansUtilizationDetailsInput {
9352	s.SortBy = v
9353	return s
9354}
9355
9356// SetTimePeriod sets the TimePeriod field's value.
9357func (s *GetSavingsPlansUtilizationDetailsInput) SetTimePeriod(v *DateInterval) *GetSavingsPlansUtilizationDetailsInput {
9358	s.TimePeriod = v
9359	return s
9360}
9361
9362type GetSavingsPlansUtilizationDetailsOutput struct {
9363	_ struct{} `type:"structure"`
9364
9365	// The token to retrieve the next set of results. Amazon Web Services provides
9366	// the token when the response from a previous call has more results than the
9367	// maximum page size.
9368	NextToken *string `type:"string"`
9369
9370	// Retrieves a single daily or monthly Savings Plans utilization rate and details
9371	// for your account.
9372	//
9373	// SavingsPlansUtilizationDetails is a required field
9374	SavingsPlansUtilizationDetails []*SavingsPlansUtilizationDetail `type:"list" required:"true"`
9375
9376	// The time period of the request.
9377	//
9378	// TimePeriod is a required field
9379	TimePeriod *DateInterval `type:"structure" required:"true"`
9380
9381	// The total Savings Plans utilization, regardless of time period.
9382	Total *SavingsPlansUtilizationAggregates `type:"structure"`
9383}
9384
9385// String returns the string representation.
9386//
9387// API parameter values that are decorated as "sensitive" in the API will not
9388// be included in the string output. The member name will be present, but the
9389// value will be replaced with "sensitive".
9390func (s GetSavingsPlansUtilizationDetailsOutput) String() string {
9391	return awsutil.Prettify(s)
9392}
9393
9394// GoString returns the string representation.
9395//
9396// API parameter values that are decorated as "sensitive" in the API will not
9397// be included in the string output. The member name will be present, but the
9398// value will be replaced with "sensitive".
9399func (s GetSavingsPlansUtilizationDetailsOutput) GoString() string {
9400	return s.String()
9401}
9402
9403// SetNextToken sets the NextToken field's value.
9404func (s *GetSavingsPlansUtilizationDetailsOutput) SetNextToken(v string) *GetSavingsPlansUtilizationDetailsOutput {
9405	s.NextToken = &v
9406	return s
9407}
9408
9409// SetSavingsPlansUtilizationDetails sets the SavingsPlansUtilizationDetails field's value.
9410func (s *GetSavingsPlansUtilizationDetailsOutput) SetSavingsPlansUtilizationDetails(v []*SavingsPlansUtilizationDetail) *GetSavingsPlansUtilizationDetailsOutput {
9411	s.SavingsPlansUtilizationDetails = v
9412	return s
9413}
9414
9415// SetTimePeriod sets the TimePeriod field's value.
9416func (s *GetSavingsPlansUtilizationDetailsOutput) SetTimePeriod(v *DateInterval) *GetSavingsPlansUtilizationDetailsOutput {
9417	s.TimePeriod = v
9418	return s
9419}
9420
9421// SetTotal sets the Total field's value.
9422func (s *GetSavingsPlansUtilizationDetailsOutput) SetTotal(v *SavingsPlansUtilizationAggregates) *GetSavingsPlansUtilizationDetailsOutput {
9423	s.Total = v
9424	return s
9425}
9426
9427type GetSavingsPlansUtilizationInput struct {
9428	_ struct{} `type:"structure"`
9429
9430	// Filters Savings Plans utilization coverage data for active Savings Plans
9431	// dimensions. You can filter data with the following dimensions:
9432	//
9433	//    * LINKED_ACCOUNT
9434	//
9435	//    * SAVINGS_PLAN_ARN
9436	//
9437	//    * SAVINGS_PLANS_TYPE
9438	//
9439	//    * REGION
9440	//
9441	//    * PAYMENT_OPTION
9442	//
9443	//    * INSTANCE_TYPE_FAMILY
9444	//
9445	// GetSavingsPlansUtilization uses the same Expression (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html)
9446	// object as the other operations, but only AND is supported among each dimension.
9447	Filter *Expression `type:"structure"`
9448
9449	// The granularity of the Amazon Web Services utillization data for your Savings
9450	// Plans.
9451	//
9452	// The GetSavingsPlansUtilization operation supports only DAILY and MONTHLY
9453	// granularities.
9454	Granularity *string `type:"string" enum:"Granularity"`
9455
9456	// The value by which you want to sort the data.
9457	//
9458	// The following values are supported for Key:
9459	//
9460	//    * UtilizationPercentage
9461	//
9462	//    * TotalCommitment
9463	//
9464	//    * UsedCommitment
9465	//
9466	//    * UnusedCommitment
9467	//
9468	//    * NetSavings
9469	//
9470	// Supported values for SortOrder are ASCENDING or DESCENDING.
9471	SortBy *SortDefinition `type:"structure"`
9472
9473	// The time period that you want the usage and costs for. The Start date must
9474	// be within 13 months. The End date must be after the Start date, and before
9475	// the current date. Future dates can't be used as an End date.
9476	//
9477	// TimePeriod is a required field
9478	TimePeriod *DateInterval `type:"structure" required:"true"`
9479}
9480
9481// String returns the string representation.
9482//
9483// API parameter values that are decorated as "sensitive" in the API will not
9484// be included in the string output. The member name will be present, but the
9485// value will be replaced with "sensitive".
9486func (s GetSavingsPlansUtilizationInput) String() string {
9487	return awsutil.Prettify(s)
9488}
9489
9490// GoString returns the string representation.
9491//
9492// API parameter values that are decorated as "sensitive" in the API will not
9493// be included in the string output. The member name will be present, but the
9494// value will be replaced with "sensitive".
9495func (s GetSavingsPlansUtilizationInput) GoString() string {
9496	return s.String()
9497}
9498
9499// Validate inspects the fields of the type to determine if they are valid.
9500func (s *GetSavingsPlansUtilizationInput) Validate() error {
9501	invalidParams := request.ErrInvalidParams{Context: "GetSavingsPlansUtilizationInput"}
9502	if s.TimePeriod == nil {
9503		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
9504	}
9505	if s.Filter != nil {
9506		if err := s.Filter.Validate(); err != nil {
9507			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
9508		}
9509	}
9510	if s.SortBy != nil {
9511		if err := s.SortBy.Validate(); err != nil {
9512			invalidParams.AddNested("SortBy", err.(request.ErrInvalidParams))
9513		}
9514	}
9515	if s.TimePeriod != nil {
9516		if err := s.TimePeriod.Validate(); err != nil {
9517			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
9518		}
9519	}
9520
9521	if invalidParams.Len() > 0 {
9522		return invalidParams
9523	}
9524	return nil
9525}
9526
9527// SetFilter sets the Filter field's value.
9528func (s *GetSavingsPlansUtilizationInput) SetFilter(v *Expression) *GetSavingsPlansUtilizationInput {
9529	s.Filter = v
9530	return s
9531}
9532
9533// SetGranularity sets the Granularity field's value.
9534func (s *GetSavingsPlansUtilizationInput) SetGranularity(v string) *GetSavingsPlansUtilizationInput {
9535	s.Granularity = &v
9536	return s
9537}
9538
9539// SetSortBy sets the SortBy field's value.
9540func (s *GetSavingsPlansUtilizationInput) SetSortBy(v *SortDefinition) *GetSavingsPlansUtilizationInput {
9541	s.SortBy = v
9542	return s
9543}
9544
9545// SetTimePeriod sets the TimePeriod field's value.
9546func (s *GetSavingsPlansUtilizationInput) SetTimePeriod(v *DateInterval) *GetSavingsPlansUtilizationInput {
9547	s.TimePeriod = v
9548	return s
9549}
9550
9551type GetSavingsPlansUtilizationOutput struct {
9552	_ struct{} `type:"structure"`
9553
9554	// The amount of cost/commitment you used your Savings Plans. This allows you
9555	// to specify date ranges.
9556	SavingsPlansUtilizationsByTime []*SavingsPlansUtilizationByTime `type:"list"`
9557
9558	// The total amount of cost/commitment that you used your Savings Plans, regardless
9559	// of date ranges.
9560	//
9561	// Total is a required field
9562	Total *SavingsPlansUtilizationAggregates `type:"structure" required:"true"`
9563}
9564
9565// String returns the string representation.
9566//
9567// API parameter values that are decorated as "sensitive" in the API will not
9568// be included in the string output. The member name will be present, but the
9569// value will be replaced with "sensitive".
9570func (s GetSavingsPlansUtilizationOutput) String() string {
9571	return awsutil.Prettify(s)
9572}
9573
9574// GoString returns the string representation.
9575//
9576// API parameter values that are decorated as "sensitive" in the API will not
9577// be included in the string output. The member name will be present, but the
9578// value will be replaced with "sensitive".
9579func (s GetSavingsPlansUtilizationOutput) GoString() string {
9580	return s.String()
9581}
9582
9583// SetSavingsPlansUtilizationsByTime sets the SavingsPlansUtilizationsByTime field's value.
9584func (s *GetSavingsPlansUtilizationOutput) SetSavingsPlansUtilizationsByTime(v []*SavingsPlansUtilizationByTime) *GetSavingsPlansUtilizationOutput {
9585	s.SavingsPlansUtilizationsByTime = v
9586	return s
9587}
9588
9589// SetTotal sets the Total field's value.
9590func (s *GetSavingsPlansUtilizationOutput) SetTotal(v *SavingsPlansUtilizationAggregates) *GetSavingsPlansUtilizationOutput {
9591	s.Total = v
9592	return s
9593}
9594
9595type GetTagsInput struct {
9596	_ struct{} `type:"structure"`
9597
9598	// Use Expression to filter by cost or by usage. There are two patterns:
9599	//
9600	//    * Simple dimension values - You can set the dimension name and values
9601	//    for the filters that you plan to use. For example, you can filter for
9602	//    REGION==us-east-1 OR REGION==us-west-1. For GetRightsizingRecommendation,
9603	//    the Region is a full name (for example, REGION==US East (N. Virginia).
9604	//    The Expression example is as follows: { "Dimensions": { "Key": "REGION",
9605	//    "Values": [ "us-east-1", “us-west-1” ] } } The list of dimension values
9606	//    are OR'd together to retrieve cost or usage data. You can create Expression
9607	//    and DimensionValues objects using either with* methods or set* methods
9608	//    in multiple lines.
9609	//
9610	//    * Compound dimension values with logical operations - You can use multiple
9611	//    Expression types and the logical operators AND/OR/NOT to create a list
9612	//    of one or more Expression objects. By doing this, you can filter on more
9613	//    advanced options. For example, you can filter on ((REGION == us-east-1
9614	//    OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
9615	//    The Expression for that is as follows: { "And": [ {"Or": [ {"Dimensions":
9616	//    { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags":
9617	//    { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions":
9618	//    { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] } Because each
9619	//    Expression can have only one operator, the service returns an error if
9620	//    more than one is specified. The following example shows an Expression
9621	//    object that creates an error. { "And": [ ... ], "DimensionValues": { "Dimension":
9622	//    "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
9623	//
9624	// For the GetRightsizingRecommendation action, a combination of OR and NOT
9625	// isn't supported. OR isn't supported between different dimensions, or dimensions
9626	// and tags. NOT operators aren't supported. Dimensions are also limited to
9627	// LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
9628	//
9629	// For the GetReservationPurchaseRecommendation action, only NOT is supported.
9630	// AND and OR aren't supported. Dimensions are limited to LINKED_ACCOUNT.
9631	Filter *Expression `type:"structure"`
9632
9633	// This field is only used when SortBy is provided in the request. The maximum
9634	// number of objects that to be returned for this request. If MaxResults is
9635	// not specified with SortBy, the request will return 1000 results as the default
9636	// value for this parameter.
9637	//
9638	// For GetTags, MaxResults has an upper limit of 1000.
9639	MaxResults *int64 `min:"1" type:"integer"`
9640
9641	// The token to retrieve the next set of results. Amazon Web Services provides
9642	// the token when the response from a previous call has more results than the
9643	// maximum page size.
9644	NextPageToken *string `type:"string"`
9645
9646	// The value that you want to search for.
9647	SearchString *string `type:"string"`
9648
9649	// The value by which you want to sort the data.
9650	//
9651	// The key represents cost and usage metrics. The following values are supported:
9652	//
9653	//    * BlendedCost
9654	//
9655	//    * UnblendedCost
9656	//
9657	//    * AmortizedCost
9658	//
9659	//    * NetAmortizedCost
9660	//
9661	//    * NetUnblendedCost
9662	//
9663	//    * UsageQuantity
9664	//
9665	//    * NormalizedUsageAmount
9666	//
9667	// Supported values for SortOrder are ASCENDING or DESCENDING.
9668	//
9669	// When using SortBy, NextPageToken and SearchString are not supported.
9670	SortBy []*SortDefinition `type:"list"`
9671
9672	// The key of the tag that you want to return values for.
9673	TagKey *string `type:"string"`
9674
9675	// The start and end dates for retrieving the dimension values. The start date
9676	// is inclusive, but the end date is exclusive. For example, if start is 2017-01-01
9677	// and end is 2017-05-01, then the cost and usage data is retrieved from 2017-01-01
9678	// up to and including 2017-04-30 but not including 2017-05-01.
9679	//
9680	// TimePeriod is a required field
9681	TimePeriod *DateInterval `type:"structure" required:"true"`
9682}
9683
9684// String returns the string representation.
9685//
9686// API parameter values that are decorated as "sensitive" in the API will not
9687// be included in the string output. The member name will be present, but the
9688// value will be replaced with "sensitive".
9689func (s GetTagsInput) String() string {
9690	return awsutil.Prettify(s)
9691}
9692
9693// GoString returns the string representation.
9694//
9695// API parameter values that are decorated as "sensitive" in the API will not
9696// be included in the string output. The member name will be present, but the
9697// value will be replaced with "sensitive".
9698func (s GetTagsInput) GoString() string {
9699	return s.String()
9700}
9701
9702// Validate inspects the fields of the type to determine if they are valid.
9703func (s *GetTagsInput) Validate() error {
9704	invalidParams := request.ErrInvalidParams{Context: "GetTagsInput"}
9705	if s.MaxResults != nil && *s.MaxResults < 1 {
9706		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
9707	}
9708	if s.TimePeriod == nil {
9709		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
9710	}
9711	if s.Filter != nil {
9712		if err := s.Filter.Validate(); err != nil {
9713			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
9714		}
9715	}
9716	if s.SortBy != nil {
9717		for i, v := range s.SortBy {
9718			if v == nil {
9719				continue
9720			}
9721			if err := v.Validate(); err != nil {
9722				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SortBy", i), err.(request.ErrInvalidParams))
9723			}
9724		}
9725	}
9726	if s.TimePeriod != nil {
9727		if err := s.TimePeriod.Validate(); err != nil {
9728			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
9729		}
9730	}
9731
9732	if invalidParams.Len() > 0 {
9733		return invalidParams
9734	}
9735	return nil
9736}
9737
9738// SetFilter sets the Filter field's value.
9739func (s *GetTagsInput) SetFilter(v *Expression) *GetTagsInput {
9740	s.Filter = v
9741	return s
9742}
9743
9744// SetMaxResults sets the MaxResults field's value.
9745func (s *GetTagsInput) SetMaxResults(v int64) *GetTagsInput {
9746	s.MaxResults = &v
9747	return s
9748}
9749
9750// SetNextPageToken sets the NextPageToken field's value.
9751func (s *GetTagsInput) SetNextPageToken(v string) *GetTagsInput {
9752	s.NextPageToken = &v
9753	return s
9754}
9755
9756// SetSearchString sets the SearchString field's value.
9757func (s *GetTagsInput) SetSearchString(v string) *GetTagsInput {
9758	s.SearchString = &v
9759	return s
9760}
9761
9762// SetSortBy sets the SortBy field's value.
9763func (s *GetTagsInput) SetSortBy(v []*SortDefinition) *GetTagsInput {
9764	s.SortBy = v
9765	return s
9766}
9767
9768// SetTagKey sets the TagKey field's value.
9769func (s *GetTagsInput) SetTagKey(v string) *GetTagsInput {
9770	s.TagKey = &v
9771	return s
9772}
9773
9774// SetTimePeriod sets the TimePeriod field's value.
9775func (s *GetTagsInput) SetTimePeriod(v *DateInterval) *GetTagsInput {
9776	s.TimePeriod = v
9777	return s
9778}
9779
9780type GetTagsOutput struct {
9781	_ struct{} `type:"structure"`
9782
9783	// The token for the next set of retrievable results. Amazon Web Services provides
9784	// the token when the response from a previous call has more results than the
9785	// maximum page size.
9786	NextPageToken *string `type:"string"`
9787
9788	// The number of query results that Amazon Web Services returns at a time.
9789	//
9790	// ReturnSize is a required field
9791	ReturnSize *int64 `type:"integer" required:"true"`
9792
9793	// The tags that match your request.
9794	//
9795	// Tags is a required field
9796	Tags []*string `type:"list" required:"true"`
9797
9798	// The total number of query results.
9799	//
9800	// TotalSize is a required field
9801	TotalSize *int64 `type:"integer" required:"true"`
9802}
9803
9804// String returns the string representation.
9805//
9806// API parameter values that are decorated as "sensitive" in the API will not
9807// be included in the string output. The member name will be present, but the
9808// value will be replaced with "sensitive".
9809func (s GetTagsOutput) String() string {
9810	return awsutil.Prettify(s)
9811}
9812
9813// GoString returns the string representation.
9814//
9815// API parameter values that are decorated as "sensitive" in the API will not
9816// be included in the string output. The member name will be present, but the
9817// value will be replaced with "sensitive".
9818func (s GetTagsOutput) GoString() string {
9819	return s.String()
9820}
9821
9822// SetNextPageToken sets the NextPageToken field's value.
9823func (s *GetTagsOutput) SetNextPageToken(v string) *GetTagsOutput {
9824	s.NextPageToken = &v
9825	return s
9826}
9827
9828// SetReturnSize sets the ReturnSize field's value.
9829func (s *GetTagsOutput) SetReturnSize(v int64) *GetTagsOutput {
9830	s.ReturnSize = &v
9831	return s
9832}
9833
9834// SetTags sets the Tags field's value.
9835func (s *GetTagsOutput) SetTags(v []*string) *GetTagsOutput {
9836	s.Tags = v
9837	return s
9838}
9839
9840// SetTotalSize sets the TotalSize field's value.
9841func (s *GetTagsOutput) SetTotalSize(v int64) *GetTagsOutput {
9842	s.TotalSize = &v
9843	return s
9844}
9845
9846type GetUsageForecastInput struct {
9847	_ struct{} `type:"structure"`
9848
9849	// The filters that you want to use to filter your forecast. The GetUsageForecast
9850	// API supports filtering by the following dimensions:
9851	//
9852	//    * AZ
9853	//
9854	//    * INSTANCE_TYPE
9855	//
9856	//    * LINKED_ACCOUNT
9857	//
9858	//    * LINKED_ACCOUNT_NAME
9859	//
9860	//    * OPERATION
9861	//
9862	//    * PURCHASE_TYPE
9863	//
9864	//    * REGION
9865	//
9866	//    * SERVICE
9867	//
9868	//    * USAGE_TYPE
9869	//
9870	//    * USAGE_TYPE_GROUP
9871	//
9872	//    * RECORD_TYPE
9873	//
9874	//    * OPERATING_SYSTEM
9875	//
9876	//    * TENANCY
9877	//
9878	//    * SCOPE
9879	//
9880	//    * PLATFORM
9881	//
9882	//    * SUBSCRIPTION_ID
9883	//
9884	//    * LEGAL_ENTITY_NAME
9885	//
9886	//    * DEPLOYMENT_OPTION
9887	//
9888	//    * DATABASE_ENGINE
9889	//
9890	//    * INSTANCE_TYPE_FAMILY
9891	//
9892	//    * BILLING_ENTITY
9893	//
9894	//    * RESERVATION_ID
9895	//
9896	//    * SAVINGS_PLAN_ARN
9897	Filter *Expression `type:"structure"`
9898
9899	// How granular you want the forecast to be. You can get 3 months of DAILY forecasts
9900	// or 12 months of MONTHLY forecasts.
9901	//
9902	// The GetUsageForecast operation supports only DAILY and MONTHLY granularities.
9903	//
9904	// Granularity is a required field
9905	Granularity *string `type:"string" required:"true" enum:"Granularity"`
9906
9907	// Which metric Cost Explorer uses to create your forecast.
9908	//
9909	// Valid values for a GetUsageForecast call are the following:
9910	//
9911	//    * USAGE_QUANTITY
9912	//
9913	//    * NORMALIZED_USAGE_AMOUNT
9914	//
9915	// Metric is a required field
9916	Metric *string `type:"string" required:"true" enum:"Metric"`
9917
9918	// Cost Explorer always returns the mean forecast as a single point. You can
9919	// request a prediction interval around the mean by specifying a confidence
9920	// level. The higher the confidence level, the more confident Cost Explorer
9921	// is about the actual value falling in the prediction interval. Higher confidence
9922	// levels result in wider prediction intervals.
9923	PredictionIntervalLevel *int64 `min:"51" type:"integer"`
9924
9925	// The start and end dates of the period that you want to retrieve usage forecast
9926	// for. The start date is inclusive, but the end date is exclusive. For example,
9927	// if start is 2017-01-01 and end is 2017-05-01, then the cost and usage data
9928	// is retrieved from 2017-01-01 up to and including 2017-04-30 but not including
9929	// 2017-05-01. The start date must be equal to or later than the current date
9930	// to avoid a validation error.
9931	//
9932	// TimePeriod is a required field
9933	TimePeriod *DateInterval `type:"structure" required:"true"`
9934}
9935
9936// String returns the string representation.
9937//
9938// API parameter values that are decorated as "sensitive" in the API will not
9939// be included in the string output. The member name will be present, but the
9940// value will be replaced with "sensitive".
9941func (s GetUsageForecastInput) String() string {
9942	return awsutil.Prettify(s)
9943}
9944
9945// GoString returns the string representation.
9946//
9947// API parameter values that are decorated as "sensitive" in the API will not
9948// be included in the string output. The member name will be present, but the
9949// value will be replaced with "sensitive".
9950func (s GetUsageForecastInput) GoString() string {
9951	return s.String()
9952}
9953
9954// Validate inspects the fields of the type to determine if they are valid.
9955func (s *GetUsageForecastInput) Validate() error {
9956	invalidParams := request.ErrInvalidParams{Context: "GetUsageForecastInput"}
9957	if s.Granularity == nil {
9958		invalidParams.Add(request.NewErrParamRequired("Granularity"))
9959	}
9960	if s.Metric == nil {
9961		invalidParams.Add(request.NewErrParamRequired("Metric"))
9962	}
9963	if s.PredictionIntervalLevel != nil && *s.PredictionIntervalLevel < 51 {
9964		invalidParams.Add(request.NewErrParamMinValue("PredictionIntervalLevel", 51))
9965	}
9966	if s.TimePeriod == nil {
9967		invalidParams.Add(request.NewErrParamRequired("TimePeriod"))
9968	}
9969	if s.Filter != nil {
9970		if err := s.Filter.Validate(); err != nil {
9971			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
9972		}
9973	}
9974	if s.TimePeriod != nil {
9975		if err := s.TimePeriod.Validate(); err != nil {
9976			invalidParams.AddNested("TimePeriod", err.(request.ErrInvalidParams))
9977		}
9978	}
9979
9980	if invalidParams.Len() > 0 {
9981		return invalidParams
9982	}
9983	return nil
9984}
9985
9986// SetFilter sets the Filter field's value.
9987func (s *GetUsageForecastInput) SetFilter(v *Expression) *GetUsageForecastInput {
9988	s.Filter = v
9989	return s
9990}
9991
9992// SetGranularity sets the Granularity field's value.
9993func (s *GetUsageForecastInput) SetGranularity(v string) *GetUsageForecastInput {
9994	s.Granularity = &v
9995	return s
9996}
9997
9998// SetMetric sets the Metric field's value.
9999func (s *GetUsageForecastInput) SetMetric(v string) *GetUsageForecastInput {
10000	s.Metric = &v
10001	return s
10002}
10003
10004// SetPredictionIntervalLevel sets the PredictionIntervalLevel field's value.
10005func (s *GetUsageForecastInput) SetPredictionIntervalLevel(v int64) *GetUsageForecastInput {
10006	s.PredictionIntervalLevel = &v
10007	return s
10008}
10009
10010// SetTimePeriod sets the TimePeriod field's value.
10011func (s *GetUsageForecastInput) SetTimePeriod(v *DateInterval) *GetUsageForecastInput {
10012	s.TimePeriod = v
10013	return s
10014}
10015
10016type GetUsageForecastOutput struct {
10017	_ struct{} `type:"structure"`
10018
10019	// The forecasts for your query, in order. For DAILY forecasts, this is a list
10020	// of days. For MONTHLY forecasts, this is a list of months.
10021	ForecastResultsByTime []*ForecastResult `type:"list"`
10022
10023	// How much you're forecasted to use over the forecast period.
10024	Total *MetricValue `type:"structure"`
10025}
10026
10027// String returns the string representation.
10028//
10029// API parameter values that are decorated as "sensitive" in the API will not
10030// be included in the string output. The member name will be present, but the
10031// value will be replaced with "sensitive".
10032func (s GetUsageForecastOutput) String() string {
10033	return awsutil.Prettify(s)
10034}
10035
10036// GoString returns the string representation.
10037//
10038// API parameter values that are decorated as "sensitive" in the API will not
10039// be included in the string output. The member name will be present, but the
10040// value will be replaced with "sensitive".
10041func (s GetUsageForecastOutput) GoString() string {
10042	return s.String()
10043}
10044
10045// SetForecastResultsByTime sets the ForecastResultsByTime field's value.
10046func (s *GetUsageForecastOutput) SetForecastResultsByTime(v []*ForecastResult) *GetUsageForecastOutput {
10047	s.ForecastResultsByTime = v
10048	return s
10049}
10050
10051// SetTotal sets the Total field's value.
10052func (s *GetUsageForecastOutput) SetTotal(v *MetricValue) *GetUsageForecastOutput {
10053	s.Total = v
10054	return s
10055}
10056
10057// One level of grouped data in the results.
10058type Group struct {
10059	_ struct{} `type:"structure"`
10060
10061	// The keys that are included in this group.
10062	Keys []*string `type:"list"`
10063
10064	// The metrics that are included in this group.
10065	Metrics map[string]*MetricValue `type:"map"`
10066}
10067
10068// String returns the string representation.
10069//
10070// API parameter values that are decorated as "sensitive" in the API will not
10071// be included in the string output. The member name will be present, but the
10072// value will be replaced with "sensitive".
10073func (s Group) String() string {
10074	return awsutil.Prettify(s)
10075}
10076
10077// GoString returns the string representation.
10078//
10079// API parameter values that are decorated as "sensitive" in the API will not
10080// be included in the string output. The member name will be present, but the
10081// value will be replaced with "sensitive".
10082func (s Group) GoString() string {
10083	return s.String()
10084}
10085
10086// SetKeys sets the Keys field's value.
10087func (s *Group) SetKeys(v []*string) *Group {
10088	s.Keys = v
10089	return s
10090}
10091
10092// SetMetrics sets the Metrics field's value.
10093func (s *Group) SetMetrics(v map[string]*MetricValue) *Group {
10094	s.Metrics = v
10095	return s
10096}
10097
10098// Represents a group when you specify a group by criteria or in the response
10099// to a query with a specific grouping.
10100type GroupDefinition struct {
10101	_ struct{} `type:"structure"`
10102
10103	// The string that represents a key for a specified group.
10104	Key *string `type:"string"`
10105
10106	// The string that represents the type of group.
10107	Type *string `type:"string" enum:"GroupDefinitionType"`
10108}
10109
10110// String returns the string representation.
10111//
10112// API parameter values that are decorated as "sensitive" in the API will not
10113// be included in the string output. The member name will be present, but the
10114// value will be replaced with "sensitive".
10115func (s GroupDefinition) String() string {
10116	return awsutil.Prettify(s)
10117}
10118
10119// GoString returns the string representation.
10120//
10121// API parameter values that are decorated as "sensitive" in the API will not
10122// be included in the string output. The member name will be present, but the
10123// value will be replaced with "sensitive".
10124func (s GroupDefinition) GoString() string {
10125	return s.String()
10126}
10127
10128// SetKey sets the Key field's value.
10129func (s *GroupDefinition) SetKey(v string) *GroupDefinition {
10130	s.Key = &v
10131	return s
10132}
10133
10134// SetType sets the Type field's value.
10135func (s *GroupDefinition) SetType(v string) *GroupDefinition {
10136	s.Type = &v
10137	return s
10138}
10139
10140// The dollar value of the anomaly.
10141type Impact struct {
10142	_ struct{} `type:"structure"`
10143
10144	// The maximum dollar value that's observed for an anomaly.
10145	//
10146	// MaxImpact is a required field
10147	MaxImpact *float64 `type:"double" required:"true"`
10148
10149	// The cumulative dollar value that's observed for an anomaly.
10150	TotalImpact *float64 `type:"double"`
10151}
10152
10153// String returns the string representation.
10154//
10155// API parameter values that are decorated as "sensitive" in the API will not
10156// be included in the string output. The member name will be present, but the
10157// value will be replaced with "sensitive".
10158func (s Impact) String() string {
10159	return awsutil.Prettify(s)
10160}
10161
10162// GoString returns the string representation.
10163//
10164// API parameter values that are decorated as "sensitive" in the API will not
10165// be included in the string output. The member name will be present, but the
10166// value will be replaced with "sensitive".
10167func (s Impact) GoString() string {
10168	return s.String()
10169}
10170
10171// SetMaxImpact sets the MaxImpact field's value.
10172func (s *Impact) SetMaxImpact(v float64) *Impact {
10173	s.MaxImpact = &v
10174	return s
10175}
10176
10177// SetTotalImpact sets the TotalImpact field's value.
10178func (s *Impact) SetTotalImpact(v float64) *Impact {
10179	s.TotalImpact = &v
10180	return s
10181}
10182
10183// Details about the instances that Amazon Web Services recommends that you
10184// purchase.
10185type InstanceDetails struct {
10186	_ struct{} `type:"structure"`
10187
10188	// The Amazon EC2 instances that Amazon Web Services recommends that you purchase.
10189	EC2InstanceDetails *EC2InstanceDetails `type:"structure"`
10190
10191	// The Amazon ES instances that Amazon Web Services recommends that you purchase.
10192	ESInstanceDetails *ESInstanceDetails `type:"structure"`
10193
10194	// The ElastiCache instances that Amazon Web Services recommends that you purchase.
10195	ElastiCacheInstanceDetails *ElastiCacheInstanceDetails `type:"structure"`
10196
10197	// The Amazon RDS instances that Amazon Web Services recommends that you purchase.
10198	RDSInstanceDetails *RDSInstanceDetails `type:"structure"`
10199
10200	// The Amazon Redshift instances that Amazon Web Services recommends that you
10201	// purchase.
10202	RedshiftInstanceDetails *RedshiftInstanceDetails `type:"structure"`
10203}
10204
10205// String returns the string representation.
10206//
10207// API parameter values that are decorated as "sensitive" in the API will not
10208// be included in the string output. The member name will be present, but the
10209// value will be replaced with "sensitive".
10210func (s InstanceDetails) String() string {
10211	return awsutil.Prettify(s)
10212}
10213
10214// GoString returns the string representation.
10215//
10216// API parameter values that are decorated as "sensitive" in the API will not
10217// be included in the string output. The member name will be present, but the
10218// value will be replaced with "sensitive".
10219func (s InstanceDetails) GoString() string {
10220	return s.String()
10221}
10222
10223// SetEC2InstanceDetails sets the EC2InstanceDetails field's value.
10224func (s *InstanceDetails) SetEC2InstanceDetails(v *EC2InstanceDetails) *InstanceDetails {
10225	s.EC2InstanceDetails = v
10226	return s
10227}
10228
10229// SetESInstanceDetails sets the ESInstanceDetails field's value.
10230func (s *InstanceDetails) SetESInstanceDetails(v *ESInstanceDetails) *InstanceDetails {
10231	s.ESInstanceDetails = v
10232	return s
10233}
10234
10235// SetElastiCacheInstanceDetails sets the ElastiCacheInstanceDetails field's value.
10236func (s *InstanceDetails) SetElastiCacheInstanceDetails(v *ElastiCacheInstanceDetails) *InstanceDetails {
10237	s.ElastiCacheInstanceDetails = v
10238	return s
10239}
10240
10241// SetRDSInstanceDetails sets the RDSInstanceDetails field's value.
10242func (s *InstanceDetails) SetRDSInstanceDetails(v *RDSInstanceDetails) *InstanceDetails {
10243	s.RDSInstanceDetails = v
10244	return s
10245}
10246
10247// SetRedshiftInstanceDetails sets the RedshiftInstanceDetails field's value.
10248func (s *InstanceDetails) SetRedshiftInstanceDetails(v *RedshiftInstanceDetails) *InstanceDetails {
10249	s.RedshiftInstanceDetails = v
10250	return s
10251}
10252
10253// The pagination token is invalid. Try again without a pagination token.
10254type InvalidNextTokenException struct {
10255	_            struct{}                  `type:"structure"`
10256	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
10257
10258	Message_ *string `locationName:"Message" type:"string"`
10259}
10260
10261// String returns the string representation.
10262//
10263// API parameter values that are decorated as "sensitive" in the API will not
10264// be included in the string output. The member name will be present, but the
10265// value will be replaced with "sensitive".
10266func (s InvalidNextTokenException) String() string {
10267	return awsutil.Prettify(s)
10268}
10269
10270// GoString returns the string representation.
10271//
10272// API parameter values that are decorated as "sensitive" in the API will not
10273// be included in the string output. The member name will be present, but the
10274// value will be replaced with "sensitive".
10275func (s InvalidNextTokenException) GoString() string {
10276	return s.String()
10277}
10278
10279func newErrorInvalidNextTokenException(v protocol.ResponseMetadata) error {
10280	return &InvalidNextTokenException{
10281		RespMetadata: v,
10282	}
10283}
10284
10285// Code returns the exception type name.
10286func (s *InvalidNextTokenException) Code() string {
10287	return "InvalidNextTokenException"
10288}
10289
10290// Message returns the exception's message.
10291func (s *InvalidNextTokenException) Message() string {
10292	if s.Message_ != nil {
10293		return *s.Message_
10294	}
10295	return ""
10296}
10297
10298// OrigErr always returns nil, satisfies awserr.Error interface.
10299func (s *InvalidNextTokenException) OrigErr() error {
10300	return nil
10301}
10302
10303func (s *InvalidNextTokenException) Error() string {
10304	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
10305}
10306
10307// Status code returns the HTTP status code for the request's response error.
10308func (s *InvalidNextTokenException) StatusCode() int {
10309	return s.RespMetadata.StatusCode
10310}
10311
10312// RequestID returns the service's response RequestID for request.
10313func (s *InvalidNextTokenException) RequestID() string {
10314	return s.RespMetadata.RequestID
10315}
10316
10317// You made too many calls in a short period of time. Try again later.
10318type LimitExceededException struct {
10319	_            struct{}                  `type:"structure"`
10320	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
10321
10322	Message_ *string `locationName:"Message" type:"string"`
10323}
10324
10325// String returns the string representation.
10326//
10327// API parameter values that are decorated as "sensitive" in the API will not
10328// be included in the string output. The member name will be present, but the
10329// value will be replaced with "sensitive".
10330func (s LimitExceededException) String() string {
10331	return awsutil.Prettify(s)
10332}
10333
10334// GoString returns the string representation.
10335//
10336// API parameter values that are decorated as "sensitive" in the API will not
10337// be included in the string output. The member name will be present, but the
10338// value will be replaced with "sensitive".
10339func (s LimitExceededException) GoString() string {
10340	return s.String()
10341}
10342
10343func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
10344	return &LimitExceededException{
10345		RespMetadata: v,
10346	}
10347}
10348
10349// Code returns the exception type name.
10350func (s *LimitExceededException) Code() string {
10351	return "LimitExceededException"
10352}
10353
10354// Message returns the exception's message.
10355func (s *LimitExceededException) Message() string {
10356	if s.Message_ != nil {
10357		return *s.Message_
10358	}
10359	return ""
10360}
10361
10362// OrigErr always returns nil, satisfies awserr.Error interface.
10363func (s *LimitExceededException) OrigErr() error {
10364	return nil
10365}
10366
10367func (s *LimitExceededException) Error() string {
10368	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
10369}
10370
10371// Status code returns the HTTP status code for the request's response error.
10372func (s *LimitExceededException) StatusCode() int {
10373	return s.RespMetadata.StatusCode
10374}
10375
10376// RequestID returns the service's response RequestID for request.
10377func (s *LimitExceededException) RequestID() string {
10378	return s.RespMetadata.RequestID
10379}
10380
10381type ListCostCategoryDefinitionsInput struct {
10382	_ struct{} `type:"structure"`
10383
10384	// The date when the Cost Category was effective.
10385	EffectiveOn *string `min:"20" type:"string"`
10386
10387	// The number of entries a paginated response contains.
10388	MaxResults *int64 `min:"1" type:"integer"`
10389
10390	// The token to retrieve the next set of results. Amazon Web Services provides
10391	// the token when the response from a previous call has more results than the
10392	// maximum page size.
10393	NextToken *string `type:"string"`
10394}
10395
10396// String returns the string representation.
10397//
10398// API parameter values that are decorated as "sensitive" in the API will not
10399// be included in the string output. The member name will be present, but the
10400// value will be replaced with "sensitive".
10401func (s ListCostCategoryDefinitionsInput) String() string {
10402	return awsutil.Prettify(s)
10403}
10404
10405// GoString returns the string representation.
10406//
10407// API parameter values that are decorated as "sensitive" in the API will not
10408// be included in the string output. The member name will be present, but the
10409// value will be replaced with "sensitive".
10410func (s ListCostCategoryDefinitionsInput) GoString() string {
10411	return s.String()
10412}
10413
10414// Validate inspects the fields of the type to determine if they are valid.
10415func (s *ListCostCategoryDefinitionsInput) Validate() error {
10416	invalidParams := request.ErrInvalidParams{Context: "ListCostCategoryDefinitionsInput"}
10417	if s.EffectiveOn != nil && len(*s.EffectiveOn) < 20 {
10418		invalidParams.Add(request.NewErrParamMinLen("EffectiveOn", 20))
10419	}
10420	if s.MaxResults != nil && *s.MaxResults < 1 {
10421		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
10422	}
10423
10424	if invalidParams.Len() > 0 {
10425		return invalidParams
10426	}
10427	return nil
10428}
10429
10430// SetEffectiveOn sets the EffectiveOn field's value.
10431func (s *ListCostCategoryDefinitionsInput) SetEffectiveOn(v string) *ListCostCategoryDefinitionsInput {
10432	s.EffectiveOn = &v
10433	return s
10434}
10435
10436// SetMaxResults sets the MaxResults field's value.
10437func (s *ListCostCategoryDefinitionsInput) SetMaxResults(v int64) *ListCostCategoryDefinitionsInput {
10438	s.MaxResults = &v
10439	return s
10440}
10441
10442// SetNextToken sets the NextToken field's value.
10443func (s *ListCostCategoryDefinitionsInput) SetNextToken(v string) *ListCostCategoryDefinitionsInput {
10444	s.NextToken = &v
10445	return s
10446}
10447
10448type ListCostCategoryDefinitionsOutput struct {
10449	_ struct{} `type:"structure"`
10450
10451	// A reference to a Cost Category containing enough information to identify
10452	// the Cost Category.
10453	CostCategoryReferences []*CostCategoryReference `type:"list"`
10454
10455	// The token to retrieve the next set of results. Amazon Web Services provides
10456	// the token when the response from a previous call has more results than the
10457	// maximum page size.
10458	NextToken *string `type:"string"`
10459}
10460
10461// String returns the string representation.
10462//
10463// API parameter values that are decorated as "sensitive" in the API will not
10464// be included in the string output. The member name will be present, but the
10465// value will be replaced with "sensitive".
10466func (s ListCostCategoryDefinitionsOutput) String() string {
10467	return awsutil.Prettify(s)
10468}
10469
10470// GoString returns the string representation.
10471//
10472// API parameter values that are decorated as "sensitive" in the API will not
10473// be included in the string output. The member name will be present, but the
10474// value will be replaced with "sensitive".
10475func (s ListCostCategoryDefinitionsOutput) GoString() string {
10476	return s.String()
10477}
10478
10479// SetCostCategoryReferences sets the CostCategoryReferences field's value.
10480func (s *ListCostCategoryDefinitionsOutput) SetCostCategoryReferences(v []*CostCategoryReference) *ListCostCategoryDefinitionsOutput {
10481	s.CostCategoryReferences = v
10482	return s
10483}
10484
10485// SetNextToken sets the NextToken field's value.
10486func (s *ListCostCategoryDefinitionsOutput) SetNextToken(v string) *ListCostCategoryDefinitionsOutput {
10487	s.NextToken = &v
10488	return s
10489}
10490
10491// The aggregated value for a metric.
10492type MetricValue struct {
10493	_ struct{} `type:"structure"`
10494
10495	// The actual number that represents the metric.
10496	Amount *string `type:"string"`
10497
10498	// The unit that the metric is given in.
10499	Unit *string `type:"string"`
10500}
10501
10502// String returns the string representation.
10503//
10504// API parameter values that are decorated as "sensitive" in the API will not
10505// be included in the string output. The member name will be present, but the
10506// value will be replaced with "sensitive".
10507func (s MetricValue) String() string {
10508	return awsutil.Prettify(s)
10509}
10510
10511// GoString returns the string representation.
10512//
10513// API parameter values that are decorated as "sensitive" in the API will not
10514// be included in the string output. The member name will be present, but the
10515// value will be replaced with "sensitive".
10516func (s MetricValue) GoString() string {
10517	return s.String()
10518}
10519
10520// SetAmount sets the Amount field's value.
10521func (s *MetricValue) SetAmount(v string) *MetricValue {
10522	s.Amount = &v
10523	return s
10524}
10525
10526// SetUnit sets the Unit field's value.
10527func (s *MetricValue) SetUnit(v string) *MetricValue {
10528	s.Unit = &v
10529	return s
10530}
10531
10532// Details on the modification recommendation.
10533type ModifyRecommendationDetail struct {
10534	_ struct{} `type:"structure"`
10535
10536	// Determines whether this instance type is the Amazon Web Services default
10537	// recommendation.
10538	TargetInstances []*TargetInstance `type:"list"`
10539}
10540
10541// String returns the string representation.
10542//
10543// API parameter values that are decorated as "sensitive" in the API will not
10544// be included in the string output. The member name will be present, but the
10545// value will be replaced with "sensitive".
10546func (s ModifyRecommendationDetail) String() string {
10547	return awsutil.Prettify(s)
10548}
10549
10550// GoString returns the string representation.
10551//
10552// API parameter values that are decorated as "sensitive" in the API will not
10553// be included in the string output. The member name will be present, but the
10554// value will be replaced with "sensitive".
10555func (s ModifyRecommendationDetail) GoString() string {
10556	return s.String()
10557}
10558
10559// SetTargetInstances sets the TargetInstances field's value.
10560func (s *ModifyRecommendationDetail) SetTargetInstances(v []*TargetInstance) *ModifyRecommendationDetail {
10561	s.TargetInstances = v
10562	return s
10563}
10564
10565// The network field that contains a list of network metrics that are associated
10566// with the current instance.
10567type NetworkResourceUtilization struct {
10568	_ struct{} `type:"structure"`
10569
10570	// The network inbound throughput utilization measured in Bytes per second.
10571	NetworkInBytesPerSecond *string `type:"string"`
10572
10573	// The network outbound throughput utilization measured in Bytes per second.
10574	NetworkOutBytesPerSecond *string `type:"string"`
10575
10576	// The network ingress packets that are measured in packets per second.
10577	NetworkPacketsInPerSecond *string `type:"string"`
10578
10579	// The network outgress packets that are measured in packets per second.
10580	NetworkPacketsOutPerSecond *string `type:"string"`
10581}
10582
10583// String returns the string representation.
10584//
10585// API parameter values that are decorated as "sensitive" in the API will not
10586// be included in the string output. The member name will be present, but the
10587// value will be replaced with "sensitive".
10588func (s NetworkResourceUtilization) String() string {
10589	return awsutil.Prettify(s)
10590}
10591
10592// GoString returns the string representation.
10593//
10594// API parameter values that are decorated as "sensitive" in the API will not
10595// be included in the string output. The member name will be present, but the
10596// value will be replaced with "sensitive".
10597func (s NetworkResourceUtilization) GoString() string {
10598	return s.String()
10599}
10600
10601// SetNetworkInBytesPerSecond sets the NetworkInBytesPerSecond field's value.
10602func (s *NetworkResourceUtilization) SetNetworkInBytesPerSecond(v string) *NetworkResourceUtilization {
10603	s.NetworkInBytesPerSecond = &v
10604	return s
10605}
10606
10607// SetNetworkOutBytesPerSecond sets the NetworkOutBytesPerSecond field's value.
10608func (s *NetworkResourceUtilization) SetNetworkOutBytesPerSecond(v string) *NetworkResourceUtilization {
10609	s.NetworkOutBytesPerSecond = &v
10610	return s
10611}
10612
10613// SetNetworkPacketsInPerSecond sets the NetworkPacketsInPerSecond field's value.
10614func (s *NetworkResourceUtilization) SetNetworkPacketsInPerSecond(v string) *NetworkResourceUtilization {
10615	s.NetworkPacketsInPerSecond = &v
10616	return s
10617}
10618
10619// SetNetworkPacketsOutPerSecond sets the NetworkPacketsOutPerSecond field's value.
10620func (s *NetworkResourceUtilization) SetNetworkPacketsOutPerSecond(v string) *NetworkResourceUtilization {
10621	s.NetworkPacketsOutPerSecond = &v
10622	return s
10623}
10624
10625type ProvideAnomalyFeedbackInput struct {
10626	_ struct{} `type:"structure"`
10627
10628	// A cost anomaly ID.
10629	//
10630	// AnomalyId is a required field
10631	AnomalyId *string `type:"string" required:"true"`
10632
10633	// Describes whether the cost anomaly was a planned activity or you considered
10634	// it an anomaly.
10635	//
10636	// Feedback is a required field
10637	Feedback *string `type:"string" required:"true" enum:"AnomalyFeedbackType"`
10638}
10639
10640// String returns the string representation.
10641//
10642// API parameter values that are decorated as "sensitive" in the API will not
10643// be included in the string output. The member name will be present, but the
10644// value will be replaced with "sensitive".
10645func (s ProvideAnomalyFeedbackInput) String() string {
10646	return awsutil.Prettify(s)
10647}
10648
10649// GoString returns the string representation.
10650//
10651// API parameter values that are decorated as "sensitive" in the API will not
10652// be included in the string output. The member name will be present, but the
10653// value will be replaced with "sensitive".
10654func (s ProvideAnomalyFeedbackInput) GoString() string {
10655	return s.String()
10656}
10657
10658// Validate inspects the fields of the type to determine if they are valid.
10659func (s *ProvideAnomalyFeedbackInput) Validate() error {
10660	invalidParams := request.ErrInvalidParams{Context: "ProvideAnomalyFeedbackInput"}
10661	if s.AnomalyId == nil {
10662		invalidParams.Add(request.NewErrParamRequired("AnomalyId"))
10663	}
10664	if s.Feedback == nil {
10665		invalidParams.Add(request.NewErrParamRequired("Feedback"))
10666	}
10667
10668	if invalidParams.Len() > 0 {
10669		return invalidParams
10670	}
10671	return nil
10672}
10673
10674// SetAnomalyId sets the AnomalyId field's value.
10675func (s *ProvideAnomalyFeedbackInput) SetAnomalyId(v string) *ProvideAnomalyFeedbackInput {
10676	s.AnomalyId = &v
10677	return s
10678}
10679
10680// SetFeedback sets the Feedback field's value.
10681func (s *ProvideAnomalyFeedbackInput) SetFeedback(v string) *ProvideAnomalyFeedbackInput {
10682	s.Feedback = &v
10683	return s
10684}
10685
10686type ProvideAnomalyFeedbackOutput struct {
10687	_ struct{} `type:"structure"`
10688
10689	// The ID of the modified cost anomaly.
10690	//
10691	// AnomalyId is a required field
10692	AnomalyId *string `type:"string" required:"true"`
10693}
10694
10695// String returns the string representation.
10696//
10697// API parameter values that are decorated as "sensitive" in the API will not
10698// be included in the string output. The member name will be present, but the
10699// value will be replaced with "sensitive".
10700func (s ProvideAnomalyFeedbackOutput) String() string {
10701	return awsutil.Prettify(s)
10702}
10703
10704// GoString returns the string representation.
10705//
10706// API parameter values that are decorated as "sensitive" in the API will not
10707// be included in the string output. The member name will be present, but the
10708// value will be replaced with "sensitive".
10709func (s ProvideAnomalyFeedbackOutput) GoString() string {
10710	return s.String()
10711}
10712
10713// SetAnomalyId sets the AnomalyId field's value.
10714func (s *ProvideAnomalyFeedbackOutput) SetAnomalyId(v string) *ProvideAnomalyFeedbackOutput {
10715	s.AnomalyId = &v
10716	return s
10717}
10718
10719// Details about the Amazon RDS instances that Amazon Web Services recommends
10720// that you purchase.
10721type RDSInstanceDetails struct {
10722	_ struct{} `type:"structure"`
10723
10724	// Determines whether the recommendation is for a current-generation instance.
10725	CurrentGeneration *bool `type:"boolean"`
10726
10727	// The database edition that the recommended reservation supports.
10728	DatabaseEdition *string `type:"string"`
10729
10730	// The database engine that the recommended reservation supports.
10731	DatabaseEngine *string `type:"string"`
10732
10733	// Determines whether the recommendation is for a reservation in a single Availability
10734	// Zone or a reservation with a backup in a second Availability Zone.
10735	DeploymentOption *string `type:"string"`
10736
10737	// The instance family of the recommended reservation.
10738	Family *string `type:"string"`
10739
10740	// The type of instance that Amazon Web Services recommends.
10741	InstanceType *string `type:"string"`
10742
10743	// The license model that the recommended reservation supports.
10744	LicenseModel *string `type:"string"`
10745
10746	// The Amazon Web Services Region of the recommended reservation.
10747	Region *string `type:"string"`
10748
10749	// Determines whether the recommended reservation is size flexible.
10750	SizeFlexEligible *bool `type:"boolean"`
10751}
10752
10753// String returns the string representation.
10754//
10755// API parameter values that are decorated as "sensitive" in the API will not
10756// be included in the string output. The member name will be present, but the
10757// value will be replaced with "sensitive".
10758func (s RDSInstanceDetails) String() string {
10759	return awsutil.Prettify(s)
10760}
10761
10762// GoString returns the string representation.
10763//
10764// API parameter values that are decorated as "sensitive" in the API will not
10765// be included in the string output. The member name will be present, but the
10766// value will be replaced with "sensitive".
10767func (s RDSInstanceDetails) GoString() string {
10768	return s.String()
10769}
10770
10771// SetCurrentGeneration sets the CurrentGeneration field's value.
10772func (s *RDSInstanceDetails) SetCurrentGeneration(v bool) *RDSInstanceDetails {
10773	s.CurrentGeneration = &v
10774	return s
10775}
10776
10777// SetDatabaseEdition sets the DatabaseEdition field's value.
10778func (s *RDSInstanceDetails) SetDatabaseEdition(v string) *RDSInstanceDetails {
10779	s.DatabaseEdition = &v
10780	return s
10781}
10782
10783// SetDatabaseEngine sets the DatabaseEngine field's value.
10784func (s *RDSInstanceDetails) SetDatabaseEngine(v string) *RDSInstanceDetails {
10785	s.DatabaseEngine = &v
10786	return s
10787}
10788
10789// SetDeploymentOption sets the DeploymentOption field's value.
10790func (s *RDSInstanceDetails) SetDeploymentOption(v string) *RDSInstanceDetails {
10791	s.DeploymentOption = &v
10792	return s
10793}
10794
10795// SetFamily sets the Family field's value.
10796func (s *RDSInstanceDetails) SetFamily(v string) *RDSInstanceDetails {
10797	s.Family = &v
10798	return s
10799}
10800
10801// SetInstanceType sets the InstanceType field's value.
10802func (s *RDSInstanceDetails) SetInstanceType(v string) *RDSInstanceDetails {
10803	s.InstanceType = &v
10804	return s
10805}
10806
10807// SetLicenseModel sets the LicenseModel field's value.
10808func (s *RDSInstanceDetails) SetLicenseModel(v string) *RDSInstanceDetails {
10809	s.LicenseModel = &v
10810	return s
10811}
10812
10813// SetRegion sets the Region field's value.
10814func (s *RDSInstanceDetails) SetRegion(v string) *RDSInstanceDetails {
10815	s.Region = &v
10816	return s
10817}
10818
10819// SetSizeFlexEligible sets the SizeFlexEligible field's value.
10820func (s *RDSInstanceDetails) SetSizeFlexEligible(v bool) *RDSInstanceDetails {
10821	s.SizeFlexEligible = &v
10822	return s
10823}
10824
10825// Details about the Amazon Redshift instances that Amazon Web Services recommends
10826// that you purchase.
10827type RedshiftInstanceDetails struct {
10828	_ struct{} `type:"structure"`
10829
10830	// Determines whether the recommendation is for a current-generation instance.
10831	CurrentGeneration *bool `type:"boolean"`
10832
10833	// The instance family of the recommended reservation.
10834	Family *string `type:"string"`
10835
10836	// The type of node that Amazon Web Services recommends.
10837	NodeType *string `type:"string"`
10838
10839	// The Amazon Web Services Region of the recommended reservation.
10840	Region *string `type:"string"`
10841
10842	// Determines whether the recommended reservation is size flexible.
10843	SizeFlexEligible *bool `type:"boolean"`
10844}
10845
10846// String returns the string representation.
10847//
10848// API parameter values that are decorated as "sensitive" in the API will not
10849// be included in the string output. The member name will be present, but the
10850// value will be replaced with "sensitive".
10851func (s RedshiftInstanceDetails) String() string {
10852	return awsutil.Prettify(s)
10853}
10854
10855// GoString returns the string representation.
10856//
10857// API parameter values that are decorated as "sensitive" in the API will not
10858// be included in the string output. The member name will be present, but the
10859// value will be replaced with "sensitive".
10860func (s RedshiftInstanceDetails) GoString() string {
10861	return s.String()
10862}
10863
10864// SetCurrentGeneration sets the CurrentGeneration field's value.
10865func (s *RedshiftInstanceDetails) SetCurrentGeneration(v bool) *RedshiftInstanceDetails {
10866	s.CurrentGeneration = &v
10867	return s
10868}
10869
10870// SetFamily sets the Family field's value.
10871func (s *RedshiftInstanceDetails) SetFamily(v string) *RedshiftInstanceDetails {
10872	s.Family = &v
10873	return s
10874}
10875
10876// SetNodeType sets the NodeType field's value.
10877func (s *RedshiftInstanceDetails) SetNodeType(v string) *RedshiftInstanceDetails {
10878	s.NodeType = &v
10879	return s
10880}
10881
10882// SetRegion sets the Region field's value.
10883func (s *RedshiftInstanceDetails) SetRegion(v string) *RedshiftInstanceDetails {
10884	s.Region = &v
10885	return s
10886}
10887
10888// SetSizeFlexEligible sets the SizeFlexEligible field's value.
10889func (s *RedshiftInstanceDetails) SetSizeFlexEligible(v bool) *RedshiftInstanceDetails {
10890	s.SizeFlexEligible = &v
10891	return s
10892}
10893
10894// Your request parameters changed between pages. Try again with the old parameters
10895// or without a pagination token.
10896type RequestChangedException struct {
10897	_            struct{}                  `type:"structure"`
10898	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
10899
10900	Message_ *string `locationName:"Message" type:"string"`
10901}
10902
10903// String returns the string representation.
10904//
10905// API parameter values that are decorated as "sensitive" in the API will not
10906// be included in the string output. The member name will be present, but the
10907// value will be replaced with "sensitive".
10908func (s RequestChangedException) String() string {
10909	return awsutil.Prettify(s)
10910}
10911
10912// GoString returns the string representation.
10913//
10914// API parameter values that are decorated as "sensitive" in the API will not
10915// be included in the string output. The member name will be present, but the
10916// value will be replaced with "sensitive".
10917func (s RequestChangedException) GoString() string {
10918	return s.String()
10919}
10920
10921func newErrorRequestChangedException(v protocol.ResponseMetadata) error {
10922	return &RequestChangedException{
10923		RespMetadata: v,
10924	}
10925}
10926
10927// Code returns the exception type name.
10928func (s *RequestChangedException) Code() string {
10929	return "RequestChangedException"
10930}
10931
10932// Message returns the exception's message.
10933func (s *RequestChangedException) Message() string {
10934	if s.Message_ != nil {
10935		return *s.Message_
10936	}
10937	return ""
10938}
10939
10940// OrigErr always returns nil, satisfies awserr.Error interface.
10941func (s *RequestChangedException) OrigErr() error {
10942	return nil
10943}
10944
10945func (s *RequestChangedException) Error() string {
10946	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
10947}
10948
10949// Status code returns the HTTP status code for the request's response error.
10950func (s *RequestChangedException) StatusCode() int {
10951	return s.RespMetadata.StatusCode
10952}
10953
10954// RequestID returns the service's response RequestID for request.
10955func (s *RequestChangedException) RequestID() string {
10956	return s.RespMetadata.RequestID
10957}
10958
10959// The aggregated numbers for your reservation usage.
10960type ReservationAggregates struct {
10961	_ struct{} `type:"structure"`
10962
10963	// The monthly cost of your reservation. It's amortized over the reservation
10964	// period.
10965	AmortizedRecurringFee *string `type:"string"`
10966
10967	// The upfront cost of your reservation. It's amortized over the reservation
10968	// period.
10969	AmortizedUpfrontFee *string `type:"string"`
10970
10971	// How much you saved due to purchasing and utilizing reservation. Amazon Web
10972	// Services calculates this by subtracting TotalAmortizedFee from OnDemandCostOfRIHoursUsed.
10973	NetRISavings *string `type:"string"`
10974
10975	// How much your reservation costs if charged On-Demand rates.
10976	OnDemandCostOfRIHoursUsed *string `type:"string"`
10977
10978	// How many reservation hours that you purchased.
10979	PurchasedHours *string `type:"string"`
10980
10981	// The number of Amazon EC2 reservation hours that you purchased. It's converted
10982	// to normalized units. Normalized units are available only for Amazon EC2 usage
10983	// after November 11, 2017.
10984	PurchasedUnits *string `type:"string"`
10985
10986	// The cost of unused hours for your reservation.
10987	RICostForUnusedHours *string `type:"string"`
10988
10989	// The realized savings because of purchasing and using a reservation.
10990	RealizedSavings *string `type:"string"`
10991
10992	// The total number of reservation hours that you used.
10993	TotalActualHours *string `type:"string"`
10994
10995	// The total number of Amazon EC2 reservation hours that you used. It's converted
10996	// to normalized units. Normalized units are available only for Amazon EC2 usage
10997	// after November 11, 2017.
10998	TotalActualUnits *string `type:"string"`
10999
11000	// The total cost of your reservation. It's amortized over the reservation period.
11001	TotalAmortizedFee *string `type:"string"`
11002
11003	// How much you might save if you use your entire reservation.
11004	TotalPotentialRISavings *string `type:"string"`
11005
11006	// The unrealized savings because of purchasing and using a reservation.
11007	UnrealizedSavings *string `type:"string"`
11008
11009	// The number of reservation hours that you didn't use.
11010	UnusedHours *string `type:"string"`
11011
11012	// The number of Amazon EC2 reservation hours that you didn't use. It's converted
11013	// to normalized units. Normalized units are available only for Amazon EC2 usage
11014	// after November 11, 2017.
11015	UnusedUnits *string `type:"string"`
11016
11017	// The percentage of reservation time that you used.
11018	UtilizationPercentage *string `type:"string"`
11019
11020	// The percentage of Amazon EC2 reservation time that you used. It's converted
11021	// to normalized units. Normalized units are available only for Amazon EC2 usage
11022	// after November 11, 2017.
11023	UtilizationPercentageInUnits *string `type:"string"`
11024}
11025
11026// String returns the string representation.
11027//
11028// API parameter values that are decorated as "sensitive" in the API will not
11029// be included in the string output. The member name will be present, but the
11030// value will be replaced with "sensitive".
11031func (s ReservationAggregates) String() string {
11032	return awsutil.Prettify(s)
11033}
11034
11035// GoString returns the string representation.
11036//
11037// API parameter values that are decorated as "sensitive" in the API will not
11038// be included in the string output. The member name will be present, but the
11039// value will be replaced with "sensitive".
11040func (s ReservationAggregates) GoString() string {
11041	return s.String()
11042}
11043
11044// SetAmortizedRecurringFee sets the AmortizedRecurringFee field's value.
11045func (s *ReservationAggregates) SetAmortizedRecurringFee(v string) *ReservationAggregates {
11046	s.AmortizedRecurringFee = &v
11047	return s
11048}
11049
11050// SetAmortizedUpfrontFee sets the AmortizedUpfrontFee field's value.
11051func (s *ReservationAggregates) SetAmortizedUpfrontFee(v string) *ReservationAggregates {
11052	s.AmortizedUpfrontFee = &v
11053	return s
11054}
11055
11056// SetNetRISavings sets the NetRISavings field's value.
11057func (s *ReservationAggregates) SetNetRISavings(v string) *ReservationAggregates {
11058	s.NetRISavings = &v
11059	return s
11060}
11061
11062// SetOnDemandCostOfRIHoursUsed sets the OnDemandCostOfRIHoursUsed field's value.
11063func (s *ReservationAggregates) SetOnDemandCostOfRIHoursUsed(v string) *ReservationAggregates {
11064	s.OnDemandCostOfRIHoursUsed = &v
11065	return s
11066}
11067
11068// SetPurchasedHours sets the PurchasedHours field's value.
11069func (s *ReservationAggregates) SetPurchasedHours(v string) *ReservationAggregates {
11070	s.PurchasedHours = &v
11071	return s
11072}
11073
11074// SetPurchasedUnits sets the PurchasedUnits field's value.
11075func (s *ReservationAggregates) SetPurchasedUnits(v string) *ReservationAggregates {
11076	s.PurchasedUnits = &v
11077	return s
11078}
11079
11080// SetRICostForUnusedHours sets the RICostForUnusedHours field's value.
11081func (s *ReservationAggregates) SetRICostForUnusedHours(v string) *ReservationAggregates {
11082	s.RICostForUnusedHours = &v
11083	return s
11084}
11085
11086// SetRealizedSavings sets the RealizedSavings field's value.
11087func (s *ReservationAggregates) SetRealizedSavings(v string) *ReservationAggregates {
11088	s.RealizedSavings = &v
11089	return s
11090}
11091
11092// SetTotalActualHours sets the TotalActualHours field's value.
11093func (s *ReservationAggregates) SetTotalActualHours(v string) *ReservationAggregates {
11094	s.TotalActualHours = &v
11095	return s
11096}
11097
11098// SetTotalActualUnits sets the TotalActualUnits field's value.
11099func (s *ReservationAggregates) SetTotalActualUnits(v string) *ReservationAggregates {
11100	s.TotalActualUnits = &v
11101	return s
11102}
11103
11104// SetTotalAmortizedFee sets the TotalAmortizedFee field's value.
11105func (s *ReservationAggregates) SetTotalAmortizedFee(v string) *ReservationAggregates {
11106	s.TotalAmortizedFee = &v
11107	return s
11108}
11109
11110// SetTotalPotentialRISavings sets the TotalPotentialRISavings field's value.
11111func (s *ReservationAggregates) SetTotalPotentialRISavings(v string) *ReservationAggregates {
11112	s.TotalPotentialRISavings = &v
11113	return s
11114}
11115
11116// SetUnrealizedSavings sets the UnrealizedSavings field's value.
11117func (s *ReservationAggregates) SetUnrealizedSavings(v string) *ReservationAggregates {
11118	s.UnrealizedSavings = &v
11119	return s
11120}
11121
11122// SetUnusedHours sets the UnusedHours field's value.
11123func (s *ReservationAggregates) SetUnusedHours(v string) *ReservationAggregates {
11124	s.UnusedHours = &v
11125	return s
11126}
11127
11128// SetUnusedUnits sets the UnusedUnits field's value.
11129func (s *ReservationAggregates) SetUnusedUnits(v string) *ReservationAggregates {
11130	s.UnusedUnits = &v
11131	return s
11132}
11133
11134// SetUtilizationPercentage sets the UtilizationPercentage field's value.
11135func (s *ReservationAggregates) SetUtilizationPercentage(v string) *ReservationAggregates {
11136	s.UtilizationPercentage = &v
11137	return s
11138}
11139
11140// SetUtilizationPercentageInUnits sets the UtilizationPercentageInUnits field's value.
11141func (s *ReservationAggregates) SetUtilizationPercentageInUnits(v string) *ReservationAggregates {
11142	s.UtilizationPercentageInUnits = &v
11143	return s
11144}
11145
11146// A group of reservations that share a set of attributes.
11147type ReservationCoverageGroup struct {
11148	_ struct{} `type:"structure"`
11149
11150	// The attributes for this group of reservations.
11151	Attributes map[string]*string `type:"map"`
11152
11153	// How much instance usage this group of reservations covered.
11154	Coverage *Coverage `type:"structure"`
11155}
11156
11157// String returns the string representation.
11158//
11159// API parameter values that are decorated as "sensitive" in the API will not
11160// be included in the string output. The member name will be present, but the
11161// value will be replaced with "sensitive".
11162func (s ReservationCoverageGroup) String() string {
11163	return awsutil.Prettify(s)
11164}
11165
11166// GoString returns the string representation.
11167//
11168// API parameter values that are decorated as "sensitive" in the API will not
11169// be included in the string output. The member name will be present, but the
11170// value will be replaced with "sensitive".
11171func (s ReservationCoverageGroup) GoString() string {
11172	return s.String()
11173}
11174
11175// SetAttributes sets the Attributes field's value.
11176func (s *ReservationCoverageGroup) SetAttributes(v map[string]*string) *ReservationCoverageGroup {
11177	s.Attributes = v
11178	return s
11179}
11180
11181// SetCoverage sets the Coverage field's value.
11182func (s *ReservationCoverageGroup) SetCoverage(v *Coverage) *ReservationCoverageGroup {
11183	s.Coverage = v
11184	return s
11185}
11186
11187// A specific reservation that Amazon Web Services recommends for purchase.
11188type ReservationPurchaseRecommendation struct {
11189	_ struct{} `type:"structure"`
11190
11191	// The account scope that Amazon Web Services recommends that you purchase this
11192	// instance for. For example, you can purchase this reservation for an entire
11193	// organization in Amazon Web Services Organizations.
11194	AccountScope *string `type:"string" enum:"AccountScope"`
11195
11196	// How many days of previous usage that Amazon Web Services considers when making
11197	// this recommendation.
11198	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
11199
11200	// The payment option for the reservation (for example, AllUpfront or NoUpfront).
11201	PaymentOption *string `type:"string" enum:"PaymentOption"`
11202
11203	// Details about the recommended purchases.
11204	RecommendationDetails []*ReservationPurchaseRecommendationDetail `type:"list"`
11205
11206	// A summary about the recommended purchase.
11207	RecommendationSummary *ReservationPurchaseRecommendationSummary `type:"structure"`
11208
11209	// Hardware specifications for the service that you want recommendations for.
11210	ServiceSpecification *ServiceSpecification `type:"structure"`
11211
11212	// The term of the reservation that you want recommendations for, in years.
11213	TermInYears *string `type:"string" enum:"TermInYears"`
11214}
11215
11216// String returns the string representation.
11217//
11218// API parameter values that are decorated as "sensitive" in the API will not
11219// be included in the string output. The member name will be present, but the
11220// value will be replaced with "sensitive".
11221func (s ReservationPurchaseRecommendation) String() string {
11222	return awsutil.Prettify(s)
11223}
11224
11225// GoString returns the string representation.
11226//
11227// API parameter values that are decorated as "sensitive" in the API will not
11228// be included in the string output. The member name will be present, but the
11229// value will be replaced with "sensitive".
11230func (s ReservationPurchaseRecommendation) GoString() string {
11231	return s.String()
11232}
11233
11234// SetAccountScope sets the AccountScope field's value.
11235func (s *ReservationPurchaseRecommendation) SetAccountScope(v string) *ReservationPurchaseRecommendation {
11236	s.AccountScope = &v
11237	return s
11238}
11239
11240// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
11241func (s *ReservationPurchaseRecommendation) SetLookbackPeriodInDays(v string) *ReservationPurchaseRecommendation {
11242	s.LookbackPeriodInDays = &v
11243	return s
11244}
11245
11246// SetPaymentOption sets the PaymentOption field's value.
11247func (s *ReservationPurchaseRecommendation) SetPaymentOption(v string) *ReservationPurchaseRecommendation {
11248	s.PaymentOption = &v
11249	return s
11250}
11251
11252// SetRecommendationDetails sets the RecommendationDetails field's value.
11253func (s *ReservationPurchaseRecommendation) SetRecommendationDetails(v []*ReservationPurchaseRecommendationDetail) *ReservationPurchaseRecommendation {
11254	s.RecommendationDetails = v
11255	return s
11256}
11257
11258// SetRecommendationSummary sets the RecommendationSummary field's value.
11259func (s *ReservationPurchaseRecommendation) SetRecommendationSummary(v *ReservationPurchaseRecommendationSummary) *ReservationPurchaseRecommendation {
11260	s.RecommendationSummary = v
11261	return s
11262}
11263
11264// SetServiceSpecification sets the ServiceSpecification field's value.
11265func (s *ReservationPurchaseRecommendation) SetServiceSpecification(v *ServiceSpecification) *ReservationPurchaseRecommendation {
11266	s.ServiceSpecification = v
11267	return s
11268}
11269
11270// SetTermInYears sets the TermInYears field's value.
11271func (s *ReservationPurchaseRecommendation) SetTermInYears(v string) *ReservationPurchaseRecommendation {
11272	s.TermInYears = &v
11273	return s
11274}
11275
11276// Details about your recommended reservation purchase.
11277type ReservationPurchaseRecommendationDetail struct {
11278	_ struct{} `type:"structure"`
11279
11280	// The account that this RI recommendation is for.
11281	AccountId *string `type:"string"`
11282
11283	// The average number of normalized units that you used in an hour during the
11284	// historical period. Amazon Web Services uses this to calculate your recommended
11285	// reservation purchases.
11286	AverageNormalizedUnitsUsedPerHour *string `type:"string"`
11287
11288	// The average number of instances that you used in an hour during the historical
11289	// period. Amazon Web Services uses this to calculate your recommended reservation
11290	// purchases.
11291	AverageNumberOfInstancesUsedPerHour *string `type:"string"`
11292
11293	// The average utilization of your instances. Amazon Web Services uses this
11294	// to calculate your recommended reservation purchases.
11295	AverageUtilization *string `type:"string"`
11296
11297	// The currency code that Amazon Web Services used to calculate the costs for
11298	// this instance.
11299	CurrencyCode *string `type:"string"`
11300
11301	// How long Amazon Web Services estimates that it takes for this instance to
11302	// start saving you money, in months.
11303	EstimatedBreakEvenInMonths *string `type:"string"`
11304
11305	// How much Amazon Web Services estimates that you spend on On-Demand Instances
11306	// in a month.
11307	EstimatedMonthlyOnDemandCost *string `type:"string"`
11308
11309	// How much Amazon Web Services estimates that this specific recommendation
11310	// could save you in a month.
11311	EstimatedMonthlySavingsAmount *string `type:"string"`
11312
11313	// How much Amazon Web Services estimates that this specific recommendation
11314	// could save you in a month, as a percentage of your overall costs.
11315	EstimatedMonthlySavingsPercentage *string `type:"string"`
11316
11317	// How much Amazon Web Services estimates that you would have spent for all
11318	// usage during the specified historical period if you had a reservation.
11319	EstimatedReservationCostForLookbackPeriod *string `type:"string"`
11320
11321	// Details about the instances that Amazon Web Services recommends that you
11322	// purchase.
11323	InstanceDetails *InstanceDetails `type:"structure"`
11324
11325	// The maximum number of normalized units that you used in an hour during the
11326	// historical period. Amazon Web Services uses this to calculate your recommended
11327	// reservation purchases.
11328	MaximumNormalizedUnitsUsedPerHour *string `type:"string"`
11329
11330	// The maximum number of instances that you used in an hour during the historical
11331	// period. Amazon Web Services uses this to calculate your recommended reservation
11332	// purchases.
11333	MaximumNumberOfInstancesUsedPerHour *string `type:"string"`
11334
11335	// The minimum number of normalized units that you used in an hour during the
11336	// historical period. Amazon Web Services uses this to calculate your recommended
11337	// reservation purchases.
11338	MinimumNormalizedUnitsUsedPerHour *string `type:"string"`
11339
11340	// The minimum number of instances that you used in an hour during the historical
11341	// period. Amazon Web Services uses this to calculate your recommended reservation
11342	// purchases.
11343	MinimumNumberOfInstancesUsedPerHour *string `type:"string"`
11344
11345	// The number of normalized units that Amazon Web Services recommends that you
11346	// purchase.
11347	RecommendedNormalizedUnitsToPurchase *string `type:"string"`
11348
11349	// The number of instances that Amazon Web Services recommends that you purchase.
11350	RecommendedNumberOfInstancesToPurchase *string `type:"string"`
11351
11352	// How much purchasing this instance costs you on a monthly basis.
11353	RecurringStandardMonthlyCost *string `type:"string"`
11354
11355	// How much purchasing this instance costs you upfront.
11356	UpfrontCost *string `type:"string"`
11357}
11358
11359// String returns the string representation.
11360//
11361// API parameter values that are decorated as "sensitive" in the API will not
11362// be included in the string output. The member name will be present, but the
11363// value will be replaced with "sensitive".
11364func (s ReservationPurchaseRecommendationDetail) String() string {
11365	return awsutil.Prettify(s)
11366}
11367
11368// GoString returns the string representation.
11369//
11370// API parameter values that are decorated as "sensitive" in the API will not
11371// be included in the string output. The member name will be present, but the
11372// value will be replaced with "sensitive".
11373func (s ReservationPurchaseRecommendationDetail) GoString() string {
11374	return s.String()
11375}
11376
11377// SetAccountId sets the AccountId field's value.
11378func (s *ReservationPurchaseRecommendationDetail) SetAccountId(v string) *ReservationPurchaseRecommendationDetail {
11379	s.AccountId = &v
11380	return s
11381}
11382
11383// SetAverageNormalizedUnitsUsedPerHour sets the AverageNormalizedUnitsUsedPerHour field's value.
11384func (s *ReservationPurchaseRecommendationDetail) SetAverageNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
11385	s.AverageNormalizedUnitsUsedPerHour = &v
11386	return s
11387}
11388
11389// SetAverageNumberOfInstancesUsedPerHour sets the AverageNumberOfInstancesUsedPerHour field's value.
11390func (s *ReservationPurchaseRecommendationDetail) SetAverageNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
11391	s.AverageNumberOfInstancesUsedPerHour = &v
11392	return s
11393}
11394
11395// SetAverageUtilization sets the AverageUtilization field's value.
11396func (s *ReservationPurchaseRecommendationDetail) SetAverageUtilization(v string) *ReservationPurchaseRecommendationDetail {
11397	s.AverageUtilization = &v
11398	return s
11399}
11400
11401// SetCurrencyCode sets the CurrencyCode field's value.
11402func (s *ReservationPurchaseRecommendationDetail) SetCurrencyCode(v string) *ReservationPurchaseRecommendationDetail {
11403	s.CurrencyCode = &v
11404	return s
11405}
11406
11407// SetEstimatedBreakEvenInMonths sets the EstimatedBreakEvenInMonths field's value.
11408func (s *ReservationPurchaseRecommendationDetail) SetEstimatedBreakEvenInMonths(v string) *ReservationPurchaseRecommendationDetail {
11409	s.EstimatedBreakEvenInMonths = &v
11410	return s
11411}
11412
11413// SetEstimatedMonthlyOnDemandCost sets the EstimatedMonthlyOnDemandCost field's value.
11414func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlyOnDemandCost(v string) *ReservationPurchaseRecommendationDetail {
11415	s.EstimatedMonthlyOnDemandCost = &v
11416	return s
11417}
11418
11419// SetEstimatedMonthlySavingsAmount sets the EstimatedMonthlySavingsAmount field's value.
11420func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlySavingsAmount(v string) *ReservationPurchaseRecommendationDetail {
11421	s.EstimatedMonthlySavingsAmount = &v
11422	return s
11423}
11424
11425// SetEstimatedMonthlySavingsPercentage sets the EstimatedMonthlySavingsPercentage field's value.
11426func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlySavingsPercentage(v string) *ReservationPurchaseRecommendationDetail {
11427	s.EstimatedMonthlySavingsPercentage = &v
11428	return s
11429}
11430
11431// SetEstimatedReservationCostForLookbackPeriod sets the EstimatedReservationCostForLookbackPeriod field's value.
11432func (s *ReservationPurchaseRecommendationDetail) SetEstimatedReservationCostForLookbackPeriod(v string) *ReservationPurchaseRecommendationDetail {
11433	s.EstimatedReservationCostForLookbackPeriod = &v
11434	return s
11435}
11436
11437// SetInstanceDetails sets the InstanceDetails field's value.
11438func (s *ReservationPurchaseRecommendationDetail) SetInstanceDetails(v *InstanceDetails) *ReservationPurchaseRecommendationDetail {
11439	s.InstanceDetails = v
11440	return s
11441}
11442
11443// SetMaximumNormalizedUnitsUsedPerHour sets the MaximumNormalizedUnitsUsedPerHour field's value.
11444func (s *ReservationPurchaseRecommendationDetail) SetMaximumNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
11445	s.MaximumNormalizedUnitsUsedPerHour = &v
11446	return s
11447}
11448
11449// SetMaximumNumberOfInstancesUsedPerHour sets the MaximumNumberOfInstancesUsedPerHour field's value.
11450func (s *ReservationPurchaseRecommendationDetail) SetMaximumNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
11451	s.MaximumNumberOfInstancesUsedPerHour = &v
11452	return s
11453}
11454
11455// SetMinimumNormalizedUnitsUsedPerHour sets the MinimumNormalizedUnitsUsedPerHour field's value.
11456func (s *ReservationPurchaseRecommendationDetail) SetMinimumNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
11457	s.MinimumNormalizedUnitsUsedPerHour = &v
11458	return s
11459}
11460
11461// SetMinimumNumberOfInstancesUsedPerHour sets the MinimumNumberOfInstancesUsedPerHour field's value.
11462func (s *ReservationPurchaseRecommendationDetail) SetMinimumNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
11463	s.MinimumNumberOfInstancesUsedPerHour = &v
11464	return s
11465}
11466
11467// SetRecommendedNormalizedUnitsToPurchase sets the RecommendedNormalizedUnitsToPurchase field's value.
11468func (s *ReservationPurchaseRecommendationDetail) SetRecommendedNormalizedUnitsToPurchase(v string) *ReservationPurchaseRecommendationDetail {
11469	s.RecommendedNormalizedUnitsToPurchase = &v
11470	return s
11471}
11472
11473// SetRecommendedNumberOfInstancesToPurchase sets the RecommendedNumberOfInstancesToPurchase field's value.
11474func (s *ReservationPurchaseRecommendationDetail) SetRecommendedNumberOfInstancesToPurchase(v string) *ReservationPurchaseRecommendationDetail {
11475	s.RecommendedNumberOfInstancesToPurchase = &v
11476	return s
11477}
11478
11479// SetRecurringStandardMonthlyCost sets the RecurringStandardMonthlyCost field's value.
11480func (s *ReservationPurchaseRecommendationDetail) SetRecurringStandardMonthlyCost(v string) *ReservationPurchaseRecommendationDetail {
11481	s.RecurringStandardMonthlyCost = &v
11482	return s
11483}
11484
11485// SetUpfrontCost sets the UpfrontCost field's value.
11486func (s *ReservationPurchaseRecommendationDetail) SetUpfrontCost(v string) *ReservationPurchaseRecommendationDetail {
11487	s.UpfrontCost = &v
11488	return s
11489}
11490
11491// Information about this specific recommendation, such as the timestamp for
11492// when Amazon Web Services made a specific recommendation.
11493type ReservationPurchaseRecommendationMetadata struct {
11494	_ struct{} `type:"structure"`
11495
11496	// The timestamp for when Amazon Web Services made this recommendation.
11497	GenerationTimestamp *string `type:"string"`
11498
11499	// The ID for this specific recommendation.
11500	RecommendationId *string `type:"string"`
11501}
11502
11503// String returns the string representation.
11504//
11505// API parameter values that are decorated as "sensitive" in the API will not
11506// be included in the string output. The member name will be present, but the
11507// value will be replaced with "sensitive".
11508func (s ReservationPurchaseRecommendationMetadata) String() string {
11509	return awsutil.Prettify(s)
11510}
11511
11512// GoString returns the string representation.
11513//
11514// API parameter values that are decorated as "sensitive" in the API will not
11515// be included in the string output. The member name will be present, but the
11516// value will be replaced with "sensitive".
11517func (s ReservationPurchaseRecommendationMetadata) GoString() string {
11518	return s.String()
11519}
11520
11521// SetGenerationTimestamp sets the GenerationTimestamp field's value.
11522func (s *ReservationPurchaseRecommendationMetadata) SetGenerationTimestamp(v string) *ReservationPurchaseRecommendationMetadata {
11523	s.GenerationTimestamp = &v
11524	return s
11525}
11526
11527// SetRecommendationId sets the RecommendationId field's value.
11528func (s *ReservationPurchaseRecommendationMetadata) SetRecommendationId(v string) *ReservationPurchaseRecommendationMetadata {
11529	s.RecommendationId = &v
11530	return s
11531}
11532
11533// A summary about this recommendation, such as the currency code, the amount
11534// that Amazon Web Services estimates that you could save, and the total amount
11535// of reservation to purchase.
11536type ReservationPurchaseRecommendationSummary struct {
11537	_ struct{} `type:"structure"`
11538
11539	// The currency code used for this recommendation.
11540	CurrencyCode *string `type:"string"`
11541
11542	// The total amount that Amazon Web Services estimates that this recommendation
11543	// could save you in a month.
11544	TotalEstimatedMonthlySavingsAmount *string `type:"string"`
11545
11546	// The total amount that Amazon Web Services estimates that this recommendation
11547	// could save you in a month, as a percentage of your costs.
11548	TotalEstimatedMonthlySavingsPercentage *string `type:"string"`
11549}
11550
11551// String returns the string representation.
11552//
11553// API parameter values that are decorated as "sensitive" in the API will not
11554// be included in the string output. The member name will be present, but the
11555// value will be replaced with "sensitive".
11556func (s ReservationPurchaseRecommendationSummary) String() string {
11557	return awsutil.Prettify(s)
11558}
11559
11560// GoString returns the string representation.
11561//
11562// API parameter values that are decorated as "sensitive" in the API will not
11563// be included in the string output. The member name will be present, but the
11564// value will be replaced with "sensitive".
11565func (s ReservationPurchaseRecommendationSummary) GoString() string {
11566	return s.String()
11567}
11568
11569// SetCurrencyCode sets the CurrencyCode field's value.
11570func (s *ReservationPurchaseRecommendationSummary) SetCurrencyCode(v string) *ReservationPurchaseRecommendationSummary {
11571	s.CurrencyCode = &v
11572	return s
11573}
11574
11575// SetTotalEstimatedMonthlySavingsAmount sets the TotalEstimatedMonthlySavingsAmount field's value.
11576func (s *ReservationPurchaseRecommendationSummary) SetTotalEstimatedMonthlySavingsAmount(v string) *ReservationPurchaseRecommendationSummary {
11577	s.TotalEstimatedMonthlySavingsAmount = &v
11578	return s
11579}
11580
11581// SetTotalEstimatedMonthlySavingsPercentage sets the TotalEstimatedMonthlySavingsPercentage field's value.
11582func (s *ReservationPurchaseRecommendationSummary) SetTotalEstimatedMonthlySavingsPercentage(v string) *ReservationPurchaseRecommendationSummary {
11583	s.TotalEstimatedMonthlySavingsPercentage = &v
11584	return s
11585}
11586
11587// A group of reservations that share a set of attributes.
11588type ReservationUtilizationGroup struct {
11589	_ struct{} `type:"structure"`
11590
11591	// The attributes for this group of reservations.
11592	Attributes map[string]*string `type:"map"`
11593
11594	// The key for a specific reservation attribute.
11595	Key *string `type:"string"`
11596
11597	// How much you used this group of reservations.
11598	Utilization *ReservationAggregates `type:"structure"`
11599
11600	// The value of a specific reservation attribute.
11601	Value *string `type:"string"`
11602}
11603
11604// String returns the string representation.
11605//
11606// API parameter values that are decorated as "sensitive" in the API will not
11607// be included in the string output. The member name will be present, but the
11608// value will be replaced with "sensitive".
11609func (s ReservationUtilizationGroup) String() string {
11610	return awsutil.Prettify(s)
11611}
11612
11613// GoString returns the string representation.
11614//
11615// API parameter values that are decorated as "sensitive" in the API will not
11616// be included in the string output. The member name will be present, but the
11617// value will be replaced with "sensitive".
11618func (s ReservationUtilizationGroup) GoString() string {
11619	return s.String()
11620}
11621
11622// SetAttributes sets the Attributes field's value.
11623func (s *ReservationUtilizationGroup) SetAttributes(v map[string]*string) *ReservationUtilizationGroup {
11624	s.Attributes = v
11625	return s
11626}
11627
11628// SetKey sets the Key field's value.
11629func (s *ReservationUtilizationGroup) SetKey(v string) *ReservationUtilizationGroup {
11630	s.Key = &v
11631	return s
11632}
11633
11634// SetUtilization sets the Utilization field's value.
11635func (s *ReservationUtilizationGroup) SetUtilization(v *ReservationAggregates) *ReservationUtilizationGroup {
11636	s.Utilization = v
11637	return s
11638}
11639
11640// SetValue sets the Value field's value.
11641func (s *ReservationUtilizationGroup) SetValue(v string) *ReservationUtilizationGroup {
11642	s.Value = &v
11643	return s
11644}
11645
11646// Details on the resource.
11647type ResourceDetails struct {
11648	_ struct{} `type:"structure"`
11649
11650	// Details on the Amazon EC2 resource.
11651	EC2ResourceDetails *EC2ResourceDetails `type:"structure"`
11652}
11653
11654// String returns the string representation.
11655//
11656// API parameter values that are decorated as "sensitive" in the API will not
11657// be included in the string output. The member name will be present, but the
11658// value will be replaced with "sensitive".
11659func (s ResourceDetails) String() string {
11660	return awsutil.Prettify(s)
11661}
11662
11663// GoString returns the string representation.
11664//
11665// API parameter values that are decorated as "sensitive" in the API will not
11666// be included in the string output. The member name will be present, but the
11667// value will be replaced with "sensitive".
11668func (s ResourceDetails) GoString() string {
11669	return s.String()
11670}
11671
11672// SetEC2ResourceDetails sets the EC2ResourceDetails field's value.
11673func (s *ResourceDetails) SetEC2ResourceDetails(v *EC2ResourceDetails) *ResourceDetails {
11674	s.EC2ResourceDetails = v
11675	return s
11676}
11677
11678// The specified ARN in the request doesn't exist.
11679type ResourceNotFoundException struct {
11680	_            struct{}                  `type:"structure"`
11681	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
11682
11683	Message_ *string `locationName:"Message" type:"string"`
11684}
11685
11686// String returns the string representation.
11687//
11688// API parameter values that are decorated as "sensitive" in the API will not
11689// be included in the string output. The member name will be present, but the
11690// value will be replaced with "sensitive".
11691func (s ResourceNotFoundException) String() string {
11692	return awsutil.Prettify(s)
11693}
11694
11695// GoString returns the string representation.
11696//
11697// API parameter values that are decorated as "sensitive" in the API will not
11698// be included in the string output. The member name will be present, but the
11699// value will be replaced with "sensitive".
11700func (s ResourceNotFoundException) GoString() string {
11701	return s.String()
11702}
11703
11704func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
11705	return &ResourceNotFoundException{
11706		RespMetadata: v,
11707	}
11708}
11709
11710// Code returns the exception type name.
11711func (s *ResourceNotFoundException) Code() string {
11712	return "ResourceNotFoundException"
11713}
11714
11715// Message returns the exception's message.
11716func (s *ResourceNotFoundException) Message() string {
11717	if s.Message_ != nil {
11718		return *s.Message_
11719	}
11720	return ""
11721}
11722
11723// OrigErr always returns nil, satisfies awserr.Error interface.
11724func (s *ResourceNotFoundException) OrigErr() error {
11725	return nil
11726}
11727
11728func (s *ResourceNotFoundException) Error() string {
11729	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
11730}
11731
11732// Status code returns the HTTP status code for the request's response error.
11733func (s *ResourceNotFoundException) StatusCode() int {
11734	return s.RespMetadata.StatusCode
11735}
11736
11737// RequestID returns the service's response RequestID for request.
11738func (s *ResourceNotFoundException) RequestID() string {
11739	return s.RespMetadata.RequestID
11740}
11741
11742// Resource utilization of current resource.
11743type ResourceUtilization struct {
11744	_ struct{} `type:"structure"`
11745
11746	// The utilization of current Amazon EC2 instance.
11747	EC2ResourceUtilization *EC2ResourceUtilization `type:"structure"`
11748}
11749
11750// String returns the string representation.
11751//
11752// API parameter values that are decorated as "sensitive" in the API will not
11753// be included in the string output. The member name will be present, but the
11754// value will be replaced with "sensitive".
11755func (s ResourceUtilization) String() string {
11756	return awsutil.Prettify(s)
11757}
11758
11759// GoString returns the string representation.
11760//
11761// API parameter values that are decorated as "sensitive" in the API will not
11762// be included in the string output. The member name will be present, but the
11763// value will be replaced with "sensitive".
11764func (s ResourceUtilization) GoString() string {
11765	return s.String()
11766}
11767
11768// SetEC2ResourceUtilization sets the EC2ResourceUtilization field's value.
11769func (s *ResourceUtilization) SetEC2ResourceUtilization(v *EC2ResourceUtilization) *ResourceUtilization {
11770	s.EC2ResourceUtilization = v
11771	return s
11772}
11773
11774// The result that's associated with a time period.
11775type ResultByTime struct {
11776	_ struct{} `type:"structure"`
11777
11778	// Determines whether the result is estimated.
11779	Estimated *bool `type:"boolean"`
11780
11781	// The groups that this time period includes.
11782	Groups []*Group `type:"list"`
11783
11784	// The time period that the result covers.
11785	TimePeriod *DateInterval `type:"structure"`
11786
11787	// The total amount of cost or usage accrued during the time period.
11788	Total map[string]*MetricValue `type:"map"`
11789}
11790
11791// String returns the string representation.
11792//
11793// API parameter values that are decorated as "sensitive" in the API will not
11794// be included in the string output. The member name will be present, but the
11795// value will be replaced with "sensitive".
11796func (s ResultByTime) String() string {
11797	return awsutil.Prettify(s)
11798}
11799
11800// GoString returns the string representation.
11801//
11802// API parameter values that are decorated as "sensitive" in the API will not
11803// be included in the string output. The member name will be present, but the
11804// value will be replaced with "sensitive".
11805func (s ResultByTime) GoString() string {
11806	return s.String()
11807}
11808
11809// SetEstimated sets the Estimated field's value.
11810func (s *ResultByTime) SetEstimated(v bool) *ResultByTime {
11811	s.Estimated = &v
11812	return s
11813}
11814
11815// SetGroups sets the Groups field's value.
11816func (s *ResultByTime) SetGroups(v []*Group) *ResultByTime {
11817	s.Groups = v
11818	return s
11819}
11820
11821// SetTimePeriod sets the TimePeriod field's value.
11822func (s *ResultByTime) SetTimePeriod(v *DateInterval) *ResultByTime {
11823	s.TimePeriod = v
11824	return s
11825}
11826
11827// SetTotal sets the Total field's value.
11828func (s *ResultByTime) SetTotal(v map[string]*MetricValue) *ResultByTime {
11829	s.Total = v
11830	return s
11831}
11832
11833// Recommendations to rightsize resources.
11834type RightsizingRecommendation struct {
11835	_ struct{} `type:"structure"`
11836
11837	// The account that this recommendation is for.
11838	AccountId *string `type:"string"`
11839
11840	// Context regarding the current instance.
11841	CurrentInstance *CurrentInstance `type:"structure"`
11842
11843	// The list of possible reasons why the recommendation is generated such as
11844	// under or over utilization of specific metrics (for example, CPU, Memory,
11845	// Network).
11846	FindingReasonCodes []*string `type:"list"`
11847
11848	// The details for the modification recommendations.
11849	ModifyRecommendationDetail *ModifyRecommendationDetail `type:"structure"`
11850
11851	// A recommendation to either terminate or modify the resource.
11852	RightsizingType *string `type:"string" enum:"RightsizingType"`
11853
11854	// The details for termination recommendations.
11855	TerminateRecommendationDetail *TerminateRecommendationDetail `type:"structure"`
11856}
11857
11858// String returns the string representation.
11859//
11860// API parameter values that are decorated as "sensitive" in the API will not
11861// be included in the string output. The member name will be present, but the
11862// value will be replaced with "sensitive".
11863func (s RightsizingRecommendation) String() string {
11864	return awsutil.Prettify(s)
11865}
11866
11867// GoString returns the string representation.
11868//
11869// API parameter values that are decorated as "sensitive" in the API will not
11870// be included in the string output. The member name will be present, but the
11871// value will be replaced with "sensitive".
11872func (s RightsizingRecommendation) GoString() string {
11873	return s.String()
11874}
11875
11876// SetAccountId sets the AccountId field's value.
11877func (s *RightsizingRecommendation) SetAccountId(v string) *RightsizingRecommendation {
11878	s.AccountId = &v
11879	return s
11880}
11881
11882// SetCurrentInstance sets the CurrentInstance field's value.
11883func (s *RightsizingRecommendation) SetCurrentInstance(v *CurrentInstance) *RightsizingRecommendation {
11884	s.CurrentInstance = v
11885	return s
11886}
11887
11888// SetFindingReasonCodes sets the FindingReasonCodes field's value.
11889func (s *RightsizingRecommendation) SetFindingReasonCodes(v []*string) *RightsizingRecommendation {
11890	s.FindingReasonCodes = v
11891	return s
11892}
11893
11894// SetModifyRecommendationDetail sets the ModifyRecommendationDetail field's value.
11895func (s *RightsizingRecommendation) SetModifyRecommendationDetail(v *ModifyRecommendationDetail) *RightsizingRecommendation {
11896	s.ModifyRecommendationDetail = v
11897	return s
11898}
11899
11900// SetRightsizingType sets the RightsizingType field's value.
11901func (s *RightsizingRecommendation) SetRightsizingType(v string) *RightsizingRecommendation {
11902	s.RightsizingType = &v
11903	return s
11904}
11905
11906// SetTerminateRecommendationDetail sets the TerminateRecommendationDetail field's value.
11907func (s *RightsizingRecommendation) SetTerminateRecommendationDetail(v *TerminateRecommendationDetail) *RightsizingRecommendation {
11908	s.TerminateRecommendationDetail = v
11909	return s
11910}
11911
11912// You can use RightsizingRecommendationConfiguration to customize recommendations
11913// across two attributes. You can choose to view recommendations for instances
11914// within the same instance families or across different instance families.
11915// You can also choose to view your estimated savings that are associated with
11916// recommendations with consideration of existing Savings Plans or RI benefits,
11917// or neither.
11918type RightsizingRecommendationConfiguration struct {
11919	_ struct{} `type:"structure"`
11920
11921	// The option to consider RI or Savings Plans discount benefits in your savings
11922	// calculation. The default value is TRUE.
11923	//
11924	// BenefitsConsidered is a required field
11925	BenefitsConsidered *bool `type:"boolean" required:"true"`
11926
11927	// The option to see recommendations within the same instance family or recommendations
11928	// for instances across other families. The default value is SAME_INSTANCE_FAMILY.
11929	//
11930	// RecommendationTarget is a required field
11931	RecommendationTarget *string `type:"string" required:"true" enum:"RecommendationTarget"`
11932}
11933
11934// String returns the string representation.
11935//
11936// API parameter values that are decorated as "sensitive" in the API will not
11937// be included in the string output. The member name will be present, but the
11938// value will be replaced with "sensitive".
11939func (s RightsizingRecommendationConfiguration) String() string {
11940	return awsutil.Prettify(s)
11941}
11942
11943// GoString returns the string representation.
11944//
11945// API parameter values that are decorated as "sensitive" in the API will not
11946// be included in the string output. The member name will be present, but the
11947// value will be replaced with "sensitive".
11948func (s RightsizingRecommendationConfiguration) GoString() string {
11949	return s.String()
11950}
11951
11952// Validate inspects the fields of the type to determine if they are valid.
11953func (s *RightsizingRecommendationConfiguration) Validate() error {
11954	invalidParams := request.ErrInvalidParams{Context: "RightsizingRecommendationConfiguration"}
11955	if s.BenefitsConsidered == nil {
11956		invalidParams.Add(request.NewErrParamRequired("BenefitsConsidered"))
11957	}
11958	if s.RecommendationTarget == nil {
11959		invalidParams.Add(request.NewErrParamRequired("RecommendationTarget"))
11960	}
11961
11962	if invalidParams.Len() > 0 {
11963		return invalidParams
11964	}
11965	return nil
11966}
11967
11968// SetBenefitsConsidered sets the BenefitsConsidered field's value.
11969func (s *RightsizingRecommendationConfiguration) SetBenefitsConsidered(v bool) *RightsizingRecommendationConfiguration {
11970	s.BenefitsConsidered = &v
11971	return s
11972}
11973
11974// SetRecommendationTarget sets the RecommendationTarget field's value.
11975func (s *RightsizingRecommendationConfiguration) SetRecommendationTarget(v string) *RightsizingRecommendationConfiguration {
11976	s.RecommendationTarget = &v
11977	return s
11978}
11979
11980// Metadata for this recommendation set.
11981type RightsizingRecommendationMetadata struct {
11982	_ struct{} `type:"structure"`
11983
11984	// Additional metadata that might be applicable to the recommendation.
11985	AdditionalMetadata *string `type:"string"`
11986
11987	// The timestamp for when Amazon Web Services made this recommendation.
11988	GenerationTimestamp *string `type:"string"`
11989
11990	// The number of days of previous usage that Amazon Web Services considers when
11991	// making this recommendation.
11992	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
11993
11994	// The ID for this specific recommendation.
11995	RecommendationId *string `type:"string"`
11996}
11997
11998// String returns the string representation.
11999//
12000// API parameter values that are decorated as "sensitive" in the API will not
12001// be included in the string output. The member name will be present, but the
12002// value will be replaced with "sensitive".
12003func (s RightsizingRecommendationMetadata) String() string {
12004	return awsutil.Prettify(s)
12005}
12006
12007// GoString returns the string representation.
12008//
12009// API parameter values that are decorated as "sensitive" in the API will not
12010// be included in the string output. The member name will be present, but the
12011// value will be replaced with "sensitive".
12012func (s RightsizingRecommendationMetadata) GoString() string {
12013	return s.String()
12014}
12015
12016// SetAdditionalMetadata sets the AdditionalMetadata field's value.
12017func (s *RightsizingRecommendationMetadata) SetAdditionalMetadata(v string) *RightsizingRecommendationMetadata {
12018	s.AdditionalMetadata = &v
12019	return s
12020}
12021
12022// SetGenerationTimestamp sets the GenerationTimestamp field's value.
12023func (s *RightsizingRecommendationMetadata) SetGenerationTimestamp(v string) *RightsizingRecommendationMetadata {
12024	s.GenerationTimestamp = &v
12025	return s
12026}
12027
12028// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
12029func (s *RightsizingRecommendationMetadata) SetLookbackPeriodInDays(v string) *RightsizingRecommendationMetadata {
12030	s.LookbackPeriodInDays = &v
12031	return s
12032}
12033
12034// SetRecommendationId sets the RecommendationId field's value.
12035func (s *RightsizingRecommendationMetadata) SetRecommendationId(v string) *RightsizingRecommendationMetadata {
12036	s.RecommendationId = &v
12037	return s
12038}
12039
12040// The summary of rightsizing recommendations
12041type RightsizingRecommendationSummary struct {
12042	_ struct{} `type:"structure"`
12043
12044	// The estimated total savings resulting from modifications, on a monthly basis.
12045	EstimatedTotalMonthlySavingsAmount *string `type:"string"`
12046
12047	// The currency code that Amazon Web Services used to calculate the savings.
12048	SavingsCurrencyCode *string `type:"string"`
12049
12050	// The savings percentage based on the recommended modifications. It's relative
12051	// to the total On-Demand costs that are associated with these instances.
12052	SavingsPercentage *string `type:"string"`
12053
12054	// The total number of instance recommendations.
12055	TotalRecommendationCount *string `type:"string"`
12056}
12057
12058// String returns the string representation.
12059//
12060// API parameter values that are decorated as "sensitive" in the API will not
12061// be included in the string output. The member name will be present, but the
12062// value will be replaced with "sensitive".
12063func (s RightsizingRecommendationSummary) String() string {
12064	return awsutil.Prettify(s)
12065}
12066
12067// GoString returns the string representation.
12068//
12069// API parameter values that are decorated as "sensitive" in the API will not
12070// be included in the string output. The member name will be present, but the
12071// value will be replaced with "sensitive".
12072func (s RightsizingRecommendationSummary) GoString() string {
12073	return s.String()
12074}
12075
12076// SetEstimatedTotalMonthlySavingsAmount sets the EstimatedTotalMonthlySavingsAmount field's value.
12077func (s *RightsizingRecommendationSummary) SetEstimatedTotalMonthlySavingsAmount(v string) *RightsizingRecommendationSummary {
12078	s.EstimatedTotalMonthlySavingsAmount = &v
12079	return s
12080}
12081
12082// SetSavingsCurrencyCode sets the SavingsCurrencyCode field's value.
12083func (s *RightsizingRecommendationSummary) SetSavingsCurrencyCode(v string) *RightsizingRecommendationSummary {
12084	s.SavingsCurrencyCode = &v
12085	return s
12086}
12087
12088// SetSavingsPercentage sets the SavingsPercentage field's value.
12089func (s *RightsizingRecommendationSummary) SetSavingsPercentage(v string) *RightsizingRecommendationSummary {
12090	s.SavingsPercentage = &v
12091	return s
12092}
12093
12094// SetTotalRecommendationCount sets the TotalRecommendationCount field's value.
12095func (s *RightsizingRecommendationSummary) SetTotalRecommendationCount(v string) *RightsizingRecommendationSummary {
12096	s.TotalRecommendationCount = &v
12097	return s
12098}
12099
12100// The combination of Amazon Web Services service, linked account, Region, and
12101// usage type where a cost anomaly is observed.
12102type RootCause struct {
12103	_ struct{} `type:"structure"`
12104
12105	// The member account value that's associated with the cost anomaly.
12106	LinkedAccount *string `type:"string"`
12107
12108	// The Amazon Web Services Region that's associated with the cost anomaly.
12109	Region *string `type:"string"`
12110
12111	// The Amazon Web Services service name that's associated with the cost anomaly.
12112	Service *string `type:"string"`
12113
12114	// The UsageType value that's associated with the cost anomaly.
12115	UsageType *string `type:"string"`
12116}
12117
12118// String returns the string representation.
12119//
12120// API parameter values that are decorated as "sensitive" in the API will not
12121// be included in the string output. The member name will be present, but the
12122// value will be replaced with "sensitive".
12123func (s RootCause) String() string {
12124	return awsutil.Prettify(s)
12125}
12126
12127// GoString returns the string representation.
12128//
12129// API parameter values that are decorated as "sensitive" in the API will not
12130// be included in the string output. The member name will be present, but the
12131// value will be replaced with "sensitive".
12132func (s RootCause) GoString() string {
12133	return s.String()
12134}
12135
12136// SetLinkedAccount sets the LinkedAccount field's value.
12137func (s *RootCause) SetLinkedAccount(v string) *RootCause {
12138	s.LinkedAccount = &v
12139	return s
12140}
12141
12142// SetRegion sets the Region field's value.
12143func (s *RootCause) SetRegion(v string) *RootCause {
12144	s.Region = &v
12145	return s
12146}
12147
12148// SetService sets the Service field's value.
12149func (s *RootCause) SetService(v string) *RootCause {
12150	s.Service = &v
12151	return s
12152}
12153
12154// SetUsageType sets the UsageType field's value.
12155func (s *RootCause) SetUsageType(v string) *RootCause {
12156	s.UsageType = &v
12157	return s
12158}
12159
12160// The amortized amount of Savings Plans purchased in a specific account during
12161// a specific time interval.
12162type SavingsPlansAmortizedCommitment struct {
12163	_ struct{} `type:"structure"`
12164
12165	// The amortized amount of your Savings Plans commitment that was purchased
12166	// with either a Partial or a NoUpfront.
12167	AmortizedRecurringCommitment *string `type:"string"`
12168
12169	// The amortized amount of your Savings Plans commitment that was purchased
12170	// with an Upfront or PartialUpfront Savings Plans.
12171	AmortizedUpfrontCommitment *string `type:"string"`
12172
12173	// The total amortized amount of your Savings Plans commitment, regardless of
12174	// your Savings Plans purchase method.
12175	TotalAmortizedCommitment *string `type:"string"`
12176}
12177
12178// String returns the string representation.
12179//
12180// API parameter values that are decorated as "sensitive" in the API will not
12181// be included in the string output. The member name will be present, but the
12182// value will be replaced with "sensitive".
12183func (s SavingsPlansAmortizedCommitment) String() string {
12184	return awsutil.Prettify(s)
12185}
12186
12187// GoString returns the string representation.
12188//
12189// API parameter values that are decorated as "sensitive" in the API will not
12190// be included in the string output. The member name will be present, but the
12191// value will be replaced with "sensitive".
12192func (s SavingsPlansAmortizedCommitment) GoString() string {
12193	return s.String()
12194}
12195
12196// SetAmortizedRecurringCommitment sets the AmortizedRecurringCommitment field's value.
12197func (s *SavingsPlansAmortizedCommitment) SetAmortizedRecurringCommitment(v string) *SavingsPlansAmortizedCommitment {
12198	s.AmortizedRecurringCommitment = &v
12199	return s
12200}
12201
12202// SetAmortizedUpfrontCommitment sets the AmortizedUpfrontCommitment field's value.
12203func (s *SavingsPlansAmortizedCommitment) SetAmortizedUpfrontCommitment(v string) *SavingsPlansAmortizedCommitment {
12204	s.AmortizedUpfrontCommitment = &v
12205	return s
12206}
12207
12208// SetTotalAmortizedCommitment sets the TotalAmortizedCommitment field's value.
12209func (s *SavingsPlansAmortizedCommitment) SetTotalAmortizedCommitment(v string) *SavingsPlansAmortizedCommitment {
12210	s.TotalAmortizedCommitment = &v
12211	return s
12212}
12213
12214// The amount of Savings Plans eligible usage that is covered by Savings Plans.
12215// All calculations consider the On-Demand equivalent of your Savings Plans
12216// usage.
12217type SavingsPlansCoverage struct {
12218	_ struct{} `type:"structure"`
12219
12220	// The attribute that applies to a specific Dimension.
12221	Attributes map[string]*string `type:"map"`
12222
12223	// The amount of Savings Plans eligible usage that the Savings Plans covered.
12224	Coverage *SavingsPlansCoverageData `type:"structure"`
12225
12226	// The time period of the request.
12227	TimePeriod *DateInterval `type:"structure"`
12228}
12229
12230// String returns the string representation.
12231//
12232// API parameter values that are decorated as "sensitive" in the API will not
12233// be included in the string output. The member name will be present, but the
12234// value will be replaced with "sensitive".
12235func (s SavingsPlansCoverage) String() string {
12236	return awsutil.Prettify(s)
12237}
12238
12239// GoString returns the string representation.
12240//
12241// API parameter values that are decorated as "sensitive" in the API will not
12242// be included in the string output. The member name will be present, but the
12243// value will be replaced with "sensitive".
12244func (s SavingsPlansCoverage) GoString() string {
12245	return s.String()
12246}
12247
12248// SetAttributes sets the Attributes field's value.
12249func (s *SavingsPlansCoverage) SetAttributes(v map[string]*string) *SavingsPlansCoverage {
12250	s.Attributes = v
12251	return s
12252}
12253
12254// SetCoverage sets the Coverage field's value.
12255func (s *SavingsPlansCoverage) SetCoverage(v *SavingsPlansCoverageData) *SavingsPlansCoverage {
12256	s.Coverage = v
12257	return s
12258}
12259
12260// SetTimePeriod sets the TimePeriod field's value.
12261func (s *SavingsPlansCoverage) SetTimePeriod(v *DateInterval) *SavingsPlansCoverage {
12262	s.TimePeriod = v
12263	return s
12264}
12265
12266// Specific coverage percentage, On-Demand costs, and spend covered by Savings
12267// Plans, and total Savings Plans costs for an account.
12268type SavingsPlansCoverageData struct {
12269	_ struct{} `type:"structure"`
12270
12271	// The percentage of your existing Savings Plans covered usage, divided by all
12272	// of your eligible Savings Plans usage in an account (or set of accounts).
12273	CoveragePercentage *string `type:"string"`
12274
12275	// The cost of your Amazon Web Services usage at the public On-Demand rate.
12276	OnDemandCost *string `type:"string"`
12277
12278	// The amount of your Amazon Web Services usage that is covered by a Savings
12279	// Plans.
12280	SpendCoveredBySavingsPlans *string `type:"string"`
12281
12282	// The total cost of your Amazon Web Services usage, regardless of your purchase
12283	// option.
12284	TotalCost *string `type:"string"`
12285}
12286
12287// String returns the string representation.
12288//
12289// API parameter values that are decorated as "sensitive" in the API will not
12290// be included in the string output. The member name will be present, but the
12291// value will be replaced with "sensitive".
12292func (s SavingsPlansCoverageData) String() string {
12293	return awsutil.Prettify(s)
12294}
12295
12296// GoString returns the string representation.
12297//
12298// API parameter values that are decorated as "sensitive" in the API will not
12299// be included in the string output. The member name will be present, but the
12300// value will be replaced with "sensitive".
12301func (s SavingsPlansCoverageData) GoString() string {
12302	return s.String()
12303}
12304
12305// SetCoveragePercentage sets the CoveragePercentage field's value.
12306func (s *SavingsPlansCoverageData) SetCoveragePercentage(v string) *SavingsPlansCoverageData {
12307	s.CoveragePercentage = &v
12308	return s
12309}
12310
12311// SetOnDemandCost sets the OnDemandCost field's value.
12312func (s *SavingsPlansCoverageData) SetOnDemandCost(v string) *SavingsPlansCoverageData {
12313	s.OnDemandCost = &v
12314	return s
12315}
12316
12317// SetSpendCoveredBySavingsPlans sets the SpendCoveredBySavingsPlans field's value.
12318func (s *SavingsPlansCoverageData) SetSpendCoveredBySavingsPlans(v string) *SavingsPlansCoverageData {
12319	s.SpendCoveredBySavingsPlans = &v
12320	return s
12321}
12322
12323// SetTotalCost sets the TotalCost field's value.
12324func (s *SavingsPlansCoverageData) SetTotalCost(v string) *SavingsPlansCoverageData {
12325	s.TotalCost = &v
12326	return s
12327}
12328
12329// The attribute details on a specific Savings Plan.
12330type SavingsPlansDetails struct {
12331	_ struct{} `type:"structure"`
12332
12333	// A group of instance types that Savings Plans applies to.
12334	InstanceFamily *string `type:"string"`
12335
12336	// The unique ID that's used to distinguish Savings Plans from one another.
12337	OfferingId *string `type:"string"`
12338
12339	// A collection of Amazon Web Services resources in a geographic area. Each
12340	// Amazon Web Services Region is isolated and independent of the other Regions.
12341	Region *string `type:"string"`
12342}
12343
12344// String returns the string representation.
12345//
12346// API parameter values that are decorated as "sensitive" in the API will not
12347// be included in the string output. The member name will be present, but the
12348// value will be replaced with "sensitive".
12349func (s SavingsPlansDetails) String() string {
12350	return awsutil.Prettify(s)
12351}
12352
12353// GoString returns the string representation.
12354//
12355// API parameter values that are decorated as "sensitive" in the API will not
12356// be included in the string output. The member name will be present, but the
12357// value will be replaced with "sensitive".
12358func (s SavingsPlansDetails) GoString() string {
12359	return s.String()
12360}
12361
12362// SetInstanceFamily sets the InstanceFamily field's value.
12363func (s *SavingsPlansDetails) SetInstanceFamily(v string) *SavingsPlansDetails {
12364	s.InstanceFamily = &v
12365	return s
12366}
12367
12368// SetOfferingId sets the OfferingId field's value.
12369func (s *SavingsPlansDetails) SetOfferingId(v string) *SavingsPlansDetails {
12370	s.OfferingId = &v
12371	return s
12372}
12373
12374// SetRegion sets the Region field's value.
12375func (s *SavingsPlansDetails) SetRegion(v string) *SavingsPlansDetails {
12376	s.Region = &v
12377	return s
12378}
12379
12380// Contains your request parameters, Savings Plan Recommendations Summary, and
12381// Details.
12382type SavingsPlansPurchaseRecommendation struct {
12383	_ struct{} `type:"structure"`
12384
12385	// The account scope that you want your recommendations for. Amazon Web Services
12386	// calculates recommendations that include the management account and member
12387	// accounts if the value is set to PAYER. If the value is LINKED, recommendations
12388	// are calculated for individual member accounts only.
12389	AccountScope *string `type:"string" enum:"AccountScope"`
12390
12391	// The lookback period in days, used to generate the recommendation.
12392	LookbackPeriodInDays *string `type:"string" enum:"LookbackPeriodInDays"`
12393
12394	// The payment option used to generate the recommendation.
12395	PaymentOption *string `type:"string" enum:"PaymentOption"`
12396
12397	// Details for the Savings Plans we recommend that you purchase to cover existing
12398	// Savings Plans eligible workloads.
12399	SavingsPlansPurchaseRecommendationDetails []*SavingsPlansPurchaseRecommendationDetail `type:"list"`
12400
12401	// Summary metrics for your Savings Plans Recommendations.
12402	SavingsPlansPurchaseRecommendationSummary *SavingsPlansPurchaseRecommendationSummary `type:"structure"`
12403
12404	// The requested Savings Plans recommendation type.
12405	SavingsPlansType *string `type:"string" enum:"SupportedSavingsPlansType"`
12406
12407	// The Savings Plans recommendation term in years. It's used to generate the
12408	// recommendation.
12409	TermInYears *string `type:"string" enum:"TermInYears"`
12410}
12411
12412// String returns the string representation.
12413//
12414// API parameter values that are decorated as "sensitive" in the API will not
12415// be included in the string output. The member name will be present, but the
12416// value will be replaced with "sensitive".
12417func (s SavingsPlansPurchaseRecommendation) String() string {
12418	return awsutil.Prettify(s)
12419}
12420
12421// GoString returns the string representation.
12422//
12423// API parameter values that are decorated as "sensitive" in the API will not
12424// be included in the string output. The member name will be present, but the
12425// value will be replaced with "sensitive".
12426func (s SavingsPlansPurchaseRecommendation) GoString() string {
12427	return s.String()
12428}
12429
12430// SetAccountScope sets the AccountScope field's value.
12431func (s *SavingsPlansPurchaseRecommendation) SetAccountScope(v string) *SavingsPlansPurchaseRecommendation {
12432	s.AccountScope = &v
12433	return s
12434}
12435
12436// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
12437func (s *SavingsPlansPurchaseRecommendation) SetLookbackPeriodInDays(v string) *SavingsPlansPurchaseRecommendation {
12438	s.LookbackPeriodInDays = &v
12439	return s
12440}
12441
12442// SetPaymentOption sets the PaymentOption field's value.
12443func (s *SavingsPlansPurchaseRecommendation) SetPaymentOption(v string) *SavingsPlansPurchaseRecommendation {
12444	s.PaymentOption = &v
12445	return s
12446}
12447
12448// SetSavingsPlansPurchaseRecommendationDetails sets the SavingsPlansPurchaseRecommendationDetails field's value.
12449func (s *SavingsPlansPurchaseRecommendation) SetSavingsPlansPurchaseRecommendationDetails(v []*SavingsPlansPurchaseRecommendationDetail) *SavingsPlansPurchaseRecommendation {
12450	s.SavingsPlansPurchaseRecommendationDetails = v
12451	return s
12452}
12453
12454// SetSavingsPlansPurchaseRecommendationSummary sets the SavingsPlansPurchaseRecommendationSummary field's value.
12455func (s *SavingsPlansPurchaseRecommendation) SetSavingsPlansPurchaseRecommendationSummary(v *SavingsPlansPurchaseRecommendationSummary) *SavingsPlansPurchaseRecommendation {
12456	s.SavingsPlansPurchaseRecommendationSummary = v
12457	return s
12458}
12459
12460// SetSavingsPlansType sets the SavingsPlansType field's value.
12461func (s *SavingsPlansPurchaseRecommendation) SetSavingsPlansType(v string) *SavingsPlansPurchaseRecommendation {
12462	s.SavingsPlansType = &v
12463	return s
12464}
12465
12466// SetTermInYears sets the TermInYears field's value.
12467func (s *SavingsPlansPurchaseRecommendation) SetTermInYears(v string) *SavingsPlansPurchaseRecommendation {
12468	s.TermInYears = &v
12469	return s
12470}
12471
12472// Details for your recommended Savings Plans.
12473type SavingsPlansPurchaseRecommendationDetail struct {
12474	_ struct{} `type:"structure"`
12475
12476	// The AccountID the recommendation is generated for.
12477	AccountId *string `type:"string"`
12478
12479	// The currency code that Amazon Web Services used to generate the recommendations
12480	// and present potential savings.
12481	CurrencyCode *string `type:"string"`
12482
12483	// The average value of hourly On-Demand spend over the lookback period of the
12484	// applicable usage type.
12485	CurrentAverageHourlyOnDemandSpend *string `type:"string"`
12486
12487	// The highest value of hourly On-Demand spend over the lookback period of the
12488	// applicable usage type.
12489	CurrentMaximumHourlyOnDemandSpend *string `type:"string"`
12490
12491	// The lowest value of hourly On-Demand spend over the lookback period of the
12492	// applicable usage type.
12493	CurrentMinimumHourlyOnDemandSpend *string `type:"string"`
12494
12495	// The estimated utilization of the recommended Savings Plans.
12496	EstimatedAverageUtilization *string `type:"string"`
12497
12498	// The estimated monthly savings amount based on the recommended Savings Plans.
12499	EstimatedMonthlySavingsAmount *string `type:"string"`
12500
12501	// The remaining On-Demand cost estimated to not be covered by the recommended
12502	// Savings Plans, over the length of the lookback period.
12503	EstimatedOnDemandCost *string `type:"string"`
12504
12505	// The estimated On-Demand costs you would expect with no additional commitment,
12506	// based on your usage of the selected time period and the Savings Plans you
12507	// own.
12508	EstimatedOnDemandCostWithCurrentCommitment *string `type:"string"`
12509
12510	// The estimated return on investment that's based on the recommended Savings
12511	// Plans that you purchased. This is calculated as estimatedSavingsAmount/ estimatedSPCost*100.
12512	EstimatedROI *string `type:"string"`
12513
12514	// The cost of the recommended Savings Plans over the length of the lookback
12515	// period.
12516	EstimatedSPCost *string `type:"string"`
12517
12518	// The estimated savings amount that's based on the recommended Savings Plans
12519	// over the length of the lookback period.
12520	EstimatedSavingsAmount *string `type:"string"`
12521
12522	// The estimated savings percentage relative to the total cost of applicable
12523	// On-Demand usage over the lookback period.
12524	EstimatedSavingsPercentage *string `type:"string"`
12525
12526	// The recommended hourly commitment level for the Savings Plans type and the
12527	// configuration that's based on the usage during the lookback period.
12528	HourlyCommitmentToPurchase *string `type:"string"`
12529
12530	// Details for your recommended Savings Plans.
12531	SavingsPlansDetails *SavingsPlansDetails `type:"structure"`
12532
12533	// The upfront cost of the recommended Savings Plans, based on the selected
12534	// payment option.
12535	UpfrontCost *string `type:"string"`
12536}
12537
12538// String returns the string representation.
12539//
12540// API parameter values that are decorated as "sensitive" in the API will not
12541// be included in the string output. The member name will be present, but the
12542// value will be replaced with "sensitive".
12543func (s SavingsPlansPurchaseRecommendationDetail) String() string {
12544	return awsutil.Prettify(s)
12545}
12546
12547// GoString returns the string representation.
12548//
12549// API parameter values that are decorated as "sensitive" in the API will not
12550// be included in the string output. The member name will be present, but the
12551// value will be replaced with "sensitive".
12552func (s SavingsPlansPurchaseRecommendationDetail) GoString() string {
12553	return s.String()
12554}
12555
12556// SetAccountId sets the AccountId field's value.
12557func (s *SavingsPlansPurchaseRecommendationDetail) SetAccountId(v string) *SavingsPlansPurchaseRecommendationDetail {
12558	s.AccountId = &v
12559	return s
12560}
12561
12562// SetCurrencyCode sets the CurrencyCode field's value.
12563func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrencyCode(v string) *SavingsPlansPurchaseRecommendationDetail {
12564	s.CurrencyCode = &v
12565	return s
12566}
12567
12568// SetCurrentAverageHourlyOnDemandSpend sets the CurrentAverageHourlyOnDemandSpend field's value.
12569func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrentAverageHourlyOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationDetail {
12570	s.CurrentAverageHourlyOnDemandSpend = &v
12571	return s
12572}
12573
12574// SetCurrentMaximumHourlyOnDemandSpend sets the CurrentMaximumHourlyOnDemandSpend field's value.
12575func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrentMaximumHourlyOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationDetail {
12576	s.CurrentMaximumHourlyOnDemandSpend = &v
12577	return s
12578}
12579
12580// SetCurrentMinimumHourlyOnDemandSpend sets the CurrentMinimumHourlyOnDemandSpend field's value.
12581func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrentMinimumHourlyOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationDetail {
12582	s.CurrentMinimumHourlyOnDemandSpend = &v
12583	return s
12584}
12585
12586// SetEstimatedAverageUtilization sets the EstimatedAverageUtilization field's value.
12587func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedAverageUtilization(v string) *SavingsPlansPurchaseRecommendationDetail {
12588	s.EstimatedAverageUtilization = &v
12589	return s
12590}
12591
12592// SetEstimatedMonthlySavingsAmount sets the EstimatedMonthlySavingsAmount field's value.
12593func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedMonthlySavingsAmount(v string) *SavingsPlansPurchaseRecommendationDetail {
12594	s.EstimatedMonthlySavingsAmount = &v
12595	return s
12596}
12597
12598// SetEstimatedOnDemandCost sets the EstimatedOnDemandCost field's value.
12599func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedOnDemandCost(v string) *SavingsPlansPurchaseRecommendationDetail {
12600	s.EstimatedOnDemandCost = &v
12601	return s
12602}
12603
12604// SetEstimatedOnDemandCostWithCurrentCommitment sets the EstimatedOnDemandCostWithCurrentCommitment field's value.
12605func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedOnDemandCostWithCurrentCommitment(v string) *SavingsPlansPurchaseRecommendationDetail {
12606	s.EstimatedOnDemandCostWithCurrentCommitment = &v
12607	return s
12608}
12609
12610// SetEstimatedROI sets the EstimatedROI field's value.
12611func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedROI(v string) *SavingsPlansPurchaseRecommendationDetail {
12612	s.EstimatedROI = &v
12613	return s
12614}
12615
12616// SetEstimatedSPCost sets the EstimatedSPCost field's value.
12617func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedSPCost(v string) *SavingsPlansPurchaseRecommendationDetail {
12618	s.EstimatedSPCost = &v
12619	return s
12620}
12621
12622// SetEstimatedSavingsAmount sets the EstimatedSavingsAmount field's value.
12623func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedSavingsAmount(v string) *SavingsPlansPurchaseRecommendationDetail {
12624	s.EstimatedSavingsAmount = &v
12625	return s
12626}
12627
12628// SetEstimatedSavingsPercentage sets the EstimatedSavingsPercentage field's value.
12629func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedSavingsPercentage(v string) *SavingsPlansPurchaseRecommendationDetail {
12630	s.EstimatedSavingsPercentage = &v
12631	return s
12632}
12633
12634// SetHourlyCommitmentToPurchase sets the HourlyCommitmentToPurchase field's value.
12635func (s *SavingsPlansPurchaseRecommendationDetail) SetHourlyCommitmentToPurchase(v string) *SavingsPlansPurchaseRecommendationDetail {
12636	s.HourlyCommitmentToPurchase = &v
12637	return s
12638}
12639
12640// SetSavingsPlansDetails sets the SavingsPlansDetails field's value.
12641func (s *SavingsPlansPurchaseRecommendationDetail) SetSavingsPlansDetails(v *SavingsPlansDetails) *SavingsPlansPurchaseRecommendationDetail {
12642	s.SavingsPlansDetails = v
12643	return s
12644}
12645
12646// SetUpfrontCost sets the UpfrontCost field's value.
12647func (s *SavingsPlansPurchaseRecommendationDetail) SetUpfrontCost(v string) *SavingsPlansPurchaseRecommendationDetail {
12648	s.UpfrontCost = &v
12649	return s
12650}
12651
12652// Metadata about your Savings Plans Purchase Recommendations.
12653type SavingsPlansPurchaseRecommendationMetadata struct {
12654	_ struct{} `type:"structure"`
12655
12656	// Additional metadata that might be applicable to the recommendation.
12657	AdditionalMetadata *string `type:"string"`
12658
12659	// The timestamp showing when the recommendations were generated.
12660	GenerationTimestamp *string `type:"string"`
12661
12662	// The unique identifier for the recommendation set.
12663	RecommendationId *string `type:"string"`
12664}
12665
12666// String returns the string representation.
12667//
12668// API parameter values that are decorated as "sensitive" in the API will not
12669// be included in the string output. The member name will be present, but the
12670// value will be replaced with "sensitive".
12671func (s SavingsPlansPurchaseRecommendationMetadata) String() string {
12672	return awsutil.Prettify(s)
12673}
12674
12675// GoString returns the string representation.
12676//
12677// API parameter values that are decorated as "sensitive" in the API will not
12678// be included in the string output. The member name will be present, but the
12679// value will be replaced with "sensitive".
12680func (s SavingsPlansPurchaseRecommendationMetadata) GoString() string {
12681	return s.String()
12682}
12683
12684// SetAdditionalMetadata sets the AdditionalMetadata field's value.
12685func (s *SavingsPlansPurchaseRecommendationMetadata) SetAdditionalMetadata(v string) *SavingsPlansPurchaseRecommendationMetadata {
12686	s.AdditionalMetadata = &v
12687	return s
12688}
12689
12690// SetGenerationTimestamp sets the GenerationTimestamp field's value.
12691func (s *SavingsPlansPurchaseRecommendationMetadata) SetGenerationTimestamp(v string) *SavingsPlansPurchaseRecommendationMetadata {
12692	s.GenerationTimestamp = &v
12693	return s
12694}
12695
12696// SetRecommendationId sets the RecommendationId field's value.
12697func (s *SavingsPlansPurchaseRecommendationMetadata) SetRecommendationId(v string) *SavingsPlansPurchaseRecommendationMetadata {
12698	s.RecommendationId = &v
12699	return s
12700}
12701
12702// Summary metrics for your Savings Plans Purchase Recommendations.
12703type SavingsPlansPurchaseRecommendationSummary struct {
12704	_ struct{} `type:"structure"`
12705
12706	// The currency code that Amazon Web Services used to generate the recommendations
12707	// and present potential savings.
12708	CurrencyCode *string `type:"string"`
12709
12710	// The current total on demand spend of the applicable usage types over the
12711	// lookback period.
12712	CurrentOnDemandSpend *string `type:"string"`
12713
12714	// The recommended Savings Plans cost on a daily (24 hourly) basis.
12715	DailyCommitmentToPurchase *string `type:"string"`
12716
12717	// The estimated monthly savings amount that's based on the recommended Savings
12718	// Plans purchase.
12719	EstimatedMonthlySavingsAmount *string `type:"string"`
12720
12721	// The estimated On-Demand costs you would expect with no additional commitment.
12722	// It's based on your usage of the selected time period and the Savings Plans
12723	// you own.
12724	EstimatedOnDemandCostWithCurrentCommitment *string `type:"string"`
12725
12726	// The estimated return on investment that's based on the recommended Savings
12727	// Plans and estimated savings.
12728	EstimatedROI *string `type:"string"`
12729
12730	// The estimated total savings over the lookback period, based on the purchase
12731	// of the recommended Savings Plans.
12732	EstimatedSavingsAmount *string `type:"string"`
12733
12734	// The estimated savings relative to the total cost of On-Demand usage, over
12735	// the lookback period. This is calculated as estimatedSavingsAmount/ CurrentOnDemandSpend*100.
12736	EstimatedSavingsPercentage *string `type:"string"`
12737
12738	// The estimated total cost of the usage after purchasing the recommended Savings
12739	// Plans. This is a sum of the cost of Savings Plans during this term, and the
12740	// remaining On-Demand usage.
12741	EstimatedTotalCost *string `type:"string"`
12742
12743	// The recommended hourly commitment that's based on the recommendation parameters.
12744	HourlyCommitmentToPurchase *string `type:"string"`
12745
12746	// The aggregate number of Savings Plans recommendations that exist for your
12747	// account.
12748	TotalRecommendationCount *string `type:"string"`
12749}
12750
12751// String returns the string representation.
12752//
12753// API parameter values that are decorated as "sensitive" in the API will not
12754// be included in the string output. The member name will be present, but the
12755// value will be replaced with "sensitive".
12756func (s SavingsPlansPurchaseRecommendationSummary) String() string {
12757	return awsutil.Prettify(s)
12758}
12759
12760// GoString returns the string representation.
12761//
12762// API parameter values that are decorated as "sensitive" in the API will not
12763// be included in the string output. The member name will be present, but the
12764// value will be replaced with "sensitive".
12765func (s SavingsPlansPurchaseRecommendationSummary) GoString() string {
12766	return s.String()
12767}
12768
12769// SetCurrencyCode sets the CurrencyCode field's value.
12770func (s *SavingsPlansPurchaseRecommendationSummary) SetCurrencyCode(v string) *SavingsPlansPurchaseRecommendationSummary {
12771	s.CurrencyCode = &v
12772	return s
12773}
12774
12775// SetCurrentOnDemandSpend sets the CurrentOnDemandSpend field's value.
12776func (s *SavingsPlansPurchaseRecommendationSummary) SetCurrentOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationSummary {
12777	s.CurrentOnDemandSpend = &v
12778	return s
12779}
12780
12781// SetDailyCommitmentToPurchase sets the DailyCommitmentToPurchase field's value.
12782func (s *SavingsPlansPurchaseRecommendationSummary) SetDailyCommitmentToPurchase(v string) *SavingsPlansPurchaseRecommendationSummary {
12783	s.DailyCommitmentToPurchase = &v
12784	return s
12785}
12786
12787// SetEstimatedMonthlySavingsAmount sets the EstimatedMonthlySavingsAmount field's value.
12788func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedMonthlySavingsAmount(v string) *SavingsPlansPurchaseRecommendationSummary {
12789	s.EstimatedMonthlySavingsAmount = &v
12790	return s
12791}
12792
12793// SetEstimatedOnDemandCostWithCurrentCommitment sets the EstimatedOnDemandCostWithCurrentCommitment field's value.
12794func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedOnDemandCostWithCurrentCommitment(v string) *SavingsPlansPurchaseRecommendationSummary {
12795	s.EstimatedOnDemandCostWithCurrentCommitment = &v
12796	return s
12797}
12798
12799// SetEstimatedROI sets the EstimatedROI field's value.
12800func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedROI(v string) *SavingsPlansPurchaseRecommendationSummary {
12801	s.EstimatedROI = &v
12802	return s
12803}
12804
12805// SetEstimatedSavingsAmount sets the EstimatedSavingsAmount field's value.
12806func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedSavingsAmount(v string) *SavingsPlansPurchaseRecommendationSummary {
12807	s.EstimatedSavingsAmount = &v
12808	return s
12809}
12810
12811// SetEstimatedSavingsPercentage sets the EstimatedSavingsPercentage field's value.
12812func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedSavingsPercentage(v string) *SavingsPlansPurchaseRecommendationSummary {
12813	s.EstimatedSavingsPercentage = &v
12814	return s
12815}
12816
12817// SetEstimatedTotalCost sets the EstimatedTotalCost field's value.
12818func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedTotalCost(v string) *SavingsPlansPurchaseRecommendationSummary {
12819	s.EstimatedTotalCost = &v
12820	return s
12821}
12822
12823// SetHourlyCommitmentToPurchase sets the HourlyCommitmentToPurchase field's value.
12824func (s *SavingsPlansPurchaseRecommendationSummary) SetHourlyCommitmentToPurchase(v string) *SavingsPlansPurchaseRecommendationSummary {
12825	s.HourlyCommitmentToPurchase = &v
12826	return s
12827}
12828
12829// SetTotalRecommendationCount sets the TotalRecommendationCount field's value.
12830func (s *SavingsPlansPurchaseRecommendationSummary) SetTotalRecommendationCount(v string) *SavingsPlansPurchaseRecommendationSummary {
12831	s.TotalRecommendationCount = &v
12832	return s
12833}
12834
12835// The amount of savings that you're accumulating, against the public On-Demand
12836// rate of the usage accrued in an account.
12837type SavingsPlansSavings struct {
12838	_ struct{} `type:"structure"`
12839
12840	// The savings amount that you're accumulating for the usage that's covered
12841	// by a Savings Plans, when compared to the On-Demand equivalent of the same
12842	// usage.
12843	NetSavings *string `type:"string"`
12844
12845	// How much the amount that the usage would have cost if it was accrued at the
12846	// On-Demand rate.
12847	OnDemandCostEquivalent *string `type:"string"`
12848}
12849
12850// String returns the string representation.
12851//
12852// API parameter values that are decorated as "sensitive" in the API will not
12853// be included in the string output. The member name will be present, but the
12854// value will be replaced with "sensitive".
12855func (s SavingsPlansSavings) String() string {
12856	return awsutil.Prettify(s)
12857}
12858
12859// GoString returns the string representation.
12860//
12861// API parameter values that are decorated as "sensitive" in the API will not
12862// be included in the string output. The member name will be present, but the
12863// value will be replaced with "sensitive".
12864func (s SavingsPlansSavings) GoString() string {
12865	return s.String()
12866}
12867
12868// SetNetSavings sets the NetSavings field's value.
12869func (s *SavingsPlansSavings) SetNetSavings(v string) *SavingsPlansSavings {
12870	s.NetSavings = &v
12871	return s
12872}
12873
12874// SetOnDemandCostEquivalent sets the OnDemandCostEquivalent field's value.
12875func (s *SavingsPlansSavings) SetOnDemandCostEquivalent(v string) *SavingsPlansSavings {
12876	s.OnDemandCostEquivalent = &v
12877	return s
12878}
12879
12880// The measurement of how well you're using your existing Savings Plans.
12881type SavingsPlansUtilization struct {
12882	_ struct{} `type:"structure"`
12883
12884	// The total amount of Savings Plans commitment that's been purchased in an
12885	// account (or set of accounts).
12886	TotalCommitment *string `type:"string"`
12887
12888	// The amount of your Savings Plans commitment that wasn't consumed from Savings
12889	// Plans eligible usage in a specific period.
12890	UnusedCommitment *string `type:"string"`
12891
12892	// The amount of your Savings Plans commitment that was consumed from Savings
12893	// Plans eligible usage in a specific period.
12894	UsedCommitment *string `type:"string"`
12895
12896	// The amount of UsedCommitment divided by the TotalCommitment for your Savings
12897	// Plans.
12898	UtilizationPercentage *string `type:"string"`
12899}
12900
12901// String returns the string representation.
12902//
12903// API parameter values that are decorated as "sensitive" in the API will not
12904// be included in the string output. The member name will be present, but the
12905// value will be replaced with "sensitive".
12906func (s SavingsPlansUtilization) String() string {
12907	return awsutil.Prettify(s)
12908}
12909
12910// GoString returns the string representation.
12911//
12912// API parameter values that are decorated as "sensitive" in the API will not
12913// be included in the string output. The member name will be present, but the
12914// value will be replaced with "sensitive".
12915func (s SavingsPlansUtilization) GoString() string {
12916	return s.String()
12917}
12918
12919// SetTotalCommitment sets the TotalCommitment field's value.
12920func (s *SavingsPlansUtilization) SetTotalCommitment(v string) *SavingsPlansUtilization {
12921	s.TotalCommitment = &v
12922	return s
12923}
12924
12925// SetUnusedCommitment sets the UnusedCommitment field's value.
12926func (s *SavingsPlansUtilization) SetUnusedCommitment(v string) *SavingsPlansUtilization {
12927	s.UnusedCommitment = &v
12928	return s
12929}
12930
12931// SetUsedCommitment sets the UsedCommitment field's value.
12932func (s *SavingsPlansUtilization) SetUsedCommitment(v string) *SavingsPlansUtilization {
12933	s.UsedCommitment = &v
12934	return s
12935}
12936
12937// SetUtilizationPercentage sets the UtilizationPercentage field's value.
12938func (s *SavingsPlansUtilization) SetUtilizationPercentage(v string) *SavingsPlansUtilization {
12939	s.UtilizationPercentage = &v
12940	return s
12941}
12942
12943// The aggregated utilization metrics for your Savings Plans usage.
12944type SavingsPlansUtilizationAggregates struct {
12945	_ struct{} `type:"structure"`
12946
12947	// The total amortized commitment for a Savings Plans. This includes the sum
12948	// of the upfront and recurring Savings Plans fees.
12949	AmortizedCommitment *SavingsPlansAmortizedCommitment `type:"structure"`
12950
12951	// The amount saved by using existing Savings Plans. Savings returns both net
12952	// savings from Savings Plans, as well as the onDemandCostEquivalent of the
12953	// Savings Plans when considering the utilization rate.
12954	Savings *SavingsPlansSavings `type:"structure"`
12955
12956	// A ratio of your effectiveness of using existing Savings Plans to apply to
12957	// workloads that are Savings Plans eligible.
12958	//
12959	// Utilization is a required field
12960	Utilization *SavingsPlansUtilization `type:"structure" required:"true"`
12961}
12962
12963// String returns the string representation.
12964//
12965// API parameter values that are decorated as "sensitive" in the API will not
12966// be included in the string output. The member name will be present, but the
12967// value will be replaced with "sensitive".
12968func (s SavingsPlansUtilizationAggregates) String() string {
12969	return awsutil.Prettify(s)
12970}
12971
12972// GoString returns the string representation.
12973//
12974// API parameter values that are decorated as "sensitive" in the API will not
12975// be included in the string output. The member name will be present, but the
12976// value will be replaced with "sensitive".
12977func (s SavingsPlansUtilizationAggregates) GoString() string {
12978	return s.String()
12979}
12980
12981// SetAmortizedCommitment sets the AmortizedCommitment field's value.
12982func (s *SavingsPlansUtilizationAggregates) SetAmortizedCommitment(v *SavingsPlansAmortizedCommitment) *SavingsPlansUtilizationAggregates {
12983	s.AmortizedCommitment = v
12984	return s
12985}
12986
12987// SetSavings sets the Savings field's value.
12988func (s *SavingsPlansUtilizationAggregates) SetSavings(v *SavingsPlansSavings) *SavingsPlansUtilizationAggregates {
12989	s.Savings = v
12990	return s
12991}
12992
12993// SetUtilization sets the Utilization field's value.
12994func (s *SavingsPlansUtilizationAggregates) SetUtilization(v *SavingsPlansUtilization) *SavingsPlansUtilizationAggregates {
12995	s.Utilization = v
12996	return s
12997}
12998
12999// The amount of Savings Plans utilization, in hours.
13000type SavingsPlansUtilizationByTime struct {
13001	_ struct{} `type:"structure"`
13002
13003	// The total amortized commitment for a Savings Plans. This includes the sum
13004	// of the upfront and recurring Savings Plans fees.
13005	AmortizedCommitment *SavingsPlansAmortizedCommitment `type:"structure"`
13006
13007	// The amount saved by using existing Savings Plans. Savings returns both net
13008	// savings from Savings Plans as well as the onDemandCostEquivalent of the Savings
13009	// Plans when considering the utilization rate.
13010	Savings *SavingsPlansSavings `type:"structure"`
13011
13012	// The time period of the request.
13013	//
13014	// TimePeriod is a required field
13015	TimePeriod *DateInterval `type:"structure" required:"true"`
13016
13017	// A ratio of your effectiveness of using existing Savings Plans to apply to
13018	// workloads that are Savings Plans eligible.
13019	//
13020	// Utilization is a required field
13021	Utilization *SavingsPlansUtilization `type:"structure" required:"true"`
13022}
13023
13024// String returns the string representation.
13025//
13026// API parameter values that are decorated as "sensitive" in the API will not
13027// be included in the string output. The member name will be present, but the
13028// value will be replaced with "sensitive".
13029func (s SavingsPlansUtilizationByTime) String() string {
13030	return awsutil.Prettify(s)
13031}
13032
13033// GoString returns the string representation.
13034//
13035// API parameter values that are decorated as "sensitive" in the API will not
13036// be included in the string output. The member name will be present, but the
13037// value will be replaced with "sensitive".
13038func (s SavingsPlansUtilizationByTime) GoString() string {
13039	return s.String()
13040}
13041
13042// SetAmortizedCommitment sets the AmortizedCommitment field's value.
13043func (s *SavingsPlansUtilizationByTime) SetAmortizedCommitment(v *SavingsPlansAmortizedCommitment) *SavingsPlansUtilizationByTime {
13044	s.AmortizedCommitment = v
13045	return s
13046}
13047
13048// SetSavings sets the Savings field's value.
13049func (s *SavingsPlansUtilizationByTime) SetSavings(v *SavingsPlansSavings) *SavingsPlansUtilizationByTime {
13050	s.Savings = v
13051	return s
13052}
13053
13054// SetTimePeriod sets the TimePeriod field's value.
13055func (s *SavingsPlansUtilizationByTime) SetTimePeriod(v *DateInterval) *SavingsPlansUtilizationByTime {
13056	s.TimePeriod = v
13057	return s
13058}
13059
13060// SetUtilization sets the Utilization field's value.
13061func (s *SavingsPlansUtilizationByTime) SetUtilization(v *SavingsPlansUtilization) *SavingsPlansUtilizationByTime {
13062	s.Utilization = v
13063	return s
13064}
13065
13066// A single daily or monthly Savings Plans utilization rate, and details for
13067// your account. A management account in an organization have access to member
13068// accounts. You can use GetDimensionValues to determine the possible dimension
13069// values.
13070type SavingsPlansUtilizationDetail struct {
13071	_ struct{} `type:"structure"`
13072
13073	// The total amortized commitment for a Savings Plans. Includes the sum of the
13074	// upfront and recurring Savings Plans fees.
13075	AmortizedCommitment *SavingsPlansAmortizedCommitment `type:"structure"`
13076
13077	// The attribute that applies to a specific Dimension.
13078	Attributes map[string]*string `type:"map"`
13079
13080	// The amount saved by using existing Savings Plans. Savings returns both net
13081	// savings from savings plans as well as the onDemandCostEquivalent of the Savings
13082	// Plans when considering the utilization rate.
13083	Savings *SavingsPlansSavings `type:"structure"`
13084
13085	// The unique Amazon Resource Name (ARN) for a particular Savings Plan.
13086	SavingsPlanArn *string `type:"string"`
13087
13088	// A ratio of your effectiveness of using existing Savings Plans to apply to
13089	// workloads that are Savings Plans eligible.
13090	Utilization *SavingsPlansUtilization `type:"structure"`
13091}
13092
13093// String returns the string representation.
13094//
13095// API parameter values that are decorated as "sensitive" in the API will not
13096// be included in the string output. The member name will be present, but the
13097// value will be replaced with "sensitive".
13098func (s SavingsPlansUtilizationDetail) String() string {
13099	return awsutil.Prettify(s)
13100}
13101
13102// GoString returns the string representation.
13103//
13104// API parameter values that are decorated as "sensitive" in the API will not
13105// be included in the string output. The member name will be present, but the
13106// value will be replaced with "sensitive".
13107func (s SavingsPlansUtilizationDetail) GoString() string {
13108	return s.String()
13109}
13110
13111// SetAmortizedCommitment sets the AmortizedCommitment field's value.
13112func (s *SavingsPlansUtilizationDetail) SetAmortizedCommitment(v *SavingsPlansAmortizedCommitment) *SavingsPlansUtilizationDetail {
13113	s.AmortizedCommitment = v
13114	return s
13115}
13116
13117// SetAttributes sets the Attributes field's value.
13118func (s *SavingsPlansUtilizationDetail) SetAttributes(v map[string]*string) *SavingsPlansUtilizationDetail {
13119	s.Attributes = v
13120	return s
13121}
13122
13123// SetSavings sets the Savings field's value.
13124func (s *SavingsPlansUtilizationDetail) SetSavings(v *SavingsPlansSavings) *SavingsPlansUtilizationDetail {
13125	s.Savings = v
13126	return s
13127}
13128
13129// SetSavingsPlanArn sets the SavingsPlanArn field's value.
13130func (s *SavingsPlansUtilizationDetail) SetSavingsPlanArn(v string) *SavingsPlansUtilizationDetail {
13131	s.SavingsPlanArn = &v
13132	return s
13133}
13134
13135// SetUtilization sets the Utilization field's value.
13136func (s *SavingsPlansUtilizationDetail) SetUtilization(v *SavingsPlansUtilization) *SavingsPlansUtilizationDetail {
13137	s.Utilization = v
13138	return s
13139}
13140
13141// You've reached the limit on the number of resources you can create, or exceeded
13142// the size of an individual resource.
13143type ServiceQuotaExceededException struct {
13144	_            struct{}                  `type:"structure"`
13145	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
13146
13147	Message_ *string `locationName:"Message" type:"string"`
13148}
13149
13150// String returns the string representation.
13151//
13152// API parameter values that are decorated as "sensitive" in the API will not
13153// be included in the string output. The member name will be present, but the
13154// value will be replaced with "sensitive".
13155func (s ServiceQuotaExceededException) String() string {
13156	return awsutil.Prettify(s)
13157}
13158
13159// GoString returns the string representation.
13160//
13161// API parameter values that are decorated as "sensitive" in the API will not
13162// be included in the string output. The member name will be present, but the
13163// value will be replaced with "sensitive".
13164func (s ServiceQuotaExceededException) GoString() string {
13165	return s.String()
13166}
13167
13168func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
13169	return &ServiceQuotaExceededException{
13170		RespMetadata: v,
13171	}
13172}
13173
13174// Code returns the exception type name.
13175func (s *ServiceQuotaExceededException) Code() string {
13176	return "ServiceQuotaExceededException"
13177}
13178
13179// Message returns the exception's message.
13180func (s *ServiceQuotaExceededException) Message() string {
13181	if s.Message_ != nil {
13182		return *s.Message_
13183	}
13184	return ""
13185}
13186
13187// OrigErr always returns nil, satisfies awserr.Error interface.
13188func (s *ServiceQuotaExceededException) OrigErr() error {
13189	return nil
13190}
13191
13192func (s *ServiceQuotaExceededException) Error() string {
13193	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
13194}
13195
13196// Status code returns the HTTP status code for the request's response error.
13197func (s *ServiceQuotaExceededException) StatusCode() int {
13198	return s.RespMetadata.StatusCode
13199}
13200
13201// RequestID returns the service's response RequestID for request.
13202func (s *ServiceQuotaExceededException) RequestID() string {
13203	return s.RespMetadata.RequestID
13204}
13205
13206// Hardware specifications for the service that you want recommendations for.
13207type ServiceSpecification struct {
13208	_ struct{} `type:"structure"`
13209
13210	// The Amazon EC2 hardware specifications that you want Amazon Web Services
13211	// to provide recommendations for.
13212	EC2Specification *EC2Specification `type:"structure"`
13213}
13214
13215// String returns the string representation.
13216//
13217// API parameter values that are decorated as "sensitive" in the API will not
13218// be included in the string output. The member name will be present, but the
13219// value will be replaced with "sensitive".
13220func (s ServiceSpecification) String() string {
13221	return awsutil.Prettify(s)
13222}
13223
13224// GoString returns the string representation.
13225//
13226// API parameter values that are decorated as "sensitive" in the API will not
13227// be included in the string output. The member name will be present, but the
13228// value will be replaced with "sensitive".
13229func (s ServiceSpecification) GoString() string {
13230	return s.String()
13231}
13232
13233// SetEC2Specification sets the EC2Specification field's value.
13234func (s *ServiceSpecification) SetEC2Specification(v *EC2Specification) *ServiceSpecification {
13235	s.EC2Specification = v
13236	return s
13237}
13238
13239// The details of how to sort the data.
13240type SortDefinition struct {
13241	_ struct{} `type:"structure"`
13242
13243	// The key that's used to sort the data.
13244	//
13245	// Key is a required field
13246	Key *string `type:"string" required:"true"`
13247
13248	// The order that's used to sort the data.
13249	SortOrder *string `type:"string" enum:"SortOrder"`
13250}
13251
13252// String returns the string representation.
13253//
13254// API parameter values that are decorated as "sensitive" in the API will not
13255// be included in the string output. The member name will be present, but the
13256// value will be replaced with "sensitive".
13257func (s SortDefinition) String() string {
13258	return awsutil.Prettify(s)
13259}
13260
13261// GoString returns the string representation.
13262//
13263// API parameter values that are decorated as "sensitive" in the API will not
13264// be included in the string output. The member name will be present, but the
13265// value will be replaced with "sensitive".
13266func (s SortDefinition) GoString() string {
13267	return s.String()
13268}
13269
13270// Validate inspects the fields of the type to determine if they are valid.
13271func (s *SortDefinition) Validate() error {
13272	invalidParams := request.ErrInvalidParams{Context: "SortDefinition"}
13273	if s.Key == nil {
13274		invalidParams.Add(request.NewErrParamRequired("Key"))
13275	}
13276
13277	if invalidParams.Len() > 0 {
13278		return invalidParams
13279	}
13280	return nil
13281}
13282
13283// SetKey sets the Key field's value.
13284func (s *SortDefinition) SetKey(v string) *SortDefinition {
13285	s.Key = &v
13286	return s
13287}
13288
13289// SetSortOrder sets the SortOrder field's value.
13290func (s *SortDefinition) SetSortOrder(v string) *SortDefinition {
13291	s.SortOrder = &v
13292	return s
13293}
13294
13295// The recipient of AnomalySubscription notifications.
13296type Subscriber struct {
13297	_ struct{} `type:"structure"`
13298
13299	// The email address or SNS Amazon Resource Name (ARN). This depends on the
13300	// Type.
13301	Address *string `min:"6" type:"string"`
13302
13303	// Indicates if the subscriber accepts the notifications.
13304	Status *string `type:"string" enum:"SubscriberStatus"`
13305
13306	// The notification delivery channel.
13307	Type *string `type:"string" enum:"SubscriberType"`
13308}
13309
13310// String returns the string representation.
13311//
13312// API parameter values that are decorated as "sensitive" in the API will not
13313// be included in the string output. The member name will be present, but the
13314// value will be replaced with "sensitive".
13315func (s Subscriber) String() string {
13316	return awsutil.Prettify(s)
13317}
13318
13319// GoString returns the string representation.
13320//
13321// API parameter values that are decorated as "sensitive" in the API will not
13322// be included in the string output. The member name will be present, but the
13323// value will be replaced with "sensitive".
13324func (s Subscriber) GoString() string {
13325	return s.String()
13326}
13327
13328// Validate inspects the fields of the type to determine if they are valid.
13329func (s *Subscriber) Validate() error {
13330	invalidParams := request.ErrInvalidParams{Context: "Subscriber"}
13331	if s.Address != nil && len(*s.Address) < 6 {
13332		invalidParams.Add(request.NewErrParamMinLen("Address", 6))
13333	}
13334
13335	if invalidParams.Len() > 0 {
13336		return invalidParams
13337	}
13338	return nil
13339}
13340
13341// SetAddress sets the Address field's value.
13342func (s *Subscriber) SetAddress(v string) *Subscriber {
13343	s.Address = &v
13344	return s
13345}
13346
13347// SetStatus sets the Status field's value.
13348func (s *Subscriber) SetStatus(v string) *Subscriber {
13349	s.Status = &v
13350	return s
13351}
13352
13353// SetType sets the Type field's value.
13354func (s *Subscriber) SetType(v string) *Subscriber {
13355	s.Type = &v
13356	return s
13357}
13358
13359// The values that are available for a tag.
13360//
13361// If Values and Key aren't specified, the ABSENT MatchOption is applied to
13362// all tags. That is, it's filtered on resources with no tags.
13363//
13364// If Values is provided and Key isn't specified, the ABSENT MatchOption is
13365// applied to the tag Key only. That is, it's filtered on resources without
13366// the given tag key.
13367type TagValues struct {
13368	_ struct{} `type:"structure"`
13369
13370	// The key for the tag.
13371	Key *string `type:"string"`
13372
13373	// The match options that you can use to filter your results. MatchOptions is
13374	// only applicable for actions related to Cost Category. The default values
13375	// for MatchOptions are EQUALS and CASE_SENSITIVE.
13376	MatchOptions []*string `type:"list"`
13377
13378	// The specific value of the tag.
13379	Values []*string `type:"list"`
13380}
13381
13382// String returns the string representation.
13383//
13384// API parameter values that are decorated as "sensitive" in the API will not
13385// be included in the string output. The member name will be present, but the
13386// value will be replaced with "sensitive".
13387func (s TagValues) String() string {
13388	return awsutil.Prettify(s)
13389}
13390
13391// GoString returns the string representation.
13392//
13393// API parameter values that are decorated as "sensitive" in the API will not
13394// be included in the string output. The member name will be present, but the
13395// value will be replaced with "sensitive".
13396func (s TagValues) GoString() string {
13397	return s.String()
13398}
13399
13400// SetKey sets the Key field's value.
13401func (s *TagValues) SetKey(v string) *TagValues {
13402	s.Key = &v
13403	return s
13404}
13405
13406// SetMatchOptions sets the MatchOptions field's value.
13407func (s *TagValues) SetMatchOptions(v []*string) *TagValues {
13408	s.MatchOptions = v
13409	return s
13410}
13411
13412// SetValues sets the Values field's value.
13413func (s *TagValues) SetValues(v []*string) *TagValues {
13414	s.Values = v
13415	return s
13416}
13417
13418// Details on recommended instance.
13419type TargetInstance struct {
13420	_ struct{} `type:"structure"`
13421
13422	// The currency code that Amazon Web Services used to calculate the costs for
13423	// this instance.
13424	CurrencyCode *string `type:"string"`
13425
13426	// Determines whether this recommendation is the defaulted Amazon Web Services
13427	// recommendation.
13428	DefaultTargetInstance *bool `type:"boolean"`
13429
13430	// The expected cost to operate this instance type on a monthly basis.
13431	EstimatedMonthlyCost *string `type:"string"`
13432
13433	// The estimated savings that result from modification, on a monthly basis.
13434	EstimatedMonthlySavings *string `type:"string"`
13435
13436	// The expected utilization metrics for target instance type.
13437	ExpectedResourceUtilization *ResourceUtilization `type:"structure"`
13438
13439	// Explains the actions you might need to take in order to successfully migrate
13440	// your workloads from the current instance type to the recommended instance
13441	// type.
13442	PlatformDifferences []*string `type:"list"`
13443
13444	// Details on the target instance type.
13445	ResourceDetails *ResourceDetails `type:"structure"`
13446}
13447
13448// String returns the string representation.
13449//
13450// API parameter values that are decorated as "sensitive" in the API will not
13451// be included in the string output. The member name will be present, but the
13452// value will be replaced with "sensitive".
13453func (s TargetInstance) String() string {
13454	return awsutil.Prettify(s)
13455}
13456
13457// GoString returns the string representation.
13458//
13459// API parameter values that are decorated as "sensitive" in the API will not
13460// be included in the string output. The member name will be present, but the
13461// value will be replaced with "sensitive".
13462func (s TargetInstance) GoString() string {
13463	return s.String()
13464}
13465
13466// SetCurrencyCode sets the CurrencyCode field's value.
13467func (s *TargetInstance) SetCurrencyCode(v string) *TargetInstance {
13468	s.CurrencyCode = &v
13469	return s
13470}
13471
13472// SetDefaultTargetInstance sets the DefaultTargetInstance field's value.
13473func (s *TargetInstance) SetDefaultTargetInstance(v bool) *TargetInstance {
13474	s.DefaultTargetInstance = &v
13475	return s
13476}
13477
13478// SetEstimatedMonthlyCost sets the EstimatedMonthlyCost field's value.
13479func (s *TargetInstance) SetEstimatedMonthlyCost(v string) *TargetInstance {
13480	s.EstimatedMonthlyCost = &v
13481	return s
13482}
13483
13484// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
13485func (s *TargetInstance) SetEstimatedMonthlySavings(v string) *TargetInstance {
13486	s.EstimatedMonthlySavings = &v
13487	return s
13488}
13489
13490// SetExpectedResourceUtilization sets the ExpectedResourceUtilization field's value.
13491func (s *TargetInstance) SetExpectedResourceUtilization(v *ResourceUtilization) *TargetInstance {
13492	s.ExpectedResourceUtilization = v
13493	return s
13494}
13495
13496// SetPlatformDifferences sets the PlatformDifferences field's value.
13497func (s *TargetInstance) SetPlatformDifferences(v []*string) *TargetInstance {
13498	s.PlatformDifferences = v
13499	return s
13500}
13501
13502// SetResourceDetails sets the ResourceDetails field's value.
13503func (s *TargetInstance) SetResourceDetails(v *ResourceDetails) *TargetInstance {
13504	s.ResourceDetails = v
13505	return s
13506}
13507
13508// Details on termination recommendation.
13509type TerminateRecommendationDetail struct {
13510	_ struct{} `type:"structure"`
13511
13512	// The currency code that Amazon Web Services used to calculate the costs for
13513	// this instance.
13514	CurrencyCode *string `type:"string"`
13515
13516	// The estimated savings that result from modification, on a monthly basis.
13517	EstimatedMonthlySavings *string `type:"string"`
13518}
13519
13520// String returns the string representation.
13521//
13522// API parameter values that are decorated as "sensitive" in the API will not
13523// be included in the string output. The member name will be present, but the
13524// value will be replaced with "sensitive".
13525func (s TerminateRecommendationDetail) String() string {
13526	return awsutil.Prettify(s)
13527}
13528
13529// GoString returns the string representation.
13530//
13531// API parameter values that are decorated as "sensitive" in the API will not
13532// be included in the string output. The member name will be present, but the
13533// value will be replaced with "sensitive".
13534func (s TerminateRecommendationDetail) GoString() string {
13535	return s.String()
13536}
13537
13538// SetCurrencyCode sets the CurrencyCode field's value.
13539func (s *TerminateRecommendationDetail) SetCurrencyCode(v string) *TerminateRecommendationDetail {
13540	s.CurrencyCode = &v
13541	return s
13542}
13543
13544// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
13545func (s *TerminateRecommendationDetail) SetEstimatedMonthlySavings(v string) *TerminateRecommendationDetail {
13546	s.EstimatedMonthlySavings = &v
13547	return s
13548}
13549
13550// Filters cost anomalies based on the total impact.
13551type TotalImpactFilter struct {
13552	_ struct{} `type:"structure"`
13553
13554	// The upper bound dollar value that's used in the filter.
13555	EndValue *float64 `type:"double"`
13556
13557	// The comparing value that's used in the filter.
13558	//
13559	// NumericOperator is a required field
13560	NumericOperator *string `type:"string" required:"true" enum:"NumericOperator"`
13561
13562	// The lower bound dollar value that's used in the filter.
13563	//
13564	// StartValue is a required field
13565	StartValue *float64 `type:"double" required:"true"`
13566}
13567
13568// String returns the string representation.
13569//
13570// API parameter values that are decorated as "sensitive" in the API will not
13571// be included in the string output. The member name will be present, but the
13572// value will be replaced with "sensitive".
13573func (s TotalImpactFilter) String() string {
13574	return awsutil.Prettify(s)
13575}
13576
13577// GoString returns the string representation.
13578//
13579// API parameter values that are decorated as "sensitive" in the API will not
13580// be included in the string output. The member name will be present, but the
13581// value will be replaced with "sensitive".
13582func (s TotalImpactFilter) GoString() string {
13583	return s.String()
13584}
13585
13586// Validate inspects the fields of the type to determine if they are valid.
13587func (s *TotalImpactFilter) Validate() error {
13588	invalidParams := request.ErrInvalidParams{Context: "TotalImpactFilter"}
13589	if s.NumericOperator == nil {
13590		invalidParams.Add(request.NewErrParamRequired("NumericOperator"))
13591	}
13592	if s.StartValue == nil {
13593		invalidParams.Add(request.NewErrParamRequired("StartValue"))
13594	}
13595
13596	if invalidParams.Len() > 0 {
13597		return invalidParams
13598	}
13599	return nil
13600}
13601
13602// SetEndValue sets the EndValue field's value.
13603func (s *TotalImpactFilter) SetEndValue(v float64) *TotalImpactFilter {
13604	s.EndValue = &v
13605	return s
13606}
13607
13608// SetNumericOperator sets the NumericOperator field's value.
13609func (s *TotalImpactFilter) SetNumericOperator(v string) *TotalImpactFilter {
13610	s.NumericOperator = &v
13611	return s
13612}
13613
13614// SetStartValue sets the StartValue field's value.
13615func (s *TotalImpactFilter) SetStartValue(v float64) *TotalImpactFilter {
13616	s.StartValue = &v
13617	return s
13618}
13619
13620// The cost anomaly monitor does not exist for the account.
13621type UnknownMonitorException struct {
13622	_            struct{}                  `type:"structure"`
13623	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
13624
13625	Message_ *string `locationName:"Message" type:"string"`
13626}
13627
13628// String returns the string representation.
13629//
13630// API parameter values that are decorated as "sensitive" in the API will not
13631// be included in the string output. The member name will be present, but the
13632// value will be replaced with "sensitive".
13633func (s UnknownMonitorException) String() string {
13634	return awsutil.Prettify(s)
13635}
13636
13637// GoString returns the string representation.
13638//
13639// API parameter values that are decorated as "sensitive" in the API will not
13640// be included in the string output. The member name will be present, but the
13641// value will be replaced with "sensitive".
13642func (s UnknownMonitorException) GoString() string {
13643	return s.String()
13644}
13645
13646func newErrorUnknownMonitorException(v protocol.ResponseMetadata) error {
13647	return &UnknownMonitorException{
13648		RespMetadata: v,
13649	}
13650}
13651
13652// Code returns the exception type name.
13653func (s *UnknownMonitorException) Code() string {
13654	return "UnknownMonitorException"
13655}
13656
13657// Message returns the exception's message.
13658func (s *UnknownMonitorException) Message() string {
13659	if s.Message_ != nil {
13660		return *s.Message_
13661	}
13662	return ""
13663}
13664
13665// OrigErr always returns nil, satisfies awserr.Error interface.
13666func (s *UnknownMonitorException) OrigErr() error {
13667	return nil
13668}
13669
13670func (s *UnknownMonitorException) Error() string {
13671	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
13672}
13673
13674// Status code returns the HTTP status code for the request's response error.
13675func (s *UnknownMonitorException) StatusCode() int {
13676	return s.RespMetadata.StatusCode
13677}
13678
13679// RequestID returns the service's response RequestID for request.
13680func (s *UnknownMonitorException) RequestID() string {
13681	return s.RespMetadata.RequestID
13682}
13683
13684// The cost anomaly subscription does not exist for the account.
13685type UnknownSubscriptionException struct {
13686	_            struct{}                  `type:"structure"`
13687	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
13688
13689	Message_ *string `locationName:"Message" type:"string"`
13690}
13691
13692// String returns the string representation.
13693//
13694// API parameter values that are decorated as "sensitive" in the API will not
13695// be included in the string output. The member name will be present, but the
13696// value will be replaced with "sensitive".
13697func (s UnknownSubscriptionException) String() string {
13698	return awsutil.Prettify(s)
13699}
13700
13701// GoString returns the string representation.
13702//
13703// API parameter values that are decorated as "sensitive" in the API will not
13704// be included in the string output. The member name will be present, but the
13705// value will be replaced with "sensitive".
13706func (s UnknownSubscriptionException) GoString() string {
13707	return s.String()
13708}
13709
13710func newErrorUnknownSubscriptionException(v protocol.ResponseMetadata) error {
13711	return &UnknownSubscriptionException{
13712		RespMetadata: v,
13713	}
13714}
13715
13716// Code returns the exception type name.
13717func (s *UnknownSubscriptionException) Code() string {
13718	return "UnknownSubscriptionException"
13719}
13720
13721// Message returns the exception's message.
13722func (s *UnknownSubscriptionException) Message() string {
13723	if s.Message_ != nil {
13724		return *s.Message_
13725	}
13726	return ""
13727}
13728
13729// OrigErr always returns nil, satisfies awserr.Error interface.
13730func (s *UnknownSubscriptionException) OrigErr() error {
13731	return nil
13732}
13733
13734func (s *UnknownSubscriptionException) Error() string {
13735	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
13736}
13737
13738// Status code returns the HTTP status code for the request's response error.
13739func (s *UnknownSubscriptionException) StatusCode() int {
13740	return s.RespMetadata.StatusCode
13741}
13742
13743// RequestID returns the service's response RequestID for request.
13744func (s *UnknownSubscriptionException) RequestID() string {
13745	return s.RespMetadata.RequestID
13746}
13747
13748// Cost Explorer was unable to identify the usage unit. Provide UsageType/UsageTypeGroup
13749// filter selections that contain matching units, for example: hours.
13750type UnresolvableUsageUnitException struct {
13751	_            struct{}                  `type:"structure"`
13752	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
13753
13754	Message_ *string `locationName:"Message" type:"string"`
13755}
13756
13757// String returns the string representation.
13758//
13759// API parameter values that are decorated as "sensitive" in the API will not
13760// be included in the string output. The member name will be present, but the
13761// value will be replaced with "sensitive".
13762func (s UnresolvableUsageUnitException) String() string {
13763	return awsutil.Prettify(s)
13764}
13765
13766// GoString returns the string representation.
13767//
13768// API parameter values that are decorated as "sensitive" in the API will not
13769// be included in the string output. The member name will be present, but the
13770// value will be replaced with "sensitive".
13771func (s UnresolvableUsageUnitException) GoString() string {
13772	return s.String()
13773}
13774
13775func newErrorUnresolvableUsageUnitException(v protocol.ResponseMetadata) error {
13776	return &UnresolvableUsageUnitException{
13777		RespMetadata: v,
13778	}
13779}
13780
13781// Code returns the exception type name.
13782func (s *UnresolvableUsageUnitException) Code() string {
13783	return "UnresolvableUsageUnitException"
13784}
13785
13786// Message returns the exception's message.
13787func (s *UnresolvableUsageUnitException) Message() string {
13788	if s.Message_ != nil {
13789		return *s.Message_
13790	}
13791	return ""
13792}
13793
13794// OrigErr always returns nil, satisfies awserr.Error interface.
13795func (s *UnresolvableUsageUnitException) OrigErr() error {
13796	return nil
13797}
13798
13799func (s *UnresolvableUsageUnitException) Error() string {
13800	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
13801}
13802
13803// Status code returns the HTTP status code for the request's response error.
13804func (s *UnresolvableUsageUnitException) StatusCode() int {
13805	return s.RespMetadata.StatusCode
13806}
13807
13808// RequestID returns the service's response RequestID for request.
13809func (s *UnresolvableUsageUnitException) RequestID() string {
13810	return s.RespMetadata.RequestID
13811}
13812
13813type UpdateAnomalyMonitorInput struct {
13814	_ struct{} `type:"structure"`
13815
13816	// Cost anomaly monitor Amazon Resource Names (ARNs).
13817	//
13818	// MonitorArn is a required field
13819	MonitorArn *string `type:"string" required:"true"`
13820
13821	// The new name for the cost anomaly monitor.
13822	MonitorName *string `type:"string"`
13823}
13824
13825// String returns the string representation.
13826//
13827// API parameter values that are decorated as "sensitive" in the API will not
13828// be included in the string output. The member name will be present, but the
13829// value will be replaced with "sensitive".
13830func (s UpdateAnomalyMonitorInput) String() string {
13831	return awsutil.Prettify(s)
13832}
13833
13834// GoString returns the string representation.
13835//
13836// API parameter values that are decorated as "sensitive" in the API will not
13837// be included in the string output. The member name will be present, but the
13838// value will be replaced with "sensitive".
13839func (s UpdateAnomalyMonitorInput) GoString() string {
13840	return s.String()
13841}
13842
13843// Validate inspects the fields of the type to determine if they are valid.
13844func (s *UpdateAnomalyMonitorInput) Validate() error {
13845	invalidParams := request.ErrInvalidParams{Context: "UpdateAnomalyMonitorInput"}
13846	if s.MonitorArn == nil {
13847		invalidParams.Add(request.NewErrParamRequired("MonitorArn"))
13848	}
13849
13850	if invalidParams.Len() > 0 {
13851		return invalidParams
13852	}
13853	return nil
13854}
13855
13856// SetMonitorArn sets the MonitorArn field's value.
13857func (s *UpdateAnomalyMonitorInput) SetMonitorArn(v string) *UpdateAnomalyMonitorInput {
13858	s.MonitorArn = &v
13859	return s
13860}
13861
13862// SetMonitorName sets the MonitorName field's value.
13863func (s *UpdateAnomalyMonitorInput) SetMonitorName(v string) *UpdateAnomalyMonitorInput {
13864	s.MonitorName = &v
13865	return s
13866}
13867
13868type UpdateAnomalyMonitorOutput struct {
13869	_ struct{} `type:"structure"`
13870
13871	// A cost anomaly monitor ARN.
13872	//
13873	// MonitorArn is a required field
13874	MonitorArn *string `type:"string" required:"true"`
13875}
13876
13877// String returns the string representation.
13878//
13879// API parameter values that are decorated as "sensitive" in the API will not
13880// be included in the string output. The member name will be present, but the
13881// value will be replaced with "sensitive".
13882func (s UpdateAnomalyMonitorOutput) String() string {
13883	return awsutil.Prettify(s)
13884}
13885
13886// GoString returns the string representation.
13887//
13888// API parameter values that are decorated as "sensitive" in the API will not
13889// be included in the string output. The member name will be present, but the
13890// value will be replaced with "sensitive".
13891func (s UpdateAnomalyMonitorOutput) GoString() string {
13892	return s.String()
13893}
13894
13895// SetMonitorArn sets the MonitorArn field's value.
13896func (s *UpdateAnomalyMonitorOutput) SetMonitorArn(v string) *UpdateAnomalyMonitorOutput {
13897	s.MonitorArn = &v
13898	return s
13899}
13900
13901type UpdateAnomalySubscriptionInput struct {
13902	_ struct{} `type:"structure"`
13903
13904	// The update to the frequency value that subscribers receive notifications.
13905	Frequency *string `type:"string" enum:"AnomalySubscriptionFrequency"`
13906
13907	// A list of cost anomaly monitor ARNs.
13908	MonitorArnList []*string `type:"list"`
13909
13910	// The update to the subscriber list.
13911	Subscribers []*Subscriber `type:"list"`
13912
13913	// A cost anomaly subscription Amazon Resource Name (ARN).
13914	//
13915	// SubscriptionArn is a required field
13916	SubscriptionArn *string `type:"string" required:"true"`
13917
13918	// The new name of the subscription.
13919	SubscriptionName *string `type:"string"`
13920
13921	// The update to the threshold value for receiving notifications.
13922	Threshold *float64 `type:"double"`
13923}
13924
13925// String returns the string representation.
13926//
13927// API parameter values that are decorated as "sensitive" in the API will not
13928// be included in the string output. The member name will be present, but the
13929// value will be replaced with "sensitive".
13930func (s UpdateAnomalySubscriptionInput) String() string {
13931	return awsutil.Prettify(s)
13932}
13933
13934// GoString returns the string representation.
13935//
13936// API parameter values that are decorated as "sensitive" in the API will not
13937// be included in the string output. The member name will be present, but the
13938// value will be replaced with "sensitive".
13939func (s UpdateAnomalySubscriptionInput) GoString() string {
13940	return s.String()
13941}
13942
13943// Validate inspects the fields of the type to determine if they are valid.
13944func (s *UpdateAnomalySubscriptionInput) Validate() error {
13945	invalidParams := request.ErrInvalidParams{Context: "UpdateAnomalySubscriptionInput"}
13946	if s.SubscriptionArn == nil {
13947		invalidParams.Add(request.NewErrParamRequired("SubscriptionArn"))
13948	}
13949	if s.Subscribers != nil {
13950		for i, v := range s.Subscribers {
13951			if v == nil {
13952				continue
13953			}
13954			if err := v.Validate(); err != nil {
13955				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Subscribers", i), err.(request.ErrInvalidParams))
13956			}
13957		}
13958	}
13959
13960	if invalidParams.Len() > 0 {
13961		return invalidParams
13962	}
13963	return nil
13964}
13965
13966// SetFrequency sets the Frequency field's value.
13967func (s *UpdateAnomalySubscriptionInput) SetFrequency(v string) *UpdateAnomalySubscriptionInput {
13968	s.Frequency = &v
13969	return s
13970}
13971
13972// SetMonitorArnList sets the MonitorArnList field's value.
13973func (s *UpdateAnomalySubscriptionInput) SetMonitorArnList(v []*string) *UpdateAnomalySubscriptionInput {
13974	s.MonitorArnList = v
13975	return s
13976}
13977
13978// SetSubscribers sets the Subscribers field's value.
13979func (s *UpdateAnomalySubscriptionInput) SetSubscribers(v []*Subscriber) *UpdateAnomalySubscriptionInput {
13980	s.Subscribers = v
13981	return s
13982}
13983
13984// SetSubscriptionArn sets the SubscriptionArn field's value.
13985func (s *UpdateAnomalySubscriptionInput) SetSubscriptionArn(v string) *UpdateAnomalySubscriptionInput {
13986	s.SubscriptionArn = &v
13987	return s
13988}
13989
13990// SetSubscriptionName sets the SubscriptionName field's value.
13991func (s *UpdateAnomalySubscriptionInput) SetSubscriptionName(v string) *UpdateAnomalySubscriptionInput {
13992	s.SubscriptionName = &v
13993	return s
13994}
13995
13996// SetThreshold sets the Threshold field's value.
13997func (s *UpdateAnomalySubscriptionInput) SetThreshold(v float64) *UpdateAnomalySubscriptionInput {
13998	s.Threshold = &v
13999	return s
14000}
14001
14002type UpdateAnomalySubscriptionOutput struct {
14003	_ struct{} `type:"structure"`
14004
14005	// A cost anomaly subscription ARN.
14006	//
14007	// SubscriptionArn is a required field
14008	SubscriptionArn *string `type:"string" required:"true"`
14009}
14010
14011// String returns the string representation.
14012//
14013// API parameter values that are decorated as "sensitive" in the API will not
14014// be included in the string output. The member name will be present, but the
14015// value will be replaced with "sensitive".
14016func (s UpdateAnomalySubscriptionOutput) String() string {
14017	return awsutil.Prettify(s)
14018}
14019
14020// GoString returns the string representation.
14021//
14022// API parameter values that are decorated as "sensitive" in the API will not
14023// be included in the string output. The member name will be present, but the
14024// value will be replaced with "sensitive".
14025func (s UpdateAnomalySubscriptionOutput) GoString() string {
14026	return s.String()
14027}
14028
14029// SetSubscriptionArn sets the SubscriptionArn field's value.
14030func (s *UpdateAnomalySubscriptionOutput) SetSubscriptionArn(v string) *UpdateAnomalySubscriptionOutput {
14031	s.SubscriptionArn = &v
14032	return s
14033}
14034
14035type UpdateCostCategoryDefinitionInput struct {
14036	_ struct{} `type:"structure"`
14037
14038	// The unique identifier for your Cost Category.
14039	//
14040	// CostCategoryArn is a required field
14041	CostCategoryArn *string `min:"20" type:"string" required:"true"`
14042
14043	// The default value for the cost category.
14044	DefaultValue *string `min:"1" type:"string"`
14045
14046	// The rule schema version in this particular Cost Category.
14047	//
14048	// RuleVersion is a required field
14049	RuleVersion *string `type:"string" required:"true" enum:"CostCategoryRuleVersion"`
14050
14051	// The Expression object used to categorize costs. For more information, see
14052	// CostCategoryRule (https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_CostCategoryRule.html).
14053	//
14054	// Rules is a required field
14055	Rules []*CostCategoryRule `min:"1" type:"list" required:"true"`
14056
14057	// The split charge rules used to allocate your charges between your Cost Category
14058	// values.
14059	SplitChargeRules []*CostCategorySplitChargeRule `min:"1" type:"list"`
14060}
14061
14062// String returns the string representation.
14063//
14064// API parameter values that are decorated as "sensitive" in the API will not
14065// be included in the string output. The member name will be present, but the
14066// value will be replaced with "sensitive".
14067func (s UpdateCostCategoryDefinitionInput) String() string {
14068	return awsutil.Prettify(s)
14069}
14070
14071// GoString returns the string representation.
14072//
14073// API parameter values that are decorated as "sensitive" in the API will not
14074// be included in the string output. The member name will be present, but the
14075// value will be replaced with "sensitive".
14076func (s UpdateCostCategoryDefinitionInput) GoString() string {
14077	return s.String()
14078}
14079
14080// Validate inspects the fields of the type to determine if they are valid.
14081func (s *UpdateCostCategoryDefinitionInput) Validate() error {
14082	invalidParams := request.ErrInvalidParams{Context: "UpdateCostCategoryDefinitionInput"}
14083	if s.CostCategoryArn == nil {
14084		invalidParams.Add(request.NewErrParamRequired("CostCategoryArn"))
14085	}
14086	if s.CostCategoryArn != nil && len(*s.CostCategoryArn) < 20 {
14087		invalidParams.Add(request.NewErrParamMinLen("CostCategoryArn", 20))
14088	}
14089	if s.DefaultValue != nil && len(*s.DefaultValue) < 1 {
14090		invalidParams.Add(request.NewErrParamMinLen("DefaultValue", 1))
14091	}
14092	if s.RuleVersion == nil {
14093		invalidParams.Add(request.NewErrParamRequired("RuleVersion"))
14094	}
14095	if s.Rules == nil {
14096		invalidParams.Add(request.NewErrParamRequired("Rules"))
14097	}
14098	if s.Rules != nil && len(s.Rules) < 1 {
14099		invalidParams.Add(request.NewErrParamMinLen("Rules", 1))
14100	}
14101	if s.SplitChargeRules != nil && len(s.SplitChargeRules) < 1 {
14102		invalidParams.Add(request.NewErrParamMinLen("SplitChargeRules", 1))
14103	}
14104	if s.Rules != nil {
14105		for i, v := range s.Rules {
14106			if v == nil {
14107				continue
14108			}
14109			if err := v.Validate(); err != nil {
14110				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
14111			}
14112		}
14113	}
14114	if s.SplitChargeRules != nil {
14115		for i, v := range s.SplitChargeRules {
14116			if v == nil {
14117				continue
14118			}
14119			if err := v.Validate(); err != nil {
14120				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SplitChargeRules", i), err.(request.ErrInvalidParams))
14121			}
14122		}
14123	}
14124
14125	if invalidParams.Len() > 0 {
14126		return invalidParams
14127	}
14128	return nil
14129}
14130
14131// SetCostCategoryArn sets the CostCategoryArn field's value.
14132func (s *UpdateCostCategoryDefinitionInput) SetCostCategoryArn(v string) *UpdateCostCategoryDefinitionInput {
14133	s.CostCategoryArn = &v
14134	return s
14135}
14136
14137// SetDefaultValue sets the DefaultValue field's value.
14138func (s *UpdateCostCategoryDefinitionInput) SetDefaultValue(v string) *UpdateCostCategoryDefinitionInput {
14139	s.DefaultValue = &v
14140	return s
14141}
14142
14143// SetRuleVersion sets the RuleVersion field's value.
14144func (s *UpdateCostCategoryDefinitionInput) SetRuleVersion(v string) *UpdateCostCategoryDefinitionInput {
14145	s.RuleVersion = &v
14146	return s
14147}
14148
14149// SetRules sets the Rules field's value.
14150func (s *UpdateCostCategoryDefinitionInput) SetRules(v []*CostCategoryRule) *UpdateCostCategoryDefinitionInput {
14151	s.Rules = v
14152	return s
14153}
14154
14155// SetSplitChargeRules sets the SplitChargeRules field's value.
14156func (s *UpdateCostCategoryDefinitionInput) SetSplitChargeRules(v []*CostCategorySplitChargeRule) *UpdateCostCategoryDefinitionInput {
14157	s.SplitChargeRules = v
14158	return s
14159}
14160
14161type UpdateCostCategoryDefinitionOutput struct {
14162	_ struct{} `type:"structure"`
14163
14164	// The unique identifier for your Cost Category.
14165	CostCategoryArn *string `min:"20" type:"string"`
14166
14167	// The Cost Category's effective start date.
14168	EffectiveStart *string `min:"20" type:"string"`
14169}
14170
14171// String returns the string representation.
14172//
14173// API parameter values that are decorated as "sensitive" in the API will not
14174// be included in the string output. The member name will be present, but the
14175// value will be replaced with "sensitive".
14176func (s UpdateCostCategoryDefinitionOutput) String() string {
14177	return awsutil.Prettify(s)
14178}
14179
14180// GoString returns the string representation.
14181//
14182// API parameter values that are decorated as "sensitive" in the API will not
14183// be included in the string output. The member name will be present, but the
14184// value will be replaced with "sensitive".
14185func (s UpdateCostCategoryDefinitionOutput) GoString() string {
14186	return s.String()
14187}
14188
14189// SetCostCategoryArn sets the CostCategoryArn field's value.
14190func (s *UpdateCostCategoryDefinitionOutput) SetCostCategoryArn(v string) *UpdateCostCategoryDefinitionOutput {
14191	s.CostCategoryArn = &v
14192	return s
14193}
14194
14195// SetEffectiveStart sets the EffectiveStart field's value.
14196func (s *UpdateCostCategoryDefinitionOutput) SetEffectiveStart(v string) *UpdateCostCategoryDefinitionOutput {
14197	s.EffectiveStart = &v
14198	return s
14199}
14200
14201// The amount of utilization, in hours.
14202type UtilizationByTime struct {
14203	_ struct{} `type:"structure"`
14204
14205	// The groups that this utilization result uses.
14206	Groups []*ReservationUtilizationGroup `type:"list"`
14207
14208	// The period of time that this utilization was used for.
14209	TimePeriod *DateInterval `type:"structure"`
14210
14211	// The total number of reservation hours that were used.
14212	Total *ReservationAggregates `type:"structure"`
14213}
14214
14215// String returns the string representation.
14216//
14217// API parameter values that are decorated as "sensitive" in the API will not
14218// be included in the string output. The member name will be present, but the
14219// value will be replaced with "sensitive".
14220func (s UtilizationByTime) String() string {
14221	return awsutil.Prettify(s)
14222}
14223
14224// GoString returns the string representation.
14225//
14226// API parameter values that are decorated as "sensitive" in the API will not
14227// be included in the string output. The member name will be present, but the
14228// value will be replaced with "sensitive".
14229func (s UtilizationByTime) GoString() string {
14230	return s.String()
14231}
14232
14233// SetGroups sets the Groups field's value.
14234func (s *UtilizationByTime) SetGroups(v []*ReservationUtilizationGroup) *UtilizationByTime {
14235	s.Groups = v
14236	return s
14237}
14238
14239// SetTimePeriod sets the TimePeriod field's value.
14240func (s *UtilizationByTime) SetTimePeriod(v *DateInterval) *UtilizationByTime {
14241	s.TimePeriod = v
14242	return s
14243}
14244
14245// SetTotal sets the Total field's value.
14246func (s *UtilizationByTime) SetTotal(v *ReservationAggregates) *UtilizationByTime {
14247	s.Total = v
14248	return s
14249}
14250
14251const (
14252	// AccountScopePayer is a AccountScope enum value
14253	AccountScopePayer = "PAYER"
14254
14255	// AccountScopeLinked is a AccountScope enum value
14256	AccountScopeLinked = "LINKED"
14257)
14258
14259// AccountScope_Values returns all elements of the AccountScope enum
14260func AccountScope_Values() []string {
14261	return []string{
14262		AccountScopePayer,
14263		AccountScopeLinked,
14264	}
14265}
14266
14267const (
14268	// AnomalyFeedbackTypeYes is a AnomalyFeedbackType enum value
14269	AnomalyFeedbackTypeYes = "YES"
14270
14271	// AnomalyFeedbackTypeNo is a AnomalyFeedbackType enum value
14272	AnomalyFeedbackTypeNo = "NO"
14273
14274	// AnomalyFeedbackTypePlannedActivity is a AnomalyFeedbackType enum value
14275	AnomalyFeedbackTypePlannedActivity = "PLANNED_ACTIVITY"
14276)
14277
14278// AnomalyFeedbackType_Values returns all elements of the AnomalyFeedbackType enum
14279func AnomalyFeedbackType_Values() []string {
14280	return []string{
14281		AnomalyFeedbackTypeYes,
14282		AnomalyFeedbackTypeNo,
14283		AnomalyFeedbackTypePlannedActivity,
14284	}
14285}
14286
14287const (
14288	// AnomalySubscriptionFrequencyDaily is a AnomalySubscriptionFrequency enum value
14289	AnomalySubscriptionFrequencyDaily = "DAILY"
14290
14291	// AnomalySubscriptionFrequencyImmediate is a AnomalySubscriptionFrequency enum value
14292	AnomalySubscriptionFrequencyImmediate = "IMMEDIATE"
14293
14294	// AnomalySubscriptionFrequencyWeekly is a AnomalySubscriptionFrequency enum value
14295	AnomalySubscriptionFrequencyWeekly = "WEEKLY"
14296)
14297
14298// AnomalySubscriptionFrequency_Values returns all elements of the AnomalySubscriptionFrequency enum
14299func AnomalySubscriptionFrequency_Values() []string {
14300	return []string{
14301		AnomalySubscriptionFrequencyDaily,
14302		AnomalySubscriptionFrequencyImmediate,
14303		AnomalySubscriptionFrequencyWeekly,
14304	}
14305}
14306
14307const (
14308	// ContextCostAndUsage is a Context enum value
14309	ContextCostAndUsage = "COST_AND_USAGE"
14310
14311	// ContextReservations is a Context enum value
14312	ContextReservations = "RESERVATIONS"
14313
14314	// ContextSavingsPlans is a Context enum value
14315	ContextSavingsPlans = "SAVINGS_PLANS"
14316)
14317
14318// Context_Values returns all elements of the Context enum
14319func Context_Values() []string {
14320	return []string{
14321		ContextCostAndUsage,
14322		ContextReservations,
14323		ContextSavingsPlans,
14324	}
14325}
14326
14327const (
14328	// CostCategoryInheritedValueDimensionNameLinkedAccountName is a CostCategoryInheritedValueDimensionName enum value
14329	CostCategoryInheritedValueDimensionNameLinkedAccountName = "LINKED_ACCOUNT_NAME"
14330
14331	// CostCategoryInheritedValueDimensionNameTag is a CostCategoryInheritedValueDimensionName enum value
14332	CostCategoryInheritedValueDimensionNameTag = "TAG"
14333)
14334
14335// CostCategoryInheritedValueDimensionName_Values returns all elements of the CostCategoryInheritedValueDimensionName enum
14336func CostCategoryInheritedValueDimensionName_Values() []string {
14337	return []string{
14338		CostCategoryInheritedValueDimensionNameLinkedAccountName,
14339		CostCategoryInheritedValueDimensionNameTag,
14340	}
14341}
14342
14343const (
14344	// CostCategoryRuleTypeRegular is a CostCategoryRuleType enum value
14345	CostCategoryRuleTypeRegular = "REGULAR"
14346
14347	// CostCategoryRuleTypeInheritedValue is a CostCategoryRuleType enum value
14348	CostCategoryRuleTypeInheritedValue = "INHERITED_VALUE"
14349)
14350
14351// CostCategoryRuleType_Values returns all elements of the CostCategoryRuleType enum
14352func CostCategoryRuleType_Values() []string {
14353	return []string{
14354		CostCategoryRuleTypeRegular,
14355		CostCategoryRuleTypeInheritedValue,
14356	}
14357}
14358
14359// The rule schema version in this particular Cost Category.
14360const (
14361	// CostCategoryRuleVersionCostCategoryExpressionV1 is a CostCategoryRuleVersion enum value
14362	CostCategoryRuleVersionCostCategoryExpressionV1 = "CostCategoryExpression.v1"
14363)
14364
14365// CostCategoryRuleVersion_Values returns all elements of the CostCategoryRuleVersion enum
14366func CostCategoryRuleVersion_Values() []string {
14367	return []string{
14368		CostCategoryRuleVersionCostCategoryExpressionV1,
14369	}
14370}
14371
14372const (
14373	// CostCategorySplitChargeMethodFixed is a CostCategorySplitChargeMethod enum value
14374	CostCategorySplitChargeMethodFixed = "FIXED"
14375
14376	// CostCategorySplitChargeMethodProportional is a CostCategorySplitChargeMethod enum value
14377	CostCategorySplitChargeMethodProportional = "PROPORTIONAL"
14378
14379	// CostCategorySplitChargeMethodEven is a CostCategorySplitChargeMethod enum value
14380	CostCategorySplitChargeMethodEven = "EVEN"
14381)
14382
14383// CostCategorySplitChargeMethod_Values returns all elements of the CostCategorySplitChargeMethod enum
14384func CostCategorySplitChargeMethod_Values() []string {
14385	return []string{
14386		CostCategorySplitChargeMethodFixed,
14387		CostCategorySplitChargeMethodProportional,
14388		CostCategorySplitChargeMethodEven,
14389	}
14390}
14391
14392const (
14393	// CostCategorySplitChargeRuleParameterTypeAllocationPercentages is a CostCategorySplitChargeRuleParameterType enum value
14394	CostCategorySplitChargeRuleParameterTypeAllocationPercentages = "ALLOCATION_PERCENTAGES"
14395)
14396
14397// CostCategorySplitChargeRuleParameterType_Values returns all elements of the CostCategorySplitChargeRuleParameterType enum
14398func CostCategorySplitChargeRuleParameterType_Values() []string {
14399	return []string{
14400		CostCategorySplitChargeRuleParameterTypeAllocationPercentages,
14401	}
14402}
14403
14404const (
14405	// CostCategoryStatusProcessing is a CostCategoryStatus enum value
14406	CostCategoryStatusProcessing = "PROCESSING"
14407
14408	// CostCategoryStatusApplied is a CostCategoryStatus enum value
14409	CostCategoryStatusApplied = "APPLIED"
14410)
14411
14412// CostCategoryStatus_Values returns all elements of the CostCategoryStatus enum
14413func CostCategoryStatus_Values() []string {
14414	return []string{
14415		CostCategoryStatusProcessing,
14416		CostCategoryStatusApplied,
14417	}
14418}
14419
14420const (
14421	// CostCategoryStatusComponentCostExplorer is a CostCategoryStatusComponent enum value
14422	CostCategoryStatusComponentCostExplorer = "COST_EXPLORER"
14423)
14424
14425// CostCategoryStatusComponent_Values returns all elements of the CostCategoryStatusComponent enum
14426func CostCategoryStatusComponent_Values() []string {
14427	return []string{
14428		CostCategoryStatusComponentCostExplorer,
14429	}
14430}
14431
14432const (
14433	// DimensionAz is a Dimension enum value
14434	DimensionAz = "AZ"
14435
14436	// DimensionInstanceType is a Dimension enum value
14437	DimensionInstanceType = "INSTANCE_TYPE"
14438
14439	// DimensionLinkedAccount is a Dimension enum value
14440	DimensionLinkedAccount = "LINKED_ACCOUNT"
14441
14442	// DimensionLinkedAccountName is a Dimension enum value
14443	DimensionLinkedAccountName = "LINKED_ACCOUNT_NAME"
14444
14445	// DimensionOperation is a Dimension enum value
14446	DimensionOperation = "OPERATION"
14447
14448	// DimensionPurchaseType is a Dimension enum value
14449	DimensionPurchaseType = "PURCHASE_TYPE"
14450
14451	// DimensionRegion is a Dimension enum value
14452	DimensionRegion = "REGION"
14453
14454	// DimensionService is a Dimension enum value
14455	DimensionService = "SERVICE"
14456
14457	// DimensionServiceCode is a Dimension enum value
14458	DimensionServiceCode = "SERVICE_CODE"
14459
14460	// DimensionUsageType is a Dimension enum value
14461	DimensionUsageType = "USAGE_TYPE"
14462
14463	// DimensionUsageTypeGroup is a Dimension enum value
14464	DimensionUsageTypeGroup = "USAGE_TYPE_GROUP"
14465
14466	// DimensionRecordType is a Dimension enum value
14467	DimensionRecordType = "RECORD_TYPE"
14468
14469	// DimensionOperatingSystem is a Dimension enum value
14470	DimensionOperatingSystem = "OPERATING_SYSTEM"
14471
14472	// DimensionTenancy is a Dimension enum value
14473	DimensionTenancy = "TENANCY"
14474
14475	// DimensionScope is a Dimension enum value
14476	DimensionScope = "SCOPE"
14477
14478	// DimensionPlatform is a Dimension enum value
14479	DimensionPlatform = "PLATFORM"
14480
14481	// DimensionSubscriptionId is a Dimension enum value
14482	DimensionSubscriptionId = "SUBSCRIPTION_ID"
14483
14484	// DimensionLegalEntityName is a Dimension enum value
14485	DimensionLegalEntityName = "LEGAL_ENTITY_NAME"
14486
14487	// DimensionDeploymentOption is a Dimension enum value
14488	DimensionDeploymentOption = "DEPLOYMENT_OPTION"
14489
14490	// DimensionDatabaseEngine is a Dimension enum value
14491	DimensionDatabaseEngine = "DATABASE_ENGINE"
14492
14493	// DimensionCacheEngine is a Dimension enum value
14494	DimensionCacheEngine = "CACHE_ENGINE"
14495
14496	// DimensionInstanceTypeFamily is a Dimension enum value
14497	DimensionInstanceTypeFamily = "INSTANCE_TYPE_FAMILY"
14498
14499	// DimensionBillingEntity is a Dimension enum value
14500	DimensionBillingEntity = "BILLING_ENTITY"
14501
14502	// DimensionReservationId is a Dimension enum value
14503	DimensionReservationId = "RESERVATION_ID"
14504
14505	// DimensionResourceId is a Dimension enum value
14506	DimensionResourceId = "RESOURCE_ID"
14507
14508	// DimensionRightsizingType is a Dimension enum value
14509	DimensionRightsizingType = "RIGHTSIZING_TYPE"
14510
14511	// DimensionSavingsPlansType is a Dimension enum value
14512	DimensionSavingsPlansType = "SAVINGS_PLANS_TYPE"
14513
14514	// DimensionSavingsPlanArn is a Dimension enum value
14515	DimensionSavingsPlanArn = "SAVINGS_PLAN_ARN"
14516
14517	// DimensionPaymentOption is a Dimension enum value
14518	DimensionPaymentOption = "PAYMENT_OPTION"
14519
14520	// DimensionAgreementEndDateTimeAfter is a Dimension enum value
14521	DimensionAgreementEndDateTimeAfter = "AGREEMENT_END_DATE_TIME_AFTER"
14522
14523	// DimensionAgreementEndDateTimeBefore is a Dimension enum value
14524	DimensionAgreementEndDateTimeBefore = "AGREEMENT_END_DATE_TIME_BEFORE"
14525)
14526
14527// Dimension_Values returns all elements of the Dimension enum
14528func Dimension_Values() []string {
14529	return []string{
14530		DimensionAz,
14531		DimensionInstanceType,
14532		DimensionLinkedAccount,
14533		DimensionLinkedAccountName,
14534		DimensionOperation,
14535		DimensionPurchaseType,
14536		DimensionRegion,
14537		DimensionService,
14538		DimensionServiceCode,
14539		DimensionUsageType,
14540		DimensionUsageTypeGroup,
14541		DimensionRecordType,
14542		DimensionOperatingSystem,
14543		DimensionTenancy,
14544		DimensionScope,
14545		DimensionPlatform,
14546		DimensionSubscriptionId,
14547		DimensionLegalEntityName,
14548		DimensionDeploymentOption,
14549		DimensionDatabaseEngine,
14550		DimensionCacheEngine,
14551		DimensionInstanceTypeFamily,
14552		DimensionBillingEntity,
14553		DimensionReservationId,
14554		DimensionResourceId,
14555		DimensionRightsizingType,
14556		DimensionSavingsPlansType,
14557		DimensionSavingsPlanArn,
14558		DimensionPaymentOption,
14559		DimensionAgreementEndDateTimeAfter,
14560		DimensionAgreementEndDateTimeBefore,
14561	}
14562}
14563
14564const (
14565	// FindingReasonCodeCpuOverProvisioned is a FindingReasonCode enum value
14566	FindingReasonCodeCpuOverProvisioned = "CPU_OVER_PROVISIONED"
14567
14568	// FindingReasonCodeCpuUnderProvisioned is a FindingReasonCode enum value
14569	FindingReasonCodeCpuUnderProvisioned = "CPU_UNDER_PROVISIONED"
14570
14571	// FindingReasonCodeMemoryOverProvisioned is a FindingReasonCode enum value
14572	FindingReasonCodeMemoryOverProvisioned = "MEMORY_OVER_PROVISIONED"
14573
14574	// FindingReasonCodeMemoryUnderProvisioned is a FindingReasonCode enum value
14575	FindingReasonCodeMemoryUnderProvisioned = "MEMORY_UNDER_PROVISIONED"
14576
14577	// FindingReasonCodeEbsThroughputOverProvisioned is a FindingReasonCode enum value
14578	FindingReasonCodeEbsThroughputOverProvisioned = "EBS_THROUGHPUT_OVER_PROVISIONED"
14579
14580	// FindingReasonCodeEbsThroughputUnderProvisioned is a FindingReasonCode enum value
14581	FindingReasonCodeEbsThroughputUnderProvisioned = "EBS_THROUGHPUT_UNDER_PROVISIONED"
14582
14583	// FindingReasonCodeEbsIopsOverProvisioned is a FindingReasonCode enum value
14584	FindingReasonCodeEbsIopsOverProvisioned = "EBS_IOPS_OVER_PROVISIONED"
14585
14586	// FindingReasonCodeEbsIopsUnderProvisioned is a FindingReasonCode enum value
14587	FindingReasonCodeEbsIopsUnderProvisioned = "EBS_IOPS_UNDER_PROVISIONED"
14588
14589	// FindingReasonCodeNetworkBandwidthOverProvisioned is a FindingReasonCode enum value
14590	FindingReasonCodeNetworkBandwidthOverProvisioned = "NETWORK_BANDWIDTH_OVER_PROVISIONED"
14591
14592	// FindingReasonCodeNetworkBandwidthUnderProvisioned is a FindingReasonCode enum value
14593	FindingReasonCodeNetworkBandwidthUnderProvisioned = "NETWORK_BANDWIDTH_UNDER_PROVISIONED"
14594
14595	// FindingReasonCodeNetworkPpsOverProvisioned is a FindingReasonCode enum value
14596	FindingReasonCodeNetworkPpsOverProvisioned = "NETWORK_PPS_OVER_PROVISIONED"
14597
14598	// FindingReasonCodeNetworkPpsUnderProvisioned is a FindingReasonCode enum value
14599	FindingReasonCodeNetworkPpsUnderProvisioned = "NETWORK_PPS_UNDER_PROVISIONED"
14600
14601	// FindingReasonCodeDiskIopsOverProvisioned is a FindingReasonCode enum value
14602	FindingReasonCodeDiskIopsOverProvisioned = "DISK_IOPS_OVER_PROVISIONED"
14603
14604	// FindingReasonCodeDiskIopsUnderProvisioned is a FindingReasonCode enum value
14605	FindingReasonCodeDiskIopsUnderProvisioned = "DISK_IOPS_UNDER_PROVISIONED"
14606
14607	// FindingReasonCodeDiskThroughputOverProvisioned is a FindingReasonCode enum value
14608	FindingReasonCodeDiskThroughputOverProvisioned = "DISK_THROUGHPUT_OVER_PROVISIONED"
14609
14610	// FindingReasonCodeDiskThroughputUnderProvisioned is a FindingReasonCode enum value
14611	FindingReasonCodeDiskThroughputUnderProvisioned = "DISK_THROUGHPUT_UNDER_PROVISIONED"
14612)
14613
14614// FindingReasonCode_Values returns all elements of the FindingReasonCode enum
14615func FindingReasonCode_Values() []string {
14616	return []string{
14617		FindingReasonCodeCpuOverProvisioned,
14618		FindingReasonCodeCpuUnderProvisioned,
14619		FindingReasonCodeMemoryOverProvisioned,
14620		FindingReasonCodeMemoryUnderProvisioned,
14621		FindingReasonCodeEbsThroughputOverProvisioned,
14622		FindingReasonCodeEbsThroughputUnderProvisioned,
14623		FindingReasonCodeEbsIopsOverProvisioned,
14624		FindingReasonCodeEbsIopsUnderProvisioned,
14625		FindingReasonCodeNetworkBandwidthOverProvisioned,
14626		FindingReasonCodeNetworkBandwidthUnderProvisioned,
14627		FindingReasonCodeNetworkPpsOverProvisioned,
14628		FindingReasonCodeNetworkPpsUnderProvisioned,
14629		FindingReasonCodeDiskIopsOverProvisioned,
14630		FindingReasonCodeDiskIopsUnderProvisioned,
14631		FindingReasonCodeDiskThroughputOverProvisioned,
14632		FindingReasonCodeDiskThroughputUnderProvisioned,
14633	}
14634}
14635
14636const (
14637	// GranularityDaily is a Granularity enum value
14638	GranularityDaily = "DAILY"
14639
14640	// GranularityMonthly is a Granularity enum value
14641	GranularityMonthly = "MONTHLY"
14642
14643	// GranularityHourly is a Granularity enum value
14644	GranularityHourly = "HOURLY"
14645)
14646
14647// Granularity_Values returns all elements of the Granularity enum
14648func Granularity_Values() []string {
14649	return []string{
14650		GranularityDaily,
14651		GranularityMonthly,
14652		GranularityHourly,
14653	}
14654}
14655
14656const (
14657	// GroupDefinitionTypeDimension is a GroupDefinitionType enum value
14658	GroupDefinitionTypeDimension = "DIMENSION"
14659
14660	// GroupDefinitionTypeTag is a GroupDefinitionType enum value
14661	GroupDefinitionTypeTag = "TAG"
14662
14663	// GroupDefinitionTypeCostCategory is a GroupDefinitionType enum value
14664	GroupDefinitionTypeCostCategory = "COST_CATEGORY"
14665)
14666
14667// GroupDefinitionType_Values returns all elements of the GroupDefinitionType enum
14668func GroupDefinitionType_Values() []string {
14669	return []string{
14670		GroupDefinitionTypeDimension,
14671		GroupDefinitionTypeTag,
14672		GroupDefinitionTypeCostCategory,
14673	}
14674}
14675
14676const (
14677	// LookbackPeriodInDaysSevenDays is a LookbackPeriodInDays enum value
14678	LookbackPeriodInDaysSevenDays = "SEVEN_DAYS"
14679
14680	// LookbackPeriodInDaysThirtyDays is a LookbackPeriodInDays enum value
14681	LookbackPeriodInDaysThirtyDays = "THIRTY_DAYS"
14682
14683	// LookbackPeriodInDaysSixtyDays is a LookbackPeriodInDays enum value
14684	LookbackPeriodInDaysSixtyDays = "SIXTY_DAYS"
14685)
14686
14687// LookbackPeriodInDays_Values returns all elements of the LookbackPeriodInDays enum
14688func LookbackPeriodInDays_Values() []string {
14689	return []string{
14690		LookbackPeriodInDaysSevenDays,
14691		LookbackPeriodInDaysThirtyDays,
14692		LookbackPeriodInDaysSixtyDays,
14693	}
14694}
14695
14696const (
14697	// MatchOptionEquals is a MatchOption enum value
14698	MatchOptionEquals = "EQUALS"
14699
14700	// MatchOptionAbsent is a MatchOption enum value
14701	MatchOptionAbsent = "ABSENT"
14702
14703	// MatchOptionStartsWith is a MatchOption enum value
14704	MatchOptionStartsWith = "STARTS_WITH"
14705
14706	// MatchOptionEndsWith is a MatchOption enum value
14707	MatchOptionEndsWith = "ENDS_WITH"
14708
14709	// MatchOptionContains is a MatchOption enum value
14710	MatchOptionContains = "CONTAINS"
14711
14712	// MatchOptionCaseSensitive is a MatchOption enum value
14713	MatchOptionCaseSensitive = "CASE_SENSITIVE"
14714
14715	// MatchOptionCaseInsensitive is a MatchOption enum value
14716	MatchOptionCaseInsensitive = "CASE_INSENSITIVE"
14717)
14718
14719// MatchOption_Values returns all elements of the MatchOption enum
14720func MatchOption_Values() []string {
14721	return []string{
14722		MatchOptionEquals,
14723		MatchOptionAbsent,
14724		MatchOptionStartsWith,
14725		MatchOptionEndsWith,
14726		MatchOptionContains,
14727		MatchOptionCaseSensitive,
14728		MatchOptionCaseInsensitive,
14729	}
14730}
14731
14732const (
14733	// MetricBlendedCost is a Metric enum value
14734	MetricBlendedCost = "BLENDED_COST"
14735
14736	// MetricUnblendedCost is a Metric enum value
14737	MetricUnblendedCost = "UNBLENDED_COST"
14738
14739	// MetricAmortizedCost is a Metric enum value
14740	MetricAmortizedCost = "AMORTIZED_COST"
14741
14742	// MetricNetUnblendedCost is a Metric enum value
14743	MetricNetUnblendedCost = "NET_UNBLENDED_COST"
14744
14745	// MetricNetAmortizedCost is a Metric enum value
14746	MetricNetAmortizedCost = "NET_AMORTIZED_COST"
14747
14748	// MetricUsageQuantity is a Metric enum value
14749	MetricUsageQuantity = "USAGE_QUANTITY"
14750
14751	// MetricNormalizedUsageAmount is a Metric enum value
14752	MetricNormalizedUsageAmount = "NORMALIZED_USAGE_AMOUNT"
14753)
14754
14755// Metric_Values returns all elements of the Metric enum
14756func Metric_Values() []string {
14757	return []string{
14758		MetricBlendedCost,
14759		MetricUnblendedCost,
14760		MetricAmortizedCost,
14761		MetricNetUnblendedCost,
14762		MetricNetAmortizedCost,
14763		MetricUsageQuantity,
14764		MetricNormalizedUsageAmount,
14765	}
14766}
14767
14768const (
14769	// MonitorDimensionService is a MonitorDimension enum value
14770	MonitorDimensionService = "SERVICE"
14771)
14772
14773// MonitorDimension_Values returns all elements of the MonitorDimension enum
14774func MonitorDimension_Values() []string {
14775	return []string{
14776		MonitorDimensionService,
14777	}
14778}
14779
14780const (
14781	// MonitorTypeDimensional is a MonitorType enum value
14782	MonitorTypeDimensional = "DIMENSIONAL"
14783
14784	// MonitorTypeCustom is a MonitorType enum value
14785	MonitorTypeCustom = "CUSTOM"
14786)
14787
14788// MonitorType_Values returns all elements of the MonitorType enum
14789func MonitorType_Values() []string {
14790	return []string{
14791		MonitorTypeDimensional,
14792		MonitorTypeCustom,
14793	}
14794}
14795
14796const (
14797	// NumericOperatorEqual is a NumericOperator enum value
14798	NumericOperatorEqual = "EQUAL"
14799
14800	// NumericOperatorGreaterThanOrEqual is a NumericOperator enum value
14801	NumericOperatorGreaterThanOrEqual = "GREATER_THAN_OR_EQUAL"
14802
14803	// NumericOperatorLessThanOrEqual is a NumericOperator enum value
14804	NumericOperatorLessThanOrEqual = "LESS_THAN_OR_EQUAL"
14805
14806	// NumericOperatorGreaterThan is a NumericOperator enum value
14807	NumericOperatorGreaterThan = "GREATER_THAN"
14808
14809	// NumericOperatorLessThan is a NumericOperator enum value
14810	NumericOperatorLessThan = "LESS_THAN"
14811
14812	// NumericOperatorBetween is a NumericOperator enum value
14813	NumericOperatorBetween = "BETWEEN"
14814)
14815
14816// NumericOperator_Values returns all elements of the NumericOperator enum
14817func NumericOperator_Values() []string {
14818	return []string{
14819		NumericOperatorEqual,
14820		NumericOperatorGreaterThanOrEqual,
14821		NumericOperatorLessThanOrEqual,
14822		NumericOperatorGreaterThan,
14823		NumericOperatorLessThan,
14824		NumericOperatorBetween,
14825	}
14826}
14827
14828const (
14829	// OfferingClassStandard is a OfferingClass enum value
14830	OfferingClassStandard = "STANDARD"
14831
14832	// OfferingClassConvertible is a OfferingClass enum value
14833	OfferingClassConvertible = "CONVERTIBLE"
14834)
14835
14836// OfferingClass_Values returns all elements of the OfferingClass enum
14837func OfferingClass_Values() []string {
14838	return []string{
14839		OfferingClassStandard,
14840		OfferingClassConvertible,
14841	}
14842}
14843
14844const (
14845	// PaymentOptionNoUpfront is a PaymentOption enum value
14846	PaymentOptionNoUpfront = "NO_UPFRONT"
14847
14848	// PaymentOptionPartialUpfront is a PaymentOption enum value
14849	PaymentOptionPartialUpfront = "PARTIAL_UPFRONT"
14850
14851	// PaymentOptionAllUpfront is a PaymentOption enum value
14852	PaymentOptionAllUpfront = "ALL_UPFRONT"
14853
14854	// PaymentOptionLightUtilization is a PaymentOption enum value
14855	PaymentOptionLightUtilization = "LIGHT_UTILIZATION"
14856
14857	// PaymentOptionMediumUtilization is a PaymentOption enum value
14858	PaymentOptionMediumUtilization = "MEDIUM_UTILIZATION"
14859
14860	// PaymentOptionHeavyUtilization is a PaymentOption enum value
14861	PaymentOptionHeavyUtilization = "HEAVY_UTILIZATION"
14862)
14863
14864// PaymentOption_Values returns all elements of the PaymentOption enum
14865func PaymentOption_Values() []string {
14866	return []string{
14867		PaymentOptionNoUpfront,
14868		PaymentOptionPartialUpfront,
14869		PaymentOptionAllUpfront,
14870		PaymentOptionLightUtilization,
14871		PaymentOptionMediumUtilization,
14872		PaymentOptionHeavyUtilization,
14873	}
14874}
14875
14876const (
14877	// PlatformDifferenceHypervisor is a PlatformDifference enum value
14878	PlatformDifferenceHypervisor = "HYPERVISOR"
14879
14880	// PlatformDifferenceNetworkInterface is a PlatformDifference enum value
14881	PlatformDifferenceNetworkInterface = "NETWORK_INTERFACE"
14882
14883	// PlatformDifferenceStorageInterface is a PlatformDifference enum value
14884	PlatformDifferenceStorageInterface = "STORAGE_INTERFACE"
14885
14886	// PlatformDifferenceInstanceStoreAvailability is a PlatformDifference enum value
14887	PlatformDifferenceInstanceStoreAvailability = "INSTANCE_STORE_AVAILABILITY"
14888
14889	// PlatformDifferenceVirtualizationType is a PlatformDifference enum value
14890	PlatformDifferenceVirtualizationType = "VIRTUALIZATION_TYPE"
14891)
14892
14893// PlatformDifference_Values returns all elements of the PlatformDifference enum
14894func PlatformDifference_Values() []string {
14895	return []string{
14896		PlatformDifferenceHypervisor,
14897		PlatformDifferenceNetworkInterface,
14898		PlatformDifferenceStorageInterface,
14899		PlatformDifferenceInstanceStoreAvailability,
14900		PlatformDifferenceVirtualizationType,
14901	}
14902}
14903
14904const (
14905	// RecommendationTargetSameInstanceFamily is a RecommendationTarget enum value
14906	RecommendationTargetSameInstanceFamily = "SAME_INSTANCE_FAMILY"
14907
14908	// RecommendationTargetCrossInstanceFamily is a RecommendationTarget enum value
14909	RecommendationTargetCrossInstanceFamily = "CROSS_INSTANCE_FAMILY"
14910)
14911
14912// RecommendationTarget_Values returns all elements of the RecommendationTarget enum
14913func RecommendationTarget_Values() []string {
14914	return []string{
14915		RecommendationTargetSameInstanceFamily,
14916		RecommendationTargetCrossInstanceFamily,
14917	}
14918}
14919
14920const (
14921	// RightsizingTypeTerminate is a RightsizingType enum value
14922	RightsizingTypeTerminate = "TERMINATE"
14923
14924	// RightsizingTypeModify is a RightsizingType enum value
14925	RightsizingTypeModify = "MODIFY"
14926)
14927
14928// RightsizingType_Values returns all elements of the RightsizingType enum
14929func RightsizingType_Values() []string {
14930	return []string{
14931		RightsizingTypeTerminate,
14932		RightsizingTypeModify,
14933	}
14934}
14935
14936const (
14937	// SavingsPlansDataTypeAttributes is a SavingsPlansDataType enum value
14938	SavingsPlansDataTypeAttributes = "ATTRIBUTES"
14939
14940	// SavingsPlansDataTypeUtilization is a SavingsPlansDataType enum value
14941	SavingsPlansDataTypeUtilization = "UTILIZATION"
14942
14943	// SavingsPlansDataTypeAmortizedCommitment is a SavingsPlansDataType enum value
14944	SavingsPlansDataTypeAmortizedCommitment = "AMORTIZED_COMMITMENT"
14945
14946	// SavingsPlansDataTypeSavings is a SavingsPlansDataType enum value
14947	SavingsPlansDataTypeSavings = "SAVINGS"
14948)
14949
14950// SavingsPlansDataType_Values returns all elements of the SavingsPlansDataType enum
14951func SavingsPlansDataType_Values() []string {
14952	return []string{
14953		SavingsPlansDataTypeAttributes,
14954		SavingsPlansDataTypeUtilization,
14955		SavingsPlansDataTypeAmortizedCommitment,
14956		SavingsPlansDataTypeSavings,
14957	}
14958}
14959
14960const (
14961	// SortOrderAscending is a SortOrder enum value
14962	SortOrderAscending = "ASCENDING"
14963
14964	// SortOrderDescending is a SortOrder enum value
14965	SortOrderDescending = "DESCENDING"
14966)
14967
14968// SortOrder_Values returns all elements of the SortOrder enum
14969func SortOrder_Values() []string {
14970	return []string{
14971		SortOrderAscending,
14972		SortOrderDescending,
14973	}
14974}
14975
14976const (
14977	// SubscriberStatusConfirmed is a SubscriberStatus enum value
14978	SubscriberStatusConfirmed = "CONFIRMED"
14979
14980	// SubscriberStatusDeclined is a SubscriberStatus enum value
14981	SubscriberStatusDeclined = "DECLINED"
14982)
14983
14984// SubscriberStatus_Values returns all elements of the SubscriberStatus enum
14985func SubscriberStatus_Values() []string {
14986	return []string{
14987		SubscriberStatusConfirmed,
14988		SubscriberStatusDeclined,
14989	}
14990}
14991
14992const (
14993	// SubscriberTypeEmail is a SubscriberType enum value
14994	SubscriberTypeEmail = "EMAIL"
14995
14996	// SubscriberTypeSns is a SubscriberType enum value
14997	SubscriberTypeSns = "SNS"
14998)
14999
15000// SubscriberType_Values returns all elements of the SubscriberType enum
15001func SubscriberType_Values() []string {
15002	return []string{
15003		SubscriberTypeEmail,
15004		SubscriberTypeSns,
15005	}
15006}
15007
15008const (
15009	// SupportedSavingsPlansTypeComputeSp is a SupportedSavingsPlansType enum value
15010	SupportedSavingsPlansTypeComputeSp = "COMPUTE_SP"
15011
15012	// SupportedSavingsPlansTypeEc2InstanceSp is a SupportedSavingsPlansType enum value
15013	SupportedSavingsPlansTypeEc2InstanceSp = "EC2_INSTANCE_SP"
15014
15015	// SupportedSavingsPlansTypeSagemakerSp is a SupportedSavingsPlansType enum value
15016	SupportedSavingsPlansTypeSagemakerSp = "SAGEMAKER_SP"
15017)
15018
15019// SupportedSavingsPlansType_Values returns all elements of the SupportedSavingsPlansType enum
15020func SupportedSavingsPlansType_Values() []string {
15021	return []string{
15022		SupportedSavingsPlansTypeComputeSp,
15023		SupportedSavingsPlansTypeEc2InstanceSp,
15024		SupportedSavingsPlansTypeSagemakerSp,
15025	}
15026}
15027
15028const (
15029	// TermInYearsOneYear is a TermInYears enum value
15030	TermInYearsOneYear = "ONE_YEAR"
15031
15032	// TermInYearsThreeYears is a TermInYears enum value
15033	TermInYearsThreeYears = "THREE_YEARS"
15034)
15035
15036// TermInYears_Values returns all elements of the TermInYears enum
15037func TermInYears_Values() []string {
15038	return []string{
15039		TermInYearsOneYear,
15040		TermInYearsThreeYears,
15041	}
15042}
15043