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

     1  // Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
     2  
     3  package marketplacecommerceanalytics
     4  
     5  import (
     6  	"fmt"
     7  	"time"
     8  
     9  	"github.com/aavshr/aws-sdk-go/aws"
    10  	"github.com/aavshr/aws-sdk-go/aws/awsutil"
    11  	"github.com/aavshr/aws-sdk-go/aws/request"
    12  	"github.com/aavshr/aws-sdk-go/private/protocol"
    13  )
    14  
    15  const opGenerateDataSet = "GenerateDataSet"
    16  
    17  // GenerateDataSetRequest generates a "aws/request.Request" representing the
    18  // client's request for the GenerateDataSet 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 GenerateDataSet for more information on using the GenerateDataSet
    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 GenerateDataSetRequest method.
    33  //    req, resp := client.GenerateDataSetRequest(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/marketplacecommerceanalytics-2015-07-01/GenerateDataSet
    41  func (c *MarketplaceCommerceAnalytics) GenerateDataSetRequest(input *GenerateDataSetInput) (req *request.Request, output *GenerateDataSetOutput) {
    42  	op := &request.Operation{
    43  		Name:       opGenerateDataSet,
    44  		HTTPMethod: "POST",
    45  		HTTPPath:   "/",
    46  	}
    47  
    48  	if input == nil {
    49  		input = &GenerateDataSetInput{}
    50  	}
    51  
    52  	output = &GenerateDataSetOutput{}
    53  	req = c.newRequest(op, input, output)
    54  	return
    55  }
    56  
    57  // GenerateDataSet API operation for AWS Marketplace Commerce Analytics.
    58  //
    59  // Given a data set type and data set publication date, asynchronously publishes
    60  // the requested data set to the specified S3 bucket and notifies the specified
    61  // SNS topic once the data is available. Returns a unique request identifier
    62  // that can be used to correlate requests with notifications from the SNS topic.
    63  // Data sets will be published in comma-separated values (CSV) format with the
    64  // file name {data_set_type}_YYYY-MM-DD.csv. If a file with the same name already
    65  // exists (e.g. if the same data set is requested twice), the original file
    66  // will be overwritten by the new file. Requires a Role with an attached permissions
    67  // policy providing Allow permissions for the following actions: s3:PutObject,
    68  // s3:GetBucketLocation, sns:GetTopicAttributes, sns:Publish, iam:GetRolePolicy.
    69  //
    70  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
    71  // with awserr.Error's Code and Message methods to get detailed information about
    72  // the error.
    73  //
    74  // See the AWS API reference guide for AWS Marketplace Commerce Analytics's
    75  // API operation GenerateDataSet for usage and error information.
    76  //
    77  // Returned Error Types:
    78  //   * Exception
    79  //   This exception is thrown when an internal service error occurs.
    80  //
    81  // See also, https://docs.aws.amazon.com/goto/WebAPI/marketplacecommerceanalytics-2015-07-01/GenerateDataSet
    82  func (c *MarketplaceCommerceAnalytics) GenerateDataSet(input *GenerateDataSetInput) (*GenerateDataSetOutput, error) {
    83  	req, out := c.GenerateDataSetRequest(input)
    84  	return out, req.Send()
    85  }
    86  
    87  // GenerateDataSetWithContext is the same as GenerateDataSet with the addition of
    88  // the ability to pass a context and additional request options.
    89  //
    90  // See GenerateDataSet for details on how to use this API operation.
    91  //
    92  // The context must be non-nil and will be used for request cancellation. If
    93  // the context is nil a panic will occur. In the future the SDK may create
    94  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
    95  // for more information on using Contexts.
    96  func (c *MarketplaceCommerceAnalytics) GenerateDataSetWithContext(ctx aws.Context, input *GenerateDataSetInput, opts ...request.Option) (*GenerateDataSetOutput, error) {
    97  	req, out := c.GenerateDataSetRequest(input)
    98  	req.SetContext(ctx)
    99  	req.ApplyOptions(opts...)
   100  	return out, req.Send()
   101  }
   102  
   103  const opStartSupportDataExport = "StartSupportDataExport"
   104  
   105  // StartSupportDataExportRequest generates a "aws/request.Request" representing the
   106  // client's request for the StartSupportDataExport operation. The "output" return
   107  // value will be populated with the request's response once the request completes
   108  // successfully.
   109  //
   110  // Use "Send" method on the returned Request to send the API call to the service.
   111  // the "output" return value is not valid until after Send returns without error.
   112  //
   113  // See StartSupportDataExport for more information on using the StartSupportDataExport
   114  // API call, and error handling.
   115  //
   116  // This method is useful when you want to inject custom logic or configuration
   117  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   118  //
   119  //
   120  //    // Example sending a request using the StartSupportDataExportRequest method.
   121  //    req, resp := client.StartSupportDataExportRequest(params)
   122  //
   123  //    err := req.Send()
   124  //    if err == nil { // resp is now filled
   125  //        fmt.Println(resp)
   126  //    }
   127  //
   128  // See also, https://docs.aws.amazon.com/goto/WebAPI/marketplacecommerceanalytics-2015-07-01/StartSupportDataExport
   129  func (c *MarketplaceCommerceAnalytics) StartSupportDataExportRequest(input *StartSupportDataExportInput) (req *request.Request, output *StartSupportDataExportOutput) {
   130  	op := &request.Operation{
   131  		Name:       opStartSupportDataExport,
   132  		HTTPMethod: "POST",
   133  		HTTPPath:   "/",
   134  	}
   135  
   136  	if input == nil {
   137  		input = &StartSupportDataExportInput{}
   138  	}
   139  
   140  	output = &StartSupportDataExportOutput{}
   141  	req = c.newRequest(op, input, output)
   142  	return
   143  }
   144  
   145  // StartSupportDataExport API operation for AWS Marketplace Commerce Analytics.
   146  //
   147  // Given a data set type and a from date, asynchronously publishes the requested
   148  // customer support data to the specified S3 bucket and notifies the specified
   149  // SNS topic once the data is available. Returns a unique request identifier
   150  // that can be used to correlate requests with notifications from the SNS topic.
   151  // Data sets will be published in comma-separated values (CSV) format with the
   152  // file name {data_set_type}_YYYY-MM-DD'T'HH-mm-ss'Z'.csv. If a file with the
   153  // same name already exists (e.g. if the same data set is requested twice),
   154  // the original file will be overwritten by the new file. Requires a Role with
   155  // an attached permissions policy providing Allow permissions for the following
   156  // actions: s3:PutObject, s3:GetBucketLocation, sns:GetTopicAttributes, sns:Publish,
   157  // iam:GetRolePolicy.
   158  //
   159  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   160  // with awserr.Error's Code and Message methods to get detailed information about
   161  // the error.
   162  //
   163  // See the AWS API reference guide for AWS Marketplace Commerce Analytics's
   164  // API operation StartSupportDataExport for usage and error information.
   165  //
   166  // Returned Error Types:
   167  //   * Exception
   168  //   This exception is thrown when an internal service error occurs.
   169  //
   170  // See also, https://docs.aws.amazon.com/goto/WebAPI/marketplacecommerceanalytics-2015-07-01/StartSupportDataExport
   171  func (c *MarketplaceCommerceAnalytics) StartSupportDataExport(input *StartSupportDataExportInput) (*StartSupportDataExportOutput, error) {
   172  	req, out := c.StartSupportDataExportRequest(input)
   173  	return out, req.Send()
   174  }
   175  
   176  // StartSupportDataExportWithContext is the same as StartSupportDataExport with the addition of
   177  // the ability to pass a context and additional request options.
   178  //
   179  // See StartSupportDataExport for details on how to use this API operation.
   180  //
   181  // The context must be non-nil and will be used for request cancellation. If
   182  // the context is nil a panic will occur. In the future the SDK may create
   183  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   184  // for more information on using Contexts.
   185  func (c *MarketplaceCommerceAnalytics) StartSupportDataExportWithContext(ctx aws.Context, input *StartSupportDataExportInput, opts ...request.Option) (*StartSupportDataExportOutput, error) {
   186  	req, out := c.StartSupportDataExportRequest(input)
   187  	req.SetContext(ctx)
   188  	req.ApplyOptions(opts...)
   189  	return out, req.Send()
   190  }
   191  
   192  // This exception is thrown when an internal service error occurs.
   193  type Exception struct {
   194  	_            struct{}                  `type:"structure"`
   195  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
   196  
   197  	// This message describes details of the error.
   198  	Message_ *string `locationName:"message" type:"string"`
   199  }
   200  
   201  // String returns the string representation.
   202  //
   203  // API parameter values that are decorated as "sensitive" in the API will not
   204  // be included in the string output. The member name will be present, but the
   205  // value will be replaced with "sensitive".
   206  func (s Exception) String() string {
   207  	return awsutil.Prettify(s)
   208  }
   209  
   210  // GoString returns the string representation.
   211  //
   212  // API parameter values that are decorated as "sensitive" in the API will not
   213  // be included in the string output. The member name will be present, but the
   214  // value will be replaced with "sensitive".
   215  func (s Exception) GoString() string {
   216  	return s.String()
   217  }
   218  
   219  func newErrorException(v protocol.ResponseMetadata) error {
   220  	return &Exception{
   221  		RespMetadata: v,
   222  	}
   223  }
   224  
   225  // Code returns the exception type name.
   226  func (s *Exception) Code() string {
   227  	return "MarketplaceCommerceAnalyticsException"
   228  }
   229  
   230  // Message returns the exception's message.
   231  func (s *Exception) Message() string {
   232  	if s.Message_ != nil {
   233  		return *s.Message_
   234  	}
   235  	return ""
   236  }
   237  
   238  // OrigErr always returns nil, satisfies awserr.Error interface.
   239  func (s *Exception) OrigErr() error {
   240  	return nil
   241  }
   242  
   243  func (s *Exception) Error() string {
   244  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
   245  }
   246  
   247  // Status code returns the HTTP status code for the request's response error.
   248  func (s *Exception) StatusCode() int {
   249  	return s.RespMetadata.StatusCode
   250  }
   251  
   252  // RequestID returns the service's response RequestID for request.
   253  func (s *Exception) RequestID() string {
   254  	return s.RespMetadata.RequestID
   255  }
   256  
   257  // Container for the parameters to the GenerateDataSet operation.
   258  type GenerateDataSetInput struct {
   259  	_ struct{} `type:"structure"`
   260  
   261  	// (Optional) Key-value pairs which will be returned, unmodified, in the Amazon
   262  	// SNS notification message and the data set metadata file. These key-value
   263  	// pairs can be used to correlated responses with tracking information from
   264  	// other systems.
   265  	CustomerDefinedValues map[string]*string `locationName:"customerDefinedValues" min:"1" type:"map"`
   266  
   267  	// The date a data set was published. For daily data sets, provide a date with
   268  	// day-level granularity for the desired day. For monthly data sets except those
   269  	// with prefix disbursed_amount, provide a date with month-level granularity
   270  	// for the desired month (the day value will be ignored). For data sets with
   271  	// prefix disbursed_amount, provide a date with day-level granularity for the
   272  	// desired day. For these data sets we will look backwards in time over the
   273  	// range of 31 days until the first data set is found (the latest one).
   274  	//
   275  	// DataSetPublicationDate is a required field
   276  	DataSetPublicationDate *time.Time `locationName:"dataSetPublicationDate" type:"timestamp" required:"true"`
   277  
   278  	// The desired data set type.
   279  	//
   280  	//    * customer_subscriber_hourly_monthly_subscriptions From 2017-09-15 to
   281  	//    present: Available daily by 24:00 UTC.
   282  	//
   283  	//    * customer_subscriber_annual_subscriptions From 2017-09-15 to present:
   284  	//    Available daily by 24:00 UTC.
   285  	//
   286  	//    * daily_business_usage_by_instance_type From 2017-09-15 to present: Available
   287  	//    daily by 24:00 UTC.
   288  	//
   289  	//    * daily_business_fees From 2017-09-15 to present: Available daily by 24:00
   290  	//    UTC.
   291  	//
   292  	//    * daily_business_free_trial_conversions From 2017-09-15 to present: Available
   293  	//    daily by 24:00 UTC.
   294  	//
   295  	//    * daily_business_new_instances From 2017-09-15 to present: Available daily
   296  	//    by 24:00 UTC.
   297  	//
   298  	//    * daily_business_new_product_subscribers From 2017-09-15 to present: Available
   299  	//    daily by 24:00 UTC.
   300  	//
   301  	//    * daily_business_canceled_product_subscribers From 2017-09-15 to present:
   302  	//    Available daily by 24:00 UTC.
   303  	//
   304  	//    * monthly_revenue_billing_and_revenue_data From 2017-09-15 to present:
   305  	//    Available monthly on the 15th day of the month by 24:00 UTC. Data includes
   306  	//    metered transactions (e.g. hourly) from one month prior.
   307  	//
   308  	//    * monthly_revenue_annual_subscriptions From 2017-09-15 to present: Available
   309  	//    monthly on the 15th day of the month by 24:00 UTC. Data includes up-front
   310  	//    software charges (e.g. annual) from one month prior.
   311  	//
   312  	//    * monthly_revenue_field_demonstration_usage From 2018-03-15 to present:
   313  	//    Available monthly on the 15th day of the month by 24:00 UTC.
   314  	//
   315  	//    * monthly_revenue_flexible_payment_schedule From 2018-11-15 to present:
   316  	//    Available monthly on the 15th day of the month by 24:00 UTC.
   317  	//
   318  	//    * disbursed_amount_by_product From 2017-09-15 to present: Available every
   319  	//    30 days by 24:00 UTC.
   320  	//
   321  	//    * disbursed_amount_by_instance_hours From 2017-09-15 to present: Available
   322  	//    every 30 days by 24:00 UTC.
   323  	//
   324  	//    * disbursed_amount_by_customer_geo From 2017-09-15 to present: Available
   325  	//    every 30 days by 24:00 UTC.
   326  	//
   327  	//    * disbursed_amount_by_age_of_uncollected_funds From 2017-09-15 to present:
   328  	//    Available every 30 days by 24:00 UTC.
   329  	//
   330  	//    * disbursed_amount_by_age_of_disbursed_funds From 2017-09-15 to present:
   331  	//    Available every 30 days by 24:00 UTC.
   332  	//
   333  	//    * disbursed_amount_by_age_of_past_due_funds From 2018-04-07 to present:
   334  	//    Available every 30 days by 24:00 UTC.
   335  	//
   336  	//    * disbursed_amount_by_uncollected_funds_breakdown From 2019-10-04 to present:
   337  	//    Available every 30 days by 24:00 UTC.
   338  	//
   339  	//    * sales_compensation_billed_revenue From 2017-09-15 to present: Available
   340  	//    monthly on the 15th day of the month by 24:00 UTC. Data includes metered
   341  	//    transactions (e.g. hourly) from one month prior, and up-front software
   342  	//    charges (e.g. annual) from one month prior.
   343  	//
   344  	//    * us_sales_and_use_tax_records From 2017-09-15 to present: Available monthly
   345  	//    on the 15th day of the month by 24:00 UTC.
   346  	//
   347  	//    * disbursed_amount_by_product_with_uncollected_funds This data set is
   348  	//    deprecated. Download related reports from AMMP instead!
   349  	//
   350  	//    * customer_profile_by_industry This data set is deprecated. Download related
   351  	//    reports from AMMP instead!
   352  	//
   353  	//    * customer_profile_by_revenue This data set is deprecated. Download related
   354  	//    reports from AMMP instead!
   355  	//
   356  	//    * customer_profile_by_geography This data set is deprecated. Download
   357  	//    related reports from AMMP instead!
   358  	//
   359  	// DataSetType is a required field
   360  	DataSetType *string `locationName:"dataSetType" min:"1" type:"string" required:"true" enum:"DataSetType"`
   361  
   362  	// The name (friendly name, not ARN) of the destination S3 bucket.
   363  	//
   364  	// DestinationS3BucketName is a required field
   365  	DestinationS3BucketName *string `locationName:"destinationS3BucketName" min:"1" type:"string" required:"true"`
   366  
   367  	// (Optional) The desired S3 prefix for the published data set, similar to a
   368  	// directory path in standard file systems. For example, if given the bucket
   369  	// name "mybucket" and the prefix "myprefix/mydatasets", the output file "outputfile"
   370  	// would be published to "s3://mybucket/myprefix/mydatasets/outputfile". If
   371  	// the prefix directory structure does not exist, it will be created. If no
   372  	// prefix is provided, the data set will be published to the S3 bucket root.
   373  	DestinationS3Prefix *string `locationName:"destinationS3Prefix" type:"string"`
   374  
   375  	// The Amazon Resource Name (ARN) of the Role with an attached permissions policy
   376  	// to interact with the provided AWS services.
   377  	//
   378  	// RoleNameArn is a required field
   379  	RoleNameArn *string `locationName:"roleNameArn" min:"1" type:"string" required:"true"`
   380  
   381  	// Amazon Resource Name (ARN) for the SNS Topic that will be notified when the
   382  	// data set has been published or if an error has occurred.
   383  	//
   384  	// SnsTopicArn is a required field
   385  	SnsTopicArn *string `locationName:"snsTopicArn" min:"1" type:"string" required:"true"`
   386  }
   387  
   388  // String returns the string representation.
   389  //
   390  // API parameter values that are decorated as "sensitive" in the API will not
   391  // be included in the string output. The member name will be present, but the
   392  // value will be replaced with "sensitive".
   393  func (s GenerateDataSetInput) String() string {
   394  	return awsutil.Prettify(s)
   395  }
   396  
   397  // GoString returns the string representation.
   398  //
   399  // API parameter values that are decorated as "sensitive" in the API will not
   400  // be included in the string output. The member name will be present, but the
   401  // value will be replaced with "sensitive".
   402  func (s GenerateDataSetInput) GoString() string {
   403  	return s.String()
   404  }
   405  
   406  // Validate inspects the fields of the type to determine if they are valid.
   407  func (s *GenerateDataSetInput) Validate() error {
   408  	invalidParams := request.ErrInvalidParams{Context: "GenerateDataSetInput"}
   409  	if s.CustomerDefinedValues != nil && len(s.CustomerDefinedValues) < 1 {
   410  		invalidParams.Add(request.NewErrParamMinLen("CustomerDefinedValues", 1))
   411  	}
   412  	if s.DataSetPublicationDate == nil {
   413  		invalidParams.Add(request.NewErrParamRequired("DataSetPublicationDate"))
   414  	}
   415  	if s.DataSetType == nil {
   416  		invalidParams.Add(request.NewErrParamRequired("DataSetType"))
   417  	}
   418  	if s.DataSetType != nil && len(*s.DataSetType) < 1 {
   419  		invalidParams.Add(request.NewErrParamMinLen("DataSetType", 1))
   420  	}
   421  	if s.DestinationS3BucketName == nil {
   422  		invalidParams.Add(request.NewErrParamRequired("DestinationS3BucketName"))
   423  	}
   424  	if s.DestinationS3BucketName != nil && len(*s.DestinationS3BucketName) < 1 {
   425  		invalidParams.Add(request.NewErrParamMinLen("DestinationS3BucketName", 1))
   426  	}
   427  	if s.RoleNameArn == nil {
   428  		invalidParams.Add(request.NewErrParamRequired("RoleNameArn"))
   429  	}
   430  	if s.RoleNameArn != nil && len(*s.RoleNameArn) < 1 {
   431  		invalidParams.Add(request.NewErrParamMinLen("RoleNameArn", 1))
   432  	}
   433  	if s.SnsTopicArn == nil {
   434  		invalidParams.Add(request.NewErrParamRequired("SnsTopicArn"))
   435  	}
   436  	if s.SnsTopicArn != nil && len(*s.SnsTopicArn) < 1 {
   437  		invalidParams.Add(request.NewErrParamMinLen("SnsTopicArn", 1))
   438  	}
   439  
   440  	if invalidParams.Len() > 0 {
   441  		return invalidParams
   442  	}
   443  	return nil
   444  }
   445  
   446  // SetCustomerDefinedValues sets the CustomerDefinedValues field's value.
   447  func (s *GenerateDataSetInput) SetCustomerDefinedValues(v map[string]*string) *GenerateDataSetInput {
   448  	s.CustomerDefinedValues = v
   449  	return s
   450  }
   451  
   452  // SetDataSetPublicationDate sets the DataSetPublicationDate field's value.
   453  func (s *GenerateDataSetInput) SetDataSetPublicationDate(v time.Time) *GenerateDataSetInput {
   454  	s.DataSetPublicationDate = &v
   455  	return s
   456  }
   457  
   458  // SetDataSetType sets the DataSetType field's value.
   459  func (s *GenerateDataSetInput) SetDataSetType(v string) *GenerateDataSetInput {
   460  	s.DataSetType = &v
   461  	return s
   462  }
   463  
   464  // SetDestinationS3BucketName sets the DestinationS3BucketName field's value.
   465  func (s *GenerateDataSetInput) SetDestinationS3BucketName(v string) *GenerateDataSetInput {
   466  	s.DestinationS3BucketName = &v
   467  	return s
   468  }
   469  
   470  // SetDestinationS3Prefix sets the DestinationS3Prefix field's value.
   471  func (s *GenerateDataSetInput) SetDestinationS3Prefix(v string) *GenerateDataSetInput {
   472  	s.DestinationS3Prefix = &v
   473  	return s
   474  }
   475  
   476  // SetRoleNameArn sets the RoleNameArn field's value.
   477  func (s *GenerateDataSetInput) SetRoleNameArn(v string) *GenerateDataSetInput {
   478  	s.RoleNameArn = &v
   479  	return s
   480  }
   481  
   482  // SetSnsTopicArn sets the SnsTopicArn field's value.
   483  func (s *GenerateDataSetInput) SetSnsTopicArn(v string) *GenerateDataSetInput {
   484  	s.SnsTopicArn = &v
   485  	return s
   486  }
   487  
   488  // Container for the result of the GenerateDataSet operation.
   489  type GenerateDataSetOutput struct {
   490  	_ struct{} `type:"structure"`
   491  
   492  	// A unique identifier representing a specific request to the GenerateDataSet
   493  	// operation. This identifier can be used to correlate a request with notifications
   494  	// from the SNS topic.
   495  	DataSetRequestId *string `locationName:"dataSetRequestId" type:"string"`
   496  }
   497  
   498  // String returns the string representation.
   499  //
   500  // API parameter values that are decorated as "sensitive" in the API will not
   501  // be included in the string output. The member name will be present, but the
   502  // value will be replaced with "sensitive".
   503  func (s GenerateDataSetOutput) String() string {
   504  	return awsutil.Prettify(s)
   505  }
   506  
   507  // GoString returns the string representation.
   508  //
   509  // API parameter values that are decorated as "sensitive" in the API will not
   510  // be included in the string output. The member name will be present, but the
   511  // value will be replaced with "sensitive".
   512  func (s GenerateDataSetOutput) GoString() string {
   513  	return s.String()
   514  }
   515  
   516  // SetDataSetRequestId sets the DataSetRequestId field's value.
   517  func (s *GenerateDataSetOutput) SetDataSetRequestId(v string) *GenerateDataSetOutput {
   518  	s.DataSetRequestId = &v
   519  	return s
   520  }
   521  
   522  // Container for the parameters to the StartSupportDataExport operation.
   523  type StartSupportDataExportInput struct {
   524  	_ struct{} `type:"structure"`
   525  
   526  	// (Optional) Key-value pairs which will be returned, unmodified, in the Amazon
   527  	// SNS notification message and the data set metadata file.
   528  	CustomerDefinedValues map[string]*string `locationName:"customerDefinedValues" min:"1" type:"map"`
   529  
   530  	// Specifies the data set type to be written to the output csv file. The data
   531  	// set types customer_support_contacts_data and test_customer_support_contacts_data
   532  	// both result in a csv file containing the following fields: Product Id, Product
   533  	// Code, Customer Guid, Subscription Guid, Subscription Start Date, Organization,
   534  	// AWS Account Id, Given Name, Surname, Telephone Number, Email, Title, Country
   535  	// Code, ZIP Code, Operation Type, and Operation Time.
   536  	//
   537  	//    * customer_support_contacts_data Customer support contact data. The data
   538  	//    set will contain all changes (Creates, Updates, and Deletes) to customer
   539  	//    support contact data from the date specified in the from_date parameter.
   540  	//
   541  	//    * test_customer_support_contacts_data An example data set containing static
   542  	//    test data in the same format as customer_support_contacts_data
   543  	//
   544  	// DataSetType is a required field
   545  	DataSetType *string `locationName:"dataSetType" min:"1" type:"string" required:"true" enum:"SupportDataSetType"`
   546  
   547  	// The name (friendly name, not ARN) of the destination S3 bucket.
   548  	//
   549  	// DestinationS3BucketName is a required field
   550  	DestinationS3BucketName *string `locationName:"destinationS3BucketName" min:"1" type:"string" required:"true"`
   551  
   552  	// (Optional) The desired S3 prefix for the published data set, similar to a
   553  	// directory path in standard file systems. For example, if given the bucket
   554  	// name "mybucket" and the prefix "myprefix/mydatasets", the output file "outputfile"
   555  	// would be published to "s3://mybucket/myprefix/mydatasets/outputfile". If
   556  	// the prefix directory structure does not exist, it will be created. If no
   557  	// prefix is provided, the data set will be published to the S3 bucket root.
   558  	DestinationS3Prefix *string `locationName:"destinationS3Prefix" type:"string"`
   559  
   560  	// The start date from which to retrieve the data set in UTC. This parameter
   561  	// only affects the customer_support_contacts_data data set type.
   562  	//
   563  	// FromDate is a required field
   564  	FromDate *time.Time `locationName:"fromDate" type:"timestamp" required:"true"`
   565  
   566  	// The Amazon Resource Name (ARN) of the Role with an attached permissions policy
   567  	// to interact with the provided AWS services.
   568  	//
   569  	// RoleNameArn is a required field
   570  	RoleNameArn *string `locationName:"roleNameArn" min:"1" type:"string" required:"true"`
   571  
   572  	// Amazon Resource Name (ARN) for the SNS Topic that will be notified when the
   573  	// data set has been published or if an error has occurred.
   574  	//
   575  	// SnsTopicArn is a required field
   576  	SnsTopicArn *string `locationName:"snsTopicArn" min:"1" type:"string" required:"true"`
   577  }
   578  
   579  // String returns the string representation.
   580  //
   581  // API parameter values that are decorated as "sensitive" in the API will not
   582  // be included in the string output. The member name will be present, but the
   583  // value will be replaced with "sensitive".
   584  func (s StartSupportDataExportInput) String() string {
   585  	return awsutil.Prettify(s)
   586  }
   587  
   588  // GoString returns the string representation.
   589  //
   590  // API parameter values that are decorated as "sensitive" in the API will not
   591  // be included in the string output. The member name will be present, but the
   592  // value will be replaced with "sensitive".
   593  func (s StartSupportDataExportInput) GoString() string {
   594  	return s.String()
   595  }
   596  
   597  // Validate inspects the fields of the type to determine if they are valid.
   598  func (s *StartSupportDataExportInput) Validate() error {
   599  	invalidParams := request.ErrInvalidParams{Context: "StartSupportDataExportInput"}
   600  	if s.CustomerDefinedValues != nil && len(s.CustomerDefinedValues) < 1 {
   601  		invalidParams.Add(request.NewErrParamMinLen("CustomerDefinedValues", 1))
   602  	}
   603  	if s.DataSetType == nil {
   604  		invalidParams.Add(request.NewErrParamRequired("DataSetType"))
   605  	}
   606  	if s.DataSetType != nil && len(*s.DataSetType) < 1 {
   607  		invalidParams.Add(request.NewErrParamMinLen("DataSetType", 1))
   608  	}
   609  	if s.DestinationS3BucketName == nil {
   610  		invalidParams.Add(request.NewErrParamRequired("DestinationS3BucketName"))
   611  	}
   612  	if s.DestinationS3BucketName != nil && len(*s.DestinationS3BucketName) < 1 {
   613  		invalidParams.Add(request.NewErrParamMinLen("DestinationS3BucketName", 1))
   614  	}
   615  	if s.FromDate == nil {
   616  		invalidParams.Add(request.NewErrParamRequired("FromDate"))
   617  	}
   618  	if s.RoleNameArn == nil {
   619  		invalidParams.Add(request.NewErrParamRequired("RoleNameArn"))
   620  	}
   621  	if s.RoleNameArn != nil && len(*s.RoleNameArn) < 1 {
   622  		invalidParams.Add(request.NewErrParamMinLen("RoleNameArn", 1))
   623  	}
   624  	if s.SnsTopicArn == nil {
   625  		invalidParams.Add(request.NewErrParamRequired("SnsTopicArn"))
   626  	}
   627  	if s.SnsTopicArn != nil && len(*s.SnsTopicArn) < 1 {
   628  		invalidParams.Add(request.NewErrParamMinLen("SnsTopicArn", 1))
   629  	}
   630  
   631  	if invalidParams.Len() > 0 {
   632  		return invalidParams
   633  	}
   634  	return nil
   635  }
   636  
   637  // SetCustomerDefinedValues sets the CustomerDefinedValues field's value.
   638  func (s *StartSupportDataExportInput) SetCustomerDefinedValues(v map[string]*string) *StartSupportDataExportInput {
   639  	s.CustomerDefinedValues = v
   640  	return s
   641  }
   642  
   643  // SetDataSetType sets the DataSetType field's value.
   644  func (s *StartSupportDataExportInput) SetDataSetType(v string) *StartSupportDataExportInput {
   645  	s.DataSetType = &v
   646  	return s
   647  }
   648  
   649  // SetDestinationS3BucketName sets the DestinationS3BucketName field's value.
   650  func (s *StartSupportDataExportInput) SetDestinationS3BucketName(v string) *StartSupportDataExportInput {
   651  	s.DestinationS3BucketName = &v
   652  	return s
   653  }
   654  
   655  // SetDestinationS3Prefix sets the DestinationS3Prefix field's value.
   656  func (s *StartSupportDataExportInput) SetDestinationS3Prefix(v string) *StartSupportDataExportInput {
   657  	s.DestinationS3Prefix = &v
   658  	return s
   659  }
   660  
   661  // SetFromDate sets the FromDate field's value.
   662  func (s *StartSupportDataExportInput) SetFromDate(v time.Time) *StartSupportDataExportInput {
   663  	s.FromDate = &v
   664  	return s
   665  }
   666  
   667  // SetRoleNameArn sets the RoleNameArn field's value.
   668  func (s *StartSupportDataExportInput) SetRoleNameArn(v string) *StartSupportDataExportInput {
   669  	s.RoleNameArn = &v
   670  	return s
   671  }
   672  
   673  // SetSnsTopicArn sets the SnsTopicArn field's value.
   674  func (s *StartSupportDataExportInput) SetSnsTopicArn(v string) *StartSupportDataExportInput {
   675  	s.SnsTopicArn = &v
   676  	return s
   677  }
   678  
   679  // Container for the result of the StartSupportDataExport operation.
   680  type StartSupportDataExportOutput struct {
   681  	_ struct{} `type:"structure"`
   682  
   683  	// A unique identifier representing a specific request to the StartSupportDataExport
   684  	// operation. This identifier can be used to correlate a request with notifications
   685  	// from the SNS topic.
   686  	DataSetRequestId *string `locationName:"dataSetRequestId" type:"string"`
   687  }
   688  
   689  // String returns the string representation.
   690  //
   691  // API parameter values that are decorated as "sensitive" in the API will not
   692  // be included in the string output. The member name will be present, but the
   693  // value will be replaced with "sensitive".
   694  func (s StartSupportDataExportOutput) String() string {
   695  	return awsutil.Prettify(s)
   696  }
   697  
   698  // GoString returns the string representation.
   699  //
   700  // API parameter values that are decorated as "sensitive" in the API will not
   701  // be included in the string output. The member name will be present, but the
   702  // value will be replaced with "sensitive".
   703  func (s StartSupportDataExportOutput) GoString() string {
   704  	return s.String()
   705  }
   706  
   707  // SetDataSetRequestId sets the DataSetRequestId field's value.
   708  func (s *StartSupportDataExportOutput) SetDataSetRequestId(v string) *StartSupportDataExportOutput {
   709  	s.DataSetRequestId = &v
   710  	return s
   711  }
   712  
   713  const (
   714  	// DataSetTypeCustomerSubscriberHourlyMonthlySubscriptions is a DataSetType enum value
   715  	DataSetTypeCustomerSubscriberHourlyMonthlySubscriptions = "customer_subscriber_hourly_monthly_subscriptions"
   716  
   717  	// DataSetTypeCustomerSubscriberAnnualSubscriptions is a DataSetType enum value
   718  	DataSetTypeCustomerSubscriberAnnualSubscriptions = "customer_subscriber_annual_subscriptions"
   719  
   720  	// DataSetTypeDailyBusinessUsageByInstanceType is a DataSetType enum value
   721  	DataSetTypeDailyBusinessUsageByInstanceType = "daily_business_usage_by_instance_type"
   722  
   723  	// DataSetTypeDailyBusinessFees is a DataSetType enum value
   724  	DataSetTypeDailyBusinessFees = "daily_business_fees"
   725  
   726  	// DataSetTypeDailyBusinessFreeTrialConversions is a DataSetType enum value
   727  	DataSetTypeDailyBusinessFreeTrialConversions = "daily_business_free_trial_conversions"
   728  
   729  	// DataSetTypeDailyBusinessNewInstances is a DataSetType enum value
   730  	DataSetTypeDailyBusinessNewInstances = "daily_business_new_instances"
   731  
   732  	// DataSetTypeDailyBusinessNewProductSubscribers is a DataSetType enum value
   733  	DataSetTypeDailyBusinessNewProductSubscribers = "daily_business_new_product_subscribers"
   734  
   735  	// DataSetTypeDailyBusinessCanceledProductSubscribers is a DataSetType enum value
   736  	DataSetTypeDailyBusinessCanceledProductSubscribers = "daily_business_canceled_product_subscribers"
   737  
   738  	// DataSetTypeMonthlyRevenueBillingAndRevenueData is a DataSetType enum value
   739  	DataSetTypeMonthlyRevenueBillingAndRevenueData = "monthly_revenue_billing_and_revenue_data"
   740  
   741  	// DataSetTypeMonthlyRevenueAnnualSubscriptions is a DataSetType enum value
   742  	DataSetTypeMonthlyRevenueAnnualSubscriptions = "monthly_revenue_annual_subscriptions"
   743  
   744  	// DataSetTypeMonthlyRevenueFieldDemonstrationUsage is a DataSetType enum value
   745  	DataSetTypeMonthlyRevenueFieldDemonstrationUsage = "monthly_revenue_field_demonstration_usage"
   746  
   747  	// DataSetTypeMonthlyRevenueFlexiblePaymentSchedule is a DataSetType enum value
   748  	DataSetTypeMonthlyRevenueFlexiblePaymentSchedule = "monthly_revenue_flexible_payment_schedule"
   749  
   750  	// DataSetTypeDisbursedAmountByProduct is a DataSetType enum value
   751  	DataSetTypeDisbursedAmountByProduct = "disbursed_amount_by_product"
   752  
   753  	// DataSetTypeDisbursedAmountByProductWithUncollectedFunds is a DataSetType enum value
   754  	DataSetTypeDisbursedAmountByProductWithUncollectedFunds = "disbursed_amount_by_product_with_uncollected_funds"
   755  
   756  	// DataSetTypeDisbursedAmountByInstanceHours is a DataSetType enum value
   757  	DataSetTypeDisbursedAmountByInstanceHours = "disbursed_amount_by_instance_hours"
   758  
   759  	// DataSetTypeDisbursedAmountByCustomerGeo is a DataSetType enum value
   760  	DataSetTypeDisbursedAmountByCustomerGeo = "disbursed_amount_by_customer_geo"
   761  
   762  	// DataSetTypeDisbursedAmountByAgeOfUncollectedFunds is a DataSetType enum value
   763  	DataSetTypeDisbursedAmountByAgeOfUncollectedFunds = "disbursed_amount_by_age_of_uncollected_funds"
   764  
   765  	// DataSetTypeDisbursedAmountByAgeOfDisbursedFunds is a DataSetType enum value
   766  	DataSetTypeDisbursedAmountByAgeOfDisbursedFunds = "disbursed_amount_by_age_of_disbursed_funds"
   767  
   768  	// DataSetTypeDisbursedAmountByAgeOfPastDueFunds is a DataSetType enum value
   769  	DataSetTypeDisbursedAmountByAgeOfPastDueFunds = "disbursed_amount_by_age_of_past_due_funds"
   770  
   771  	// DataSetTypeDisbursedAmountByUncollectedFundsBreakdown is a DataSetType enum value
   772  	DataSetTypeDisbursedAmountByUncollectedFundsBreakdown = "disbursed_amount_by_uncollected_funds_breakdown"
   773  
   774  	// DataSetTypeCustomerProfileByIndustry is a DataSetType enum value
   775  	DataSetTypeCustomerProfileByIndustry = "customer_profile_by_industry"
   776  
   777  	// DataSetTypeCustomerProfileByRevenue is a DataSetType enum value
   778  	DataSetTypeCustomerProfileByRevenue = "customer_profile_by_revenue"
   779  
   780  	// DataSetTypeCustomerProfileByGeography is a DataSetType enum value
   781  	DataSetTypeCustomerProfileByGeography = "customer_profile_by_geography"
   782  
   783  	// DataSetTypeSalesCompensationBilledRevenue is a DataSetType enum value
   784  	DataSetTypeSalesCompensationBilledRevenue = "sales_compensation_billed_revenue"
   785  
   786  	// DataSetTypeUsSalesAndUseTaxRecords is a DataSetType enum value
   787  	DataSetTypeUsSalesAndUseTaxRecords = "us_sales_and_use_tax_records"
   788  )
   789  
   790  // DataSetType_Values returns all elements of the DataSetType enum
   791  func DataSetType_Values() []string {
   792  	return []string{
   793  		DataSetTypeCustomerSubscriberHourlyMonthlySubscriptions,
   794  		DataSetTypeCustomerSubscriberAnnualSubscriptions,
   795  		DataSetTypeDailyBusinessUsageByInstanceType,
   796  		DataSetTypeDailyBusinessFees,
   797  		DataSetTypeDailyBusinessFreeTrialConversions,
   798  		DataSetTypeDailyBusinessNewInstances,
   799  		DataSetTypeDailyBusinessNewProductSubscribers,
   800  		DataSetTypeDailyBusinessCanceledProductSubscribers,
   801  		DataSetTypeMonthlyRevenueBillingAndRevenueData,
   802  		DataSetTypeMonthlyRevenueAnnualSubscriptions,
   803  		DataSetTypeMonthlyRevenueFieldDemonstrationUsage,
   804  		DataSetTypeMonthlyRevenueFlexiblePaymentSchedule,
   805  		DataSetTypeDisbursedAmountByProduct,
   806  		DataSetTypeDisbursedAmountByProductWithUncollectedFunds,
   807  		DataSetTypeDisbursedAmountByInstanceHours,
   808  		DataSetTypeDisbursedAmountByCustomerGeo,
   809  		DataSetTypeDisbursedAmountByAgeOfUncollectedFunds,
   810  		DataSetTypeDisbursedAmountByAgeOfDisbursedFunds,
   811  		DataSetTypeDisbursedAmountByAgeOfPastDueFunds,
   812  		DataSetTypeDisbursedAmountByUncollectedFundsBreakdown,
   813  		DataSetTypeCustomerProfileByIndustry,
   814  		DataSetTypeCustomerProfileByRevenue,
   815  		DataSetTypeCustomerProfileByGeography,
   816  		DataSetTypeSalesCompensationBilledRevenue,
   817  		DataSetTypeUsSalesAndUseTaxRecords,
   818  	}
   819  }
   820  
   821  const (
   822  	// SupportDataSetTypeCustomerSupportContactsData is a SupportDataSetType enum value
   823  	SupportDataSetTypeCustomerSupportContactsData = "customer_support_contacts_data"
   824  
   825  	// SupportDataSetTypeTestCustomerSupportContactsData is a SupportDataSetType enum value
   826  	SupportDataSetTypeTestCustomerSupportContactsData = "test_customer_support_contacts_data"
   827  )
   828  
   829  // SupportDataSetType_Values returns all elements of the SupportDataSetType enum
   830  func SupportDataSetType_Values() []string {
   831  	return []string{
   832  		SupportDataSetTypeCustomerSupportContactsData,
   833  		SupportDataSetTypeTestCustomerSupportContactsData,
   834  	}
   835  }