github.com/aavshr/aws-sdk-go@v1.41.3/service/costexplorer/api.go (about)

     1  // Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
     2  
     3  package costexplorer
     4  
     5  import (
     6  	"fmt"
     7  
     8  	"github.com/aavshr/aws-sdk-go/aws"
     9  	"github.com/aavshr/aws-sdk-go/aws/awsutil"
    10  	"github.com/aavshr/aws-sdk-go/aws/request"
    11  	"github.com/aavshr/aws-sdk-go/private/protocol"
    12  	"github.com/aavshr/aws-sdk-go/private/protocol/jsonrpc"
    13  )
    14  
    15  const 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
    41  func (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
    74  func (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.
    88  func (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  
    95  const 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
   121  func (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
   159  func (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.
   173  func (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  
   180  const 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
   206  func (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
   242  func (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.
   256  func (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  
   263  const 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
   289  func (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
   325  func (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.
   339  func (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  
   346  const 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
   372  func (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
   408  func (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.
   422  func (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  
   429  const 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
   455  func (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
   491  func (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.
   505  func (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  
   512  const 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
   538  func (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
   579  func (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.
   593  func (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  
   600  const 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
   626  func (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
   662  func (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.
   676  func (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  
   683  const 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
   709  func (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
   748  func (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.
   762  func (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  
   769  const 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
   795  func (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
   834  func (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.
   848  func (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  
   855  const 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
   881  func (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
   936  func (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.
   950  func (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  
   957  const 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
   983  func (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
  1040  func (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.
  1054  func (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  
  1061  const 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
  1087  func (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
  1135  func (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.
  1149  func (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  
  1156  const 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
  1182  func (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
  1218  func (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.
  1232  func (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  
  1239  const 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
  1265  func (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
  1311  func (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.
  1325  func (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  
  1332  const 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
  1358  func (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
  1428  func (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.
  1442  func (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  
  1449  const 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
  1475  func (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
  1532  func (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.
  1546  func (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  
  1553  const 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
  1579  func (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
  1620  func (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.
  1634  func (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  
  1641  const 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
  1667  func (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
  1708  func (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.
  1722  func (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  
  1729  const 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
  1755  func (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
  1814  func (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.
  1828  func (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  //
  1852  func (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.
  1863  func (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  
  1887  const 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
  1913  func (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
  1949  func (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.
  1963  func (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  
  1970  const 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
  1996  func (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
  2036  func (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.
  2050  func (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  
  2057  const 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
  2083  func (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
  2135  func (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.
  2149  func (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  //
  2173  func (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.
  2184  func (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  
  2208  const 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
  2234  func (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
  2280  func (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.
  2294  func (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  
  2301  const 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
  2327  func (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
  2367  func (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.
  2381  func (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  
  2388  const 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
  2414  func (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
  2458  func (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.
  2472  func (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  //
  2496  func (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.
  2507  func (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  
  2531  const 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
  2557  func (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
  2589  func (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.
  2603  func (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  
  2610  const 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
  2636  func (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
  2672  func (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.
  2686  func (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  
  2693  const 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
  2719  func (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
  2757  func (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.
  2771  func (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  
  2778  const 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
  2804  func (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
  2845  func (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.
  2859  func (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.
  2868  type 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".
  2913  func (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".
  2922  func (s Anomaly) GoString() string {
  2923  	return s.String()
  2924  }
  2925  
  2926  // SetAnomalyEndDate sets the AnomalyEndDate field's value.
  2927  func (s *Anomaly) SetAnomalyEndDate(v string) *Anomaly {
  2928  	s.AnomalyEndDate = &v
  2929  	return s
  2930  }
  2931  
  2932  // SetAnomalyId sets the AnomalyId field's value.
  2933  func (s *Anomaly) SetAnomalyId(v string) *Anomaly {
  2934  	s.AnomalyId = &v
  2935  	return s
  2936  }
  2937  
  2938  // SetAnomalyScore sets the AnomalyScore field's value.
  2939  func (s *Anomaly) SetAnomalyScore(v *AnomalyScore) *Anomaly {
  2940  	s.AnomalyScore = v
  2941  	return s
  2942  }
  2943  
  2944  // SetAnomalyStartDate sets the AnomalyStartDate field's value.
  2945  func (s *Anomaly) SetAnomalyStartDate(v string) *Anomaly {
  2946  	s.AnomalyStartDate = &v
  2947  	return s
  2948  }
  2949  
  2950  // SetDimensionValue sets the DimensionValue field's value.
  2951  func (s *Anomaly) SetDimensionValue(v string) *Anomaly {
  2952  	s.DimensionValue = &v
  2953  	return s
  2954  }
  2955  
  2956  // SetFeedback sets the Feedback field's value.
  2957  func (s *Anomaly) SetFeedback(v string) *Anomaly {
  2958  	s.Feedback = &v
  2959  	return s
  2960  }
  2961  
  2962  // SetImpact sets the Impact field's value.
  2963  func (s *Anomaly) SetImpact(v *Impact) *Anomaly {
  2964  	s.Impact = v
  2965  	return s
  2966  }
  2967  
  2968  // SetMonitorArn sets the MonitorArn field's value.
  2969  func (s *Anomaly) SetMonitorArn(v string) *Anomaly {
  2970  	s.MonitorArn = &v
  2971  	return s
  2972  }
  2973  
  2974  // SetRootCauses sets the RootCauses field's value.
  2975  func (s *Anomaly) SetRootCauses(v []*RootCause) *Anomaly {
  2976  	s.RootCauses = v
  2977  	return s
  2978  }
  2979  
  2980  // The time period for an anomaly.
  2981  type 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".
  2998  func (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".
  3007  func (s AnomalyDateInterval) GoString() string {
  3008  	return s.String()
  3009  }
  3010  
  3011  // Validate inspects the fields of the type to determine if they are valid.
  3012  func (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.
  3025  func (s *AnomalyDateInterval) SetEndDate(v string) *AnomalyDateInterval {
  3026  	s.EndDate = &v
  3027  	return s
  3028  }
  3029  
  3030  // SetStartDate sets the StartDate field's value.
  3031  func (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.
  3039  type 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".
  3111  func (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".
  3120  func (s AnomalyMonitor) GoString() string {
  3121  	return s.String()
  3122  }
  3123  
  3124  // Validate inspects the fields of the type to determine if they are valid.
  3125  func (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.
  3146  func (s *AnomalyMonitor) SetCreationDate(v string) *AnomalyMonitor {
  3147  	s.CreationDate = &v
  3148  	return s
  3149  }
  3150  
  3151  // SetDimensionalValueCount sets the DimensionalValueCount field's value.
  3152  func (s *AnomalyMonitor) SetDimensionalValueCount(v int64) *AnomalyMonitor {
  3153  	s.DimensionalValueCount = &v
  3154  	return s
  3155  }
  3156  
  3157  // SetLastEvaluatedDate sets the LastEvaluatedDate field's value.
  3158  func (s *AnomalyMonitor) SetLastEvaluatedDate(v string) *AnomalyMonitor {
  3159  	s.LastEvaluatedDate = &v
  3160  	return s
  3161  }
  3162  
  3163  // SetLastUpdatedDate sets the LastUpdatedDate field's value.
  3164  func (s *AnomalyMonitor) SetLastUpdatedDate(v string) *AnomalyMonitor {
  3165  	s.LastUpdatedDate = &v
  3166  	return s
  3167  }
  3168  
  3169  // SetMonitorArn sets the MonitorArn field's value.
  3170  func (s *AnomalyMonitor) SetMonitorArn(v string) *AnomalyMonitor {
  3171  	s.MonitorArn = &v
  3172  	return s
  3173  }
  3174  
  3175  // SetMonitorDimension sets the MonitorDimension field's value.
  3176  func (s *AnomalyMonitor) SetMonitorDimension(v string) *AnomalyMonitor {
  3177  	s.MonitorDimension = &v
  3178  	return s
  3179  }
  3180  
  3181  // SetMonitorName sets the MonitorName field's value.
  3182  func (s *AnomalyMonitor) SetMonitorName(v string) *AnomalyMonitor {
  3183  	s.MonitorName = &v
  3184  	return s
  3185  }
  3186  
  3187  // SetMonitorSpecification sets the MonitorSpecification field's value.
  3188  func (s *AnomalyMonitor) SetMonitorSpecification(v *Expression) *AnomalyMonitor {
  3189  	s.MonitorSpecification = v
  3190  	return s
  3191  }
  3192  
  3193  // SetMonitorType sets the MonitorType field's value.
  3194  func (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.
  3200  type 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".
  3219  func (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".
  3228  func (s AnomalyScore) GoString() string {
  3229  	return s.String()
  3230  }
  3231  
  3232  // SetCurrentScore sets the CurrentScore field's value.
  3233  func (s *AnomalyScore) SetCurrentScore(v float64) *AnomalyScore {
  3234  	s.CurrentScore = &v
  3235  	return s
  3236  }
  3237  
  3238  // SetMaxScore sets the MaxScore field's value.
  3239  func (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.
  3248  type 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".
  3288  func (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".
  3297  func (s AnomalySubscription) GoString() string {
  3298  	return s.String()
  3299  }
  3300  
  3301  // Validate inspects the fields of the type to determine if they are valid.
  3302  func (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.
  3337  func (s *AnomalySubscription) SetAccountId(v string) *AnomalySubscription {
  3338  	s.AccountId = &v
  3339  	return s
  3340  }
  3341  
  3342  // SetFrequency sets the Frequency field's value.
  3343  func (s *AnomalySubscription) SetFrequency(v string) *AnomalySubscription {
  3344  	s.Frequency = &v
  3345  	return s
  3346  }
  3347  
  3348  // SetMonitorArnList sets the MonitorArnList field's value.
  3349  func (s *AnomalySubscription) SetMonitorArnList(v []*string) *AnomalySubscription {
  3350  	s.MonitorArnList = v
  3351  	return s
  3352  }
  3353  
  3354  // SetSubscribers sets the Subscribers field's value.
  3355  func (s *AnomalySubscription) SetSubscribers(v []*Subscriber) *AnomalySubscription {
  3356  	s.Subscribers = v
  3357  	return s
  3358  }
  3359  
  3360  // SetSubscriptionArn sets the SubscriptionArn field's value.
  3361  func (s *AnomalySubscription) SetSubscriptionArn(v string) *AnomalySubscription {
  3362  	s.SubscriptionArn = &v
  3363  	return s
  3364  }
  3365  
  3366  // SetSubscriptionName sets the SubscriptionName field's value.
  3367  func (s *AnomalySubscription) SetSubscriptionName(v string) *AnomalySubscription {
  3368  	s.SubscriptionName = &v
  3369  	return s
  3370  }
  3371  
  3372  // SetThreshold sets the Threshold field's value.
  3373  func (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.
  3379  type 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".
  3391  func (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".
  3400  func (s BillExpirationException) GoString() string {
  3401  	return s.String()
  3402  }
  3403  
  3404  func newErrorBillExpirationException(v protocol.ResponseMetadata) error {
  3405  	return &BillExpirationException{
  3406  		RespMetadata: v,
  3407  	}
  3408  }
  3409  
  3410  // Code returns the exception type name.
  3411  func (s *BillExpirationException) Code() string {
  3412  	return "BillExpirationException"
  3413  }
  3414  
  3415  // Message returns the exception's message.
  3416  func (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.
  3424  func (s *BillExpirationException) OrigErr() error {
  3425  	return nil
  3426  }
  3427  
  3428  func (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.
  3433  func (s *BillExpirationException) StatusCode() int {
  3434  	return s.RespMetadata.StatusCode
  3435  }
  3436  
  3437  // RequestID returns the service's response RequestID for request.
  3438  func (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.
  3444  type 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".
  3494  func (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".
  3503  func (s CostCategory) GoString() string {
  3504  	return s.String()
  3505  }
  3506  
  3507  // SetCostCategoryArn sets the CostCategoryArn field's value.
  3508  func (s *CostCategory) SetCostCategoryArn(v string) *CostCategory {
  3509  	s.CostCategoryArn = &v
  3510  	return s
  3511  }
  3512  
  3513  // SetDefaultValue sets the DefaultValue field's value.
  3514  func (s *CostCategory) SetDefaultValue(v string) *CostCategory {
  3515  	s.DefaultValue = &v
  3516  	return s
  3517  }
  3518  
  3519  // SetEffectiveEnd sets the EffectiveEnd field's value.
  3520  func (s *CostCategory) SetEffectiveEnd(v string) *CostCategory {
  3521  	s.EffectiveEnd = &v
  3522  	return s
  3523  }
  3524  
  3525  // SetEffectiveStart sets the EffectiveStart field's value.
  3526  func (s *CostCategory) SetEffectiveStart(v string) *CostCategory {
  3527  	s.EffectiveStart = &v
  3528  	return s
  3529  }
  3530  
  3531  // SetName sets the Name field's value.
  3532  func (s *CostCategory) SetName(v string) *CostCategory {
  3533  	s.Name = &v
  3534  	return s
  3535  }
  3536  
  3537  // SetProcessingStatus sets the ProcessingStatus field's value.
  3538  func (s *CostCategory) SetProcessingStatus(v []*CostCategoryProcessingStatus) *CostCategory {
  3539  	s.ProcessingStatus = v
  3540  	return s
  3541  }
  3542  
  3543  // SetRuleVersion sets the RuleVersion field's value.
  3544  func (s *CostCategory) SetRuleVersion(v string) *CostCategory {
  3545  	s.RuleVersion = &v
  3546  	return s
  3547  }
  3548  
  3549  // SetRules sets the Rules field's value.
  3550  func (s *CostCategory) SetRules(v []*CostCategoryRule) *CostCategory {
  3551  	s.Rules = v
  3552  	return s
  3553  }
  3554  
  3555  // SetSplitChargeRules sets the SplitChargeRules field's value.
  3556  func (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.
  3568  type 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".
  3587  func (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".
  3596  func (s CostCategoryInheritedValueDimension) GoString() string {
  3597  	return s.String()
  3598  }
  3599  
  3600  // SetDimensionKey sets the DimensionKey field's value.
  3601  func (s *CostCategoryInheritedValueDimension) SetDimensionKey(v string) *CostCategoryInheritedValueDimension {
  3602  	s.DimensionKey = &v
  3603  	return s
  3604  }
  3605  
  3606  // SetDimensionName sets the DimensionName field's value.
  3607  func (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.
  3614  type 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".
  3629  func (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".
  3638  func (s CostCategoryProcessingStatus) GoString() string {
  3639  	return s.String()
  3640  }
  3641  
  3642  // SetComponent sets the Component field's value.
  3643  func (s *CostCategoryProcessingStatus) SetComponent(v string) *CostCategoryProcessingStatus {
  3644  	s.Component = &v
  3645  	return s
  3646  }
  3647  
  3648  // SetStatus sets the Status field's value.
  3649  func (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.
  3659  type 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".
  3693  func (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".
  3702  func (s CostCategoryReference) GoString() string {
  3703  	return s.String()
  3704  }
  3705  
  3706  // SetCostCategoryArn sets the CostCategoryArn field's value.
  3707  func (s *CostCategoryReference) SetCostCategoryArn(v string) *CostCategoryReference {
  3708  	s.CostCategoryArn = &v
  3709  	return s
  3710  }
  3711  
  3712  // SetDefaultValue sets the DefaultValue field's value.
  3713  func (s *CostCategoryReference) SetDefaultValue(v string) *CostCategoryReference {
  3714  	s.DefaultValue = &v
  3715  	return s
  3716  }
  3717  
  3718  // SetEffectiveEnd sets the EffectiveEnd field's value.
  3719  func (s *CostCategoryReference) SetEffectiveEnd(v string) *CostCategoryReference {
  3720  	s.EffectiveEnd = &v
  3721  	return s
  3722  }
  3723  
  3724  // SetEffectiveStart sets the EffectiveStart field's value.
  3725  func (s *CostCategoryReference) SetEffectiveStart(v string) *CostCategoryReference {
  3726  	s.EffectiveStart = &v
  3727  	return s
  3728  }
  3729  
  3730  // SetName sets the Name field's value.
  3731  func (s *CostCategoryReference) SetName(v string) *CostCategoryReference {
  3732  	s.Name = &v
  3733  	return s
  3734  }
  3735  
  3736  // SetNumberOfRules sets the NumberOfRules field's value.
  3737  func (s *CostCategoryReference) SetNumberOfRules(v int64) *CostCategoryReference {
  3738  	s.NumberOfRules = &v
  3739  	return s
  3740  }
  3741  
  3742  // SetProcessingStatus sets the ProcessingStatus field's value.
  3743  func (s *CostCategoryReference) SetProcessingStatus(v []*CostCategoryProcessingStatus) *CostCategoryReference {
  3744  	s.ProcessingStatus = v
  3745  	return s
  3746  }
  3747  
  3748  // SetValues sets the Values field's value.
  3749  func (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.
  3757  type 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".
  3797  func (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".
  3806  func (s CostCategoryRule) GoString() string {
  3807  	return s.String()
  3808  }
  3809  
  3810  // Validate inspects the fields of the type to determine if they are valid.
  3811  func (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.
  3829  func (s *CostCategoryRule) SetInheritedValue(v *CostCategoryInheritedValueDimension) *CostCategoryRule {
  3830  	s.InheritedValue = v
  3831  	return s
  3832  }
  3833  
  3834  // SetRule sets the Rule field's value.
  3835  func (s *CostCategoryRule) SetRule(v *Expression) *CostCategoryRule {
  3836  	s.Rule = v
  3837  	return s
  3838  }
  3839  
  3840  // SetType sets the Type field's value.
  3841  func (s *CostCategoryRule) SetType(v string) *CostCategoryRule {
  3842  	s.Type = &v
  3843  	return s
  3844  }
  3845  
  3846  // SetValue sets the Value field's value.
  3847  func (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.
  3854  type 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".
  3894  func (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".
  3903  func (s CostCategorySplitChargeRule) GoString() string {
  3904  	return s.String()
  3905  }
  3906  
  3907  // Validate inspects the fields of the type to determine if they are valid.
  3908  func (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.
  3943  func (s *CostCategorySplitChargeRule) SetMethod(v string) *CostCategorySplitChargeRule {
  3944  	s.Method = &v
  3945  	return s
  3946  }
  3947  
  3948  // SetParameters sets the Parameters field's value.
  3949  func (s *CostCategorySplitChargeRule) SetParameters(v []*CostCategorySplitChargeRuleParameter) *CostCategorySplitChargeRule {
  3950  	s.Parameters = v
  3951  	return s
  3952  }
  3953  
  3954  // SetSource sets the Source field's value.
  3955  func (s *CostCategorySplitChargeRule) SetSource(v string) *CostCategorySplitChargeRule {
  3956  	s.Source = &v
  3957  	return s
  3958  }
  3959  
  3960  // SetTargets sets the Targets field's value.
  3961  func (s *CostCategorySplitChargeRule) SetTargets(v []*string) *CostCategorySplitChargeRule {
  3962  	s.Targets = v
  3963  	return s
  3964  }
  3965  
  3966  // The parameters for a split charge method.
  3967  type 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".
  3986  func (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".
  3995  func (s CostCategorySplitChargeRuleParameter) GoString() string {
  3996  	return s.String()
  3997  }
  3998  
  3999  // Validate inspects the fields of the type to determine if they are valid.
  4000  func (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.
  4019  func (s *CostCategorySplitChargeRuleParameter) SetType(v string) *CostCategorySplitChargeRuleParameter {
  4020  	s.Type = &v
  4021  	return s
  4022  }
  4023  
  4024  // SetValues sets the Values field's value.
  4025  func (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.
  4039  type 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".
  4059  func (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".
  4068  func (s CostCategoryValues) GoString() string {
  4069  	return s.String()
  4070  }
  4071  
  4072  // Validate inspects the fields of the type to determine if they are valid.
  4073  func (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.
  4086  func (s *CostCategoryValues) SetKey(v string) *CostCategoryValues {
  4087  	s.Key = &v
  4088  	return s
  4089  }
  4090  
  4091  // SetMatchOptions sets the MatchOptions field's value.
  4092  func (s *CostCategoryValues) SetMatchOptions(v []*string) *CostCategoryValues {
  4093  	s.MatchOptions = v
  4094  	return s
  4095  }
  4096  
  4097  // SetValues sets the Values field's value.
  4098  func (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.
  4104  type 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".
  4123  func (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".
  4132  func (s Coverage) GoString() string {
  4133  	return s.String()
  4134  }
  4135  
  4136  // SetCoverageCost sets the CoverageCost field's value.
  4137  func (s *Coverage) SetCoverageCost(v *CoverageCost) *Coverage {
  4138  	s.CoverageCost = v
  4139  	return s
  4140  }
  4141  
  4142  // SetCoverageHours sets the CoverageHours field's value.
  4143  func (s *Coverage) SetCoverageHours(v *CoverageHours) *Coverage {
  4144  	s.CoverageHours = v
  4145  	return s
  4146  }
  4147  
  4148  // SetCoverageNormalizedUnits sets the CoverageNormalizedUnits field's value.
  4149  func (s *Coverage) SetCoverageNormalizedUnits(v *CoverageNormalizedUnits) *Coverage {
  4150  	s.CoverageNormalizedUnits = v
  4151  	return s
  4152  }
  4153  
  4154  // Reservation coverage for a specified period, in hours.
  4155  type 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".
  4173  func (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".
  4182  func (s CoverageByTime) GoString() string {
  4183  	return s.String()
  4184  }
  4185  
  4186  // SetGroups sets the Groups field's value.
  4187  func (s *CoverageByTime) SetGroups(v []*ReservationCoverageGroup) *CoverageByTime {
  4188  	s.Groups = v
  4189  	return s
  4190  }
  4191  
  4192  // SetTimePeriod sets the TimePeriod field's value.
  4193  func (s *CoverageByTime) SetTimePeriod(v *DateInterval) *CoverageByTime {
  4194  	s.TimePeriod = v
  4195  	return s
  4196  }
  4197  
  4198  // SetTotal sets the Total field's value.
  4199  func (s *CoverageByTime) SetTotal(v *Coverage) *CoverageByTime {
  4200  	s.Total = v
  4201  	return s
  4202  }
  4203  
  4204  // How much it costs to run an instance.
  4205  type 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".
  4217  func (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".
  4226  func (s CoverageCost) GoString() string {
  4227  	return s.String()
  4228  }
  4229  
  4230  // SetOnDemandCost sets the OnDemandCost field's value.
  4231  func (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.
  4237  type 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".
  4258  func (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".
  4267  func (s CoverageHours) GoString() string {
  4268  	return s.String()
  4269  }
  4270  
  4271  // SetCoverageHoursPercentage sets the CoverageHoursPercentage field's value.
  4272  func (s *CoverageHours) SetCoverageHoursPercentage(v string) *CoverageHours {
  4273  	s.CoverageHoursPercentage = &v
  4274  	return s
  4275  }
  4276  
  4277  // SetOnDemandHours sets the OnDemandHours field's value.
  4278  func (s *CoverageHours) SetOnDemandHours(v string) *CoverageHours {
  4279  	s.OnDemandHours = &v
  4280  	return s
  4281  }
  4282  
  4283  // SetReservedHours sets the ReservedHours field's value.
  4284  func (s *CoverageHours) SetReservedHours(v string) *CoverageHours {
  4285  	s.ReservedHours = &v
  4286  	return s
  4287  }
  4288  
  4289  // SetTotalRunningHours sets the TotalRunningHours field's value.
  4290  func (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.
  4306  type 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".
  4329  func (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".
  4338  func (s CoverageNormalizedUnits) GoString() string {
  4339  	return s.String()
  4340  }
  4341  
  4342  // SetCoverageNormalizedUnitsPercentage sets the CoverageNormalizedUnitsPercentage field's value.
  4343  func (s *CoverageNormalizedUnits) SetCoverageNormalizedUnitsPercentage(v string) *CoverageNormalizedUnits {
  4344  	s.CoverageNormalizedUnitsPercentage = &v
  4345  	return s
  4346  }
  4347  
  4348  // SetOnDemandNormalizedUnits sets the OnDemandNormalizedUnits field's value.
  4349  func (s *CoverageNormalizedUnits) SetOnDemandNormalizedUnits(v string) *CoverageNormalizedUnits {
  4350  	s.OnDemandNormalizedUnits = &v
  4351  	return s
  4352  }
  4353  
  4354  // SetReservedNormalizedUnits sets the ReservedNormalizedUnits field's value.
  4355  func (s *CoverageNormalizedUnits) SetReservedNormalizedUnits(v string) *CoverageNormalizedUnits {
  4356  	s.ReservedNormalizedUnits = &v
  4357  	return s
  4358  }
  4359  
  4360  // SetTotalRunningNormalizedUnits sets the TotalRunningNormalizedUnits field's value.
  4361  func (s *CoverageNormalizedUnits) SetTotalRunningNormalizedUnits(v string) *CoverageNormalizedUnits {
  4362  	s.TotalRunningNormalizedUnits = &v
  4363  	return s
  4364  }
  4365  
  4366  type 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".
  4380  func (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".
  4389  func (s CreateAnomalyMonitorInput) GoString() string {
  4390  	return s.String()
  4391  }
  4392  
  4393  // Validate inspects the fields of the type to determine if they are valid.
  4394  func (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.
  4412  func (s *CreateAnomalyMonitorInput) SetAnomalyMonitor(v *AnomalyMonitor) *CreateAnomalyMonitorInput {
  4413  	s.AnomalyMonitor = v
  4414  	return s
  4415  }
  4416  
  4417  type 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".
  4431  func (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".
  4440  func (s CreateAnomalyMonitorOutput) GoString() string {
  4441  	return s.String()
  4442  }
  4443  
  4444  // SetMonitorArn sets the MonitorArn field's value.
  4445  func (s *CreateAnomalyMonitorOutput) SetMonitorArn(v string) *CreateAnomalyMonitorOutput {
  4446  	s.MonitorArn = &v
  4447  	return s
  4448  }
  4449  
  4450  type 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".
  4464  func (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".
  4473  func (s CreateAnomalySubscriptionInput) GoString() string {
  4474  	return s.String()
  4475  }
  4476  
  4477  // Validate inspects the fields of the type to determine if they are valid.
  4478  func (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.
  4496  func (s *CreateAnomalySubscriptionInput) SetAnomalySubscription(v *AnomalySubscription) *CreateAnomalySubscriptionInput {
  4497  	s.AnomalySubscription = v
  4498  	return s
  4499  }
  4500  
  4501  type 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".
  4515  func (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".
  4524  func (s CreateAnomalySubscriptionOutput) GoString() string {
  4525  	return s.String()
  4526  }
  4527  
  4528  // SetSubscriptionArn sets the SubscriptionArn field's value.
  4529  func (s *CreateAnomalySubscriptionOutput) SetSubscriptionArn(v string) *CreateAnomalySubscriptionOutput {
  4530  	s.SubscriptionArn = &v
  4531  	return s
  4532  }
  4533  
  4534  type 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".
  4566  func (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".
  4575  func (s CreateCostCategoryDefinitionInput) GoString() string {
  4576  	return s.String()
  4577  }
  4578  
  4579  // Validate inspects the fields of the type to determine if they are valid.
  4580  func (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.
  4631  func (s *CreateCostCategoryDefinitionInput) SetDefaultValue(v string) *CreateCostCategoryDefinitionInput {
  4632  	s.DefaultValue = &v
  4633  	return s
  4634  }
  4635  
  4636  // SetName sets the Name field's value.
  4637  func (s *CreateCostCategoryDefinitionInput) SetName(v string) *CreateCostCategoryDefinitionInput {
  4638  	s.Name = &v
  4639  	return s
  4640  }
  4641  
  4642  // SetRuleVersion sets the RuleVersion field's value.
  4643  func (s *CreateCostCategoryDefinitionInput) SetRuleVersion(v string) *CreateCostCategoryDefinitionInput {
  4644  	s.RuleVersion = &v
  4645  	return s
  4646  }
  4647  
  4648  // SetRules sets the Rules field's value.
  4649  func (s *CreateCostCategoryDefinitionInput) SetRules(v []*CostCategoryRule) *CreateCostCategoryDefinitionInput {
  4650  	s.Rules = v
  4651  	return s
  4652  }
  4653  
  4654  // SetSplitChargeRules sets the SplitChargeRules field's value.
  4655  func (s *CreateCostCategoryDefinitionInput) SetSplitChargeRules(v []*CostCategorySplitChargeRule) *CreateCostCategoryDefinitionInput {
  4656  	s.SplitChargeRules = v
  4657  	return s
  4658  }
  4659  
  4660  type 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".
  4675  func (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".
  4684  func (s CreateCostCategoryDefinitionOutput) GoString() string {
  4685  	return s.String()
  4686  }
  4687  
  4688  // SetCostCategoryArn sets the CostCategoryArn field's value.
  4689  func (s *CreateCostCategoryDefinitionOutput) SetCostCategoryArn(v string) *CreateCostCategoryDefinitionOutput {
  4690  	s.CostCategoryArn = &v
  4691  	return s
  4692  }
  4693  
  4694  // SetEffectiveStart sets the EffectiveStart field's value.
  4695  func (s *CreateCostCategoryDefinitionOutput) SetEffectiveStart(v string) *CreateCostCategoryDefinitionOutput {
  4696  	s.EffectiveStart = &v
  4697  	return s
  4698  }
  4699  
  4700  // Context about the current instance.
  4701  type 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".
  4747  func (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".
  4756  func (s CurrentInstance) GoString() string {
  4757  	return s.String()
  4758  }
  4759  
  4760  // SetCurrencyCode sets the CurrencyCode field's value.
  4761  func (s *CurrentInstance) SetCurrencyCode(v string) *CurrentInstance {
  4762  	s.CurrencyCode = &v
  4763  	return s
  4764  }
  4765  
  4766  // SetInstanceName sets the InstanceName field's value.
  4767  func (s *CurrentInstance) SetInstanceName(v string) *CurrentInstance {
  4768  	s.InstanceName = &v
  4769  	return s
  4770  }
  4771  
  4772  // SetMonthlyCost sets the MonthlyCost field's value.
  4773  func (s *CurrentInstance) SetMonthlyCost(v string) *CurrentInstance {
  4774  	s.MonthlyCost = &v
  4775  	return s
  4776  }
  4777  
  4778  // SetOnDemandHoursInLookbackPeriod sets the OnDemandHoursInLookbackPeriod field's value.
  4779  func (s *CurrentInstance) SetOnDemandHoursInLookbackPeriod(v string) *CurrentInstance {
  4780  	s.OnDemandHoursInLookbackPeriod = &v
  4781  	return s
  4782  }
  4783  
  4784  // SetReservationCoveredHoursInLookbackPeriod sets the ReservationCoveredHoursInLookbackPeriod field's value.
  4785  func (s *CurrentInstance) SetReservationCoveredHoursInLookbackPeriod(v string) *CurrentInstance {
  4786  	s.ReservationCoveredHoursInLookbackPeriod = &v
  4787  	return s
  4788  }
  4789  
  4790  // SetResourceDetails sets the ResourceDetails field's value.
  4791  func (s *CurrentInstance) SetResourceDetails(v *ResourceDetails) *CurrentInstance {
  4792  	s.ResourceDetails = v
  4793  	return s
  4794  }
  4795  
  4796  // SetResourceId sets the ResourceId field's value.
  4797  func (s *CurrentInstance) SetResourceId(v string) *CurrentInstance {
  4798  	s.ResourceId = &v
  4799  	return s
  4800  }
  4801  
  4802  // SetResourceUtilization sets the ResourceUtilization field's value.
  4803  func (s *CurrentInstance) SetResourceUtilization(v *ResourceUtilization) *CurrentInstance {
  4804  	s.ResourceUtilization = v
  4805  	return s
  4806  }
  4807  
  4808  // SetSavingsPlansCoveredHoursInLookbackPeriod sets the SavingsPlansCoveredHoursInLookbackPeriod field's value.
  4809  func (s *CurrentInstance) SetSavingsPlansCoveredHoursInLookbackPeriod(v string) *CurrentInstance {
  4810  	s.SavingsPlansCoveredHoursInLookbackPeriod = &v
  4811  	return s
  4812  }
  4813  
  4814  // SetTags sets the Tags field's value.
  4815  func (s *CurrentInstance) SetTags(v []*TagValues) *CurrentInstance {
  4816  	s.Tags = v
  4817  	return s
  4818  }
  4819  
  4820  // SetTotalRunningHoursInLookbackPeriod sets the TotalRunningHoursInLookbackPeriod field's value.
  4821  func (s *CurrentInstance) SetTotalRunningHoursInLookbackPeriod(v string) *CurrentInstance {
  4822  	s.TotalRunningHoursInLookbackPeriod = &v
  4823  	return s
  4824  }
  4825  
  4826  // The requested data is unavailable.
  4827  type 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".
  4839  func (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".
  4848  func (s DataUnavailableException) GoString() string {
  4849  	return s.String()
  4850  }
  4851  
  4852  func newErrorDataUnavailableException(v protocol.ResponseMetadata) error {
  4853  	return &DataUnavailableException{
  4854  		RespMetadata: v,
  4855  	}
  4856  }
  4857  
  4858  // Code returns the exception type name.
  4859  func (s *DataUnavailableException) Code() string {
  4860  	return "DataUnavailableException"
  4861  }
  4862  
  4863  // Message returns the exception's message.
  4864  func (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.
  4872  func (s *DataUnavailableException) OrigErr() error {
  4873  	return nil
  4874  }
  4875  
  4876  func (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.
  4881  func (s *DataUnavailableException) StatusCode() int {
  4882  	return s.RespMetadata.StatusCode
  4883  }
  4884  
  4885  // RequestID returns the service's response RequestID for request.
  4886  func (s *DataUnavailableException) RequestID() string {
  4887  	return s.RespMetadata.RequestID
  4888  }
  4889  
  4890  // The time period of the request.
  4891  type 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".
  4915  func (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".
  4924  func (s DateInterval) GoString() string {
  4925  	return s.String()
  4926  }
  4927  
  4928  // Validate inspects the fields of the type to determine if they are valid.
  4929  func (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.
  4945  func (s *DateInterval) SetEnd(v string) *DateInterval {
  4946  	s.End = &v
  4947  	return s
  4948  }
  4949  
  4950  // SetStart sets the Start field's value.
  4951  func (s *DateInterval) SetStart(v string) *DateInterval {
  4952  	s.Start = &v
  4953  	return s
  4954  }
  4955  
  4956  type 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".
  4970  func (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".
  4979  func (s DeleteAnomalyMonitorInput) GoString() string {
  4980  	return s.String()
  4981  }
  4982  
  4983  // Validate inspects the fields of the type to determine if they are valid.
  4984  func (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.
  4997  func (s *DeleteAnomalyMonitorInput) SetMonitorArn(v string) *DeleteAnomalyMonitorInput {
  4998  	s.MonitorArn = &v
  4999  	return s
  5000  }
  5001  
  5002  type 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".
  5011  func (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".
  5020  func (s DeleteAnomalyMonitorOutput) GoString() string {
  5021  	return s.String()
  5022  }
  5023  
  5024  type 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".
  5038  func (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".
  5047  func (s DeleteAnomalySubscriptionInput) GoString() string {
  5048  	return s.String()
  5049  }
  5050  
  5051  // Validate inspects the fields of the type to determine if they are valid.
  5052  func (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.
  5065  func (s *DeleteAnomalySubscriptionInput) SetSubscriptionArn(v string) *DeleteAnomalySubscriptionInput {
  5066  	s.SubscriptionArn = &v
  5067  	return s
  5068  }
  5069  
  5070  type 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".
  5079  func (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".
  5088  func (s DeleteAnomalySubscriptionOutput) GoString() string {
  5089  	return s.String()
  5090  }
  5091  
  5092  type 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".
  5106  func (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".
  5115  func (s DeleteCostCategoryDefinitionInput) GoString() string {
  5116  	return s.String()
  5117  }
  5118  
  5119  // Validate inspects the fields of the type to determine if they are valid.
  5120  func (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.
  5136  func (s *DeleteCostCategoryDefinitionInput) SetCostCategoryArn(v string) *DeleteCostCategoryDefinitionInput {
  5137  	s.CostCategoryArn = &v
  5138  	return s
  5139  }
  5140  
  5141  type 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".
  5157  func (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".
  5166  func (s DeleteCostCategoryDefinitionOutput) GoString() string {
  5167  	return s.String()
  5168  }
  5169  
  5170  // SetCostCategoryArn sets the CostCategoryArn field's value.
  5171  func (s *DeleteCostCategoryDefinitionOutput) SetCostCategoryArn(v string) *DeleteCostCategoryDefinitionOutput {
  5172  	s.CostCategoryArn = &v
  5173  	return s
  5174  }
  5175  
  5176  // SetEffectiveEnd sets the EffectiveEnd field's value.
  5177  func (s *DeleteCostCategoryDefinitionOutput) SetEffectiveEnd(v string) *DeleteCostCategoryDefinitionOutput {
  5178  	s.EffectiveEnd = &v
  5179  	return s
  5180  }
  5181  
  5182  type 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".
  5199  func (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".
  5208  func (s DescribeCostCategoryDefinitionInput) GoString() string {
  5209  	return s.String()
  5210  }
  5211  
  5212  // Validate inspects the fields of the type to determine if they are valid.
  5213  func (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.
  5232  func (s *DescribeCostCategoryDefinitionInput) SetCostCategoryArn(v string) *DescribeCostCategoryDefinitionInput {
  5233  	s.CostCategoryArn = &v
  5234  	return s
  5235  }
  5236  
  5237  // SetEffectiveOn sets the EffectiveOn field's value.
  5238  func (s *DescribeCostCategoryDefinitionInput) SetEffectiveOn(v string) *DescribeCostCategoryDefinitionInput {
  5239  	s.EffectiveOn = &v
  5240  	return s
  5241  }
  5242  
  5243  type 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".
  5256  func (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".
  5265  func (s DescribeCostCategoryDefinitionOutput) GoString() string {
  5266  	return s.String()
  5267  }
  5268  
  5269  // SetCostCategory sets the CostCategory field's value.
  5270  func (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.
  5277  type 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".
  5299  func (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".
  5308  func (s DimensionValues) GoString() string {
  5309  	return s.String()
  5310  }
  5311  
  5312  // SetKey sets the Key field's value.
  5313  func (s *DimensionValues) SetKey(v string) *DimensionValues {
  5314  	s.Key = &v
  5315  	return s
  5316  }
  5317  
  5318  // SetMatchOptions sets the MatchOptions field's value.
  5319  func (s *DimensionValues) SetMatchOptions(v []*string) *DimensionValues {
  5320  	s.MatchOptions = v
  5321  	return s
  5322  }
  5323  
  5324  // SetValues sets the Values field's value.
  5325  func (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.
  5332  type 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".
  5347  func (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".
  5356  func (s DimensionValuesWithAttributes) GoString() string {
  5357  	return s.String()
  5358  }
  5359  
  5360  // SetAttributes sets the Attributes field's value.
  5361  func (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.
  5367  func (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.
  5374  type 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".
  5395  func (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".
  5404  func (s DiskResourceUtilization) GoString() string {
  5405  	return s.String()
  5406  }
  5407  
  5408  // SetDiskReadBytesPerSecond sets the DiskReadBytesPerSecond field's value.
  5409  func (s *DiskResourceUtilization) SetDiskReadBytesPerSecond(v string) *DiskResourceUtilization {
  5410  	s.DiskReadBytesPerSecond = &v
  5411  	return s
  5412  }
  5413  
  5414  // SetDiskReadOpsPerSecond sets the DiskReadOpsPerSecond field's value.
  5415  func (s *DiskResourceUtilization) SetDiskReadOpsPerSecond(v string) *DiskResourceUtilization {
  5416  	s.DiskReadOpsPerSecond = &v
  5417  	return s
  5418  }
  5419  
  5420  // SetDiskWriteBytesPerSecond sets the DiskWriteBytesPerSecond field's value.
  5421  func (s *DiskResourceUtilization) SetDiskWriteBytesPerSecond(v string) *DiskResourceUtilization {
  5422  	s.DiskWriteBytesPerSecond = &v
  5423  	return s
  5424  }
  5425  
  5426  // SetDiskWriteOpsPerSecond sets the DiskWriteOpsPerSecond field's value.
  5427  func (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.
  5434  type 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".
  5455  func (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".
  5464  func (s EBSResourceUtilization) GoString() string {
  5465  	return s.String()
  5466  }
  5467  
  5468  // SetEbsReadBytesPerSecond sets the EbsReadBytesPerSecond field's value.
  5469  func (s *EBSResourceUtilization) SetEbsReadBytesPerSecond(v string) *EBSResourceUtilization {
  5470  	s.EbsReadBytesPerSecond = &v
  5471  	return s
  5472  }
  5473  
  5474  // SetEbsReadOpsPerSecond sets the EbsReadOpsPerSecond field's value.
  5475  func (s *EBSResourceUtilization) SetEbsReadOpsPerSecond(v string) *EBSResourceUtilization {
  5476  	s.EbsReadOpsPerSecond = &v
  5477  	return s
  5478  }
  5479  
  5480  // SetEbsWriteBytesPerSecond sets the EbsWriteBytesPerSecond field's value.
  5481  func (s *EBSResourceUtilization) SetEbsWriteBytesPerSecond(v string) *EBSResourceUtilization {
  5482  	s.EbsWriteBytesPerSecond = &v
  5483  	return s
  5484  }
  5485  
  5486  // SetEbsWriteOpsPerSecond sets the EbsWriteOpsPerSecond field's value.
  5487  func (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.
  5494  type 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".
  5528  func (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".
  5537  func (s EC2InstanceDetails) GoString() string {
  5538  	return s.String()
  5539  }
  5540  
  5541  // SetAvailabilityZone sets the AvailabilityZone field's value.
  5542  func (s *EC2InstanceDetails) SetAvailabilityZone(v string) *EC2InstanceDetails {
  5543  	s.AvailabilityZone = &v
  5544  	return s
  5545  }
  5546  
  5547  // SetCurrentGeneration sets the CurrentGeneration field's value.
  5548  func (s *EC2InstanceDetails) SetCurrentGeneration(v bool) *EC2InstanceDetails {
  5549  	s.CurrentGeneration = &v
  5550  	return s
  5551  }
  5552  
  5553  // SetFamily sets the Family field's value.
  5554  func (s *EC2InstanceDetails) SetFamily(v string) *EC2InstanceDetails {
  5555  	s.Family = &v
  5556  	return s
  5557  }
  5558  
  5559  // SetInstanceType sets the InstanceType field's value.
  5560  func (s *EC2InstanceDetails) SetInstanceType(v string) *EC2InstanceDetails {
  5561  	s.InstanceType = &v
  5562  	return s
  5563  }
  5564  
  5565  // SetPlatform sets the Platform field's value.
  5566  func (s *EC2InstanceDetails) SetPlatform(v string) *EC2InstanceDetails {
  5567  	s.Platform = &v
  5568  	return s
  5569  }
  5570  
  5571  // SetRegion sets the Region field's value.
  5572  func (s *EC2InstanceDetails) SetRegion(v string) *EC2InstanceDetails {
  5573  	s.Region = &v
  5574  	return s
  5575  }
  5576  
  5577  // SetSizeFlexEligible sets the SizeFlexEligible field's value.
  5578  func (s *EC2InstanceDetails) SetSizeFlexEligible(v bool) *EC2InstanceDetails {
  5579  	s.SizeFlexEligible = &v
  5580  	return s
  5581  }
  5582  
  5583  // SetTenancy sets the Tenancy field's value.
  5584  func (s *EC2InstanceDetails) SetTenancy(v string) *EC2InstanceDetails {
  5585  	s.Tenancy = &v
  5586  	return s
  5587  }
  5588  
  5589  // Details on the Amazon EC2 Resource.
  5590  type 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".
  5628  func (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".
  5637  func (s EC2ResourceDetails) GoString() string {
  5638  	return s.String()
  5639  }
  5640  
  5641  // SetHourlyOnDemandRate sets the HourlyOnDemandRate field's value.
  5642  func (s *EC2ResourceDetails) SetHourlyOnDemandRate(v string) *EC2ResourceDetails {
  5643  	s.HourlyOnDemandRate = &v
  5644  	return s
  5645  }
  5646  
  5647  // SetInstanceType sets the InstanceType field's value.
  5648  func (s *EC2ResourceDetails) SetInstanceType(v string) *EC2ResourceDetails {
  5649  	s.InstanceType = &v
  5650  	return s
  5651  }
  5652  
  5653  // SetMemory sets the Memory field's value.
  5654  func (s *EC2ResourceDetails) SetMemory(v string) *EC2ResourceDetails {
  5655  	s.Memory = &v
  5656  	return s
  5657  }
  5658  
  5659  // SetNetworkPerformance sets the NetworkPerformance field's value.
  5660  func (s *EC2ResourceDetails) SetNetworkPerformance(v string) *EC2ResourceDetails {
  5661  	s.NetworkPerformance = &v
  5662  	return s
  5663  }
  5664  
  5665  // SetPlatform sets the Platform field's value.
  5666  func (s *EC2ResourceDetails) SetPlatform(v string) *EC2ResourceDetails {
  5667  	s.Platform = &v
  5668  	return s
  5669  }
  5670  
  5671  // SetRegion sets the Region field's value.
  5672  func (s *EC2ResourceDetails) SetRegion(v string) *EC2ResourceDetails {
  5673  	s.Region = &v
  5674  	return s
  5675  }
  5676  
  5677  // SetSku sets the Sku field's value.
  5678  func (s *EC2ResourceDetails) SetSku(v string) *EC2ResourceDetails {
  5679  	s.Sku = &v
  5680  	return s
  5681  }
  5682  
  5683  // SetStorage sets the Storage field's value.
  5684  func (s *EC2ResourceDetails) SetStorage(v string) *EC2ResourceDetails {
  5685  	s.Storage = &v
  5686  	return s
  5687  }
  5688  
  5689  // SetVcpu sets the Vcpu field's value.
  5690  func (s *EC2ResourceDetails) SetVcpu(v string) *EC2ResourceDetails {
  5691  	s.Vcpu = &v
  5692  	return s
  5693  }
  5694  
  5695  // Utilization metrics of the instance.
  5696  type 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".
  5727  func (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".
  5736  func (s EC2ResourceUtilization) GoString() string {
  5737  	return s.String()
  5738  }
  5739  
  5740  // SetDiskResourceUtilization sets the DiskResourceUtilization field's value.
  5741  func (s *EC2ResourceUtilization) SetDiskResourceUtilization(v *DiskResourceUtilization) *EC2ResourceUtilization {
  5742  	s.DiskResourceUtilization = v
  5743  	return s
  5744  }
  5745  
  5746  // SetEBSResourceUtilization sets the EBSResourceUtilization field's value.
  5747  func (s *EC2ResourceUtilization) SetEBSResourceUtilization(v *EBSResourceUtilization) *EC2ResourceUtilization {
  5748  	s.EBSResourceUtilization = v
  5749  	return s
  5750  }
  5751  
  5752  // SetMaxCpuUtilizationPercentage sets the MaxCpuUtilizationPercentage field's value.
  5753  func (s *EC2ResourceUtilization) SetMaxCpuUtilizationPercentage(v string) *EC2ResourceUtilization {
  5754  	s.MaxCpuUtilizationPercentage = &v
  5755  	return s
  5756  }
  5757  
  5758  // SetMaxMemoryUtilizationPercentage sets the MaxMemoryUtilizationPercentage field's value.
  5759  func (s *EC2ResourceUtilization) SetMaxMemoryUtilizationPercentage(v string) *EC2ResourceUtilization {
  5760  	s.MaxMemoryUtilizationPercentage = &v
  5761  	return s
  5762  }
  5763  
  5764  // SetMaxStorageUtilizationPercentage sets the MaxStorageUtilizationPercentage field's value.
  5765  func (s *EC2ResourceUtilization) SetMaxStorageUtilizationPercentage(v string) *EC2ResourceUtilization {
  5766  	s.MaxStorageUtilizationPercentage = &v
  5767  	return s
  5768  }
  5769  
  5770  // SetNetworkResourceUtilization sets the NetworkResourceUtilization field's value.
  5771  func (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.
  5778  type 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".
  5790  func (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".
  5799  func (s EC2Specification) GoString() string {
  5800  	return s.String()
  5801  }
  5802  
  5803  // SetOfferingClass sets the OfferingClass field's value.
  5804  func (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.
  5811  type 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".
  5835  func (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".
  5844  func (s ESInstanceDetails) GoString() string {
  5845  	return s.String()
  5846  }
  5847  
  5848  // SetCurrentGeneration sets the CurrentGeneration field's value.
  5849  func (s *ESInstanceDetails) SetCurrentGeneration(v bool) *ESInstanceDetails {
  5850  	s.CurrentGeneration = &v
  5851  	return s
  5852  }
  5853  
  5854  // SetInstanceClass sets the InstanceClass field's value.
  5855  func (s *ESInstanceDetails) SetInstanceClass(v string) *ESInstanceDetails {
  5856  	s.InstanceClass = &v
  5857  	return s
  5858  }
  5859  
  5860  // SetInstanceSize sets the InstanceSize field's value.
  5861  func (s *ESInstanceDetails) SetInstanceSize(v string) *ESInstanceDetails {
  5862  	s.InstanceSize = &v
  5863  	return s
  5864  }
  5865  
  5866  // SetRegion sets the Region field's value.
  5867  func (s *ESInstanceDetails) SetRegion(v string) *ESInstanceDetails {
  5868  	s.Region = &v
  5869  	return s
  5870  }
  5871  
  5872  // SetSizeFlexEligible sets the SizeFlexEligible field's value.
  5873  func (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.
  5880  type 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".
  5907  func (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".
  5916  func (s ElastiCacheInstanceDetails) GoString() string {
  5917  	return s.String()
  5918  }
  5919  
  5920  // SetCurrentGeneration sets the CurrentGeneration field's value.
  5921  func (s *ElastiCacheInstanceDetails) SetCurrentGeneration(v bool) *ElastiCacheInstanceDetails {
  5922  	s.CurrentGeneration = &v
  5923  	return s
  5924  }
  5925  
  5926  // SetFamily sets the Family field's value.
  5927  func (s *ElastiCacheInstanceDetails) SetFamily(v string) *ElastiCacheInstanceDetails {
  5928  	s.Family = &v
  5929  	return s
  5930  }
  5931  
  5932  // SetNodeType sets the NodeType field's value.
  5933  func (s *ElastiCacheInstanceDetails) SetNodeType(v string) *ElastiCacheInstanceDetails {
  5934  	s.NodeType = &v
  5935  	return s
  5936  }
  5937  
  5938  // SetProductDescription sets the ProductDescription field's value.
  5939  func (s *ElastiCacheInstanceDetails) SetProductDescription(v string) *ElastiCacheInstanceDetails {
  5940  	s.ProductDescription = &v
  5941  	return s
  5942  }
  5943  
  5944  // SetRegion sets the Region field's value.
  5945  func (s *ElastiCacheInstanceDetails) SetRegion(v string) *ElastiCacheInstanceDetails {
  5946  	s.Region = &v
  5947  	return s
  5948  }
  5949  
  5950  // SetSizeFlexEligible sets the SizeFlexEligible field's value.
  5951  func (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.
  5989  type 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".
  6016  func (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".
  6025  func (s Expression) GoString() string {
  6026  	return s.String()
  6027  }
  6028  
  6029  // Validate inspects the fields of the type to determine if they are valid.
  6030  func (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.
  6060  func (s *Expression) SetAnd(v []*Expression) *Expression {
  6061  	s.And = v
  6062  	return s
  6063  }
  6064  
  6065  // SetCostCategories sets the CostCategories field's value.
  6066  func (s *Expression) SetCostCategories(v *CostCategoryValues) *Expression {
  6067  	s.CostCategories = v
  6068  	return s
  6069  }
  6070  
  6071  // SetDimensions sets the Dimensions field's value.
  6072  func (s *Expression) SetDimensions(v *DimensionValues) *Expression {
  6073  	s.Dimensions = v
  6074  	return s
  6075  }
  6076  
  6077  // SetNot sets the Not field's value.
  6078  func (s *Expression) SetNot(v *Expression) *Expression {
  6079  	s.Not = v
  6080  	return s
  6081  }
  6082  
  6083  // SetOr sets the Or field's value.
  6084  func (s *Expression) SetOr(v []*Expression) *Expression {
  6085  	s.Or = v
  6086  	return s
  6087  }
  6088  
  6089  // SetTags sets the Tags field's value.
  6090  func (s *Expression) SetTags(v *TagValues) *Expression {
  6091  	s.Tags = v
  6092  	return s
  6093  }
  6094  
  6095  // The forecast that's created for your query.
  6096  type 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".
  6117  func (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".
  6126  func (s ForecastResult) GoString() string {
  6127  	return s.String()
  6128  }
  6129  
  6130  // SetMeanValue sets the MeanValue field's value.
  6131  func (s *ForecastResult) SetMeanValue(v string) *ForecastResult {
  6132  	s.MeanValue = &v
  6133  	return s
  6134  }
  6135  
  6136  // SetPredictionIntervalLowerBound sets the PredictionIntervalLowerBound field's value.
  6137  func (s *ForecastResult) SetPredictionIntervalLowerBound(v string) *ForecastResult {
  6138  	s.PredictionIntervalLowerBound = &v
  6139  	return s
  6140  }
  6141  
  6142  // SetPredictionIntervalUpperBound sets the PredictionIntervalUpperBound field's value.
  6143  func (s *ForecastResult) SetPredictionIntervalUpperBound(v string) *ForecastResult {
  6144  	s.PredictionIntervalUpperBound = &v
  6145  	return s
  6146  }
  6147  
  6148  // SetTimePeriod sets the TimePeriod field's value.
  6149  func (s *ForecastResult) SetTimePeriod(v *DateInterval) *ForecastResult {
  6150  	s.TimePeriod = v
  6151  	return s
  6152  }
  6153  
  6154  type 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".
  6189  func (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".
  6198  func (s GetAnomaliesInput) GoString() string {
  6199  	return s.String()
  6200  }
  6201  
  6202  // Validate inspects the fields of the type to determine if they are valid.
  6203  func (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.
  6226  func (s *GetAnomaliesInput) SetDateInterval(v *AnomalyDateInterval) *GetAnomaliesInput {
  6227  	s.DateInterval = v
  6228  	return s
  6229  }
  6230  
  6231  // SetFeedback sets the Feedback field's value.
  6232  func (s *GetAnomaliesInput) SetFeedback(v string) *GetAnomaliesInput {
  6233  	s.Feedback = &v
  6234  	return s
  6235  }
  6236  
  6237  // SetMaxResults sets the MaxResults field's value.
  6238  func (s *GetAnomaliesInput) SetMaxResults(v int64) *GetAnomaliesInput {
  6239  	s.MaxResults = &v
  6240  	return s
  6241  }
  6242  
  6243  // SetMonitorArn sets the MonitorArn field's value.
  6244  func (s *GetAnomaliesInput) SetMonitorArn(v string) *GetAnomaliesInput {
  6245  	s.MonitorArn = &v
  6246  	return s
  6247  }
  6248  
  6249  // SetNextPageToken sets the NextPageToken field's value.
  6250  func (s *GetAnomaliesInput) SetNextPageToken(v string) *GetAnomaliesInput {
  6251  	s.NextPageToken = &v
  6252  	return s
  6253  }
  6254  
  6255  // SetTotalImpact sets the TotalImpact field's value.
  6256  func (s *GetAnomaliesInput) SetTotalImpact(v *TotalImpactFilter) *GetAnomaliesInput {
  6257  	s.TotalImpact = v
  6258  	return s
  6259  }
  6260  
  6261  type 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".
  6280  func (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".
  6289  func (s GetAnomaliesOutput) GoString() string {
  6290  	return s.String()
  6291  }
  6292  
  6293  // SetAnomalies sets the Anomalies field's value.
  6294  func (s *GetAnomaliesOutput) SetAnomalies(v []*Anomaly) *GetAnomaliesOutput {
  6295  	s.Anomalies = v
  6296  	return s
  6297  }
  6298  
  6299  // SetNextPageToken sets the NextPageToken field's value.
  6300  func (s *GetAnomaliesOutput) SetNextPageToken(v string) *GetAnomaliesOutput {
  6301  	s.NextPageToken = &v
  6302  	return s
  6303  }
  6304  
  6305  type 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".
  6325  func (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".
  6334  func (s GetAnomalyMonitorsInput) GoString() string {
  6335  	return s.String()
  6336  }
  6337  
  6338  // SetMaxResults sets the MaxResults field's value.
  6339  func (s *GetAnomalyMonitorsInput) SetMaxResults(v int64) *GetAnomalyMonitorsInput {
  6340  	s.MaxResults = &v
  6341  	return s
  6342  }
  6343  
  6344  // SetMonitorArnList sets the MonitorArnList field's value.
  6345  func (s *GetAnomalyMonitorsInput) SetMonitorArnList(v []*string) *GetAnomalyMonitorsInput {
  6346  	s.MonitorArnList = v
  6347  	return s
  6348  }
  6349  
  6350  // SetNextPageToken sets the NextPageToken field's value.
  6351  func (s *GetAnomalyMonitorsInput) SetNextPageToken(v string) *GetAnomalyMonitorsInput {
  6352  	s.NextPageToken = &v
  6353  	return s
  6354  }
  6355  
  6356  type 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".
  6376  func (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".
  6385  func (s GetAnomalyMonitorsOutput) GoString() string {
  6386  	return s.String()
  6387  }
  6388  
  6389  // SetAnomalyMonitors sets the AnomalyMonitors field's value.
  6390  func (s *GetAnomalyMonitorsOutput) SetAnomalyMonitors(v []*AnomalyMonitor) *GetAnomalyMonitorsOutput {
  6391  	s.AnomalyMonitors = v
  6392  	return s
  6393  }
  6394  
  6395  // SetNextPageToken sets the NextPageToken field's value.
  6396  func (s *GetAnomalyMonitorsOutput) SetNextPageToken(v string) *GetAnomalyMonitorsOutput {
  6397  	s.NextPageToken = &v
  6398  	return s
  6399  }
  6400  
  6401  type 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".
  6424  func (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".
  6433  func (s GetAnomalySubscriptionsInput) GoString() string {
  6434  	return s.String()
  6435  }
  6436  
  6437  // SetMaxResults sets the MaxResults field's value.
  6438  func (s *GetAnomalySubscriptionsInput) SetMaxResults(v int64) *GetAnomalySubscriptionsInput {
  6439  	s.MaxResults = &v
  6440  	return s
  6441  }
  6442  
  6443  // SetMonitorArn sets the MonitorArn field's value.
  6444  func (s *GetAnomalySubscriptionsInput) SetMonitorArn(v string) *GetAnomalySubscriptionsInput {
  6445  	s.MonitorArn = &v
  6446  	return s
  6447  }
  6448  
  6449  // SetNextPageToken sets the NextPageToken field's value.
  6450  func (s *GetAnomalySubscriptionsInput) SetNextPageToken(v string) *GetAnomalySubscriptionsInput {
  6451  	s.NextPageToken = &v
  6452  	return s
  6453  }
  6454  
  6455  // SetSubscriptionArnList sets the SubscriptionArnList field's value.
  6456  func (s *GetAnomalySubscriptionsInput) SetSubscriptionArnList(v []*string) *GetAnomalySubscriptionsInput {
  6457  	s.SubscriptionArnList = v
  6458  	return s
  6459  }
  6460  
  6461  type 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".
  6481  func (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".
  6490  func (s GetAnomalySubscriptionsOutput) GoString() string {
  6491  	return s.String()
  6492  }
  6493  
  6494  // SetAnomalySubscriptions sets the AnomalySubscriptions field's value.
  6495  func (s *GetAnomalySubscriptionsOutput) SetAnomalySubscriptions(v []*AnomalySubscription) *GetAnomalySubscriptionsOutput {
  6496  	s.AnomalySubscriptions = v
  6497  	return s
  6498  }
  6499  
  6500  // SetNextPageToken sets the NextPageToken field's value.
  6501  func (s *GetAnomalySubscriptionsOutput) SetNextPageToken(v string) *GetAnomalySubscriptionsOutput {
  6502  	s.NextPageToken = &v
  6503  	return s
  6504  }
  6505  
  6506  type 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".
  6573  func (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".
  6582  func (s GetCostAndUsageInput) GoString() string {
  6583  	return s.String()
  6584  }
  6585  
  6586  // Validate inspects the fields of the type to determine if they are valid.
  6587  func (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.
  6616  func (s *GetCostAndUsageInput) SetFilter(v *Expression) *GetCostAndUsageInput {
  6617  	s.Filter = v
  6618  	return s
  6619  }
  6620  
  6621  // SetGranularity sets the Granularity field's value.
  6622  func (s *GetCostAndUsageInput) SetGranularity(v string) *GetCostAndUsageInput {
  6623  	s.Granularity = &v
  6624  	return s
  6625  }
  6626  
  6627  // SetGroupBy sets the GroupBy field's value.
  6628  func (s *GetCostAndUsageInput) SetGroupBy(v []*GroupDefinition) *GetCostAndUsageInput {
  6629  	s.GroupBy = v
  6630  	return s
  6631  }
  6632  
  6633  // SetMetrics sets the Metrics field's value.
  6634  func (s *GetCostAndUsageInput) SetMetrics(v []*string) *GetCostAndUsageInput {
  6635  	s.Metrics = v
  6636  	return s
  6637  }
  6638  
  6639  // SetNextPageToken sets the NextPageToken field's value.
  6640  func (s *GetCostAndUsageInput) SetNextPageToken(v string) *GetCostAndUsageInput {
  6641  	s.NextPageToken = &v
  6642  	return s
  6643  }
  6644  
  6645  // SetTimePeriod sets the TimePeriod field's value.
  6646  func (s *GetCostAndUsageInput) SetTimePeriod(v *DateInterval) *GetCostAndUsageInput {
  6647  	s.TimePeriod = v
  6648  	return s
  6649  }
  6650  
  6651  type 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".
  6676  func (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".
  6685  func (s GetCostAndUsageOutput) GoString() string {
  6686  	return s.String()
  6687  }
  6688  
  6689  // SetDimensionValueAttributes sets the DimensionValueAttributes field's value.
  6690  func (s *GetCostAndUsageOutput) SetDimensionValueAttributes(v []*DimensionValuesWithAttributes) *GetCostAndUsageOutput {
  6691  	s.DimensionValueAttributes = v
  6692  	return s
  6693  }
  6694  
  6695  // SetGroupDefinitions sets the GroupDefinitions field's value.
  6696  func (s *GetCostAndUsageOutput) SetGroupDefinitions(v []*GroupDefinition) *GetCostAndUsageOutput {
  6697  	s.GroupDefinitions = v
  6698  	return s
  6699  }
  6700  
  6701  // SetNextPageToken sets the NextPageToken field's value.
  6702  func (s *GetCostAndUsageOutput) SetNextPageToken(v string) *GetCostAndUsageOutput {
  6703  	s.NextPageToken = &v
  6704  	return s
  6705  }
  6706  
  6707  // SetResultsByTime sets the ResultsByTime field's value.
  6708  func (s *GetCostAndUsageOutput) SetResultsByTime(v []*ResultByTime) *GetCostAndUsageOutput {
  6709  	s.ResultsByTime = v
  6710  	return s
  6711  }
  6712  
  6713  type 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".
  6778  func (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".
  6787  func (s GetCostAndUsageWithResourcesInput) GoString() string {
  6788  	return s.String()
  6789  }
  6790  
  6791  // Validate inspects the fields of the type to determine if they are valid.
  6792  func (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.
  6821  func (s *GetCostAndUsageWithResourcesInput) SetFilter(v *Expression) *GetCostAndUsageWithResourcesInput {
  6822  	s.Filter = v
  6823  	return s
  6824  }
  6825  
  6826  // SetGranularity sets the Granularity field's value.
  6827  func (s *GetCostAndUsageWithResourcesInput) SetGranularity(v string) *GetCostAndUsageWithResourcesInput {
  6828  	s.Granularity = &v
  6829  	return s
  6830  }
  6831  
  6832  // SetGroupBy sets the GroupBy field's value.
  6833  func (s *GetCostAndUsageWithResourcesInput) SetGroupBy(v []*GroupDefinition) *GetCostAndUsageWithResourcesInput {
  6834  	s.GroupBy = v
  6835  	return s
  6836  }
  6837  
  6838  // SetMetrics sets the Metrics field's value.
  6839  func (s *GetCostAndUsageWithResourcesInput) SetMetrics(v []*string) *GetCostAndUsageWithResourcesInput {
  6840  	s.Metrics = v
  6841  	return s
  6842  }
  6843  
  6844  // SetNextPageToken sets the NextPageToken field's value.
  6845  func (s *GetCostAndUsageWithResourcesInput) SetNextPageToken(v string) *GetCostAndUsageWithResourcesInput {
  6846  	s.NextPageToken = &v
  6847  	return s
  6848  }
  6849  
  6850  // SetTimePeriod sets the TimePeriod field's value.
  6851  func (s *GetCostAndUsageWithResourcesInput) SetTimePeriod(v *DateInterval) *GetCostAndUsageWithResourcesInput {
  6852  	s.TimePeriod = v
  6853  	return s
  6854  }
  6855  
  6856  type 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".
  6881  func (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".
  6890  func (s GetCostAndUsageWithResourcesOutput) GoString() string {
  6891  	return s.String()
  6892  }
  6893  
  6894  // SetDimensionValueAttributes sets the DimensionValueAttributes field's value.
  6895  func (s *GetCostAndUsageWithResourcesOutput) SetDimensionValueAttributes(v []*DimensionValuesWithAttributes) *GetCostAndUsageWithResourcesOutput {
  6896  	s.DimensionValueAttributes = v
  6897  	return s
  6898  }
  6899  
  6900  // SetGroupDefinitions sets the GroupDefinitions field's value.
  6901  func (s *GetCostAndUsageWithResourcesOutput) SetGroupDefinitions(v []*GroupDefinition) *GetCostAndUsageWithResourcesOutput {
  6902  	s.GroupDefinitions = v
  6903  	return s
  6904  }
  6905  
  6906  // SetNextPageToken sets the NextPageToken field's value.
  6907  func (s *GetCostAndUsageWithResourcesOutput) SetNextPageToken(v string) *GetCostAndUsageWithResourcesOutput {
  6908  	s.NextPageToken = &v
  6909  	return s
  6910  }
  6911  
  6912  // SetResultsByTime sets the ResultsByTime field's value.
  6913  func (s *GetCostAndUsageWithResourcesOutput) SetResultsByTime(v []*ResultByTime) *GetCostAndUsageWithResourcesOutput {
  6914  	s.ResultsByTime = v
  6915  	return s
  6916  }
  6917  
  6918  type 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".
  7016  func (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".
  7025  func (s GetCostCategoriesInput) GoString() string {
  7026  	return s.String()
  7027  }
  7028  
  7029  // Validate inspects the fields of the type to determine if they are valid.
  7030  func (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.
  7069  func (s *GetCostCategoriesInput) SetCostCategoryName(v string) *GetCostCategoriesInput {
  7070  	s.CostCategoryName = &v
  7071  	return s
  7072  }
  7073  
  7074  // SetFilter sets the Filter field's value.
  7075  func (s *GetCostCategoriesInput) SetFilter(v *Expression) *GetCostCategoriesInput {
  7076  	s.Filter = v
  7077  	return s
  7078  }
  7079  
  7080  // SetMaxResults sets the MaxResults field's value.
  7081  func (s *GetCostCategoriesInput) SetMaxResults(v int64) *GetCostCategoriesInput {
  7082  	s.MaxResults = &v
  7083  	return s
  7084  }
  7085  
  7086  // SetNextPageToken sets the NextPageToken field's value.
  7087  func (s *GetCostCategoriesInput) SetNextPageToken(v string) *GetCostCategoriesInput {
  7088  	s.NextPageToken = &v
  7089  	return s
  7090  }
  7091  
  7092  // SetSearchString sets the SearchString field's value.
  7093  func (s *GetCostCategoriesInput) SetSearchString(v string) *GetCostCategoriesInput {
  7094  	s.SearchString = &v
  7095  	return s
  7096  }
  7097  
  7098  // SetSortBy sets the SortBy field's value.
  7099  func (s *GetCostCategoriesInput) SetSortBy(v []*SortDefinition) *GetCostCategoriesInput {
  7100  	s.SortBy = v
  7101  	return s
  7102  }
  7103  
  7104  // SetTimePeriod sets the TimePeriod field's value.
  7105  func (s *GetCostCategoriesInput) SetTimePeriod(v *DateInterval) *GetCostCategoriesInput {
  7106  	s.TimePeriod = v
  7107  	return s
  7108  }
  7109  
  7110  type 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".
  7144  func (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".
  7153  func (s GetCostCategoriesOutput) GoString() string {
  7154  	return s.String()
  7155  }
  7156  
  7157  // SetCostCategoryNames sets the CostCategoryNames field's value.
  7158  func (s *GetCostCategoriesOutput) SetCostCategoryNames(v []*string) *GetCostCategoriesOutput {
  7159  	s.CostCategoryNames = v
  7160  	return s
  7161  }
  7162  
  7163  // SetCostCategoryValues sets the CostCategoryValues field's value.
  7164  func (s *GetCostCategoriesOutput) SetCostCategoryValues(v []*string) *GetCostCategoriesOutput {
  7165  	s.CostCategoryValues = v
  7166  	return s
  7167  }
  7168  
  7169  // SetNextPageToken sets the NextPageToken field's value.
  7170  func (s *GetCostCategoriesOutput) SetNextPageToken(v string) *GetCostCategoriesOutput {
  7171  	s.NextPageToken = &v
  7172  	return s
  7173  }
  7174  
  7175  // SetReturnSize sets the ReturnSize field's value.
  7176  func (s *GetCostCategoriesOutput) SetReturnSize(v int64) *GetCostCategoriesOutput {
  7177  	s.ReturnSize = &v
  7178  	return s
  7179  }
  7180  
  7181  // SetTotalSize sets the TotalSize field's value.
  7182  func (s *GetCostCategoriesOutput) SetTotalSize(v int64) *GetCostCategoriesOutput {
  7183  	s.TotalSize = &v
  7184  	return s
  7185  }
  7186  
  7187  type 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".
  7286  func (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".
  7295  func (s GetCostForecastInput) GoString() string {
  7296  	return s.String()
  7297  }
  7298  
  7299  // Validate inspects the fields of the type to determine if they are valid.
  7300  func (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.
  7332  func (s *GetCostForecastInput) SetFilter(v *Expression) *GetCostForecastInput {
  7333  	s.Filter = v
  7334  	return s
  7335  }
  7336  
  7337  // SetGranularity sets the Granularity field's value.
  7338  func (s *GetCostForecastInput) SetGranularity(v string) *GetCostForecastInput {
  7339  	s.Granularity = &v
  7340  	return s
  7341  }
  7342  
  7343  // SetMetric sets the Metric field's value.
  7344  func (s *GetCostForecastInput) SetMetric(v string) *GetCostForecastInput {
  7345  	s.Metric = &v
  7346  	return s
  7347  }
  7348  
  7349  // SetPredictionIntervalLevel sets the PredictionIntervalLevel field's value.
  7350  func (s *GetCostForecastInput) SetPredictionIntervalLevel(v int64) *GetCostForecastInput {
  7351  	s.PredictionIntervalLevel = &v
  7352  	return s
  7353  }
  7354  
  7355  // SetTimePeriod sets the TimePeriod field's value.
  7356  func (s *GetCostForecastInput) SetTimePeriod(v *DateInterval) *GetCostForecastInput {
  7357  	s.TimePeriod = v
  7358  	return s
  7359  }
  7360  
  7361  type 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".
  7377  func (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".
  7386  func (s GetCostForecastOutput) GoString() string {
  7387  	return s.String()
  7388  }
  7389  
  7390  // SetForecastResultsByTime sets the ForecastResultsByTime field's value.
  7391  func (s *GetCostForecastOutput) SetForecastResultsByTime(v []*ForecastResult) *GetCostForecastOutput {
  7392  	s.ForecastResultsByTime = v
  7393  	return s
  7394  }
  7395  
  7396  // SetTotal sets the Total field's value.
  7397  func (s *GetCostForecastOutput) SetTotal(v *MetricValue) *GetCostForecastOutput {
  7398  	s.Total = v
  7399  	return s
  7400  }
  7401  
  7402  type 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".
  7601  func (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".
  7610  func (s GetDimensionValuesInput) GoString() string {
  7611  	return s.String()
  7612  }
  7613  
  7614  // Validate inspects the fields of the type to determine if they are valid.
  7615  func (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.
  7654  func (s *GetDimensionValuesInput) SetContext(v string) *GetDimensionValuesInput {
  7655  	s.Context = &v
  7656  	return s
  7657  }
  7658  
  7659  // SetDimension sets the Dimension field's value.
  7660  func (s *GetDimensionValuesInput) SetDimension(v string) *GetDimensionValuesInput {
  7661  	s.Dimension = &v
  7662  	return s
  7663  }
  7664  
  7665  // SetFilter sets the Filter field's value.
  7666  func (s *GetDimensionValuesInput) SetFilter(v *Expression) *GetDimensionValuesInput {
  7667  	s.Filter = v
  7668  	return s
  7669  }
  7670  
  7671  // SetMaxResults sets the MaxResults field's value.
  7672  func (s *GetDimensionValuesInput) SetMaxResults(v int64) *GetDimensionValuesInput {
  7673  	s.MaxResults = &v
  7674  	return s
  7675  }
  7676  
  7677  // SetNextPageToken sets the NextPageToken field's value.
  7678  func (s *GetDimensionValuesInput) SetNextPageToken(v string) *GetDimensionValuesInput {
  7679  	s.NextPageToken = &v
  7680  	return s
  7681  }
  7682  
  7683  // SetSearchString sets the SearchString field's value.
  7684  func (s *GetDimensionValuesInput) SetSearchString(v string) *GetDimensionValuesInput {
  7685  	s.SearchString = &v
  7686  	return s
  7687  }
  7688  
  7689  // SetSortBy sets the SortBy field's value.
  7690  func (s *GetDimensionValuesInput) SetSortBy(v []*SortDefinition) *GetDimensionValuesInput {
  7691  	s.SortBy = v
  7692  	return s
  7693  }
  7694  
  7695  // SetTimePeriod sets the TimePeriod field's value.
  7696  func (s *GetDimensionValuesInput) SetTimePeriod(v *DateInterval) *GetDimensionValuesInput {
  7697  	s.TimePeriod = v
  7698  	return s
  7699  }
  7700  
  7701  type 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".
  7823  func (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".
  7832  func (s GetDimensionValuesOutput) GoString() string {
  7833  	return s.String()
  7834  }
  7835  
  7836  // SetDimensionValues sets the DimensionValues field's value.
  7837  func (s *GetDimensionValuesOutput) SetDimensionValues(v []*DimensionValuesWithAttributes) *GetDimensionValuesOutput {
  7838  	s.DimensionValues = v
  7839  	return s
  7840  }
  7841  
  7842  // SetNextPageToken sets the NextPageToken field's value.
  7843  func (s *GetDimensionValuesOutput) SetNextPageToken(v string) *GetDimensionValuesOutput {
  7844  	s.NextPageToken = &v
  7845  	return s
  7846  }
  7847  
  7848  // SetReturnSize sets the ReturnSize field's value.
  7849  func (s *GetDimensionValuesOutput) SetReturnSize(v int64) *GetDimensionValuesOutput {
  7850  	s.ReturnSize = &v
  7851  	return s
  7852  }
  7853  
  7854  // SetTotalSize sets the TotalSize field's value.
  7855  func (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.
  7862  type 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".
  7991  func (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".
  8000  func (s GetReservationCoverageInput) GoString() string {
  8001  	return s.String()
  8002  }
  8003  
  8004  // Validate inspects the fields of the type to determine if they are valid.
  8005  func (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.
  8036  func (s *GetReservationCoverageInput) SetFilter(v *Expression) *GetReservationCoverageInput {
  8037  	s.Filter = v
  8038  	return s
  8039  }
  8040  
  8041  // SetGranularity sets the Granularity field's value.
  8042  func (s *GetReservationCoverageInput) SetGranularity(v string) *GetReservationCoverageInput {
  8043  	s.Granularity = &v
  8044  	return s
  8045  }
  8046  
  8047  // SetGroupBy sets the GroupBy field's value.
  8048  func (s *GetReservationCoverageInput) SetGroupBy(v []*GroupDefinition) *GetReservationCoverageInput {
  8049  	s.GroupBy = v
  8050  	return s
  8051  }
  8052  
  8053  // SetMaxResults sets the MaxResults field's value.
  8054  func (s *GetReservationCoverageInput) SetMaxResults(v int64) *GetReservationCoverageInput {
  8055  	s.MaxResults = &v
  8056  	return s
  8057  }
  8058  
  8059  // SetMetrics sets the Metrics field's value.
  8060  func (s *GetReservationCoverageInput) SetMetrics(v []*string) *GetReservationCoverageInput {
  8061  	s.Metrics = v
  8062  	return s
  8063  }
  8064  
  8065  // SetNextPageToken sets the NextPageToken field's value.
  8066  func (s *GetReservationCoverageInput) SetNextPageToken(v string) *GetReservationCoverageInput {
  8067  	s.NextPageToken = &v
  8068  	return s
  8069  }
  8070  
  8071  // SetSortBy sets the SortBy field's value.
  8072  func (s *GetReservationCoverageInput) SetSortBy(v *SortDefinition) *GetReservationCoverageInput {
  8073  	s.SortBy = v
  8074  	return s
  8075  }
  8076  
  8077  // SetTimePeriod sets the TimePeriod field's value.
  8078  func (s *GetReservationCoverageInput) SetTimePeriod(v *DateInterval) *GetReservationCoverageInput {
  8079  	s.TimePeriod = v
  8080  	return s
  8081  }
  8082  
  8083  type 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".
  8105  func (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".
  8114  func (s GetReservationCoverageOutput) GoString() string {
  8115  	return s.String()
  8116  }
  8117  
  8118  // SetCoveragesByTime sets the CoveragesByTime field's value.
  8119  func (s *GetReservationCoverageOutput) SetCoveragesByTime(v []*CoverageByTime) *GetReservationCoverageOutput {
  8120  	s.CoveragesByTime = v
  8121  	return s
  8122  }
  8123  
  8124  // SetNextPageToken sets the NextPageToken field's value.
  8125  func (s *GetReservationCoverageOutput) SetNextPageToken(v string) *GetReservationCoverageOutput {
  8126  	s.NextPageToken = &v
  8127  	return s
  8128  }
  8129  
  8130  // SetTotal sets the Total field's value.
  8131  func (s *GetReservationCoverageOutput) SetTotal(v *Coverage) *GetReservationCoverageOutput {
  8132  	s.Total = v
  8133  	return s
  8134  }
  8135  
  8136  type 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".
  8216  func (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".
  8225  func (s GetReservationPurchaseRecommendationInput) GoString() string {
  8226  	return s.String()
  8227  }
  8228  
  8229  // Validate inspects the fields of the type to determine if they are valid.
  8230  func (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.
  8248  func (s *GetReservationPurchaseRecommendationInput) SetAccountId(v string) *GetReservationPurchaseRecommendationInput {
  8249  	s.AccountId = &v
  8250  	return s
  8251  }
  8252  
  8253  // SetAccountScope sets the AccountScope field's value.
  8254  func (s *GetReservationPurchaseRecommendationInput) SetAccountScope(v string) *GetReservationPurchaseRecommendationInput {
  8255  	s.AccountScope = &v
  8256  	return s
  8257  }
  8258  
  8259  // SetFilter sets the Filter field's value.
  8260  func (s *GetReservationPurchaseRecommendationInput) SetFilter(v *Expression) *GetReservationPurchaseRecommendationInput {
  8261  	s.Filter = v
  8262  	return s
  8263  }
  8264  
  8265  // SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
  8266  func (s *GetReservationPurchaseRecommendationInput) SetLookbackPeriodInDays(v string) *GetReservationPurchaseRecommendationInput {
  8267  	s.LookbackPeriodInDays = &v
  8268  	return s
  8269  }
  8270  
  8271  // SetNextPageToken sets the NextPageToken field's value.
  8272  func (s *GetReservationPurchaseRecommendationInput) SetNextPageToken(v string) *GetReservationPurchaseRecommendationInput {
  8273  	s.NextPageToken = &v
  8274  	return s
  8275  }
  8276  
  8277  // SetPageSize sets the PageSize field's value.
  8278  func (s *GetReservationPurchaseRecommendationInput) SetPageSize(v int64) *GetReservationPurchaseRecommendationInput {
  8279  	s.PageSize = &v
  8280  	return s
  8281  }
  8282  
  8283  // SetPaymentOption sets the PaymentOption field's value.
  8284  func (s *GetReservationPurchaseRecommendationInput) SetPaymentOption(v string) *GetReservationPurchaseRecommendationInput {
  8285  	s.PaymentOption = &v
  8286  	return s
  8287  }
  8288  
  8289  // SetService sets the Service field's value.
  8290  func (s *GetReservationPurchaseRecommendationInput) SetService(v string) *GetReservationPurchaseRecommendationInput {
  8291  	s.Service = &v
  8292  	return s
  8293  }
  8294  
  8295  // SetServiceSpecification sets the ServiceSpecification field's value.
  8296  func (s *GetReservationPurchaseRecommendationInput) SetServiceSpecification(v *ServiceSpecification) *GetReservationPurchaseRecommendationInput {
  8297  	s.ServiceSpecification = v
  8298  	return s
  8299  }
  8300  
  8301  // SetTermInYears sets the TermInYears field's value.
  8302  func (s *GetReservationPurchaseRecommendationInput) SetTermInYears(v string) *GetReservationPurchaseRecommendationInput {
  8303  	s.TermInYears = &v
  8304  	return s
  8305  }
  8306  
  8307  type 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".
  8326  func (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".
  8335  func (s GetReservationPurchaseRecommendationOutput) GoString() string {
  8336  	return s.String()
  8337  }
  8338  
  8339  // SetMetadata sets the Metadata field's value.
  8340  func (s *GetReservationPurchaseRecommendationOutput) SetMetadata(v *ReservationPurchaseRecommendationMetadata) *GetReservationPurchaseRecommendationOutput {
  8341  	s.Metadata = v
  8342  	return s
  8343  }
  8344  
  8345  // SetNextPageToken sets the NextPageToken field's value.
  8346  func (s *GetReservationPurchaseRecommendationOutput) SetNextPageToken(v string) *GetReservationPurchaseRecommendationOutput {
  8347  	s.NextPageToken = &v
  8348  	return s
  8349  }
  8350  
  8351  // SetRecommendations sets the Recommendations field's value.
  8352  func (s *GetReservationPurchaseRecommendationOutput) SetRecommendations(v []*ReservationPurchaseRecommendation) *GetReservationPurchaseRecommendationOutput {
  8353  	s.Recommendations = v
  8354  	return s
  8355  }
  8356  
  8357  type 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".
  8466  func (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".
  8475  func (s GetReservationUtilizationInput) GoString() string {
  8476  	return s.String()
  8477  }
  8478  
  8479  // Validate inspects the fields of the type to determine if they are valid.
  8480  func (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.
  8511  func (s *GetReservationUtilizationInput) SetFilter(v *Expression) *GetReservationUtilizationInput {
  8512  	s.Filter = v
  8513  	return s
  8514  }
  8515  
  8516  // SetGranularity sets the Granularity field's value.
  8517  func (s *GetReservationUtilizationInput) SetGranularity(v string) *GetReservationUtilizationInput {
  8518  	s.Granularity = &v
  8519  	return s
  8520  }
  8521  
  8522  // SetGroupBy sets the GroupBy field's value.
  8523  func (s *GetReservationUtilizationInput) SetGroupBy(v []*GroupDefinition) *GetReservationUtilizationInput {
  8524  	s.GroupBy = v
  8525  	return s
  8526  }
  8527  
  8528  // SetMaxResults sets the MaxResults field's value.
  8529  func (s *GetReservationUtilizationInput) SetMaxResults(v int64) *GetReservationUtilizationInput {
  8530  	s.MaxResults = &v
  8531  	return s
  8532  }
  8533  
  8534  // SetNextPageToken sets the NextPageToken field's value.
  8535  func (s *GetReservationUtilizationInput) SetNextPageToken(v string) *GetReservationUtilizationInput {
  8536  	s.NextPageToken = &v
  8537  	return s
  8538  }
  8539  
  8540  // SetSortBy sets the SortBy field's value.
  8541  func (s *GetReservationUtilizationInput) SetSortBy(v *SortDefinition) *GetReservationUtilizationInput {
  8542  	s.SortBy = v
  8543  	return s
  8544  }
  8545  
  8546  // SetTimePeriod sets the TimePeriod field's value.
  8547  func (s *GetReservationUtilizationInput) SetTimePeriod(v *DateInterval) *GetReservationUtilizationInput {
  8548  	s.TimePeriod = v
  8549  	return s
  8550  }
  8551  
  8552  type 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".
  8574  func (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".
  8583  func (s GetReservationUtilizationOutput) GoString() string {
  8584  	return s.String()
  8585  }
  8586  
  8587  // SetNextPageToken sets the NextPageToken field's value.
  8588  func (s *GetReservationUtilizationOutput) SetNextPageToken(v string) *GetReservationUtilizationOutput {
  8589  	s.NextPageToken = &v
  8590  	return s
  8591  }
  8592  
  8593  // SetTotal sets the Total field's value.
  8594  func (s *GetReservationUtilizationOutput) SetTotal(v *ReservationAggregates) *GetReservationUtilizationOutput {
  8595  	s.Total = v
  8596  	return s
  8597  }
  8598  
  8599  // SetUtilizationsByTime sets the UtilizationsByTime field's value.
  8600  func (s *GetReservationUtilizationOutput) SetUtilizationsByTime(v []*UtilizationByTime) *GetReservationUtilizationOutput {
  8601  	s.UtilizationsByTime = v
  8602  	return s
  8603  }
  8604  
  8605  type 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".
  8670  func (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".
  8679  func (s GetRightsizingRecommendationInput) GoString() string {
  8680  	return s.String()
  8681  }
  8682  
  8683  // Validate inspects the fields of the type to determine if they are valid.
  8684  func (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.
  8707  func (s *GetRightsizingRecommendationInput) SetConfiguration(v *RightsizingRecommendationConfiguration) *GetRightsizingRecommendationInput {
  8708  	s.Configuration = v
  8709  	return s
  8710  }
  8711  
  8712  // SetFilter sets the Filter field's value.
  8713  func (s *GetRightsizingRecommendationInput) SetFilter(v *Expression) *GetRightsizingRecommendationInput {
  8714  	s.Filter = v
  8715  	return s
  8716  }
  8717  
  8718  // SetNextPageToken sets the NextPageToken field's value.
  8719  func (s *GetRightsizingRecommendationInput) SetNextPageToken(v string) *GetRightsizingRecommendationInput {
  8720  	s.NextPageToken = &v
  8721  	return s
  8722  }
  8723  
  8724  // SetPageSize sets the PageSize field's value.
  8725  func (s *GetRightsizingRecommendationInput) SetPageSize(v int64) *GetRightsizingRecommendationInput {
  8726  	s.PageSize = &v
  8727  	return s
  8728  }
  8729  
  8730  // SetService sets the Service field's value.
  8731  func (s *GetRightsizingRecommendationInput) SetService(v string) *GetRightsizingRecommendationInput {
  8732  	s.Service = &v
  8733  	return s
  8734  }
  8735  
  8736  type 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".
  8764  func (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".
  8773  func (s GetRightsizingRecommendationOutput) GoString() string {
  8774  	return s.String()
  8775  }
  8776  
  8777  // SetConfiguration sets the Configuration field's value.
  8778  func (s *GetRightsizingRecommendationOutput) SetConfiguration(v *RightsizingRecommendationConfiguration) *GetRightsizingRecommendationOutput {
  8779  	s.Configuration = v
  8780  	return s
  8781  }
  8782  
  8783  // SetMetadata sets the Metadata field's value.
  8784  func (s *GetRightsizingRecommendationOutput) SetMetadata(v *RightsizingRecommendationMetadata) *GetRightsizingRecommendationOutput {
  8785  	s.Metadata = v
  8786  	return s
  8787  }
  8788  
  8789  // SetNextPageToken sets the NextPageToken field's value.
  8790  func (s *GetRightsizingRecommendationOutput) SetNextPageToken(v string) *GetRightsizingRecommendationOutput {
  8791  	s.NextPageToken = &v
  8792  	return s
  8793  }
  8794  
  8795  // SetRightsizingRecommendations sets the RightsizingRecommendations field's value.
  8796  func (s *GetRightsizingRecommendationOutput) SetRightsizingRecommendations(v []*RightsizingRecommendation) *GetRightsizingRecommendationOutput {
  8797  	s.RightsizingRecommendations = v
  8798  	return s
  8799  }
  8800  
  8801  // SetSummary sets the Summary field's value.
  8802  func (s *GetRightsizingRecommendationOutput) SetSummary(v *RightsizingRecommendationSummary) *GetRightsizingRecommendationOutput {
  8803  	s.Summary = v
  8804  	return s
  8805  }
  8806  
  8807  type 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".
  8884  func (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".
  8893  func (s GetSavingsPlansCoverageInput) GoString() string {
  8894  	return s.String()
  8895  }
  8896  
  8897  // Validate inspects the fields of the type to determine if they are valid.
  8898  func (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.
  8929  func (s *GetSavingsPlansCoverageInput) SetFilter(v *Expression) *GetSavingsPlansCoverageInput {
  8930  	s.Filter = v
  8931  	return s
  8932  }
  8933  
  8934  // SetGranularity sets the Granularity field's value.
  8935  func (s *GetSavingsPlansCoverageInput) SetGranularity(v string) *GetSavingsPlansCoverageInput {
  8936  	s.Granularity = &v
  8937  	return s
  8938  }
  8939  
  8940  // SetGroupBy sets the GroupBy field's value.
  8941  func (s *GetSavingsPlansCoverageInput) SetGroupBy(v []*GroupDefinition) *GetSavingsPlansCoverageInput {
  8942  	s.GroupBy = v
  8943  	return s
  8944  }
  8945  
  8946  // SetMaxResults sets the MaxResults field's value.
  8947  func (s *GetSavingsPlansCoverageInput) SetMaxResults(v int64) *GetSavingsPlansCoverageInput {
  8948  	s.MaxResults = &v
  8949  	return s
  8950  }
  8951  
  8952  // SetMetrics sets the Metrics field's value.
  8953  func (s *GetSavingsPlansCoverageInput) SetMetrics(v []*string) *GetSavingsPlansCoverageInput {
  8954  	s.Metrics = v
  8955  	return s
  8956  }
  8957  
  8958  // SetNextToken sets the NextToken field's value.
  8959  func (s *GetSavingsPlansCoverageInput) SetNextToken(v string) *GetSavingsPlansCoverageInput {
  8960  	s.NextToken = &v
  8961  	return s
  8962  }
  8963  
  8964  // SetSortBy sets the SortBy field's value.
  8965  func (s *GetSavingsPlansCoverageInput) SetSortBy(v *SortDefinition) *GetSavingsPlansCoverageInput {
  8966  	s.SortBy = v
  8967  	return s
  8968  }
  8969  
  8970  // SetTimePeriod sets the TimePeriod field's value.
  8971  func (s *GetSavingsPlansCoverageInput) SetTimePeriod(v *DateInterval) *GetSavingsPlansCoverageInput {
  8972  	s.TimePeriod = v
  8973  	return s
  8974  }
  8975  
  8976  type 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".
  8995  func (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".
  9004  func (s GetSavingsPlansCoverageOutput) GoString() string {
  9005  	return s.String()
  9006  }
  9007  
  9008  // SetNextToken sets the NextToken field's value.
  9009  func (s *GetSavingsPlansCoverageOutput) SetNextToken(v string) *GetSavingsPlansCoverageOutput {
  9010  	s.NextToken = &v
  9011  	return s
  9012  }
  9013  
  9014  // SetSavingsPlansCoverages sets the SavingsPlansCoverages field's value.
  9015  func (s *GetSavingsPlansCoverageOutput) SetSavingsPlansCoverages(v []*SavingsPlansCoverage) *GetSavingsPlansCoverageOutput {
  9016  	s.SavingsPlansCoverages = v
  9017  	return s
  9018  }
  9019  
  9020  type 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".
  9076  func (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".
  9085  func (s GetSavingsPlansPurchaseRecommendationInput) GoString() string {
  9086  	return s.String()
  9087  }
  9088  
  9089  // Validate inspects the fields of the type to determine if they are valid.
  9090  func (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.
  9117  func (s *GetSavingsPlansPurchaseRecommendationInput) SetAccountScope(v string) *GetSavingsPlansPurchaseRecommendationInput {
  9118  	s.AccountScope = &v
  9119  	return s
  9120  }
  9121  
  9122  // SetFilter sets the Filter field's value.
  9123  func (s *GetSavingsPlansPurchaseRecommendationInput) SetFilter(v *Expression) *GetSavingsPlansPurchaseRecommendationInput {
  9124  	s.Filter = v
  9125  	return s
  9126  }
  9127  
  9128  // SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
  9129  func (s *GetSavingsPlansPurchaseRecommendationInput) SetLookbackPeriodInDays(v string) *GetSavingsPlansPurchaseRecommendationInput {
  9130  	s.LookbackPeriodInDays = &v
  9131  	return s
  9132  }
  9133  
  9134  // SetNextPageToken sets the NextPageToken field's value.
  9135  func (s *GetSavingsPlansPurchaseRecommendationInput) SetNextPageToken(v string) *GetSavingsPlansPurchaseRecommendationInput {
  9136  	s.NextPageToken = &v
  9137  	return s
  9138  }
  9139  
  9140  // SetPageSize sets the PageSize field's value.
  9141  func (s *GetSavingsPlansPurchaseRecommendationInput) SetPageSize(v int64) *GetSavingsPlansPurchaseRecommendationInput {
  9142  	s.PageSize = &v
  9143  	return s
  9144  }
  9145  
  9146  // SetPaymentOption sets the PaymentOption field's value.
  9147  func (s *GetSavingsPlansPurchaseRecommendationInput) SetPaymentOption(v string) *GetSavingsPlansPurchaseRecommendationInput {
  9148  	s.PaymentOption = &v
  9149  	return s
  9150  }
  9151  
  9152  // SetSavingsPlansType sets the SavingsPlansType field's value.
  9153  func (s *GetSavingsPlansPurchaseRecommendationInput) SetSavingsPlansType(v string) *GetSavingsPlansPurchaseRecommendationInput {
  9154  	s.SavingsPlansType = &v
  9155  	return s
  9156  }
  9157  
  9158  // SetTermInYears sets the TermInYears field's value.
  9159  func (s *GetSavingsPlansPurchaseRecommendationInput) SetTermInYears(v string) *GetSavingsPlansPurchaseRecommendationInput {
  9160  	s.TermInYears = &v
  9161  	return s
  9162  }
  9163  
  9164  type 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".
  9185  func (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".
  9194  func (s GetSavingsPlansPurchaseRecommendationOutput) GoString() string {
  9195  	return s.String()
  9196  }
  9197  
  9198  // SetMetadata sets the Metadata field's value.
  9199  func (s *GetSavingsPlansPurchaseRecommendationOutput) SetMetadata(v *SavingsPlansPurchaseRecommendationMetadata) *GetSavingsPlansPurchaseRecommendationOutput {
  9200  	s.Metadata = v
  9201  	return s
  9202  }
  9203  
  9204  // SetNextPageToken sets the NextPageToken field's value.
  9205  func (s *GetSavingsPlansPurchaseRecommendationOutput) SetNextPageToken(v string) *GetSavingsPlansPurchaseRecommendationOutput {
  9206  	s.NextPageToken = &v
  9207  	return s
  9208  }
  9209  
  9210  // SetSavingsPlansPurchaseRecommendation sets the SavingsPlansPurchaseRecommendation field's value.
  9211  func (s *GetSavingsPlansPurchaseRecommendationOutput) SetSavingsPlansPurchaseRecommendation(v *SavingsPlansPurchaseRecommendation) *GetSavingsPlansPurchaseRecommendationOutput {
  9212  	s.SavingsPlansPurchaseRecommendation = v
  9213  	return s
  9214  }
  9215  
  9216  type 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".
  9282  func (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".
  9291  func (s GetSavingsPlansUtilizationDetailsInput) GoString() string {
  9292  	return s.String()
  9293  }
  9294  
  9295  // Validate inspects the fields of the type to determine if they are valid.
  9296  func (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.
  9327  func (s *GetSavingsPlansUtilizationDetailsInput) SetDataType(v []*string) *GetSavingsPlansUtilizationDetailsInput {
  9328  	s.DataType = v
  9329  	return s
  9330  }
  9331  
  9332  // SetFilter sets the Filter field's value.
  9333  func (s *GetSavingsPlansUtilizationDetailsInput) SetFilter(v *Expression) *GetSavingsPlansUtilizationDetailsInput {
  9334  	s.Filter = v
  9335  	return s
  9336  }
  9337  
  9338  // SetMaxResults sets the MaxResults field's value.
  9339  func (s *GetSavingsPlansUtilizationDetailsInput) SetMaxResults(v int64) *GetSavingsPlansUtilizationDetailsInput {
  9340  	s.MaxResults = &v
  9341  	return s
  9342  }
  9343  
  9344  // SetNextToken sets the NextToken field's value.
  9345  func (s *GetSavingsPlansUtilizationDetailsInput) SetNextToken(v string) *GetSavingsPlansUtilizationDetailsInput {
  9346  	s.NextToken = &v
  9347  	return s
  9348  }
  9349  
  9350  // SetSortBy sets the SortBy field's value.
  9351  func (s *GetSavingsPlansUtilizationDetailsInput) SetSortBy(v *SortDefinition) *GetSavingsPlansUtilizationDetailsInput {
  9352  	s.SortBy = v
  9353  	return s
  9354  }
  9355  
  9356  // SetTimePeriod sets the TimePeriod field's value.
  9357  func (s *GetSavingsPlansUtilizationDetailsInput) SetTimePeriod(v *DateInterval) *GetSavingsPlansUtilizationDetailsInput {
  9358  	s.TimePeriod = v
  9359  	return s
  9360  }
  9361  
  9362  type 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".
  9390  func (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".
  9399  func (s GetSavingsPlansUtilizationDetailsOutput) GoString() string {
  9400  	return s.String()
  9401  }
  9402  
  9403  // SetNextToken sets the NextToken field's value.
  9404  func (s *GetSavingsPlansUtilizationDetailsOutput) SetNextToken(v string) *GetSavingsPlansUtilizationDetailsOutput {
  9405  	s.NextToken = &v
  9406  	return s
  9407  }
  9408  
  9409  // SetSavingsPlansUtilizationDetails sets the SavingsPlansUtilizationDetails field's value.
  9410  func (s *GetSavingsPlansUtilizationDetailsOutput) SetSavingsPlansUtilizationDetails(v []*SavingsPlansUtilizationDetail) *GetSavingsPlansUtilizationDetailsOutput {
  9411  	s.SavingsPlansUtilizationDetails = v
  9412  	return s
  9413  }
  9414  
  9415  // SetTimePeriod sets the TimePeriod field's value.
  9416  func (s *GetSavingsPlansUtilizationDetailsOutput) SetTimePeriod(v *DateInterval) *GetSavingsPlansUtilizationDetailsOutput {
  9417  	s.TimePeriod = v
  9418  	return s
  9419  }
  9420  
  9421  // SetTotal sets the Total field's value.
  9422  func (s *GetSavingsPlansUtilizationDetailsOutput) SetTotal(v *SavingsPlansUtilizationAggregates) *GetSavingsPlansUtilizationDetailsOutput {
  9423  	s.Total = v
  9424  	return s
  9425  }
  9426  
  9427  type 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".
  9486  func (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".
  9495  func (s GetSavingsPlansUtilizationInput) GoString() string {
  9496  	return s.String()
  9497  }
  9498  
  9499  // Validate inspects the fields of the type to determine if they are valid.
  9500  func (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.
  9528  func (s *GetSavingsPlansUtilizationInput) SetFilter(v *Expression) *GetSavingsPlansUtilizationInput {
  9529  	s.Filter = v
  9530  	return s
  9531  }
  9532  
  9533  // SetGranularity sets the Granularity field's value.
  9534  func (s *GetSavingsPlansUtilizationInput) SetGranularity(v string) *GetSavingsPlansUtilizationInput {
  9535  	s.Granularity = &v
  9536  	return s
  9537  }
  9538  
  9539  // SetSortBy sets the SortBy field's value.
  9540  func (s *GetSavingsPlansUtilizationInput) SetSortBy(v *SortDefinition) *GetSavingsPlansUtilizationInput {
  9541  	s.SortBy = v
  9542  	return s
  9543  }
  9544  
  9545  // SetTimePeriod sets the TimePeriod field's value.
  9546  func (s *GetSavingsPlansUtilizationInput) SetTimePeriod(v *DateInterval) *GetSavingsPlansUtilizationInput {
  9547  	s.TimePeriod = v
  9548  	return s
  9549  }
  9550  
  9551  type 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".
  9570  func (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".
  9579  func (s GetSavingsPlansUtilizationOutput) GoString() string {
  9580  	return s.String()
  9581  }
  9582  
  9583  // SetSavingsPlansUtilizationsByTime sets the SavingsPlansUtilizationsByTime field's value.
  9584  func (s *GetSavingsPlansUtilizationOutput) SetSavingsPlansUtilizationsByTime(v []*SavingsPlansUtilizationByTime) *GetSavingsPlansUtilizationOutput {
  9585  	s.SavingsPlansUtilizationsByTime = v
  9586  	return s
  9587  }
  9588  
  9589  // SetTotal sets the Total field's value.
  9590  func (s *GetSavingsPlansUtilizationOutput) SetTotal(v *SavingsPlansUtilizationAggregates) *GetSavingsPlansUtilizationOutput {
  9591  	s.Total = v
  9592  	return s
  9593  }
  9594  
  9595  type 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".
  9689  func (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".
  9698  func (s GetTagsInput) GoString() string {
  9699  	return s.String()
  9700  }
  9701  
  9702  // Validate inspects the fields of the type to determine if they are valid.
  9703  func (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.
  9739  func (s *GetTagsInput) SetFilter(v *Expression) *GetTagsInput {
  9740  	s.Filter = v
  9741  	return s
  9742  }
  9743  
  9744  // SetMaxResults sets the MaxResults field's value.
  9745  func (s *GetTagsInput) SetMaxResults(v int64) *GetTagsInput {
  9746  	s.MaxResults = &v
  9747  	return s
  9748  }
  9749  
  9750  // SetNextPageToken sets the NextPageToken field's value.
  9751  func (s *GetTagsInput) SetNextPageToken(v string) *GetTagsInput {
  9752  	s.NextPageToken = &v
  9753  	return s
  9754  }
  9755  
  9756  // SetSearchString sets the SearchString field's value.
  9757  func (s *GetTagsInput) SetSearchString(v string) *GetTagsInput {
  9758  	s.SearchString = &v
  9759  	return s
  9760  }
  9761  
  9762  // SetSortBy sets the SortBy field's value.
  9763  func (s *GetTagsInput) SetSortBy(v []*SortDefinition) *GetTagsInput {
  9764  	s.SortBy = v
  9765  	return s
  9766  }
  9767  
  9768  // SetTagKey sets the TagKey field's value.
  9769  func (s *GetTagsInput) SetTagKey(v string) *GetTagsInput {
  9770  	s.TagKey = &v
  9771  	return s
  9772  }
  9773  
  9774  // SetTimePeriod sets the TimePeriod field's value.
  9775  func (s *GetTagsInput) SetTimePeriod(v *DateInterval) *GetTagsInput {
  9776  	s.TimePeriod = v
  9777  	return s
  9778  }
  9779  
  9780  type 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".
  9809  func (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".
  9818  func (s GetTagsOutput) GoString() string {
  9819  	return s.String()
  9820  }
  9821  
  9822  // SetNextPageToken sets the NextPageToken field's value.
  9823  func (s *GetTagsOutput) SetNextPageToken(v string) *GetTagsOutput {
  9824  	s.NextPageToken = &v
  9825  	return s
  9826  }
  9827  
  9828  // SetReturnSize sets the ReturnSize field's value.
  9829  func (s *GetTagsOutput) SetReturnSize(v int64) *GetTagsOutput {
  9830  	s.ReturnSize = &v
  9831  	return s
  9832  }
  9833  
  9834  // SetTags sets the Tags field's value.
  9835  func (s *GetTagsOutput) SetTags(v []*string) *GetTagsOutput {
  9836  	s.Tags = v
  9837  	return s
  9838  }
  9839  
  9840  // SetTotalSize sets the TotalSize field's value.
  9841  func (s *GetTagsOutput) SetTotalSize(v int64) *GetTagsOutput {
  9842  	s.TotalSize = &v
  9843  	return s
  9844  }
  9845  
  9846  type 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".
  9941  func (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".
  9950  func (s GetUsageForecastInput) GoString() string {
  9951  	return s.String()
  9952  }
  9953  
  9954  // Validate inspects the fields of the type to determine if they are valid.
  9955  func (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.
  9987  func (s *GetUsageForecastInput) SetFilter(v *Expression) *GetUsageForecastInput {
  9988  	s.Filter = v
  9989  	return s
  9990  }
  9991  
  9992  // SetGranularity sets the Granularity field's value.
  9993  func (s *GetUsageForecastInput) SetGranularity(v string) *GetUsageForecastInput {
  9994  	s.Granularity = &v
  9995  	return s
  9996  }
  9997  
  9998  // SetMetric sets the Metric field's value.
  9999  func (s *GetUsageForecastInput) SetMetric(v string) *GetUsageForecastInput {
 10000  	s.Metric = &v
 10001  	return s
 10002  }
 10003  
 10004  // SetPredictionIntervalLevel sets the PredictionIntervalLevel field's value.
 10005  func (s *GetUsageForecastInput) SetPredictionIntervalLevel(v int64) *GetUsageForecastInput {
 10006  	s.PredictionIntervalLevel = &v
 10007  	return s
 10008  }
 10009  
 10010  // SetTimePeriod sets the TimePeriod field's value.
 10011  func (s *GetUsageForecastInput) SetTimePeriod(v *DateInterval) *GetUsageForecastInput {
 10012  	s.TimePeriod = v
 10013  	return s
 10014  }
 10015  
 10016  type 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".
 10032  func (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".
 10041  func (s GetUsageForecastOutput) GoString() string {
 10042  	return s.String()
 10043  }
 10044  
 10045  // SetForecastResultsByTime sets the ForecastResultsByTime field's value.
 10046  func (s *GetUsageForecastOutput) SetForecastResultsByTime(v []*ForecastResult) *GetUsageForecastOutput {
 10047  	s.ForecastResultsByTime = v
 10048  	return s
 10049  }
 10050  
 10051  // SetTotal sets the Total field's value.
 10052  func (s *GetUsageForecastOutput) SetTotal(v *MetricValue) *GetUsageForecastOutput {
 10053  	s.Total = v
 10054  	return s
 10055  }
 10056  
 10057  // One level of grouped data in the results.
 10058  type 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".
 10073  func (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".
 10082  func (s Group) GoString() string {
 10083  	return s.String()
 10084  }
 10085  
 10086  // SetKeys sets the Keys field's value.
 10087  func (s *Group) SetKeys(v []*string) *Group {
 10088  	s.Keys = v
 10089  	return s
 10090  }
 10091  
 10092  // SetMetrics sets the Metrics field's value.
 10093  func (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.
 10100  type 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".
 10115  func (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".
 10124  func (s GroupDefinition) GoString() string {
 10125  	return s.String()
 10126  }
 10127  
 10128  // SetKey sets the Key field's value.
 10129  func (s *GroupDefinition) SetKey(v string) *GroupDefinition {
 10130  	s.Key = &v
 10131  	return s
 10132  }
 10133  
 10134  // SetType sets the Type field's value.
 10135  func (s *GroupDefinition) SetType(v string) *GroupDefinition {
 10136  	s.Type = &v
 10137  	return s
 10138  }
 10139  
 10140  // The dollar value of the anomaly.
 10141  type 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".
 10158  func (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".
 10167  func (s Impact) GoString() string {
 10168  	return s.String()
 10169  }
 10170  
 10171  // SetMaxImpact sets the MaxImpact field's value.
 10172  func (s *Impact) SetMaxImpact(v float64) *Impact {
 10173  	s.MaxImpact = &v
 10174  	return s
 10175  }
 10176  
 10177  // SetTotalImpact sets the TotalImpact field's value.
 10178  func (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.
 10185  type 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".
 10210  func (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".
 10219  func (s InstanceDetails) GoString() string {
 10220  	return s.String()
 10221  }
 10222  
 10223  // SetEC2InstanceDetails sets the EC2InstanceDetails field's value.
 10224  func (s *InstanceDetails) SetEC2InstanceDetails(v *EC2InstanceDetails) *InstanceDetails {
 10225  	s.EC2InstanceDetails = v
 10226  	return s
 10227  }
 10228  
 10229  // SetESInstanceDetails sets the ESInstanceDetails field's value.
 10230  func (s *InstanceDetails) SetESInstanceDetails(v *ESInstanceDetails) *InstanceDetails {
 10231  	s.ESInstanceDetails = v
 10232  	return s
 10233  }
 10234  
 10235  // SetElastiCacheInstanceDetails sets the ElastiCacheInstanceDetails field's value.
 10236  func (s *InstanceDetails) SetElastiCacheInstanceDetails(v *ElastiCacheInstanceDetails) *InstanceDetails {
 10237  	s.ElastiCacheInstanceDetails = v
 10238  	return s
 10239  }
 10240  
 10241  // SetRDSInstanceDetails sets the RDSInstanceDetails field's value.
 10242  func (s *InstanceDetails) SetRDSInstanceDetails(v *RDSInstanceDetails) *InstanceDetails {
 10243  	s.RDSInstanceDetails = v
 10244  	return s
 10245  }
 10246  
 10247  // SetRedshiftInstanceDetails sets the RedshiftInstanceDetails field's value.
 10248  func (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.
 10254  type 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".
 10266  func (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".
 10275  func (s InvalidNextTokenException) GoString() string {
 10276  	return s.String()
 10277  }
 10278  
 10279  func newErrorInvalidNextTokenException(v protocol.ResponseMetadata) error {
 10280  	return &InvalidNextTokenException{
 10281  		RespMetadata: v,
 10282  	}
 10283  }
 10284  
 10285  // Code returns the exception type name.
 10286  func (s *InvalidNextTokenException) Code() string {
 10287  	return "InvalidNextTokenException"
 10288  }
 10289  
 10290  // Message returns the exception's message.
 10291  func (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.
 10299  func (s *InvalidNextTokenException) OrigErr() error {
 10300  	return nil
 10301  }
 10302  
 10303  func (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.
 10308  func (s *InvalidNextTokenException) StatusCode() int {
 10309  	return s.RespMetadata.StatusCode
 10310  }
 10311  
 10312  // RequestID returns the service's response RequestID for request.
 10313  func (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.
 10318  type 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".
 10330  func (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".
 10339  func (s LimitExceededException) GoString() string {
 10340  	return s.String()
 10341  }
 10342  
 10343  func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
 10344  	return &LimitExceededException{
 10345  		RespMetadata: v,
 10346  	}
 10347  }
 10348  
 10349  // Code returns the exception type name.
 10350  func (s *LimitExceededException) Code() string {
 10351  	return "LimitExceededException"
 10352  }
 10353  
 10354  // Message returns the exception's message.
 10355  func (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.
 10363  func (s *LimitExceededException) OrigErr() error {
 10364  	return nil
 10365  }
 10366  
 10367  func (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.
 10372  func (s *LimitExceededException) StatusCode() int {
 10373  	return s.RespMetadata.StatusCode
 10374  }
 10375  
 10376  // RequestID returns the service's response RequestID for request.
 10377  func (s *LimitExceededException) RequestID() string {
 10378  	return s.RespMetadata.RequestID
 10379  }
 10380  
 10381  type 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".
 10401  func (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".
 10410  func (s ListCostCategoryDefinitionsInput) GoString() string {
 10411  	return s.String()
 10412  }
 10413  
 10414  // Validate inspects the fields of the type to determine if they are valid.
 10415  func (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.
 10431  func (s *ListCostCategoryDefinitionsInput) SetEffectiveOn(v string) *ListCostCategoryDefinitionsInput {
 10432  	s.EffectiveOn = &v
 10433  	return s
 10434  }
 10435  
 10436  // SetMaxResults sets the MaxResults field's value.
 10437  func (s *ListCostCategoryDefinitionsInput) SetMaxResults(v int64) *ListCostCategoryDefinitionsInput {
 10438  	s.MaxResults = &v
 10439  	return s
 10440  }
 10441  
 10442  // SetNextToken sets the NextToken field's value.
 10443  func (s *ListCostCategoryDefinitionsInput) SetNextToken(v string) *ListCostCategoryDefinitionsInput {
 10444  	s.NextToken = &v
 10445  	return s
 10446  }
 10447  
 10448  type 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".
 10466  func (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".
 10475  func (s ListCostCategoryDefinitionsOutput) GoString() string {
 10476  	return s.String()
 10477  }
 10478  
 10479  // SetCostCategoryReferences sets the CostCategoryReferences field's value.
 10480  func (s *ListCostCategoryDefinitionsOutput) SetCostCategoryReferences(v []*CostCategoryReference) *ListCostCategoryDefinitionsOutput {
 10481  	s.CostCategoryReferences = v
 10482  	return s
 10483  }
 10484  
 10485  // SetNextToken sets the NextToken field's value.
 10486  func (s *ListCostCategoryDefinitionsOutput) SetNextToken(v string) *ListCostCategoryDefinitionsOutput {
 10487  	s.NextToken = &v
 10488  	return s
 10489  }
 10490  
 10491  // The aggregated value for a metric.
 10492  type 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".
 10507  func (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".
 10516  func (s MetricValue) GoString() string {
 10517  	return s.String()
 10518  }
 10519  
 10520  // SetAmount sets the Amount field's value.
 10521  func (s *MetricValue) SetAmount(v string) *MetricValue {
 10522  	s.Amount = &v
 10523  	return s
 10524  }
 10525  
 10526  // SetUnit sets the Unit field's value.
 10527  func (s *MetricValue) SetUnit(v string) *MetricValue {
 10528  	s.Unit = &v
 10529  	return s
 10530  }
 10531  
 10532  // Details on the modification recommendation.
 10533  type 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".
 10546  func (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".
 10555  func (s ModifyRecommendationDetail) GoString() string {
 10556  	return s.String()
 10557  }
 10558  
 10559  // SetTargetInstances sets the TargetInstances field's value.
 10560  func (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.
 10567  type 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".
 10588  func (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".
 10597  func (s NetworkResourceUtilization) GoString() string {
 10598  	return s.String()
 10599  }
 10600  
 10601  // SetNetworkInBytesPerSecond sets the NetworkInBytesPerSecond field's value.
 10602  func (s *NetworkResourceUtilization) SetNetworkInBytesPerSecond(v string) *NetworkResourceUtilization {
 10603  	s.NetworkInBytesPerSecond = &v
 10604  	return s
 10605  }
 10606  
 10607  // SetNetworkOutBytesPerSecond sets the NetworkOutBytesPerSecond field's value.
 10608  func (s *NetworkResourceUtilization) SetNetworkOutBytesPerSecond(v string) *NetworkResourceUtilization {
 10609  	s.NetworkOutBytesPerSecond = &v
 10610  	return s
 10611  }
 10612  
 10613  // SetNetworkPacketsInPerSecond sets the NetworkPacketsInPerSecond field's value.
 10614  func (s *NetworkResourceUtilization) SetNetworkPacketsInPerSecond(v string) *NetworkResourceUtilization {
 10615  	s.NetworkPacketsInPerSecond = &v
 10616  	return s
 10617  }
 10618  
 10619  // SetNetworkPacketsOutPerSecond sets the NetworkPacketsOutPerSecond field's value.
 10620  func (s *NetworkResourceUtilization) SetNetworkPacketsOutPerSecond(v string) *NetworkResourceUtilization {
 10621  	s.NetworkPacketsOutPerSecond = &v
 10622  	return s
 10623  }
 10624  
 10625  type 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".
 10645  func (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".
 10654  func (s ProvideAnomalyFeedbackInput) GoString() string {
 10655  	return s.String()
 10656  }
 10657  
 10658  // Validate inspects the fields of the type to determine if they are valid.
 10659  func (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.
 10675  func (s *ProvideAnomalyFeedbackInput) SetAnomalyId(v string) *ProvideAnomalyFeedbackInput {
 10676  	s.AnomalyId = &v
 10677  	return s
 10678  }
 10679  
 10680  // SetFeedback sets the Feedback field's value.
 10681  func (s *ProvideAnomalyFeedbackInput) SetFeedback(v string) *ProvideAnomalyFeedbackInput {
 10682  	s.Feedback = &v
 10683  	return s
 10684  }
 10685  
 10686  type 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".
 10700  func (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".
 10709  func (s ProvideAnomalyFeedbackOutput) GoString() string {
 10710  	return s.String()
 10711  }
 10712  
 10713  // SetAnomalyId sets the AnomalyId field's value.
 10714  func (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.
 10721  type 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".
 10758  func (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".
 10767  func (s RDSInstanceDetails) GoString() string {
 10768  	return s.String()
 10769  }
 10770  
 10771  // SetCurrentGeneration sets the CurrentGeneration field's value.
 10772  func (s *RDSInstanceDetails) SetCurrentGeneration(v bool) *RDSInstanceDetails {
 10773  	s.CurrentGeneration = &v
 10774  	return s
 10775  }
 10776  
 10777  // SetDatabaseEdition sets the DatabaseEdition field's value.
 10778  func (s *RDSInstanceDetails) SetDatabaseEdition(v string) *RDSInstanceDetails {
 10779  	s.DatabaseEdition = &v
 10780  	return s
 10781  }
 10782  
 10783  // SetDatabaseEngine sets the DatabaseEngine field's value.
 10784  func (s *RDSInstanceDetails) SetDatabaseEngine(v string) *RDSInstanceDetails {
 10785  	s.DatabaseEngine = &v
 10786  	return s
 10787  }
 10788  
 10789  // SetDeploymentOption sets the DeploymentOption field's value.
 10790  func (s *RDSInstanceDetails) SetDeploymentOption(v string) *RDSInstanceDetails {
 10791  	s.DeploymentOption = &v
 10792  	return s
 10793  }
 10794  
 10795  // SetFamily sets the Family field's value.
 10796  func (s *RDSInstanceDetails) SetFamily(v string) *RDSInstanceDetails {
 10797  	s.Family = &v
 10798  	return s
 10799  }
 10800  
 10801  // SetInstanceType sets the InstanceType field's value.
 10802  func (s *RDSInstanceDetails) SetInstanceType(v string) *RDSInstanceDetails {
 10803  	s.InstanceType = &v
 10804  	return s
 10805  }
 10806  
 10807  // SetLicenseModel sets the LicenseModel field's value.
 10808  func (s *RDSInstanceDetails) SetLicenseModel(v string) *RDSInstanceDetails {
 10809  	s.LicenseModel = &v
 10810  	return s
 10811  }
 10812  
 10813  // SetRegion sets the Region field's value.
 10814  func (s *RDSInstanceDetails) SetRegion(v string) *RDSInstanceDetails {
 10815  	s.Region = &v
 10816  	return s
 10817  }
 10818  
 10819  // SetSizeFlexEligible sets the SizeFlexEligible field's value.
 10820  func (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.
 10827  type 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".
 10851  func (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".
 10860  func (s RedshiftInstanceDetails) GoString() string {
 10861  	return s.String()
 10862  }
 10863  
 10864  // SetCurrentGeneration sets the CurrentGeneration field's value.
 10865  func (s *RedshiftInstanceDetails) SetCurrentGeneration(v bool) *RedshiftInstanceDetails {
 10866  	s.CurrentGeneration = &v
 10867  	return s
 10868  }
 10869  
 10870  // SetFamily sets the Family field's value.
 10871  func (s *RedshiftInstanceDetails) SetFamily(v string) *RedshiftInstanceDetails {
 10872  	s.Family = &v
 10873  	return s
 10874  }
 10875  
 10876  // SetNodeType sets the NodeType field's value.
 10877  func (s *RedshiftInstanceDetails) SetNodeType(v string) *RedshiftInstanceDetails {
 10878  	s.NodeType = &v
 10879  	return s
 10880  }
 10881  
 10882  // SetRegion sets the Region field's value.
 10883  func (s *RedshiftInstanceDetails) SetRegion(v string) *RedshiftInstanceDetails {
 10884  	s.Region = &v
 10885  	return s
 10886  }
 10887  
 10888  // SetSizeFlexEligible sets the SizeFlexEligible field's value.
 10889  func (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.
 10896  type 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".
 10908  func (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".
 10917  func (s RequestChangedException) GoString() string {
 10918  	return s.String()
 10919  }
 10920  
 10921  func newErrorRequestChangedException(v protocol.ResponseMetadata) error {
 10922  	return &RequestChangedException{
 10923  		RespMetadata: v,
 10924  	}
 10925  }
 10926  
 10927  // Code returns the exception type name.
 10928  func (s *RequestChangedException) Code() string {
 10929  	return "RequestChangedException"
 10930  }
 10931  
 10932  // Message returns the exception's message.
 10933  func (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.
 10941  func (s *RequestChangedException) OrigErr() error {
 10942  	return nil
 10943  }
 10944  
 10945  func (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.
 10950  func (s *RequestChangedException) StatusCode() int {
 10951  	return s.RespMetadata.StatusCode
 10952  }
 10953  
 10954  // RequestID returns the service's response RequestID for request.
 10955  func (s *RequestChangedException) RequestID() string {
 10956  	return s.RespMetadata.RequestID
 10957  }
 10958  
 10959  // The aggregated numbers for your reservation usage.
 10960  type 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".
 11031  func (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".
 11040  func (s ReservationAggregates) GoString() string {
 11041  	return s.String()
 11042  }
 11043  
 11044  // SetAmortizedRecurringFee sets the AmortizedRecurringFee field's value.
 11045  func (s *ReservationAggregates) SetAmortizedRecurringFee(v string) *ReservationAggregates {
 11046  	s.AmortizedRecurringFee = &v
 11047  	return s
 11048  }
 11049  
 11050  // SetAmortizedUpfrontFee sets the AmortizedUpfrontFee field's value.
 11051  func (s *ReservationAggregates) SetAmortizedUpfrontFee(v string) *ReservationAggregates {
 11052  	s.AmortizedUpfrontFee = &v
 11053  	return s
 11054  }
 11055  
 11056  // SetNetRISavings sets the NetRISavings field's value.
 11057  func (s *ReservationAggregates) SetNetRISavings(v string) *ReservationAggregates {
 11058  	s.NetRISavings = &v
 11059  	return s
 11060  }
 11061  
 11062  // SetOnDemandCostOfRIHoursUsed sets the OnDemandCostOfRIHoursUsed field's value.
 11063  func (s *ReservationAggregates) SetOnDemandCostOfRIHoursUsed(v string) *ReservationAggregates {
 11064  	s.OnDemandCostOfRIHoursUsed = &v
 11065  	return s
 11066  }
 11067  
 11068  // SetPurchasedHours sets the PurchasedHours field's value.
 11069  func (s *ReservationAggregates) SetPurchasedHours(v string) *ReservationAggregates {
 11070  	s.PurchasedHours = &v
 11071  	return s
 11072  }
 11073  
 11074  // SetPurchasedUnits sets the PurchasedUnits field's value.
 11075  func (s *ReservationAggregates) SetPurchasedUnits(v string) *ReservationAggregates {
 11076  	s.PurchasedUnits = &v
 11077  	return s
 11078  }
 11079  
 11080  // SetRICostForUnusedHours sets the RICostForUnusedHours field's value.
 11081  func (s *ReservationAggregates) SetRICostForUnusedHours(v string) *ReservationAggregates {
 11082  	s.RICostForUnusedHours = &v
 11083  	return s
 11084  }
 11085  
 11086  // SetRealizedSavings sets the RealizedSavings field's value.
 11087  func (s *ReservationAggregates) SetRealizedSavings(v string) *ReservationAggregates {
 11088  	s.RealizedSavings = &v
 11089  	return s
 11090  }
 11091  
 11092  // SetTotalActualHours sets the TotalActualHours field's value.
 11093  func (s *ReservationAggregates) SetTotalActualHours(v string) *ReservationAggregates {
 11094  	s.TotalActualHours = &v
 11095  	return s
 11096  }
 11097  
 11098  // SetTotalActualUnits sets the TotalActualUnits field's value.
 11099  func (s *ReservationAggregates) SetTotalActualUnits(v string) *ReservationAggregates {
 11100  	s.TotalActualUnits = &v
 11101  	return s
 11102  }
 11103  
 11104  // SetTotalAmortizedFee sets the TotalAmortizedFee field's value.
 11105  func (s *ReservationAggregates) SetTotalAmortizedFee(v string) *ReservationAggregates {
 11106  	s.TotalAmortizedFee = &v
 11107  	return s
 11108  }
 11109  
 11110  // SetTotalPotentialRISavings sets the TotalPotentialRISavings field's value.
 11111  func (s *ReservationAggregates) SetTotalPotentialRISavings(v string) *ReservationAggregates {
 11112  	s.TotalPotentialRISavings = &v
 11113  	return s
 11114  }
 11115  
 11116  // SetUnrealizedSavings sets the UnrealizedSavings field's value.
 11117  func (s *ReservationAggregates) SetUnrealizedSavings(v string) *ReservationAggregates {
 11118  	s.UnrealizedSavings = &v
 11119  	return s
 11120  }
 11121  
 11122  // SetUnusedHours sets the UnusedHours field's value.
 11123  func (s *ReservationAggregates) SetUnusedHours(v string) *ReservationAggregates {
 11124  	s.UnusedHours = &v
 11125  	return s
 11126  }
 11127  
 11128  // SetUnusedUnits sets the UnusedUnits field's value.
 11129  func (s *ReservationAggregates) SetUnusedUnits(v string) *ReservationAggregates {
 11130  	s.UnusedUnits = &v
 11131  	return s
 11132  }
 11133  
 11134  // SetUtilizationPercentage sets the UtilizationPercentage field's value.
 11135  func (s *ReservationAggregates) SetUtilizationPercentage(v string) *ReservationAggregates {
 11136  	s.UtilizationPercentage = &v
 11137  	return s
 11138  }
 11139  
 11140  // SetUtilizationPercentageInUnits sets the UtilizationPercentageInUnits field's value.
 11141  func (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.
 11147  type 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".
 11162  func (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".
 11171  func (s ReservationCoverageGroup) GoString() string {
 11172  	return s.String()
 11173  }
 11174  
 11175  // SetAttributes sets the Attributes field's value.
 11176  func (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.
 11182  func (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.
 11188  type 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".
 11221  func (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".
 11230  func (s ReservationPurchaseRecommendation) GoString() string {
 11231  	return s.String()
 11232  }
 11233  
 11234  // SetAccountScope sets the AccountScope field's value.
 11235  func (s *ReservationPurchaseRecommendation) SetAccountScope(v string) *ReservationPurchaseRecommendation {
 11236  	s.AccountScope = &v
 11237  	return s
 11238  }
 11239  
 11240  // SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
 11241  func (s *ReservationPurchaseRecommendation) SetLookbackPeriodInDays(v string) *ReservationPurchaseRecommendation {
 11242  	s.LookbackPeriodInDays = &v
 11243  	return s
 11244  }
 11245  
 11246  // SetPaymentOption sets the PaymentOption field's value.
 11247  func (s *ReservationPurchaseRecommendation) SetPaymentOption(v string) *ReservationPurchaseRecommendation {
 11248  	s.PaymentOption = &v
 11249  	return s
 11250  }
 11251  
 11252  // SetRecommendationDetails sets the RecommendationDetails field's value.
 11253  func (s *ReservationPurchaseRecommendation) SetRecommendationDetails(v []*ReservationPurchaseRecommendationDetail) *ReservationPurchaseRecommendation {
 11254  	s.RecommendationDetails = v
 11255  	return s
 11256  }
 11257  
 11258  // SetRecommendationSummary sets the RecommendationSummary field's value.
 11259  func (s *ReservationPurchaseRecommendation) SetRecommendationSummary(v *ReservationPurchaseRecommendationSummary) *ReservationPurchaseRecommendation {
 11260  	s.RecommendationSummary = v
 11261  	return s
 11262  }
 11263  
 11264  // SetServiceSpecification sets the ServiceSpecification field's value.
 11265  func (s *ReservationPurchaseRecommendation) SetServiceSpecification(v *ServiceSpecification) *ReservationPurchaseRecommendation {
 11266  	s.ServiceSpecification = v
 11267  	return s
 11268  }
 11269  
 11270  // SetTermInYears sets the TermInYears field's value.
 11271  func (s *ReservationPurchaseRecommendation) SetTermInYears(v string) *ReservationPurchaseRecommendation {
 11272  	s.TermInYears = &v
 11273  	return s
 11274  }
 11275  
 11276  // Details about your recommended reservation purchase.
 11277  type 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".
 11364  func (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".
 11373  func (s ReservationPurchaseRecommendationDetail) GoString() string {
 11374  	return s.String()
 11375  }
 11376  
 11377  // SetAccountId sets the AccountId field's value.
 11378  func (s *ReservationPurchaseRecommendationDetail) SetAccountId(v string) *ReservationPurchaseRecommendationDetail {
 11379  	s.AccountId = &v
 11380  	return s
 11381  }
 11382  
 11383  // SetAverageNormalizedUnitsUsedPerHour sets the AverageNormalizedUnitsUsedPerHour field's value.
 11384  func (s *ReservationPurchaseRecommendationDetail) SetAverageNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
 11385  	s.AverageNormalizedUnitsUsedPerHour = &v
 11386  	return s
 11387  }
 11388  
 11389  // SetAverageNumberOfInstancesUsedPerHour sets the AverageNumberOfInstancesUsedPerHour field's value.
 11390  func (s *ReservationPurchaseRecommendationDetail) SetAverageNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
 11391  	s.AverageNumberOfInstancesUsedPerHour = &v
 11392  	return s
 11393  }
 11394  
 11395  // SetAverageUtilization sets the AverageUtilization field's value.
 11396  func (s *ReservationPurchaseRecommendationDetail) SetAverageUtilization(v string) *ReservationPurchaseRecommendationDetail {
 11397  	s.AverageUtilization = &v
 11398  	return s
 11399  }
 11400  
 11401  // SetCurrencyCode sets the CurrencyCode field's value.
 11402  func (s *ReservationPurchaseRecommendationDetail) SetCurrencyCode(v string) *ReservationPurchaseRecommendationDetail {
 11403  	s.CurrencyCode = &v
 11404  	return s
 11405  }
 11406  
 11407  // SetEstimatedBreakEvenInMonths sets the EstimatedBreakEvenInMonths field's value.
 11408  func (s *ReservationPurchaseRecommendationDetail) SetEstimatedBreakEvenInMonths(v string) *ReservationPurchaseRecommendationDetail {
 11409  	s.EstimatedBreakEvenInMonths = &v
 11410  	return s
 11411  }
 11412  
 11413  // SetEstimatedMonthlyOnDemandCost sets the EstimatedMonthlyOnDemandCost field's value.
 11414  func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlyOnDemandCost(v string) *ReservationPurchaseRecommendationDetail {
 11415  	s.EstimatedMonthlyOnDemandCost = &v
 11416  	return s
 11417  }
 11418  
 11419  // SetEstimatedMonthlySavingsAmount sets the EstimatedMonthlySavingsAmount field's value.
 11420  func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlySavingsAmount(v string) *ReservationPurchaseRecommendationDetail {
 11421  	s.EstimatedMonthlySavingsAmount = &v
 11422  	return s
 11423  }
 11424  
 11425  // SetEstimatedMonthlySavingsPercentage sets the EstimatedMonthlySavingsPercentage field's value.
 11426  func (s *ReservationPurchaseRecommendationDetail) SetEstimatedMonthlySavingsPercentage(v string) *ReservationPurchaseRecommendationDetail {
 11427  	s.EstimatedMonthlySavingsPercentage = &v
 11428  	return s
 11429  }
 11430  
 11431  // SetEstimatedReservationCostForLookbackPeriod sets the EstimatedReservationCostForLookbackPeriod field's value.
 11432  func (s *ReservationPurchaseRecommendationDetail) SetEstimatedReservationCostForLookbackPeriod(v string) *ReservationPurchaseRecommendationDetail {
 11433  	s.EstimatedReservationCostForLookbackPeriod = &v
 11434  	return s
 11435  }
 11436  
 11437  // SetInstanceDetails sets the InstanceDetails field's value.
 11438  func (s *ReservationPurchaseRecommendationDetail) SetInstanceDetails(v *InstanceDetails) *ReservationPurchaseRecommendationDetail {
 11439  	s.InstanceDetails = v
 11440  	return s
 11441  }
 11442  
 11443  // SetMaximumNormalizedUnitsUsedPerHour sets the MaximumNormalizedUnitsUsedPerHour field's value.
 11444  func (s *ReservationPurchaseRecommendationDetail) SetMaximumNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
 11445  	s.MaximumNormalizedUnitsUsedPerHour = &v
 11446  	return s
 11447  }
 11448  
 11449  // SetMaximumNumberOfInstancesUsedPerHour sets the MaximumNumberOfInstancesUsedPerHour field's value.
 11450  func (s *ReservationPurchaseRecommendationDetail) SetMaximumNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
 11451  	s.MaximumNumberOfInstancesUsedPerHour = &v
 11452  	return s
 11453  }
 11454  
 11455  // SetMinimumNormalizedUnitsUsedPerHour sets the MinimumNormalizedUnitsUsedPerHour field's value.
 11456  func (s *ReservationPurchaseRecommendationDetail) SetMinimumNormalizedUnitsUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
 11457  	s.MinimumNormalizedUnitsUsedPerHour = &v
 11458  	return s
 11459  }
 11460  
 11461  // SetMinimumNumberOfInstancesUsedPerHour sets the MinimumNumberOfInstancesUsedPerHour field's value.
 11462  func (s *ReservationPurchaseRecommendationDetail) SetMinimumNumberOfInstancesUsedPerHour(v string) *ReservationPurchaseRecommendationDetail {
 11463  	s.MinimumNumberOfInstancesUsedPerHour = &v
 11464  	return s
 11465  }
 11466  
 11467  // SetRecommendedNormalizedUnitsToPurchase sets the RecommendedNormalizedUnitsToPurchase field's value.
 11468  func (s *ReservationPurchaseRecommendationDetail) SetRecommendedNormalizedUnitsToPurchase(v string) *ReservationPurchaseRecommendationDetail {
 11469  	s.RecommendedNormalizedUnitsToPurchase = &v
 11470  	return s
 11471  }
 11472  
 11473  // SetRecommendedNumberOfInstancesToPurchase sets the RecommendedNumberOfInstancesToPurchase field's value.
 11474  func (s *ReservationPurchaseRecommendationDetail) SetRecommendedNumberOfInstancesToPurchase(v string) *ReservationPurchaseRecommendationDetail {
 11475  	s.RecommendedNumberOfInstancesToPurchase = &v
 11476  	return s
 11477  }
 11478  
 11479  // SetRecurringStandardMonthlyCost sets the RecurringStandardMonthlyCost field's value.
 11480  func (s *ReservationPurchaseRecommendationDetail) SetRecurringStandardMonthlyCost(v string) *ReservationPurchaseRecommendationDetail {
 11481  	s.RecurringStandardMonthlyCost = &v
 11482  	return s
 11483  }
 11484  
 11485  // SetUpfrontCost sets the UpfrontCost field's value.
 11486  func (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.
 11493  type 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".
 11508  func (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".
 11517  func (s ReservationPurchaseRecommendationMetadata) GoString() string {
 11518  	return s.String()
 11519  }
 11520  
 11521  // SetGenerationTimestamp sets the GenerationTimestamp field's value.
 11522  func (s *ReservationPurchaseRecommendationMetadata) SetGenerationTimestamp(v string) *ReservationPurchaseRecommendationMetadata {
 11523  	s.GenerationTimestamp = &v
 11524  	return s
 11525  }
 11526  
 11527  // SetRecommendationId sets the RecommendationId field's value.
 11528  func (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.
 11536  type 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".
 11556  func (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".
 11565  func (s ReservationPurchaseRecommendationSummary) GoString() string {
 11566  	return s.String()
 11567  }
 11568  
 11569  // SetCurrencyCode sets the CurrencyCode field's value.
 11570  func (s *ReservationPurchaseRecommendationSummary) SetCurrencyCode(v string) *ReservationPurchaseRecommendationSummary {
 11571  	s.CurrencyCode = &v
 11572  	return s
 11573  }
 11574  
 11575  // SetTotalEstimatedMonthlySavingsAmount sets the TotalEstimatedMonthlySavingsAmount field's value.
 11576  func (s *ReservationPurchaseRecommendationSummary) SetTotalEstimatedMonthlySavingsAmount(v string) *ReservationPurchaseRecommendationSummary {
 11577  	s.TotalEstimatedMonthlySavingsAmount = &v
 11578  	return s
 11579  }
 11580  
 11581  // SetTotalEstimatedMonthlySavingsPercentage sets the TotalEstimatedMonthlySavingsPercentage field's value.
 11582  func (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.
 11588  type 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".
 11609  func (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".
 11618  func (s ReservationUtilizationGroup) GoString() string {
 11619  	return s.String()
 11620  }
 11621  
 11622  // SetAttributes sets the Attributes field's value.
 11623  func (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.
 11629  func (s *ReservationUtilizationGroup) SetKey(v string) *ReservationUtilizationGroup {
 11630  	s.Key = &v
 11631  	return s
 11632  }
 11633  
 11634  // SetUtilization sets the Utilization field's value.
 11635  func (s *ReservationUtilizationGroup) SetUtilization(v *ReservationAggregates) *ReservationUtilizationGroup {
 11636  	s.Utilization = v
 11637  	return s
 11638  }
 11639  
 11640  // SetValue sets the Value field's value.
 11641  func (s *ReservationUtilizationGroup) SetValue(v string) *ReservationUtilizationGroup {
 11642  	s.Value = &v
 11643  	return s
 11644  }
 11645  
 11646  // Details on the resource.
 11647  type 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".
 11659  func (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".
 11668  func (s ResourceDetails) GoString() string {
 11669  	return s.String()
 11670  }
 11671  
 11672  // SetEC2ResourceDetails sets the EC2ResourceDetails field's value.
 11673  func (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.
 11679  type 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".
 11691  func (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".
 11700  func (s ResourceNotFoundException) GoString() string {
 11701  	return s.String()
 11702  }
 11703  
 11704  func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
 11705  	return &ResourceNotFoundException{
 11706  		RespMetadata: v,
 11707  	}
 11708  }
 11709  
 11710  // Code returns the exception type name.
 11711  func (s *ResourceNotFoundException) Code() string {
 11712  	return "ResourceNotFoundException"
 11713  }
 11714  
 11715  // Message returns the exception's message.
 11716  func (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.
 11724  func (s *ResourceNotFoundException) OrigErr() error {
 11725  	return nil
 11726  }
 11727  
 11728  func (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.
 11733  func (s *ResourceNotFoundException) StatusCode() int {
 11734  	return s.RespMetadata.StatusCode
 11735  }
 11736  
 11737  // RequestID returns the service's response RequestID for request.
 11738  func (s *ResourceNotFoundException) RequestID() string {
 11739  	return s.RespMetadata.RequestID
 11740  }
 11741  
 11742  // Resource utilization of current resource.
 11743  type 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".
 11755  func (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".
 11764  func (s ResourceUtilization) GoString() string {
 11765  	return s.String()
 11766  }
 11767  
 11768  // SetEC2ResourceUtilization sets the EC2ResourceUtilization field's value.
 11769  func (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.
 11775  type 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".
 11796  func (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".
 11805  func (s ResultByTime) GoString() string {
 11806  	return s.String()
 11807  }
 11808  
 11809  // SetEstimated sets the Estimated field's value.
 11810  func (s *ResultByTime) SetEstimated(v bool) *ResultByTime {
 11811  	s.Estimated = &v
 11812  	return s
 11813  }
 11814  
 11815  // SetGroups sets the Groups field's value.
 11816  func (s *ResultByTime) SetGroups(v []*Group) *ResultByTime {
 11817  	s.Groups = v
 11818  	return s
 11819  }
 11820  
 11821  // SetTimePeriod sets the TimePeriod field's value.
 11822  func (s *ResultByTime) SetTimePeriod(v *DateInterval) *ResultByTime {
 11823  	s.TimePeriod = v
 11824  	return s
 11825  }
 11826  
 11827  // SetTotal sets the Total field's value.
 11828  func (s *ResultByTime) SetTotal(v map[string]*MetricValue) *ResultByTime {
 11829  	s.Total = v
 11830  	return s
 11831  }
 11832  
 11833  // Recommendations to rightsize resources.
 11834  type 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".
 11863  func (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".
 11872  func (s RightsizingRecommendation) GoString() string {
 11873  	return s.String()
 11874  }
 11875  
 11876  // SetAccountId sets the AccountId field's value.
 11877  func (s *RightsizingRecommendation) SetAccountId(v string) *RightsizingRecommendation {
 11878  	s.AccountId = &v
 11879  	return s
 11880  }
 11881  
 11882  // SetCurrentInstance sets the CurrentInstance field's value.
 11883  func (s *RightsizingRecommendation) SetCurrentInstance(v *CurrentInstance) *RightsizingRecommendation {
 11884  	s.CurrentInstance = v
 11885  	return s
 11886  }
 11887  
 11888  // SetFindingReasonCodes sets the FindingReasonCodes field's value.
 11889  func (s *RightsizingRecommendation) SetFindingReasonCodes(v []*string) *RightsizingRecommendation {
 11890  	s.FindingReasonCodes = v
 11891  	return s
 11892  }
 11893  
 11894  // SetModifyRecommendationDetail sets the ModifyRecommendationDetail field's value.
 11895  func (s *RightsizingRecommendation) SetModifyRecommendationDetail(v *ModifyRecommendationDetail) *RightsizingRecommendation {
 11896  	s.ModifyRecommendationDetail = v
 11897  	return s
 11898  }
 11899  
 11900  // SetRightsizingType sets the RightsizingType field's value.
 11901  func (s *RightsizingRecommendation) SetRightsizingType(v string) *RightsizingRecommendation {
 11902  	s.RightsizingType = &v
 11903  	return s
 11904  }
 11905  
 11906  // SetTerminateRecommendationDetail sets the TerminateRecommendationDetail field's value.
 11907  func (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.
 11918  type 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".
 11939  func (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".
 11948  func (s RightsizingRecommendationConfiguration) GoString() string {
 11949  	return s.String()
 11950  }
 11951  
 11952  // Validate inspects the fields of the type to determine if they are valid.
 11953  func (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.
 11969  func (s *RightsizingRecommendationConfiguration) SetBenefitsConsidered(v bool) *RightsizingRecommendationConfiguration {
 11970  	s.BenefitsConsidered = &v
 11971  	return s
 11972  }
 11973  
 11974  // SetRecommendationTarget sets the RecommendationTarget field's value.
 11975  func (s *RightsizingRecommendationConfiguration) SetRecommendationTarget(v string) *RightsizingRecommendationConfiguration {
 11976  	s.RecommendationTarget = &v
 11977  	return s
 11978  }
 11979  
 11980  // Metadata for this recommendation set.
 11981  type 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".
 12003  func (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".
 12012  func (s RightsizingRecommendationMetadata) GoString() string {
 12013  	return s.String()
 12014  }
 12015  
 12016  // SetAdditionalMetadata sets the AdditionalMetadata field's value.
 12017  func (s *RightsizingRecommendationMetadata) SetAdditionalMetadata(v string) *RightsizingRecommendationMetadata {
 12018  	s.AdditionalMetadata = &v
 12019  	return s
 12020  }
 12021  
 12022  // SetGenerationTimestamp sets the GenerationTimestamp field's value.
 12023  func (s *RightsizingRecommendationMetadata) SetGenerationTimestamp(v string) *RightsizingRecommendationMetadata {
 12024  	s.GenerationTimestamp = &v
 12025  	return s
 12026  }
 12027  
 12028  // SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
 12029  func (s *RightsizingRecommendationMetadata) SetLookbackPeriodInDays(v string) *RightsizingRecommendationMetadata {
 12030  	s.LookbackPeriodInDays = &v
 12031  	return s
 12032  }
 12033  
 12034  // SetRecommendationId sets the RecommendationId field's value.
 12035  func (s *RightsizingRecommendationMetadata) SetRecommendationId(v string) *RightsizingRecommendationMetadata {
 12036  	s.RecommendationId = &v
 12037  	return s
 12038  }
 12039  
 12040  // The summary of rightsizing recommendations
 12041  type 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".
 12063  func (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".
 12072  func (s RightsizingRecommendationSummary) GoString() string {
 12073  	return s.String()
 12074  }
 12075  
 12076  // SetEstimatedTotalMonthlySavingsAmount sets the EstimatedTotalMonthlySavingsAmount field's value.
 12077  func (s *RightsizingRecommendationSummary) SetEstimatedTotalMonthlySavingsAmount(v string) *RightsizingRecommendationSummary {
 12078  	s.EstimatedTotalMonthlySavingsAmount = &v
 12079  	return s
 12080  }
 12081  
 12082  // SetSavingsCurrencyCode sets the SavingsCurrencyCode field's value.
 12083  func (s *RightsizingRecommendationSummary) SetSavingsCurrencyCode(v string) *RightsizingRecommendationSummary {
 12084  	s.SavingsCurrencyCode = &v
 12085  	return s
 12086  }
 12087  
 12088  // SetSavingsPercentage sets the SavingsPercentage field's value.
 12089  func (s *RightsizingRecommendationSummary) SetSavingsPercentage(v string) *RightsizingRecommendationSummary {
 12090  	s.SavingsPercentage = &v
 12091  	return s
 12092  }
 12093  
 12094  // SetTotalRecommendationCount sets the TotalRecommendationCount field's value.
 12095  func (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.
 12102  type 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".
 12123  func (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".
 12132  func (s RootCause) GoString() string {
 12133  	return s.String()
 12134  }
 12135  
 12136  // SetLinkedAccount sets the LinkedAccount field's value.
 12137  func (s *RootCause) SetLinkedAccount(v string) *RootCause {
 12138  	s.LinkedAccount = &v
 12139  	return s
 12140  }
 12141  
 12142  // SetRegion sets the Region field's value.
 12143  func (s *RootCause) SetRegion(v string) *RootCause {
 12144  	s.Region = &v
 12145  	return s
 12146  }
 12147  
 12148  // SetService sets the Service field's value.
 12149  func (s *RootCause) SetService(v string) *RootCause {
 12150  	s.Service = &v
 12151  	return s
 12152  }
 12153  
 12154  // SetUsageType sets the UsageType field's value.
 12155  func (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.
 12162  type 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".
 12183  func (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".
 12192  func (s SavingsPlansAmortizedCommitment) GoString() string {
 12193  	return s.String()
 12194  }
 12195  
 12196  // SetAmortizedRecurringCommitment sets the AmortizedRecurringCommitment field's value.
 12197  func (s *SavingsPlansAmortizedCommitment) SetAmortizedRecurringCommitment(v string) *SavingsPlansAmortizedCommitment {
 12198  	s.AmortizedRecurringCommitment = &v
 12199  	return s
 12200  }
 12201  
 12202  // SetAmortizedUpfrontCommitment sets the AmortizedUpfrontCommitment field's value.
 12203  func (s *SavingsPlansAmortizedCommitment) SetAmortizedUpfrontCommitment(v string) *SavingsPlansAmortizedCommitment {
 12204  	s.AmortizedUpfrontCommitment = &v
 12205  	return s
 12206  }
 12207  
 12208  // SetTotalAmortizedCommitment sets the TotalAmortizedCommitment field's value.
 12209  func (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.
 12217  type 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".
 12235  func (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".
 12244  func (s SavingsPlansCoverage) GoString() string {
 12245  	return s.String()
 12246  }
 12247  
 12248  // SetAttributes sets the Attributes field's value.
 12249  func (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.
 12255  func (s *SavingsPlansCoverage) SetCoverage(v *SavingsPlansCoverageData) *SavingsPlansCoverage {
 12256  	s.Coverage = v
 12257  	return s
 12258  }
 12259  
 12260  // SetTimePeriod sets the TimePeriod field's value.
 12261  func (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.
 12268  type 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".
 12292  func (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".
 12301  func (s SavingsPlansCoverageData) GoString() string {
 12302  	return s.String()
 12303  }
 12304  
 12305  // SetCoveragePercentage sets the CoveragePercentage field's value.
 12306  func (s *SavingsPlansCoverageData) SetCoveragePercentage(v string) *SavingsPlansCoverageData {
 12307  	s.CoveragePercentage = &v
 12308  	return s
 12309  }
 12310  
 12311  // SetOnDemandCost sets the OnDemandCost field's value.
 12312  func (s *SavingsPlansCoverageData) SetOnDemandCost(v string) *SavingsPlansCoverageData {
 12313  	s.OnDemandCost = &v
 12314  	return s
 12315  }
 12316  
 12317  // SetSpendCoveredBySavingsPlans sets the SpendCoveredBySavingsPlans field's value.
 12318  func (s *SavingsPlansCoverageData) SetSpendCoveredBySavingsPlans(v string) *SavingsPlansCoverageData {
 12319  	s.SpendCoveredBySavingsPlans = &v
 12320  	return s
 12321  }
 12322  
 12323  // SetTotalCost sets the TotalCost field's value.
 12324  func (s *SavingsPlansCoverageData) SetTotalCost(v string) *SavingsPlansCoverageData {
 12325  	s.TotalCost = &v
 12326  	return s
 12327  }
 12328  
 12329  // The attribute details on a specific Savings Plan.
 12330  type 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".
 12349  func (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".
 12358  func (s SavingsPlansDetails) GoString() string {
 12359  	return s.String()
 12360  }
 12361  
 12362  // SetInstanceFamily sets the InstanceFamily field's value.
 12363  func (s *SavingsPlansDetails) SetInstanceFamily(v string) *SavingsPlansDetails {
 12364  	s.InstanceFamily = &v
 12365  	return s
 12366  }
 12367  
 12368  // SetOfferingId sets the OfferingId field's value.
 12369  func (s *SavingsPlansDetails) SetOfferingId(v string) *SavingsPlansDetails {
 12370  	s.OfferingId = &v
 12371  	return s
 12372  }
 12373  
 12374  // SetRegion sets the Region field's value.
 12375  func (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.
 12382  type 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".
 12417  func (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".
 12426  func (s SavingsPlansPurchaseRecommendation) GoString() string {
 12427  	return s.String()
 12428  }
 12429  
 12430  // SetAccountScope sets the AccountScope field's value.
 12431  func (s *SavingsPlansPurchaseRecommendation) SetAccountScope(v string) *SavingsPlansPurchaseRecommendation {
 12432  	s.AccountScope = &v
 12433  	return s
 12434  }
 12435  
 12436  // SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
 12437  func (s *SavingsPlansPurchaseRecommendation) SetLookbackPeriodInDays(v string) *SavingsPlansPurchaseRecommendation {
 12438  	s.LookbackPeriodInDays = &v
 12439  	return s
 12440  }
 12441  
 12442  // SetPaymentOption sets the PaymentOption field's value.
 12443  func (s *SavingsPlansPurchaseRecommendation) SetPaymentOption(v string) *SavingsPlansPurchaseRecommendation {
 12444  	s.PaymentOption = &v
 12445  	return s
 12446  }
 12447  
 12448  // SetSavingsPlansPurchaseRecommendationDetails sets the SavingsPlansPurchaseRecommendationDetails field's value.
 12449  func (s *SavingsPlansPurchaseRecommendation) SetSavingsPlansPurchaseRecommendationDetails(v []*SavingsPlansPurchaseRecommendationDetail) *SavingsPlansPurchaseRecommendation {
 12450  	s.SavingsPlansPurchaseRecommendationDetails = v
 12451  	return s
 12452  }
 12453  
 12454  // SetSavingsPlansPurchaseRecommendationSummary sets the SavingsPlansPurchaseRecommendationSummary field's value.
 12455  func (s *SavingsPlansPurchaseRecommendation) SetSavingsPlansPurchaseRecommendationSummary(v *SavingsPlansPurchaseRecommendationSummary) *SavingsPlansPurchaseRecommendation {
 12456  	s.SavingsPlansPurchaseRecommendationSummary = v
 12457  	return s
 12458  }
 12459  
 12460  // SetSavingsPlansType sets the SavingsPlansType field's value.
 12461  func (s *SavingsPlansPurchaseRecommendation) SetSavingsPlansType(v string) *SavingsPlansPurchaseRecommendation {
 12462  	s.SavingsPlansType = &v
 12463  	return s
 12464  }
 12465  
 12466  // SetTermInYears sets the TermInYears field's value.
 12467  func (s *SavingsPlansPurchaseRecommendation) SetTermInYears(v string) *SavingsPlansPurchaseRecommendation {
 12468  	s.TermInYears = &v
 12469  	return s
 12470  }
 12471  
 12472  // Details for your recommended Savings Plans.
 12473  type 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".
 12543  func (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".
 12552  func (s SavingsPlansPurchaseRecommendationDetail) GoString() string {
 12553  	return s.String()
 12554  }
 12555  
 12556  // SetAccountId sets the AccountId field's value.
 12557  func (s *SavingsPlansPurchaseRecommendationDetail) SetAccountId(v string) *SavingsPlansPurchaseRecommendationDetail {
 12558  	s.AccountId = &v
 12559  	return s
 12560  }
 12561  
 12562  // SetCurrencyCode sets the CurrencyCode field's value.
 12563  func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrencyCode(v string) *SavingsPlansPurchaseRecommendationDetail {
 12564  	s.CurrencyCode = &v
 12565  	return s
 12566  }
 12567  
 12568  // SetCurrentAverageHourlyOnDemandSpend sets the CurrentAverageHourlyOnDemandSpend field's value.
 12569  func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrentAverageHourlyOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationDetail {
 12570  	s.CurrentAverageHourlyOnDemandSpend = &v
 12571  	return s
 12572  }
 12573  
 12574  // SetCurrentMaximumHourlyOnDemandSpend sets the CurrentMaximumHourlyOnDemandSpend field's value.
 12575  func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrentMaximumHourlyOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationDetail {
 12576  	s.CurrentMaximumHourlyOnDemandSpend = &v
 12577  	return s
 12578  }
 12579  
 12580  // SetCurrentMinimumHourlyOnDemandSpend sets the CurrentMinimumHourlyOnDemandSpend field's value.
 12581  func (s *SavingsPlansPurchaseRecommendationDetail) SetCurrentMinimumHourlyOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationDetail {
 12582  	s.CurrentMinimumHourlyOnDemandSpend = &v
 12583  	return s
 12584  }
 12585  
 12586  // SetEstimatedAverageUtilization sets the EstimatedAverageUtilization field's value.
 12587  func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedAverageUtilization(v string) *SavingsPlansPurchaseRecommendationDetail {
 12588  	s.EstimatedAverageUtilization = &v
 12589  	return s
 12590  }
 12591  
 12592  // SetEstimatedMonthlySavingsAmount sets the EstimatedMonthlySavingsAmount field's value.
 12593  func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedMonthlySavingsAmount(v string) *SavingsPlansPurchaseRecommendationDetail {
 12594  	s.EstimatedMonthlySavingsAmount = &v
 12595  	return s
 12596  }
 12597  
 12598  // SetEstimatedOnDemandCost sets the EstimatedOnDemandCost field's value.
 12599  func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedOnDemandCost(v string) *SavingsPlansPurchaseRecommendationDetail {
 12600  	s.EstimatedOnDemandCost = &v
 12601  	return s
 12602  }
 12603  
 12604  // SetEstimatedOnDemandCostWithCurrentCommitment sets the EstimatedOnDemandCostWithCurrentCommitment field's value.
 12605  func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedOnDemandCostWithCurrentCommitment(v string) *SavingsPlansPurchaseRecommendationDetail {
 12606  	s.EstimatedOnDemandCostWithCurrentCommitment = &v
 12607  	return s
 12608  }
 12609  
 12610  // SetEstimatedROI sets the EstimatedROI field's value.
 12611  func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedROI(v string) *SavingsPlansPurchaseRecommendationDetail {
 12612  	s.EstimatedROI = &v
 12613  	return s
 12614  }
 12615  
 12616  // SetEstimatedSPCost sets the EstimatedSPCost field's value.
 12617  func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedSPCost(v string) *SavingsPlansPurchaseRecommendationDetail {
 12618  	s.EstimatedSPCost = &v
 12619  	return s
 12620  }
 12621  
 12622  // SetEstimatedSavingsAmount sets the EstimatedSavingsAmount field's value.
 12623  func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedSavingsAmount(v string) *SavingsPlansPurchaseRecommendationDetail {
 12624  	s.EstimatedSavingsAmount = &v
 12625  	return s
 12626  }
 12627  
 12628  // SetEstimatedSavingsPercentage sets the EstimatedSavingsPercentage field's value.
 12629  func (s *SavingsPlansPurchaseRecommendationDetail) SetEstimatedSavingsPercentage(v string) *SavingsPlansPurchaseRecommendationDetail {
 12630  	s.EstimatedSavingsPercentage = &v
 12631  	return s
 12632  }
 12633  
 12634  // SetHourlyCommitmentToPurchase sets the HourlyCommitmentToPurchase field's value.
 12635  func (s *SavingsPlansPurchaseRecommendationDetail) SetHourlyCommitmentToPurchase(v string) *SavingsPlansPurchaseRecommendationDetail {
 12636  	s.HourlyCommitmentToPurchase = &v
 12637  	return s
 12638  }
 12639  
 12640  // SetSavingsPlansDetails sets the SavingsPlansDetails field's value.
 12641  func (s *SavingsPlansPurchaseRecommendationDetail) SetSavingsPlansDetails(v *SavingsPlansDetails) *SavingsPlansPurchaseRecommendationDetail {
 12642  	s.SavingsPlansDetails = v
 12643  	return s
 12644  }
 12645  
 12646  // SetUpfrontCost sets the UpfrontCost field's value.
 12647  func (s *SavingsPlansPurchaseRecommendationDetail) SetUpfrontCost(v string) *SavingsPlansPurchaseRecommendationDetail {
 12648  	s.UpfrontCost = &v
 12649  	return s
 12650  }
 12651  
 12652  // Metadata about your Savings Plans Purchase Recommendations.
 12653  type 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".
 12671  func (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".
 12680  func (s SavingsPlansPurchaseRecommendationMetadata) GoString() string {
 12681  	return s.String()
 12682  }
 12683  
 12684  // SetAdditionalMetadata sets the AdditionalMetadata field's value.
 12685  func (s *SavingsPlansPurchaseRecommendationMetadata) SetAdditionalMetadata(v string) *SavingsPlansPurchaseRecommendationMetadata {
 12686  	s.AdditionalMetadata = &v
 12687  	return s
 12688  }
 12689  
 12690  // SetGenerationTimestamp sets the GenerationTimestamp field's value.
 12691  func (s *SavingsPlansPurchaseRecommendationMetadata) SetGenerationTimestamp(v string) *SavingsPlansPurchaseRecommendationMetadata {
 12692  	s.GenerationTimestamp = &v
 12693  	return s
 12694  }
 12695  
 12696  // SetRecommendationId sets the RecommendationId field's value.
 12697  func (s *SavingsPlansPurchaseRecommendationMetadata) SetRecommendationId(v string) *SavingsPlansPurchaseRecommendationMetadata {
 12698  	s.RecommendationId = &v
 12699  	return s
 12700  }
 12701  
 12702  // Summary metrics for your Savings Plans Purchase Recommendations.
 12703  type 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".
 12756  func (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".
 12765  func (s SavingsPlansPurchaseRecommendationSummary) GoString() string {
 12766  	return s.String()
 12767  }
 12768  
 12769  // SetCurrencyCode sets the CurrencyCode field's value.
 12770  func (s *SavingsPlansPurchaseRecommendationSummary) SetCurrencyCode(v string) *SavingsPlansPurchaseRecommendationSummary {
 12771  	s.CurrencyCode = &v
 12772  	return s
 12773  }
 12774  
 12775  // SetCurrentOnDemandSpend sets the CurrentOnDemandSpend field's value.
 12776  func (s *SavingsPlansPurchaseRecommendationSummary) SetCurrentOnDemandSpend(v string) *SavingsPlansPurchaseRecommendationSummary {
 12777  	s.CurrentOnDemandSpend = &v
 12778  	return s
 12779  }
 12780  
 12781  // SetDailyCommitmentToPurchase sets the DailyCommitmentToPurchase field's value.
 12782  func (s *SavingsPlansPurchaseRecommendationSummary) SetDailyCommitmentToPurchase(v string) *SavingsPlansPurchaseRecommendationSummary {
 12783  	s.DailyCommitmentToPurchase = &v
 12784  	return s
 12785  }
 12786  
 12787  // SetEstimatedMonthlySavingsAmount sets the EstimatedMonthlySavingsAmount field's value.
 12788  func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedMonthlySavingsAmount(v string) *SavingsPlansPurchaseRecommendationSummary {
 12789  	s.EstimatedMonthlySavingsAmount = &v
 12790  	return s
 12791  }
 12792  
 12793  // SetEstimatedOnDemandCostWithCurrentCommitment sets the EstimatedOnDemandCostWithCurrentCommitment field's value.
 12794  func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedOnDemandCostWithCurrentCommitment(v string) *SavingsPlansPurchaseRecommendationSummary {
 12795  	s.EstimatedOnDemandCostWithCurrentCommitment = &v
 12796  	return s
 12797  }
 12798  
 12799  // SetEstimatedROI sets the EstimatedROI field's value.
 12800  func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedROI(v string) *SavingsPlansPurchaseRecommendationSummary {
 12801  	s.EstimatedROI = &v
 12802  	return s
 12803  }
 12804  
 12805  // SetEstimatedSavingsAmount sets the EstimatedSavingsAmount field's value.
 12806  func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedSavingsAmount(v string) *SavingsPlansPurchaseRecommendationSummary {
 12807  	s.EstimatedSavingsAmount = &v
 12808  	return s
 12809  }
 12810  
 12811  // SetEstimatedSavingsPercentage sets the EstimatedSavingsPercentage field's value.
 12812  func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedSavingsPercentage(v string) *SavingsPlansPurchaseRecommendationSummary {
 12813  	s.EstimatedSavingsPercentage = &v
 12814  	return s
 12815  }
 12816  
 12817  // SetEstimatedTotalCost sets the EstimatedTotalCost field's value.
 12818  func (s *SavingsPlansPurchaseRecommendationSummary) SetEstimatedTotalCost(v string) *SavingsPlansPurchaseRecommendationSummary {
 12819  	s.EstimatedTotalCost = &v
 12820  	return s
 12821  }
 12822  
 12823  // SetHourlyCommitmentToPurchase sets the HourlyCommitmentToPurchase field's value.
 12824  func (s *SavingsPlansPurchaseRecommendationSummary) SetHourlyCommitmentToPurchase(v string) *SavingsPlansPurchaseRecommendationSummary {
 12825  	s.HourlyCommitmentToPurchase = &v
 12826  	return s
 12827  }
 12828  
 12829  // SetTotalRecommendationCount sets the TotalRecommendationCount field's value.
 12830  func (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.
 12837  type 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".
 12855  func (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".
 12864  func (s SavingsPlansSavings) GoString() string {
 12865  	return s.String()
 12866  }
 12867  
 12868  // SetNetSavings sets the NetSavings field's value.
 12869  func (s *SavingsPlansSavings) SetNetSavings(v string) *SavingsPlansSavings {
 12870  	s.NetSavings = &v
 12871  	return s
 12872  }
 12873  
 12874  // SetOnDemandCostEquivalent sets the OnDemandCostEquivalent field's value.
 12875  func (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.
 12881  type 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".
 12906  func (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".
 12915  func (s SavingsPlansUtilization) GoString() string {
 12916  	return s.String()
 12917  }
 12918  
 12919  // SetTotalCommitment sets the TotalCommitment field's value.
 12920  func (s *SavingsPlansUtilization) SetTotalCommitment(v string) *SavingsPlansUtilization {
 12921  	s.TotalCommitment = &v
 12922  	return s
 12923  }
 12924  
 12925  // SetUnusedCommitment sets the UnusedCommitment field's value.
 12926  func (s *SavingsPlansUtilization) SetUnusedCommitment(v string) *SavingsPlansUtilization {
 12927  	s.UnusedCommitment = &v
 12928  	return s
 12929  }
 12930  
 12931  // SetUsedCommitment sets the UsedCommitment field's value.
 12932  func (s *SavingsPlansUtilization) SetUsedCommitment(v string) *SavingsPlansUtilization {
 12933  	s.UsedCommitment = &v
 12934  	return s
 12935  }
 12936  
 12937  // SetUtilizationPercentage sets the UtilizationPercentage field's value.
 12938  func (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.
 12944  type 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".
 12968  func (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".
 12977  func (s SavingsPlansUtilizationAggregates) GoString() string {
 12978  	return s.String()
 12979  }
 12980  
 12981  // SetAmortizedCommitment sets the AmortizedCommitment field's value.
 12982  func (s *SavingsPlansUtilizationAggregates) SetAmortizedCommitment(v *SavingsPlansAmortizedCommitment) *SavingsPlansUtilizationAggregates {
 12983  	s.AmortizedCommitment = v
 12984  	return s
 12985  }
 12986  
 12987  // SetSavings sets the Savings field's value.
 12988  func (s *SavingsPlansUtilizationAggregates) SetSavings(v *SavingsPlansSavings) *SavingsPlansUtilizationAggregates {
 12989  	s.Savings = v
 12990  	return s
 12991  }
 12992  
 12993  // SetUtilization sets the Utilization field's value.
 12994  func (s *SavingsPlansUtilizationAggregates) SetUtilization(v *SavingsPlansUtilization) *SavingsPlansUtilizationAggregates {
 12995  	s.Utilization = v
 12996  	return s
 12997  }
 12998  
 12999  // The amount of Savings Plans utilization, in hours.
 13000  type 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".
 13029  func (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".
 13038  func (s SavingsPlansUtilizationByTime) GoString() string {
 13039  	return s.String()
 13040  }
 13041  
 13042  // SetAmortizedCommitment sets the AmortizedCommitment field's value.
 13043  func (s *SavingsPlansUtilizationByTime) SetAmortizedCommitment(v *SavingsPlansAmortizedCommitment) *SavingsPlansUtilizationByTime {
 13044  	s.AmortizedCommitment = v
 13045  	return s
 13046  }
 13047  
 13048  // SetSavings sets the Savings field's value.
 13049  func (s *SavingsPlansUtilizationByTime) SetSavings(v *SavingsPlansSavings) *SavingsPlansUtilizationByTime {
 13050  	s.Savings = v
 13051  	return s
 13052  }
 13053  
 13054  // SetTimePeriod sets the TimePeriod field's value.
 13055  func (s *SavingsPlansUtilizationByTime) SetTimePeriod(v *DateInterval) *SavingsPlansUtilizationByTime {
 13056  	s.TimePeriod = v
 13057  	return s
 13058  }
 13059  
 13060  // SetUtilization sets the Utilization field's value.
 13061  func (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.
 13070  type 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".
 13098  func (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".
 13107  func (s SavingsPlansUtilizationDetail) GoString() string {
 13108  	return s.String()
 13109  }
 13110  
 13111  // SetAmortizedCommitment sets the AmortizedCommitment field's value.
 13112  func (s *SavingsPlansUtilizationDetail) SetAmortizedCommitment(v *SavingsPlansAmortizedCommitment) *SavingsPlansUtilizationDetail {
 13113  	s.AmortizedCommitment = v
 13114  	return s
 13115  }
 13116  
 13117  // SetAttributes sets the Attributes field's value.
 13118  func (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.
 13124  func (s *SavingsPlansUtilizationDetail) SetSavings(v *SavingsPlansSavings) *SavingsPlansUtilizationDetail {
 13125  	s.Savings = v
 13126  	return s
 13127  }
 13128  
 13129  // SetSavingsPlanArn sets the SavingsPlanArn field's value.
 13130  func (s *SavingsPlansUtilizationDetail) SetSavingsPlanArn(v string) *SavingsPlansUtilizationDetail {
 13131  	s.SavingsPlanArn = &v
 13132  	return s
 13133  }
 13134  
 13135  // SetUtilization sets the Utilization field's value.
 13136  func (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.
 13143  type 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".
 13155  func (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".
 13164  func (s ServiceQuotaExceededException) GoString() string {
 13165  	return s.String()
 13166  }
 13167  
 13168  func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
 13169  	return &ServiceQuotaExceededException{
 13170  		RespMetadata: v,
 13171  	}
 13172  }
 13173  
 13174  // Code returns the exception type name.
 13175  func (s *ServiceQuotaExceededException) Code() string {
 13176  	return "ServiceQuotaExceededException"
 13177  }
 13178  
 13179  // Message returns the exception's message.
 13180  func (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.
 13188  func (s *ServiceQuotaExceededException) OrigErr() error {
 13189  	return nil
 13190  }
 13191  
 13192  func (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.
 13197  func (s *ServiceQuotaExceededException) StatusCode() int {
 13198  	return s.RespMetadata.StatusCode
 13199  }
 13200  
 13201  // RequestID returns the service's response RequestID for request.
 13202  func (s *ServiceQuotaExceededException) RequestID() string {
 13203  	return s.RespMetadata.RequestID
 13204  }
 13205  
 13206  // Hardware specifications for the service that you want recommendations for.
 13207  type 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".
 13220  func (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".
 13229  func (s ServiceSpecification) GoString() string {
 13230  	return s.String()
 13231  }
 13232  
 13233  // SetEC2Specification sets the EC2Specification field's value.
 13234  func (s *ServiceSpecification) SetEC2Specification(v *EC2Specification) *ServiceSpecification {
 13235  	s.EC2Specification = v
 13236  	return s
 13237  }
 13238  
 13239  // The details of how to sort the data.
 13240  type 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".
 13257  func (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".
 13266  func (s SortDefinition) GoString() string {
 13267  	return s.String()
 13268  }
 13269  
 13270  // Validate inspects the fields of the type to determine if they are valid.
 13271  func (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.
 13284  func (s *SortDefinition) SetKey(v string) *SortDefinition {
 13285  	s.Key = &v
 13286  	return s
 13287  }
 13288  
 13289  // SetSortOrder sets the SortOrder field's value.
 13290  func (s *SortDefinition) SetSortOrder(v string) *SortDefinition {
 13291  	s.SortOrder = &v
 13292  	return s
 13293  }
 13294  
 13295  // The recipient of AnomalySubscription notifications.
 13296  type 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".
 13315  func (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".
 13324  func (s Subscriber) GoString() string {
 13325  	return s.String()
 13326  }
 13327  
 13328  // Validate inspects the fields of the type to determine if they are valid.
 13329  func (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.
 13342  func (s *Subscriber) SetAddress(v string) *Subscriber {
 13343  	s.Address = &v
 13344  	return s
 13345  }
 13346  
 13347  // SetStatus sets the Status field's value.
 13348  func (s *Subscriber) SetStatus(v string) *Subscriber {
 13349  	s.Status = &v
 13350  	return s
 13351  }
 13352  
 13353  // SetType sets the Type field's value.
 13354  func (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.
 13367  type 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".
 13387  func (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".
 13396  func (s TagValues) GoString() string {
 13397  	return s.String()
 13398  }
 13399  
 13400  // SetKey sets the Key field's value.
 13401  func (s *TagValues) SetKey(v string) *TagValues {
 13402  	s.Key = &v
 13403  	return s
 13404  }
 13405  
 13406  // SetMatchOptions sets the MatchOptions field's value.
 13407  func (s *TagValues) SetMatchOptions(v []*string) *TagValues {
 13408  	s.MatchOptions = v
 13409  	return s
 13410  }
 13411  
 13412  // SetValues sets the Values field's value.
 13413  func (s *TagValues) SetValues(v []*string) *TagValues {
 13414  	s.Values = v
 13415  	return s
 13416  }
 13417  
 13418  // Details on recommended instance.
 13419  type 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".
 13453  func (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".
 13462  func (s TargetInstance) GoString() string {
 13463  	return s.String()
 13464  }
 13465  
 13466  // SetCurrencyCode sets the CurrencyCode field's value.
 13467  func (s *TargetInstance) SetCurrencyCode(v string) *TargetInstance {
 13468  	s.CurrencyCode = &v
 13469  	return s
 13470  }
 13471  
 13472  // SetDefaultTargetInstance sets the DefaultTargetInstance field's value.
 13473  func (s *TargetInstance) SetDefaultTargetInstance(v bool) *TargetInstance {
 13474  	s.DefaultTargetInstance = &v
 13475  	return s
 13476  }
 13477  
 13478  // SetEstimatedMonthlyCost sets the EstimatedMonthlyCost field's value.
 13479  func (s *TargetInstance) SetEstimatedMonthlyCost(v string) *TargetInstance {
 13480  	s.EstimatedMonthlyCost = &v
 13481  	return s
 13482  }
 13483  
 13484  // SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
 13485  func (s *TargetInstance) SetEstimatedMonthlySavings(v string) *TargetInstance {
 13486  	s.EstimatedMonthlySavings = &v
 13487  	return s
 13488  }
 13489  
 13490  // SetExpectedResourceUtilization sets the ExpectedResourceUtilization field's value.
 13491  func (s *TargetInstance) SetExpectedResourceUtilization(v *ResourceUtilization) *TargetInstance {
 13492  	s.ExpectedResourceUtilization = v
 13493  	return s
 13494  }
 13495  
 13496  // SetPlatformDifferences sets the PlatformDifferences field's value.
 13497  func (s *TargetInstance) SetPlatformDifferences(v []*string) *TargetInstance {
 13498  	s.PlatformDifferences = v
 13499  	return s
 13500  }
 13501  
 13502  // SetResourceDetails sets the ResourceDetails field's value.
 13503  func (s *TargetInstance) SetResourceDetails(v *ResourceDetails) *TargetInstance {
 13504  	s.ResourceDetails = v
 13505  	return s
 13506  }
 13507  
 13508  // Details on termination recommendation.
 13509  type 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".
 13525  func (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".
 13534  func (s TerminateRecommendationDetail) GoString() string {
 13535  	return s.String()
 13536  }
 13537  
 13538  // SetCurrencyCode sets the CurrencyCode field's value.
 13539  func (s *TerminateRecommendationDetail) SetCurrencyCode(v string) *TerminateRecommendationDetail {
 13540  	s.CurrencyCode = &v
 13541  	return s
 13542  }
 13543  
 13544  // SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
 13545  func (s *TerminateRecommendationDetail) SetEstimatedMonthlySavings(v string) *TerminateRecommendationDetail {
 13546  	s.EstimatedMonthlySavings = &v
 13547  	return s
 13548  }
 13549  
 13550  // Filters cost anomalies based on the total impact.
 13551  type 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".
 13573  func (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".
 13582  func (s TotalImpactFilter) GoString() string {
 13583  	return s.String()
 13584  }
 13585  
 13586  // Validate inspects the fields of the type to determine if they are valid.
 13587  func (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.
 13603  func (s *TotalImpactFilter) SetEndValue(v float64) *TotalImpactFilter {
 13604  	s.EndValue = &v
 13605  	return s
 13606  }
 13607  
 13608  // SetNumericOperator sets the NumericOperator field's value.
 13609  func (s *TotalImpactFilter) SetNumericOperator(v string) *TotalImpactFilter {
 13610  	s.NumericOperator = &v
 13611  	return s
 13612  }
 13613  
 13614  // SetStartValue sets the StartValue field's value.
 13615  func (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.
 13621  type 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".
 13633  func (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".
 13642  func (s UnknownMonitorException) GoString() string {
 13643  	return s.String()
 13644  }
 13645  
 13646  func newErrorUnknownMonitorException(v protocol.ResponseMetadata) error {
 13647  	return &UnknownMonitorException{
 13648  		RespMetadata: v,
 13649  	}
 13650  }
 13651  
 13652  // Code returns the exception type name.
 13653  func (s *UnknownMonitorException) Code() string {
 13654  	return "UnknownMonitorException"
 13655  }
 13656  
 13657  // Message returns the exception's message.
 13658  func (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.
 13666  func (s *UnknownMonitorException) OrigErr() error {
 13667  	return nil
 13668  }
 13669  
 13670  func (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.
 13675  func (s *UnknownMonitorException) StatusCode() int {
 13676  	return s.RespMetadata.StatusCode
 13677  }
 13678  
 13679  // RequestID returns the service's response RequestID for request.
 13680  func (s *UnknownMonitorException) RequestID() string {
 13681  	return s.RespMetadata.RequestID
 13682  }
 13683  
 13684  // The cost anomaly subscription does not exist for the account.
 13685  type 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".
 13697  func (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".
 13706  func (s UnknownSubscriptionException) GoString() string {
 13707  	return s.String()
 13708  }
 13709  
 13710  func newErrorUnknownSubscriptionException(v protocol.ResponseMetadata) error {
 13711  	return &UnknownSubscriptionException{
 13712  		RespMetadata: v,
 13713  	}
 13714  }
 13715  
 13716  // Code returns the exception type name.
 13717  func (s *UnknownSubscriptionException) Code() string {
 13718  	return "UnknownSubscriptionException"
 13719  }
 13720  
 13721  // Message returns the exception's message.
 13722  func (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.
 13730  func (s *UnknownSubscriptionException) OrigErr() error {
 13731  	return nil
 13732  }
 13733  
 13734  func (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.
 13739  func (s *UnknownSubscriptionException) StatusCode() int {
 13740  	return s.RespMetadata.StatusCode
 13741  }
 13742  
 13743  // RequestID returns the service's response RequestID for request.
 13744  func (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.
 13750  type 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".
 13762  func (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".
 13771  func (s UnresolvableUsageUnitException) GoString() string {
 13772  	return s.String()
 13773  }
 13774  
 13775  func newErrorUnresolvableUsageUnitException(v protocol.ResponseMetadata) error {
 13776  	return &UnresolvableUsageUnitException{
 13777  		RespMetadata: v,
 13778  	}
 13779  }
 13780  
 13781  // Code returns the exception type name.
 13782  func (s *UnresolvableUsageUnitException) Code() string {
 13783  	return "UnresolvableUsageUnitException"
 13784  }
 13785  
 13786  // Message returns the exception's message.
 13787  func (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.
 13795  func (s *UnresolvableUsageUnitException) OrigErr() error {
 13796  	return nil
 13797  }
 13798  
 13799  func (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.
 13804  func (s *UnresolvableUsageUnitException) StatusCode() int {
 13805  	return s.RespMetadata.StatusCode
 13806  }
 13807  
 13808  // RequestID returns the service's response RequestID for request.
 13809  func (s *UnresolvableUsageUnitException) RequestID() string {
 13810  	return s.RespMetadata.RequestID
 13811  }
 13812  
 13813  type 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".
 13830  func (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".
 13839  func (s UpdateAnomalyMonitorInput) GoString() string {
 13840  	return s.String()
 13841  }
 13842  
 13843  // Validate inspects the fields of the type to determine if they are valid.
 13844  func (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.
 13857  func (s *UpdateAnomalyMonitorInput) SetMonitorArn(v string) *UpdateAnomalyMonitorInput {
 13858  	s.MonitorArn = &v
 13859  	return s
 13860  }
 13861  
 13862  // SetMonitorName sets the MonitorName field's value.
 13863  func (s *UpdateAnomalyMonitorInput) SetMonitorName(v string) *UpdateAnomalyMonitorInput {
 13864  	s.MonitorName = &v
 13865  	return s
 13866  }
 13867  
 13868  type 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".
 13882  func (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".
 13891  func (s UpdateAnomalyMonitorOutput) GoString() string {
 13892  	return s.String()
 13893  }
 13894  
 13895  // SetMonitorArn sets the MonitorArn field's value.
 13896  func (s *UpdateAnomalyMonitorOutput) SetMonitorArn(v string) *UpdateAnomalyMonitorOutput {
 13897  	s.MonitorArn = &v
 13898  	return s
 13899  }
 13900  
 13901  type 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".
 13930  func (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".
 13939  func (s UpdateAnomalySubscriptionInput) GoString() string {
 13940  	return s.String()
 13941  }
 13942  
 13943  // Validate inspects the fields of the type to determine if they are valid.
 13944  func (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.
 13967  func (s *UpdateAnomalySubscriptionInput) SetFrequency(v string) *UpdateAnomalySubscriptionInput {
 13968  	s.Frequency = &v
 13969  	return s
 13970  }
 13971  
 13972  // SetMonitorArnList sets the MonitorArnList field's value.
 13973  func (s *UpdateAnomalySubscriptionInput) SetMonitorArnList(v []*string) *UpdateAnomalySubscriptionInput {
 13974  	s.MonitorArnList = v
 13975  	return s
 13976  }
 13977  
 13978  // SetSubscribers sets the Subscribers field's value.
 13979  func (s *UpdateAnomalySubscriptionInput) SetSubscribers(v []*Subscriber) *UpdateAnomalySubscriptionInput {
 13980  	s.Subscribers = v
 13981  	return s
 13982  }
 13983  
 13984  // SetSubscriptionArn sets the SubscriptionArn field's value.
 13985  func (s *UpdateAnomalySubscriptionInput) SetSubscriptionArn(v string) *UpdateAnomalySubscriptionInput {
 13986  	s.SubscriptionArn = &v
 13987  	return s
 13988  }
 13989  
 13990  // SetSubscriptionName sets the SubscriptionName field's value.
 13991  func (s *UpdateAnomalySubscriptionInput) SetSubscriptionName(v string) *UpdateAnomalySubscriptionInput {
 13992  	s.SubscriptionName = &v
 13993  	return s
 13994  }
 13995  
 13996  // SetThreshold sets the Threshold field's value.
 13997  func (s *UpdateAnomalySubscriptionInput) SetThreshold(v float64) *UpdateAnomalySubscriptionInput {
 13998  	s.Threshold = &v
 13999  	return s
 14000  }
 14001  
 14002  type 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".
 14016  func (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".
 14025  func (s UpdateAnomalySubscriptionOutput) GoString() string {
 14026  	return s.String()
 14027  }
 14028  
 14029  // SetSubscriptionArn sets the SubscriptionArn field's value.
 14030  func (s *UpdateAnomalySubscriptionOutput) SetSubscriptionArn(v string) *UpdateAnomalySubscriptionOutput {
 14031  	s.SubscriptionArn = &v
 14032  	return s
 14033  }
 14034  
 14035  type 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".
 14067  func (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".
 14076  func (s UpdateCostCategoryDefinitionInput) GoString() string {
 14077  	return s.String()
 14078  }
 14079  
 14080  // Validate inspects the fields of the type to determine if they are valid.
 14081  func (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.
 14132  func (s *UpdateCostCategoryDefinitionInput) SetCostCategoryArn(v string) *UpdateCostCategoryDefinitionInput {
 14133  	s.CostCategoryArn = &v
 14134  	return s
 14135  }
 14136  
 14137  // SetDefaultValue sets the DefaultValue field's value.
 14138  func (s *UpdateCostCategoryDefinitionInput) SetDefaultValue(v string) *UpdateCostCategoryDefinitionInput {
 14139  	s.DefaultValue = &v
 14140  	return s
 14141  }
 14142  
 14143  // SetRuleVersion sets the RuleVersion field's value.
 14144  func (s *UpdateCostCategoryDefinitionInput) SetRuleVersion(v string) *UpdateCostCategoryDefinitionInput {
 14145  	s.RuleVersion = &v
 14146  	return s
 14147  }
 14148  
 14149  // SetRules sets the Rules field's value.
 14150  func (s *UpdateCostCategoryDefinitionInput) SetRules(v []*CostCategoryRule) *UpdateCostCategoryDefinitionInput {
 14151  	s.Rules = v
 14152  	return s
 14153  }
 14154  
 14155  // SetSplitChargeRules sets the SplitChargeRules field's value.
 14156  func (s *UpdateCostCategoryDefinitionInput) SetSplitChargeRules(v []*CostCategorySplitChargeRule) *UpdateCostCategoryDefinitionInput {
 14157  	s.SplitChargeRules = v
 14158  	return s
 14159  }
 14160  
 14161  type 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".
 14176  func (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".
 14185  func (s UpdateCostCategoryDefinitionOutput) GoString() string {
 14186  	return s.String()
 14187  }
 14188  
 14189  // SetCostCategoryArn sets the CostCategoryArn field's value.
 14190  func (s *UpdateCostCategoryDefinitionOutput) SetCostCategoryArn(v string) *UpdateCostCategoryDefinitionOutput {
 14191  	s.CostCategoryArn = &v
 14192  	return s
 14193  }
 14194  
 14195  // SetEffectiveStart sets the EffectiveStart field's value.
 14196  func (s *UpdateCostCategoryDefinitionOutput) SetEffectiveStart(v string) *UpdateCostCategoryDefinitionOutput {
 14197  	s.EffectiveStart = &v
 14198  	return s
 14199  }
 14200  
 14201  // The amount of utilization, in hours.
 14202  type 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".
 14220  func (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".
 14229  func (s UtilizationByTime) GoString() string {
 14230  	return s.String()
 14231  }
 14232  
 14233  // SetGroups sets the Groups field's value.
 14234  func (s *UtilizationByTime) SetGroups(v []*ReservationUtilizationGroup) *UtilizationByTime {
 14235  	s.Groups = v
 14236  	return s
 14237  }
 14238  
 14239  // SetTimePeriod sets the TimePeriod field's value.
 14240  func (s *UtilizationByTime) SetTimePeriod(v *DateInterval) *UtilizationByTime {
 14241  	s.TimePeriod = v
 14242  	return s
 14243  }
 14244  
 14245  // SetTotal sets the Total field's value.
 14246  func (s *UtilizationByTime) SetTotal(v *ReservationAggregates) *UtilizationByTime {
 14247  	s.Total = v
 14248  	return s
 14249  }
 14250  
 14251  const (
 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
 14260  func AccountScope_Values() []string {
 14261  	return []string{
 14262  		AccountScopePayer,
 14263  		AccountScopeLinked,
 14264  	}
 14265  }
 14266  
 14267  const (
 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
 14279  func AnomalyFeedbackType_Values() []string {
 14280  	return []string{
 14281  		AnomalyFeedbackTypeYes,
 14282  		AnomalyFeedbackTypeNo,
 14283  		AnomalyFeedbackTypePlannedActivity,
 14284  	}
 14285  }
 14286  
 14287  const (
 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
 14299  func AnomalySubscriptionFrequency_Values() []string {
 14300  	return []string{
 14301  		AnomalySubscriptionFrequencyDaily,
 14302  		AnomalySubscriptionFrequencyImmediate,
 14303  		AnomalySubscriptionFrequencyWeekly,
 14304  	}
 14305  }
 14306  
 14307  const (
 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
 14319  func Context_Values() []string {
 14320  	return []string{
 14321  		ContextCostAndUsage,
 14322  		ContextReservations,
 14323  		ContextSavingsPlans,
 14324  	}
 14325  }
 14326  
 14327  const (
 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
 14336  func CostCategoryInheritedValueDimensionName_Values() []string {
 14337  	return []string{
 14338  		CostCategoryInheritedValueDimensionNameLinkedAccountName,
 14339  		CostCategoryInheritedValueDimensionNameTag,
 14340  	}
 14341  }
 14342  
 14343  const (
 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
 14352  func CostCategoryRuleType_Values() []string {
 14353  	return []string{
 14354  		CostCategoryRuleTypeRegular,
 14355  		CostCategoryRuleTypeInheritedValue,
 14356  	}
 14357  }
 14358  
 14359  // The rule schema version in this particular Cost Category.
 14360  const (
 14361  	// CostCategoryRuleVersionCostCategoryExpressionV1 is a CostCategoryRuleVersion enum value
 14362  	CostCategoryRuleVersionCostCategoryExpressionV1 = "CostCategoryExpression.v1"
 14363  )
 14364  
 14365  // CostCategoryRuleVersion_Values returns all elements of the CostCategoryRuleVersion enum
 14366  func CostCategoryRuleVersion_Values() []string {
 14367  	return []string{
 14368  		CostCategoryRuleVersionCostCategoryExpressionV1,
 14369  	}
 14370  }
 14371  
 14372  const (
 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
 14384  func CostCategorySplitChargeMethod_Values() []string {
 14385  	return []string{
 14386  		CostCategorySplitChargeMethodFixed,
 14387  		CostCategorySplitChargeMethodProportional,
 14388  		CostCategorySplitChargeMethodEven,
 14389  	}
 14390  }
 14391  
 14392  const (
 14393  	// CostCategorySplitChargeRuleParameterTypeAllocationPercentages is a CostCategorySplitChargeRuleParameterType enum value
 14394  	CostCategorySplitChargeRuleParameterTypeAllocationPercentages = "ALLOCATION_PERCENTAGES"
 14395  )
 14396  
 14397  // CostCategorySplitChargeRuleParameterType_Values returns all elements of the CostCategorySplitChargeRuleParameterType enum
 14398  func CostCategorySplitChargeRuleParameterType_Values() []string {
 14399  	return []string{
 14400  		CostCategorySplitChargeRuleParameterTypeAllocationPercentages,
 14401  	}
 14402  }
 14403  
 14404  const (
 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
 14413  func CostCategoryStatus_Values() []string {
 14414  	return []string{
 14415  		CostCategoryStatusProcessing,
 14416  		CostCategoryStatusApplied,
 14417  	}
 14418  }
 14419  
 14420  const (
 14421  	// CostCategoryStatusComponentCostExplorer is a CostCategoryStatusComponent enum value
 14422  	CostCategoryStatusComponentCostExplorer = "COST_EXPLORER"
 14423  )
 14424  
 14425  // CostCategoryStatusComponent_Values returns all elements of the CostCategoryStatusComponent enum
 14426  func CostCategoryStatusComponent_Values() []string {
 14427  	return []string{
 14428  		CostCategoryStatusComponentCostExplorer,
 14429  	}
 14430  }
 14431  
 14432  const (
 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
 14528  func 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  
 14564  const (
 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
 14615  func 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  
 14636  const (
 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
 14648  func Granularity_Values() []string {
 14649  	return []string{
 14650  		GranularityDaily,
 14651  		GranularityMonthly,
 14652  		GranularityHourly,
 14653  	}
 14654  }
 14655  
 14656  const (
 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
 14668  func GroupDefinitionType_Values() []string {
 14669  	return []string{
 14670  		GroupDefinitionTypeDimension,
 14671  		GroupDefinitionTypeTag,
 14672  		GroupDefinitionTypeCostCategory,
 14673  	}
 14674  }
 14675  
 14676  const (
 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
 14688  func LookbackPeriodInDays_Values() []string {
 14689  	return []string{
 14690  		LookbackPeriodInDaysSevenDays,
 14691  		LookbackPeriodInDaysThirtyDays,
 14692  		LookbackPeriodInDaysSixtyDays,
 14693  	}
 14694  }
 14695  
 14696  const (
 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
 14720  func MatchOption_Values() []string {
 14721  	return []string{
 14722  		MatchOptionEquals,
 14723  		MatchOptionAbsent,
 14724  		MatchOptionStartsWith,
 14725  		MatchOptionEndsWith,
 14726  		MatchOptionContains,
 14727  		MatchOptionCaseSensitive,
 14728  		MatchOptionCaseInsensitive,
 14729  	}
 14730  }
 14731  
 14732  const (
 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
 14756  func Metric_Values() []string {
 14757  	return []string{
 14758  		MetricBlendedCost,
 14759  		MetricUnblendedCost,
 14760  		MetricAmortizedCost,
 14761  		MetricNetUnblendedCost,
 14762  		MetricNetAmortizedCost,
 14763  		MetricUsageQuantity,
 14764  		MetricNormalizedUsageAmount,
 14765  	}
 14766  }
 14767  
 14768  const (
 14769  	// MonitorDimensionService is a MonitorDimension enum value
 14770  	MonitorDimensionService = "SERVICE"
 14771  )
 14772  
 14773  // MonitorDimension_Values returns all elements of the MonitorDimension enum
 14774  func MonitorDimension_Values() []string {
 14775  	return []string{
 14776  		MonitorDimensionService,
 14777  	}
 14778  }
 14779  
 14780  const (
 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
 14789  func MonitorType_Values() []string {
 14790  	return []string{
 14791  		MonitorTypeDimensional,
 14792  		MonitorTypeCustom,
 14793  	}
 14794  }
 14795  
 14796  const (
 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
 14817  func NumericOperator_Values() []string {
 14818  	return []string{
 14819  		NumericOperatorEqual,
 14820  		NumericOperatorGreaterThanOrEqual,
 14821  		NumericOperatorLessThanOrEqual,
 14822  		NumericOperatorGreaterThan,
 14823  		NumericOperatorLessThan,
 14824  		NumericOperatorBetween,
 14825  	}
 14826  }
 14827  
 14828  const (
 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
 14837  func OfferingClass_Values() []string {
 14838  	return []string{
 14839  		OfferingClassStandard,
 14840  		OfferingClassConvertible,
 14841  	}
 14842  }
 14843  
 14844  const (
 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
 14865  func PaymentOption_Values() []string {
 14866  	return []string{
 14867  		PaymentOptionNoUpfront,
 14868  		PaymentOptionPartialUpfront,
 14869  		PaymentOptionAllUpfront,
 14870  		PaymentOptionLightUtilization,
 14871  		PaymentOptionMediumUtilization,
 14872  		PaymentOptionHeavyUtilization,
 14873  	}
 14874  }
 14875  
 14876  const (
 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
 14894  func PlatformDifference_Values() []string {
 14895  	return []string{
 14896  		PlatformDifferenceHypervisor,
 14897  		PlatformDifferenceNetworkInterface,
 14898  		PlatformDifferenceStorageInterface,
 14899  		PlatformDifferenceInstanceStoreAvailability,
 14900  		PlatformDifferenceVirtualizationType,
 14901  	}
 14902  }
 14903  
 14904  const (
 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
 14913  func RecommendationTarget_Values() []string {
 14914  	return []string{
 14915  		RecommendationTargetSameInstanceFamily,
 14916  		RecommendationTargetCrossInstanceFamily,
 14917  	}
 14918  }
 14919  
 14920  const (
 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
 14929  func RightsizingType_Values() []string {
 14930  	return []string{
 14931  		RightsizingTypeTerminate,
 14932  		RightsizingTypeModify,
 14933  	}
 14934  }
 14935  
 14936  const (
 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
 14951  func SavingsPlansDataType_Values() []string {
 14952  	return []string{
 14953  		SavingsPlansDataTypeAttributes,
 14954  		SavingsPlansDataTypeUtilization,
 14955  		SavingsPlansDataTypeAmortizedCommitment,
 14956  		SavingsPlansDataTypeSavings,
 14957  	}
 14958  }
 14959  
 14960  const (
 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
 14969  func SortOrder_Values() []string {
 14970  	return []string{
 14971  		SortOrderAscending,
 14972  		SortOrderDescending,
 14973  	}
 14974  }
 14975  
 14976  const (
 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
 14985  func SubscriberStatus_Values() []string {
 14986  	return []string{
 14987  		SubscriberStatusConfirmed,
 14988  		SubscriberStatusDeclined,
 14989  	}
 14990  }
 14991  
 14992  const (
 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
 15001  func SubscriberType_Values() []string {
 15002  	return []string{
 15003  		SubscriberTypeEmail,
 15004  		SubscriberTypeSns,
 15005  	}
 15006  }
 15007  
 15008  const (
 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
 15020  func SupportedSavingsPlansType_Values() []string {
 15021  	return []string{
 15022  		SupportedSavingsPlansTypeComputeSp,
 15023  		SupportedSavingsPlansTypeEc2InstanceSp,
 15024  		SupportedSavingsPlansTypeSagemakerSp,
 15025  	}
 15026  }
 15027  
 15028  const (
 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
 15037  func TermInYears_Values() []string {
 15038  	return []string{
 15039  		TermInYearsOneYear,
 15040  		TermInYearsThreeYears,
 15041  	}
 15042  }