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

     1  // Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
     2  
     3  package wafv2
     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  	"github.com/aavshr/aws-sdk-go/private/protocol/jsonrpc"
    14  )
    15  
    16  const opAssociateWebACL = "AssociateWebACL"
    17  
    18  // AssociateWebACLRequest generates a "aws/request.Request" representing the
    19  // client's request for the AssociateWebACL operation. The "output" return
    20  // value will be populated with the request's response once the request completes
    21  // successfully.
    22  //
    23  // Use "Send" method on the returned Request to send the API call to the service.
    24  // the "output" return value is not valid until after Send returns without error.
    25  //
    26  // See AssociateWebACL for more information on using the AssociateWebACL
    27  // API call, and error handling.
    28  //
    29  // This method is useful when you want to inject custom logic or configuration
    30  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
    31  //
    32  //
    33  //    // Example sending a request using the AssociateWebACLRequest method.
    34  //    req, resp := client.AssociateWebACLRequest(params)
    35  //
    36  //    err := req.Send()
    37  //    if err == nil { // resp is now filled
    38  //        fmt.Println(resp)
    39  //    }
    40  //
    41  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/AssociateWebACL
    42  func (c *WAFV2) AssociateWebACLRequest(input *AssociateWebACLInput) (req *request.Request, output *AssociateWebACLOutput) {
    43  	op := &request.Operation{
    44  		Name:       opAssociateWebACL,
    45  		HTTPMethod: "POST",
    46  		HTTPPath:   "/",
    47  	}
    48  
    49  	if input == nil {
    50  		input = &AssociateWebACLInput{}
    51  	}
    52  
    53  	output = &AssociateWebACLOutput{}
    54  	req = c.newRequest(op, input, output)
    55  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
    56  	return
    57  }
    58  
    59  // AssociateWebACL API operation for AWS WAFV2.
    60  //
    61  // Associates a web ACL with a regional application resource, to protect the
    62  // resource. A regional application can be an Application Load Balancer (ALB),
    63  // an Amazon API Gateway REST API, or an AppSync GraphQL API.
    64  //
    65  // For Amazon CloudFront, don't use this call. Instead, use your CloudFront
    66  // distribution configuration. To associate a web ACL, in the CloudFront call
    67  // UpdateDistribution, set the web ACL ID to the Amazon Resource Name (ARN)
    68  // of the web ACL. For information, see UpdateDistribution (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html).
    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 WAFV2's
    75  // API operation AssociateWebACL for usage and error information.
    76  //
    77  // Returned Error Types:
    78  //   * WAFInternalErrorException
    79  //   Your request is valid, but WAF couldn’t perform the operation because of
    80  //   a system problem. Retry your request.
    81  //
    82  //   * WAFInvalidParameterException
    83  //   The operation failed because WAF didn't recognize a parameter in the request.
    84  //   For example:
    85  //
    86  //      * You specified a parameter name or value that isn't valid.
    87  //
    88  //      * Your nested statement isn't valid. You might have tried to nest a statement
    89  //      that can’t be nested.
    90  //
    91  //      * You tried to update a WebACL with a DefaultAction that isn't among the
    92  //      types available at DefaultAction.
    93  //
    94  //      * Your request references an ARN that is malformed, or corresponds to
    95  //      a resource with which a web ACL can't be associated.
    96  //
    97  //   * WAFNonexistentItemException
    98  //   WAF couldn’t perform the operation because your resource doesn’t exist.
    99  //
   100  //   * WAFUnavailableEntityException
   101  //   WAF couldn’t retrieve the resource that you requested. Retry your request.
   102  //
   103  //   * WAFInvalidOperationException
   104  //   The operation isn't valid.
   105  //
   106  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/AssociateWebACL
   107  func (c *WAFV2) AssociateWebACL(input *AssociateWebACLInput) (*AssociateWebACLOutput, error) {
   108  	req, out := c.AssociateWebACLRequest(input)
   109  	return out, req.Send()
   110  }
   111  
   112  // AssociateWebACLWithContext is the same as AssociateWebACL with the addition of
   113  // the ability to pass a context and additional request options.
   114  //
   115  // See AssociateWebACL for details on how to use this API operation.
   116  //
   117  // The context must be non-nil and will be used for request cancellation. If
   118  // the context is nil a panic will occur. In the future the SDK may create
   119  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   120  // for more information on using Contexts.
   121  func (c *WAFV2) AssociateWebACLWithContext(ctx aws.Context, input *AssociateWebACLInput, opts ...request.Option) (*AssociateWebACLOutput, error) {
   122  	req, out := c.AssociateWebACLRequest(input)
   123  	req.SetContext(ctx)
   124  	req.ApplyOptions(opts...)
   125  	return out, req.Send()
   126  }
   127  
   128  const opCheckCapacity = "CheckCapacity"
   129  
   130  // CheckCapacityRequest generates a "aws/request.Request" representing the
   131  // client's request for the CheckCapacity operation. The "output" return
   132  // value will be populated with the request's response once the request completes
   133  // successfully.
   134  //
   135  // Use "Send" method on the returned Request to send the API call to the service.
   136  // the "output" return value is not valid until after Send returns without error.
   137  //
   138  // See CheckCapacity for more information on using the CheckCapacity
   139  // API call, and error handling.
   140  //
   141  // This method is useful when you want to inject custom logic or configuration
   142  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   143  //
   144  //
   145  //    // Example sending a request using the CheckCapacityRequest method.
   146  //    req, resp := client.CheckCapacityRequest(params)
   147  //
   148  //    err := req.Send()
   149  //    if err == nil { // resp is now filled
   150  //        fmt.Println(resp)
   151  //    }
   152  //
   153  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CheckCapacity
   154  func (c *WAFV2) CheckCapacityRequest(input *CheckCapacityInput) (req *request.Request, output *CheckCapacityOutput) {
   155  	op := &request.Operation{
   156  		Name:       opCheckCapacity,
   157  		HTTPMethod: "POST",
   158  		HTTPPath:   "/",
   159  	}
   160  
   161  	if input == nil {
   162  		input = &CheckCapacityInput{}
   163  	}
   164  
   165  	output = &CheckCapacityOutput{}
   166  	req = c.newRequest(op, input, output)
   167  	return
   168  }
   169  
   170  // CheckCapacity API operation for AWS WAFV2.
   171  //
   172  // Returns the web ACL capacity unit (WCU) requirements for a specified scope
   173  // and set of rules. You can use this to check the capacity requirements for
   174  // the rules you want to use in a RuleGroup or WebACL.
   175  //
   176  // WAF uses WCUs to calculate and control the operating resources that are used
   177  // to run your rules, rule groups, and web ACLs. WAF calculates capacity differently
   178  // for each rule type, to reflect the relative cost of each rule. Simple rules
   179  // that cost little to run use fewer WCUs than more complex rules that use more
   180  // processing power. Rule group capacity is fixed at creation, which helps users
   181  // plan their web ACL WCU usage when they use a rule group. The WCU limit for
   182  // web ACLs is 1,500.
   183  //
   184  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   185  // with awserr.Error's Code and Message methods to get detailed information about
   186  // the error.
   187  //
   188  // See the AWS API reference guide for AWS WAFV2's
   189  // API operation CheckCapacity for usage and error information.
   190  //
   191  // Returned Error Types:
   192  //   * WAFInternalErrorException
   193  //   Your request is valid, but WAF couldn’t perform the operation because of
   194  //   a system problem. Retry your request.
   195  //
   196  //   * WAFInvalidParameterException
   197  //   The operation failed because WAF didn't recognize a parameter in the request.
   198  //   For example:
   199  //
   200  //      * You specified a parameter name or value that isn't valid.
   201  //
   202  //      * Your nested statement isn't valid. You might have tried to nest a statement
   203  //      that can’t be nested.
   204  //
   205  //      * You tried to update a WebACL with a DefaultAction that isn't among the
   206  //      types available at DefaultAction.
   207  //
   208  //      * Your request references an ARN that is malformed, or corresponds to
   209  //      a resource with which a web ACL can't be associated.
   210  //
   211  //   * WAFNonexistentItemException
   212  //   WAF couldn’t perform the operation because your resource doesn’t exist.
   213  //
   214  //   * WAFLimitsExceededException
   215  //   WAF couldn’t perform the operation because you exceeded your resource limit.
   216  //   For example, the maximum number of WebACL objects that you can create for
   217  //   an Amazon Web Services account. For more information, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
   218  //   in the WAF Developer Guide.
   219  //
   220  //   * WAFInvalidResourceException
   221  //   WAF couldn’t perform the operation because the resource that you requested
   222  //   isn’t valid. Check the resource, and try again.
   223  //
   224  //   * WAFUnavailableEntityException
   225  //   WAF couldn’t retrieve the resource that you requested. Retry your request.
   226  //
   227  //   * WAFSubscriptionNotFoundException
   228  //   You tried to use a managed rule group that's available by subscription, but
   229  //   you aren't subscribed to it yet.
   230  //
   231  //   * WAFExpiredManagedRuleGroupVersionException
   232  //   The operation failed because the specified version for the managed rule group
   233  //   has expired. You can retrieve the available versions for the managed rule
   234  //   group by calling ListAvailableManagedRuleGroupVersions.
   235  //
   236  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CheckCapacity
   237  func (c *WAFV2) CheckCapacity(input *CheckCapacityInput) (*CheckCapacityOutput, error) {
   238  	req, out := c.CheckCapacityRequest(input)
   239  	return out, req.Send()
   240  }
   241  
   242  // CheckCapacityWithContext is the same as CheckCapacity with the addition of
   243  // the ability to pass a context and additional request options.
   244  //
   245  // See CheckCapacity for details on how to use this API operation.
   246  //
   247  // The context must be non-nil and will be used for request cancellation. If
   248  // the context is nil a panic will occur. In the future the SDK may create
   249  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   250  // for more information on using Contexts.
   251  func (c *WAFV2) CheckCapacityWithContext(ctx aws.Context, input *CheckCapacityInput, opts ...request.Option) (*CheckCapacityOutput, error) {
   252  	req, out := c.CheckCapacityRequest(input)
   253  	req.SetContext(ctx)
   254  	req.ApplyOptions(opts...)
   255  	return out, req.Send()
   256  }
   257  
   258  const opCreateIPSet = "CreateIPSet"
   259  
   260  // CreateIPSetRequest generates a "aws/request.Request" representing the
   261  // client's request for the CreateIPSet operation. The "output" return
   262  // value will be populated with the request's response once the request completes
   263  // successfully.
   264  //
   265  // Use "Send" method on the returned Request to send the API call to the service.
   266  // the "output" return value is not valid until after Send returns without error.
   267  //
   268  // See CreateIPSet for more information on using the CreateIPSet
   269  // API call, and error handling.
   270  //
   271  // This method is useful when you want to inject custom logic or configuration
   272  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   273  //
   274  //
   275  //    // Example sending a request using the CreateIPSetRequest method.
   276  //    req, resp := client.CreateIPSetRequest(params)
   277  //
   278  //    err := req.Send()
   279  //    if err == nil { // resp is now filled
   280  //        fmt.Println(resp)
   281  //    }
   282  //
   283  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CreateIPSet
   284  func (c *WAFV2) CreateIPSetRequest(input *CreateIPSetInput) (req *request.Request, output *CreateIPSetOutput) {
   285  	op := &request.Operation{
   286  		Name:       opCreateIPSet,
   287  		HTTPMethod: "POST",
   288  		HTTPPath:   "/",
   289  	}
   290  
   291  	if input == nil {
   292  		input = &CreateIPSetInput{}
   293  	}
   294  
   295  	output = &CreateIPSetOutput{}
   296  	req = c.newRequest(op, input, output)
   297  	return
   298  }
   299  
   300  // CreateIPSet API operation for AWS WAFV2.
   301  //
   302  // Creates an IPSet, which you use to identify web requests that originate from
   303  // specific IP addresses or ranges of IP addresses. For example, if you're receiving
   304  // a lot of requests from a ranges of IP addresses, you can configure WAF to
   305  // block them using an IPSet that lists those IP addresses.
   306  //
   307  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   308  // with awserr.Error's Code and Message methods to get detailed information about
   309  // the error.
   310  //
   311  // See the AWS API reference guide for AWS WAFV2's
   312  // API operation CreateIPSet for usage and error information.
   313  //
   314  // Returned Error Types:
   315  //   * WAFInternalErrorException
   316  //   Your request is valid, but WAF couldn’t perform the operation because of
   317  //   a system problem. Retry your request.
   318  //
   319  //   * WAFInvalidParameterException
   320  //   The operation failed because WAF didn't recognize a parameter in the request.
   321  //   For example:
   322  //
   323  //      * You specified a parameter name or value that isn't valid.
   324  //
   325  //      * Your nested statement isn't valid. You might have tried to nest a statement
   326  //      that can’t be nested.
   327  //
   328  //      * You tried to update a WebACL with a DefaultAction that isn't among the
   329  //      types available at DefaultAction.
   330  //
   331  //      * Your request references an ARN that is malformed, or corresponds to
   332  //      a resource with which a web ACL can't be associated.
   333  //
   334  //   * WAFDuplicateItemException
   335  //   WAF couldn’t perform the operation because the resource that you tried
   336  //   to save is a duplicate of an existing one.
   337  //
   338  //   * WAFOptimisticLockException
   339  //   WAF couldn’t save your changes because you tried to update or delete a
   340  //   resource that has changed since you last retrieved it. Get the resource again,
   341  //   make any changes you need to make to the new copy, and retry your operation.
   342  //
   343  //   * WAFLimitsExceededException
   344  //   WAF couldn’t perform the operation because you exceeded your resource limit.
   345  //   For example, the maximum number of WebACL objects that you can create for
   346  //   an Amazon Web Services account. For more information, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
   347  //   in the WAF Developer Guide.
   348  //
   349  //   * WAFTagOperationException
   350  //   An error occurred during the tagging operation. Retry your request.
   351  //
   352  //   * WAFTagOperationInternalErrorException
   353  //   WAF couldn’t perform your tagging operation because of an internal error.
   354  //   Retry your request.
   355  //
   356  //   * WAFInvalidOperationException
   357  //   The operation isn't valid.
   358  //
   359  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CreateIPSet
   360  func (c *WAFV2) CreateIPSet(input *CreateIPSetInput) (*CreateIPSetOutput, error) {
   361  	req, out := c.CreateIPSetRequest(input)
   362  	return out, req.Send()
   363  }
   364  
   365  // CreateIPSetWithContext is the same as CreateIPSet with the addition of
   366  // the ability to pass a context and additional request options.
   367  //
   368  // See CreateIPSet for details on how to use this API operation.
   369  //
   370  // The context must be non-nil and will be used for request cancellation. If
   371  // the context is nil a panic will occur. In the future the SDK may create
   372  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   373  // for more information on using Contexts.
   374  func (c *WAFV2) CreateIPSetWithContext(ctx aws.Context, input *CreateIPSetInput, opts ...request.Option) (*CreateIPSetOutput, error) {
   375  	req, out := c.CreateIPSetRequest(input)
   376  	req.SetContext(ctx)
   377  	req.ApplyOptions(opts...)
   378  	return out, req.Send()
   379  }
   380  
   381  const opCreateRegexPatternSet = "CreateRegexPatternSet"
   382  
   383  // CreateRegexPatternSetRequest generates a "aws/request.Request" representing the
   384  // client's request for the CreateRegexPatternSet operation. The "output" return
   385  // value will be populated with the request's response once the request completes
   386  // successfully.
   387  //
   388  // Use "Send" method on the returned Request to send the API call to the service.
   389  // the "output" return value is not valid until after Send returns without error.
   390  //
   391  // See CreateRegexPatternSet for more information on using the CreateRegexPatternSet
   392  // API call, and error handling.
   393  //
   394  // This method is useful when you want to inject custom logic or configuration
   395  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   396  //
   397  //
   398  //    // Example sending a request using the CreateRegexPatternSetRequest method.
   399  //    req, resp := client.CreateRegexPatternSetRequest(params)
   400  //
   401  //    err := req.Send()
   402  //    if err == nil { // resp is now filled
   403  //        fmt.Println(resp)
   404  //    }
   405  //
   406  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CreateRegexPatternSet
   407  func (c *WAFV2) CreateRegexPatternSetRequest(input *CreateRegexPatternSetInput) (req *request.Request, output *CreateRegexPatternSetOutput) {
   408  	op := &request.Operation{
   409  		Name:       opCreateRegexPatternSet,
   410  		HTTPMethod: "POST",
   411  		HTTPPath:   "/",
   412  	}
   413  
   414  	if input == nil {
   415  		input = &CreateRegexPatternSetInput{}
   416  	}
   417  
   418  	output = &CreateRegexPatternSetOutput{}
   419  	req = c.newRequest(op, input, output)
   420  	return
   421  }
   422  
   423  // CreateRegexPatternSet API operation for AWS WAFV2.
   424  //
   425  // Creates a RegexPatternSet, which you reference in a RegexPatternSetReferenceStatement,
   426  // to have WAF inspect a web request component for the specified patterns.
   427  //
   428  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   429  // with awserr.Error's Code and Message methods to get detailed information about
   430  // the error.
   431  //
   432  // See the AWS API reference guide for AWS WAFV2's
   433  // API operation CreateRegexPatternSet for usage and error information.
   434  //
   435  // Returned Error Types:
   436  //   * WAFInternalErrorException
   437  //   Your request is valid, but WAF couldn’t perform the operation because of
   438  //   a system problem. Retry your request.
   439  //
   440  //   * WAFInvalidParameterException
   441  //   The operation failed because WAF didn't recognize a parameter in the request.
   442  //   For example:
   443  //
   444  //      * You specified a parameter name or value that isn't valid.
   445  //
   446  //      * Your nested statement isn't valid. You might have tried to nest a statement
   447  //      that can’t be nested.
   448  //
   449  //      * You tried to update a WebACL with a DefaultAction that isn't among the
   450  //      types available at DefaultAction.
   451  //
   452  //      * Your request references an ARN that is malformed, or corresponds to
   453  //      a resource with which a web ACL can't be associated.
   454  //
   455  //   * WAFDuplicateItemException
   456  //   WAF couldn’t perform the operation because the resource that you tried
   457  //   to save is a duplicate of an existing one.
   458  //
   459  //   * WAFOptimisticLockException
   460  //   WAF couldn’t save your changes because you tried to update or delete a
   461  //   resource that has changed since you last retrieved it. Get the resource again,
   462  //   make any changes you need to make to the new copy, and retry your operation.
   463  //
   464  //   * WAFLimitsExceededException
   465  //   WAF couldn’t perform the operation because you exceeded your resource limit.
   466  //   For example, the maximum number of WebACL objects that you can create for
   467  //   an Amazon Web Services account. For more information, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
   468  //   in the WAF Developer Guide.
   469  //
   470  //   * WAFTagOperationException
   471  //   An error occurred during the tagging operation. Retry your request.
   472  //
   473  //   * WAFTagOperationInternalErrorException
   474  //   WAF couldn’t perform your tagging operation because of an internal error.
   475  //   Retry your request.
   476  //
   477  //   * WAFInvalidOperationException
   478  //   The operation isn't valid.
   479  //
   480  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CreateRegexPatternSet
   481  func (c *WAFV2) CreateRegexPatternSet(input *CreateRegexPatternSetInput) (*CreateRegexPatternSetOutput, error) {
   482  	req, out := c.CreateRegexPatternSetRequest(input)
   483  	return out, req.Send()
   484  }
   485  
   486  // CreateRegexPatternSetWithContext is the same as CreateRegexPatternSet with the addition of
   487  // the ability to pass a context and additional request options.
   488  //
   489  // See CreateRegexPatternSet for details on how to use this API operation.
   490  //
   491  // The context must be non-nil and will be used for request cancellation. If
   492  // the context is nil a panic will occur. In the future the SDK may create
   493  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   494  // for more information on using Contexts.
   495  func (c *WAFV2) CreateRegexPatternSetWithContext(ctx aws.Context, input *CreateRegexPatternSetInput, opts ...request.Option) (*CreateRegexPatternSetOutput, error) {
   496  	req, out := c.CreateRegexPatternSetRequest(input)
   497  	req.SetContext(ctx)
   498  	req.ApplyOptions(opts...)
   499  	return out, req.Send()
   500  }
   501  
   502  const opCreateRuleGroup = "CreateRuleGroup"
   503  
   504  // CreateRuleGroupRequest generates a "aws/request.Request" representing the
   505  // client's request for the CreateRuleGroup operation. The "output" return
   506  // value will be populated with the request's response once the request completes
   507  // successfully.
   508  //
   509  // Use "Send" method on the returned Request to send the API call to the service.
   510  // the "output" return value is not valid until after Send returns without error.
   511  //
   512  // See CreateRuleGroup for more information on using the CreateRuleGroup
   513  // API call, and error handling.
   514  //
   515  // This method is useful when you want to inject custom logic or configuration
   516  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   517  //
   518  //
   519  //    // Example sending a request using the CreateRuleGroupRequest method.
   520  //    req, resp := client.CreateRuleGroupRequest(params)
   521  //
   522  //    err := req.Send()
   523  //    if err == nil { // resp is now filled
   524  //        fmt.Println(resp)
   525  //    }
   526  //
   527  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CreateRuleGroup
   528  func (c *WAFV2) CreateRuleGroupRequest(input *CreateRuleGroupInput) (req *request.Request, output *CreateRuleGroupOutput) {
   529  	op := &request.Operation{
   530  		Name:       opCreateRuleGroup,
   531  		HTTPMethod: "POST",
   532  		HTTPPath:   "/",
   533  	}
   534  
   535  	if input == nil {
   536  		input = &CreateRuleGroupInput{}
   537  	}
   538  
   539  	output = &CreateRuleGroupOutput{}
   540  	req = c.newRequest(op, input, output)
   541  	return
   542  }
   543  
   544  // CreateRuleGroup API operation for AWS WAFV2.
   545  //
   546  // Creates a RuleGroup per the specifications provided.
   547  //
   548  // A rule group defines a collection of rules to inspect and control web requests
   549  // that you can use in a WebACL. When you create a rule group, you define an
   550  // immutable capacity limit. If you update a rule group, you must stay within
   551  // the capacity. This allows others to reuse the rule group with confidence
   552  // in its capacity requirements.
   553  //
   554  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   555  // with awserr.Error's Code and Message methods to get detailed information about
   556  // the error.
   557  //
   558  // See the AWS API reference guide for AWS WAFV2's
   559  // API operation CreateRuleGroup for usage and error information.
   560  //
   561  // Returned Error Types:
   562  //   * WAFInternalErrorException
   563  //   Your request is valid, but WAF couldn’t perform the operation because of
   564  //   a system problem. Retry your request.
   565  //
   566  //   * WAFInvalidParameterException
   567  //   The operation failed because WAF didn't recognize a parameter in the request.
   568  //   For example:
   569  //
   570  //      * You specified a parameter name or value that isn't valid.
   571  //
   572  //      * Your nested statement isn't valid. You might have tried to nest a statement
   573  //      that can’t be nested.
   574  //
   575  //      * You tried to update a WebACL with a DefaultAction that isn't among the
   576  //      types available at DefaultAction.
   577  //
   578  //      * Your request references an ARN that is malformed, or corresponds to
   579  //      a resource with which a web ACL can't be associated.
   580  //
   581  //   * WAFDuplicateItemException
   582  //   WAF couldn’t perform the operation because the resource that you tried
   583  //   to save is a duplicate of an existing one.
   584  //
   585  //   * WAFOptimisticLockException
   586  //   WAF couldn’t save your changes because you tried to update or delete a
   587  //   resource that has changed since you last retrieved it. Get the resource again,
   588  //   make any changes you need to make to the new copy, and retry your operation.
   589  //
   590  //   * WAFLimitsExceededException
   591  //   WAF couldn’t perform the operation because you exceeded your resource limit.
   592  //   For example, the maximum number of WebACL objects that you can create for
   593  //   an Amazon Web Services account. For more information, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
   594  //   in the WAF Developer Guide.
   595  //
   596  //   * WAFUnavailableEntityException
   597  //   WAF couldn’t retrieve the resource that you requested. Retry your request.
   598  //
   599  //   * WAFTagOperationException
   600  //   An error occurred during the tagging operation. Retry your request.
   601  //
   602  //   * WAFTagOperationInternalErrorException
   603  //   WAF couldn’t perform your tagging operation because of an internal error.
   604  //   Retry your request.
   605  //
   606  //   * WAFSubscriptionNotFoundException
   607  //   You tried to use a managed rule group that's available by subscription, but
   608  //   you aren't subscribed to it yet.
   609  //
   610  //   * WAFNonexistentItemException
   611  //   WAF couldn’t perform the operation because your resource doesn’t exist.
   612  //
   613  //   * WAFInvalidOperationException
   614  //   The operation isn't valid.
   615  //
   616  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CreateRuleGroup
   617  func (c *WAFV2) CreateRuleGroup(input *CreateRuleGroupInput) (*CreateRuleGroupOutput, error) {
   618  	req, out := c.CreateRuleGroupRequest(input)
   619  	return out, req.Send()
   620  }
   621  
   622  // CreateRuleGroupWithContext is the same as CreateRuleGroup with the addition of
   623  // the ability to pass a context and additional request options.
   624  //
   625  // See CreateRuleGroup for details on how to use this API operation.
   626  //
   627  // The context must be non-nil and will be used for request cancellation. If
   628  // the context is nil a panic will occur. In the future the SDK may create
   629  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   630  // for more information on using Contexts.
   631  func (c *WAFV2) CreateRuleGroupWithContext(ctx aws.Context, input *CreateRuleGroupInput, opts ...request.Option) (*CreateRuleGroupOutput, error) {
   632  	req, out := c.CreateRuleGroupRequest(input)
   633  	req.SetContext(ctx)
   634  	req.ApplyOptions(opts...)
   635  	return out, req.Send()
   636  }
   637  
   638  const opCreateWebACL = "CreateWebACL"
   639  
   640  // CreateWebACLRequest generates a "aws/request.Request" representing the
   641  // client's request for the CreateWebACL operation. The "output" return
   642  // value will be populated with the request's response once the request completes
   643  // successfully.
   644  //
   645  // Use "Send" method on the returned Request to send the API call to the service.
   646  // the "output" return value is not valid until after Send returns without error.
   647  //
   648  // See CreateWebACL for more information on using the CreateWebACL
   649  // API call, and error handling.
   650  //
   651  // This method is useful when you want to inject custom logic or configuration
   652  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   653  //
   654  //
   655  //    // Example sending a request using the CreateWebACLRequest method.
   656  //    req, resp := client.CreateWebACLRequest(params)
   657  //
   658  //    err := req.Send()
   659  //    if err == nil { // resp is now filled
   660  //        fmt.Println(resp)
   661  //    }
   662  //
   663  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CreateWebACL
   664  func (c *WAFV2) CreateWebACLRequest(input *CreateWebACLInput) (req *request.Request, output *CreateWebACLOutput) {
   665  	op := &request.Operation{
   666  		Name:       opCreateWebACL,
   667  		HTTPMethod: "POST",
   668  		HTTPPath:   "/",
   669  	}
   670  
   671  	if input == nil {
   672  		input = &CreateWebACLInput{}
   673  	}
   674  
   675  	output = &CreateWebACLOutput{}
   676  	req = c.newRequest(op, input, output)
   677  	return
   678  }
   679  
   680  // CreateWebACL API operation for AWS WAFV2.
   681  //
   682  // Creates a WebACL per the specifications provided.
   683  //
   684  // A web ACL defines a collection of rules to use to inspect and control web
   685  // requests. Each rule has an action defined (allow, block, or count) for requests
   686  // that match the statement of the rule. In the web ACL, you assign a default
   687  // action to take (allow, block) for any request that does not match any of
   688  // the rules. The rules in a web ACL can be a combination of the types Rule,
   689  // RuleGroup, and managed rule group. You can associate a web ACL with one or
   690  // more Amazon Web Services resources to protect. The resources can be an Amazon
   691  // CloudFront distribution, an Amazon API Gateway REST API, an Application Load
   692  // Balancer, or an AppSync GraphQL API.
   693  //
   694  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   695  // with awserr.Error's Code and Message methods to get detailed information about
   696  // the error.
   697  //
   698  // See the AWS API reference guide for AWS WAFV2's
   699  // API operation CreateWebACL for usage and error information.
   700  //
   701  // Returned Error Types:
   702  //   * WAFInternalErrorException
   703  //   Your request is valid, but WAF couldn’t perform the operation because of
   704  //   a system problem. Retry your request.
   705  //
   706  //   * WAFInvalidParameterException
   707  //   The operation failed because WAF didn't recognize a parameter in the request.
   708  //   For example:
   709  //
   710  //      * You specified a parameter name or value that isn't valid.
   711  //
   712  //      * Your nested statement isn't valid. You might have tried to nest a statement
   713  //      that can’t be nested.
   714  //
   715  //      * You tried to update a WebACL with a DefaultAction that isn't among the
   716  //      types available at DefaultAction.
   717  //
   718  //      * Your request references an ARN that is malformed, or corresponds to
   719  //      a resource with which a web ACL can't be associated.
   720  //
   721  //   * WAFDuplicateItemException
   722  //   WAF couldn’t perform the operation because the resource that you tried
   723  //   to save is a duplicate of an existing one.
   724  //
   725  //   * WAFOptimisticLockException
   726  //   WAF couldn’t save your changes because you tried to update or delete a
   727  //   resource that has changed since you last retrieved it. Get the resource again,
   728  //   make any changes you need to make to the new copy, and retry your operation.
   729  //
   730  //   * WAFLimitsExceededException
   731  //   WAF couldn’t perform the operation because you exceeded your resource limit.
   732  //   For example, the maximum number of WebACL objects that you can create for
   733  //   an Amazon Web Services account. For more information, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
   734  //   in the WAF Developer Guide.
   735  //
   736  //   * WAFInvalidResourceException
   737  //   WAF couldn’t perform the operation because the resource that you requested
   738  //   isn’t valid. Check the resource, and try again.
   739  //
   740  //   * WAFUnavailableEntityException
   741  //   WAF couldn’t retrieve the resource that you requested. Retry your request.
   742  //
   743  //   * WAFNonexistentItemException
   744  //   WAF couldn’t perform the operation because your resource doesn’t exist.
   745  //
   746  //   * WAFTagOperationException
   747  //   An error occurred during the tagging operation. Retry your request.
   748  //
   749  //   * WAFTagOperationInternalErrorException
   750  //   WAF couldn’t perform your tagging operation because of an internal error.
   751  //   Retry your request.
   752  //
   753  //   * WAFSubscriptionNotFoundException
   754  //   You tried to use a managed rule group that's available by subscription, but
   755  //   you aren't subscribed to it yet.
   756  //
   757  //   * WAFInvalidOperationException
   758  //   The operation isn't valid.
   759  //
   760  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CreateWebACL
   761  func (c *WAFV2) CreateWebACL(input *CreateWebACLInput) (*CreateWebACLOutput, error) {
   762  	req, out := c.CreateWebACLRequest(input)
   763  	return out, req.Send()
   764  }
   765  
   766  // CreateWebACLWithContext is the same as CreateWebACL with the addition of
   767  // the ability to pass a context and additional request options.
   768  //
   769  // See CreateWebACL for details on how to use this API operation.
   770  //
   771  // The context must be non-nil and will be used for request cancellation. If
   772  // the context is nil a panic will occur. In the future the SDK may create
   773  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   774  // for more information on using Contexts.
   775  func (c *WAFV2) CreateWebACLWithContext(ctx aws.Context, input *CreateWebACLInput, opts ...request.Option) (*CreateWebACLOutput, error) {
   776  	req, out := c.CreateWebACLRequest(input)
   777  	req.SetContext(ctx)
   778  	req.ApplyOptions(opts...)
   779  	return out, req.Send()
   780  }
   781  
   782  const opDeleteFirewallManagerRuleGroups = "DeleteFirewallManagerRuleGroups"
   783  
   784  // DeleteFirewallManagerRuleGroupsRequest generates a "aws/request.Request" representing the
   785  // client's request for the DeleteFirewallManagerRuleGroups operation. The "output" return
   786  // value will be populated with the request's response once the request completes
   787  // successfully.
   788  //
   789  // Use "Send" method on the returned Request to send the API call to the service.
   790  // the "output" return value is not valid until after Send returns without error.
   791  //
   792  // See DeleteFirewallManagerRuleGroups for more information on using the DeleteFirewallManagerRuleGroups
   793  // API call, and error handling.
   794  //
   795  // This method is useful when you want to inject custom logic or configuration
   796  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   797  //
   798  //
   799  //    // Example sending a request using the DeleteFirewallManagerRuleGroupsRequest method.
   800  //    req, resp := client.DeleteFirewallManagerRuleGroupsRequest(params)
   801  //
   802  //    err := req.Send()
   803  //    if err == nil { // resp is now filled
   804  //        fmt.Println(resp)
   805  //    }
   806  //
   807  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeleteFirewallManagerRuleGroups
   808  func (c *WAFV2) DeleteFirewallManagerRuleGroupsRequest(input *DeleteFirewallManagerRuleGroupsInput) (req *request.Request, output *DeleteFirewallManagerRuleGroupsOutput) {
   809  	op := &request.Operation{
   810  		Name:       opDeleteFirewallManagerRuleGroups,
   811  		HTTPMethod: "POST",
   812  		HTTPPath:   "/",
   813  	}
   814  
   815  	if input == nil {
   816  		input = &DeleteFirewallManagerRuleGroupsInput{}
   817  	}
   818  
   819  	output = &DeleteFirewallManagerRuleGroupsOutput{}
   820  	req = c.newRequest(op, input, output)
   821  	return
   822  }
   823  
   824  // DeleteFirewallManagerRuleGroups API operation for AWS WAFV2.
   825  //
   826  // Deletes all rule groups that are managed by Firewall Manager for the specified
   827  // web ACL.
   828  //
   829  // You can only use this if ManagedByFirewallManager is false in the specified
   830  // WebACL.
   831  //
   832  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   833  // with awserr.Error's Code and Message methods to get detailed information about
   834  // the error.
   835  //
   836  // See the AWS API reference guide for AWS WAFV2's
   837  // API operation DeleteFirewallManagerRuleGroups for usage and error information.
   838  //
   839  // Returned Error Types:
   840  //   * WAFInternalErrorException
   841  //   Your request is valid, but WAF couldn’t perform the operation because of
   842  //   a system problem. Retry your request.
   843  //
   844  //   * WAFInvalidParameterException
   845  //   The operation failed because WAF didn't recognize a parameter in the request.
   846  //   For example:
   847  //
   848  //      * You specified a parameter name or value that isn't valid.
   849  //
   850  //      * Your nested statement isn't valid. You might have tried to nest a statement
   851  //      that can’t be nested.
   852  //
   853  //      * You tried to update a WebACL with a DefaultAction that isn't among the
   854  //      types available at DefaultAction.
   855  //
   856  //      * Your request references an ARN that is malformed, or corresponds to
   857  //      a resource with which a web ACL can't be associated.
   858  //
   859  //   * WAFNonexistentItemException
   860  //   WAF couldn’t perform the operation because your resource doesn’t exist.
   861  //
   862  //   * WAFOptimisticLockException
   863  //   WAF couldn’t save your changes because you tried to update or delete a
   864  //   resource that has changed since you last retrieved it. Get the resource again,
   865  //   make any changes you need to make to the new copy, and retry your operation.
   866  //
   867  //   * WAFInvalidOperationException
   868  //   The operation isn't valid.
   869  //
   870  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeleteFirewallManagerRuleGroups
   871  func (c *WAFV2) DeleteFirewallManagerRuleGroups(input *DeleteFirewallManagerRuleGroupsInput) (*DeleteFirewallManagerRuleGroupsOutput, error) {
   872  	req, out := c.DeleteFirewallManagerRuleGroupsRequest(input)
   873  	return out, req.Send()
   874  }
   875  
   876  // DeleteFirewallManagerRuleGroupsWithContext is the same as DeleteFirewallManagerRuleGroups with the addition of
   877  // the ability to pass a context and additional request options.
   878  //
   879  // See DeleteFirewallManagerRuleGroups for details on how to use this API operation.
   880  //
   881  // The context must be non-nil and will be used for request cancellation. If
   882  // the context is nil a panic will occur. In the future the SDK may create
   883  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   884  // for more information on using Contexts.
   885  func (c *WAFV2) DeleteFirewallManagerRuleGroupsWithContext(ctx aws.Context, input *DeleteFirewallManagerRuleGroupsInput, opts ...request.Option) (*DeleteFirewallManagerRuleGroupsOutput, error) {
   886  	req, out := c.DeleteFirewallManagerRuleGroupsRequest(input)
   887  	req.SetContext(ctx)
   888  	req.ApplyOptions(opts...)
   889  	return out, req.Send()
   890  }
   891  
   892  const opDeleteIPSet = "DeleteIPSet"
   893  
   894  // DeleteIPSetRequest generates a "aws/request.Request" representing the
   895  // client's request for the DeleteIPSet operation. The "output" return
   896  // value will be populated with the request's response once the request completes
   897  // successfully.
   898  //
   899  // Use "Send" method on the returned Request to send the API call to the service.
   900  // the "output" return value is not valid until after Send returns without error.
   901  //
   902  // See DeleteIPSet for more information on using the DeleteIPSet
   903  // API call, and error handling.
   904  //
   905  // This method is useful when you want to inject custom logic or configuration
   906  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   907  //
   908  //
   909  //    // Example sending a request using the DeleteIPSetRequest method.
   910  //    req, resp := client.DeleteIPSetRequest(params)
   911  //
   912  //    err := req.Send()
   913  //    if err == nil { // resp is now filled
   914  //        fmt.Println(resp)
   915  //    }
   916  //
   917  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeleteIPSet
   918  func (c *WAFV2) DeleteIPSetRequest(input *DeleteIPSetInput) (req *request.Request, output *DeleteIPSetOutput) {
   919  	op := &request.Operation{
   920  		Name:       opDeleteIPSet,
   921  		HTTPMethod: "POST",
   922  		HTTPPath:   "/",
   923  	}
   924  
   925  	if input == nil {
   926  		input = &DeleteIPSetInput{}
   927  	}
   928  
   929  	output = &DeleteIPSetOutput{}
   930  	req = c.newRequest(op, input, output)
   931  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
   932  	return
   933  }
   934  
   935  // DeleteIPSet API operation for AWS WAFV2.
   936  //
   937  // Deletes the specified IPSet.
   938  //
   939  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   940  // with awserr.Error's Code and Message methods to get detailed information about
   941  // the error.
   942  //
   943  // See the AWS API reference guide for AWS WAFV2's
   944  // API operation DeleteIPSet for usage and error information.
   945  //
   946  // Returned Error Types:
   947  //   * WAFInternalErrorException
   948  //   Your request is valid, but WAF couldn’t perform the operation because of
   949  //   a system problem. Retry your request.
   950  //
   951  //   * WAFInvalidParameterException
   952  //   The operation failed because WAF didn't recognize a parameter in the request.
   953  //   For example:
   954  //
   955  //      * You specified a parameter name or value that isn't valid.
   956  //
   957  //      * Your nested statement isn't valid. You might have tried to nest a statement
   958  //      that can’t be nested.
   959  //
   960  //      * You tried to update a WebACL with a DefaultAction that isn't among the
   961  //      types available at DefaultAction.
   962  //
   963  //      * Your request references an ARN that is malformed, or corresponds to
   964  //      a resource with which a web ACL can't be associated.
   965  //
   966  //   * WAFNonexistentItemException
   967  //   WAF couldn’t perform the operation because your resource doesn’t exist.
   968  //
   969  //   * WAFOptimisticLockException
   970  //   WAF couldn’t save your changes because you tried to update or delete a
   971  //   resource that has changed since you last retrieved it. Get the resource again,
   972  //   make any changes you need to make to the new copy, and retry your operation.
   973  //
   974  //   * WAFAssociatedItemException
   975  //   WAF couldn’t perform the operation because your resource is being used
   976  //   by another resource or it’s associated with another resource.
   977  //
   978  //   * WAFTagOperationException
   979  //   An error occurred during the tagging operation. Retry your request.
   980  //
   981  //   * WAFTagOperationInternalErrorException
   982  //   WAF couldn’t perform your tagging operation because of an internal error.
   983  //   Retry your request.
   984  //
   985  //   * WAFInvalidOperationException
   986  //   The operation isn't valid.
   987  //
   988  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeleteIPSet
   989  func (c *WAFV2) DeleteIPSet(input *DeleteIPSetInput) (*DeleteIPSetOutput, error) {
   990  	req, out := c.DeleteIPSetRequest(input)
   991  	return out, req.Send()
   992  }
   993  
   994  // DeleteIPSetWithContext is the same as DeleteIPSet with the addition of
   995  // the ability to pass a context and additional request options.
   996  //
   997  // See DeleteIPSet for details on how to use this API operation.
   998  //
   999  // The context must be non-nil and will be used for request cancellation. If
  1000  // the context is nil a panic will occur. In the future the SDK may create
  1001  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1002  // for more information on using Contexts.
  1003  func (c *WAFV2) DeleteIPSetWithContext(ctx aws.Context, input *DeleteIPSetInput, opts ...request.Option) (*DeleteIPSetOutput, error) {
  1004  	req, out := c.DeleteIPSetRequest(input)
  1005  	req.SetContext(ctx)
  1006  	req.ApplyOptions(opts...)
  1007  	return out, req.Send()
  1008  }
  1009  
  1010  const opDeleteLoggingConfiguration = "DeleteLoggingConfiguration"
  1011  
  1012  // DeleteLoggingConfigurationRequest generates a "aws/request.Request" representing the
  1013  // client's request for the DeleteLoggingConfiguration operation. The "output" return
  1014  // value will be populated with the request's response once the request completes
  1015  // successfully.
  1016  //
  1017  // Use "Send" method on the returned Request to send the API call to the service.
  1018  // the "output" return value is not valid until after Send returns without error.
  1019  //
  1020  // See DeleteLoggingConfiguration for more information on using the DeleteLoggingConfiguration
  1021  // API call, and error handling.
  1022  //
  1023  // This method is useful when you want to inject custom logic or configuration
  1024  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1025  //
  1026  //
  1027  //    // Example sending a request using the DeleteLoggingConfigurationRequest method.
  1028  //    req, resp := client.DeleteLoggingConfigurationRequest(params)
  1029  //
  1030  //    err := req.Send()
  1031  //    if err == nil { // resp is now filled
  1032  //        fmt.Println(resp)
  1033  //    }
  1034  //
  1035  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeleteLoggingConfiguration
  1036  func (c *WAFV2) DeleteLoggingConfigurationRequest(input *DeleteLoggingConfigurationInput) (req *request.Request, output *DeleteLoggingConfigurationOutput) {
  1037  	op := &request.Operation{
  1038  		Name:       opDeleteLoggingConfiguration,
  1039  		HTTPMethod: "POST",
  1040  		HTTPPath:   "/",
  1041  	}
  1042  
  1043  	if input == nil {
  1044  		input = &DeleteLoggingConfigurationInput{}
  1045  	}
  1046  
  1047  	output = &DeleteLoggingConfigurationOutput{}
  1048  	req = c.newRequest(op, input, output)
  1049  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1050  	return
  1051  }
  1052  
  1053  // DeleteLoggingConfiguration API operation for AWS WAFV2.
  1054  //
  1055  // Deletes the LoggingConfiguration from the specified web ACL.
  1056  //
  1057  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1058  // with awserr.Error's Code and Message methods to get detailed information about
  1059  // the error.
  1060  //
  1061  // See the AWS API reference guide for AWS WAFV2's
  1062  // API operation DeleteLoggingConfiguration for usage and error information.
  1063  //
  1064  // Returned Error Types:
  1065  //   * WAFInternalErrorException
  1066  //   Your request is valid, but WAF couldn’t perform the operation because of
  1067  //   a system problem. Retry your request.
  1068  //
  1069  //   * WAFNonexistentItemException
  1070  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  1071  //
  1072  //   * WAFOptimisticLockException
  1073  //   WAF couldn’t save your changes because you tried to update or delete a
  1074  //   resource that has changed since you last retrieved it. Get the resource again,
  1075  //   make any changes you need to make to the new copy, and retry your operation.
  1076  //
  1077  //   * WAFInvalidParameterException
  1078  //   The operation failed because WAF didn't recognize a parameter in the request.
  1079  //   For example:
  1080  //
  1081  //      * You specified a parameter name or value that isn't valid.
  1082  //
  1083  //      * Your nested statement isn't valid. You might have tried to nest a statement
  1084  //      that can’t be nested.
  1085  //
  1086  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  1087  //      types available at DefaultAction.
  1088  //
  1089  //      * Your request references an ARN that is malformed, or corresponds to
  1090  //      a resource with which a web ACL can't be associated.
  1091  //
  1092  //   * WAFInvalidOperationException
  1093  //   The operation isn't valid.
  1094  //
  1095  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeleteLoggingConfiguration
  1096  func (c *WAFV2) DeleteLoggingConfiguration(input *DeleteLoggingConfigurationInput) (*DeleteLoggingConfigurationOutput, error) {
  1097  	req, out := c.DeleteLoggingConfigurationRequest(input)
  1098  	return out, req.Send()
  1099  }
  1100  
  1101  // DeleteLoggingConfigurationWithContext is the same as DeleteLoggingConfiguration with the addition of
  1102  // the ability to pass a context and additional request options.
  1103  //
  1104  // See DeleteLoggingConfiguration for details on how to use this API operation.
  1105  //
  1106  // The context must be non-nil and will be used for request cancellation. If
  1107  // the context is nil a panic will occur. In the future the SDK may create
  1108  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1109  // for more information on using Contexts.
  1110  func (c *WAFV2) DeleteLoggingConfigurationWithContext(ctx aws.Context, input *DeleteLoggingConfigurationInput, opts ...request.Option) (*DeleteLoggingConfigurationOutput, error) {
  1111  	req, out := c.DeleteLoggingConfigurationRequest(input)
  1112  	req.SetContext(ctx)
  1113  	req.ApplyOptions(opts...)
  1114  	return out, req.Send()
  1115  }
  1116  
  1117  const opDeletePermissionPolicy = "DeletePermissionPolicy"
  1118  
  1119  // DeletePermissionPolicyRequest generates a "aws/request.Request" representing the
  1120  // client's request for the DeletePermissionPolicy operation. The "output" return
  1121  // value will be populated with the request's response once the request completes
  1122  // successfully.
  1123  //
  1124  // Use "Send" method on the returned Request to send the API call to the service.
  1125  // the "output" return value is not valid until after Send returns without error.
  1126  //
  1127  // See DeletePermissionPolicy for more information on using the DeletePermissionPolicy
  1128  // API call, and error handling.
  1129  //
  1130  // This method is useful when you want to inject custom logic or configuration
  1131  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1132  //
  1133  //
  1134  //    // Example sending a request using the DeletePermissionPolicyRequest method.
  1135  //    req, resp := client.DeletePermissionPolicyRequest(params)
  1136  //
  1137  //    err := req.Send()
  1138  //    if err == nil { // resp is now filled
  1139  //        fmt.Println(resp)
  1140  //    }
  1141  //
  1142  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeletePermissionPolicy
  1143  func (c *WAFV2) DeletePermissionPolicyRequest(input *DeletePermissionPolicyInput) (req *request.Request, output *DeletePermissionPolicyOutput) {
  1144  	op := &request.Operation{
  1145  		Name:       opDeletePermissionPolicy,
  1146  		HTTPMethod: "POST",
  1147  		HTTPPath:   "/",
  1148  	}
  1149  
  1150  	if input == nil {
  1151  		input = &DeletePermissionPolicyInput{}
  1152  	}
  1153  
  1154  	output = &DeletePermissionPolicyOutput{}
  1155  	req = c.newRequest(op, input, output)
  1156  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1157  	return
  1158  }
  1159  
  1160  // DeletePermissionPolicy API operation for AWS WAFV2.
  1161  //
  1162  // Permanently deletes an IAM policy from the specified rule group.
  1163  //
  1164  // You must be the owner of the rule group to perform this operation.
  1165  //
  1166  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1167  // with awserr.Error's Code and Message methods to get detailed information about
  1168  // the error.
  1169  //
  1170  // See the AWS API reference guide for AWS WAFV2's
  1171  // API operation DeletePermissionPolicy for usage and error information.
  1172  //
  1173  // Returned Error Types:
  1174  //   * WAFNonexistentItemException
  1175  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  1176  //
  1177  //   * WAFInternalErrorException
  1178  //   Your request is valid, but WAF couldn’t perform the operation because of
  1179  //   a system problem. Retry your request.
  1180  //
  1181  //   * WAFInvalidParameterException
  1182  //   The operation failed because WAF didn't recognize a parameter in the request.
  1183  //   For example:
  1184  //
  1185  //      * You specified a parameter name or value that isn't valid.
  1186  //
  1187  //      * Your nested statement isn't valid. You might have tried to nest a statement
  1188  //      that can’t be nested.
  1189  //
  1190  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  1191  //      types available at DefaultAction.
  1192  //
  1193  //      * Your request references an ARN that is malformed, or corresponds to
  1194  //      a resource with which a web ACL can't be associated.
  1195  //
  1196  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeletePermissionPolicy
  1197  func (c *WAFV2) DeletePermissionPolicy(input *DeletePermissionPolicyInput) (*DeletePermissionPolicyOutput, error) {
  1198  	req, out := c.DeletePermissionPolicyRequest(input)
  1199  	return out, req.Send()
  1200  }
  1201  
  1202  // DeletePermissionPolicyWithContext is the same as DeletePermissionPolicy with the addition of
  1203  // the ability to pass a context and additional request options.
  1204  //
  1205  // See DeletePermissionPolicy for details on how to use this API operation.
  1206  //
  1207  // The context must be non-nil and will be used for request cancellation. If
  1208  // the context is nil a panic will occur. In the future the SDK may create
  1209  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1210  // for more information on using Contexts.
  1211  func (c *WAFV2) DeletePermissionPolicyWithContext(ctx aws.Context, input *DeletePermissionPolicyInput, opts ...request.Option) (*DeletePermissionPolicyOutput, error) {
  1212  	req, out := c.DeletePermissionPolicyRequest(input)
  1213  	req.SetContext(ctx)
  1214  	req.ApplyOptions(opts...)
  1215  	return out, req.Send()
  1216  }
  1217  
  1218  const opDeleteRegexPatternSet = "DeleteRegexPatternSet"
  1219  
  1220  // DeleteRegexPatternSetRequest generates a "aws/request.Request" representing the
  1221  // client's request for the DeleteRegexPatternSet operation. The "output" return
  1222  // value will be populated with the request's response once the request completes
  1223  // successfully.
  1224  //
  1225  // Use "Send" method on the returned Request to send the API call to the service.
  1226  // the "output" return value is not valid until after Send returns without error.
  1227  //
  1228  // See DeleteRegexPatternSet for more information on using the DeleteRegexPatternSet
  1229  // API call, and error handling.
  1230  //
  1231  // This method is useful when you want to inject custom logic or configuration
  1232  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1233  //
  1234  //
  1235  //    // Example sending a request using the DeleteRegexPatternSetRequest method.
  1236  //    req, resp := client.DeleteRegexPatternSetRequest(params)
  1237  //
  1238  //    err := req.Send()
  1239  //    if err == nil { // resp is now filled
  1240  //        fmt.Println(resp)
  1241  //    }
  1242  //
  1243  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeleteRegexPatternSet
  1244  func (c *WAFV2) DeleteRegexPatternSetRequest(input *DeleteRegexPatternSetInput) (req *request.Request, output *DeleteRegexPatternSetOutput) {
  1245  	op := &request.Operation{
  1246  		Name:       opDeleteRegexPatternSet,
  1247  		HTTPMethod: "POST",
  1248  		HTTPPath:   "/",
  1249  	}
  1250  
  1251  	if input == nil {
  1252  		input = &DeleteRegexPatternSetInput{}
  1253  	}
  1254  
  1255  	output = &DeleteRegexPatternSetOutput{}
  1256  	req = c.newRequest(op, input, output)
  1257  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1258  	return
  1259  }
  1260  
  1261  // DeleteRegexPatternSet API operation for AWS WAFV2.
  1262  //
  1263  // Deletes the specified RegexPatternSet.
  1264  //
  1265  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1266  // with awserr.Error's Code and Message methods to get detailed information about
  1267  // the error.
  1268  //
  1269  // See the AWS API reference guide for AWS WAFV2's
  1270  // API operation DeleteRegexPatternSet for usage and error information.
  1271  //
  1272  // Returned Error Types:
  1273  //   * WAFInternalErrorException
  1274  //   Your request is valid, but WAF couldn’t perform the operation because of
  1275  //   a system problem. Retry your request.
  1276  //
  1277  //   * WAFInvalidParameterException
  1278  //   The operation failed because WAF didn't recognize a parameter in the request.
  1279  //   For example:
  1280  //
  1281  //      * You specified a parameter name or value that isn't valid.
  1282  //
  1283  //      * Your nested statement isn't valid. You might have tried to nest a statement
  1284  //      that can’t be nested.
  1285  //
  1286  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  1287  //      types available at DefaultAction.
  1288  //
  1289  //      * Your request references an ARN that is malformed, or corresponds to
  1290  //      a resource with which a web ACL can't be associated.
  1291  //
  1292  //   * WAFNonexistentItemException
  1293  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  1294  //
  1295  //   * WAFOptimisticLockException
  1296  //   WAF couldn’t save your changes because you tried to update or delete a
  1297  //   resource that has changed since you last retrieved it. Get the resource again,
  1298  //   make any changes you need to make to the new copy, and retry your operation.
  1299  //
  1300  //   * WAFAssociatedItemException
  1301  //   WAF couldn’t perform the operation because your resource is being used
  1302  //   by another resource or it’s associated with another resource.
  1303  //
  1304  //   * WAFTagOperationException
  1305  //   An error occurred during the tagging operation. Retry your request.
  1306  //
  1307  //   * WAFTagOperationInternalErrorException
  1308  //   WAF couldn’t perform your tagging operation because of an internal error.
  1309  //   Retry your request.
  1310  //
  1311  //   * WAFInvalidOperationException
  1312  //   The operation isn't valid.
  1313  //
  1314  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeleteRegexPatternSet
  1315  func (c *WAFV2) DeleteRegexPatternSet(input *DeleteRegexPatternSetInput) (*DeleteRegexPatternSetOutput, error) {
  1316  	req, out := c.DeleteRegexPatternSetRequest(input)
  1317  	return out, req.Send()
  1318  }
  1319  
  1320  // DeleteRegexPatternSetWithContext is the same as DeleteRegexPatternSet with the addition of
  1321  // the ability to pass a context and additional request options.
  1322  //
  1323  // See DeleteRegexPatternSet for details on how to use this API operation.
  1324  //
  1325  // The context must be non-nil and will be used for request cancellation. If
  1326  // the context is nil a panic will occur. In the future the SDK may create
  1327  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1328  // for more information on using Contexts.
  1329  func (c *WAFV2) DeleteRegexPatternSetWithContext(ctx aws.Context, input *DeleteRegexPatternSetInput, opts ...request.Option) (*DeleteRegexPatternSetOutput, error) {
  1330  	req, out := c.DeleteRegexPatternSetRequest(input)
  1331  	req.SetContext(ctx)
  1332  	req.ApplyOptions(opts...)
  1333  	return out, req.Send()
  1334  }
  1335  
  1336  const opDeleteRuleGroup = "DeleteRuleGroup"
  1337  
  1338  // DeleteRuleGroupRequest generates a "aws/request.Request" representing the
  1339  // client's request for the DeleteRuleGroup operation. The "output" return
  1340  // value will be populated with the request's response once the request completes
  1341  // successfully.
  1342  //
  1343  // Use "Send" method on the returned Request to send the API call to the service.
  1344  // the "output" return value is not valid until after Send returns without error.
  1345  //
  1346  // See DeleteRuleGroup for more information on using the DeleteRuleGroup
  1347  // API call, and error handling.
  1348  //
  1349  // This method is useful when you want to inject custom logic or configuration
  1350  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1351  //
  1352  //
  1353  //    // Example sending a request using the DeleteRuleGroupRequest method.
  1354  //    req, resp := client.DeleteRuleGroupRequest(params)
  1355  //
  1356  //    err := req.Send()
  1357  //    if err == nil { // resp is now filled
  1358  //        fmt.Println(resp)
  1359  //    }
  1360  //
  1361  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeleteRuleGroup
  1362  func (c *WAFV2) DeleteRuleGroupRequest(input *DeleteRuleGroupInput) (req *request.Request, output *DeleteRuleGroupOutput) {
  1363  	op := &request.Operation{
  1364  		Name:       opDeleteRuleGroup,
  1365  		HTTPMethod: "POST",
  1366  		HTTPPath:   "/",
  1367  	}
  1368  
  1369  	if input == nil {
  1370  		input = &DeleteRuleGroupInput{}
  1371  	}
  1372  
  1373  	output = &DeleteRuleGroupOutput{}
  1374  	req = c.newRequest(op, input, output)
  1375  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1376  	return
  1377  }
  1378  
  1379  // DeleteRuleGroup API operation for AWS WAFV2.
  1380  //
  1381  // Deletes the specified RuleGroup.
  1382  //
  1383  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1384  // with awserr.Error's Code and Message methods to get detailed information about
  1385  // the error.
  1386  //
  1387  // See the AWS API reference guide for AWS WAFV2's
  1388  // API operation DeleteRuleGroup for usage and error information.
  1389  //
  1390  // Returned Error Types:
  1391  //   * WAFInternalErrorException
  1392  //   Your request is valid, but WAF couldn’t perform the operation because of
  1393  //   a system problem. Retry your request.
  1394  //
  1395  //   * WAFInvalidParameterException
  1396  //   The operation failed because WAF didn't recognize a parameter in the request.
  1397  //   For example:
  1398  //
  1399  //      * You specified a parameter name or value that isn't valid.
  1400  //
  1401  //      * Your nested statement isn't valid. You might have tried to nest a statement
  1402  //      that can’t be nested.
  1403  //
  1404  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  1405  //      types available at DefaultAction.
  1406  //
  1407  //      * Your request references an ARN that is malformed, or corresponds to
  1408  //      a resource with which a web ACL can't be associated.
  1409  //
  1410  //   * WAFNonexistentItemException
  1411  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  1412  //
  1413  //   * WAFOptimisticLockException
  1414  //   WAF couldn’t save your changes because you tried to update or delete a
  1415  //   resource that has changed since you last retrieved it. Get the resource again,
  1416  //   make any changes you need to make to the new copy, and retry your operation.
  1417  //
  1418  //   * WAFAssociatedItemException
  1419  //   WAF couldn’t perform the operation because your resource is being used
  1420  //   by another resource or it’s associated with another resource.
  1421  //
  1422  //   * WAFTagOperationException
  1423  //   An error occurred during the tagging operation. Retry your request.
  1424  //
  1425  //   * WAFTagOperationInternalErrorException
  1426  //   WAF couldn’t perform your tagging operation because of an internal error.
  1427  //   Retry your request.
  1428  //
  1429  //   * WAFInvalidOperationException
  1430  //   The operation isn't valid.
  1431  //
  1432  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeleteRuleGroup
  1433  func (c *WAFV2) DeleteRuleGroup(input *DeleteRuleGroupInput) (*DeleteRuleGroupOutput, error) {
  1434  	req, out := c.DeleteRuleGroupRequest(input)
  1435  	return out, req.Send()
  1436  }
  1437  
  1438  // DeleteRuleGroupWithContext is the same as DeleteRuleGroup with the addition of
  1439  // the ability to pass a context and additional request options.
  1440  //
  1441  // See DeleteRuleGroup for details on how to use this API operation.
  1442  //
  1443  // The context must be non-nil and will be used for request cancellation. If
  1444  // the context is nil a panic will occur. In the future the SDK may create
  1445  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1446  // for more information on using Contexts.
  1447  func (c *WAFV2) DeleteRuleGroupWithContext(ctx aws.Context, input *DeleteRuleGroupInput, opts ...request.Option) (*DeleteRuleGroupOutput, error) {
  1448  	req, out := c.DeleteRuleGroupRequest(input)
  1449  	req.SetContext(ctx)
  1450  	req.ApplyOptions(opts...)
  1451  	return out, req.Send()
  1452  }
  1453  
  1454  const opDeleteWebACL = "DeleteWebACL"
  1455  
  1456  // DeleteWebACLRequest generates a "aws/request.Request" representing the
  1457  // client's request for the DeleteWebACL operation. The "output" return
  1458  // value will be populated with the request's response once the request completes
  1459  // successfully.
  1460  //
  1461  // Use "Send" method on the returned Request to send the API call to the service.
  1462  // the "output" return value is not valid until after Send returns without error.
  1463  //
  1464  // See DeleteWebACL for more information on using the DeleteWebACL
  1465  // API call, and error handling.
  1466  //
  1467  // This method is useful when you want to inject custom logic or configuration
  1468  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1469  //
  1470  //
  1471  //    // Example sending a request using the DeleteWebACLRequest method.
  1472  //    req, resp := client.DeleteWebACLRequest(params)
  1473  //
  1474  //    err := req.Send()
  1475  //    if err == nil { // resp is now filled
  1476  //        fmt.Println(resp)
  1477  //    }
  1478  //
  1479  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeleteWebACL
  1480  func (c *WAFV2) DeleteWebACLRequest(input *DeleteWebACLInput) (req *request.Request, output *DeleteWebACLOutput) {
  1481  	op := &request.Operation{
  1482  		Name:       opDeleteWebACL,
  1483  		HTTPMethod: "POST",
  1484  		HTTPPath:   "/",
  1485  	}
  1486  
  1487  	if input == nil {
  1488  		input = &DeleteWebACLInput{}
  1489  	}
  1490  
  1491  	output = &DeleteWebACLOutput{}
  1492  	req = c.newRequest(op, input, output)
  1493  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1494  	return
  1495  }
  1496  
  1497  // DeleteWebACL API operation for AWS WAFV2.
  1498  //
  1499  // Deletes the specified WebACL.
  1500  //
  1501  // You can only use this if ManagedByFirewallManager is false in the specified
  1502  // WebACL.
  1503  //
  1504  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1505  // with awserr.Error's Code and Message methods to get detailed information about
  1506  // the error.
  1507  //
  1508  // See the AWS API reference guide for AWS WAFV2's
  1509  // API operation DeleteWebACL for usage and error information.
  1510  //
  1511  // Returned Error Types:
  1512  //   * WAFInternalErrorException
  1513  //   Your request is valid, but WAF couldn’t perform the operation because of
  1514  //   a system problem. Retry your request.
  1515  //
  1516  //   * WAFInvalidParameterException
  1517  //   The operation failed because WAF didn't recognize a parameter in the request.
  1518  //   For example:
  1519  //
  1520  //      * You specified a parameter name or value that isn't valid.
  1521  //
  1522  //      * Your nested statement isn't valid. You might have tried to nest a statement
  1523  //      that can’t be nested.
  1524  //
  1525  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  1526  //      types available at DefaultAction.
  1527  //
  1528  //      * Your request references an ARN that is malformed, or corresponds to
  1529  //      a resource with which a web ACL can't be associated.
  1530  //
  1531  //   * WAFNonexistentItemException
  1532  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  1533  //
  1534  //   * WAFOptimisticLockException
  1535  //   WAF couldn’t save your changes because you tried to update or delete a
  1536  //   resource that has changed since you last retrieved it. Get the resource again,
  1537  //   make any changes you need to make to the new copy, and retry your operation.
  1538  //
  1539  //   * WAFAssociatedItemException
  1540  //   WAF couldn’t perform the operation because your resource is being used
  1541  //   by another resource or it’s associated with another resource.
  1542  //
  1543  //   * WAFTagOperationException
  1544  //   An error occurred during the tagging operation. Retry your request.
  1545  //
  1546  //   * WAFTagOperationInternalErrorException
  1547  //   WAF couldn’t perform your tagging operation because of an internal error.
  1548  //   Retry your request.
  1549  //
  1550  //   * WAFInvalidOperationException
  1551  //   The operation isn't valid.
  1552  //
  1553  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DeleteWebACL
  1554  func (c *WAFV2) DeleteWebACL(input *DeleteWebACLInput) (*DeleteWebACLOutput, error) {
  1555  	req, out := c.DeleteWebACLRequest(input)
  1556  	return out, req.Send()
  1557  }
  1558  
  1559  // DeleteWebACLWithContext is the same as DeleteWebACL with the addition of
  1560  // the ability to pass a context and additional request options.
  1561  //
  1562  // See DeleteWebACL for details on how to use this API operation.
  1563  //
  1564  // The context must be non-nil and will be used for request cancellation. If
  1565  // the context is nil a panic will occur. In the future the SDK may create
  1566  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1567  // for more information on using Contexts.
  1568  func (c *WAFV2) DeleteWebACLWithContext(ctx aws.Context, input *DeleteWebACLInput, opts ...request.Option) (*DeleteWebACLOutput, error) {
  1569  	req, out := c.DeleteWebACLRequest(input)
  1570  	req.SetContext(ctx)
  1571  	req.ApplyOptions(opts...)
  1572  	return out, req.Send()
  1573  }
  1574  
  1575  const opDescribeManagedRuleGroup = "DescribeManagedRuleGroup"
  1576  
  1577  // DescribeManagedRuleGroupRequest generates a "aws/request.Request" representing the
  1578  // client's request for the DescribeManagedRuleGroup operation. The "output" return
  1579  // value will be populated with the request's response once the request completes
  1580  // successfully.
  1581  //
  1582  // Use "Send" method on the returned Request to send the API call to the service.
  1583  // the "output" return value is not valid until after Send returns without error.
  1584  //
  1585  // See DescribeManagedRuleGroup for more information on using the DescribeManagedRuleGroup
  1586  // API call, and error handling.
  1587  //
  1588  // This method is useful when you want to inject custom logic or configuration
  1589  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1590  //
  1591  //
  1592  //    // Example sending a request using the DescribeManagedRuleGroupRequest method.
  1593  //    req, resp := client.DescribeManagedRuleGroupRequest(params)
  1594  //
  1595  //    err := req.Send()
  1596  //    if err == nil { // resp is now filled
  1597  //        fmt.Println(resp)
  1598  //    }
  1599  //
  1600  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DescribeManagedRuleGroup
  1601  func (c *WAFV2) DescribeManagedRuleGroupRequest(input *DescribeManagedRuleGroupInput) (req *request.Request, output *DescribeManagedRuleGroupOutput) {
  1602  	op := &request.Operation{
  1603  		Name:       opDescribeManagedRuleGroup,
  1604  		HTTPMethod: "POST",
  1605  		HTTPPath:   "/",
  1606  	}
  1607  
  1608  	if input == nil {
  1609  		input = &DescribeManagedRuleGroupInput{}
  1610  	}
  1611  
  1612  	output = &DescribeManagedRuleGroupOutput{}
  1613  	req = c.newRequest(op, input, output)
  1614  	return
  1615  }
  1616  
  1617  // DescribeManagedRuleGroup API operation for AWS WAFV2.
  1618  //
  1619  // Provides high-level information for a managed rule group, including descriptions
  1620  // of the rules.
  1621  //
  1622  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1623  // with awserr.Error's Code and Message methods to get detailed information about
  1624  // the error.
  1625  //
  1626  // See the AWS API reference guide for AWS WAFV2's
  1627  // API operation DescribeManagedRuleGroup for usage and error information.
  1628  //
  1629  // Returned Error Types:
  1630  //   * WAFInternalErrorException
  1631  //   Your request is valid, but WAF couldn’t perform the operation because of
  1632  //   a system problem. Retry your request.
  1633  //
  1634  //   * WAFInvalidParameterException
  1635  //   The operation failed because WAF didn't recognize a parameter in the request.
  1636  //   For example:
  1637  //
  1638  //      * You specified a parameter name or value that isn't valid.
  1639  //
  1640  //      * Your nested statement isn't valid. You might have tried to nest a statement
  1641  //      that can’t be nested.
  1642  //
  1643  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  1644  //      types available at DefaultAction.
  1645  //
  1646  //      * Your request references an ARN that is malformed, or corresponds to
  1647  //      a resource with which a web ACL can't be associated.
  1648  //
  1649  //   * WAFInvalidResourceException
  1650  //   WAF couldn’t perform the operation because the resource that you requested
  1651  //   isn’t valid. Check the resource, and try again.
  1652  //
  1653  //   * WAFNonexistentItemException
  1654  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  1655  //
  1656  //   * WAFInvalidOperationException
  1657  //   The operation isn't valid.
  1658  //
  1659  //   * WAFExpiredManagedRuleGroupVersionException
  1660  //   The operation failed because the specified version for the managed rule group
  1661  //   has expired. You can retrieve the available versions for the managed rule
  1662  //   group by calling ListAvailableManagedRuleGroupVersions.
  1663  //
  1664  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DescribeManagedRuleGroup
  1665  func (c *WAFV2) DescribeManagedRuleGroup(input *DescribeManagedRuleGroupInput) (*DescribeManagedRuleGroupOutput, error) {
  1666  	req, out := c.DescribeManagedRuleGroupRequest(input)
  1667  	return out, req.Send()
  1668  }
  1669  
  1670  // DescribeManagedRuleGroupWithContext is the same as DescribeManagedRuleGroup with the addition of
  1671  // the ability to pass a context and additional request options.
  1672  //
  1673  // See DescribeManagedRuleGroup for details on how to use this API operation.
  1674  //
  1675  // The context must be non-nil and will be used for request cancellation. If
  1676  // the context is nil a panic will occur. In the future the SDK may create
  1677  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1678  // for more information on using Contexts.
  1679  func (c *WAFV2) DescribeManagedRuleGroupWithContext(ctx aws.Context, input *DescribeManagedRuleGroupInput, opts ...request.Option) (*DescribeManagedRuleGroupOutput, error) {
  1680  	req, out := c.DescribeManagedRuleGroupRequest(input)
  1681  	req.SetContext(ctx)
  1682  	req.ApplyOptions(opts...)
  1683  	return out, req.Send()
  1684  }
  1685  
  1686  const opDisassociateWebACL = "DisassociateWebACL"
  1687  
  1688  // DisassociateWebACLRequest generates a "aws/request.Request" representing the
  1689  // client's request for the DisassociateWebACL operation. The "output" return
  1690  // value will be populated with the request's response once the request completes
  1691  // successfully.
  1692  //
  1693  // Use "Send" method on the returned Request to send the API call to the service.
  1694  // the "output" return value is not valid until after Send returns without error.
  1695  //
  1696  // See DisassociateWebACL for more information on using the DisassociateWebACL
  1697  // API call, and error handling.
  1698  //
  1699  // This method is useful when you want to inject custom logic or configuration
  1700  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1701  //
  1702  //
  1703  //    // Example sending a request using the DisassociateWebACLRequest method.
  1704  //    req, resp := client.DisassociateWebACLRequest(params)
  1705  //
  1706  //    err := req.Send()
  1707  //    if err == nil { // resp is now filled
  1708  //        fmt.Println(resp)
  1709  //    }
  1710  //
  1711  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DisassociateWebACL
  1712  func (c *WAFV2) DisassociateWebACLRequest(input *DisassociateWebACLInput) (req *request.Request, output *DisassociateWebACLOutput) {
  1713  	op := &request.Operation{
  1714  		Name:       opDisassociateWebACL,
  1715  		HTTPMethod: "POST",
  1716  		HTTPPath:   "/",
  1717  	}
  1718  
  1719  	if input == nil {
  1720  		input = &DisassociateWebACLInput{}
  1721  	}
  1722  
  1723  	output = &DisassociateWebACLOutput{}
  1724  	req = c.newRequest(op, input, output)
  1725  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1726  	return
  1727  }
  1728  
  1729  // DisassociateWebACL API operation for AWS WAFV2.
  1730  //
  1731  // Disassociates a web ACL from a regional application resource. A regional
  1732  // application can be an Application Load Balancer (ALB), an Amazon API Gateway
  1733  // REST API, or an AppSync GraphQL API.
  1734  //
  1735  // For Amazon CloudFront, don't use this call. Instead, use your CloudFront
  1736  // distribution configuration. To disassociate a web ACL, provide an empty web
  1737  // ACL ID in the CloudFront call UpdateDistribution. For information, see UpdateDistribution
  1738  // (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html).
  1739  //
  1740  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1741  // with awserr.Error's Code and Message methods to get detailed information about
  1742  // the error.
  1743  //
  1744  // See the AWS API reference guide for AWS WAFV2's
  1745  // API operation DisassociateWebACL for usage and error information.
  1746  //
  1747  // Returned Error Types:
  1748  //   * WAFInternalErrorException
  1749  //   Your request is valid, but WAF couldn’t perform the operation because of
  1750  //   a system problem. Retry your request.
  1751  //
  1752  //   * WAFInvalidParameterException
  1753  //   The operation failed because WAF didn't recognize a parameter in the request.
  1754  //   For example:
  1755  //
  1756  //      * You specified a parameter name or value that isn't valid.
  1757  //
  1758  //      * Your nested statement isn't valid. You might have tried to nest a statement
  1759  //      that can’t be nested.
  1760  //
  1761  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  1762  //      types available at DefaultAction.
  1763  //
  1764  //      * Your request references an ARN that is malformed, or corresponds to
  1765  //      a resource with which a web ACL can't be associated.
  1766  //
  1767  //   * WAFNonexistentItemException
  1768  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  1769  //
  1770  //   * WAFInvalidOperationException
  1771  //   The operation isn't valid.
  1772  //
  1773  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/DisassociateWebACL
  1774  func (c *WAFV2) DisassociateWebACL(input *DisassociateWebACLInput) (*DisassociateWebACLOutput, error) {
  1775  	req, out := c.DisassociateWebACLRequest(input)
  1776  	return out, req.Send()
  1777  }
  1778  
  1779  // DisassociateWebACLWithContext is the same as DisassociateWebACL with the addition of
  1780  // the ability to pass a context and additional request options.
  1781  //
  1782  // See DisassociateWebACL for details on how to use this API operation.
  1783  //
  1784  // The context must be non-nil and will be used for request cancellation. If
  1785  // the context is nil a panic will occur. In the future the SDK may create
  1786  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1787  // for more information on using Contexts.
  1788  func (c *WAFV2) DisassociateWebACLWithContext(ctx aws.Context, input *DisassociateWebACLInput, opts ...request.Option) (*DisassociateWebACLOutput, error) {
  1789  	req, out := c.DisassociateWebACLRequest(input)
  1790  	req.SetContext(ctx)
  1791  	req.ApplyOptions(opts...)
  1792  	return out, req.Send()
  1793  }
  1794  
  1795  const opGetIPSet = "GetIPSet"
  1796  
  1797  // GetIPSetRequest generates a "aws/request.Request" representing the
  1798  // client's request for the GetIPSet operation. The "output" return
  1799  // value will be populated with the request's response once the request completes
  1800  // successfully.
  1801  //
  1802  // Use "Send" method on the returned Request to send the API call to the service.
  1803  // the "output" return value is not valid until after Send returns without error.
  1804  //
  1805  // See GetIPSet for more information on using the GetIPSet
  1806  // API call, and error handling.
  1807  //
  1808  // This method is useful when you want to inject custom logic or configuration
  1809  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1810  //
  1811  //
  1812  //    // Example sending a request using the GetIPSetRequest method.
  1813  //    req, resp := client.GetIPSetRequest(params)
  1814  //
  1815  //    err := req.Send()
  1816  //    if err == nil { // resp is now filled
  1817  //        fmt.Println(resp)
  1818  //    }
  1819  //
  1820  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetIPSet
  1821  func (c *WAFV2) GetIPSetRequest(input *GetIPSetInput) (req *request.Request, output *GetIPSetOutput) {
  1822  	op := &request.Operation{
  1823  		Name:       opGetIPSet,
  1824  		HTTPMethod: "POST",
  1825  		HTTPPath:   "/",
  1826  	}
  1827  
  1828  	if input == nil {
  1829  		input = &GetIPSetInput{}
  1830  	}
  1831  
  1832  	output = &GetIPSetOutput{}
  1833  	req = c.newRequest(op, input, output)
  1834  	return
  1835  }
  1836  
  1837  // GetIPSet API operation for AWS WAFV2.
  1838  //
  1839  // Retrieves the specified IPSet.
  1840  //
  1841  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1842  // with awserr.Error's Code and Message methods to get detailed information about
  1843  // the error.
  1844  //
  1845  // See the AWS API reference guide for AWS WAFV2's
  1846  // API operation GetIPSet for usage and error information.
  1847  //
  1848  // Returned Error Types:
  1849  //   * WAFInternalErrorException
  1850  //   Your request is valid, but WAF couldn’t perform the operation because of
  1851  //   a system problem. Retry your request.
  1852  //
  1853  //   * WAFInvalidParameterException
  1854  //   The operation failed because WAF didn't recognize a parameter in the request.
  1855  //   For example:
  1856  //
  1857  //      * You specified a parameter name or value that isn't valid.
  1858  //
  1859  //      * Your nested statement isn't valid. You might have tried to nest a statement
  1860  //      that can’t be nested.
  1861  //
  1862  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  1863  //      types available at DefaultAction.
  1864  //
  1865  //      * Your request references an ARN that is malformed, or corresponds to
  1866  //      a resource with which a web ACL can't be associated.
  1867  //
  1868  //   * WAFNonexistentItemException
  1869  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  1870  //
  1871  //   * WAFInvalidOperationException
  1872  //   The operation isn't valid.
  1873  //
  1874  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetIPSet
  1875  func (c *WAFV2) GetIPSet(input *GetIPSetInput) (*GetIPSetOutput, error) {
  1876  	req, out := c.GetIPSetRequest(input)
  1877  	return out, req.Send()
  1878  }
  1879  
  1880  // GetIPSetWithContext is the same as GetIPSet with the addition of
  1881  // the ability to pass a context and additional request options.
  1882  //
  1883  // See GetIPSet for details on how to use this API operation.
  1884  //
  1885  // The context must be non-nil and will be used for request cancellation. If
  1886  // the context is nil a panic will occur. In the future the SDK may create
  1887  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1888  // for more information on using Contexts.
  1889  func (c *WAFV2) GetIPSetWithContext(ctx aws.Context, input *GetIPSetInput, opts ...request.Option) (*GetIPSetOutput, error) {
  1890  	req, out := c.GetIPSetRequest(input)
  1891  	req.SetContext(ctx)
  1892  	req.ApplyOptions(opts...)
  1893  	return out, req.Send()
  1894  }
  1895  
  1896  const opGetLoggingConfiguration = "GetLoggingConfiguration"
  1897  
  1898  // GetLoggingConfigurationRequest generates a "aws/request.Request" representing the
  1899  // client's request for the GetLoggingConfiguration operation. The "output" return
  1900  // value will be populated with the request's response once the request completes
  1901  // successfully.
  1902  //
  1903  // Use "Send" method on the returned Request to send the API call to the service.
  1904  // the "output" return value is not valid until after Send returns without error.
  1905  //
  1906  // See GetLoggingConfiguration for more information on using the GetLoggingConfiguration
  1907  // API call, and error handling.
  1908  //
  1909  // This method is useful when you want to inject custom logic or configuration
  1910  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1911  //
  1912  //
  1913  //    // Example sending a request using the GetLoggingConfigurationRequest method.
  1914  //    req, resp := client.GetLoggingConfigurationRequest(params)
  1915  //
  1916  //    err := req.Send()
  1917  //    if err == nil { // resp is now filled
  1918  //        fmt.Println(resp)
  1919  //    }
  1920  //
  1921  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetLoggingConfiguration
  1922  func (c *WAFV2) GetLoggingConfigurationRequest(input *GetLoggingConfigurationInput) (req *request.Request, output *GetLoggingConfigurationOutput) {
  1923  	op := &request.Operation{
  1924  		Name:       opGetLoggingConfiguration,
  1925  		HTTPMethod: "POST",
  1926  		HTTPPath:   "/",
  1927  	}
  1928  
  1929  	if input == nil {
  1930  		input = &GetLoggingConfigurationInput{}
  1931  	}
  1932  
  1933  	output = &GetLoggingConfigurationOutput{}
  1934  	req = c.newRequest(op, input, output)
  1935  	return
  1936  }
  1937  
  1938  // GetLoggingConfiguration API operation for AWS WAFV2.
  1939  //
  1940  // Returns the LoggingConfiguration for the specified web ACL.
  1941  //
  1942  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1943  // with awserr.Error's Code and Message methods to get detailed information about
  1944  // the error.
  1945  //
  1946  // See the AWS API reference guide for AWS WAFV2's
  1947  // API operation GetLoggingConfiguration for usage and error information.
  1948  //
  1949  // Returned Error Types:
  1950  //   * WAFInternalErrorException
  1951  //   Your request is valid, but WAF couldn’t perform the operation because of
  1952  //   a system problem. Retry your request.
  1953  //
  1954  //   * WAFNonexistentItemException
  1955  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  1956  //
  1957  //   * WAFInvalidParameterException
  1958  //   The operation failed because WAF didn't recognize a parameter in the request.
  1959  //   For example:
  1960  //
  1961  //      * You specified a parameter name or value that isn't valid.
  1962  //
  1963  //      * Your nested statement isn't valid. You might have tried to nest a statement
  1964  //      that can’t be nested.
  1965  //
  1966  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  1967  //      types available at DefaultAction.
  1968  //
  1969  //      * Your request references an ARN that is malformed, or corresponds to
  1970  //      a resource with which a web ACL can't be associated.
  1971  //
  1972  //   * WAFInvalidOperationException
  1973  //   The operation isn't valid.
  1974  //
  1975  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetLoggingConfiguration
  1976  func (c *WAFV2) GetLoggingConfiguration(input *GetLoggingConfigurationInput) (*GetLoggingConfigurationOutput, error) {
  1977  	req, out := c.GetLoggingConfigurationRequest(input)
  1978  	return out, req.Send()
  1979  }
  1980  
  1981  // GetLoggingConfigurationWithContext is the same as GetLoggingConfiguration with the addition of
  1982  // the ability to pass a context and additional request options.
  1983  //
  1984  // See GetLoggingConfiguration for details on how to use this API operation.
  1985  //
  1986  // The context must be non-nil and will be used for request cancellation. If
  1987  // the context is nil a panic will occur. In the future the SDK may create
  1988  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1989  // for more information on using Contexts.
  1990  func (c *WAFV2) GetLoggingConfigurationWithContext(ctx aws.Context, input *GetLoggingConfigurationInput, opts ...request.Option) (*GetLoggingConfigurationOutput, error) {
  1991  	req, out := c.GetLoggingConfigurationRequest(input)
  1992  	req.SetContext(ctx)
  1993  	req.ApplyOptions(opts...)
  1994  	return out, req.Send()
  1995  }
  1996  
  1997  const opGetManagedRuleSet = "GetManagedRuleSet"
  1998  
  1999  // GetManagedRuleSetRequest generates a "aws/request.Request" representing the
  2000  // client's request for the GetManagedRuleSet operation. The "output" return
  2001  // value will be populated with the request's response once the request completes
  2002  // successfully.
  2003  //
  2004  // Use "Send" method on the returned Request to send the API call to the service.
  2005  // the "output" return value is not valid until after Send returns without error.
  2006  //
  2007  // See GetManagedRuleSet for more information on using the GetManagedRuleSet
  2008  // API call, and error handling.
  2009  //
  2010  // This method is useful when you want to inject custom logic or configuration
  2011  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2012  //
  2013  //
  2014  //    // Example sending a request using the GetManagedRuleSetRequest method.
  2015  //    req, resp := client.GetManagedRuleSetRequest(params)
  2016  //
  2017  //    err := req.Send()
  2018  //    if err == nil { // resp is now filled
  2019  //        fmt.Println(resp)
  2020  //    }
  2021  //
  2022  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetManagedRuleSet
  2023  func (c *WAFV2) GetManagedRuleSetRequest(input *GetManagedRuleSetInput) (req *request.Request, output *GetManagedRuleSetOutput) {
  2024  	op := &request.Operation{
  2025  		Name:       opGetManagedRuleSet,
  2026  		HTTPMethod: "POST",
  2027  		HTTPPath:   "/",
  2028  	}
  2029  
  2030  	if input == nil {
  2031  		input = &GetManagedRuleSetInput{}
  2032  	}
  2033  
  2034  	output = &GetManagedRuleSetOutput{}
  2035  	req = c.newRequest(op, input, output)
  2036  	return
  2037  }
  2038  
  2039  // GetManagedRuleSet API operation for AWS WAFV2.
  2040  //
  2041  // Retrieves the specified managed rule set.
  2042  //
  2043  // This is intended for use only by vendors of managed rule sets. Vendors are
  2044  // Amazon Web Services and Amazon Web Services Marketplace sellers.
  2045  //
  2046  // Vendors, you can use the managed rule set APIs to provide controlled rollout
  2047  // of your versioned managed rule group offerings for your customers. The APIs
  2048  // are ListManagedRuleSets, GetManagedRuleSet, PutManagedRuleSetVersions, and
  2049  // UpdateManagedRuleSetVersionExpiryDate.
  2050  //
  2051  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2052  // with awserr.Error's Code and Message methods to get detailed information about
  2053  // the error.
  2054  //
  2055  // See the AWS API reference guide for AWS WAFV2's
  2056  // API operation GetManagedRuleSet for usage and error information.
  2057  //
  2058  // Returned Error Types:
  2059  //   * WAFInternalErrorException
  2060  //   Your request is valid, but WAF couldn’t perform the operation because of
  2061  //   a system problem. Retry your request.
  2062  //
  2063  //   * WAFInvalidParameterException
  2064  //   The operation failed because WAF didn't recognize a parameter in the request.
  2065  //   For example:
  2066  //
  2067  //      * You specified a parameter name or value that isn't valid.
  2068  //
  2069  //      * Your nested statement isn't valid. You might have tried to nest a statement
  2070  //      that can’t be nested.
  2071  //
  2072  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  2073  //      types available at DefaultAction.
  2074  //
  2075  //      * Your request references an ARN that is malformed, or corresponds to
  2076  //      a resource with which a web ACL can't be associated.
  2077  //
  2078  //   * WAFNonexistentItemException
  2079  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  2080  //
  2081  //   * WAFInvalidOperationException
  2082  //   The operation isn't valid.
  2083  //
  2084  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetManagedRuleSet
  2085  func (c *WAFV2) GetManagedRuleSet(input *GetManagedRuleSetInput) (*GetManagedRuleSetOutput, error) {
  2086  	req, out := c.GetManagedRuleSetRequest(input)
  2087  	return out, req.Send()
  2088  }
  2089  
  2090  // GetManagedRuleSetWithContext is the same as GetManagedRuleSet with the addition of
  2091  // the ability to pass a context and additional request options.
  2092  //
  2093  // See GetManagedRuleSet for details on how to use this API operation.
  2094  //
  2095  // The context must be non-nil and will be used for request cancellation. If
  2096  // the context is nil a panic will occur. In the future the SDK may create
  2097  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2098  // for more information on using Contexts.
  2099  func (c *WAFV2) GetManagedRuleSetWithContext(ctx aws.Context, input *GetManagedRuleSetInput, opts ...request.Option) (*GetManagedRuleSetOutput, error) {
  2100  	req, out := c.GetManagedRuleSetRequest(input)
  2101  	req.SetContext(ctx)
  2102  	req.ApplyOptions(opts...)
  2103  	return out, req.Send()
  2104  }
  2105  
  2106  const opGetPermissionPolicy = "GetPermissionPolicy"
  2107  
  2108  // GetPermissionPolicyRequest generates a "aws/request.Request" representing the
  2109  // client's request for the GetPermissionPolicy operation. The "output" return
  2110  // value will be populated with the request's response once the request completes
  2111  // successfully.
  2112  //
  2113  // Use "Send" method on the returned Request to send the API call to the service.
  2114  // the "output" return value is not valid until after Send returns without error.
  2115  //
  2116  // See GetPermissionPolicy for more information on using the GetPermissionPolicy
  2117  // API call, and error handling.
  2118  //
  2119  // This method is useful when you want to inject custom logic or configuration
  2120  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2121  //
  2122  //
  2123  //    // Example sending a request using the GetPermissionPolicyRequest method.
  2124  //    req, resp := client.GetPermissionPolicyRequest(params)
  2125  //
  2126  //    err := req.Send()
  2127  //    if err == nil { // resp is now filled
  2128  //        fmt.Println(resp)
  2129  //    }
  2130  //
  2131  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetPermissionPolicy
  2132  func (c *WAFV2) GetPermissionPolicyRequest(input *GetPermissionPolicyInput) (req *request.Request, output *GetPermissionPolicyOutput) {
  2133  	op := &request.Operation{
  2134  		Name:       opGetPermissionPolicy,
  2135  		HTTPMethod: "POST",
  2136  		HTTPPath:   "/",
  2137  	}
  2138  
  2139  	if input == nil {
  2140  		input = &GetPermissionPolicyInput{}
  2141  	}
  2142  
  2143  	output = &GetPermissionPolicyOutput{}
  2144  	req = c.newRequest(op, input, output)
  2145  	return
  2146  }
  2147  
  2148  // GetPermissionPolicy API operation for AWS WAFV2.
  2149  //
  2150  // Returns the IAM policy that is attached to the specified rule group.
  2151  //
  2152  // You must be the owner of the rule group to perform this operation.
  2153  //
  2154  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2155  // with awserr.Error's Code and Message methods to get detailed information about
  2156  // the error.
  2157  //
  2158  // See the AWS API reference guide for AWS WAFV2's
  2159  // API operation GetPermissionPolicy for usage and error information.
  2160  //
  2161  // Returned Error Types:
  2162  //   * WAFNonexistentItemException
  2163  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  2164  //
  2165  //   * WAFInternalErrorException
  2166  //   Your request is valid, but WAF couldn’t perform the operation because of
  2167  //   a system problem. Retry your request.
  2168  //
  2169  //   * WAFInvalidParameterException
  2170  //   The operation failed because WAF didn't recognize a parameter in the request.
  2171  //   For example:
  2172  //
  2173  //      * You specified a parameter name or value that isn't valid.
  2174  //
  2175  //      * Your nested statement isn't valid. You might have tried to nest a statement
  2176  //      that can’t be nested.
  2177  //
  2178  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  2179  //      types available at DefaultAction.
  2180  //
  2181  //      * Your request references an ARN that is malformed, or corresponds to
  2182  //      a resource with which a web ACL can't be associated.
  2183  //
  2184  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetPermissionPolicy
  2185  func (c *WAFV2) GetPermissionPolicy(input *GetPermissionPolicyInput) (*GetPermissionPolicyOutput, error) {
  2186  	req, out := c.GetPermissionPolicyRequest(input)
  2187  	return out, req.Send()
  2188  }
  2189  
  2190  // GetPermissionPolicyWithContext is the same as GetPermissionPolicy with the addition of
  2191  // the ability to pass a context and additional request options.
  2192  //
  2193  // See GetPermissionPolicy for details on how to use this API operation.
  2194  //
  2195  // The context must be non-nil and will be used for request cancellation. If
  2196  // the context is nil a panic will occur. In the future the SDK may create
  2197  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2198  // for more information on using Contexts.
  2199  func (c *WAFV2) GetPermissionPolicyWithContext(ctx aws.Context, input *GetPermissionPolicyInput, opts ...request.Option) (*GetPermissionPolicyOutput, error) {
  2200  	req, out := c.GetPermissionPolicyRequest(input)
  2201  	req.SetContext(ctx)
  2202  	req.ApplyOptions(opts...)
  2203  	return out, req.Send()
  2204  }
  2205  
  2206  const opGetRateBasedStatementManagedKeys = "GetRateBasedStatementManagedKeys"
  2207  
  2208  // GetRateBasedStatementManagedKeysRequest generates a "aws/request.Request" representing the
  2209  // client's request for the GetRateBasedStatementManagedKeys operation. The "output" return
  2210  // value will be populated with the request's response once the request completes
  2211  // successfully.
  2212  //
  2213  // Use "Send" method on the returned Request to send the API call to the service.
  2214  // the "output" return value is not valid until after Send returns without error.
  2215  //
  2216  // See GetRateBasedStatementManagedKeys for more information on using the GetRateBasedStatementManagedKeys
  2217  // API call, and error handling.
  2218  //
  2219  // This method is useful when you want to inject custom logic or configuration
  2220  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2221  //
  2222  //
  2223  //    // Example sending a request using the GetRateBasedStatementManagedKeysRequest method.
  2224  //    req, resp := client.GetRateBasedStatementManagedKeysRequest(params)
  2225  //
  2226  //    err := req.Send()
  2227  //    if err == nil { // resp is now filled
  2228  //        fmt.Println(resp)
  2229  //    }
  2230  //
  2231  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetRateBasedStatementManagedKeys
  2232  func (c *WAFV2) GetRateBasedStatementManagedKeysRequest(input *GetRateBasedStatementManagedKeysInput) (req *request.Request, output *GetRateBasedStatementManagedKeysOutput) {
  2233  	op := &request.Operation{
  2234  		Name:       opGetRateBasedStatementManagedKeys,
  2235  		HTTPMethod: "POST",
  2236  		HTTPPath:   "/",
  2237  	}
  2238  
  2239  	if input == nil {
  2240  		input = &GetRateBasedStatementManagedKeysInput{}
  2241  	}
  2242  
  2243  	output = &GetRateBasedStatementManagedKeysOutput{}
  2244  	req = c.newRequest(op, input, output)
  2245  	return
  2246  }
  2247  
  2248  // GetRateBasedStatementManagedKeys API operation for AWS WAFV2.
  2249  //
  2250  // Retrieves the keys that are currently blocked by a rate-based rule instance.
  2251  // The maximum number of managed keys that can be blocked for a single rate-based
  2252  // rule instance is 10,000. If more than 10,000 addresses exceed the rate limit,
  2253  // those with the highest rates are blocked.
  2254  //
  2255  // For a rate-based rule that you've defined inside a rule group, provide the
  2256  // name of the rule group reference statement in your request, in addition to
  2257  // the rate-based rule name and the web ACL name.
  2258  //
  2259  // WAF monitors web requests and manages keys independently for each unique
  2260  // combination of web ACL, optional rule group, and rate-based rule. For example,
  2261  // if you define a rate-based rule inside a rule group, and then use the rule
  2262  // group in a web ACL, WAF monitors web requests and manages keys for that web
  2263  // ACL, rule group reference statement, and rate-based rule instance. If you
  2264  // use the same rule group in a second web ACL, WAF monitors web requests and
  2265  // manages keys for this second usage completely independent of your first.
  2266  //
  2267  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2268  // with awserr.Error's Code and Message methods to get detailed information about
  2269  // the error.
  2270  //
  2271  // See the AWS API reference guide for AWS WAFV2's
  2272  // API operation GetRateBasedStatementManagedKeys for usage and error information.
  2273  //
  2274  // Returned Error Types:
  2275  //   * WAFInternalErrorException
  2276  //   Your request is valid, but WAF couldn’t perform the operation because of
  2277  //   a system problem. Retry your request.
  2278  //
  2279  //   * WAFInvalidParameterException
  2280  //   The operation failed because WAF didn't recognize a parameter in the request.
  2281  //   For example:
  2282  //
  2283  //      * You specified a parameter name or value that isn't valid.
  2284  //
  2285  //      * Your nested statement isn't valid. You might have tried to nest a statement
  2286  //      that can’t be nested.
  2287  //
  2288  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  2289  //      types available at DefaultAction.
  2290  //
  2291  //      * Your request references an ARN that is malformed, or corresponds to
  2292  //      a resource with which a web ACL can't be associated.
  2293  //
  2294  //   * WAFNonexistentItemException
  2295  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  2296  //
  2297  //   * WAFInvalidOperationException
  2298  //   The operation isn't valid.
  2299  //
  2300  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetRateBasedStatementManagedKeys
  2301  func (c *WAFV2) GetRateBasedStatementManagedKeys(input *GetRateBasedStatementManagedKeysInput) (*GetRateBasedStatementManagedKeysOutput, error) {
  2302  	req, out := c.GetRateBasedStatementManagedKeysRequest(input)
  2303  	return out, req.Send()
  2304  }
  2305  
  2306  // GetRateBasedStatementManagedKeysWithContext is the same as GetRateBasedStatementManagedKeys with the addition of
  2307  // the ability to pass a context and additional request options.
  2308  //
  2309  // See GetRateBasedStatementManagedKeys for details on how to use this API operation.
  2310  //
  2311  // The context must be non-nil and will be used for request cancellation. If
  2312  // the context is nil a panic will occur. In the future the SDK may create
  2313  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2314  // for more information on using Contexts.
  2315  func (c *WAFV2) GetRateBasedStatementManagedKeysWithContext(ctx aws.Context, input *GetRateBasedStatementManagedKeysInput, opts ...request.Option) (*GetRateBasedStatementManagedKeysOutput, error) {
  2316  	req, out := c.GetRateBasedStatementManagedKeysRequest(input)
  2317  	req.SetContext(ctx)
  2318  	req.ApplyOptions(opts...)
  2319  	return out, req.Send()
  2320  }
  2321  
  2322  const opGetRegexPatternSet = "GetRegexPatternSet"
  2323  
  2324  // GetRegexPatternSetRequest generates a "aws/request.Request" representing the
  2325  // client's request for the GetRegexPatternSet operation. The "output" return
  2326  // value will be populated with the request's response once the request completes
  2327  // successfully.
  2328  //
  2329  // Use "Send" method on the returned Request to send the API call to the service.
  2330  // the "output" return value is not valid until after Send returns without error.
  2331  //
  2332  // See GetRegexPatternSet for more information on using the GetRegexPatternSet
  2333  // API call, and error handling.
  2334  //
  2335  // This method is useful when you want to inject custom logic or configuration
  2336  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2337  //
  2338  //
  2339  //    // Example sending a request using the GetRegexPatternSetRequest method.
  2340  //    req, resp := client.GetRegexPatternSetRequest(params)
  2341  //
  2342  //    err := req.Send()
  2343  //    if err == nil { // resp is now filled
  2344  //        fmt.Println(resp)
  2345  //    }
  2346  //
  2347  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetRegexPatternSet
  2348  func (c *WAFV2) GetRegexPatternSetRequest(input *GetRegexPatternSetInput) (req *request.Request, output *GetRegexPatternSetOutput) {
  2349  	op := &request.Operation{
  2350  		Name:       opGetRegexPatternSet,
  2351  		HTTPMethod: "POST",
  2352  		HTTPPath:   "/",
  2353  	}
  2354  
  2355  	if input == nil {
  2356  		input = &GetRegexPatternSetInput{}
  2357  	}
  2358  
  2359  	output = &GetRegexPatternSetOutput{}
  2360  	req = c.newRequest(op, input, output)
  2361  	return
  2362  }
  2363  
  2364  // GetRegexPatternSet API operation for AWS WAFV2.
  2365  //
  2366  // Retrieves the specified RegexPatternSet.
  2367  //
  2368  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2369  // with awserr.Error's Code and Message methods to get detailed information about
  2370  // the error.
  2371  //
  2372  // See the AWS API reference guide for AWS WAFV2's
  2373  // API operation GetRegexPatternSet for usage and error information.
  2374  //
  2375  // Returned Error Types:
  2376  //   * WAFInternalErrorException
  2377  //   Your request is valid, but WAF couldn’t perform the operation because of
  2378  //   a system problem. Retry your request.
  2379  //
  2380  //   * WAFInvalidParameterException
  2381  //   The operation failed because WAF didn't recognize a parameter in the request.
  2382  //   For example:
  2383  //
  2384  //      * You specified a parameter name or value that isn't valid.
  2385  //
  2386  //      * Your nested statement isn't valid. You might have tried to nest a statement
  2387  //      that can’t be nested.
  2388  //
  2389  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  2390  //      types available at DefaultAction.
  2391  //
  2392  //      * Your request references an ARN that is malformed, or corresponds to
  2393  //      a resource with which a web ACL can't be associated.
  2394  //
  2395  //   * WAFNonexistentItemException
  2396  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  2397  //
  2398  //   * WAFInvalidOperationException
  2399  //   The operation isn't valid.
  2400  //
  2401  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetRegexPatternSet
  2402  func (c *WAFV2) GetRegexPatternSet(input *GetRegexPatternSetInput) (*GetRegexPatternSetOutput, error) {
  2403  	req, out := c.GetRegexPatternSetRequest(input)
  2404  	return out, req.Send()
  2405  }
  2406  
  2407  // GetRegexPatternSetWithContext is the same as GetRegexPatternSet with the addition of
  2408  // the ability to pass a context and additional request options.
  2409  //
  2410  // See GetRegexPatternSet for details on how to use this API operation.
  2411  //
  2412  // The context must be non-nil and will be used for request cancellation. If
  2413  // the context is nil a panic will occur. In the future the SDK may create
  2414  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2415  // for more information on using Contexts.
  2416  func (c *WAFV2) GetRegexPatternSetWithContext(ctx aws.Context, input *GetRegexPatternSetInput, opts ...request.Option) (*GetRegexPatternSetOutput, error) {
  2417  	req, out := c.GetRegexPatternSetRequest(input)
  2418  	req.SetContext(ctx)
  2419  	req.ApplyOptions(opts...)
  2420  	return out, req.Send()
  2421  }
  2422  
  2423  const opGetRuleGroup = "GetRuleGroup"
  2424  
  2425  // GetRuleGroupRequest generates a "aws/request.Request" representing the
  2426  // client's request for the GetRuleGroup operation. The "output" return
  2427  // value will be populated with the request's response once the request completes
  2428  // successfully.
  2429  //
  2430  // Use "Send" method on the returned Request to send the API call to the service.
  2431  // the "output" return value is not valid until after Send returns without error.
  2432  //
  2433  // See GetRuleGroup for more information on using the GetRuleGroup
  2434  // API call, and error handling.
  2435  //
  2436  // This method is useful when you want to inject custom logic or configuration
  2437  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2438  //
  2439  //
  2440  //    // Example sending a request using the GetRuleGroupRequest method.
  2441  //    req, resp := client.GetRuleGroupRequest(params)
  2442  //
  2443  //    err := req.Send()
  2444  //    if err == nil { // resp is now filled
  2445  //        fmt.Println(resp)
  2446  //    }
  2447  //
  2448  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetRuleGroup
  2449  func (c *WAFV2) GetRuleGroupRequest(input *GetRuleGroupInput) (req *request.Request, output *GetRuleGroupOutput) {
  2450  	op := &request.Operation{
  2451  		Name:       opGetRuleGroup,
  2452  		HTTPMethod: "POST",
  2453  		HTTPPath:   "/",
  2454  	}
  2455  
  2456  	if input == nil {
  2457  		input = &GetRuleGroupInput{}
  2458  	}
  2459  
  2460  	output = &GetRuleGroupOutput{}
  2461  	req = c.newRequest(op, input, output)
  2462  	return
  2463  }
  2464  
  2465  // GetRuleGroup API operation for AWS WAFV2.
  2466  //
  2467  // Retrieves the specified RuleGroup.
  2468  //
  2469  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2470  // with awserr.Error's Code and Message methods to get detailed information about
  2471  // the error.
  2472  //
  2473  // See the AWS API reference guide for AWS WAFV2's
  2474  // API operation GetRuleGroup for usage and error information.
  2475  //
  2476  // Returned Error Types:
  2477  //   * WAFInternalErrorException
  2478  //   Your request is valid, but WAF couldn’t perform the operation because of
  2479  //   a system problem. Retry your request.
  2480  //
  2481  //   * WAFInvalidParameterException
  2482  //   The operation failed because WAF didn't recognize a parameter in the request.
  2483  //   For example:
  2484  //
  2485  //      * You specified a parameter name or value that isn't valid.
  2486  //
  2487  //      * Your nested statement isn't valid. You might have tried to nest a statement
  2488  //      that can’t be nested.
  2489  //
  2490  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  2491  //      types available at DefaultAction.
  2492  //
  2493  //      * Your request references an ARN that is malformed, or corresponds to
  2494  //      a resource with which a web ACL can't be associated.
  2495  //
  2496  //   * WAFNonexistentItemException
  2497  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  2498  //
  2499  //   * WAFInvalidOperationException
  2500  //   The operation isn't valid.
  2501  //
  2502  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetRuleGroup
  2503  func (c *WAFV2) GetRuleGroup(input *GetRuleGroupInput) (*GetRuleGroupOutput, error) {
  2504  	req, out := c.GetRuleGroupRequest(input)
  2505  	return out, req.Send()
  2506  }
  2507  
  2508  // GetRuleGroupWithContext is the same as GetRuleGroup with the addition of
  2509  // the ability to pass a context and additional request options.
  2510  //
  2511  // See GetRuleGroup for details on how to use this API operation.
  2512  //
  2513  // The context must be non-nil and will be used for request cancellation. If
  2514  // the context is nil a panic will occur. In the future the SDK may create
  2515  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2516  // for more information on using Contexts.
  2517  func (c *WAFV2) GetRuleGroupWithContext(ctx aws.Context, input *GetRuleGroupInput, opts ...request.Option) (*GetRuleGroupOutput, error) {
  2518  	req, out := c.GetRuleGroupRequest(input)
  2519  	req.SetContext(ctx)
  2520  	req.ApplyOptions(opts...)
  2521  	return out, req.Send()
  2522  }
  2523  
  2524  const opGetSampledRequests = "GetSampledRequests"
  2525  
  2526  // GetSampledRequestsRequest generates a "aws/request.Request" representing the
  2527  // client's request for the GetSampledRequests operation. The "output" return
  2528  // value will be populated with the request's response once the request completes
  2529  // successfully.
  2530  //
  2531  // Use "Send" method on the returned Request to send the API call to the service.
  2532  // the "output" return value is not valid until after Send returns without error.
  2533  //
  2534  // See GetSampledRequests for more information on using the GetSampledRequests
  2535  // API call, and error handling.
  2536  //
  2537  // This method is useful when you want to inject custom logic or configuration
  2538  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2539  //
  2540  //
  2541  //    // Example sending a request using the GetSampledRequestsRequest method.
  2542  //    req, resp := client.GetSampledRequestsRequest(params)
  2543  //
  2544  //    err := req.Send()
  2545  //    if err == nil { // resp is now filled
  2546  //        fmt.Println(resp)
  2547  //    }
  2548  //
  2549  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetSampledRequests
  2550  func (c *WAFV2) GetSampledRequestsRequest(input *GetSampledRequestsInput) (req *request.Request, output *GetSampledRequestsOutput) {
  2551  	op := &request.Operation{
  2552  		Name:       opGetSampledRequests,
  2553  		HTTPMethod: "POST",
  2554  		HTTPPath:   "/",
  2555  	}
  2556  
  2557  	if input == nil {
  2558  		input = &GetSampledRequestsInput{}
  2559  	}
  2560  
  2561  	output = &GetSampledRequestsOutput{}
  2562  	req = c.newRequest(op, input, output)
  2563  	return
  2564  }
  2565  
  2566  // GetSampledRequests API operation for AWS WAFV2.
  2567  //
  2568  // Gets detailed information about a specified number of requests--a sample--that
  2569  // WAF randomly selects from among the first 5,000 requests that your Amazon
  2570  // Web Services resource received during a time range that you choose. You can
  2571  // specify a sample size of up to 500 requests, and you can specify any time
  2572  // range in the previous three hours.
  2573  //
  2574  // GetSampledRequests returns a time range, which is usually the time range
  2575  // that you specified. However, if your resource (such as a CloudFront distribution)
  2576  // received 5,000 requests before the specified time range elapsed, GetSampledRequests
  2577  // returns an updated time range. This new time range indicates the actual period
  2578  // during which WAF selected the requests in the sample.
  2579  //
  2580  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2581  // with awserr.Error's Code and Message methods to get detailed information about
  2582  // the error.
  2583  //
  2584  // See the AWS API reference guide for AWS WAFV2's
  2585  // API operation GetSampledRequests for usage and error information.
  2586  //
  2587  // Returned Error Types:
  2588  //   * WAFNonexistentItemException
  2589  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  2590  //
  2591  //   * WAFInternalErrorException
  2592  //   Your request is valid, but WAF couldn’t perform the operation because of
  2593  //   a system problem. Retry your request.
  2594  //
  2595  //   * WAFInvalidParameterException
  2596  //   The operation failed because WAF didn't recognize a parameter in the request.
  2597  //   For example:
  2598  //
  2599  //      * You specified a parameter name or value that isn't valid.
  2600  //
  2601  //      * Your nested statement isn't valid. You might have tried to nest a statement
  2602  //      that can’t be nested.
  2603  //
  2604  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  2605  //      types available at DefaultAction.
  2606  //
  2607  //      * Your request references an ARN that is malformed, or corresponds to
  2608  //      a resource with which a web ACL can't be associated.
  2609  //
  2610  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetSampledRequests
  2611  func (c *WAFV2) GetSampledRequests(input *GetSampledRequestsInput) (*GetSampledRequestsOutput, error) {
  2612  	req, out := c.GetSampledRequestsRequest(input)
  2613  	return out, req.Send()
  2614  }
  2615  
  2616  // GetSampledRequestsWithContext is the same as GetSampledRequests with the addition of
  2617  // the ability to pass a context and additional request options.
  2618  //
  2619  // See GetSampledRequests for details on how to use this API operation.
  2620  //
  2621  // The context must be non-nil and will be used for request cancellation. If
  2622  // the context is nil a panic will occur. In the future the SDK may create
  2623  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2624  // for more information on using Contexts.
  2625  func (c *WAFV2) GetSampledRequestsWithContext(ctx aws.Context, input *GetSampledRequestsInput, opts ...request.Option) (*GetSampledRequestsOutput, error) {
  2626  	req, out := c.GetSampledRequestsRequest(input)
  2627  	req.SetContext(ctx)
  2628  	req.ApplyOptions(opts...)
  2629  	return out, req.Send()
  2630  }
  2631  
  2632  const opGetWebACL = "GetWebACL"
  2633  
  2634  // GetWebACLRequest generates a "aws/request.Request" representing the
  2635  // client's request for the GetWebACL operation. The "output" return
  2636  // value will be populated with the request's response once the request completes
  2637  // successfully.
  2638  //
  2639  // Use "Send" method on the returned Request to send the API call to the service.
  2640  // the "output" return value is not valid until after Send returns without error.
  2641  //
  2642  // See GetWebACL for more information on using the GetWebACL
  2643  // API call, and error handling.
  2644  //
  2645  // This method is useful when you want to inject custom logic or configuration
  2646  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2647  //
  2648  //
  2649  //    // Example sending a request using the GetWebACLRequest method.
  2650  //    req, resp := client.GetWebACLRequest(params)
  2651  //
  2652  //    err := req.Send()
  2653  //    if err == nil { // resp is now filled
  2654  //        fmt.Println(resp)
  2655  //    }
  2656  //
  2657  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetWebACL
  2658  func (c *WAFV2) GetWebACLRequest(input *GetWebACLInput) (req *request.Request, output *GetWebACLOutput) {
  2659  	op := &request.Operation{
  2660  		Name:       opGetWebACL,
  2661  		HTTPMethod: "POST",
  2662  		HTTPPath:   "/",
  2663  	}
  2664  
  2665  	if input == nil {
  2666  		input = &GetWebACLInput{}
  2667  	}
  2668  
  2669  	output = &GetWebACLOutput{}
  2670  	req = c.newRequest(op, input, output)
  2671  	return
  2672  }
  2673  
  2674  // GetWebACL API operation for AWS WAFV2.
  2675  //
  2676  // Retrieves the specified WebACL.
  2677  //
  2678  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2679  // with awserr.Error's Code and Message methods to get detailed information about
  2680  // the error.
  2681  //
  2682  // See the AWS API reference guide for AWS WAFV2's
  2683  // API operation GetWebACL for usage and error information.
  2684  //
  2685  // Returned Error Types:
  2686  //   * WAFInternalErrorException
  2687  //   Your request is valid, but WAF couldn’t perform the operation because of
  2688  //   a system problem. Retry your request.
  2689  //
  2690  //   * WAFInvalidParameterException
  2691  //   The operation failed because WAF didn't recognize a parameter in the request.
  2692  //   For example:
  2693  //
  2694  //      * You specified a parameter name or value that isn't valid.
  2695  //
  2696  //      * Your nested statement isn't valid. You might have tried to nest a statement
  2697  //      that can’t be nested.
  2698  //
  2699  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  2700  //      types available at DefaultAction.
  2701  //
  2702  //      * Your request references an ARN that is malformed, or corresponds to
  2703  //      a resource with which a web ACL can't be associated.
  2704  //
  2705  //   * WAFNonexistentItemException
  2706  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  2707  //
  2708  //   * WAFInvalidOperationException
  2709  //   The operation isn't valid.
  2710  //
  2711  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetWebACL
  2712  func (c *WAFV2) GetWebACL(input *GetWebACLInput) (*GetWebACLOutput, error) {
  2713  	req, out := c.GetWebACLRequest(input)
  2714  	return out, req.Send()
  2715  }
  2716  
  2717  // GetWebACLWithContext is the same as GetWebACL with the addition of
  2718  // the ability to pass a context and additional request options.
  2719  //
  2720  // See GetWebACL for details on how to use this API operation.
  2721  //
  2722  // The context must be non-nil and will be used for request cancellation. If
  2723  // the context is nil a panic will occur. In the future the SDK may create
  2724  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2725  // for more information on using Contexts.
  2726  func (c *WAFV2) GetWebACLWithContext(ctx aws.Context, input *GetWebACLInput, opts ...request.Option) (*GetWebACLOutput, error) {
  2727  	req, out := c.GetWebACLRequest(input)
  2728  	req.SetContext(ctx)
  2729  	req.ApplyOptions(opts...)
  2730  	return out, req.Send()
  2731  }
  2732  
  2733  const opGetWebACLForResource = "GetWebACLForResource"
  2734  
  2735  // GetWebACLForResourceRequest generates a "aws/request.Request" representing the
  2736  // client's request for the GetWebACLForResource operation. The "output" return
  2737  // value will be populated with the request's response once the request completes
  2738  // successfully.
  2739  //
  2740  // Use "Send" method on the returned Request to send the API call to the service.
  2741  // the "output" return value is not valid until after Send returns without error.
  2742  //
  2743  // See GetWebACLForResource for more information on using the GetWebACLForResource
  2744  // API call, and error handling.
  2745  //
  2746  // This method is useful when you want to inject custom logic or configuration
  2747  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2748  //
  2749  //
  2750  //    // Example sending a request using the GetWebACLForResourceRequest method.
  2751  //    req, resp := client.GetWebACLForResourceRequest(params)
  2752  //
  2753  //    err := req.Send()
  2754  //    if err == nil { // resp is now filled
  2755  //        fmt.Println(resp)
  2756  //    }
  2757  //
  2758  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetWebACLForResource
  2759  func (c *WAFV2) GetWebACLForResourceRequest(input *GetWebACLForResourceInput) (req *request.Request, output *GetWebACLForResourceOutput) {
  2760  	op := &request.Operation{
  2761  		Name:       opGetWebACLForResource,
  2762  		HTTPMethod: "POST",
  2763  		HTTPPath:   "/",
  2764  	}
  2765  
  2766  	if input == nil {
  2767  		input = &GetWebACLForResourceInput{}
  2768  	}
  2769  
  2770  	output = &GetWebACLForResourceOutput{}
  2771  	req = c.newRequest(op, input, output)
  2772  	return
  2773  }
  2774  
  2775  // GetWebACLForResource API operation for AWS WAFV2.
  2776  //
  2777  // Retrieves the WebACL for the specified resource.
  2778  //
  2779  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2780  // with awserr.Error's Code and Message methods to get detailed information about
  2781  // the error.
  2782  //
  2783  // See the AWS API reference guide for AWS WAFV2's
  2784  // API operation GetWebACLForResource for usage and error information.
  2785  //
  2786  // Returned Error Types:
  2787  //   * WAFInternalErrorException
  2788  //   Your request is valid, but WAF couldn’t perform the operation because of
  2789  //   a system problem. Retry your request.
  2790  //
  2791  //   * WAFNonexistentItemException
  2792  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  2793  //
  2794  //   * WAFInvalidParameterException
  2795  //   The operation failed because WAF didn't recognize a parameter in the request.
  2796  //   For example:
  2797  //
  2798  //      * You specified a parameter name or value that isn't valid.
  2799  //
  2800  //      * Your nested statement isn't valid. You might have tried to nest a statement
  2801  //      that can’t be nested.
  2802  //
  2803  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  2804  //      types available at DefaultAction.
  2805  //
  2806  //      * Your request references an ARN that is malformed, or corresponds to
  2807  //      a resource with which a web ACL can't be associated.
  2808  //
  2809  //   * WAFUnavailableEntityException
  2810  //   WAF couldn’t retrieve the resource that you requested. Retry your request.
  2811  //
  2812  //   * WAFInvalidOperationException
  2813  //   The operation isn't valid.
  2814  //
  2815  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/GetWebACLForResource
  2816  func (c *WAFV2) GetWebACLForResource(input *GetWebACLForResourceInput) (*GetWebACLForResourceOutput, error) {
  2817  	req, out := c.GetWebACLForResourceRequest(input)
  2818  	return out, req.Send()
  2819  }
  2820  
  2821  // GetWebACLForResourceWithContext is the same as GetWebACLForResource with the addition of
  2822  // the ability to pass a context and additional request options.
  2823  //
  2824  // See GetWebACLForResource for details on how to use this API operation.
  2825  //
  2826  // The context must be non-nil and will be used for request cancellation. If
  2827  // the context is nil a panic will occur. In the future the SDK may create
  2828  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2829  // for more information on using Contexts.
  2830  func (c *WAFV2) GetWebACLForResourceWithContext(ctx aws.Context, input *GetWebACLForResourceInput, opts ...request.Option) (*GetWebACLForResourceOutput, error) {
  2831  	req, out := c.GetWebACLForResourceRequest(input)
  2832  	req.SetContext(ctx)
  2833  	req.ApplyOptions(opts...)
  2834  	return out, req.Send()
  2835  }
  2836  
  2837  const opListAvailableManagedRuleGroupVersions = "ListAvailableManagedRuleGroupVersions"
  2838  
  2839  // ListAvailableManagedRuleGroupVersionsRequest generates a "aws/request.Request" representing the
  2840  // client's request for the ListAvailableManagedRuleGroupVersions operation. The "output" return
  2841  // value will be populated with the request's response once the request completes
  2842  // successfully.
  2843  //
  2844  // Use "Send" method on the returned Request to send the API call to the service.
  2845  // the "output" return value is not valid until after Send returns without error.
  2846  //
  2847  // See ListAvailableManagedRuleGroupVersions for more information on using the ListAvailableManagedRuleGroupVersions
  2848  // API call, and error handling.
  2849  //
  2850  // This method is useful when you want to inject custom logic or configuration
  2851  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2852  //
  2853  //
  2854  //    // Example sending a request using the ListAvailableManagedRuleGroupVersionsRequest method.
  2855  //    req, resp := client.ListAvailableManagedRuleGroupVersionsRequest(params)
  2856  //
  2857  //    err := req.Send()
  2858  //    if err == nil { // resp is now filled
  2859  //        fmt.Println(resp)
  2860  //    }
  2861  //
  2862  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListAvailableManagedRuleGroupVersions
  2863  func (c *WAFV2) ListAvailableManagedRuleGroupVersionsRequest(input *ListAvailableManagedRuleGroupVersionsInput) (req *request.Request, output *ListAvailableManagedRuleGroupVersionsOutput) {
  2864  	op := &request.Operation{
  2865  		Name:       opListAvailableManagedRuleGroupVersions,
  2866  		HTTPMethod: "POST",
  2867  		HTTPPath:   "/",
  2868  	}
  2869  
  2870  	if input == nil {
  2871  		input = &ListAvailableManagedRuleGroupVersionsInput{}
  2872  	}
  2873  
  2874  	output = &ListAvailableManagedRuleGroupVersionsOutput{}
  2875  	req = c.newRequest(op, input, output)
  2876  	return
  2877  }
  2878  
  2879  // ListAvailableManagedRuleGroupVersions API operation for AWS WAFV2.
  2880  //
  2881  // Returns a list of the available versions for the specified managed rule group.
  2882  //
  2883  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2884  // with awserr.Error's Code and Message methods to get detailed information about
  2885  // the error.
  2886  //
  2887  // See the AWS API reference guide for AWS WAFV2's
  2888  // API operation ListAvailableManagedRuleGroupVersions for usage and error information.
  2889  //
  2890  // Returned Error Types:
  2891  //   * WAFInternalErrorException
  2892  //   Your request is valid, but WAF couldn’t perform the operation because of
  2893  //   a system problem. Retry your request.
  2894  //
  2895  //   * WAFInvalidParameterException
  2896  //   The operation failed because WAF didn't recognize a parameter in the request.
  2897  //   For example:
  2898  //
  2899  //      * You specified a parameter name or value that isn't valid.
  2900  //
  2901  //      * Your nested statement isn't valid. You might have tried to nest a statement
  2902  //      that can’t be nested.
  2903  //
  2904  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  2905  //      types available at DefaultAction.
  2906  //
  2907  //      * Your request references an ARN that is malformed, or corresponds to
  2908  //      a resource with which a web ACL can't be associated.
  2909  //
  2910  //   * WAFInvalidOperationException
  2911  //   The operation isn't valid.
  2912  //
  2913  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListAvailableManagedRuleGroupVersions
  2914  func (c *WAFV2) ListAvailableManagedRuleGroupVersions(input *ListAvailableManagedRuleGroupVersionsInput) (*ListAvailableManagedRuleGroupVersionsOutput, error) {
  2915  	req, out := c.ListAvailableManagedRuleGroupVersionsRequest(input)
  2916  	return out, req.Send()
  2917  }
  2918  
  2919  // ListAvailableManagedRuleGroupVersionsWithContext is the same as ListAvailableManagedRuleGroupVersions with the addition of
  2920  // the ability to pass a context and additional request options.
  2921  //
  2922  // See ListAvailableManagedRuleGroupVersions for details on how to use this API operation.
  2923  //
  2924  // The context must be non-nil and will be used for request cancellation. If
  2925  // the context is nil a panic will occur. In the future the SDK may create
  2926  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2927  // for more information on using Contexts.
  2928  func (c *WAFV2) ListAvailableManagedRuleGroupVersionsWithContext(ctx aws.Context, input *ListAvailableManagedRuleGroupVersionsInput, opts ...request.Option) (*ListAvailableManagedRuleGroupVersionsOutput, error) {
  2929  	req, out := c.ListAvailableManagedRuleGroupVersionsRequest(input)
  2930  	req.SetContext(ctx)
  2931  	req.ApplyOptions(opts...)
  2932  	return out, req.Send()
  2933  }
  2934  
  2935  const opListAvailableManagedRuleGroups = "ListAvailableManagedRuleGroups"
  2936  
  2937  // ListAvailableManagedRuleGroupsRequest generates a "aws/request.Request" representing the
  2938  // client's request for the ListAvailableManagedRuleGroups operation. The "output" return
  2939  // value will be populated with the request's response once the request completes
  2940  // successfully.
  2941  //
  2942  // Use "Send" method on the returned Request to send the API call to the service.
  2943  // the "output" return value is not valid until after Send returns without error.
  2944  //
  2945  // See ListAvailableManagedRuleGroups for more information on using the ListAvailableManagedRuleGroups
  2946  // API call, and error handling.
  2947  //
  2948  // This method is useful when you want to inject custom logic or configuration
  2949  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2950  //
  2951  //
  2952  //    // Example sending a request using the ListAvailableManagedRuleGroupsRequest method.
  2953  //    req, resp := client.ListAvailableManagedRuleGroupsRequest(params)
  2954  //
  2955  //    err := req.Send()
  2956  //    if err == nil { // resp is now filled
  2957  //        fmt.Println(resp)
  2958  //    }
  2959  //
  2960  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListAvailableManagedRuleGroups
  2961  func (c *WAFV2) ListAvailableManagedRuleGroupsRequest(input *ListAvailableManagedRuleGroupsInput) (req *request.Request, output *ListAvailableManagedRuleGroupsOutput) {
  2962  	op := &request.Operation{
  2963  		Name:       opListAvailableManagedRuleGroups,
  2964  		HTTPMethod: "POST",
  2965  		HTTPPath:   "/",
  2966  	}
  2967  
  2968  	if input == nil {
  2969  		input = &ListAvailableManagedRuleGroupsInput{}
  2970  	}
  2971  
  2972  	output = &ListAvailableManagedRuleGroupsOutput{}
  2973  	req = c.newRequest(op, input, output)
  2974  	return
  2975  }
  2976  
  2977  // ListAvailableManagedRuleGroups API operation for AWS WAFV2.
  2978  //
  2979  // Retrieves an array of managed rule groups that are available for you to use.
  2980  // This list includes all Amazon Web Services Managed Rules rule groups and
  2981  // all of the Amazon Web Services Marketplace managed rule groups that you're
  2982  // subscribed to.
  2983  //
  2984  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2985  // with awserr.Error's Code and Message methods to get detailed information about
  2986  // the error.
  2987  //
  2988  // See the AWS API reference guide for AWS WAFV2's
  2989  // API operation ListAvailableManagedRuleGroups for usage and error information.
  2990  //
  2991  // Returned Error Types:
  2992  //   * WAFInternalErrorException
  2993  //   Your request is valid, but WAF couldn’t perform the operation because of
  2994  //   a system problem. Retry your request.
  2995  //
  2996  //   * WAFInvalidParameterException
  2997  //   The operation failed because WAF didn't recognize a parameter in the request.
  2998  //   For example:
  2999  //
  3000  //      * You specified a parameter name or value that isn't valid.
  3001  //
  3002  //      * Your nested statement isn't valid. You might have tried to nest a statement
  3003  //      that can’t be nested.
  3004  //
  3005  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  3006  //      types available at DefaultAction.
  3007  //
  3008  //      * Your request references an ARN that is malformed, or corresponds to
  3009  //      a resource with which a web ACL can't be associated.
  3010  //
  3011  //   * WAFInvalidOperationException
  3012  //   The operation isn't valid.
  3013  //
  3014  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListAvailableManagedRuleGroups
  3015  func (c *WAFV2) ListAvailableManagedRuleGroups(input *ListAvailableManagedRuleGroupsInput) (*ListAvailableManagedRuleGroupsOutput, error) {
  3016  	req, out := c.ListAvailableManagedRuleGroupsRequest(input)
  3017  	return out, req.Send()
  3018  }
  3019  
  3020  // ListAvailableManagedRuleGroupsWithContext is the same as ListAvailableManagedRuleGroups with the addition of
  3021  // the ability to pass a context and additional request options.
  3022  //
  3023  // See ListAvailableManagedRuleGroups for details on how to use this API operation.
  3024  //
  3025  // The context must be non-nil and will be used for request cancellation. If
  3026  // the context is nil a panic will occur. In the future the SDK may create
  3027  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3028  // for more information on using Contexts.
  3029  func (c *WAFV2) ListAvailableManagedRuleGroupsWithContext(ctx aws.Context, input *ListAvailableManagedRuleGroupsInput, opts ...request.Option) (*ListAvailableManagedRuleGroupsOutput, error) {
  3030  	req, out := c.ListAvailableManagedRuleGroupsRequest(input)
  3031  	req.SetContext(ctx)
  3032  	req.ApplyOptions(opts...)
  3033  	return out, req.Send()
  3034  }
  3035  
  3036  const opListIPSets = "ListIPSets"
  3037  
  3038  // ListIPSetsRequest generates a "aws/request.Request" representing the
  3039  // client's request for the ListIPSets operation. The "output" return
  3040  // value will be populated with the request's response once the request completes
  3041  // successfully.
  3042  //
  3043  // Use "Send" method on the returned Request to send the API call to the service.
  3044  // the "output" return value is not valid until after Send returns without error.
  3045  //
  3046  // See ListIPSets for more information on using the ListIPSets
  3047  // API call, and error handling.
  3048  //
  3049  // This method is useful when you want to inject custom logic or configuration
  3050  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3051  //
  3052  //
  3053  //    // Example sending a request using the ListIPSetsRequest method.
  3054  //    req, resp := client.ListIPSetsRequest(params)
  3055  //
  3056  //    err := req.Send()
  3057  //    if err == nil { // resp is now filled
  3058  //        fmt.Println(resp)
  3059  //    }
  3060  //
  3061  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListIPSets
  3062  func (c *WAFV2) ListIPSetsRequest(input *ListIPSetsInput) (req *request.Request, output *ListIPSetsOutput) {
  3063  	op := &request.Operation{
  3064  		Name:       opListIPSets,
  3065  		HTTPMethod: "POST",
  3066  		HTTPPath:   "/",
  3067  	}
  3068  
  3069  	if input == nil {
  3070  		input = &ListIPSetsInput{}
  3071  	}
  3072  
  3073  	output = &ListIPSetsOutput{}
  3074  	req = c.newRequest(op, input, output)
  3075  	return
  3076  }
  3077  
  3078  // ListIPSets API operation for AWS WAFV2.
  3079  //
  3080  // Retrieves an array of IPSetSummary objects for the IP sets that you manage.
  3081  //
  3082  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3083  // with awserr.Error's Code and Message methods to get detailed information about
  3084  // the error.
  3085  //
  3086  // See the AWS API reference guide for AWS WAFV2's
  3087  // API operation ListIPSets for usage and error information.
  3088  //
  3089  // Returned Error Types:
  3090  //   * WAFInternalErrorException
  3091  //   Your request is valid, but WAF couldn’t perform the operation because of
  3092  //   a system problem. Retry your request.
  3093  //
  3094  //   * WAFInvalidParameterException
  3095  //   The operation failed because WAF didn't recognize a parameter in the request.
  3096  //   For example:
  3097  //
  3098  //      * You specified a parameter name or value that isn't valid.
  3099  //
  3100  //      * Your nested statement isn't valid. You might have tried to nest a statement
  3101  //      that can’t be nested.
  3102  //
  3103  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  3104  //      types available at DefaultAction.
  3105  //
  3106  //      * Your request references an ARN that is malformed, or corresponds to
  3107  //      a resource with which a web ACL can't be associated.
  3108  //
  3109  //   * WAFInvalidOperationException
  3110  //   The operation isn't valid.
  3111  //
  3112  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListIPSets
  3113  func (c *WAFV2) ListIPSets(input *ListIPSetsInput) (*ListIPSetsOutput, error) {
  3114  	req, out := c.ListIPSetsRequest(input)
  3115  	return out, req.Send()
  3116  }
  3117  
  3118  // ListIPSetsWithContext is the same as ListIPSets with the addition of
  3119  // the ability to pass a context and additional request options.
  3120  //
  3121  // See ListIPSets for details on how to use this API operation.
  3122  //
  3123  // The context must be non-nil and will be used for request cancellation. If
  3124  // the context is nil a panic will occur. In the future the SDK may create
  3125  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3126  // for more information on using Contexts.
  3127  func (c *WAFV2) ListIPSetsWithContext(ctx aws.Context, input *ListIPSetsInput, opts ...request.Option) (*ListIPSetsOutput, error) {
  3128  	req, out := c.ListIPSetsRequest(input)
  3129  	req.SetContext(ctx)
  3130  	req.ApplyOptions(opts...)
  3131  	return out, req.Send()
  3132  }
  3133  
  3134  const opListLoggingConfigurations = "ListLoggingConfigurations"
  3135  
  3136  // ListLoggingConfigurationsRequest generates a "aws/request.Request" representing the
  3137  // client's request for the ListLoggingConfigurations operation. The "output" return
  3138  // value will be populated with the request's response once the request completes
  3139  // successfully.
  3140  //
  3141  // Use "Send" method on the returned Request to send the API call to the service.
  3142  // the "output" return value is not valid until after Send returns without error.
  3143  //
  3144  // See ListLoggingConfigurations for more information on using the ListLoggingConfigurations
  3145  // API call, and error handling.
  3146  //
  3147  // This method is useful when you want to inject custom logic or configuration
  3148  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3149  //
  3150  //
  3151  //    // Example sending a request using the ListLoggingConfigurationsRequest method.
  3152  //    req, resp := client.ListLoggingConfigurationsRequest(params)
  3153  //
  3154  //    err := req.Send()
  3155  //    if err == nil { // resp is now filled
  3156  //        fmt.Println(resp)
  3157  //    }
  3158  //
  3159  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListLoggingConfigurations
  3160  func (c *WAFV2) ListLoggingConfigurationsRequest(input *ListLoggingConfigurationsInput) (req *request.Request, output *ListLoggingConfigurationsOutput) {
  3161  	op := &request.Operation{
  3162  		Name:       opListLoggingConfigurations,
  3163  		HTTPMethod: "POST",
  3164  		HTTPPath:   "/",
  3165  	}
  3166  
  3167  	if input == nil {
  3168  		input = &ListLoggingConfigurationsInput{}
  3169  	}
  3170  
  3171  	output = &ListLoggingConfigurationsOutput{}
  3172  	req = c.newRequest(op, input, output)
  3173  	return
  3174  }
  3175  
  3176  // ListLoggingConfigurations API operation for AWS WAFV2.
  3177  //
  3178  // Retrieves an array of your LoggingConfiguration objects.
  3179  //
  3180  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3181  // with awserr.Error's Code and Message methods to get detailed information about
  3182  // the error.
  3183  //
  3184  // See the AWS API reference guide for AWS WAFV2's
  3185  // API operation ListLoggingConfigurations for usage and error information.
  3186  //
  3187  // Returned Error Types:
  3188  //   * WAFInternalErrorException
  3189  //   Your request is valid, but WAF couldn’t perform the operation because of
  3190  //   a system problem. Retry your request.
  3191  //
  3192  //   * WAFInvalidParameterException
  3193  //   The operation failed because WAF didn't recognize a parameter in the request.
  3194  //   For example:
  3195  //
  3196  //      * You specified a parameter name or value that isn't valid.
  3197  //
  3198  //      * Your nested statement isn't valid. You might have tried to nest a statement
  3199  //      that can’t be nested.
  3200  //
  3201  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  3202  //      types available at DefaultAction.
  3203  //
  3204  //      * Your request references an ARN that is malformed, or corresponds to
  3205  //      a resource with which a web ACL can't be associated.
  3206  //
  3207  //   * WAFInvalidOperationException
  3208  //   The operation isn't valid.
  3209  //
  3210  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListLoggingConfigurations
  3211  func (c *WAFV2) ListLoggingConfigurations(input *ListLoggingConfigurationsInput) (*ListLoggingConfigurationsOutput, error) {
  3212  	req, out := c.ListLoggingConfigurationsRequest(input)
  3213  	return out, req.Send()
  3214  }
  3215  
  3216  // ListLoggingConfigurationsWithContext is the same as ListLoggingConfigurations with the addition of
  3217  // the ability to pass a context and additional request options.
  3218  //
  3219  // See ListLoggingConfigurations for details on how to use this API operation.
  3220  //
  3221  // The context must be non-nil and will be used for request cancellation. If
  3222  // the context is nil a panic will occur. In the future the SDK may create
  3223  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3224  // for more information on using Contexts.
  3225  func (c *WAFV2) ListLoggingConfigurationsWithContext(ctx aws.Context, input *ListLoggingConfigurationsInput, opts ...request.Option) (*ListLoggingConfigurationsOutput, error) {
  3226  	req, out := c.ListLoggingConfigurationsRequest(input)
  3227  	req.SetContext(ctx)
  3228  	req.ApplyOptions(opts...)
  3229  	return out, req.Send()
  3230  }
  3231  
  3232  const opListManagedRuleSets = "ListManagedRuleSets"
  3233  
  3234  // ListManagedRuleSetsRequest generates a "aws/request.Request" representing the
  3235  // client's request for the ListManagedRuleSets operation. The "output" return
  3236  // value will be populated with the request's response once the request completes
  3237  // successfully.
  3238  //
  3239  // Use "Send" method on the returned Request to send the API call to the service.
  3240  // the "output" return value is not valid until after Send returns without error.
  3241  //
  3242  // See ListManagedRuleSets for more information on using the ListManagedRuleSets
  3243  // API call, and error handling.
  3244  //
  3245  // This method is useful when you want to inject custom logic or configuration
  3246  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3247  //
  3248  //
  3249  //    // Example sending a request using the ListManagedRuleSetsRequest method.
  3250  //    req, resp := client.ListManagedRuleSetsRequest(params)
  3251  //
  3252  //    err := req.Send()
  3253  //    if err == nil { // resp is now filled
  3254  //        fmt.Println(resp)
  3255  //    }
  3256  //
  3257  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListManagedRuleSets
  3258  func (c *WAFV2) ListManagedRuleSetsRequest(input *ListManagedRuleSetsInput) (req *request.Request, output *ListManagedRuleSetsOutput) {
  3259  	op := &request.Operation{
  3260  		Name:       opListManagedRuleSets,
  3261  		HTTPMethod: "POST",
  3262  		HTTPPath:   "/",
  3263  	}
  3264  
  3265  	if input == nil {
  3266  		input = &ListManagedRuleSetsInput{}
  3267  	}
  3268  
  3269  	output = &ListManagedRuleSetsOutput{}
  3270  	req = c.newRequest(op, input, output)
  3271  	return
  3272  }
  3273  
  3274  // ListManagedRuleSets API operation for AWS WAFV2.
  3275  //
  3276  // Retrieves the managed rule sets that you own.
  3277  //
  3278  // This is intended for use only by vendors of managed rule sets. Vendors are
  3279  // Amazon Web Services and Amazon Web Services Marketplace sellers.
  3280  //
  3281  // Vendors, you can use the managed rule set APIs to provide controlled rollout
  3282  // of your versioned managed rule group offerings for your customers. The APIs
  3283  // are ListManagedRuleSets, GetManagedRuleSet, PutManagedRuleSetVersions, and
  3284  // UpdateManagedRuleSetVersionExpiryDate.
  3285  //
  3286  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3287  // with awserr.Error's Code and Message methods to get detailed information about
  3288  // the error.
  3289  //
  3290  // See the AWS API reference guide for AWS WAFV2's
  3291  // API operation ListManagedRuleSets for usage and error information.
  3292  //
  3293  // Returned Error Types:
  3294  //   * WAFInternalErrorException
  3295  //   Your request is valid, but WAF couldn’t perform the operation because of
  3296  //   a system problem. Retry your request.
  3297  //
  3298  //   * WAFInvalidParameterException
  3299  //   The operation failed because WAF didn't recognize a parameter in the request.
  3300  //   For example:
  3301  //
  3302  //      * You specified a parameter name or value that isn't valid.
  3303  //
  3304  //      * Your nested statement isn't valid. You might have tried to nest a statement
  3305  //      that can’t be nested.
  3306  //
  3307  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  3308  //      types available at DefaultAction.
  3309  //
  3310  //      * Your request references an ARN that is malformed, or corresponds to
  3311  //      a resource with which a web ACL can't be associated.
  3312  //
  3313  //   * WAFInvalidOperationException
  3314  //   The operation isn't valid.
  3315  //
  3316  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListManagedRuleSets
  3317  func (c *WAFV2) ListManagedRuleSets(input *ListManagedRuleSetsInput) (*ListManagedRuleSetsOutput, error) {
  3318  	req, out := c.ListManagedRuleSetsRequest(input)
  3319  	return out, req.Send()
  3320  }
  3321  
  3322  // ListManagedRuleSetsWithContext is the same as ListManagedRuleSets with the addition of
  3323  // the ability to pass a context and additional request options.
  3324  //
  3325  // See ListManagedRuleSets for details on how to use this API operation.
  3326  //
  3327  // The context must be non-nil and will be used for request cancellation. If
  3328  // the context is nil a panic will occur. In the future the SDK may create
  3329  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3330  // for more information on using Contexts.
  3331  func (c *WAFV2) ListManagedRuleSetsWithContext(ctx aws.Context, input *ListManagedRuleSetsInput, opts ...request.Option) (*ListManagedRuleSetsOutput, error) {
  3332  	req, out := c.ListManagedRuleSetsRequest(input)
  3333  	req.SetContext(ctx)
  3334  	req.ApplyOptions(opts...)
  3335  	return out, req.Send()
  3336  }
  3337  
  3338  const opListRegexPatternSets = "ListRegexPatternSets"
  3339  
  3340  // ListRegexPatternSetsRequest generates a "aws/request.Request" representing the
  3341  // client's request for the ListRegexPatternSets operation. The "output" return
  3342  // value will be populated with the request's response once the request completes
  3343  // successfully.
  3344  //
  3345  // Use "Send" method on the returned Request to send the API call to the service.
  3346  // the "output" return value is not valid until after Send returns without error.
  3347  //
  3348  // See ListRegexPatternSets for more information on using the ListRegexPatternSets
  3349  // API call, and error handling.
  3350  //
  3351  // This method is useful when you want to inject custom logic or configuration
  3352  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3353  //
  3354  //
  3355  //    // Example sending a request using the ListRegexPatternSetsRequest method.
  3356  //    req, resp := client.ListRegexPatternSetsRequest(params)
  3357  //
  3358  //    err := req.Send()
  3359  //    if err == nil { // resp is now filled
  3360  //        fmt.Println(resp)
  3361  //    }
  3362  //
  3363  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListRegexPatternSets
  3364  func (c *WAFV2) ListRegexPatternSetsRequest(input *ListRegexPatternSetsInput) (req *request.Request, output *ListRegexPatternSetsOutput) {
  3365  	op := &request.Operation{
  3366  		Name:       opListRegexPatternSets,
  3367  		HTTPMethod: "POST",
  3368  		HTTPPath:   "/",
  3369  	}
  3370  
  3371  	if input == nil {
  3372  		input = &ListRegexPatternSetsInput{}
  3373  	}
  3374  
  3375  	output = &ListRegexPatternSetsOutput{}
  3376  	req = c.newRequest(op, input, output)
  3377  	return
  3378  }
  3379  
  3380  // ListRegexPatternSets API operation for AWS WAFV2.
  3381  //
  3382  // Retrieves an array of RegexPatternSetSummary objects for the regex pattern
  3383  // sets that you manage.
  3384  //
  3385  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3386  // with awserr.Error's Code and Message methods to get detailed information about
  3387  // the error.
  3388  //
  3389  // See the AWS API reference guide for AWS WAFV2's
  3390  // API operation ListRegexPatternSets for usage and error information.
  3391  //
  3392  // Returned Error Types:
  3393  //   * WAFInternalErrorException
  3394  //   Your request is valid, but WAF couldn’t perform the operation because of
  3395  //   a system problem. Retry your request.
  3396  //
  3397  //   * WAFInvalidParameterException
  3398  //   The operation failed because WAF didn't recognize a parameter in the request.
  3399  //   For example:
  3400  //
  3401  //      * You specified a parameter name or value that isn't valid.
  3402  //
  3403  //      * Your nested statement isn't valid. You might have tried to nest a statement
  3404  //      that can’t be nested.
  3405  //
  3406  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  3407  //      types available at DefaultAction.
  3408  //
  3409  //      * Your request references an ARN that is malformed, or corresponds to
  3410  //      a resource with which a web ACL can't be associated.
  3411  //
  3412  //   * WAFInvalidOperationException
  3413  //   The operation isn't valid.
  3414  //
  3415  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListRegexPatternSets
  3416  func (c *WAFV2) ListRegexPatternSets(input *ListRegexPatternSetsInput) (*ListRegexPatternSetsOutput, error) {
  3417  	req, out := c.ListRegexPatternSetsRequest(input)
  3418  	return out, req.Send()
  3419  }
  3420  
  3421  // ListRegexPatternSetsWithContext is the same as ListRegexPatternSets with the addition of
  3422  // the ability to pass a context and additional request options.
  3423  //
  3424  // See ListRegexPatternSets for details on how to use this API operation.
  3425  //
  3426  // The context must be non-nil and will be used for request cancellation. If
  3427  // the context is nil a panic will occur. In the future the SDK may create
  3428  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3429  // for more information on using Contexts.
  3430  func (c *WAFV2) ListRegexPatternSetsWithContext(ctx aws.Context, input *ListRegexPatternSetsInput, opts ...request.Option) (*ListRegexPatternSetsOutput, error) {
  3431  	req, out := c.ListRegexPatternSetsRequest(input)
  3432  	req.SetContext(ctx)
  3433  	req.ApplyOptions(opts...)
  3434  	return out, req.Send()
  3435  }
  3436  
  3437  const opListResourcesForWebACL = "ListResourcesForWebACL"
  3438  
  3439  // ListResourcesForWebACLRequest generates a "aws/request.Request" representing the
  3440  // client's request for the ListResourcesForWebACL operation. The "output" return
  3441  // value will be populated with the request's response once the request completes
  3442  // successfully.
  3443  //
  3444  // Use "Send" method on the returned Request to send the API call to the service.
  3445  // the "output" return value is not valid until after Send returns without error.
  3446  //
  3447  // See ListResourcesForWebACL for more information on using the ListResourcesForWebACL
  3448  // API call, and error handling.
  3449  //
  3450  // This method is useful when you want to inject custom logic or configuration
  3451  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3452  //
  3453  //
  3454  //    // Example sending a request using the ListResourcesForWebACLRequest method.
  3455  //    req, resp := client.ListResourcesForWebACLRequest(params)
  3456  //
  3457  //    err := req.Send()
  3458  //    if err == nil { // resp is now filled
  3459  //        fmt.Println(resp)
  3460  //    }
  3461  //
  3462  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListResourcesForWebACL
  3463  func (c *WAFV2) ListResourcesForWebACLRequest(input *ListResourcesForWebACLInput) (req *request.Request, output *ListResourcesForWebACLOutput) {
  3464  	op := &request.Operation{
  3465  		Name:       opListResourcesForWebACL,
  3466  		HTTPMethod: "POST",
  3467  		HTTPPath:   "/",
  3468  	}
  3469  
  3470  	if input == nil {
  3471  		input = &ListResourcesForWebACLInput{}
  3472  	}
  3473  
  3474  	output = &ListResourcesForWebACLOutput{}
  3475  	req = c.newRequest(op, input, output)
  3476  	return
  3477  }
  3478  
  3479  // ListResourcesForWebACL API operation for AWS WAFV2.
  3480  //
  3481  // Retrieves an array of the Amazon Resource Names (ARNs) for the regional resources
  3482  // that are associated with the specified web ACL. If you want the list of Amazon
  3483  // CloudFront resources, use the CloudFront call ListDistributionsByWebACLId.
  3484  //
  3485  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3486  // with awserr.Error's Code and Message methods to get detailed information about
  3487  // the error.
  3488  //
  3489  // See the AWS API reference guide for AWS WAFV2's
  3490  // API operation ListResourcesForWebACL for usage and error information.
  3491  //
  3492  // Returned Error Types:
  3493  //   * WAFInternalErrorException
  3494  //   Your request is valid, but WAF couldn’t perform the operation because of
  3495  //   a system problem. Retry your request.
  3496  //
  3497  //   * WAFNonexistentItemException
  3498  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  3499  //
  3500  //   * WAFInvalidParameterException
  3501  //   The operation failed because WAF didn't recognize a parameter in the request.
  3502  //   For example:
  3503  //
  3504  //      * You specified a parameter name or value that isn't valid.
  3505  //
  3506  //      * Your nested statement isn't valid. You might have tried to nest a statement
  3507  //      that can’t be nested.
  3508  //
  3509  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  3510  //      types available at DefaultAction.
  3511  //
  3512  //      * Your request references an ARN that is malformed, or corresponds to
  3513  //      a resource with which a web ACL can't be associated.
  3514  //
  3515  //   * WAFInvalidOperationException
  3516  //   The operation isn't valid.
  3517  //
  3518  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListResourcesForWebACL
  3519  func (c *WAFV2) ListResourcesForWebACL(input *ListResourcesForWebACLInput) (*ListResourcesForWebACLOutput, error) {
  3520  	req, out := c.ListResourcesForWebACLRequest(input)
  3521  	return out, req.Send()
  3522  }
  3523  
  3524  // ListResourcesForWebACLWithContext is the same as ListResourcesForWebACL with the addition of
  3525  // the ability to pass a context and additional request options.
  3526  //
  3527  // See ListResourcesForWebACL for details on how to use this API operation.
  3528  //
  3529  // The context must be non-nil and will be used for request cancellation. If
  3530  // the context is nil a panic will occur. In the future the SDK may create
  3531  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3532  // for more information on using Contexts.
  3533  func (c *WAFV2) ListResourcesForWebACLWithContext(ctx aws.Context, input *ListResourcesForWebACLInput, opts ...request.Option) (*ListResourcesForWebACLOutput, error) {
  3534  	req, out := c.ListResourcesForWebACLRequest(input)
  3535  	req.SetContext(ctx)
  3536  	req.ApplyOptions(opts...)
  3537  	return out, req.Send()
  3538  }
  3539  
  3540  const opListRuleGroups = "ListRuleGroups"
  3541  
  3542  // ListRuleGroupsRequest generates a "aws/request.Request" representing the
  3543  // client's request for the ListRuleGroups operation. The "output" return
  3544  // value will be populated with the request's response once the request completes
  3545  // successfully.
  3546  //
  3547  // Use "Send" method on the returned Request to send the API call to the service.
  3548  // the "output" return value is not valid until after Send returns without error.
  3549  //
  3550  // See ListRuleGroups for more information on using the ListRuleGroups
  3551  // API call, and error handling.
  3552  //
  3553  // This method is useful when you want to inject custom logic or configuration
  3554  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3555  //
  3556  //
  3557  //    // Example sending a request using the ListRuleGroupsRequest method.
  3558  //    req, resp := client.ListRuleGroupsRequest(params)
  3559  //
  3560  //    err := req.Send()
  3561  //    if err == nil { // resp is now filled
  3562  //        fmt.Println(resp)
  3563  //    }
  3564  //
  3565  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListRuleGroups
  3566  func (c *WAFV2) ListRuleGroupsRequest(input *ListRuleGroupsInput) (req *request.Request, output *ListRuleGroupsOutput) {
  3567  	op := &request.Operation{
  3568  		Name:       opListRuleGroups,
  3569  		HTTPMethod: "POST",
  3570  		HTTPPath:   "/",
  3571  	}
  3572  
  3573  	if input == nil {
  3574  		input = &ListRuleGroupsInput{}
  3575  	}
  3576  
  3577  	output = &ListRuleGroupsOutput{}
  3578  	req = c.newRequest(op, input, output)
  3579  	return
  3580  }
  3581  
  3582  // ListRuleGroups API operation for AWS WAFV2.
  3583  //
  3584  // Retrieves an array of RuleGroupSummary objects for the rule groups that you
  3585  // manage.
  3586  //
  3587  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3588  // with awserr.Error's Code and Message methods to get detailed information about
  3589  // the error.
  3590  //
  3591  // See the AWS API reference guide for AWS WAFV2's
  3592  // API operation ListRuleGroups for usage and error information.
  3593  //
  3594  // Returned Error Types:
  3595  //   * WAFInternalErrorException
  3596  //   Your request is valid, but WAF couldn’t perform the operation because of
  3597  //   a system problem. Retry your request.
  3598  //
  3599  //   * WAFInvalidParameterException
  3600  //   The operation failed because WAF didn't recognize a parameter in the request.
  3601  //   For example:
  3602  //
  3603  //      * You specified a parameter name or value that isn't valid.
  3604  //
  3605  //      * Your nested statement isn't valid. You might have tried to nest a statement
  3606  //      that can’t be nested.
  3607  //
  3608  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  3609  //      types available at DefaultAction.
  3610  //
  3611  //      * Your request references an ARN that is malformed, or corresponds to
  3612  //      a resource with which a web ACL can't be associated.
  3613  //
  3614  //   * WAFInvalidOperationException
  3615  //   The operation isn't valid.
  3616  //
  3617  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListRuleGroups
  3618  func (c *WAFV2) ListRuleGroups(input *ListRuleGroupsInput) (*ListRuleGroupsOutput, error) {
  3619  	req, out := c.ListRuleGroupsRequest(input)
  3620  	return out, req.Send()
  3621  }
  3622  
  3623  // ListRuleGroupsWithContext is the same as ListRuleGroups with the addition of
  3624  // the ability to pass a context and additional request options.
  3625  //
  3626  // See ListRuleGroups for details on how to use this API operation.
  3627  //
  3628  // The context must be non-nil and will be used for request cancellation. If
  3629  // the context is nil a panic will occur. In the future the SDK may create
  3630  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3631  // for more information on using Contexts.
  3632  func (c *WAFV2) ListRuleGroupsWithContext(ctx aws.Context, input *ListRuleGroupsInput, opts ...request.Option) (*ListRuleGroupsOutput, error) {
  3633  	req, out := c.ListRuleGroupsRequest(input)
  3634  	req.SetContext(ctx)
  3635  	req.ApplyOptions(opts...)
  3636  	return out, req.Send()
  3637  }
  3638  
  3639  const opListTagsForResource = "ListTagsForResource"
  3640  
  3641  // ListTagsForResourceRequest generates a "aws/request.Request" representing the
  3642  // client's request for the ListTagsForResource operation. The "output" return
  3643  // value will be populated with the request's response once the request completes
  3644  // successfully.
  3645  //
  3646  // Use "Send" method on the returned Request to send the API call to the service.
  3647  // the "output" return value is not valid until after Send returns without error.
  3648  //
  3649  // See ListTagsForResource for more information on using the ListTagsForResource
  3650  // API call, and error handling.
  3651  //
  3652  // This method is useful when you want to inject custom logic or configuration
  3653  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3654  //
  3655  //
  3656  //    // Example sending a request using the ListTagsForResourceRequest method.
  3657  //    req, resp := client.ListTagsForResourceRequest(params)
  3658  //
  3659  //    err := req.Send()
  3660  //    if err == nil { // resp is now filled
  3661  //        fmt.Println(resp)
  3662  //    }
  3663  //
  3664  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListTagsForResource
  3665  func (c *WAFV2) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
  3666  	op := &request.Operation{
  3667  		Name:       opListTagsForResource,
  3668  		HTTPMethod: "POST",
  3669  		HTTPPath:   "/",
  3670  	}
  3671  
  3672  	if input == nil {
  3673  		input = &ListTagsForResourceInput{}
  3674  	}
  3675  
  3676  	output = &ListTagsForResourceOutput{}
  3677  	req = c.newRequest(op, input, output)
  3678  	return
  3679  }
  3680  
  3681  // ListTagsForResource API operation for AWS WAFV2.
  3682  //
  3683  // Retrieves the TagInfoForResource for the specified resource. Tags are key:value
  3684  // pairs that you can use to categorize and manage your resources, for purposes
  3685  // like billing. For example, you might set the tag key to "customer" and the
  3686  // value to the customer name or ID. You can specify one or more tags to add
  3687  // to each Amazon Web Services resource, up to 50 tags for a resource.
  3688  //
  3689  // You can tag the Amazon Web Services resources that you manage through WAF:
  3690  // web ACLs, rule groups, IP sets, and regex pattern sets. You can't manage
  3691  // or view tags through the WAF console.
  3692  //
  3693  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3694  // with awserr.Error's Code and Message methods to get detailed information about
  3695  // the error.
  3696  //
  3697  // See the AWS API reference guide for AWS WAFV2's
  3698  // API operation ListTagsForResource for usage and error information.
  3699  //
  3700  // Returned Error Types:
  3701  //   * WAFInternalErrorException
  3702  //   Your request is valid, but WAF couldn’t perform the operation because of
  3703  //   a system problem. Retry your request.
  3704  //
  3705  //   * WAFInvalidParameterException
  3706  //   The operation failed because WAF didn't recognize a parameter in the request.
  3707  //   For example:
  3708  //
  3709  //      * You specified a parameter name or value that isn't valid.
  3710  //
  3711  //      * Your nested statement isn't valid. You might have tried to nest a statement
  3712  //      that can’t be nested.
  3713  //
  3714  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  3715  //      types available at DefaultAction.
  3716  //
  3717  //      * Your request references an ARN that is malformed, or corresponds to
  3718  //      a resource with which a web ACL can't be associated.
  3719  //
  3720  //   * WAFNonexistentItemException
  3721  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  3722  //
  3723  //   * WAFTagOperationException
  3724  //   An error occurred during the tagging operation. Retry your request.
  3725  //
  3726  //   * WAFTagOperationInternalErrorException
  3727  //   WAF couldn’t perform your tagging operation because of an internal error.
  3728  //   Retry your request.
  3729  //
  3730  //   * WAFInvalidOperationException
  3731  //   The operation isn't valid.
  3732  //
  3733  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListTagsForResource
  3734  func (c *WAFV2) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
  3735  	req, out := c.ListTagsForResourceRequest(input)
  3736  	return out, req.Send()
  3737  }
  3738  
  3739  // ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
  3740  // the ability to pass a context and additional request options.
  3741  //
  3742  // See ListTagsForResource for details on how to use this API operation.
  3743  //
  3744  // The context must be non-nil and will be used for request cancellation. If
  3745  // the context is nil a panic will occur. In the future the SDK may create
  3746  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3747  // for more information on using Contexts.
  3748  func (c *WAFV2) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) {
  3749  	req, out := c.ListTagsForResourceRequest(input)
  3750  	req.SetContext(ctx)
  3751  	req.ApplyOptions(opts...)
  3752  	return out, req.Send()
  3753  }
  3754  
  3755  const opListWebACLs = "ListWebACLs"
  3756  
  3757  // ListWebACLsRequest generates a "aws/request.Request" representing the
  3758  // client's request for the ListWebACLs operation. The "output" return
  3759  // value will be populated with the request's response once the request completes
  3760  // successfully.
  3761  //
  3762  // Use "Send" method on the returned Request to send the API call to the service.
  3763  // the "output" return value is not valid until after Send returns without error.
  3764  //
  3765  // See ListWebACLs for more information on using the ListWebACLs
  3766  // API call, and error handling.
  3767  //
  3768  // This method is useful when you want to inject custom logic or configuration
  3769  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3770  //
  3771  //
  3772  //    // Example sending a request using the ListWebACLsRequest method.
  3773  //    req, resp := client.ListWebACLsRequest(params)
  3774  //
  3775  //    err := req.Send()
  3776  //    if err == nil { // resp is now filled
  3777  //        fmt.Println(resp)
  3778  //    }
  3779  //
  3780  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListWebACLs
  3781  func (c *WAFV2) ListWebACLsRequest(input *ListWebACLsInput) (req *request.Request, output *ListWebACLsOutput) {
  3782  	op := &request.Operation{
  3783  		Name:       opListWebACLs,
  3784  		HTTPMethod: "POST",
  3785  		HTTPPath:   "/",
  3786  	}
  3787  
  3788  	if input == nil {
  3789  		input = &ListWebACLsInput{}
  3790  	}
  3791  
  3792  	output = &ListWebACLsOutput{}
  3793  	req = c.newRequest(op, input, output)
  3794  	return
  3795  }
  3796  
  3797  // ListWebACLs API operation for AWS WAFV2.
  3798  //
  3799  // Retrieves an array of WebACLSummary objects for the web ACLs that you manage.
  3800  //
  3801  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3802  // with awserr.Error's Code and Message methods to get detailed information about
  3803  // the error.
  3804  //
  3805  // See the AWS API reference guide for AWS WAFV2's
  3806  // API operation ListWebACLs for usage and error information.
  3807  //
  3808  // Returned Error Types:
  3809  //   * WAFInternalErrorException
  3810  //   Your request is valid, but WAF couldn’t perform the operation because of
  3811  //   a system problem. Retry your request.
  3812  //
  3813  //   * WAFInvalidParameterException
  3814  //   The operation failed because WAF didn't recognize a parameter in the request.
  3815  //   For example:
  3816  //
  3817  //      * You specified a parameter name or value that isn't valid.
  3818  //
  3819  //      * Your nested statement isn't valid. You might have tried to nest a statement
  3820  //      that can’t be nested.
  3821  //
  3822  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  3823  //      types available at DefaultAction.
  3824  //
  3825  //      * Your request references an ARN that is malformed, or corresponds to
  3826  //      a resource with which a web ACL can't be associated.
  3827  //
  3828  //   * WAFInvalidOperationException
  3829  //   The operation isn't valid.
  3830  //
  3831  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/ListWebACLs
  3832  func (c *WAFV2) ListWebACLs(input *ListWebACLsInput) (*ListWebACLsOutput, error) {
  3833  	req, out := c.ListWebACLsRequest(input)
  3834  	return out, req.Send()
  3835  }
  3836  
  3837  // ListWebACLsWithContext is the same as ListWebACLs with the addition of
  3838  // the ability to pass a context and additional request options.
  3839  //
  3840  // See ListWebACLs for details on how to use this API operation.
  3841  //
  3842  // The context must be non-nil and will be used for request cancellation. If
  3843  // the context is nil a panic will occur. In the future the SDK may create
  3844  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3845  // for more information on using Contexts.
  3846  func (c *WAFV2) ListWebACLsWithContext(ctx aws.Context, input *ListWebACLsInput, opts ...request.Option) (*ListWebACLsOutput, error) {
  3847  	req, out := c.ListWebACLsRequest(input)
  3848  	req.SetContext(ctx)
  3849  	req.ApplyOptions(opts...)
  3850  	return out, req.Send()
  3851  }
  3852  
  3853  const opPutLoggingConfiguration = "PutLoggingConfiguration"
  3854  
  3855  // PutLoggingConfigurationRequest generates a "aws/request.Request" representing the
  3856  // client's request for the PutLoggingConfiguration operation. The "output" return
  3857  // value will be populated with the request's response once the request completes
  3858  // successfully.
  3859  //
  3860  // Use "Send" method on the returned Request to send the API call to the service.
  3861  // the "output" return value is not valid until after Send returns without error.
  3862  //
  3863  // See PutLoggingConfiguration for more information on using the PutLoggingConfiguration
  3864  // API call, and error handling.
  3865  //
  3866  // This method is useful when you want to inject custom logic or configuration
  3867  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3868  //
  3869  //
  3870  //    // Example sending a request using the PutLoggingConfigurationRequest method.
  3871  //    req, resp := client.PutLoggingConfigurationRequest(params)
  3872  //
  3873  //    err := req.Send()
  3874  //    if err == nil { // resp is now filled
  3875  //        fmt.Println(resp)
  3876  //    }
  3877  //
  3878  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/PutLoggingConfiguration
  3879  func (c *WAFV2) PutLoggingConfigurationRequest(input *PutLoggingConfigurationInput) (req *request.Request, output *PutLoggingConfigurationOutput) {
  3880  	op := &request.Operation{
  3881  		Name:       opPutLoggingConfiguration,
  3882  		HTTPMethod: "POST",
  3883  		HTTPPath:   "/",
  3884  	}
  3885  
  3886  	if input == nil {
  3887  		input = &PutLoggingConfigurationInput{}
  3888  	}
  3889  
  3890  	output = &PutLoggingConfigurationOutput{}
  3891  	req = c.newRequest(op, input, output)
  3892  	return
  3893  }
  3894  
  3895  // PutLoggingConfiguration API operation for AWS WAFV2.
  3896  //
  3897  // Enables the specified LoggingConfiguration, to start logging from a web ACL,
  3898  // according to the configuration provided.
  3899  //
  3900  // You can access information about all traffic that WAF inspects using the
  3901  // following steps:
  3902  //
  3903  // Create an Amazon Kinesis Data Firehose.
  3904  //
  3905  // Create the data firehose with a PUT source and in the Region that you are
  3906  // operating. If you are capturing logs for Amazon CloudFront, always create
  3907  // the firehose in US East (N. Virginia).
  3908  //
  3909  // Give the data firehose a name that starts with the prefix aws-waf-logs-.
  3910  // For example, aws-waf-logs-us-east-2-analytics.
  3911  //
  3912  // Do not create the data firehose using a Kinesis stream as your source.
  3913  //
  3914  // Associate that firehose to your web ACL using a PutLoggingConfiguration request.
  3915  //
  3916  // When you successfully enable logging using a PutLoggingConfiguration request,
  3917  // WAF will create a service linked role with the necessary permissions to write
  3918  // logs to the Amazon Kinesis Data Firehose. For more information, see Logging
  3919  // Web ACL Traffic Information (https://docs.aws.amazon.com/waf/latest/developerguide/logging.html)
  3920  // in the WAF Developer Guide.
  3921  //
  3922  // This operation completely replaces the mutable specifications that you already
  3923  // have for the logging configuration with the ones that you provide to this
  3924  // call. To modify the logging configuration, retrieve it by calling GetLoggingConfiguration,
  3925  // update the settings as needed, and then provide the complete logging configuration
  3926  // specification to this call.
  3927  //
  3928  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3929  // with awserr.Error's Code and Message methods to get detailed information about
  3930  // the error.
  3931  //
  3932  // See the AWS API reference guide for AWS WAFV2's
  3933  // API operation PutLoggingConfiguration for usage and error information.
  3934  //
  3935  // Returned Error Types:
  3936  //   * WAFInternalErrorException
  3937  //   Your request is valid, but WAF couldn’t perform the operation because of
  3938  //   a system problem. Retry your request.
  3939  //
  3940  //   * WAFNonexistentItemException
  3941  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  3942  //
  3943  //   * WAFOptimisticLockException
  3944  //   WAF couldn’t save your changes because you tried to update or delete a
  3945  //   resource that has changed since you last retrieved it. Get the resource again,
  3946  //   make any changes you need to make to the new copy, and retry your operation.
  3947  //
  3948  //   * WAFServiceLinkedRoleErrorException
  3949  //   WAF is not able to access the service linked role. This can be caused by
  3950  //   a previous PutLoggingConfiguration request, which can lock the service linked
  3951  //   role for about 20 seconds. Please try your request again. The service linked
  3952  //   role can also be locked by a previous DeleteServiceLinkedRole request, which
  3953  //   can lock the role for 15 minutes or more. If you recently made a call to
  3954  //   DeleteServiceLinkedRole, wait at least 15 minutes and try the request again.
  3955  //   If you receive this same exception again, you will have to wait additional
  3956  //   time until the role is unlocked.
  3957  //
  3958  //   * WAFInvalidParameterException
  3959  //   The operation failed because WAF didn't recognize a parameter in the request.
  3960  //   For example:
  3961  //
  3962  //      * You specified a parameter name or value that isn't valid.
  3963  //
  3964  //      * Your nested statement isn't valid. You might have tried to nest a statement
  3965  //      that can’t be nested.
  3966  //
  3967  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  3968  //      types available at DefaultAction.
  3969  //
  3970  //      * Your request references an ARN that is malformed, or corresponds to
  3971  //      a resource with which a web ACL can't be associated.
  3972  //
  3973  //   * WAFInvalidOperationException
  3974  //   The operation isn't valid.
  3975  //
  3976  //   * WAFLimitsExceededException
  3977  //   WAF couldn’t perform the operation because you exceeded your resource limit.
  3978  //   For example, the maximum number of WebACL objects that you can create for
  3979  //   an Amazon Web Services account. For more information, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
  3980  //   in the WAF Developer Guide.
  3981  //
  3982  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/PutLoggingConfiguration
  3983  func (c *WAFV2) PutLoggingConfiguration(input *PutLoggingConfigurationInput) (*PutLoggingConfigurationOutput, error) {
  3984  	req, out := c.PutLoggingConfigurationRequest(input)
  3985  	return out, req.Send()
  3986  }
  3987  
  3988  // PutLoggingConfigurationWithContext is the same as PutLoggingConfiguration with the addition of
  3989  // the ability to pass a context and additional request options.
  3990  //
  3991  // See PutLoggingConfiguration for details on how to use this API operation.
  3992  //
  3993  // The context must be non-nil and will be used for request cancellation. If
  3994  // the context is nil a panic will occur. In the future the SDK may create
  3995  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3996  // for more information on using Contexts.
  3997  func (c *WAFV2) PutLoggingConfigurationWithContext(ctx aws.Context, input *PutLoggingConfigurationInput, opts ...request.Option) (*PutLoggingConfigurationOutput, error) {
  3998  	req, out := c.PutLoggingConfigurationRequest(input)
  3999  	req.SetContext(ctx)
  4000  	req.ApplyOptions(opts...)
  4001  	return out, req.Send()
  4002  }
  4003  
  4004  const opPutManagedRuleSetVersions = "PutManagedRuleSetVersions"
  4005  
  4006  // PutManagedRuleSetVersionsRequest generates a "aws/request.Request" representing the
  4007  // client's request for the PutManagedRuleSetVersions operation. The "output" return
  4008  // value will be populated with the request's response once the request completes
  4009  // successfully.
  4010  //
  4011  // Use "Send" method on the returned Request to send the API call to the service.
  4012  // the "output" return value is not valid until after Send returns without error.
  4013  //
  4014  // See PutManagedRuleSetVersions for more information on using the PutManagedRuleSetVersions
  4015  // API call, and error handling.
  4016  //
  4017  // This method is useful when you want to inject custom logic or configuration
  4018  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4019  //
  4020  //
  4021  //    // Example sending a request using the PutManagedRuleSetVersionsRequest method.
  4022  //    req, resp := client.PutManagedRuleSetVersionsRequest(params)
  4023  //
  4024  //    err := req.Send()
  4025  //    if err == nil { // resp is now filled
  4026  //        fmt.Println(resp)
  4027  //    }
  4028  //
  4029  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/PutManagedRuleSetVersions
  4030  func (c *WAFV2) PutManagedRuleSetVersionsRequest(input *PutManagedRuleSetVersionsInput) (req *request.Request, output *PutManagedRuleSetVersionsOutput) {
  4031  	op := &request.Operation{
  4032  		Name:       opPutManagedRuleSetVersions,
  4033  		HTTPMethod: "POST",
  4034  		HTTPPath:   "/",
  4035  	}
  4036  
  4037  	if input == nil {
  4038  		input = &PutManagedRuleSetVersionsInput{}
  4039  	}
  4040  
  4041  	output = &PutManagedRuleSetVersionsOutput{}
  4042  	req = c.newRequest(op, input, output)
  4043  	return
  4044  }
  4045  
  4046  // PutManagedRuleSetVersions API operation for AWS WAFV2.
  4047  //
  4048  // Defines the versions of your managed rule set that you are offering to the
  4049  // customers. Customers see your offerings as managed rule groups with versioning.
  4050  //
  4051  // This is intended for use only by vendors of managed rule sets. Vendors are
  4052  // Amazon Web Services and Amazon Web Services Marketplace sellers.
  4053  //
  4054  // Vendors, you can use the managed rule set APIs to provide controlled rollout
  4055  // of your versioned managed rule group offerings for your customers. The APIs
  4056  // are ListManagedRuleSets, GetManagedRuleSet, PutManagedRuleSetVersions, and
  4057  // UpdateManagedRuleSetVersionExpiryDate.
  4058  //
  4059  // Customers retrieve their managed rule group list by calling ListAvailableManagedRuleGroups.
  4060  // The name that you provide here for your managed rule set is the name the
  4061  // customer sees for the corresponding managed rule group. Customers can retrieve
  4062  // the available versions for a managed rule group by calling ListAvailableManagedRuleGroupVersions.
  4063  // You provide a rule group specification for each version. For each managed
  4064  // rule set, you must specify a version that you recommend using.
  4065  //
  4066  // To initiate the expiration of a managed rule group version, use UpdateManagedRuleSetVersionExpiryDate.
  4067  //
  4068  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4069  // with awserr.Error's Code and Message methods to get detailed information about
  4070  // the error.
  4071  //
  4072  // See the AWS API reference guide for AWS WAFV2's
  4073  // API operation PutManagedRuleSetVersions for usage and error information.
  4074  //
  4075  // Returned Error Types:
  4076  //   * WAFInternalErrorException
  4077  //   Your request is valid, but WAF couldn’t perform the operation because of
  4078  //   a system problem. Retry your request.
  4079  //
  4080  //   * WAFInvalidParameterException
  4081  //   The operation failed because WAF didn't recognize a parameter in the request.
  4082  //   For example:
  4083  //
  4084  //      * You specified a parameter name or value that isn't valid.
  4085  //
  4086  //      * Your nested statement isn't valid. You might have tried to nest a statement
  4087  //      that can’t be nested.
  4088  //
  4089  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  4090  //      types available at DefaultAction.
  4091  //
  4092  //      * Your request references an ARN that is malformed, or corresponds to
  4093  //      a resource with which a web ACL can't be associated.
  4094  //
  4095  //   * WAFNonexistentItemException
  4096  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  4097  //
  4098  //   * WAFOptimisticLockException
  4099  //   WAF couldn’t save your changes because you tried to update or delete a
  4100  //   resource that has changed since you last retrieved it. Get the resource again,
  4101  //   make any changes you need to make to the new copy, and retry your operation.
  4102  //
  4103  //   * WAFInvalidOperationException
  4104  //   The operation isn't valid.
  4105  //
  4106  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/PutManagedRuleSetVersions
  4107  func (c *WAFV2) PutManagedRuleSetVersions(input *PutManagedRuleSetVersionsInput) (*PutManagedRuleSetVersionsOutput, error) {
  4108  	req, out := c.PutManagedRuleSetVersionsRequest(input)
  4109  	return out, req.Send()
  4110  }
  4111  
  4112  // PutManagedRuleSetVersionsWithContext is the same as PutManagedRuleSetVersions with the addition of
  4113  // the ability to pass a context and additional request options.
  4114  //
  4115  // See PutManagedRuleSetVersions for details on how to use this API operation.
  4116  //
  4117  // The context must be non-nil and will be used for request cancellation. If
  4118  // the context is nil a panic will occur. In the future the SDK may create
  4119  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4120  // for more information on using Contexts.
  4121  func (c *WAFV2) PutManagedRuleSetVersionsWithContext(ctx aws.Context, input *PutManagedRuleSetVersionsInput, opts ...request.Option) (*PutManagedRuleSetVersionsOutput, error) {
  4122  	req, out := c.PutManagedRuleSetVersionsRequest(input)
  4123  	req.SetContext(ctx)
  4124  	req.ApplyOptions(opts...)
  4125  	return out, req.Send()
  4126  }
  4127  
  4128  const opPutPermissionPolicy = "PutPermissionPolicy"
  4129  
  4130  // PutPermissionPolicyRequest generates a "aws/request.Request" representing the
  4131  // client's request for the PutPermissionPolicy operation. The "output" return
  4132  // value will be populated with the request's response once the request completes
  4133  // successfully.
  4134  //
  4135  // Use "Send" method on the returned Request to send the API call to the service.
  4136  // the "output" return value is not valid until after Send returns without error.
  4137  //
  4138  // See PutPermissionPolicy for more information on using the PutPermissionPolicy
  4139  // API call, and error handling.
  4140  //
  4141  // This method is useful when you want to inject custom logic or configuration
  4142  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4143  //
  4144  //
  4145  //    // Example sending a request using the PutPermissionPolicyRequest method.
  4146  //    req, resp := client.PutPermissionPolicyRequest(params)
  4147  //
  4148  //    err := req.Send()
  4149  //    if err == nil { // resp is now filled
  4150  //        fmt.Println(resp)
  4151  //    }
  4152  //
  4153  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/PutPermissionPolicy
  4154  func (c *WAFV2) PutPermissionPolicyRequest(input *PutPermissionPolicyInput) (req *request.Request, output *PutPermissionPolicyOutput) {
  4155  	op := &request.Operation{
  4156  		Name:       opPutPermissionPolicy,
  4157  		HTTPMethod: "POST",
  4158  		HTTPPath:   "/",
  4159  	}
  4160  
  4161  	if input == nil {
  4162  		input = &PutPermissionPolicyInput{}
  4163  	}
  4164  
  4165  	output = &PutPermissionPolicyOutput{}
  4166  	req = c.newRequest(op, input, output)
  4167  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  4168  	return
  4169  }
  4170  
  4171  // PutPermissionPolicy API operation for AWS WAFV2.
  4172  //
  4173  // Attaches an IAM policy to the specified resource. Use this to share a rule
  4174  // group across accounts.
  4175  //
  4176  // You must be the owner of the rule group to perform this operation.
  4177  //
  4178  // This action is subject to the following restrictions:
  4179  //
  4180  //    * You can attach only one policy with each PutPermissionPolicy request.
  4181  //
  4182  //    * The ARN in the request must be a valid WAF RuleGroup ARN and the rule
  4183  //    group must exist in the same Region.
  4184  //
  4185  //    * The user making the request must be the owner of the rule group.
  4186  //
  4187  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4188  // with awserr.Error's Code and Message methods to get detailed information about
  4189  // the error.
  4190  //
  4191  // See the AWS API reference guide for AWS WAFV2's
  4192  // API operation PutPermissionPolicy for usage and error information.
  4193  //
  4194  // Returned Error Types:
  4195  //   * WAFNonexistentItemException
  4196  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  4197  //
  4198  //   * WAFInternalErrorException
  4199  //   Your request is valid, but WAF couldn’t perform the operation because of
  4200  //   a system problem. Retry your request.
  4201  //
  4202  //   * WAFInvalidParameterException
  4203  //   The operation failed because WAF didn't recognize a parameter in the request.
  4204  //   For example:
  4205  //
  4206  //      * You specified a parameter name or value that isn't valid.
  4207  //
  4208  //      * Your nested statement isn't valid. You might have tried to nest a statement
  4209  //      that can’t be nested.
  4210  //
  4211  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  4212  //      types available at DefaultAction.
  4213  //
  4214  //      * Your request references an ARN that is malformed, or corresponds to
  4215  //      a resource with which a web ACL can't be associated.
  4216  //
  4217  //   * WAFInvalidPermissionPolicyException
  4218  //   The operation failed because the specified policy isn't in the proper format.
  4219  //
  4220  //   The policy specifications must conform to the following:
  4221  //
  4222  //      * The policy must be composed using IAM Policy version 2012-10-17 or version
  4223  //      2015-01-01.
  4224  //
  4225  //      * The policy must include specifications for Effect, Action, and Principal.
  4226  //
  4227  //      * Effect must specify Allow.
  4228  //
  4229  //      * Action must specify wafv2:CreateWebACL, wafv2:UpdateWebACL, and wafv2:PutFirewallManagerRuleGroups.
  4230  //      WAF rejects any extra actions or wildcard actions in the policy.
  4231  //
  4232  //      * The policy must not include a Resource parameter.
  4233  //
  4234  //   For more information, see IAM Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html).
  4235  //
  4236  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/PutPermissionPolicy
  4237  func (c *WAFV2) PutPermissionPolicy(input *PutPermissionPolicyInput) (*PutPermissionPolicyOutput, error) {
  4238  	req, out := c.PutPermissionPolicyRequest(input)
  4239  	return out, req.Send()
  4240  }
  4241  
  4242  // PutPermissionPolicyWithContext is the same as PutPermissionPolicy with the addition of
  4243  // the ability to pass a context and additional request options.
  4244  //
  4245  // See PutPermissionPolicy for details on how to use this API operation.
  4246  //
  4247  // The context must be non-nil and will be used for request cancellation. If
  4248  // the context is nil a panic will occur. In the future the SDK may create
  4249  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4250  // for more information on using Contexts.
  4251  func (c *WAFV2) PutPermissionPolicyWithContext(ctx aws.Context, input *PutPermissionPolicyInput, opts ...request.Option) (*PutPermissionPolicyOutput, error) {
  4252  	req, out := c.PutPermissionPolicyRequest(input)
  4253  	req.SetContext(ctx)
  4254  	req.ApplyOptions(opts...)
  4255  	return out, req.Send()
  4256  }
  4257  
  4258  const opTagResource = "TagResource"
  4259  
  4260  // TagResourceRequest generates a "aws/request.Request" representing the
  4261  // client's request for the TagResource operation. The "output" return
  4262  // value will be populated with the request's response once the request completes
  4263  // successfully.
  4264  //
  4265  // Use "Send" method on the returned Request to send the API call to the service.
  4266  // the "output" return value is not valid until after Send returns without error.
  4267  //
  4268  // See TagResource for more information on using the TagResource
  4269  // API call, and error handling.
  4270  //
  4271  // This method is useful when you want to inject custom logic or configuration
  4272  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4273  //
  4274  //
  4275  //    // Example sending a request using the TagResourceRequest method.
  4276  //    req, resp := client.TagResourceRequest(params)
  4277  //
  4278  //    err := req.Send()
  4279  //    if err == nil { // resp is now filled
  4280  //        fmt.Println(resp)
  4281  //    }
  4282  //
  4283  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/TagResource
  4284  func (c *WAFV2) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
  4285  	op := &request.Operation{
  4286  		Name:       opTagResource,
  4287  		HTTPMethod: "POST",
  4288  		HTTPPath:   "/",
  4289  	}
  4290  
  4291  	if input == nil {
  4292  		input = &TagResourceInput{}
  4293  	}
  4294  
  4295  	output = &TagResourceOutput{}
  4296  	req = c.newRequest(op, input, output)
  4297  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  4298  	return
  4299  }
  4300  
  4301  // TagResource API operation for AWS WAFV2.
  4302  //
  4303  // Associates tags with the specified Amazon Web Services resource. Tags are
  4304  // key:value pairs that you can use to categorize and manage your resources,
  4305  // for purposes like billing. For example, you might set the tag key to "customer"
  4306  // and the value to the customer name or ID. You can specify one or more tags
  4307  // to add to each Amazon Web Services resource, up to 50 tags for a resource.
  4308  //
  4309  // You can tag the Amazon Web Services resources that you manage through WAF:
  4310  // web ACLs, rule groups, IP sets, and regex pattern sets. You can't manage
  4311  // or view tags through the WAF console.
  4312  //
  4313  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4314  // with awserr.Error's Code and Message methods to get detailed information about
  4315  // the error.
  4316  //
  4317  // See the AWS API reference guide for AWS WAFV2's
  4318  // API operation TagResource for usage and error information.
  4319  //
  4320  // Returned Error Types:
  4321  //   * WAFInternalErrorException
  4322  //   Your request is valid, but WAF couldn’t perform the operation because of
  4323  //   a system problem. Retry your request.
  4324  //
  4325  //   * WAFInvalidParameterException
  4326  //   The operation failed because WAF didn't recognize a parameter in the request.
  4327  //   For example:
  4328  //
  4329  //      * You specified a parameter name or value that isn't valid.
  4330  //
  4331  //      * Your nested statement isn't valid. You might have tried to nest a statement
  4332  //      that can’t be nested.
  4333  //
  4334  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  4335  //      types available at DefaultAction.
  4336  //
  4337  //      * Your request references an ARN that is malformed, or corresponds to
  4338  //      a resource with which a web ACL can't be associated.
  4339  //
  4340  //   * WAFLimitsExceededException
  4341  //   WAF couldn’t perform the operation because you exceeded your resource limit.
  4342  //   For example, the maximum number of WebACL objects that you can create for
  4343  //   an Amazon Web Services account. For more information, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
  4344  //   in the WAF Developer Guide.
  4345  //
  4346  //   * WAFNonexistentItemException
  4347  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  4348  //
  4349  //   * WAFTagOperationException
  4350  //   An error occurred during the tagging operation. Retry your request.
  4351  //
  4352  //   * WAFTagOperationInternalErrorException
  4353  //   WAF couldn’t perform your tagging operation because of an internal error.
  4354  //   Retry your request.
  4355  //
  4356  //   * WAFInvalidOperationException
  4357  //   The operation isn't valid.
  4358  //
  4359  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/TagResource
  4360  func (c *WAFV2) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
  4361  	req, out := c.TagResourceRequest(input)
  4362  	return out, req.Send()
  4363  }
  4364  
  4365  // TagResourceWithContext is the same as TagResource with the addition of
  4366  // the ability to pass a context and additional request options.
  4367  //
  4368  // See TagResource for details on how to use this API operation.
  4369  //
  4370  // The context must be non-nil and will be used for request cancellation. If
  4371  // the context is nil a panic will occur. In the future the SDK may create
  4372  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4373  // for more information on using Contexts.
  4374  func (c *WAFV2) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
  4375  	req, out := c.TagResourceRequest(input)
  4376  	req.SetContext(ctx)
  4377  	req.ApplyOptions(opts...)
  4378  	return out, req.Send()
  4379  }
  4380  
  4381  const opUntagResource = "UntagResource"
  4382  
  4383  // UntagResourceRequest generates a "aws/request.Request" representing the
  4384  // client's request for the UntagResource operation. The "output" return
  4385  // value will be populated with the request's response once the request completes
  4386  // successfully.
  4387  //
  4388  // Use "Send" method on the returned Request to send the API call to the service.
  4389  // the "output" return value is not valid until after Send returns without error.
  4390  //
  4391  // See UntagResource for more information on using the UntagResource
  4392  // API call, and error handling.
  4393  //
  4394  // This method is useful when you want to inject custom logic or configuration
  4395  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4396  //
  4397  //
  4398  //    // Example sending a request using the UntagResourceRequest method.
  4399  //    req, resp := client.UntagResourceRequest(params)
  4400  //
  4401  //    err := req.Send()
  4402  //    if err == nil { // resp is now filled
  4403  //        fmt.Println(resp)
  4404  //    }
  4405  //
  4406  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UntagResource
  4407  func (c *WAFV2) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
  4408  	op := &request.Operation{
  4409  		Name:       opUntagResource,
  4410  		HTTPMethod: "POST",
  4411  		HTTPPath:   "/",
  4412  	}
  4413  
  4414  	if input == nil {
  4415  		input = &UntagResourceInput{}
  4416  	}
  4417  
  4418  	output = &UntagResourceOutput{}
  4419  	req = c.newRequest(op, input, output)
  4420  	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  4421  	return
  4422  }
  4423  
  4424  // UntagResource API operation for AWS WAFV2.
  4425  //
  4426  // Disassociates tags from an Amazon Web Services resource. Tags are key:value
  4427  // pairs that you can associate with Amazon Web Services resources. For example,
  4428  // the tag key might be "customer" and the tag value might be "companyA." You
  4429  // can specify one or more tags to add to each container. You can add up to
  4430  // 50 tags to each Amazon Web Services resource.
  4431  //
  4432  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4433  // with awserr.Error's Code and Message methods to get detailed information about
  4434  // the error.
  4435  //
  4436  // See the AWS API reference guide for AWS WAFV2's
  4437  // API operation UntagResource for usage and error information.
  4438  //
  4439  // Returned Error Types:
  4440  //   * WAFInternalErrorException
  4441  //   Your request is valid, but WAF couldn’t perform the operation because of
  4442  //   a system problem. Retry your request.
  4443  //
  4444  //   * WAFInvalidParameterException
  4445  //   The operation failed because WAF didn't recognize a parameter in the request.
  4446  //   For example:
  4447  //
  4448  //      * You specified a parameter name or value that isn't valid.
  4449  //
  4450  //      * Your nested statement isn't valid. You might have tried to nest a statement
  4451  //      that can’t be nested.
  4452  //
  4453  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  4454  //      types available at DefaultAction.
  4455  //
  4456  //      * Your request references an ARN that is malformed, or corresponds to
  4457  //      a resource with which a web ACL can't be associated.
  4458  //
  4459  //   * WAFNonexistentItemException
  4460  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  4461  //
  4462  //   * WAFTagOperationException
  4463  //   An error occurred during the tagging operation. Retry your request.
  4464  //
  4465  //   * WAFTagOperationInternalErrorException
  4466  //   WAF couldn’t perform your tagging operation because of an internal error.
  4467  //   Retry your request.
  4468  //
  4469  //   * WAFInvalidOperationException
  4470  //   The operation isn't valid.
  4471  //
  4472  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UntagResource
  4473  func (c *WAFV2) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
  4474  	req, out := c.UntagResourceRequest(input)
  4475  	return out, req.Send()
  4476  }
  4477  
  4478  // UntagResourceWithContext is the same as UntagResource with the addition of
  4479  // the ability to pass a context and additional request options.
  4480  //
  4481  // See UntagResource for details on how to use this API operation.
  4482  //
  4483  // The context must be non-nil and will be used for request cancellation. If
  4484  // the context is nil a panic will occur. In the future the SDK may create
  4485  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4486  // for more information on using Contexts.
  4487  func (c *WAFV2) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) {
  4488  	req, out := c.UntagResourceRequest(input)
  4489  	req.SetContext(ctx)
  4490  	req.ApplyOptions(opts...)
  4491  	return out, req.Send()
  4492  }
  4493  
  4494  const opUpdateIPSet = "UpdateIPSet"
  4495  
  4496  // UpdateIPSetRequest generates a "aws/request.Request" representing the
  4497  // client's request for the UpdateIPSet operation. The "output" return
  4498  // value will be populated with the request's response once the request completes
  4499  // successfully.
  4500  //
  4501  // Use "Send" method on the returned Request to send the API call to the service.
  4502  // the "output" return value is not valid until after Send returns without error.
  4503  //
  4504  // See UpdateIPSet for more information on using the UpdateIPSet
  4505  // API call, and error handling.
  4506  //
  4507  // This method is useful when you want to inject custom logic or configuration
  4508  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4509  //
  4510  //
  4511  //    // Example sending a request using the UpdateIPSetRequest method.
  4512  //    req, resp := client.UpdateIPSetRequest(params)
  4513  //
  4514  //    err := req.Send()
  4515  //    if err == nil { // resp is now filled
  4516  //        fmt.Println(resp)
  4517  //    }
  4518  //
  4519  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UpdateIPSet
  4520  func (c *WAFV2) UpdateIPSetRequest(input *UpdateIPSetInput) (req *request.Request, output *UpdateIPSetOutput) {
  4521  	op := &request.Operation{
  4522  		Name:       opUpdateIPSet,
  4523  		HTTPMethod: "POST",
  4524  		HTTPPath:   "/",
  4525  	}
  4526  
  4527  	if input == nil {
  4528  		input = &UpdateIPSetInput{}
  4529  	}
  4530  
  4531  	output = &UpdateIPSetOutput{}
  4532  	req = c.newRequest(op, input, output)
  4533  	return
  4534  }
  4535  
  4536  // UpdateIPSet API operation for AWS WAFV2.
  4537  //
  4538  // Updates the specified IPSet.
  4539  //
  4540  // This operation completely replaces the mutable specifications that you already
  4541  // have for the IP set with the ones that you provide to this call. To modify
  4542  // the IP set, retrieve it by calling GetIPSet, update the settings as needed,
  4543  // and then provide the complete IP set specification to this call.
  4544  //
  4545  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4546  // with awserr.Error's Code and Message methods to get detailed information about
  4547  // the error.
  4548  //
  4549  // See the AWS API reference guide for AWS WAFV2's
  4550  // API operation UpdateIPSet for usage and error information.
  4551  //
  4552  // Returned Error Types:
  4553  //   * WAFInternalErrorException
  4554  //   Your request is valid, but WAF couldn’t perform the operation because of
  4555  //   a system problem. Retry your request.
  4556  //
  4557  //   * WAFInvalidParameterException
  4558  //   The operation failed because WAF didn't recognize a parameter in the request.
  4559  //   For example:
  4560  //
  4561  //      * You specified a parameter name or value that isn't valid.
  4562  //
  4563  //      * Your nested statement isn't valid. You might have tried to nest a statement
  4564  //      that can’t be nested.
  4565  //
  4566  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  4567  //      types available at DefaultAction.
  4568  //
  4569  //      * Your request references an ARN that is malformed, or corresponds to
  4570  //      a resource with which a web ACL can't be associated.
  4571  //
  4572  //   * WAFNonexistentItemException
  4573  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  4574  //
  4575  //   * WAFDuplicateItemException
  4576  //   WAF couldn’t perform the operation because the resource that you tried
  4577  //   to save is a duplicate of an existing one.
  4578  //
  4579  //   * WAFOptimisticLockException
  4580  //   WAF couldn’t save your changes because you tried to update or delete a
  4581  //   resource that has changed since you last retrieved it. Get the resource again,
  4582  //   make any changes you need to make to the new copy, and retry your operation.
  4583  //
  4584  //   * WAFLimitsExceededException
  4585  //   WAF couldn’t perform the operation because you exceeded your resource limit.
  4586  //   For example, the maximum number of WebACL objects that you can create for
  4587  //   an Amazon Web Services account. For more information, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
  4588  //   in the WAF Developer Guide.
  4589  //
  4590  //   * WAFInvalidOperationException
  4591  //   The operation isn't valid.
  4592  //
  4593  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UpdateIPSet
  4594  func (c *WAFV2) UpdateIPSet(input *UpdateIPSetInput) (*UpdateIPSetOutput, error) {
  4595  	req, out := c.UpdateIPSetRequest(input)
  4596  	return out, req.Send()
  4597  }
  4598  
  4599  // UpdateIPSetWithContext is the same as UpdateIPSet with the addition of
  4600  // the ability to pass a context and additional request options.
  4601  //
  4602  // See UpdateIPSet for details on how to use this API operation.
  4603  //
  4604  // The context must be non-nil and will be used for request cancellation. If
  4605  // the context is nil a panic will occur. In the future the SDK may create
  4606  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4607  // for more information on using Contexts.
  4608  func (c *WAFV2) UpdateIPSetWithContext(ctx aws.Context, input *UpdateIPSetInput, opts ...request.Option) (*UpdateIPSetOutput, error) {
  4609  	req, out := c.UpdateIPSetRequest(input)
  4610  	req.SetContext(ctx)
  4611  	req.ApplyOptions(opts...)
  4612  	return out, req.Send()
  4613  }
  4614  
  4615  const opUpdateManagedRuleSetVersionExpiryDate = "UpdateManagedRuleSetVersionExpiryDate"
  4616  
  4617  // UpdateManagedRuleSetVersionExpiryDateRequest generates a "aws/request.Request" representing the
  4618  // client's request for the UpdateManagedRuleSetVersionExpiryDate operation. The "output" return
  4619  // value will be populated with the request's response once the request completes
  4620  // successfully.
  4621  //
  4622  // Use "Send" method on the returned Request to send the API call to the service.
  4623  // the "output" return value is not valid until after Send returns without error.
  4624  //
  4625  // See UpdateManagedRuleSetVersionExpiryDate for more information on using the UpdateManagedRuleSetVersionExpiryDate
  4626  // API call, and error handling.
  4627  //
  4628  // This method is useful when you want to inject custom logic or configuration
  4629  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4630  //
  4631  //
  4632  //    // Example sending a request using the UpdateManagedRuleSetVersionExpiryDateRequest method.
  4633  //    req, resp := client.UpdateManagedRuleSetVersionExpiryDateRequest(params)
  4634  //
  4635  //    err := req.Send()
  4636  //    if err == nil { // resp is now filled
  4637  //        fmt.Println(resp)
  4638  //    }
  4639  //
  4640  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UpdateManagedRuleSetVersionExpiryDate
  4641  func (c *WAFV2) UpdateManagedRuleSetVersionExpiryDateRequest(input *UpdateManagedRuleSetVersionExpiryDateInput) (req *request.Request, output *UpdateManagedRuleSetVersionExpiryDateOutput) {
  4642  	op := &request.Operation{
  4643  		Name:       opUpdateManagedRuleSetVersionExpiryDate,
  4644  		HTTPMethod: "POST",
  4645  		HTTPPath:   "/",
  4646  	}
  4647  
  4648  	if input == nil {
  4649  		input = &UpdateManagedRuleSetVersionExpiryDateInput{}
  4650  	}
  4651  
  4652  	output = &UpdateManagedRuleSetVersionExpiryDateOutput{}
  4653  	req = c.newRequest(op, input, output)
  4654  	return
  4655  }
  4656  
  4657  // UpdateManagedRuleSetVersionExpiryDate API operation for AWS WAFV2.
  4658  //
  4659  // Updates the expiration information for your managed rule set. Use this to
  4660  // initiate the expiration of a managed rule group version. After you initiate
  4661  // expiration for a version, WAF excludes it from the reponse to ListAvailableManagedRuleGroupVersions
  4662  // for the managed rule group.
  4663  //
  4664  // This is intended for use only by vendors of managed rule sets. Vendors are
  4665  // Amazon Web Services and Amazon Web Services Marketplace sellers.
  4666  //
  4667  // Vendors, you can use the managed rule set APIs to provide controlled rollout
  4668  // of your versioned managed rule group offerings for your customers. The APIs
  4669  // are ListManagedRuleSets, GetManagedRuleSet, PutManagedRuleSetVersions, and
  4670  // UpdateManagedRuleSetVersionExpiryDate.
  4671  //
  4672  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4673  // with awserr.Error's Code and Message methods to get detailed information about
  4674  // the error.
  4675  //
  4676  // See the AWS API reference guide for AWS WAFV2's
  4677  // API operation UpdateManagedRuleSetVersionExpiryDate for usage and error information.
  4678  //
  4679  // Returned Error Types:
  4680  //   * WAFInternalErrorException
  4681  //   Your request is valid, but WAF couldn’t perform the operation because of
  4682  //   a system problem. Retry your request.
  4683  //
  4684  //   * WAFInvalidParameterException
  4685  //   The operation failed because WAF didn't recognize a parameter in the request.
  4686  //   For example:
  4687  //
  4688  //      * You specified a parameter name or value that isn't valid.
  4689  //
  4690  //      * Your nested statement isn't valid. You might have tried to nest a statement
  4691  //      that can’t be nested.
  4692  //
  4693  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  4694  //      types available at DefaultAction.
  4695  //
  4696  //      * Your request references an ARN that is malformed, or corresponds to
  4697  //      a resource with which a web ACL can't be associated.
  4698  //
  4699  //   * WAFNonexistentItemException
  4700  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  4701  //
  4702  //   * WAFOptimisticLockException
  4703  //   WAF couldn’t save your changes because you tried to update or delete a
  4704  //   resource that has changed since you last retrieved it. Get the resource again,
  4705  //   make any changes you need to make to the new copy, and retry your operation.
  4706  //
  4707  //   * WAFInvalidOperationException
  4708  //   The operation isn't valid.
  4709  //
  4710  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UpdateManagedRuleSetVersionExpiryDate
  4711  func (c *WAFV2) UpdateManagedRuleSetVersionExpiryDate(input *UpdateManagedRuleSetVersionExpiryDateInput) (*UpdateManagedRuleSetVersionExpiryDateOutput, error) {
  4712  	req, out := c.UpdateManagedRuleSetVersionExpiryDateRequest(input)
  4713  	return out, req.Send()
  4714  }
  4715  
  4716  // UpdateManagedRuleSetVersionExpiryDateWithContext is the same as UpdateManagedRuleSetVersionExpiryDate with the addition of
  4717  // the ability to pass a context and additional request options.
  4718  //
  4719  // See UpdateManagedRuleSetVersionExpiryDate for details on how to use this API operation.
  4720  //
  4721  // The context must be non-nil and will be used for request cancellation. If
  4722  // the context is nil a panic will occur. In the future the SDK may create
  4723  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4724  // for more information on using Contexts.
  4725  func (c *WAFV2) UpdateManagedRuleSetVersionExpiryDateWithContext(ctx aws.Context, input *UpdateManagedRuleSetVersionExpiryDateInput, opts ...request.Option) (*UpdateManagedRuleSetVersionExpiryDateOutput, error) {
  4726  	req, out := c.UpdateManagedRuleSetVersionExpiryDateRequest(input)
  4727  	req.SetContext(ctx)
  4728  	req.ApplyOptions(opts...)
  4729  	return out, req.Send()
  4730  }
  4731  
  4732  const opUpdateRegexPatternSet = "UpdateRegexPatternSet"
  4733  
  4734  // UpdateRegexPatternSetRequest generates a "aws/request.Request" representing the
  4735  // client's request for the UpdateRegexPatternSet operation. The "output" return
  4736  // value will be populated with the request's response once the request completes
  4737  // successfully.
  4738  //
  4739  // Use "Send" method on the returned Request to send the API call to the service.
  4740  // the "output" return value is not valid until after Send returns without error.
  4741  //
  4742  // See UpdateRegexPatternSet for more information on using the UpdateRegexPatternSet
  4743  // API call, and error handling.
  4744  //
  4745  // This method is useful when you want to inject custom logic or configuration
  4746  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4747  //
  4748  //
  4749  //    // Example sending a request using the UpdateRegexPatternSetRequest method.
  4750  //    req, resp := client.UpdateRegexPatternSetRequest(params)
  4751  //
  4752  //    err := req.Send()
  4753  //    if err == nil { // resp is now filled
  4754  //        fmt.Println(resp)
  4755  //    }
  4756  //
  4757  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UpdateRegexPatternSet
  4758  func (c *WAFV2) UpdateRegexPatternSetRequest(input *UpdateRegexPatternSetInput) (req *request.Request, output *UpdateRegexPatternSetOutput) {
  4759  	op := &request.Operation{
  4760  		Name:       opUpdateRegexPatternSet,
  4761  		HTTPMethod: "POST",
  4762  		HTTPPath:   "/",
  4763  	}
  4764  
  4765  	if input == nil {
  4766  		input = &UpdateRegexPatternSetInput{}
  4767  	}
  4768  
  4769  	output = &UpdateRegexPatternSetOutput{}
  4770  	req = c.newRequest(op, input, output)
  4771  	return
  4772  }
  4773  
  4774  // UpdateRegexPatternSet API operation for AWS WAFV2.
  4775  //
  4776  // Updates the specified RegexPatternSet.
  4777  //
  4778  // This operation completely replaces the mutable specifications that you already
  4779  // have for the regex pattern set with the ones that you provide to this call.
  4780  // To modify the regex pattern set, retrieve it by calling GetRegexPatternSet,
  4781  // update the settings as needed, and then provide the complete regex pattern
  4782  // set specification to this call.
  4783  //
  4784  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4785  // with awserr.Error's Code and Message methods to get detailed information about
  4786  // the error.
  4787  //
  4788  // See the AWS API reference guide for AWS WAFV2's
  4789  // API operation UpdateRegexPatternSet for usage and error information.
  4790  //
  4791  // Returned Error Types:
  4792  //   * WAFInternalErrorException
  4793  //   Your request is valid, but WAF couldn’t perform the operation because of
  4794  //   a system problem. Retry your request.
  4795  //
  4796  //   * WAFInvalidParameterException
  4797  //   The operation failed because WAF didn't recognize a parameter in the request.
  4798  //   For example:
  4799  //
  4800  //      * You specified a parameter name or value that isn't valid.
  4801  //
  4802  //      * Your nested statement isn't valid. You might have tried to nest a statement
  4803  //      that can’t be nested.
  4804  //
  4805  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  4806  //      types available at DefaultAction.
  4807  //
  4808  //      * Your request references an ARN that is malformed, or corresponds to
  4809  //      a resource with which a web ACL can't be associated.
  4810  //
  4811  //   * WAFNonexistentItemException
  4812  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  4813  //
  4814  //   * WAFDuplicateItemException
  4815  //   WAF couldn’t perform the operation because the resource that you tried
  4816  //   to save is a duplicate of an existing one.
  4817  //
  4818  //   * WAFOptimisticLockException
  4819  //   WAF couldn’t save your changes because you tried to update or delete a
  4820  //   resource that has changed since you last retrieved it. Get the resource again,
  4821  //   make any changes you need to make to the new copy, and retry your operation.
  4822  //
  4823  //   * WAFLimitsExceededException
  4824  //   WAF couldn’t perform the operation because you exceeded your resource limit.
  4825  //   For example, the maximum number of WebACL objects that you can create for
  4826  //   an Amazon Web Services account. For more information, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
  4827  //   in the WAF Developer Guide.
  4828  //
  4829  //   * WAFInvalidOperationException
  4830  //   The operation isn't valid.
  4831  //
  4832  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UpdateRegexPatternSet
  4833  func (c *WAFV2) UpdateRegexPatternSet(input *UpdateRegexPatternSetInput) (*UpdateRegexPatternSetOutput, error) {
  4834  	req, out := c.UpdateRegexPatternSetRequest(input)
  4835  	return out, req.Send()
  4836  }
  4837  
  4838  // UpdateRegexPatternSetWithContext is the same as UpdateRegexPatternSet with the addition of
  4839  // the ability to pass a context and additional request options.
  4840  //
  4841  // See UpdateRegexPatternSet for details on how to use this API operation.
  4842  //
  4843  // The context must be non-nil and will be used for request cancellation. If
  4844  // the context is nil a panic will occur. In the future the SDK may create
  4845  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4846  // for more information on using Contexts.
  4847  func (c *WAFV2) UpdateRegexPatternSetWithContext(ctx aws.Context, input *UpdateRegexPatternSetInput, opts ...request.Option) (*UpdateRegexPatternSetOutput, error) {
  4848  	req, out := c.UpdateRegexPatternSetRequest(input)
  4849  	req.SetContext(ctx)
  4850  	req.ApplyOptions(opts...)
  4851  	return out, req.Send()
  4852  }
  4853  
  4854  const opUpdateRuleGroup = "UpdateRuleGroup"
  4855  
  4856  // UpdateRuleGroupRequest generates a "aws/request.Request" representing the
  4857  // client's request for the UpdateRuleGroup operation. The "output" return
  4858  // value will be populated with the request's response once the request completes
  4859  // successfully.
  4860  //
  4861  // Use "Send" method on the returned Request to send the API call to the service.
  4862  // the "output" return value is not valid until after Send returns without error.
  4863  //
  4864  // See UpdateRuleGroup for more information on using the UpdateRuleGroup
  4865  // API call, and error handling.
  4866  //
  4867  // This method is useful when you want to inject custom logic or configuration
  4868  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4869  //
  4870  //
  4871  //    // Example sending a request using the UpdateRuleGroupRequest method.
  4872  //    req, resp := client.UpdateRuleGroupRequest(params)
  4873  //
  4874  //    err := req.Send()
  4875  //    if err == nil { // resp is now filled
  4876  //        fmt.Println(resp)
  4877  //    }
  4878  //
  4879  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UpdateRuleGroup
  4880  func (c *WAFV2) UpdateRuleGroupRequest(input *UpdateRuleGroupInput) (req *request.Request, output *UpdateRuleGroupOutput) {
  4881  	op := &request.Operation{
  4882  		Name:       opUpdateRuleGroup,
  4883  		HTTPMethod: "POST",
  4884  		HTTPPath:   "/",
  4885  	}
  4886  
  4887  	if input == nil {
  4888  		input = &UpdateRuleGroupInput{}
  4889  	}
  4890  
  4891  	output = &UpdateRuleGroupOutput{}
  4892  	req = c.newRequest(op, input, output)
  4893  	return
  4894  }
  4895  
  4896  // UpdateRuleGroup API operation for AWS WAFV2.
  4897  //
  4898  // Updates the specified RuleGroup.
  4899  //
  4900  // This operation completely replaces the mutable specifications that you already
  4901  // have for the rule group with the ones that you provide to this call. To modify
  4902  // the rule group, retrieve it by calling GetRuleGroup, update the settings
  4903  // as needed, and then provide the complete rule group specification to this
  4904  // call.
  4905  //
  4906  // A rule group defines a collection of rules to inspect and control web requests
  4907  // that you can use in a WebACL. When you create a rule group, you define an
  4908  // immutable capacity limit. If you update a rule group, you must stay within
  4909  // the capacity. This allows others to reuse the rule group with confidence
  4910  // in its capacity requirements.
  4911  //
  4912  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4913  // with awserr.Error's Code and Message methods to get detailed information about
  4914  // the error.
  4915  //
  4916  // See the AWS API reference guide for AWS WAFV2's
  4917  // API operation UpdateRuleGroup for usage and error information.
  4918  //
  4919  // Returned Error Types:
  4920  //   * WAFInternalErrorException
  4921  //   Your request is valid, but WAF couldn’t perform the operation because of
  4922  //   a system problem. Retry your request.
  4923  //
  4924  //   * WAFInvalidParameterException
  4925  //   The operation failed because WAF didn't recognize a parameter in the request.
  4926  //   For example:
  4927  //
  4928  //      * You specified a parameter name or value that isn't valid.
  4929  //
  4930  //      * Your nested statement isn't valid. You might have tried to nest a statement
  4931  //      that can’t be nested.
  4932  //
  4933  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  4934  //      types available at DefaultAction.
  4935  //
  4936  //      * Your request references an ARN that is malformed, or corresponds to
  4937  //      a resource with which a web ACL can't be associated.
  4938  //
  4939  //   * WAFNonexistentItemException
  4940  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  4941  //
  4942  //   * WAFDuplicateItemException
  4943  //   WAF couldn’t perform the operation because the resource that you tried
  4944  //   to save is a duplicate of an existing one.
  4945  //
  4946  //   * WAFOptimisticLockException
  4947  //   WAF couldn’t save your changes because you tried to update or delete a
  4948  //   resource that has changed since you last retrieved it. Get the resource again,
  4949  //   make any changes you need to make to the new copy, and retry your operation.
  4950  //
  4951  //   * WAFLimitsExceededException
  4952  //   WAF couldn’t perform the operation because you exceeded your resource limit.
  4953  //   For example, the maximum number of WebACL objects that you can create for
  4954  //   an Amazon Web Services account. For more information, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
  4955  //   in the WAF Developer Guide.
  4956  //
  4957  //   * WAFUnavailableEntityException
  4958  //   WAF couldn’t retrieve the resource that you requested. Retry your request.
  4959  //
  4960  //   * WAFSubscriptionNotFoundException
  4961  //   You tried to use a managed rule group that's available by subscription, but
  4962  //   you aren't subscribed to it yet.
  4963  //
  4964  //   * WAFInvalidOperationException
  4965  //   The operation isn't valid.
  4966  //
  4967  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UpdateRuleGroup
  4968  func (c *WAFV2) UpdateRuleGroup(input *UpdateRuleGroupInput) (*UpdateRuleGroupOutput, error) {
  4969  	req, out := c.UpdateRuleGroupRequest(input)
  4970  	return out, req.Send()
  4971  }
  4972  
  4973  // UpdateRuleGroupWithContext is the same as UpdateRuleGroup with the addition of
  4974  // the ability to pass a context and additional request options.
  4975  //
  4976  // See UpdateRuleGroup for details on how to use this API operation.
  4977  //
  4978  // The context must be non-nil and will be used for request cancellation. If
  4979  // the context is nil a panic will occur. In the future the SDK may create
  4980  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4981  // for more information on using Contexts.
  4982  func (c *WAFV2) UpdateRuleGroupWithContext(ctx aws.Context, input *UpdateRuleGroupInput, opts ...request.Option) (*UpdateRuleGroupOutput, error) {
  4983  	req, out := c.UpdateRuleGroupRequest(input)
  4984  	req.SetContext(ctx)
  4985  	req.ApplyOptions(opts...)
  4986  	return out, req.Send()
  4987  }
  4988  
  4989  const opUpdateWebACL = "UpdateWebACL"
  4990  
  4991  // UpdateWebACLRequest generates a "aws/request.Request" representing the
  4992  // client's request for the UpdateWebACL operation. The "output" return
  4993  // value will be populated with the request's response once the request completes
  4994  // successfully.
  4995  //
  4996  // Use "Send" method on the returned Request to send the API call to the service.
  4997  // the "output" return value is not valid until after Send returns without error.
  4998  //
  4999  // See UpdateWebACL for more information on using the UpdateWebACL
  5000  // API call, and error handling.
  5001  //
  5002  // This method is useful when you want to inject custom logic or configuration
  5003  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5004  //
  5005  //
  5006  //    // Example sending a request using the UpdateWebACLRequest method.
  5007  //    req, resp := client.UpdateWebACLRequest(params)
  5008  //
  5009  //    err := req.Send()
  5010  //    if err == nil { // resp is now filled
  5011  //        fmt.Println(resp)
  5012  //    }
  5013  //
  5014  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UpdateWebACL
  5015  func (c *WAFV2) UpdateWebACLRequest(input *UpdateWebACLInput) (req *request.Request, output *UpdateWebACLOutput) {
  5016  	op := &request.Operation{
  5017  		Name:       opUpdateWebACL,
  5018  		HTTPMethod: "POST",
  5019  		HTTPPath:   "/",
  5020  	}
  5021  
  5022  	if input == nil {
  5023  		input = &UpdateWebACLInput{}
  5024  	}
  5025  
  5026  	output = &UpdateWebACLOutput{}
  5027  	req = c.newRequest(op, input, output)
  5028  	return
  5029  }
  5030  
  5031  // UpdateWebACL API operation for AWS WAFV2.
  5032  //
  5033  // Updates the specified WebACL.
  5034  //
  5035  // This operation completely replaces the mutable specifications that you already
  5036  // have for the web ACL with the ones that you provide to this call. To modify
  5037  // the web ACL, retrieve it by calling GetWebACL, update the settings as needed,
  5038  // and then provide the complete web ACL specification to this call.
  5039  //
  5040  // A web ACL defines a collection of rules to use to inspect and control web
  5041  // requests. Each rule has an action defined (allow, block, or count) for requests
  5042  // that match the statement of the rule. In the web ACL, you assign a default
  5043  // action to take (allow, block) for any request that does not match any of
  5044  // the rules. The rules in a web ACL can be a combination of the types Rule,
  5045  // RuleGroup, and managed rule group. You can associate a web ACL with one or
  5046  // more Amazon Web Services resources to protect. The resources can be an Amazon
  5047  // CloudFront distribution, an Amazon API Gateway REST API, an Application Load
  5048  // Balancer, or an AppSync GraphQL API.
  5049  //
  5050  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5051  // with awserr.Error's Code and Message methods to get detailed information about
  5052  // the error.
  5053  //
  5054  // See the AWS API reference guide for AWS WAFV2's
  5055  // API operation UpdateWebACL for usage and error information.
  5056  //
  5057  // Returned Error Types:
  5058  //   * WAFInternalErrorException
  5059  //   Your request is valid, but WAF couldn’t perform the operation because of
  5060  //   a system problem. Retry your request.
  5061  //
  5062  //   * WAFInvalidParameterException
  5063  //   The operation failed because WAF didn't recognize a parameter in the request.
  5064  //   For example:
  5065  //
  5066  //      * You specified a parameter name or value that isn't valid.
  5067  //
  5068  //      * Your nested statement isn't valid. You might have tried to nest a statement
  5069  //      that can’t be nested.
  5070  //
  5071  //      * You tried to update a WebACL with a DefaultAction that isn't among the
  5072  //      types available at DefaultAction.
  5073  //
  5074  //      * Your request references an ARN that is malformed, or corresponds to
  5075  //      a resource with which a web ACL can't be associated.
  5076  //
  5077  //   * WAFNonexistentItemException
  5078  //   WAF couldn’t perform the operation because your resource doesn’t exist.
  5079  //
  5080  //   * WAFDuplicateItemException
  5081  //   WAF couldn’t perform the operation because the resource that you tried
  5082  //   to save is a duplicate of an existing one.
  5083  //
  5084  //   * WAFOptimisticLockException
  5085  //   WAF couldn’t save your changes because you tried to update or delete a
  5086  //   resource that has changed since you last retrieved it. Get the resource again,
  5087  //   make any changes you need to make to the new copy, and retry your operation.
  5088  //
  5089  //   * WAFLimitsExceededException
  5090  //   WAF couldn’t perform the operation because you exceeded your resource limit.
  5091  //   For example, the maximum number of WebACL objects that you can create for
  5092  //   an Amazon Web Services account. For more information, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
  5093  //   in the WAF Developer Guide.
  5094  //
  5095  //   * WAFInvalidResourceException
  5096  //   WAF couldn’t perform the operation because the resource that you requested
  5097  //   isn’t valid. Check the resource, and try again.
  5098  //
  5099  //   * WAFUnavailableEntityException
  5100  //   WAF couldn’t retrieve the resource that you requested. Retry your request.
  5101  //
  5102  //   * WAFSubscriptionNotFoundException
  5103  //   You tried to use a managed rule group that's available by subscription, but
  5104  //   you aren't subscribed to it yet.
  5105  //
  5106  //   * WAFInvalidOperationException
  5107  //   The operation isn't valid.
  5108  //
  5109  //   * WAFExpiredManagedRuleGroupVersionException
  5110  //   The operation failed because the specified version for the managed rule group
  5111  //   has expired. You can retrieve the available versions for the managed rule
  5112  //   group by calling ListAvailableManagedRuleGroupVersions.
  5113  //
  5114  // See also, https://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UpdateWebACL
  5115  func (c *WAFV2) UpdateWebACL(input *UpdateWebACLInput) (*UpdateWebACLOutput, error) {
  5116  	req, out := c.UpdateWebACLRequest(input)
  5117  	return out, req.Send()
  5118  }
  5119  
  5120  // UpdateWebACLWithContext is the same as UpdateWebACL with the addition of
  5121  // the ability to pass a context and additional request options.
  5122  //
  5123  // See UpdateWebACL for details on how to use this API operation.
  5124  //
  5125  // The context must be non-nil and will be used for request cancellation. If
  5126  // the context is nil a panic will occur. In the future the SDK may create
  5127  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5128  // for more information on using Contexts.
  5129  func (c *WAFV2) UpdateWebACLWithContext(ctx aws.Context, input *UpdateWebACLInput, opts ...request.Option) (*UpdateWebACLOutput, error) {
  5130  	req, out := c.UpdateWebACLRequest(input)
  5131  	req.SetContext(ctx)
  5132  	req.ApplyOptions(opts...)
  5133  	return out, req.Send()
  5134  }
  5135  
  5136  // A single action condition for a Condition in a logging filter.
  5137  type ActionCondition struct {
  5138  	_ struct{} `type:"structure"`
  5139  
  5140  	// The action setting that a log record must contain in order to meet the condition.
  5141  	//
  5142  	// Action is a required field
  5143  	Action *string `type:"string" required:"true" enum:"ActionValue"`
  5144  }
  5145  
  5146  // String returns the string representation.
  5147  //
  5148  // API parameter values that are decorated as "sensitive" in the API will not
  5149  // be included in the string output. The member name will be present, but the
  5150  // value will be replaced with "sensitive".
  5151  func (s ActionCondition) String() string {
  5152  	return awsutil.Prettify(s)
  5153  }
  5154  
  5155  // GoString returns the string representation.
  5156  //
  5157  // API parameter values that are decorated as "sensitive" in the API will not
  5158  // be included in the string output. The member name will be present, but the
  5159  // value will be replaced with "sensitive".
  5160  func (s ActionCondition) GoString() string {
  5161  	return s.String()
  5162  }
  5163  
  5164  // Validate inspects the fields of the type to determine if they are valid.
  5165  func (s *ActionCondition) Validate() error {
  5166  	invalidParams := request.ErrInvalidParams{Context: "ActionCondition"}
  5167  	if s.Action == nil {
  5168  		invalidParams.Add(request.NewErrParamRequired("Action"))
  5169  	}
  5170  
  5171  	if invalidParams.Len() > 0 {
  5172  		return invalidParams
  5173  	}
  5174  	return nil
  5175  }
  5176  
  5177  // SetAction sets the Action field's value.
  5178  func (s *ActionCondition) SetAction(v string) *ActionCondition {
  5179  	s.Action = &v
  5180  	return s
  5181  }
  5182  
  5183  // Inspect all of the elements that WAF has parsed and extracted from the web
  5184  // request JSON body that are within the JsonBody MatchScope. This is used with
  5185  // the FieldToMatch option JsonBody.
  5186  //
  5187  // This is used only to indicate the web request component for WAF to inspect,
  5188  // in the FieldToMatch specification.
  5189  //
  5190  // JSON specification: "All": {}
  5191  type All struct {
  5192  	_ struct{} `type:"structure"`
  5193  }
  5194  
  5195  // String returns the string representation.
  5196  //
  5197  // API parameter values that are decorated as "sensitive" in the API will not
  5198  // be included in the string output. The member name will be present, but the
  5199  // value will be replaced with "sensitive".
  5200  func (s All) String() string {
  5201  	return awsutil.Prettify(s)
  5202  }
  5203  
  5204  // GoString returns the string representation.
  5205  //
  5206  // API parameter values that are decorated as "sensitive" in the API will not
  5207  // be included in the string output. The member name will be present, but the
  5208  // value will be replaced with "sensitive".
  5209  func (s All) GoString() string {
  5210  	return s.String()
  5211  }
  5212  
  5213  // All query arguments of a web request.
  5214  //
  5215  // This is used only to indicate the web request component for WAF to inspect,
  5216  // in the FieldToMatch specification.
  5217  //
  5218  // JSON specification: "AllQueryArguments": {}
  5219  type AllQueryArguments struct {
  5220  	_ struct{} `type:"structure"`
  5221  }
  5222  
  5223  // String returns the string representation.
  5224  //
  5225  // API parameter values that are decorated as "sensitive" in the API will not
  5226  // be included in the string output. The member name will be present, but the
  5227  // value will be replaced with "sensitive".
  5228  func (s AllQueryArguments) String() string {
  5229  	return awsutil.Prettify(s)
  5230  }
  5231  
  5232  // GoString returns the string representation.
  5233  //
  5234  // API parameter values that are decorated as "sensitive" in the API will not
  5235  // be included in the string output. The member name will be present, but the
  5236  // value will be replaced with "sensitive".
  5237  func (s AllQueryArguments) GoString() string {
  5238  	return s.String()
  5239  }
  5240  
  5241  // Specifies that WAF should allow the request and optionally defines additional
  5242  // custom handling for the request.
  5243  //
  5244  // This is used in the context of other settings, for example to specify values
  5245  // for RuleAction and web ACL DefaultAction.
  5246  type AllowAction struct {
  5247  	_ struct{} `type:"structure"`
  5248  
  5249  	// Defines custom handling for the web request.
  5250  	//
  5251  	// For information about customizing web requests and responses, see Customizing
  5252  	// web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
  5253  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
  5254  	CustomRequestHandling *CustomRequestHandling `type:"structure"`
  5255  }
  5256  
  5257  // String returns the string representation.
  5258  //
  5259  // API parameter values that are decorated as "sensitive" in the API will not
  5260  // be included in the string output. The member name will be present, but the
  5261  // value will be replaced with "sensitive".
  5262  func (s AllowAction) String() string {
  5263  	return awsutil.Prettify(s)
  5264  }
  5265  
  5266  // GoString returns the string representation.
  5267  //
  5268  // API parameter values that are decorated as "sensitive" in the API will not
  5269  // be included in the string output. The member name will be present, but the
  5270  // value will be replaced with "sensitive".
  5271  func (s AllowAction) GoString() string {
  5272  	return s.String()
  5273  }
  5274  
  5275  // Validate inspects the fields of the type to determine if they are valid.
  5276  func (s *AllowAction) Validate() error {
  5277  	invalidParams := request.ErrInvalidParams{Context: "AllowAction"}
  5278  	if s.CustomRequestHandling != nil {
  5279  		if err := s.CustomRequestHandling.Validate(); err != nil {
  5280  			invalidParams.AddNested("CustomRequestHandling", err.(request.ErrInvalidParams))
  5281  		}
  5282  	}
  5283  
  5284  	if invalidParams.Len() > 0 {
  5285  		return invalidParams
  5286  	}
  5287  	return nil
  5288  }
  5289  
  5290  // SetCustomRequestHandling sets the CustomRequestHandling field's value.
  5291  func (s *AllowAction) SetCustomRequestHandling(v *CustomRequestHandling) *AllowAction {
  5292  	s.CustomRequestHandling = v
  5293  	return s
  5294  }
  5295  
  5296  // A logical rule statement used to combine other rule statements with AND logic.
  5297  // You provide more than one Statement within the AndStatement.
  5298  type AndStatement struct {
  5299  	_ struct{} `type:"structure"`
  5300  
  5301  	// The statements to combine with AND logic. You can use any statements that
  5302  	// can be nested.
  5303  	//
  5304  	// Statements is a required field
  5305  	Statements []*Statement `type:"list" required:"true"`
  5306  }
  5307  
  5308  // String returns the string representation.
  5309  //
  5310  // API parameter values that are decorated as "sensitive" in the API will not
  5311  // be included in the string output. The member name will be present, but the
  5312  // value will be replaced with "sensitive".
  5313  func (s AndStatement) String() string {
  5314  	return awsutil.Prettify(s)
  5315  }
  5316  
  5317  // GoString returns the string representation.
  5318  //
  5319  // API parameter values that are decorated as "sensitive" in the API will not
  5320  // be included in the string output. The member name will be present, but the
  5321  // value will be replaced with "sensitive".
  5322  func (s AndStatement) GoString() string {
  5323  	return s.String()
  5324  }
  5325  
  5326  // Validate inspects the fields of the type to determine if they are valid.
  5327  func (s *AndStatement) Validate() error {
  5328  	invalidParams := request.ErrInvalidParams{Context: "AndStatement"}
  5329  	if s.Statements == nil {
  5330  		invalidParams.Add(request.NewErrParamRequired("Statements"))
  5331  	}
  5332  
  5333  	if invalidParams.Len() > 0 {
  5334  		return invalidParams
  5335  	}
  5336  	return nil
  5337  }
  5338  
  5339  // SetStatements sets the Statements field's value.
  5340  func (s *AndStatement) SetStatements(v []*Statement) *AndStatement {
  5341  	s.Statements = v
  5342  	return s
  5343  }
  5344  
  5345  type AssociateWebACLInput struct {
  5346  	_ struct{} `type:"structure"`
  5347  
  5348  	// The Amazon Resource Name (ARN) of the resource to associate with the web
  5349  	// ACL.
  5350  	//
  5351  	// The ARN must be in one of the following formats:
  5352  	//
  5353  	//    * For an Application Load Balancer: arn:aws:elasticloadbalancing:region:account-id:loadbalancer/app/load-balancer-name/load-balancer-id
  5354  	//
  5355  	//    * For an Amazon API Gateway REST API: arn:aws:apigateway:region::/restapis/api-id/stages/stage-name
  5356  	//
  5357  	//    * For an AppSync GraphQL API: arn:aws:appsync:region:account-id:apis/GraphQLApiId
  5358  	//
  5359  	// ResourceArn is a required field
  5360  	ResourceArn *string `min:"20" type:"string" required:"true"`
  5361  
  5362  	// The Amazon Resource Name (ARN) of the web ACL that you want to associate
  5363  	// with the resource.
  5364  	//
  5365  	// WebACLArn is a required field
  5366  	WebACLArn *string `min:"20" type:"string" required:"true"`
  5367  }
  5368  
  5369  // String returns the string representation.
  5370  //
  5371  // API parameter values that are decorated as "sensitive" in the API will not
  5372  // be included in the string output. The member name will be present, but the
  5373  // value will be replaced with "sensitive".
  5374  func (s AssociateWebACLInput) String() string {
  5375  	return awsutil.Prettify(s)
  5376  }
  5377  
  5378  // GoString returns the string representation.
  5379  //
  5380  // API parameter values that are decorated as "sensitive" in the API will not
  5381  // be included in the string output. The member name will be present, but the
  5382  // value will be replaced with "sensitive".
  5383  func (s AssociateWebACLInput) GoString() string {
  5384  	return s.String()
  5385  }
  5386  
  5387  // Validate inspects the fields of the type to determine if they are valid.
  5388  func (s *AssociateWebACLInput) Validate() error {
  5389  	invalidParams := request.ErrInvalidParams{Context: "AssociateWebACLInput"}
  5390  	if s.ResourceArn == nil {
  5391  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  5392  	}
  5393  	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
  5394  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
  5395  	}
  5396  	if s.WebACLArn == nil {
  5397  		invalidParams.Add(request.NewErrParamRequired("WebACLArn"))
  5398  	}
  5399  	if s.WebACLArn != nil && len(*s.WebACLArn) < 20 {
  5400  		invalidParams.Add(request.NewErrParamMinLen("WebACLArn", 20))
  5401  	}
  5402  
  5403  	if invalidParams.Len() > 0 {
  5404  		return invalidParams
  5405  	}
  5406  	return nil
  5407  }
  5408  
  5409  // SetResourceArn sets the ResourceArn field's value.
  5410  func (s *AssociateWebACLInput) SetResourceArn(v string) *AssociateWebACLInput {
  5411  	s.ResourceArn = &v
  5412  	return s
  5413  }
  5414  
  5415  // SetWebACLArn sets the WebACLArn field's value.
  5416  func (s *AssociateWebACLInput) SetWebACLArn(v string) *AssociateWebACLInput {
  5417  	s.WebACLArn = &v
  5418  	return s
  5419  }
  5420  
  5421  type AssociateWebACLOutput struct {
  5422  	_ struct{} `type:"structure"`
  5423  }
  5424  
  5425  // String returns the string representation.
  5426  //
  5427  // API parameter values that are decorated as "sensitive" in the API will not
  5428  // be included in the string output. The member name will be present, but the
  5429  // value will be replaced with "sensitive".
  5430  func (s AssociateWebACLOutput) String() string {
  5431  	return awsutil.Prettify(s)
  5432  }
  5433  
  5434  // GoString returns the string representation.
  5435  //
  5436  // API parameter values that are decorated as "sensitive" in the API will not
  5437  // be included in the string output. The member name will be present, but the
  5438  // value will be replaced with "sensitive".
  5439  func (s AssociateWebACLOutput) GoString() string {
  5440  	return s.String()
  5441  }
  5442  
  5443  // Specifies that WAF should block the request and optionally defines additional
  5444  // custom handling for the response to the web request.
  5445  //
  5446  // This is used in the context of other settings, for example to specify values
  5447  // for RuleAction and web ACL DefaultAction.
  5448  type BlockAction struct {
  5449  	_ struct{} `type:"structure"`
  5450  
  5451  	// Defines a custom response for the web request.
  5452  	//
  5453  	// For information about customizing web requests and responses, see Customizing
  5454  	// web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
  5455  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
  5456  	CustomResponse *CustomResponse `type:"structure"`
  5457  }
  5458  
  5459  // String 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 BlockAction) String() string {
  5465  	return awsutil.Prettify(s)
  5466  }
  5467  
  5468  // GoString returns the string representation.
  5469  //
  5470  // API parameter values that are decorated as "sensitive" in the API will not
  5471  // be included in the string output. The member name will be present, but the
  5472  // value will be replaced with "sensitive".
  5473  func (s BlockAction) GoString() string {
  5474  	return s.String()
  5475  }
  5476  
  5477  // Validate inspects the fields of the type to determine if they are valid.
  5478  func (s *BlockAction) Validate() error {
  5479  	invalidParams := request.ErrInvalidParams{Context: "BlockAction"}
  5480  	if s.CustomResponse != nil {
  5481  		if err := s.CustomResponse.Validate(); err != nil {
  5482  			invalidParams.AddNested("CustomResponse", err.(request.ErrInvalidParams))
  5483  		}
  5484  	}
  5485  
  5486  	if invalidParams.Len() > 0 {
  5487  		return invalidParams
  5488  	}
  5489  	return nil
  5490  }
  5491  
  5492  // SetCustomResponse sets the CustomResponse field's value.
  5493  func (s *BlockAction) SetCustomResponse(v *CustomResponse) *BlockAction {
  5494  	s.CustomResponse = v
  5495  	return s
  5496  }
  5497  
  5498  // The body of a web request. This immediately follows the request headers.
  5499  //
  5500  // This is used only to indicate the web request component for WAF to inspect,
  5501  // in the FieldToMatch specification.
  5502  //
  5503  // JSON specification: "Body": {}
  5504  type Body struct {
  5505  	_ struct{} `type:"structure"`
  5506  }
  5507  
  5508  // String returns the string representation.
  5509  //
  5510  // API parameter values that are decorated as "sensitive" in the API will not
  5511  // be included in the string output. The member name will be present, but the
  5512  // value will be replaced with "sensitive".
  5513  func (s Body) String() string {
  5514  	return awsutil.Prettify(s)
  5515  }
  5516  
  5517  // GoString returns the string representation.
  5518  //
  5519  // API parameter values that are decorated as "sensitive" in the API will not
  5520  // be included in the string output. The member name will be present, but the
  5521  // value will be replaced with "sensitive".
  5522  func (s Body) GoString() string {
  5523  	return s.String()
  5524  }
  5525  
  5526  // A rule statement that defines a string match search for WAF to apply to web
  5527  // requests. The byte match statement provides the bytes to search for, the
  5528  // location in requests that you want WAF to search, and other settings. The
  5529  // bytes to search for are typically a string that corresponds with ASCII characters.
  5530  // In the WAF console and the developer guide, this is refered to as a string
  5531  // match statement.
  5532  type ByteMatchStatement struct {
  5533  	_ struct{} `type:"structure"`
  5534  
  5535  	// The part of a web request that you want WAF to inspect. For more information,
  5536  	// see FieldToMatch.
  5537  	//
  5538  	// FieldToMatch is a required field
  5539  	FieldToMatch *FieldToMatch `type:"structure" required:"true"`
  5540  
  5541  	// The area within the portion of a web request that you want WAF to search
  5542  	// for SearchString. Valid values include the following:
  5543  	//
  5544  	// CONTAINS
  5545  	//
  5546  	// The specified part of the web request must include the value of SearchString,
  5547  	// but the location doesn't matter.
  5548  	//
  5549  	// CONTAINS_WORD
  5550  	//
  5551  	// The specified part of the web request must include the value of SearchString,
  5552  	// and SearchString must contain only alphanumeric characters or underscore
  5553  	// (A-Z, a-z, 0-9, or _). In addition, SearchString must be a word, which means
  5554  	// that both of the following are true:
  5555  	//
  5556  	//    * SearchString is at the beginning of the specified part of the web request
  5557  	//    or is preceded by a character other than an alphanumeric character or
  5558  	//    underscore (_). Examples include the value of a header and ;BadBot.
  5559  	//
  5560  	//    * SearchString is at the end of the specified part of the web request
  5561  	//    or is followed by a character other than an alphanumeric character or
  5562  	//    underscore (_), for example, BadBot; and -BadBot;.
  5563  	//
  5564  	// EXACTLY
  5565  	//
  5566  	// The value of the specified part of the web request must exactly match the
  5567  	// value of SearchString.
  5568  	//
  5569  	// STARTS_WITH
  5570  	//
  5571  	// The value of SearchString must appear at the beginning of the specified part
  5572  	// of the web request.
  5573  	//
  5574  	// ENDS_WITH
  5575  	//
  5576  	// The value of SearchString must appear at the end of the specified part of
  5577  	// the web request.
  5578  	//
  5579  	// PositionalConstraint is a required field
  5580  	PositionalConstraint *string `type:"string" required:"true" enum:"PositionalConstraint"`
  5581  
  5582  	// A string value that you want WAF to search for. WAF searches only in the
  5583  	// part of web requests that you designate for inspection in FieldToMatch. The
  5584  	// maximum length of the value is 50 bytes.
  5585  	//
  5586  	// Valid values depend on the component that you specify for inspection in FieldToMatch:
  5587  	//
  5588  	//    * Method: The HTTP method that you want WAF to search for. This indicates
  5589  	//    the type of operation specified in the request.
  5590  	//
  5591  	//    * UriPath: The value that you want WAF to search for in the URI path,
  5592  	//    for example, /images/daily-ad.jpg.
  5593  	//
  5594  	// If SearchString includes alphabetic characters A-Z and a-z, note that the
  5595  	// value is case sensitive.
  5596  	//
  5597  	// If you're using the WAF API
  5598  	//
  5599  	// Specify a base64-encoded version of the value. The maximum length of the
  5600  	// value before you base64-encode it is 50 bytes.
  5601  	//
  5602  	// For example, suppose the value of Type is HEADER and the value of Data is
  5603  	// User-Agent. If you want to search the User-Agent header for the value BadBot,
  5604  	// you base64-encode BadBot using MIME base64-encoding and include the resulting
  5605  	// value, QmFkQm90, in the value of SearchString.
  5606  	//
  5607  	// If you're using the CLI or one of the Amazon Web Services SDKs
  5608  	//
  5609  	// The value that you want WAF to search for. The SDK automatically base64 encodes
  5610  	// the value.
  5611  	// SearchString is automatically base64 encoded/decoded by the SDK.
  5612  	//
  5613  	// SearchString is a required field
  5614  	SearchString []byte `type:"blob" required:"true"`
  5615  
  5616  	// Text transformations eliminate some of the unusual formatting that attackers
  5617  	// use in web requests in an effort to bypass detection. If you specify one
  5618  	// or more transformations in a rule statement, WAF performs all transformations
  5619  	// on the content of the request component identified by FieldToMatch, starting
  5620  	// from the lowest priority setting, before inspecting the content for a match.
  5621  	//
  5622  	// TextTransformations is a required field
  5623  	TextTransformations []*TextTransformation `min:"1" type:"list" required:"true"`
  5624  }
  5625  
  5626  // String returns the string representation.
  5627  //
  5628  // API parameter values that are decorated as "sensitive" in the API will not
  5629  // be included in the string output. The member name will be present, but the
  5630  // value will be replaced with "sensitive".
  5631  func (s ByteMatchStatement) String() string {
  5632  	return awsutil.Prettify(s)
  5633  }
  5634  
  5635  // GoString returns the string representation.
  5636  //
  5637  // API parameter values that are decorated as "sensitive" in the API will not
  5638  // be included in the string output. The member name will be present, but the
  5639  // value will be replaced with "sensitive".
  5640  func (s ByteMatchStatement) GoString() string {
  5641  	return s.String()
  5642  }
  5643  
  5644  // Validate inspects the fields of the type to determine if they are valid.
  5645  func (s *ByteMatchStatement) Validate() error {
  5646  	invalidParams := request.ErrInvalidParams{Context: "ByteMatchStatement"}
  5647  	if s.FieldToMatch == nil {
  5648  		invalidParams.Add(request.NewErrParamRequired("FieldToMatch"))
  5649  	}
  5650  	if s.PositionalConstraint == nil {
  5651  		invalidParams.Add(request.NewErrParamRequired("PositionalConstraint"))
  5652  	}
  5653  	if s.SearchString == nil {
  5654  		invalidParams.Add(request.NewErrParamRequired("SearchString"))
  5655  	}
  5656  	if s.TextTransformations == nil {
  5657  		invalidParams.Add(request.NewErrParamRequired("TextTransformations"))
  5658  	}
  5659  	if s.TextTransformations != nil && len(s.TextTransformations) < 1 {
  5660  		invalidParams.Add(request.NewErrParamMinLen("TextTransformations", 1))
  5661  	}
  5662  	if s.FieldToMatch != nil {
  5663  		if err := s.FieldToMatch.Validate(); err != nil {
  5664  			invalidParams.AddNested("FieldToMatch", err.(request.ErrInvalidParams))
  5665  		}
  5666  	}
  5667  	if s.TextTransformations != nil {
  5668  		for i, v := range s.TextTransformations {
  5669  			if v == nil {
  5670  				continue
  5671  			}
  5672  			if err := v.Validate(); err != nil {
  5673  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TextTransformations", i), err.(request.ErrInvalidParams))
  5674  			}
  5675  		}
  5676  	}
  5677  
  5678  	if invalidParams.Len() > 0 {
  5679  		return invalidParams
  5680  	}
  5681  	return nil
  5682  }
  5683  
  5684  // SetFieldToMatch sets the FieldToMatch field's value.
  5685  func (s *ByteMatchStatement) SetFieldToMatch(v *FieldToMatch) *ByteMatchStatement {
  5686  	s.FieldToMatch = v
  5687  	return s
  5688  }
  5689  
  5690  // SetPositionalConstraint sets the PositionalConstraint field's value.
  5691  func (s *ByteMatchStatement) SetPositionalConstraint(v string) *ByteMatchStatement {
  5692  	s.PositionalConstraint = &v
  5693  	return s
  5694  }
  5695  
  5696  // SetSearchString sets the SearchString field's value.
  5697  func (s *ByteMatchStatement) SetSearchString(v []byte) *ByteMatchStatement {
  5698  	s.SearchString = v
  5699  	return s
  5700  }
  5701  
  5702  // SetTextTransformations sets the TextTransformations field's value.
  5703  func (s *ByteMatchStatement) SetTextTransformations(v []*TextTransformation) *ByteMatchStatement {
  5704  	s.TextTransformations = v
  5705  	return s
  5706  }
  5707  
  5708  type CheckCapacityInput struct {
  5709  	_ struct{} `type:"structure"`
  5710  
  5711  	// An array of Rule that you're configuring to use in a rule group or web ACL.
  5712  	//
  5713  	// Rules is a required field
  5714  	Rules []*Rule `type:"list" required:"true"`
  5715  
  5716  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  5717  	// regional application. A regional application can be an Application Load Balancer
  5718  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  5719  	//
  5720  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  5721  	// as follows:
  5722  	//
  5723  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  5724  	//    --region=us-east-1.
  5725  	//
  5726  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  5727  	//
  5728  	// Scope is a required field
  5729  	Scope *string `type:"string" required:"true" enum:"Scope"`
  5730  }
  5731  
  5732  // String returns the string representation.
  5733  //
  5734  // API parameter values that are decorated as "sensitive" in the API will not
  5735  // be included in the string output. The member name will be present, but the
  5736  // value will be replaced with "sensitive".
  5737  func (s CheckCapacityInput) String() string {
  5738  	return awsutil.Prettify(s)
  5739  }
  5740  
  5741  // GoString returns the string representation.
  5742  //
  5743  // API parameter values that are decorated as "sensitive" in the API will not
  5744  // be included in the string output. The member name will be present, but the
  5745  // value will be replaced with "sensitive".
  5746  func (s CheckCapacityInput) GoString() string {
  5747  	return s.String()
  5748  }
  5749  
  5750  // Validate inspects the fields of the type to determine if they are valid.
  5751  func (s *CheckCapacityInput) Validate() error {
  5752  	invalidParams := request.ErrInvalidParams{Context: "CheckCapacityInput"}
  5753  	if s.Rules == nil {
  5754  		invalidParams.Add(request.NewErrParamRequired("Rules"))
  5755  	}
  5756  	if s.Scope == nil {
  5757  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  5758  	}
  5759  	if s.Rules != nil {
  5760  		for i, v := range s.Rules {
  5761  			if v == nil {
  5762  				continue
  5763  			}
  5764  			if err := v.Validate(); err != nil {
  5765  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
  5766  			}
  5767  		}
  5768  	}
  5769  
  5770  	if invalidParams.Len() > 0 {
  5771  		return invalidParams
  5772  	}
  5773  	return nil
  5774  }
  5775  
  5776  // SetRules sets the Rules field's value.
  5777  func (s *CheckCapacityInput) SetRules(v []*Rule) *CheckCapacityInput {
  5778  	s.Rules = v
  5779  	return s
  5780  }
  5781  
  5782  // SetScope sets the Scope field's value.
  5783  func (s *CheckCapacityInput) SetScope(v string) *CheckCapacityInput {
  5784  	s.Scope = &v
  5785  	return s
  5786  }
  5787  
  5788  type CheckCapacityOutput struct {
  5789  	_ struct{} `type:"structure"`
  5790  
  5791  	// The capacity required by the rules and scope.
  5792  	Capacity *int64 `type:"long"`
  5793  }
  5794  
  5795  // String returns the string representation.
  5796  //
  5797  // API parameter values that are decorated as "sensitive" in the API will not
  5798  // be included in the string output. The member name will be present, but the
  5799  // value will be replaced with "sensitive".
  5800  func (s CheckCapacityOutput) String() string {
  5801  	return awsutil.Prettify(s)
  5802  }
  5803  
  5804  // GoString returns the string representation.
  5805  //
  5806  // API parameter values that are decorated as "sensitive" in the API will not
  5807  // be included in the string output. The member name will be present, but the
  5808  // value will be replaced with "sensitive".
  5809  func (s CheckCapacityOutput) GoString() string {
  5810  	return s.String()
  5811  }
  5812  
  5813  // SetCapacity sets the Capacity field's value.
  5814  func (s *CheckCapacityOutput) SetCapacity(v int64) *CheckCapacityOutput {
  5815  	s.Capacity = &v
  5816  	return s
  5817  }
  5818  
  5819  // A single match condition for a Filter.
  5820  type Condition struct {
  5821  	_ struct{} `type:"structure"`
  5822  
  5823  	// A single action condition.
  5824  	ActionCondition *ActionCondition `type:"structure"`
  5825  
  5826  	// A single label name condition.
  5827  	LabelNameCondition *LabelNameCondition `type:"structure"`
  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 Condition) 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 Condition) GoString() string {
  5845  	return s.String()
  5846  }
  5847  
  5848  // Validate inspects the fields of the type to determine if they are valid.
  5849  func (s *Condition) Validate() error {
  5850  	invalidParams := request.ErrInvalidParams{Context: "Condition"}
  5851  	if s.ActionCondition != nil {
  5852  		if err := s.ActionCondition.Validate(); err != nil {
  5853  			invalidParams.AddNested("ActionCondition", err.(request.ErrInvalidParams))
  5854  		}
  5855  	}
  5856  	if s.LabelNameCondition != nil {
  5857  		if err := s.LabelNameCondition.Validate(); err != nil {
  5858  			invalidParams.AddNested("LabelNameCondition", err.(request.ErrInvalidParams))
  5859  		}
  5860  	}
  5861  
  5862  	if invalidParams.Len() > 0 {
  5863  		return invalidParams
  5864  	}
  5865  	return nil
  5866  }
  5867  
  5868  // SetActionCondition sets the ActionCondition field's value.
  5869  func (s *Condition) SetActionCondition(v *ActionCondition) *Condition {
  5870  	s.ActionCondition = v
  5871  	return s
  5872  }
  5873  
  5874  // SetLabelNameCondition sets the LabelNameCondition field's value.
  5875  func (s *Condition) SetLabelNameCondition(v *LabelNameCondition) *Condition {
  5876  	s.LabelNameCondition = v
  5877  	return s
  5878  }
  5879  
  5880  // Specifies that WAF should count the request. Optionally defines additional
  5881  // custom handling for the request.
  5882  //
  5883  // This is used in the context of other settings, for example to specify values
  5884  // for RuleAction and web ACL DefaultAction.
  5885  type CountAction struct {
  5886  	_ struct{} `type:"structure"`
  5887  
  5888  	// Defines custom handling for the web request.
  5889  	//
  5890  	// For information about customizing web requests and responses, see Customizing
  5891  	// web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
  5892  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
  5893  	CustomRequestHandling *CustomRequestHandling `type:"structure"`
  5894  }
  5895  
  5896  // String returns the string representation.
  5897  //
  5898  // API parameter values that are decorated as "sensitive" in the API will not
  5899  // be included in the string output. The member name will be present, but the
  5900  // value will be replaced with "sensitive".
  5901  func (s CountAction) String() string {
  5902  	return awsutil.Prettify(s)
  5903  }
  5904  
  5905  // GoString returns the string representation.
  5906  //
  5907  // API parameter values that are decorated as "sensitive" in the API will not
  5908  // be included in the string output. The member name will be present, but the
  5909  // value will be replaced with "sensitive".
  5910  func (s CountAction) GoString() string {
  5911  	return s.String()
  5912  }
  5913  
  5914  // Validate inspects the fields of the type to determine if they are valid.
  5915  func (s *CountAction) Validate() error {
  5916  	invalidParams := request.ErrInvalidParams{Context: "CountAction"}
  5917  	if s.CustomRequestHandling != nil {
  5918  		if err := s.CustomRequestHandling.Validate(); err != nil {
  5919  			invalidParams.AddNested("CustomRequestHandling", err.(request.ErrInvalidParams))
  5920  		}
  5921  	}
  5922  
  5923  	if invalidParams.Len() > 0 {
  5924  		return invalidParams
  5925  	}
  5926  	return nil
  5927  }
  5928  
  5929  // SetCustomRequestHandling sets the CustomRequestHandling field's value.
  5930  func (s *CountAction) SetCustomRequestHandling(v *CustomRequestHandling) *CountAction {
  5931  	s.CustomRequestHandling = v
  5932  	return s
  5933  }
  5934  
  5935  type CreateIPSetInput struct {
  5936  	_ struct{} `type:"structure"`
  5937  
  5938  	// Contains an array of strings that specify one or more IP addresses or blocks
  5939  	// of IP addresses in Classless Inter-Domain Routing (CIDR) notation. WAF supports
  5940  	// all IPv4 and IPv6 CIDR ranges except for /0.
  5941  	//
  5942  	// Examples:
  5943  	//
  5944  	//    * To configure WAF to allow, block, or count requests that originated
  5945  	//    from the IP address 192.0.2.44, specify 192.0.2.44/32.
  5946  	//
  5947  	//    * To configure WAF to allow, block, or count requests that originated
  5948  	//    from IP addresses from 192.0.2.0 to 192.0.2.255, specify 192.0.2.0/24.
  5949  	//
  5950  	//    * To configure WAF to allow, block, or count requests that originated
  5951  	//    from the IP address 1111:0000:0000:0000:0000:0000:0000:0111, specify 1111:0000:0000:0000:0000:0000:0000:0111/128.
  5952  	//
  5953  	//    * To configure WAF to allow, block, or count requests that originated
  5954  	//    from IP addresses 1111:0000:0000:0000:0000:0000:0000:0000 to 1111:0000:0000:0000:ffff:ffff:ffff:ffff,
  5955  	//    specify 1111:0000:0000:0000:0000:0000:0000:0000/64.
  5956  	//
  5957  	// For more information about CIDR notation, see the Wikipedia entry Classless
  5958  	// Inter-Domain Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
  5959  	//
  5960  	// Addresses is a required field
  5961  	Addresses []*string `type:"list" required:"true"`
  5962  
  5963  	// A description of the IP set that helps with identification.
  5964  	Description *string `min:"1" type:"string"`
  5965  
  5966  	// The version of the IP addresses, either IPV4 or IPV6.
  5967  	//
  5968  	// IPAddressVersion is a required field
  5969  	IPAddressVersion *string `type:"string" required:"true" enum:"IPAddressVersion"`
  5970  
  5971  	// The name of the IP set. You cannot change the name of an IPSet after you
  5972  	// create it.
  5973  	//
  5974  	// Name is a required field
  5975  	Name *string `min:"1" type:"string" required:"true"`
  5976  
  5977  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  5978  	// regional application. A regional application can be an Application Load Balancer
  5979  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  5980  	//
  5981  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  5982  	// as follows:
  5983  	//
  5984  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  5985  	//    --region=us-east-1.
  5986  	//
  5987  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  5988  	//
  5989  	// Scope is a required field
  5990  	Scope *string `type:"string" required:"true" enum:"Scope"`
  5991  
  5992  	// An array of key:value pairs to associate with the resource.
  5993  	Tags []*Tag `min:"1" type:"list"`
  5994  }
  5995  
  5996  // String returns the string representation.
  5997  //
  5998  // API parameter values that are decorated as "sensitive" in the API will not
  5999  // be included in the string output. The member name will be present, but the
  6000  // value will be replaced with "sensitive".
  6001  func (s CreateIPSetInput) String() string {
  6002  	return awsutil.Prettify(s)
  6003  }
  6004  
  6005  // GoString returns the string representation.
  6006  //
  6007  // API parameter values that are decorated as "sensitive" in the API will not
  6008  // be included in the string output. The member name will be present, but the
  6009  // value will be replaced with "sensitive".
  6010  func (s CreateIPSetInput) GoString() string {
  6011  	return s.String()
  6012  }
  6013  
  6014  // Validate inspects the fields of the type to determine if they are valid.
  6015  func (s *CreateIPSetInput) Validate() error {
  6016  	invalidParams := request.ErrInvalidParams{Context: "CreateIPSetInput"}
  6017  	if s.Addresses == nil {
  6018  		invalidParams.Add(request.NewErrParamRequired("Addresses"))
  6019  	}
  6020  	if s.Description != nil && len(*s.Description) < 1 {
  6021  		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
  6022  	}
  6023  	if s.IPAddressVersion == nil {
  6024  		invalidParams.Add(request.NewErrParamRequired("IPAddressVersion"))
  6025  	}
  6026  	if s.Name == nil {
  6027  		invalidParams.Add(request.NewErrParamRequired("Name"))
  6028  	}
  6029  	if s.Name != nil && len(*s.Name) < 1 {
  6030  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  6031  	}
  6032  	if s.Scope == nil {
  6033  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  6034  	}
  6035  	if s.Tags != nil && len(s.Tags) < 1 {
  6036  		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
  6037  	}
  6038  	if s.Tags != nil {
  6039  		for i, v := range s.Tags {
  6040  			if v == nil {
  6041  				continue
  6042  			}
  6043  			if err := v.Validate(); err != nil {
  6044  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  6045  			}
  6046  		}
  6047  	}
  6048  
  6049  	if invalidParams.Len() > 0 {
  6050  		return invalidParams
  6051  	}
  6052  	return nil
  6053  }
  6054  
  6055  // SetAddresses sets the Addresses field's value.
  6056  func (s *CreateIPSetInput) SetAddresses(v []*string) *CreateIPSetInput {
  6057  	s.Addresses = v
  6058  	return s
  6059  }
  6060  
  6061  // SetDescription sets the Description field's value.
  6062  func (s *CreateIPSetInput) SetDescription(v string) *CreateIPSetInput {
  6063  	s.Description = &v
  6064  	return s
  6065  }
  6066  
  6067  // SetIPAddressVersion sets the IPAddressVersion field's value.
  6068  func (s *CreateIPSetInput) SetIPAddressVersion(v string) *CreateIPSetInput {
  6069  	s.IPAddressVersion = &v
  6070  	return s
  6071  }
  6072  
  6073  // SetName sets the Name field's value.
  6074  func (s *CreateIPSetInput) SetName(v string) *CreateIPSetInput {
  6075  	s.Name = &v
  6076  	return s
  6077  }
  6078  
  6079  // SetScope sets the Scope field's value.
  6080  func (s *CreateIPSetInput) SetScope(v string) *CreateIPSetInput {
  6081  	s.Scope = &v
  6082  	return s
  6083  }
  6084  
  6085  // SetTags sets the Tags field's value.
  6086  func (s *CreateIPSetInput) SetTags(v []*Tag) *CreateIPSetInput {
  6087  	s.Tags = v
  6088  	return s
  6089  }
  6090  
  6091  type CreateIPSetOutput struct {
  6092  	_ struct{} `type:"structure"`
  6093  
  6094  	// High-level information about an IPSet, returned by operations like create
  6095  	// and list. This provides information like the ID, that you can use to retrieve
  6096  	// and manage an IPSet, and the ARN, that you provide to the IPSetReferenceStatement
  6097  	// to use the address set in a Rule.
  6098  	Summary *IPSetSummary `type:"structure"`
  6099  }
  6100  
  6101  // String returns the string representation.
  6102  //
  6103  // API parameter values that are decorated as "sensitive" in the API will not
  6104  // be included in the string output. The member name will be present, but the
  6105  // value will be replaced with "sensitive".
  6106  func (s CreateIPSetOutput) String() string {
  6107  	return awsutil.Prettify(s)
  6108  }
  6109  
  6110  // GoString returns the string representation.
  6111  //
  6112  // API parameter values that are decorated as "sensitive" in the API will not
  6113  // be included in the string output. The member name will be present, but the
  6114  // value will be replaced with "sensitive".
  6115  func (s CreateIPSetOutput) GoString() string {
  6116  	return s.String()
  6117  }
  6118  
  6119  // SetSummary sets the Summary field's value.
  6120  func (s *CreateIPSetOutput) SetSummary(v *IPSetSummary) *CreateIPSetOutput {
  6121  	s.Summary = v
  6122  	return s
  6123  }
  6124  
  6125  type CreateRegexPatternSetInput struct {
  6126  	_ struct{} `type:"structure"`
  6127  
  6128  	// A description of the set that helps with identification.
  6129  	Description *string `min:"1" type:"string"`
  6130  
  6131  	// The name of the set. You cannot change the name after you create the set.
  6132  	//
  6133  	// Name is a required field
  6134  	Name *string `min:"1" type:"string" required:"true"`
  6135  
  6136  	// Array of regular expression strings.
  6137  	//
  6138  	// RegularExpressionList is a required field
  6139  	RegularExpressionList []*Regex `type:"list" required:"true"`
  6140  
  6141  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  6142  	// regional application. A regional application can be an Application Load Balancer
  6143  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  6144  	//
  6145  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  6146  	// as follows:
  6147  	//
  6148  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  6149  	//    --region=us-east-1.
  6150  	//
  6151  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  6152  	//
  6153  	// Scope is a required field
  6154  	Scope *string `type:"string" required:"true" enum:"Scope"`
  6155  
  6156  	// An array of key:value pairs to associate with the resource.
  6157  	Tags []*Tag `min:"1" type:"list"`
  6158  }
  6159  
  6160  // String returns the string representation.
  6161  //
  6162  // API parameter values that are decorated as "sensitive" in the API will not
  6163  // be included in the string output. The member name will be present, but the
  6164  // value will be replaced with "sensitive".
  6165  func (s CreateRegexPatternSetInput) String() string {
  6166  	return awsutil.Prettify(s)
  6167  }
  6168  
  6169  // GoString returns the string representation.
  6170  //
  6171  // API parameter values that are decorated as "sensitive" in the API will not
  6172  // be included in the string output. The member name will be present, but the
  6173  // value will be replaced with "sensitive".
  6174  func (s CreateRegexPatternSetInput) GoString() string {
  6175  	return s.String()
  6176  }
  6177  
  6178  // Validate inspects the fields of the type to determine if they are valid.
  6179  func (s *CreateRegexPatternSetInput) Validate() error {
  6180  	invalidParams := request.ErrInvalidParams{Context: "CreateRegexPatternSetInput"}
  6181  	if s.Description != nil && len(*s.Description) < 1 {
  6182  		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
  6183  	}
  6184  	if s.Name == nil {
  6185  		invalidParams.Add(request.NewErrParamRequired("Name"))
  6186  	}
  6187  	if s.Name != nil && len(*s.Name) < 1 {
  6188  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  6189  	}
  6190  	if s.RegularExpressionList == nil {
  6191  		invalidParams.Add(request.NewErrParamRequired("RegularExpressionList"))
  6192  	}
  6193  	if s.Scope == nil {
  6194  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  6195  	}
  6196  	if s.Tags != nil && len(s.Tags) < 1 {
  6197  		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
  6198  	}
  6199  	if s.RegularExpressionList != nil {
  6200  		for i, v := range s.RegularExpressionList {
  6201  			if v == nil {
  6202  				continue
  6203  			}
  6204  			if err := v.Validate(); err != nil {
  6205  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RegularExpressionList", i), err.(request.ErrInvalidParams))
  6206  			}
  6207  		}
  6208  	}
  6209  	if s.Tags != nil {
  6210  		for i, v := range s.Tags {
  6211  			if v == nil {
  6212  				continue
  6213  			}
  6214  			if err := v.Validate(); err != nil {
  6215  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  6216  			}
  6217  		}
  6218  	}
  6219  
  6220  	if invalidParams.Len() > 0 {
  6221  		return invalidParams
  6222  	}
  6223  	return nil
  6224  }
  6225  
  6226  // SetDescription sets the Description field's value.
  6227  func (s *CreateRegexPatternSetInput) SetDescription(v string) *CreateRegexPatternSetInput {
  6228  	s.Description = &v
  6229  	return s
  6230  }
  6231  
  6232  // SetName sets the Name field's value.
  6233  func (s *CreateRegexPatternSetInput) SetName(v string) *CreateRegexPatternSetInput {
  6234  	s.Name = &v
  6235  	return s
  6236  }
  6237  
  6238  // SetRegularExpressionList sets the RegularExpressionList field's value.
  6239  func (s *CreateRegexPatternSetInput) SetRegularExpressionList(v []*Regex) *CreateRegexPatternSetInput {
  6240  	s.RegularExpressionList = v
  6241  	return s
  6242  }
  6243  
  6244  // SetScope sets the Scope field's value.
  6245  func (s *CreateRegexPatternSetInput) SetScope(v string) *CreateRegexPatternSetInput {
  6246  	s.Scope = &v
  6247  	return s
  6248  }
  6249  
  6250  // SetTags sets the Tags field's value.
  6251  func (s *CreateRegexPatternSetInput) SetTags(v []*Tag) *CreateRegexPatternSetInput {
  6252  	s.Tags = v
  6253  	return s
  6254  }
  6255  
  6256  type CreateRegexPatternSetOutput struct {
  6257  	_ struct{} `type:"structure"`
  6258  
  6259  	// High-level information about a RegexPatternSet, returned by operations like
  6260  	// create and list. This provides information like the ID, that you can use
  6261  	// to retrieve and manage a RegexPatternSet, and the ARN, that you provide to
  6262  	// the RegexPatternSetReferenceStatement to use the pattern set in a Rule.
  6263  	Summary *RegexPatternSetSummary `type:"structure"`
  6264  }
  6265  
  6266  // String returns the string representation.
  6267  //
  6268  // API parameter values that are decorated as "sensitive" in the API will not
  6269  // be included in the string output. The member name will be present, but the
  6270  // value will be replaced with "sensitive".
  6271  func (s CreateRegexPatternSetOutput) String() string {
  6272  	return awsutil.Prettify(s)
  6273  }
  6274  
  6275  // GoString 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 CreateRegexPatternSetOutput) GoString() string {
  6281  	return s.String()
  6282  }
  6283  
  6284  // SetSummary sets the Summary field's value.
  6285  func (s *CreateRegexPatternSetOutput) SetSummary(v *RegexPatternSetSummary) *CreateRegexPatternSetOutput {
  6286  	s.Summary = v
  6287  	return s
  6288  }
  6289  
  6290  type CreateRuleGroupInput struct {
  6291  	_ struct{} `type:"structure"`
  6292  
  6293  	// The web ACL capacity units (WCUs) required for this rule group.
  6294  	//
  6295  	// When you create your own rule group, you define this, and you cannot change
  6296  	// it after creation. When you add or modify the rules in a rule group, WAF
  6297  	// enforces this limit. You can check the capacity for a set of rules using
  6298  	// CheckCapacity.
  6299  	//
  6300  	// WAF uses WCUs to calculate and control the operating resources that are used
  6301  	// to run your rules, rule groups, and web ACLs. WAF calculates capacity differently
  6302  	// for each rule type, to reflect the relative cost of each rule. Simple rules
  6303  	// that cost little to run use fewer WCUs than more complex rules that use more
  6304  	// processing power. Rule group capacity is fixed at creation, which helps users
  6305  	// plan their web ACL WCU usage when they use a rule group. The WCU limit for
  6306  	// web ACLs is 1,500.
  6307  	//
  6308  	// Capacity is a required field
  6309  	Capacity *int64 `min:"1" type:"long" required:"true"`
  6310  
  6311  	// A map of custom response keys and content bodies. When you create a rule
  6312  	// with a block action, you can send a custom response to the web request. You
  6313  	// define these for the rule group, and then use them in the rules that you
  6314  	// define in the rule group.
  6315  	//
  6316  	// For information about customizing web requests and responses, see Customizing
  6317  	// web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
  6318  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
  6319  	//
  6320  	// For information about the limits on count and size for custom request and
  6321  	// response settings, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
  6322  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
  6323  	CustomResponseBodies map[string]*CustomResponseBody `min:"1" type:"map"`
  6324  
  6325  	// A description of the rule group that helps with identification.
  6326  	Description *string `min:"1" type:"string"`
  6327  
  6328  	// The name of the rule group. You cannot change the name of a rule group after
  6329  	// you create it.
  6330  	//
  6331  	// Name is a required field
  6332  	Name *string `min:"1" type:"string" required:"true"`
  6333  
  6334  	// The Rule statements used to identify the web requests that you want to allow,
  6335  	// block, or count. Each rule includes one top-level statement that WAF uses
  6336  	// to identify matching web requests, and parameters that govern how WAF handles
  6337  	// them.
  6338  	Rules []*Rule `type:"list"`
  6339  
  6340  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  6341  	// regional application. A regional application can be an Application Load Balancer
  6342  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  6343  	//
  6344  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  6345  	// as follows:
  6346  	//
  6347  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  6348  	//    --region=us-east-1.
  6349  	//
  6350  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  6351  	//
  6352  	// Scope is a required field
  6353  	Scope *string `type:"string" required:"true" enum:"Scope"`
  6354  
  6355  	// An array of key:value pairs to associate with the resource.
  6356  	Tags []*Tag `min:"1" type:"list"`
  6357  
  6358  	// Defines and enables Amazon CloudWatch metrics and web request sample collection.
  6359  	//
  6360  	// VisibilityConfig is a required field
  6361  	VisibilityConfig *VisibilityConfig `type:"structure" required:"true"`
  6362  }
  6363  
  6364  // String returns the string representation.
  6365  //
  6366  // API parameter values that are decorated as "sensitive" in the API will not
  6367  // be included in the string output. The member name will be present, but the
  6368  // value will be replaced with "sensitive".
  6369  func (s CreateRuleGroupInput) String() string {
  6370  	return awsutil.Prettify(s)
  6371  }
  6372  
  6373  // GoString returns the string representation.
  6374  //
  6375  // API parameter values that are decorated as "sensitive" in the API will not
  6376  // be included in the string output. The member name will be present, but the
  6377  // value will be replaced with "sensitive".
  6378  func (s CreateRuleGroupInput) GoString() string {
  6379  	return s.String()
  6380  }
  6381  
  6382  // Validate inspects the fields of the type to determine if they are valid.
  6383  func (s *CreateRuleGroupInput) Validate() error {
  6384  	invalidParams := request.ErrInvalidParams{Context: "CreateRuleGroupInput"}
  6385  	if s.Capacity == nil {
  6386  		invalidParams.Add(request.NewErrParamRequired("Capacity"))
  6387  	}
  6388  	if s.Capacity != nil && *s.Capacity < 1 {
  6389  		invalidParams.Add(request.NewErrParamMinValue("Capacity", 1))
  6390  	}
  6391  	if s.CustomResponseBodies != nil && len(s.CustomResponseBodies) < 1 {
  6392  		invalidParams.Add(request.NewErrParamMinLen("CustomResponseBodies", 1))
  6393  	}
  6394  	if s.Description != nil && len(*s.Description) < 1 {
  6395  		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
  6396  	}
  6397  	if s.Name == nil {
  6398  		invalidParams.Add(request.NewErrParamRequired("Name"))
  6399  	}
  6400  	if s.Name != nil && len(*s.Name) < 1 {
  6401  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  6402  	}
  6403  	if s.Scope == nil {
  6404  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  6405  	}
  6406  	if s.Tags != nil && len(s.Tags) < 1 {
  6407  		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
  6408  	}
  6409  	if s.VisibilityConfig == nil {
  6410  		invalidParams.Add(request.NewErrParamRequired("VisibilityConfig"))
  6411  	}
  6412  	if s.CustomResponseBodies != nil {
  6413  		for i, v := range s.CustomResponseBodies {
  6414  			if v == nil {
  6415  				continue
  6416  			}
  6417  			if err := v.Validate(); err != nil {
  6418  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CustomResponseBodies", i), err.(request.ErrInvalidParams))
  6419  			}
  6420  		}
  6421  	}
  6422  	if s.Rules != nil {
  6423  		for i, v := range s.Rules {
  6424  			if v == nil {
  6425  				continue
  6426  			}
  6427  			if err := v.Validate(); err != nil {
  6428  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
  6429  			}
  6430  		}
  6431  	}
  6432  	if s.Tags != nil {
  6433  		for i, v := range s.Tags {
  6434  			if v == nil {
  6435  				continue
  6436  			}
  6437  			if err := v.Validate(); err != nil {
  6438  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  6439  			}
  6440  		}
  6441  	}
  6442  	if s.VisibilityConfig != nil {
  6443  		if err := s.VisibilityConfig.Validate(); err != nil {
  6444  			invalidParams.AddNested("VisibilityConfig", err.(request.ErrInvalidParams))
  6445  		}
  6446  	}
  6447  
  6448  	if invalidParams.Len() > 0 {
  6449  		return invalidParams
  6450  	}
  6451  	return nil
  6452  }
  6453  
  6454  // SetCapacity sets the Capacity field's value.
  6455  func (s *CreateRuleGroupInput) SetCapacity(v int64) *CreateRuleGroupInput {
  6456  	s.Capacity = &v
  6457  	return s
  6458  }
  6459  
  6460  // SetCustomResponseBodies sets the CustomResponseBodies field's value.
  6461  func (s *CreateRuleGroupInput) SetCustomResponseBodies(v map[string]*CustomResponseBody) *CreateRuleGroupInput {
  6462  	s.CustomResponseBodies = v
  6463  	return s
  6464  }
  6465  
  6466  // SetDescription sets the Description field's value.
  6467  func (s *CreateRuleGroupInput) SetDescription(v string) *CreateRuleGroupInput {
  6468  	s.Description = &v
  6469  	return s
  6470  }
  6471  
  6472  // SetName sets the Name field's value.
  6473  func (s *CreateRuleGroupInput) SetName(v string) *CreateRuleGroupInput {
  6474  	s.Name = &v
  6475  	return s
  6476  }
  6477  
  6478  // SetRules sets the Rules field's value.
  6479  func (s *CreateRuleGroupInput) SetRules(v []*Rule) *CreateRuleGroupInput {
  6480  	s.Rules = v
  6481  	return s
  6482  }
  6483  
  6484  // SetScope sets the Scope field's value.
  6485  func (s *CreateRuleGroupInput) SetScope(v string) *CreateRuleGroupInput {
  6486  	s.Scope = &v
  6487  	return s
  6488  }
  6489  
  6490  // SetTags sets the Tags field's value.
  6491  func (s *CreateRuleGroupInput) SetTags(v []*Tag) *CreateRuleGroupInput {
  6492  	s.Tags = v
  6493  	return s
  6494  }
  6495  
  6496  // SetVisibilityConfig sets the VisibilityConfig field's value.
  6497  func (s *CreateRuleGroupInput) SetVisibilityConfig(v *VisibilityConfig) *CreateRuleGroupInput {
  6498  	s.VisibilityConfig = v
  6499  	return s
  6500  }
  6501  
  6502  type CreateRuleGroupOutput struct {
  6503  	_ struct{} `type:"structure"`
  6504  
  6505  	// High-level information about a RuleGroup, returned by operations like create
  6506  	// and list. This provides information like the ID, that you can use to retrieve
  6507  	// and manage a RuleGroup, and the ARN, that you provide to the RuleGroupReferenceStatement
  6508  	// to use the rule group in a Rule.
  6509  	Summary *RuleGroupSummary `type:"structure"`
  6510  }
  6511  
  6512  // String returns the string representation.
  6513  //
  6514  // API parameter values that are decorated as "sensitive" in the API will not
  6515  // be included in the string output. The member name will be present, but the
  6516  // value will be replaced with "sensitive".
  6517  func (s CreateRuleGroupOutput) String() string {
  6518  	return awsutil.Prettify(s)
  6519  }
  6520  
  6521  // GoString returns the string representation.
  6522  //
  6523  // API parameter values that are decorated as "sensitive" in the API will not
  6524  // be included in the string output. The member name will be present, but the
  6525  // value will be replaced with "sensitive".
  6526  func (s CreateRuleGroupOutput) GoString() string {
  6527  	return s.String()
  6528  }
  6529  
  6530  // SetSummary sets the Summary field's value.
  6531  func (s *CreateRuleGroupOutput) SetSummary(v *RuleGroupSummary) *CreateRuleGroupOutput {
  6532  	s.Summary = v
  6533  	return s
  6534  }
  6535  
  6536  type CreateWebACLInput struct {
  6537  	_ struct{} `type:"structure"`
  6538  
  6539  	// A map of custom response keys and content bodies. When you create a rule
  6540  	// with a block action, you can send a custom response to the web request. You
  6541  	// define these for the web ACL, and then use them in the rules and default
  6542  	// actions that you define in the web ACL.
  6543  	//
  6544  	// For information about customizing web requests and responses, see Customizing
  6545  	// web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
  6546  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
  6547  	//
  6548  	// For information about the limits on count and size for custom request and
  6549  	// response settings, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
  6550  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
  6551  	CustomResponseBodies map[string]*CustomResponseBody `min:"1" type:"map"`
  6552  
  6553  	// The action to perform if none of the Rules contained in the WebACL match.
  6554  	//
  6555  	// DefaultAction is a required field
  6556  	DefaultAction *DefaultAction `type:"structure" required:"true"`
  6557  
  6558  	// A description of the web ACL that helps with identification.
  6559  	Description *string `min:"1" type:"string"`
  6560  
  6561  	// The name of the web ACL. You cannot change the name of a web ACL after you
  6562  	// create it.
  6563  	//
  6564  	// Name is a required field
  6565  	Name *string `min:"1" type:"string" required:"true"`
  6566  
  6567  	// The Rule statements used to identify the web requests that you want to allow,
  6568  	// block, or count. Each rule includes one top-level statement that WAF uses
  6569  	// to identify matching web requests, and parameters that govern how WAF handles
  6570  	// them.
  6571  	Rules []*Rule `type:"list"`
  6572  
  6573  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  6574  	// regional application. A regional application can be an Application Load Balancer
  6575  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  6576  	//
  6577  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  6578  	// as follows:
  6579  	//
  6580  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  6581  	//    --region=us-east-1.
  6582  	//
  6583  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  6584  	//
  6585  	// Scope is a required field
  6586  	Scope *string `type:"string" required:"true" enum:"Scope"`
  6587  
  6588  	// An array of key:value pairs to associate with the resource.
  6589  	Tags []*Tag `min:"1" type:"list"`
  6590  
  6591  	// Defines and enables Amazon CloudWatch metrics and web request sample collection.
  6592  	//
  6593  	// VisibilityConfig is a required field
  6594  	VisibilityConfig *VisibilityConfig `type:"structure" required:"true"`
  6595  }
  6596  
  6597  // String returns the string representation.
  6598  //
  6599  // API parameter values that are decorated as "sensitive" in the API will not
  6600  // be included in the string output. The member name will be present, but the
  6601  // value will be replaced with "sensitive".
  6602  func (s CreateWebACLInput) String() string {
  6603  	return awsutil.Prettify(s)
  6604  }
  6605  
  6606  // GoString returns the string representation.
  6607  //
  6608  // API parameter values that are decorated as "sensitive" in the API will not
  6609  // be included in the string output. The member name will be present, but the
  6610  // value will be replaced with "sensitive".
  6611  func (s CreateWebACLInput) GoString() string {
  6612  	return s.String()
  6613  }
  6614  
  6615  // Validate inspects the fields of the type to determine if they are valid.
  6616  func (s *CreateWebACLInput) Validate() error {
  6617  	invalidParams := request.ErrInvalidParams{Context: "CreateWebACLInput"}
  6618  	if s.CustomResponseBodies != nil && len(s.CustomResponseBodies) < 1 {
  6619  		invalidParams.Add(request.NewErrParamMinLen("CustomResponseBodies", 1))
  6620  	}
  6621  	if s.DefaultAction == nil {
  6622  		invalidParams.Add(request.NewErrParamRequired("DefaultAction"))
  6623  	}
  6624  	if s.Description != nil && len(*s.Description) < 1 {
  6625  		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
  6626  	}
  6627  	if s.Name == nil {
  6628  		invalidParams.Add(request.NewErrParamRequired("Name"))
  6629  	}
  6630  	if s.Name != nil && len(*s.Name) < 1 {
  6631  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  6632  	}
  6633  	if s.Scope == nil {
  6634  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  6635  	}
  6636  	if s.Tags != nil && len(s.Tags) < 1 {
  6637  		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
  6638  	}
  6639  	if s.VisibilityConfig == nil {
  6640  		invalidParams.Add(request.NewErrParamRequired("VisibilityConfig"))
  6641  	}
  6642  	if s.CustomResponseBodies != nil {
  6643  		for i, v := range s.CustomResponseBodies {
  6644  			if v == nil {
  6645  				continue
  6646  			}
  6647  			if err := v.Validate(); err != nil {
  6648  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CustomResponseBodies", i), err.(request.ErrInvalidParams))
  6649  			}
  6650  		}
  6651  	}
  6652  	if s.DefaultAction != nil {
  6653  		if err := s.DefaultAction.Validate(); err != nil {
  6654  			invalidParams.AddNested("DefaultAction", err.(request.ErrInvalidParams))
  6655  		}
  6656  	}
  6657  	if s.Rules != nil {
  6658  		for i, v := range s.Rules {
  6659  			if v == nil {
  6660  				continue
  6661  			}
  6662  			if err := v.Validate(); err != nil {
  6663  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
  6664  			}
  6665  		}
  6666  	}
  6667  	if s.Tags != nil {
  6668  		for i, v := range s.Tags {
  6669  			if v == nil {
  6670  				continue
  6671  			}
  6672  			if err := v.Validate(); err != nil {
  6673  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  6674  			}
  6675  		}
  6676  	}
  6677  	if s.VisibilityConfig != nil {
  6678  		if err := s.VisibilityConfig.Validate(); err != nil {
  6679  			invalidParams.AddNested("VisibilityConfig", err.(request.ErrInvalidParams))
  6680  		}
  6681  	}
  6682  
  6683  	if invalidParams.Len() > 0 {
  6684  		return invalidParams
  6685  	}
  6686  	return nil
  6687  }
  6688  
  6689  // SetCustomResponseBodies sets the CustomResponseBodies field's value.
  6690  func (s *CreateWebACLInput) SetCustomResponseBodies(v map[string]*CustomResponseBody) *CreateWebACLInput {
  6691  	s.CustomResponseBodies = v
  6692  	return s
  6693  }
  6694  
  6695  // SetDefaultAction sets the DefaultAction field's value.
  6696  func (s *CreateWebACLInput) SetDefaultAction(v *DefaultAction) *CreateWebACLInput {
  6697  	s.DefaultAction = v
  6698  	return s
  6699  }
  6700  
  6701  // SetDescription sets the Description field's value.
  6702  func (s *CreateWebACLInput) SetDescription(v string) *CreateWebACLInput {
  6703  	s.Description = &v
  6704  	return s
  6705  }
  6706  
  6707  // SetName sets the Name field's value.
  6708  func (s *CreateWebACLInput) SetName(v string) *CreateWebACLInput {
  6709  	s.Name = &v
  6710  	return s
  6711  }
  6712  
  6713  // SetRules sets the Rules field's value.
  6714  func (s *CreateWebACLInput) SetRules(v []*Rule) *CreateWebACLInput {
  6715  	s.Rules = v
  6716  	return s
  6717  }
  6718  
  6719  // SetScope sets the Scope field's value.
  6720  func (s *CreateWebACLInput) SetScope(v string) *CreateWebACLInput {
  6721  	s.Scope = &v
  6722  	return s
  6723  }
  6724  
  6725  // SetTags sets the Tags field's value.
  6726  func (s *CreateWebACLInput) SetTags(v []*Tag) *CreateWebACLInput {
  6727  	s.Tags = v
  6728  	return s
  6729  }
  6730  
  6731  // SetVisibilityConfig sets the VisibilityConfig field's value.
  6732  func (s *CreateWebACLInput) SetVisibilityConfig(v *VisibilityConfig) *CreateWebACLInput {
  6733  	s.VisibilityConfig = v
  6734  	return s
  6735  }
  6736  
  6737  type CreateWebACLOutput struct {
  6738  	_ struct{} `type:"structure"`
  6739  
  6740  	// High-level information about a WebACL, returned by operations like create
  6741  	// and list. This provides information like the ID, that you can use to retrieve
  6742  	// and manage a WebACL, and the ARN, that you provide to operations like AssociateWebACL.
  6743  	Summary *WebACLSummary `type:"structure"`
  6744  }
  6745  
  6746  // String returns the string representation.
  6747  //
  6748  // API parameter values that are decorated as "sensitive" in the API will not
  6749  // be included in the string output. The member name will be present, but the
  6750  // value will be replaced with "sensitive".
  6751  func (s CreateWebACLOutput) String() string {
  6752  	return awsutil.Prettify(s)
  6753  }
  6754  
  6755  // GoString returns the string representation.
  6756  //
  6757  // API parameter values that are decorated as "sensitive" in the API will not
  6758  // be included in the string output. The member name will be present, but the
  6759  // value will be replaced with "sensitive".
  6760  func (s CreateWebACLOutput) GoString() string {
  6761  	return s.String()
  6762  }
  6763  
  6764  // SetSummary sets the Summary field's value.
  6765  func (s *CreateWebACLOutput) SetSummary(v *WebACLSummary) *CreateWebACLOutput {
  6766  	s.Summary = v
  6767  	return s
  6768  }
  6769  
  6770  // A custom header for custom request and response handling. This is used in
  6771  // CustomResponse and CustomRequestHandling.
  6772  type CustomHTTPHeader struct {
  6773  	_ struct{} `type:"structure"`
  6774  
  6775  	// The name of the custom header.
  6776  	//
  6777  	// For custom request header insertion, when WAF inserts the header into the
  6778  	// request, it prefixes this name x-amzn-waf-, to avoid confusion with the headers
  6779  	// that are already in the request. For example, for the header name sample,
  6780  	// WAF inserts the header x-amzn-waf-sample.
  6781  	//
  6782  	// Name is a required field
  6783  	Name *string `min:"1" type:"string" required:"true"`
  6784  
  6785  	// The value of the custom header.
  6786  	//
  6787  	// Value is a required field
  6788  	Value *string `min:"1" type:"string" required:"true"`
  6789  }
  6790  
  6791  // String returns the string representation.
  6792  //
  6793  // API parameter values that are decorated as "sensitive" in the API will not
  6794  // be included in the string output. The member name will be present, but the
  6795  // value will be replaced with "sensitive".
  6796  func (s CustomHTTPHeader) String() string {
  6797  	return awsutil.Prettify(s)
  6798  }
  6799  
  6800  // GoString returns the string representation.
  6801  //
  6802  // API parameter values that are decorated as "sensitive" in the API will not
  6803  // be included in the string output. The member name will be present, but the
  6804  // value will be replaced with "sensitive".
  6805  func (s CustomHTTPHeader) GoString() string {
  6806  	return s.String()
  6807  }
  6808  
  6809  // Validate inspects the fields of the type to determine if they are valid.
  6810  func (s *CustomHTTPHeader) Validate() error {
  6811  	invalidParams := request.ErrInvalidParams{Context: "CustomHTTPHeader"}
  6812  	if s.Name == nil {
  6813  		invalidParams.Add(request.NewErrParamRequired("Name"))
  6814  	}
  6815  	if s.Name != nil && len(*s.Name) < 1 {
  6816  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  6817  	}
  6818  	if s.Value == nil {
  6819  		invalidParams.Add(request.NewErrParamRequired("Value"))
  6820  	}
  6821  	if s.Value != nil && len(*s.Value) < 1 {
  6822  		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
  6823  	}
  6824  
  6825  	if invalidParams.Len() > 0 {
  6826  		return invalidParams
  6827  	}
  6828  	return nil
  6829  }
  6830  
  6831  // SetName sets the Name field's value.
  6832  func (s *CustomHTTPHeader) SetName(v string) *CustomHTTPHeader {
  6833  	s.Name = &v
  6834  	return s
  6835  }
  6836  
  6837  // SetValue sets the Value field's value.
  6838  func (s *CustomHTTPHeader) SetValue(v string) *CustomHTTPHeader {
  6839  	s.Value = &v
  6840  	return s
  6841  }
  6842  
  6843  // Custom request handling behavior that inserts custom headers into a web request.
  6844  // You can add custom request handling for the rule actions allow and count.
  6845  //
  6846  // For information about customizing web requests and responses, see Customizing
  6847  // web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
  6848  // in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
  6849  type CustomRequestHandling struct {
  6850  	_ struct{} `type:"structure"`
  6851  
  6852  	// The HTTP headers to insert into the request. Duplicate header names are not
  6853  	// allowed.
  6854  	//
  6855  	// For information about the limits on count and size for custom request and
  6856  	// response settings, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
  6857  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
  6858  	//
  6859  	// InsertHeaders is a required field
  6860  	InsertHeaders []*CustomHTTPHeader `min:"1" type:"list" required:"true"`
  6861  }
  6862  
  6863  // String returns the string representation.
  6864  //
  6865  // API parameter values that are decorated as "sensitive" in the API will not
  6866  // be included in the string output. The member name will be present, but the
  6867  // value will be replaced with "sensitive".
  6868  func (s CustomRequestHandling) String() string {
  6869  	return awsutil.Prettify(s)
  6870  }
  6871  
  6872  // GoString returns the string representation.
  6873  //
  6874  // API parameter values that are decorated as "sensitive" in the API will not
  6875  // be included in the string output. The member name will be present, but the
  6876  // value will be replaced with "sensitive".
  6877  func (s CustomRequestHandling) GoString() string {
  6878  	return s.String()
  6879  }
  6880  
  6881  // Validate inspects the fields of the type to determine if they are valid.
  6882  func (s *CustomRequestHandling) Validate() error {
  6883  	invalidParams := request.ErrInvalidParams{Context: "CustomRequestHandling"}
  6884  	if s.InsertHeaders == nil {
  6885  		invalidParams.Add(request.NewErrParamRequired("InsertHeaders"))
  6886  	}
  6887  	if s.InsertHeaders != nil && len(s.InsertHeaders) < 1 {
  6888  		invalidParams.Add(request.NewErrParamMinLen("InsertHeaders", 1))
  6889  	}
  6890  	if s.InsertHeaders != nil {
  6891  		for i, v := range s.InsertHeaders {
  6892  			if v == nil {
  6893  				continue
  6894  			}
  6895  			if err := v.Validate(); err != nil {
  6896  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InsertHeaders", i), err.(request.ErrInvalidParams))
  6897  			}
  6898  		}
  6899  	}
  6900  
  6901  	if invalidParams.Len() > 0 {
  6902  		return invalidParams
  6903  	}
  6904  	return nil
  6905  }
  6906  
  6907  // SetInsertHeaders sets the InsertHeaders field's value.
  6908  func (s *CustomRequestHandling) SetInsertHeaders(v []*CustomHTTPHeader) *CustomRequestHandling {
  6909  	s.InsertHeaders = v
  6910  	return s
  6911  }
  6912  
  6913  // A custom response to send to the client. You can define a custom response
  6914  // for rule actions and default web ACL actions that are set to BlockAction.
  6915  //
  6916  // For information about customizing web requests and responses, see Customizing
  6917  // web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
  6918  // in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
  6919  type CustomResponse struct {
  6920  	_ struct{} `type:"structure"`
  6921  
  6922  	// References the response body that you want WAF to return to the web request
  6923  	// client. You can define a custom response for a rule action or a default web
  6924  	// ACL action that is set to block. To do this, you first define the response
  6925  	// body key and value in the CustomResponseBodies setting for the WebACL or
  6926  	// RuleGroup where you want to use it. Then, in the rule action or web ACL default
  6927  	// action BlockAction setting, you reference the response body using this key.
  6928  	CustomResponseBodyKey *string `min:"1" type:"string"`
  6929  
  6930  	// The HTTP status code to return to the client.
  6931  	//
  6932  	// For a list of status codes that you can use in your custom reqponses, see
  6933  	// Supported status codes for custom response (https://docs.aws.amazon.com/waf/latest/developerguide/customizing-the-response-status-codes.html)
  6934  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
  6935  	//
  6936  	// ResponseCode is a required field
  6937  	ResponseCode *int64 `min:"200" type:"integer" required:"true"`
  6938  
  6939  	// The HTTP headers to use in the response. Duplicate header names are not allowed.
  6940  	//
  6941  	// For information about the limits on count and size for custom request and
  6942  	// response settings, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
  6943  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
  6944  	ResponseHeaders []*CustomHTTPHeader `min:"1" type:"list"`
  6945  }
  6946  
  6947  // String returns the string representation.
  6948  //
  6949  // API parameter values that are decorated as "sensitive" in the API will not
  6950  // be included in the string output. The member name will be present, but the
  6951  // value will be replaced with "sensitive".
  6952  func (s CustomResponse) String() string {
  6953  	return awsutil.Prettify(s)
  6954  }
  6955  
  6956  // GoString returns the string representation.
  6957  //
  6958  // API parameter values that are decorated as "sensitive" in the API will not
  6959  // be included in the string output. The member name will be present, but the
  6960  // value will be replaced with "sensitive".
  6961  func (s CustomResponse) GoString() string {
  6962  	return s.String()
  6963  }
  6964  
  6965  // Validate inspects the fields of the type to determine if they are valid.
  6966  func (s *CustomResponse) Validate() error {
  6967  	invalidParams := request.ErrInvalidParams{Context: "CustomResponse"}
  6968  	if s.CustomResponseBodyKey != nil && len(*s.CustomResponseBodyKey) < 1 {
  6969  		invalidParams.Add(request.NewErrParamMinLen("CustomResponseBodyKey", 1))
  6970  	}
  6971  	if s.ResponseCode == nil {
  6972  		invalidParams.Add(request.NewErrParamRequired("ResponseCode"))
  6973  	}
  6974  	if s.ResponseCode != nil && *s.ResponseCode < 200 {
  6975  		invalidParams.Add(request.NewErrParamMinValue("ResponseCode", 200))
  6976  	}
  6977  	if s.ResponseHeaders != nil && len(s.ResponseHeaders) < 1 {
  6978  		invalidParams.Add(request.NewErrParamMinLen("ResponseHeaders", 1))
  6979  	}
  6980  	if s.ResponseHeaders != nil {
  6981  		for i, v := range s.ResponseHeaders {
  6982  			if v == nil {
  6983  				continue
  6984  			}
  6985  			if err := v.Validate(); err != nil {
  6986  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ResponseHeaders", i), err.(request.ErrInvalidParams))
  6987  			}
  6988  		}
  6989  	}
  6990  
  6991  	if invalidParams.Len() > 0 {
  6992  		return invalidParams
  6993  	}
  6994  	return nil
  6995  }
  6996  
  6997  // SetCustomResponseBodyKey sets the CustomResponseBodyKey field's value.
  6998  func (s *CustomResponse) SetCustomResponseBodyKey(v string) *CustomResponse {
  6999  	s.CustomResponseBodyKey = &v
  7000  	return s
  7001  }
  7002  
  7003  // SetResponseCode sets the ResponseCode field's value.
  7004  func (s *CustomResponse) SetResponseCode(v int64) *CustomResponse {
  7005  	s.ResponseCode = &v
  7006  	return s
  7007  }
  7008  
  7009  // SetResponseHeaders sets the ResponseHeaders field's value.
  7010  func (s *CustomResponse) SetResponseHeaders(v []*CustomHTTPHeader) *CustomResponse {
  7011  	s.ResponseHeaders = v
  7012  	return s
  7013  }
  7014  
  7015  // The response body to use in a custom response to a web request. This is referenced
  7016  // by key from CustomResponse CustomResponseBodyKey.
  7017  type CustomResponseBody struct {
  7018  	_ struct{} `type:"structure"`
  7019  
  7020  	// The payload of the custom response.
  7021  	//
  7022  	// You can use JSON escape strings in JSON content. To do this, you must specify
  7023  	// JSON content in the ContentType setting.
  7024  	//
  7025  	// For information about the limits on count and size for custom request and
  7026  	// response settings, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
  7027  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
  7028  	//
  7029  	// Content is a required field
  7030  	Content *string `min:"1" type:"string" required:"true"`
  7031  
  7032  	// The type of content in the payload that you are defining in the Content string.
  7033  	//
  7034  	// ContentType is a required field
  7035  	ContentType *string `type:"string" required:"true" enum:"ResponseContentType"`
  7036  }
  7037  
  7038  // String returns the string representation.
  7039  //
  7040  // API parameter values that are decorated as "sensitive" in the API will not
  7041  // be included in the string output. The member name will be present, but the
  7042  // value will be replaced with "sensitive".
  7043  func (s CustomResponseBody) String() string {
  7044  	return awsutil.Prettify(s)
  7045  }
  7046  
  7047  // GoString returns the string representation.
  7048  //
  7049  // API parameter values that are decorated as "sensitive" in the API will not
  7050  // be included in the string output. The member name will be present, but the
  7051  // value will be replaced with "sensitive".
  7052  func (s CustomResponseBody) GoString() string {
  7053  	return s.String()
  7054  }
  7055  
  7056  // Validate inspects the fields of the type to determine if they are valid.
  7057  func (s *CustomResponseBody) Validate() error {
  7058  	invalidParams := request.ErrInvalidParams{Context: "CustomResponseBody"}
  7059  	if s.Content == nil {
  7060  		invalidParams.Add(request.NewErrParamRequired("Content"))
  7061  	}
  7062  	if s.Content != nil && len(*s.Content) < 1 {
  7063  		invalidParams.Add(request.NewErrParamMinLen("Content", 1))
  7064  	}
  7065  	if s.ContentType == nil {
  7066  		invalidParams.Add(request.NewErrParamRequired("ContentType"))
  7067  	}
  7068  
  7069  	if invalidParams.Len() > 0 {
  7070  		return invalidParams
  7071  	}
  7072  	return nil
  7073  }
  7074  
  7075  // SetContent sets the Content field's value.
  7076  func (s *CustomResponseBody) SetContent(v string) *CustomResponseBody {
  7077  	s.Content = &v
  7078  	return s
  7079  }
  7080  
  7081  // SetContentType sets the ContentType field's value.
  7082  func (s *CustomResponseBody) SetContentType(v string) *CustomResponseBody {
  7083  	s.ContentType = &v
  7084  	return s
  7085  }
  7086  
  7087  // In a WebACL, this is the action that you want WAF to perform when a web request
  7088  // doesn't match any of the rules in the WebACL. The default action must be
  7089  // a terminating action, so you can't use count.
  7090  type DefaultAction struct {
  7091  	_ struct{} `type:"structure"`
  7092  
  7093  	// Specifies that WAF should allow requests by default.
  7094  	Allow *AllowAction `type:"structure"`
  7095  
  7096  	// Specifies that WAF should block requests by default.
  7097  	Block *BlockAction `type:"structure"`
  7098  }
  7099  
  7100  // String returns the string representation.
  7101  //
  7102  // API parameter values that are decorated as "sensitive" in the API will not
  7103  // be included in the string output. The member name will be present, but the
  7104  // value will be replaced with "sensitive".
  7105  func (s DefaultAction) String() string {
  7106  	return awsutil.Prettify(s)
  7107  }
  7108  
  7109  // GoString returns the string representation.
  7110  //
  7111  // API parameter values that are decorated as "sensitive" in the API will not
  7112  // be included in the string output. The member name will be present, but the
  7113  // value will be replaced with "sensitive".
  7114  func (s DefaultAction) GoString() string {
  7115  	return s.String()
  7116  }
  7117  
  7118  // Validate inspects the fields of the type to determine if they are valid.
  7119  func (s *DefaultAction) Validate() error {
  7120  	invalidParams := request.ErrInvalidParams{Context: "DefaultAction"}
  7121  	if s.Allow != nil {
  7122  		if err := s.Allow.Validate(); err != nil {
  7123  			invalidParams.AddNested("Allow", err.(request.ErrInvalidParams))
  7124  		}
  7125  	}
  7126  	if s.Block != nil {
  7127  		if err := s.Block.Validate(); err != nil {
  7128  			invalidParams.AddNested("Block", err.(request.ErrInvalidParams))
  7129  		}
  7130  	}
  7131  
  7132  	if invalidParams.Len() > 0 {
  7133  		return invalidParams
  7134  	}
  7135  	return nil
  7136  }
  7137  
  7138  // SetAllow sets the Allow field's value.
  7139  func (s *DefaultAction) SetAllow(v *AllowAction) *DefaultAction {
  7140  	s.Allow = v
  7141  	return s
  7142  }
  7143  
  7144  // SetBlock sets the Block field's value.
  7145  func (s *DefaultAction) SetBlock(v *BlockAction) *DefaultAction {
  7146  	s.Block = v
  7147  	return s
  7148  }
  7149  
  7150  type DeleteFirewallManagerRuleGroupsInput struct {
  7151  	_ struct{} `type:"structure"`
  7152  
  7153  	// The Amazon Resource Name (ARN) of the web ACL.
  7154  	//
  7155  	// WebACLArn is a required field
  7156  	WebACLArn *string `min:"20" type:"string" required:"true"`
  7157  
  7158  	// A token used for optimistic locking. WAF returns a token to your get and
  7159  	// list requests, to mark the state of the entity at the time of the request.
  7160  	// To make changes to the entity associated with the token, you provide the
  7161  	// token to operations like update and delete. WAF uses the token to ensure
  7162  	// that no changes have been made to the entity since you last retrieved it.
  7163  	// If a change has been made, the update fails with a WAFOptimisticLockException.
  7164  	// If this happens, perform another get, and use the new token returned by that
  7165  	// operation.
  7166  	//
  7167  	// WebACLLockToken is a required field
  7168  	WebACLLockToken *string `min:"1" type:"string" required:"true"`
  7169  }
  7170  
  7171  // String returns the string representation.
  7172  //
  7173  // API parameter values that are decorated as "sensitive" in the API will not
  7174  // be included in the string output. The member name will be present, but the
  7175  // value will be replaced with "sensitive".
  7176  func (s DeleteFirewallManagerRuleGroupsInput) String() string {
  7177  	return awsutil.Prettify(s)
  7178  }
  7179  
  7180  // GoString returns the string representation.
  7181  //
  7182  // API parameter values that are decorated as "sensitive" in the API will not
  7183  // be included in the string output. The member name will be present, but the
  7184  // value will be replaced with "sensitive".
  7185  func (s DeleteFirewallManagerRuleGroupsInput) GoString() string {
  7186  	return s.String()
  7187  }
  7188  
  7189  // Validate inspects the fields of the type to determine if they are valid.
  7190  func (s *DeleteFirewallManagerRuleGroupsInput) Validate() error {
  7191  	invalidParams := request.ErrInvalidParams{Context: "DeleteFirewallManagerRuleGroupsInput"}
  7192  	if s.WebACLArn == nil {
  7193  		invalidParams.Add(request.NewErrParamRequired("WebACLArn"))
  7194  	}
  7195  	if s.WebACLArn != nil && len(*s.WebACLArn) < 20 {
  7196  		invalidParams.Add(request.NewErrParamMinLen("WebACLArn", 20))
  7197  	}
  7198  	if s.WebACLLockToken == nil {
  7199  		invalidParams.Add(request.NewErrParamRequired("WebACLLockToken"))
  7200  	}
  7201  	if s.WebACLLockToken != nil && len(*s.WebACLLockToken) < 1 {
  7202  		invalidParams.Add(request.NewErrParamMinLen("WebACLLockToken", 1))
  7203  	}
  7204  
  7205  	if invalidParams.Len() > 0 {
  7206  		return invalidParams
  7207  	}
  7208  	return nil
  7209  }
  7210  
  7211  // SetWebACLArn sets the WebACLArn field's value.
  7212  func (s *DeleteFirewallManagerRuleGroupsInput) SetWebACLArn(v string) *DeleteFirewallManagerRuleGroupsInput {
  7213  	s.WebACLArn = &v
  7214  	return s
  7215  }
  7216  
  7217  // SetWebACLLockToken sets the WebACLLockToken field's value.
  7218  func (s *DeleteFirewallManagerRuleGroupsInput) SetWebACLLockToken(v string) *DeleteFirewallManagerRuleGroupsInput {
  7219  	s.WebACLLockToken = &v
  7220  	return s
  7221  }
  7222  
  7223  type DeleteFirewallManagerRuleGroupsOutput struct {
  7224  	_ struct{} `type:"structure"`
  7225  
  7226  	// A token used for optimistic locking. WAF returns a token to your get and
  7227  	// list requests, to mark the state of the entity at the time of the request.
  7228  	// To make changes to the entity associated with the token, you provide the
  7229  	// token to operations like update and delete. WAF uses the token to ensure
  7230  	// that no changes have been made to the entity since you last retrieved it.
  7231  	// If a change has been made, the update fails with a WAFOptimisticLockException.
  7232  	// If this happens, perform another get, and use the new token returned by that
  7233  	// operation.
  7234  	NextWebACLLockToken *string `min:"1" type:"string"`
  7235  }
  7236  
  7237  // String returns the string representation.
  7238  //
  7239  // API parameter values that are decorated as "sensitive" in the API will not
  7240  // be included in the string output. The member name will be present, but the
  7241  // value will be replaced with "sensitive".
  7242  func (s DeleteFirewallManagerRuleGroupsOutput) String() string {
  7243  	return awsutil.Prettify(s)
  7244  }
  7245  
  7246  // GoString returns the string representation.
  7247  //
  7248  // API parameter values that are decorated as "sensitive" in the API will not
  7249  // be included in the string output. The member name will be present, but the
  7250  // value will be replaced with "sensitive".
  7251  func (s DeleteFirewallManagerRuleGroupsOutput) GoString() string {
  7252  	return s.String()
  7253  }
  7254  
  7255  // SetNextWebACLLockToken sets the NextWebACLLockToken field's value.
  7256  func (s *DeleteFirewallManagerRuleGroupsOutput) SetNextWebACLLockToken(v string) *DeleteFirewallManagerRuleGroupsOutput {
  7257  	s.NextWebACLLockToken = &v
  7258  	return s
  7259  }
  7260  
  7261  type DeleteIPSetInput struct {
  7262  	_ struct{} `type:"structure"`
  7263  
  7264  	// A unique identifier for the set. This ID is returned in the responses to
  7265  	// create and list commands. You provide it to operations like update and delete.
  7266  	//
  7267  	// Id is a required field
  7268  	Id *string `min:"1" type:"string" required:"true"`
  7269  
  7270  	// A token used for optimistic locking. WAF returns a token to your get and
  7271  	// list requests, to mark the state of the entity at the time of the request.
  7272  	// To make changes to the entity associated with the token, you provide the
  7273  	// token to operations like update and delete. WAF uses the token to ensure
  7274  	// that no changes have been made to the entity since you last retrieved it.
  7275  	// If a change has been made, the update fails with a WAFOptimisticLockException.
  7276  	// If this happens, perform another get, and use the new token returned by that
  7277  	// operation.
  7278  	//
  7279  	// LockToken is a required field
  7280  	LockToken *string `min:"1" type:"string" required:"true"`
  7281  
  7282  	// The name of the IP set. You cannot change the name of an IPSet after you
  7283  	// create it.
  7284  	//
  7285  	// Name is a required field
  7286  	Name *string `min:"1" type:"string" required:"true"`
  7287  
  7288  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  7289  	// regional application. A regional application can be an Application Load Balancer
  7290  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  7291  	//
  7292  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  7293  	// as follows:
  7294  	//
  7295  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  7296  	//    --region=us-east-1.
  7297  	//
  7298  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  7299  	//
  7300  	// Scope is a required field
  7301  	Scope *string `type:"string" required:"true" enum:"Scope"`
  7302  }
  7303  
  7304  // String returns the string representation.
  7305  //
  7306  // API parameter values that are decorated as "sensitive" in the API will not
  7307  // be included in the string output. The member name will be present, but the
  7308  // value will be replaced with "sensitive".
  7309  func (s DeleteIPSetInput) String() string {
  7310  	return awsutil.Prettify(s)
  7311  }
  7312  
  7313  // GoString returns the string representation.
  7314  //
  7315  // API parameter values that are decorated as "sensitive" in the API will not
  7316  // be included in the string output. The member name will be present, but the
  7317  // value will be replaced with "sensitive".
  7318  func (s DeleteIPSetInput) GoString() string {
  7319  	return s.String()
  7320  }
  7321  
  7322  // Validate inspects the fields of the type to determine if they are valid.
  7323  func (s *DeleteIPSetInput) Validate() error {
  7324  	invalidParams := request.ErrInvalidParams{Context: "DeleteIPSetInput"}
  7325  	if s.Id == nil {
  7326  		invalidParams.Add(request.NewErrParamRequired("Id"))
  7327  	}
  7328  	if s.Id != nil && len(*s.Id) < 1 {
  7329  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
  7330  	}
  7331  	if s.LockToken == nil {
  7332  		invalidParams.Add(request.NewErrParamRequired("LockToken"))
  7333  	}
  7334  	if s.LockToken != nil && len(*s.LockToken) < 1 {
  7335  		invalidParams.Add(request.NewErrParamMinLen("LockToken", 1))
  7336  	}
  7337  	if s.Name == nil {
  7338  		invalidParams.Add(request.NewErrParamRequired("Name"))
  7339  	}
  7340  	if s.Name != nil && len(*s.Name) < 1 {
  7341  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  7342  	}
  7343  	if s.Scope == nil {
  7344  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  7345  	}
  7346  
  7347  	if invalidParams.Len() > 0 {
  7348  		return invalidParams
  7349  	}
  7350  	return nil
  7351  }
  7352  
  7353  // SetId sets the Id field's value.
  7354  func (s *DeleteIPSetInput) SetId(v string) *DeleteIPSetInput {
  7355  	s.Id = &v
  7356  	return s
  7357  }
  7358  
  7359  // SetLockToken sets the LockToken field's value.
  7360  func (s *DeleteIPSetInput) SetLockToken(v string) *DeleteIPSetInput {
  7361  	s.LockToken = &v
  7362  	return s
  7363  }
  7364  
  7365  // SetName sets the Name field's value.
  7366  func (s *DeleteIPSetInput) SetName(v string) *DeleteIPSetInput {
  7367  	s.Name = &v
  7368  	return s
  7369  }
  7370  
  7371  // SetScope sets the Scope field's value.
  7372  func (s *DeleteIPSetInput) SetScope(v string) *DeleteIPSetInput {
  7373  	s.Scope = &v
  7374  	return s
  7375  }
  7376  
  7377  type DeleteIPSetOutput struct {
  7378  	_ struct{} `type:"structure"`
  7379  }
  7380  
  7381  // String 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 DeleteIPSetOutput) String() string {
  7387  	return awsutil.Prettify(s)
  7388  }
  7389  
  7390  // GoString returns the string representation.
  7391  //
  7392  // API parameter values that are decorated as "sensitive" in the API will not
  7393  // be included in the string output. The member name will be present, but the
  7394  // value will be replaced with "sensitive".
  7395  func (s DeleteIPSetOutput) GoString() string {
  7396  	return s.String()
  7397  }
  7398  
  7399  type DeleteLoggingConfigurationInput struct {
  7400  	_ struct{} `type:"structure"`
  7401  
  7402  	// The Amazon Resource Name (ARN) of the web ACL from which you want to delete
  7403  	// the LoggingConfiguration.
  7404  	//
  7405  	// ResourceArn is a required field
  7406  	ResourceArn *string `min:"20" type:"string" required:"true"`
  7407  }
  7408  
  7409  // String returns the string representation.
  7410  //
  7411  // API parameter values that are decorated as "sensitive" in the API will not
  7412  // be included in the string output. The member name will be present, but the
  7413  // value will be replaced with "sensitive".
  7414  func (s DeleteLoggingConfigurationInput) String() string {
  7415  	return awsutil.Prettify(s)
  7416  }
  7417  
  7418  // GoString returns the string representation.
  7419  //
  7420  // API parameter values that are decorated as "sensitive" in the API will not
  7421  // be included in the string output. The member name will be present, but the
  7422  // value will be replaced with "sensitive".
  7423  func (s DeleteLoggingConfigurationInput) GoString() string {
  7424  	return s.String()
  7425  }
  7426  
  7427  // Validate inspects the fields of the type to determine if they are valid.
  7428  func (s *DeleteLoggingConfigurationInput) Validate() error {
  7429  	invalidParams := request.ErrInvalidParams{Context: "DeleteLoggingConfigurationInput"}
  7430  	if s.ResourceArn == nil {
  7431  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  7432  	}
  7433  	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
  7434  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
  7435  	}
  7436  
  7437  	if invalidParams.Len() > 0 {
  7438  		return invalidParams
  7439  	}
  7440  	return nil
  7441  }
  7442  
  7443  // SetResourceArn sets the ResourceArn field's value.
  7444  func (s *DeleteLoggingConfigurationInput) SetResourceArn(v string) *DeleteLoggingConfigurationInput {
  7445  	s.ResourceArn = &v
  7446  	return s
  7447  }
  7448  
  7449  type DeleteLoggingConfigurationOutput struct {
  7450  	_ struct{} `type:"structure"`
  7451  }
  7452  
  7453  // String returns the string representation.
  7454  //
  7455  // API parameter values that are decorated as "sensitive" in the API will not
  7456  // be included in the string output. The member name will be present, but the
  7457  // value will be replaced with "sensitive".
  7458  func (s DeleteLoggingConfigurationOutput) String() string {
  7459  	return awsutil.Prettify(s)
  7460  }
  7461  
  7462  // GoString returns the string representation.
  7463  //
  7464  // API parameter values that are decorated as "sensitive" in the API will not
  7465  // be included in the string output. The member name will be present, but the
  7466  // value will be replaced with "sensitive".
  7467  func (s DeleteLoggingConfigurationOutput) GoString() string {
  7468  	return s.String()
  7469  }
  7470  
  7471  type DeletePermissionPolicyInput struct {
  7472  	_ struct{} `type:"structure"`
  7473  
  7474  	// The Amazon Resource Name (ARN) of the rule group from which you want to delete
  7475  	// the policy.
  7476  	//
  7477  	// You must be the owner of the rule group to perform this operation.
  7478  	//
  7479  	// ResourceArn is a required field
  7480  	ResourceArn *string `min:"20" type:"string" required:"true"`
  7481  }
  7482  
  7483  // String returns the string representation.
  7484  //
  7485  // API parameter values that are decorated as "sensitive" in the API will not
  7486  // be included in the string output. The member name will be present, but the
  7487  // value will be replaced with "sensitive".
  7488  func (s DeletePermissionPolicyInput) String() string {
  7489  	return awsutil.Prettify(s)
  7490  }
  7491  
  7492  // GoString returns the string representation.
  7493  //
  7494  // API parameter values that are decorated as "sensitive" in the API will not
  7495  // be included in the string output. The member name will be present, but the
  7496  // value will be replaced with "sensitive".
  7497  func (s DeletePermissionPolicyInput) GoString() string {
  7498  	return s.String()
  7499  }
  7500  
  7501  // Validate inspects the fields of the type to determine if they are valid.
  7502  func (s *DeletePermissionPolicyInput) Validate() error {
  7503  	invalidParams := request.ErrInvalidParams{Context: "DeletePermissionPolicyInput"}
  7504  	if s.ResourceArn == nil {
  7505  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  7506  	}
  7507  	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
  7508  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
  7509  	}
  7510  
  7511  	if invalidParams.Len() > 0 {
  7512  		return invalidParams
  7513  	}
  7514  	return nil
  7515  }
  7516  
  7517  // SetResourceArn sets the ResourceArn field's value.
  7518  func (s *DeletePermissionPolicyInput) SetResourceArn(v string) *DeletePermissionPolicyInput {
  7519  	s.ResourceArn = &v
  7520  	return s
  7521  }
  7522  
  7523  type DeletePermissionPolicyOutput struct {
  7524  	_ struct{} `type:"structure"`
  7525  }
  7526  
  7527  // String returns the string representation.
  7528  //
  7529  // API parameter values that are decorated as "sensitive" in the API will not
  7530  // be included in the string output. The member name will be present, but the
  7531  // value will be replaced with "sensitive".
  7532  func (s DeletePermissionPolicyOutput) String() string {
  7533  	return awsutil.Prettify(s)
  7534  }
  7535  
  7536  // GoString returns the string representation.
  7537  //
  7538  // API parameter values that are decorated as "sensitive" in the API will not
  7539  // be included in the string output. The member name will be present, but the
  7540  // value will be replaced with "sensitive".
  7541  func (s DeletePermissionPolicyOutput) GoString() string {
  7542  	return s.String()
  7543  }
  7544  
  7545  type DeleteRegexPatternSetInput struct {
  7546  	_ struct{} `type:"structure"`
  7547  
  7548  	// A unique identifier for the set. This ID is returned in the responses to
  7549  	// create and list commands. You provide it to operations like update and delete.
  7550  	//
  7551  	// Id is a required field
  7552  	Id *string `min:"1" type:"string" required:"true"`
  7553  
  7554  	// A token used for optimistic locking. WAF returns a token to your get and
  7555  	// list requests, to mark the state of the entity at the time of the request.
  7556  	// To make changes to the entity associated with the token, you provide the
  7557  	// token to operations like update and delete. WAF uses the token to ensure
  7558  	// that no changes have been made to the entity since you last retrieved it.
  7559  	// If a change has been made, the update fails with a WAFOptimisticLockException.
  7560  	// If this happens, perform another get, and use the new token returned by that
  7561  	// operation.
  7562  	//
  7563  	// LockToken is a required field
  7564  	LockToken *string `min:"1" type:"string" required:"true"`
  7565  
  7566  	// The name of the set. You cannot change the name after you create the set.
  7567  	//
  7568  	// Name is a required field
  7569  	Name *string `min:"1" type:"string" required:"true"`
  7570  
  7571  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  7572  	// regional application. A regional application can be an Application Load Balancer
  7573  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  7574  	//
  7575  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  7576  	// as follows:
  7577  	//
  7578  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  7579  	//    --region=us-east-1.
  7580  	//
  7581  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  7582  	//
  7583  	// Scope is a required field
  7584  	Scope *string `type:"string" required:"true" enum:"Scope"`
  7585  }
  7586  
  7587  // String returns the string representation.
  7588  //
  7589  // API parameter values that are decorated as "sensitive" in the API will not
  7590  // be included in the string output. The member name will be present, but the
  7591  // value will be replaced with "sensitive".
  7592  func (s DeleteRegexPatternSetInput) String() string {
  7593  	return awsutil.Prettify(s)
  7594  }
  7595  
  7596  // GoString 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 DeleteRegexPatternSetInput) GoString() string {
  7602  	return s.String()
  7603  }
  7604  
  7605  // Validate inspects the fields of the type to determine if they are valid.
  7606  func (s *DeleteRegexPatternSetInput) Validate() error {
  7607  	invalidParams := request.ErrInvalidParams{Context: "DeleteRegexPatternSetInput"}
  7608  	if s.Id == nil {
  7609  		invalidParams.Add(request.NewErrParamRequired("Id"))
  7610  	}
  7611  	if s.Id != nil && len(*s.Id) < 1 {
  7612  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
  7613  	}
  7614  	if s.LockToken == nil {
  7615  		invalidParams.Add(request.NewErrParamRequired("LockToken"))
  7616  	}
  7617  	if s.LockToken != nil && len(*s.LockToken) < 1 {
  7618  		invalidParams.Add(request.NewErrParamMinLen("LockToken", 1))
  7619  	}
  7620  	if s.Name == nil {
  7621  		invalidParams.Add(request.NewErrParamRequired("Name"))
  7622  	}
  7623  	if s.Name != nil && len(*s.Name) < 1 {
  7624  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  7625  	}
  7626  	if s.Scope == nil {
  7627  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  7628  	}
  7629  
  7630  	if invalidParams.Len() > 0 {
  7631  		return invalidParams
  7632  	}
  7633  	return nil
  7634  }
  7635  
  7636  // SetId sets the Id field's value.
  7637  func (s *DeleteRegexPatternSetInput) SetId(v string) *DeleteRegexPatternSetInput {
  7638  	s.Id = &v
  7639  	return s
  7640  }
  7641  
  7642  // SetLockToken sets the LockToken field's value.
  7643  func (s *DeleteRegexPatternSetInput) SetLockToken(v string) *DeleteRegexPatternSetInput {
  7644  	s.LockToken = &v
  7645  	return s
  7646  }
  7647  
  7648  // SetName sets the Name field's value.
  7649  func (s *DeleteRegexPatternSetInput) SetName(v string) *DeleteRegexPatternSetInput {
  7650  	s.Name = &v
  7651  	return s
  7652  }
  7653  
  7654  // SetScope sets the Scope field's value.
  7655  func (s *DeleteRegexPatternSetInput) SetScope(v string) *DeleteRegexPatternSetInput {
  7656  	s.Scope = &v
  7657  	return s
  7658  }
  7659  
  7660  type DeleteRegexPatternSetOutput struct {
  7661  	_ struct{} `type:"structure"`
  7662  }
  7663  
  7664  // String returns the string representation.
  7665  //
  7666  // API parameter values that are decorated as "sensitive" in the API will not
  7667  // be included in the string output. The member name will be present, but the
  7668  // value will be replaced with "sensitive".
  7669  func (s DeleteRegexPatternSetOutput) String() string {
  7670  	return awsutil.Prettify(s)
  7671  }
  7672  
  7673  // GoString returns the string representation.
  7674  //
  7675  // API parameter values that are decorated as "sensitive" in the API will not
  7676  // be included in the string output. The member name will be present, but the
  7677  // value will be replaced with "sensitive".
  7678  func (s DeleteRegexPatternSetOutput) GoString() string {
  7679  	return s.String()
  7680  }
  7681  
  7682  type DeleteRuleGroupInput struct {
  7683  	_ struct{} `type:"structure"`
  7684  
  7685  	// A unique identifier for the rule group. This ID is returned in the responses
  7686  	// to create and list commands. You provide it to operations like update and
  7687  	// delete.
  7688  	//
  7689  	// Id is a required field
  7690  	Id *string `min:"1" type:"string" required:"true"`
  7691  
  7692  	// A token used for optimistic locking. WAF returns a token to your get and
  7693  	// list requests, to mark the state of the entity at the time of the request.
  7694  	// To make changes to the entity associated with the token, you provide the
  7695  	// token to operations like update and delete. WAF uses the token to ensure
  7696  	// that no changes have been made to the entity since you last retrieved it.
  7697  	// If a change has been made, the update fails with a WAFOptimisticLockException.
  7698  	// If this happens, perform another get, and use the new token returned by that
  7699  	// operation.
  7700  	//
  7701  	// LockToken is a required field
  7702  	LockToken *string `min:"1" type:"string" required:"true"`
  7703  
  7704  	// The name of the rule group. You cannot change the name of a rule group after
  7705  	// you create it.
  7706  	//
  7707  	// Name is a required field
  7708  	Name *string `min:"1" type:"string" required:"true"`
  7709  
  7710  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  7711  	// regional application. A regional application can be an Application Load Balancer
  7712  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  7713  	//
  7714  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  7715  	// as follows:
  7716  	//
  7717  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  7718  	//    --region=us-east-1.
  7719  	//
  7720  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  7721  	//
  7722  	// Scope is a required field
  7723  	Scope *string `type:"string" required:"true" enum:"Scope"`
  7724  }
  7725  
  7726  // String returns the string representation.
  7727  //
  7728  // API parameter values that are decorated as "sensitive" in the API will not
  7729  // be included in the string output. The member name will be present, but the
  7730  // value will be replaced with "sensitive".
  7731  func (s DeleteRuleGroupInput) String() string {
  7732  	return awsutil.Prettify(s)
  7733  }
  7734  
  7735  // GoString returns the string representation.
  7736  //
  7737  // API parameter values that are decorated as "sensitive" in the API will not
  7738  // be included in the string output. The member name will be present, but the
  7739  // value will be replaced with "sensitive".
  7740  func (s DeleteRuleGroupInput) GoString() string {
  7741  	return s.String()
  7742  }
  7743  
  7744  // Validate inspects the fields of the type to determine if they are valid.
  7745  func (s *DeleteRuleGroupInput) Validate() error {
  7746  	invalidParams := request.ErrInvalidParams{Context: "DeleteRuleGroupInput"}
  7747  	if s.Id == nil {
  7748  		invalidParams.Add(request.NewErrParamRequired("Id"))
  7749  	}
  7750  	if s.Id != nil && len(*s.Id) < 1 {
  7751  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
  7752  	}
  7753  	if s.LockToken == nil {
  7754  		invalidParams.Add(request.NewErrParamRequired("LockToken"))
  7755  	}
  7756  	if s.LockToken != nil && len(*s.LockToken) < 1 {
  7757  		invalidParams.Add(request.NewErrParamMinLen("LockToken", 1))
  7758  	}
  7759  	if s.Name == nil {
  7760  		invalidParams.Add(request.NewErrParamRequired("Name"))
  7761  	}
  7762  	if s.Name != nil && len(*s.Name) < 1 {
  7763  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  7764  	}
  7765  	if s.Scope == nil {
  7766  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  7767  	}
  7768  
  7769  	if invalidParams.Len() > 0 {
  7770  		return invalidParams
  7771  	}
  7772  	return nil
  7773  }
  7774  
  7775  // SetId sets the Id field's value.
  7776  func (s *DeleteRuleGroupInput) SetId(v string) *DeleteRuleGroupInput {
  7777  	s.Id = &v
  7778  	return s
  7779  }
  7780  
  7781  // SetLockToken sets the LockToken field's value.
  7782  func (s *DeleteRuleGroupInput) SetLockToken(v string) *DeleteRuleGroupInput {
  7783  	s.LockToken = &v
  7784  	return s
  7785  }
  7786  
  7787  // SetName sets the Name field's value.
  7788  func (s *DeleteRuleGroupInput) SetName(v string) *DeleteRuleGroupInput {
  7789  	s.Name = &v
  7790  	return s
  7791  }
  7792  
  7793  // SetScope sets the Scope field's value.
  7794  func (s *DeleteRuleGroupInput) SetScope(v string) *DeleteRuleGroupInput {
  7795  	s.Scope = &v
  7796  	return s
  7797  }
  7798  
  7799  type DeleteRuleGroupOutput struct {
  7800  	_ struct{} `type:"structure"`
  7801  }
  7802  
  7803  // String returns the string representation.
  7804  //
  7805  // API parameter values that are decorated as "sensitive" in the API will not
  7806  // be included in the string output. The member name will be present, but the
  7807  // value will be replaced with "sensitive".
  7808  func (s DeleteRuleGroupOutput) String() string {
  7809  	return awsutil.Prettify(s)
  7810  }
  7811  
  7812  // GoString returns the string representation.
  7813  //
  7814  // API parameter values that are decorated as "sensitive" in the API will not
  7815  // be included in the string output. The member name will be present, but the
  7816  // value will be replaced with "sensitive".
  7817  func (s DeleteRuleGroupOutput) GoString() string {
  7818  	return s.String()
  7819  }
  7820  
  7821  type DeleteWebACLInput struct {
  7822  	_ struct{} `type:"structure"`
  7823  
  7824  	// The unique identifier for the web ACL. This ID is returned in the responses
  7825  	// to create and list commands. You provide it to operations like update and
  7826  	// delete.
  7827  	//
  7828  	// Id is a required field
  7829  	Id *string `min:"1" type:"string" required:"true"`
  7830  
  7831  	// A token used for optimistic locking. WAF returns a token to your get and
  7832  	// list requests, to mark the state of the entity at the time of the request.
  7833  	// To make changes to the entity associated with the token, you provide the
  7834  	// token to operations like update and delete. WAF uses the token to ensure
  7835  	// that no changes have been made to the entity since you last retrieved it.
  7836  	// If a change has been made, the update fails with a WAFOptimisticLockException.
  7837  	// If this happens, perform another get, and use the new token returned by that
  7838  	// operation.
  7839  	//
  7840  	// LockToken is a required field
  7841  	LockToken *string `min:"1" type:"string" required:"true"`
  7842  
  7843  	// The name of the web ACL. You cannot change the name of a web ACL after you
  7844  	// create it.
  7845  	//
  7846  	// Name is a required field
  7847  	Name *string `min:"1" type:"string" required:"true"`
  7848  
  7849  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  7850  	// regional application. A regional application can be an Application Load Balancer
  7851  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  7852  	//
  7853  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  7854  	// as follows:
  7855  	//
  7856  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  7857  	//    --region=us-east-1.
  7858  	//
  7859  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  7860  	//
  7861  	// Scope is a required field
  7862  	Scope *string `type:"string" required:"true" enum:"Scope"`
  7863  }
  7864  
  7865  // String returns the string representation.
  7866  //
  7867  // API parameter values that are decorated as "sensitive" in the API will not
  7868  // be included in the string output. The member name will be present, but the
  7869  // value will be replaced with "sensitive".
  7870  func (s DeleteWebACLInput) String() string {
  7871  	return awsutil.Prettify(s)
  7872  }
  7873  
  7874  // GoString returns the string representation.
  7875  //
  7876  // API parameter values that are decorated as "sensitive" in the API will not
  7877  // be included in the string output. The member name will be present, but the
  7878  // value will be replaced with "sensitive".
  7879  func (s DeleteWebACLInput) GoString() string {
  7880  	return s.String()
  7881  }
  7882  
  7883  // Validate inspects the fields of the type to determine if they are valid.
  7884  func (s *DeleteWebACLInput) Validate() error {
  7885  	invalidParams := request.ErrInvalidParams{Context: "DeleteWebACLInput"}
  7886  	if s.Id == nil {
  7887  		invalidParams.Add(request.NewErrParamRequired("Id"))
  7888  	}
  7889  	if s.Id != nil && len(*s.Id) < 1 {
  7890  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
  7891  	}
  7892  	if s.LockToken == nil {
  7893  		invalidParams.Add(request.NewErrParamRequired("LockToken"))
  7894  	}
  7895  	if s.LockToken != nil && len(*s.LockToken) < 1 {
  7896  		invalidParams.Add(request.NewErrParamMinLen("LockToken", 1))
  7897  	}
  7898  	if s.Name == nil {
  7899  		invalidParams.Add(request.NewErrParamRequired("Name"))
  7900  	}
  7901  	if s.Name != nil && len(*s.Name) < 1 {
  7902  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  7903  	}
  7904  	if s.Scope == nil {
  7905  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  7906  	}
  7907  
  7908  	if invalidParams.Len() > 0 {
  7909  		return invalidParams
  7910  	}
  7911  	return nil
  7912  }
  7913  
  7914  // SetId sets the Id field's value.
  7915  func (s *DeleteWebACLInput) SetId(v string) *DeleteWebACLInput {
  7916  	s.Id = &v
  7917  	return s
  7918  }
  7919  
  7920  // SetLockToken sets the LockToken field's value.
  7921  func (s *DeleteWebACLInput) SetLockToken(v string) *DeleteWebACLInput {
  7922  	s.LockToken = &v
  7923  	return s
  7924  }
  7925  
  7926  // SetName sets the Name field's value.
  7927  func (s *DeleteWebACLInput) SetName(v string) *DeleteWebACLInput {
  7928  	s.Name = &v
  7929  	return s
  7930  }
  7931  
  7932  // SetScope sets the Scope field's value.
  7933  func (s *DeleteWebACLInput) SetScope(v string) *DeleteWebACLInput {
  7934  	s.Scope = &v
  7935  	return s
  7936  }
  7937  
  7938  type DeleteWebACLOutput struct {
  7939  	_ struct{} `type:"structure"`
  7940  }
  7941  
  7942  // String returns the string representation.
  7943  //
  7944  // API parameter values that are decorated as "sensitive" in the API will not
  7945  // be included in the string output. The member name will be present, but the
  7946  // value will be replaced with "sensitive".
  7947  func (s DeleteWebACLOutput) String() string {
  7948  	return awsutil.Prettify(s)
  7949  }
  7950  
  7951  // GoString returns the string representation.
  7952  //
  7953  // API parameter values that are decorated as "sensitive" in the API will not
  7954  // be included in the string output. The member name will be present, but the
  7955  // value will be replaced with "sensitive".
  7956  func (s DeleteWebACLOutput) GoString() string {
  7957  	return s.String()
  7958  }
  7959  
  7960  type DescribeManagedRuleGroupInput struct {
  7961  	_ struct{} `type:"structure"`
  7962  
  7963  	// The name of the managed rule group. You use this, along with the vendor name,
  7964  	// to identify the rule group.
  7965  	//
  7966  	// Name is a required field
  7967  	Name *string `min:"1" type:"string" required:"true"`
  7968  
  7969  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  7970  	// regional application. A regional application can be an Application Load Balancer
  7971  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  7972  	//
  7973  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  7974  	// as follows:
  7975  	//
  7976  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  7977  	//    --region=us-east-1.
  7978  	//
  7979  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  7980  	//
  7981  	// Scope is a required field
  7982  	Scope *string `type:"string" required:"true" enum:"Scope"`
  7983  
  7984  	// The name of the managed rule group vendor. You use this, along with the rule
  7985  	// group name, to identify the rule group.
  7986  	//
  7987  	// VendorName is a required field
  7988  	VendorName *string `min:"1" type:"string" required:"true"`
  7989  
  7990  	// The version of the rule group. You can only use a version that is not scheduled
  7991  	// for expiration. If you don't provide this, WAF uses the vendor's default
  7992  	// version.
  7993  	VersionName *string `min:"1" type:"string"`
  7994  }
  7995  
  7996  // String returns the string representation.
  7997  //
  7998  // API parameter values that are decorated as "sensitive" in the API will not
  7999  // be included in the string output. The member name will be present, but the
  8000  // value will be replaced with "sensitive".
  8001  func (s DescribeManagedRuleGroupInput) String() string {
  8002  	return awsutil.Prettify(s)
  8003  }
  8004  
  8005  // GoString returns the string representation.
  8006  //
  8007  // API parameter values that are decorated as "sensitive" in the API will not
  8008  // be included in the string output. The member name will be present, but the
  8009  // value will be replaced with "sensitive".
  8010  func (s DescribeManagedRuleGroupInput) GoString() string {
  8011  	return s.String()
  8012  }
  8013  
  8014  // Validate inspects the fields of the type to determine if they are valid.
  8015  func (s *DescribeManagedRuleGroupInput) Validate() error {
  8016  	invalidParams := request.ErrInvalidParams{Context: "DescribeManagedRuleGroupInput"}
  8017  	if s.Name == nil {
  8018  		invalidParams.Add(request.NewErrParamRequired("Name"))
  8019  	}
  8020  	if s.Name != nil && len(*s.Name) < 1 {
  8021  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  8022  	}
  8023  	if s.Scope == nil {
  8024  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  8025  	}
  8026  	if s.VendorName == nil {
  8027  		invalidParams.Add(request.NewErrParamRequired("VendorName"))
  8028  	}
  8029  	if s.VendorName != nil && len(*s.VendorName) < 1 {
  8030  		invalidParams.Add(request.NewErrParamMinLen("VendorName", 1))
  8031  	}
  8032  	if s.VersionName != nil && len(*s.VersionName) < 1 {
  8033  		invalidParams.Add(request.NewErrParamMinLen("VersionName", 1))
  8034  	}
  8035  
  8036  	if invalidParams.Len() > 0 {
  8037  		return invalidParams
  8038  	}
  8039  	return nil
  8040  }
  8041  
  8042  // SetName sets the Name field's value.
  8043  func (s *DescribeManagedRuleGroupInput) SetName(v string) *DescribeManagedRuleGroupInput {
  8044  	s.Name = &v
  8045  	return s
  8046  }
  8047  
  8048  // SetScope sets the Scope field's value.
  8049  func (s *DescribeManagedRuleGroupInput) SetScope(v string) *DescribeManagedRuleGroupInput {
  8050  	s.Scope = &v
  8051  	return s
  8052  }
  8053  
  8054  // SetVendorName sets the VendorName field's value.
  8055  func (s *DescribeManagedRuleGroupInput) SetVendorName(v string) *DescribeManagedRuleGroupInput {
  8056  	s.VendorName = &v
  8057  	return s
  8058  }
  8059  
  8060  // SetVersionName sets the VersionName field's value.
  8061  func (s *DescribeManagedRuleGroupInput) SetVersionName(v string) *DescribeManagedRuleGroupInput {
  8062  	s.VersionName = &v
  8063  	return s
  8064  }
  8065  
  8066  type DescribeManagedRuleGroupOutput struct {
  8067  	_ struct{} `type:"structure"`
  8068  
  8069  	// The labels that one or more rules in this rule group add to matching web
  8070  	// requests. These labels are defined in the RuleLabels for a Rule.
  8071  	AvailableLabels []*LabelSummary `type:"list"`
  8072  
  8073  	// The web ACL capacity units (WCUs) required for this rule group. WAF uses
  8074  	// web ACL capacity units (WCU) to calculate and control the operating resources
  8075  	// that are used to run your rules, rule groups, and web ACLs. WAF calculates
  8076  	// capacity differently for each rule type, to reflect each rule's relative
  8077  	// cost. Rule group capacity is fixed at creation, so users can plan their web
  8078  	// ACL WCU usage when they use a rule group. The WCU limit for web ACLs is 1,500.
  8079  	Capacity *int64 `min:"1" type:"long"`
  8080  
  8081  	// The labels that one or more rules in this rule group match against in label
  8082  	// match statements. These labels are defined in a LabelMatchStatement specification,
  8083  	// in the Statement definition of a rule.
  8084  	ConsumedLabels []*LabelSummary `type:"list"`
  8085  
  8086  	// The label namespace prefix for this rule group. All labels added by rules
  8087  	// in this rule group have this prefix.
  8088  	//
  8089  	//    * The syntax for the label namespace prefix for a managed rule group is
  8090  	//    the following: awswaf:managed:<vendor>:<rule group name>:
  8091  	//
  8092  	//    * When a rule with a label matches a web request, WAF adds the fully qualified
  8093  	//    label to the request. A fully qualified label is made up of the label
  8094  	//    namespace from the rule group or web ACL where the rule is defined and
  8095  	//    the label from the rule, separated by a colon: <label namespace>:<label
  8096  	//    from rule>
  8097  	LabelNamespace *string `min:"1" type:"string"`
  8098  
  8099  	Rules []*RuleSummary `type:"list"`
  8100  
  8101  	// The Amazon resource name (ARN) of the Amazon Simple Notification Service
  8102  	// SNS topic that's used to record changes to the managed rule group. You can
  8103  	// subscribe to the SNS topic to receive notifications when the managed rule
  8104  	// group is modified, such as for new versions and for version expiration. For
  8105  	// more information, see the Amazon Simple Notification Service Developer Guide
  8106  	// (https://docs.aws.amazon.com/sns/latest/dg/welcome.html).
  8107  	SnsTopicArn *string `min:"20" type:"string"`
  8108  
  8109  	// The managed rule group's version.
  8110  	VersionName *string `min:"1" type:"string"`
  8111  }
  8112  
  8113  // String returns the string representation.
  8114  //
  8115  // API parameter values that are decorated as "sensitive" in the API will not
  8116  // be included in the string output. The member name will be present, but the
  8117  // value will be replaced with "sensitive".
  8118  func (s DescribeManagedRuleGroupOutput) String() string {
  8119  	return awsutil.Prettify(s)
  8120  }
  8121  
  8122  // GoString returns the string representation.
  8123  //
  8124  // API parameter values that are decorated as "sensitive" in the API will not
  8125  // be included in the string output. The member name will be present, but the
  8126  // value will be replaced with "sensitive".
  8127  func (s DescribeManagedRuleGroupOutput) GoString() string {
  8128  	return s.String()
  8129  }
  8130  
  8131  // SetAvailableLabels sets the AvailableLabels field's value.
  8132  func (s *DescribeManagedRuleGroupOutput) SetAvailableLabels(v []*LabelSummary) *DescribeManagedRuleGroupOutput {
  8133  	s.AvailableLabels = v
  8134  	return s
  8135  }
  8136  
  8137  // SetCapacity sets the Capacity field's value.
  8138  func (s *DescribeManagedRuleGroupOutput) SetCapacity(v int64) *DescribeManagedRuleGroupOutput {
  8139  	s.Capacity = &v
  8140  	return s
  8141  }
  8142  
  8143  // SetConsumedLabels sets the ConsumedLabels field's value.
  8144  func (s *DescribeManagedRuleGroupOutput) SetConsumedLabels(v []*LabelSummary) *DescribeManagedRuleGroupOutput {
  8145  	s.ConsumedLabels = v
  8146  	return s
  8147  }
  8148  
  8149  // SetLabelNamespace sets the LabelNamespace field's value.
  8150  func (s *DescribeManagedRuleGroupOutput) SetLabelNamespace(v string) *DescribeManagedRuleGroupOutput {
  8151  	s.LabelNamespace = &v
  8152  	return s
  8153  }
  8154  
  8155  // SetRules sets the Rules field's value.
  8156  func (s *DescribeManagedRuleGroupOutput) SetRules(v []*RuleSummary) *DescribeManagedRuleGroupOutput {
  8157  	s.Rules = v
  8158  	return s
  8159  }
  8160  
  8161  // SetSnsTopicArn sets the SnsTopicArn field's value.
  8162  func (s *DescribeManagedRuleGroupOutput) SetSnsTopicArn(v string) *DescribeManagedRuleGroupOutput {
  8163  	s.SnsTopicArn = &v
  8164  	return s
  8165  }
  8166  
  8167  // SetVersionName sets the VersionName field's value.
  8168  func (s *DescribeManagedRuleGroupOutput) SetVersionName(v string) *DescribeManagedRuleGroupOutput {
  8169  	s.VersionName = &v
  8170  	return s
  8171  }
  8172  
  8173  type DisassociateWebACLInput struct {
  8174  	_ struct{} `type:"structure"`
  8175  
  8176  	// The Amazon Resource Name (ARN) of the resource to disassociate from the web
  8177  	// ACL.
  8178  	//
  8179  	// The ARN must be in one of the following formats:
  8180  	//
  8181  	//    * For an Application Load Balancer: arn:aws:elasticloadbalancing:region:account-id:loadbalancer/app/load-balancer-name/load-balancer-id
  8182  	//
  8183  	//    * For an Amazon API Gateway REST API: arn:aws:apigateway:region::/restapis/api-id/stages/stage-name
  8184  	//
  8185  	//    * For an AppSync GraphQL API: arn:aws:appsync:region:account-id:apis/GraphQLApiId
  8186  	//
  8187  	// ResourceArn is a required field
  8188  	ResourceArn *string `min:"20" type:"string" required:"true"`
  8189  }
  8190  
  8191  // String returns the string representation.
  8192  //
  8193  // API parameter values that are decorated as "sensitive" in the API will not
  8194  // be included in the string output. The member name will be present, but the
  8195  // value will be replaced with "sensitive".
  8196  func (s DisassociateWebACLInput) String() string {
  8197  	return awsutil.Prettify(s)
  8198  }
  8199  
  8200  // GoString returns the string representation.
  8201  //
  8202  // API parameter values that are decorated as "sensitive" in the API will not
  8203  // be included in the string output. The member name will be present, but the
  8204  // value will be replaced with "sensitive".
  8205  func (s DisassociateWebACLInput) GoString() string {
  8206  	return s.String()
  8207  }
  8208  
  8209  // Validate inspects the fields of the type to determine if they are valid.
  8210  func (s *DisassociateWebACLInput) Validate() error {
  8211  	invalidParams := request.ErrInvalidParams{Context: "DisassociateWebACLInput"}
  8212  	if s.ResourceArn == nil {
  8213  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  8214  	}
  8215  	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
  8216  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
  8217  	}
  8218  
  8219  	if invalidParams.Len() > 0 {
  8220  		return invalidParams
  8221  	}
  8222  	return nil
  8223  }
  8224  
  8225  // SetResourceArn sets the ResourceArn field's value.
  8226  func (s *DisassociateWebACLInput) SetResourceArn(v string) *DisassociateWebACLInput {
  8227  	s.ResourceArn = &v
  8228  	return s
  8229  }
  8230  
  8231  type DisassociateWebACLOutput struct {
  8232  	_ struct{} `type:"structure"`
  8233  }
  8234  
  8235  // String returns the string representation.
  8236  //
  8237  // API parameter values that are decorated as "sensitive" in the API will not
  8238  // be included in the string output. The member name will be present, but the
  8239  // value will be replaced with "sensitive".
  8240  func (s DisassociateWebACLOutput) String() string {
  8241  	return awsutil.Prettify(s)
  8242  }
  8243  
  8244  // GoString returns the string representation.
  8245  //
  8246  // API parameter values that are decorated as "sensitive" in the API will not
  8247  // be included in the string output. The member name will be present, but the
  8248  // value will be replaced with "sensitive".
  8249  func (s DisassociateWebACLOutput) GoString() string {
  8250  	return s.String()
  8251  }
  8252  
  8253  // Specifies a single rule to exclude from the rule group. Excluding a rule
  8254  // overrides its action setting for the rule group in the web ACL, setting it
  8255  // to COUNT. This effectively excludes the rule from acting on web requests.
  8256  type ExcludedRule struct {
  8257  	_ struct{} `type:"structure"`
  8258  
  8259  	// The name of the rule to exclude.
  8260  	//
  8261  	// Name is a required field
  8262  	Name *string `min:"1" type:"string" required:"true"`
  8263  }
  8264  
  8265  // String returns the string representation.
  8266  //
  8267  // API parameter values that are decorated as "sensitive" in the API will not
  8268  // be included in the string output. The member name will be present, but the
  8269  // value will be replaced with "sensitive".
  8270  func (s ExcludedRule) String() string {
  8271  	return awsutil.Prettify(s)
  8272  }
  8273  
  8274  // GoString returns the string representation.
  8275  //
  8276  // API parameter values that are decorated as "sensitive" in the API will not
  8277  // be included in the string output. The member name will be present, but the
  8278  // value will be replaced with "sensitive".
  8279  func (s ExcludedRule) GoString() string {
  8280  	return s.String()
  8281  }
  8282  
  8283  // Validate inspects the fields of the type to determine if they are valid.
  8284  func (s *ExcludedRule) Validate() error {
  8285  	invalidParams := request.ErrInvalidParams{Context: "ExcludedRule"}
  8286  	if s.Name == nil {
  8287  		invalidParams.Add(request.NewErrParamRequired("Name"))
  8288  	}
  8289  	if s.Name != nil && len(*s.Name) < 1 {
  8290  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  8291  	}
  8292  
  8293  	if invalidParams.Len() > 0 {
  8294  		return invalidParams
  8295  	}
  8296  	return nil
  8297  }
  8298  
  8299  // SetName sets the Name field's value.
  8300  func (s *ExcludedRule) SetName(v string) *ExcludedRule {
  8301  	s.Name = &v
  8302  	return s
  8303  }
  8304  
  8305  // The part of a web request that you want WAF to inspect. Include the single
  8306  // FieldToMatch type that you want to inspect, with additional specifications
  8307  // as needed, according to the type. You specify a single request component
  8308  // in FieldToMatch for each rule statement that requires it. To inspect more
  8309  // than one component of a web request, create a separate rule statement for
  8310  // each component.
  8311  //
  8312  // JSON specification for a QueryString field to match:
  8313  //
  8314  // "FieldToMatch": { "QueryString": {} }
  8315  //
  8316  // Example JSON for a Method field to match specification:
  8317  //
  8318  // "FieldToMatch": { "Method": { "Name": "DELETE" } }
  8319  type FieldToMatch struct {
  8320  	_ struct{} `type:"structure"`
  8321  
  8322  	// Inspect all query arguments.
  8323  	AllQueryArguments *AllQueryArguments `type:"structure"`
  8324  
  8325  	// Inspect the request body as plain text. The request body immediately follows
  8326  	// the request headers. This is the part of a request that contains any additional
  8327  	// data that you want to send to your web server as the HTTP request body, such
  8328  	// as data from a form.
  8329  	//
  8330  	// Note that only the first 8 KB (8192 bytes) of the request body are forwarded
  8331  	// to WAF for inspection by the underlying host service. If you don't need to
  8332  	// inspect more than 8 KB, you can guarantee that you don't allow additional
  8333  	// bytes in by combining a statement that inspects the body of the web request,
  8334  	// such as ByteMatchStatement or RegexPatternSetReferenceStatement, with a SizeConstraintStatement
  8335  	// that enforces an 8 KB size limit on the body of the request. WAF doesn't
  8336  	// support inspecting the entire contents of web requests whose bodies exceed
  8337  	// the 8 KB limit.
  8338  	Body *Body `type:"structure"`
  8339  
  8340  	// Inspect the request body as JSON. The request body immediately follows the
  8341  	// request headers. This is the part of a request that contains any additional
  8342  	// data that you want to send to your web server as the HTTP request body, such
  8343  	// as data from a form.
  8344  	//
  8345  	// Note that only the first 8 KB (8192 bytes) of the request body are forwarded
  8346  	// to WAF for inspection by the underlying host service. If you don't need to
  8347  	// inspect more than 8 KB, you can guarantee that you don't allow additional
  8348  	// bytes in by combining a statement that inspects the body of the web request,
  8349  	// such as ByteMatchStatement or RegexPatternSetReferenceStatement, with a SizeConstraintStatement
  8350  	// that enforces an 8 KB size limit on the body of the request. WAF doesn't
  8351  	// support inspecting the entire contents of web requests whose bodies exceed
  8352  	// the 8 KB limit.
  8353  	JsonBody *JsonBody `type:"structure"`
  8354  
  8355  	// Inspect the HTTP method. The method indicates the type of operation that
  8356  	// the request is asking the origin to perform.
  8357  	Method *Method `type:"structure"`
  8358  
  8359  	// Inspect the query string. This is the part of a URL that appears after a
  8360  	// ? character, if any.
  8361  	QueryString *QueryString `type:"structure"`
  8362  
  8363  	// Inspect a single header. Provide the name of the header to inspect, for example,
  8364  	// User-Agent or Referer. This setting isn't case sensitive.
  8365  	//
  8366  	// Example JSON: "SingleHeader": { "Name": "haystack" }
  8367  	SingleHeader *SingleHeader `type:"structure"`
  8368  
  8369  	// Inspect a single query argument. Provide the name of the query argument to
  8370  	// inspect, such as UserName or SalesRegion. The name can be up to 30 characters
  8371  	// long and isn't case sensitive.
  8372  	//
  8373  	// This is used only to indicate the web request component for WAF to inspect,
  8374  	// in the FieldToMatch specification.
  8375  	//
  8376  	// Example JSON: "SingleQueryArgument": { "Name": "myArgument" }
  8377  	SingleQueryArgument *SingleQueryArgument `type:"structure"`
  8378  
  8379  	// Inspect the request URI path. This is the part of a web request that identifies
  8380  	// a resource, for example, /images/daily-ad.jpg.
  8381  	UriPath *UriPath `type:"structure"`
  8382  }
  8383  
  8384  // String returns the string representation.
  8385  //
  8386  // API parameter values that are decorated as "sensitive" in the API will not
  8387  // be included in the string output. The member name will be present, but the
  8388  // value will be replaced with "sensitive".
  8389  func (s FieldToMatch) String() string {
  8390  	return awsutil.Prettify(s)
  8391  }
  8392  
  8393  // GoString returns the string representation.
  8394  //
  8395  // API parameter values that are decorated as "sensitive" in the API will not
  8396  // be included in the string output. The member name will be present, but the
  8397  // value will be replaced with "sensitive".
  8398  func (s FieldToMatch) GoString() string {
  8399  	return s.String()
  8400  }
  8401  
  8402  // Validate inspects the fields of the type to determine if they are valid.
  8403  func (s *FieldToMatch) Validate() error {
  8404  	invalidParams := request.ErrInvalidParams{Context: "FieldToMatch"}
  8405  	if s.JsonBody != nil {
  8406  		if err := s.JsonBody.Validate(); err != nil {
  8407  			invalidParams.AddNested("JsonBody", err.(request.ErrInvalidParams))
  8408  		}
  8409  	}
  8410  	if s.SingleHeader != nil {
  8411  		if err := s.SingleHeader.Validate(); err != nil {
  8412  			invalidParams.AddNested("SingleHeader", err.(request.ErrInvalidParams))
  8413  		}
  8414  	}
  8415  	if s.SingleQueryArgument != nil {
  8416  		if err := s.SingleQueryArgument.Validate(); err != nil {
  8417  			invalidParams.AddNested("SingleQueryArgument", err.(request.ErrInvalidParams))
  8418  		}
  8419  	}
  8420  
  8421  	if invalidParams.Len() > 0 {
  8422  		return invalidParams
  8423  	}
  8424  	return nil
  8425  }
  8426  
  8427  // SetAllQueryArguments sets the AllQueryArguments field's value.
  8428  func (s *FieldToMatch) SetAllQueryArguments(v *AllQueryArguments) *FieldToMatch {
  8429  	s.AllQueryArguments = v
  8430  	return s
  8431  }
  8432  
  8433  // SetBody sets the Body field's value.
  8434  func (s *FieldToMatch) SetBody(v *Body) *FieldToMatch {
  8435  	s.Body = v
  8436  	return s
  8437  }
  8438  
  8439  // SetJsonBody sets the JsonBody field's value.
  8440  func (s *FieldToMatch) SetJsonBody(v *JsonBody) *FieldToMatch {
  8441  	s.JsonBody = v
  8442  	return s
  8443  }
  8444  
  8445  // SetMethod sets the Method field's value.
  8446  func (s *FieldToMatch) SetMethod(v *Method) *FieldToMatch {
  8447  	s.Method = v
  8448  	return s
  8449  }
  8450  
  8451  // SetQueryString sets the QueryString field's value.
  8452  func (s *FieldToMatch) SetQueryString(v *QueryString) *FieldToMatch {
  8453  	s.QueryString = v
  8454  	return s
  8455  }
  8456  
  8457  // SetSingleHeader sets the SingleHeader field's value.
  8458  func (s *FieldToMatch) SetSingleHeader(v *SingleHeader) *FieldToMatch {
  8459  	s.SingleHeader = v
  8460  	return s
  8461  }
  8462  
  8463  // SetSingleQueryArgument sets the SingleQueryArgument field's value.
  8464  func (s *FieldToMatch) SetSingleQueryArgument(v *SingleQueryArgument) *FieldToMatch {
  8465  	s.SingleQueryArgument = v
  8466  	return s
  8467  }
  8468  
  8469  // SetUriPath sets the UriPath field's value.
  8470  func (s *FieldToMatch) SetUriPath(v *UriPath) *FieldToMatch {
  8471  	s.UriPath = v
  8472  	return s
  8473  }
  8474  
  8475  // A single logging filter, used in LoggingFilter.
  8476  type Filter struct {
  8477  	_ struct{} `type:"structure"`
  8478  
  8479  	// How to handle logs that satisfy the filter's conditions and requirement.
  8480  	//
  8481  	// Behavior is a required field
  8482  	Behavior *string `type:"string" required:"true" enum:"FilterBehavior"`
  8483  
  8484  	// Match conditions for the filter.
  8485  	//
  8486  	// Conditions is a required field
  8487  	Conditions []*Condition `min:"1" type:"list" required:"true"`
  8488  
  8489  	// Logic to apply to the filtering conditions. You can specify that, in order
  8490  	// to satisfy the filter, a log must match all conditions or must match at least
  8491  	// one condition.
  8492  	//
  8493  	// Requirement is a required field
  8494  	Requirement *string `type:"string" required:"true" enum:"FilterRequirement"`
  8495  }
  8496  
  8497  // String returns the string representation.
  8498  //
  8499  // API parameter values that are decorated as "sensitive" in the API will not
  8500  // be included in the string output. The member name will be present, but the
  8501  // value will be replaced with "sensitive".
  8502  func (s Filter) String() string {
  8503  	return awsutil.Prettify(s)
  8504  }
  8505  
  8506  // GoString returns the string representation.
  8507  //
  8508  // API parameter values that are decorated as "sensitive" in the API will not
  8509  // be included in the string output. The member name will be present, but the
  8510  // value will be replaced with "sensitive".
  8511  func (s Filter) GoString() string {
  8512  	return s.String()
  8513  }
  8514  
  8515  // Validate inspects the fields of the type to determine if they are valid.
  8516  func (s *Filter) Validate() error {
  8517  	invalidParams := request.ErrInvalidParams{Context: "Filter"}
  8518  	if s.Behavior == nil {
  8519  		invalidParams.Add(request.NewErrParamRequired("Behavior"))
  8520  	}
  8521  	if s.Conditions == nil {
  8522  		invalidParams.Add(request.NewErrParamRequired("Conditions"))
  8523  	}
  8524  	if s.Conditions != nil && len(s.Conditions) < 1 {
  8525  		invalidParams.Add(request.NewErrParamMinLen("Conditions", 1))
  8526  	}
  8527  	if s.Requirement == nil {
  8528  		invalidParams.Add(request.NewErrParamRequired("Requirement"))
  8529  	}
  8530  	if s.Conditions != nil {
  8531  		for i, v := range s.Conditions {
  8532  			if v == nil {
  8533  				continue
  8534  			}
  8535  			if err := v.Validate(); err != nil {
  8536  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Conditions", i), err.(request.ErrInvalidParams))
  8537  			}
  8538  		}
  8539  	}
  8540  
  8541  	if invalidParams.Len() > 0 {
  8542  		return invalidParams
  8543  	}
  8544  	return nil
  8545  }
  8546  
  8547  // SetBehavior sets the Behavior field's value.
  8548  func (s *Filter) SetBehavior(v string) *Filter {
  8549  	s.Behavior = &v
  8550  	return s
  8551  }
  8552  
  8553  // SetConditions sets the Conditions field's value.
  8554  func (s *Filter) SetConditions(v []*Condition) *Filter {
  8555  	s.Conditions = v
  8556  	return s
  8557  }
  8558  
  8559  // SetRequirement sets the Requirement field's value.
  8560  func (s *Filter) SetRequirement(v string) *Filter {
  8561  	s.Requirement = &v
  8562  	return s
  8563  }
  8564  
  8565  // A rule group that's defined for an Firewall Manager WAF policy.
  8566  type FirewallManagerRuleGroup struct {
  8567  	_ struct{} `type:"structure"`
  8568  
  8569  	// The processing guidance for an Firewall Manager rule. This is like a regular
  8570  	// rule Statement, but it can only contain a rule group reference.
  8571  	//
  8572  	// FirewallManagerStatement is a required field
  8573  	FirewallManagerStatement *FirewallManagerStatement `type:"structure" required:"true"`
  8574  
  8575  	// The name of the rule group. You cannot change the name of a rule group after
  8576  	// you create it.
  8577  	//
  8578  	// Name is a required field
  8579  	Name *string `min:"1" type:"string" required:"true"`
  8580  
  8581  	// The override action to apply to the rules in a rule group. Used only for
  8582  	// rule statements that reference a rule group, like RuleGroupReferenceStatement
  8583  	// and ManagedRuleGroupStatement.
  8584  	//
  8585  	// Set the override action to none to leave the rule actions in effect. Set
  8586  	// it to count to only count matches, regardless of the rule action settings.
  8587  	//
  8588  	// In a Rule, you must specify either this OverrideAction setting or the rule
  8589  	// Action setting, but not both:
  8590  	//
  8591  	//    * If the rule statement references a rule group, use this override action
  8592  	//    setting and not the action setting.
  8593  	//
  8594  	//    * If the rule statement does not reference a rule group, use the rule
  8595  	//    action setting and not this rule override action setting.
  8596  	//
  8597  	// OverrideAction is a required field
  8598  	OverrideAction *OverrideAction `type:"structure" required:"true"`
  8599  
  8600  	// If you define more than one rule group in the first or last Firewall Manager
  8601  	// rule groups, WAF evaluates each request against the rule groups in order,
  8602  	// starting from the lowest priority setting. The priorities don't need to be
  8603  	// consecutive, but they must all be different.
  8604  	//
  8605  	// Priority is a required field
  8606  	Priority *int64 `type:"integer" required:"true"`
  8607  
  8608  	// Defines and enables Amazon CloudWatch metrics and web request sample collection.
  8609  	//
  8610  	// VisibilityConfig is a required field
  8611  	VisibilityConfig *VisibilityConfig `type:"structure" required:"true"`
  8612  }
  8613  
  8614  // String returns the string representation.
  8615  //
  8616  // API parameter values that are decorated as "sensitive" in the API will not
  8617  // be included in the string output. The member name will be present, but the
  8618  // value will be replaced with "sensitive".
  8619  func (s FirewallManagerRuleGroup) String() string {
  8620  	return awsutil.Prettify(s)
  8621  }
  8622  
  8623  // GoString returns the string representation.
  8624  //
  8625  // API parameter values that are decorated as "sensitive" in the API will not
  8626  // be included in the string output. The member name will be present, but the
  8627  // value will be replaced with "sensitive".
  8628  func (s FirewallManagerRuleGroup) GoString() string {
  8629  	return s.String()
  8630  }
  8631  
  8632  // SetFirewallManagerStatement sets the FirewallManagerStatement field's value.
  8633  func (s *FirewallManagerRuleGroup) SetFirewallManagerStatement(v *FirewallManagerStatement) *FirewallManagerRuleGroup {
  8634  	s.FirewallManagerStatement = v
  8635  	return s
  8636  }
  8637  
  8638  // SetName sets the Name field's value.
  8639  func (s *FirewallManagerRuleGroup) SetName(v string) *FirewallManagerRuleGroup {
  8640  	s.Name = &v
  8641  	return s
  8642  }
  8643  
  8644  // SetOverrideAction sets the OverrideAction field's value.
  8645  func (s *FirewallManagerRuleGroup) SetOverrideAction(v *OverrideAction) *FirewallManagerRuleGroup {
  8646  	s.OverrideAction = v
  8647  	return s
  8648  }
  8649  
  8650  // SetPriority sets the Priority field's value.
  8651  func (s *FirewallManagerRuleGroup) SetPriority(v int64) *FirewallManagerRuleGroup {
  8652  	s.Priority = &v
  8653  	return s
  8654  }
  8655  
  8656  // SetVisibilityConfig sets the VisibilityConfig field's value.
  8657  func (s *FirewallManagerRuleGroup) SetVisibilityConfig(v *VisibilityConfig) *FirewallManagerRuleGroup {
  8658  	s.VisibilityConfig = v
  8659  	return s
  8660  }
  8661  
  8662  // The processing guidance for an Firewall Manager rule. This is like a regular
  8663  // rule Statement, but it can only contain a rule group reference.
  8664  type FirewallManagerStatement struct {
  8665  	_ struct{} `type:"structure"`
  8666  
  8667  	// A rule statement used to run the rules that are defined in a managed rule
  8668  	// group. To use this, provide the vendor name and the name of the rule group
  8669  	// in this statement. You can retrieve the required names by calling ListAvailableManagedRuleGroups.
  8670  	//
  8671  	// You cannot nest a ManagedRuleGroupStatement, for example for use inside a
  8672  	// NotStatement or OrStatement. It can only be referenced as a top-level statement
  8673  	// within a rule.
  8674  	ManagedRuleGroupStatement *ManagedRuleGroupStatement `type:"structure"`
  8675  
  8676  	// A rule statement used to run the rules that are defined in a RuleGroup. To
  8677  	// use this, create a rule group with your rules, then provide the ARN of the
  8678  	// rule group in this statement.
  8679  	//
  8680  	// You cannot nest a RuleGroupReferenceStatement, for example for use inside
  8681  	// a NotStatement or OrStatement. You can only use a rule group reference statement
  8682  	// at the top level inside a web ACL.
  8683  	RuleGroupReferenceStatement *RuleGroupReferenceStatement `type:"structure"`
  8684  }
  8685  
  8686  // String returns the string representation.
  8687  //
  8688  // API parameter values that are decorated as "sensitive" in the API will not
  8689  // be included in the string output. The member name will be present, but the
  8690  // value will be replaced with "sensitive".
  8691  func (s FirewallManagerStatement) String() string {
  8692  	return awsutil.Prettify(s)
  8693  }
  8694  
  8695  // GoString returns the string representation.
  8696  //
  8697  // API parameter values that are decorated as "sensitive" in the API will not
  8698  // be included in the string output. The member name will be present, but the
  8699  // value will be replaced with "sensitive".
  8700  func (s FirewallManagerStatement) GoString() string {
  8701  	return s.String()
  8702  }
  8703  
  8704  // SetManagedRuleGroupStatement sets the ManagedRuleGroupStatement field's value.
  8705  func (s *FirewallManagerStatement) SetManagedRuleGroupStatement(v *ManagedRuleGroupStatement) *FirewallManagerStatement {
  8706  	s.ManagedRuleGroupStatement = v
  8707  	return s
  8708  }
  8709  
  8710  // SetRuleGroupReferenceStatement sets the RuleGroupReferenceStatement field's value.
  8711  func (s *FirewallManagerStatement) SetRuleGroupReferenceStatement(v *RuleGroupReferenceStatement) *FirewallManagerStatement {
  8712  	s.RuleGroupReferenceStatement = v
  8713  	return s
  8714  }
  8715  
  8716  // The configuration for inspecting IP addresses in an HTTP header that you
  8717  // specify, instead of using the IP address that's reported by the web request
  8718  // origin. Commonly, this is the X-Forwarded-For (XFF) header, but you can specify
  8719  // any header name.
  8720  //
  8721  // If the specified header isn't present in the request, WAF doesn't apply the
  8722  // rule to the web request at all.
  8723  //
  8724  // This configuration is used for GeoMatchStatement and RateBasedStatement.
  8725  // For IPSetReferenceStatement, use IPSetForwardedIPConfig instead.
  8726  //
  8727  // WAF only evaluates the first IP address found in the specified HTTP header.
  8728  type ForwardedIPConfig struct {
  8729  	_ struct{} `type:"structure"`
  8730  
  8731  	// The match status to assign to the web request if the request doesn't have
  8732  	// a valid IP address in the specified position.
  8733  	//
  8734  	// If the specified header isn't present in the request, WAF doesn't apply the
  8735  	// rule to the web request at all.
  8736  	//
  8737  	// You can specify the following fallback behaviors:
  8738  	//
  8739  	//    * MATCH - Treat the web request as matching the rule statement. WAF applies
  8740  	//    the rule action to the request.
  8741  	//
  8742  	//    * NO_MATCH - Treat the web request as not matching the rule statement.
  8743  	//
  8744  	// FallbackBehavior is a required field
  8745  	FallbackBehavior *string `type:"string" required:"true" enum:"FallbackBehavior"`
  8746  
  8747  	// The name of the HTTP header to use for the IP address. For example, to use
  8748  	// the X-Forwarded-For (XFF) header, set this to X-Forwarded-For.
  8749  	//
  8750  	// If the specified header isn't present in the request, WAF doesn't apply the
  8751  	// rule to the web request at all.
  8752  	//
  8753  	// HeaderName is a required field
  8754  	HeaderName *string `min:"1" type:"string" required:"true"`
  8755  }
  8756  
  8757  // String returns the string representation.
  8758  //
  8759  // API parameter values that are decorated as "sensitive" in the API will not
  8760  // be included in the string output. The member name will be present, but the
  8761  // value will be replaced with "sensitive".
  8762  func (s ForwardedIPConfig) String() string {
  8763  	return awsutil.Prettify(s)
  8764  }
  8765  
  8766  // GoString returns the string representation.
  8767  //
  8768  // API parameter values that are decorated as "sensitive" in the API will not
  8769  // be included in the string output. The member name will be present, but the
  8770  // value will be replaced with "sensitive".
  8771  func (s ForwardedIPConfig) GoString() string {
  8772  	return s.String()
  8773  }
  8774  
  8775  // Validate inspects the fields of the type to determine if they are valid.
  8776  func (s *ForwardedIPConfig) Validate() error {
  8777  	invalidParams := request.ErrInvalidParams{Context: "ForwardedIPConfig"}
  8778  	if s.FallbackBehavior == nil {
  8779  		invalidParams.Add(request.NewErrParamRequired("FallbackBehavior"))
  8780  	}
  8781  	if s.HeaderName == nil {
  8782  		invalidParams.Add(request.NewErrParamRequired("HeaderName"))
  8783  	}
  8784  	if s.HeaderName != nil && len(*s.HeaderName) < 1 {
  8785  		invalidParams.Add(request.NewErrParamMinLen("HeaderName", 1))
  8786  	}
  8787  
  8788  	if invalidParams.Len() > 0 {
  8789  		return invalidParams
  8790  	}
  8791  	return nil
  8792  }
  8793  
  8794  // SetFallbackBehavior sets the FallbackBehavior field's value.
  8795  func (s *ForwardedIPConfig) SetFallbackBehavior(v string) *ForwardedIPConfig {
  8796  	s.FallbackBehavior = &v
  8797  	return s
  8798  }
  8799  
  8800  // SetHeaderName sets the HeaderName field's value.
  8801  func (s *ForwardedIPConfig) SetHeaderName(v string) *ForwardedIPConfig {
  8802  	s.HeaderName = &v
  8803  	return s
  8804  }
  8805  
  8806  // A rule statement used to identify web requests based on country of origin.
  8807  type GeoMatchStatement struct {
  8808  	_ struct{} `type:"structure"`
  8809  
  8810  	// An array of two-character country codes, for example, [ "US", "CN" ], from
  8811  	// the alpha-2 country ISO codes of the ISO 3166 international standard.
  8812  	CountryCodes []*string `min:"1" type:"list"`
  8813  
  8814  	// The configuration for inspecting IP addresses in an HTTP header that you
  8815  	// specify, instead of using the IP address that's reported by the web request
  8816  	// origin. Commonly, this is the X-Forwarded-For (XFF) header, but you can specify
  8817  	// any header name.
  8818  	//
  8819  	// If the specified header isn't present in the request, WAF doesn't apply the
  8820  	// rule to the web request at all.
  8821  	ForwardedIPConfig *ForwardedIPConfig `type:"structure"`
  8822  }
  8823  
  8824  // String returns the string representation.
  8825  //
  8826  // API parameter values that are decorated as "sensitive" in the API will not
  8827  // be included in the string output. The member name will be present, but the
  8828  // value will be replaced with "sensitive".
  8829  func (s GeoMatchStatement) String() string {
  8830  	return awsutil.Prettify(s)
  8831  }
  8832  
  8833  // GoString returns the string representation.
  8834  //
  8835  // API parameter values that are decorated as "sensitive" in the API will not
  8836  // be included in the string output. The member name will be present, but the
  8837  // value will be replaced with "sensitive".
  8838  func (s GeoMatchStatement) GoString() string {
  8839  	return s.String()
  8840  }
  8841  
  8842  // Validate inspects the fields of the type to determine if they are valid.
  8843  func (s *GeoMatchStatement) Validate() error {
  8844  	invalidParams := request.ErrInvalidParams{Context: "GeoMatchStatement"}
  8845  	if s.CountryCodes != nil && len(s.CountryCodes) < 1 {
  8846  		invalidParams.Add(request.NewErrParamMinLen("CountryCodes", 1))
  8847  	}
  8848  	if s.ForwardedIPConfig != nil {
  8849  		if err := s.ForwardedIPConfig.Validate(); err != nil {
  8850  			invalidParams.AddNested("ForwardedIPConfig", err.(request.ErrInvalidParams))
  8851  		}
  8852  	}
  8853  
  8854  	if invalidParams.Len() > 0 {
  8855  		return invalidParams
  8856  	}
  8857  	return nil
  8858  }
  8859  
  8860  // SetCountryCodes sets the CountryCodes field's value.
  8861  func (s *GeoMatchStatement) SetCountryCodes(v []*string) *GeoMatchStatement {
  8862  	s.CountryCodes = v
  8863  	return s
  8864  }
  8865  
  8866  // SetForwardedIPConfig sets the ForwardedIPConfig field's value.
  8867  func (s *GeoMatchStatement) SetForwardedIPConfig(v *ForwardedIPConfig) *GeoMatchStatement {
  8868  	s.ForwardedIPConfig = v
  8869  	return s
  8870  }
  8871  
  8872  type GetIPSetInput struct {
  8873  	_ struct{} `type:"structure"`
  8874  
  8875  	// A unique identifier for the set. This ID is returned in the responses to
  8876  	// create and list commands. You provide it to operations like update and delete.
  8877  	//
  8878  	// Id is a required field
  8879  	Id *string `min:"1" type:"string" required:"true"`
  8880  
  8881  	// The name of the IP set. You cannot change the name of an IPSet after you
  8882  	// create it.
  8883  	//
  8884  	// Name is a required field
  8885  	Name *string `min:"1" type:"string" required:"true"`
  8886  
  8887  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  8888  	// regional application. A regional application can be an Application Load Balancer
  8889  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  8890  	//
  8891  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  8892  	// as follows:
  8893  	//
  8894  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  8895  	//    --region=us-east-1.
  8896  	//
  8897  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  8898  	//
  8899  	// Scope is a required field
  8900  	Scope *string `type:"string" required:"true" enum:"Scope"`
  8901  }
  8902  
  8903  // String returns the string representation.
  8904  //
  8905  // API parameter values that are decorated as "sensitive" in the API will not
  8906  // be included in the string output. The member name will be present, but the
  8907  // value will be replaced with "sensitive".
  8908  func (s GetIPSetInput) String() string {
  8909  	return awsutil.Prettify(s)
  8910  }
  8911  
  8912  // GoString returns the string representation.
  8913  //
  8914  // API parameter values that are decorated as "sensitive" in the API will not
  8915  // be included in the string output. The member name will be present, but the
  8916  // value will be replaced with "sensitive".
  8917  func (s GetIPSetInput) GoString() string {
  8918  	return s.String()
  8919  }
  8920  
  8921  // Validate inspects the fields of the type to determine if they are valid.
  8922  func (s *GetIPSetInput) Validate() error {
  8923  	invalidParams := request.ErrInvalidParams{Context: "GetIPSetInput"}
  8924  	if s.Id == nil {
  8925  		invalidParams.Add(request.NewErrParamRequired("Id"))
  8926  	}
  8927  	if s.Id != nil && len(*s.Id) < 1 {
  8928  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
  8929  	}
  8930  	if s.Name == nil {
  8931  		invalidParams.Add(request.NewErrParamRequired("Name"))
  8932  	}
  8933  	if s.Name != nil && len(*s.Name) < 1 {
  8934  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  8935  	}
  8936  	if s.Scope == nil {
  8937  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  8938  	}
  8939  
  8940  	if invalidParams.Len() > 0 {
  8941  		return invalidParams
  8942  	}
  8943  	return nil
  8944  }
  8945  
  8946  // SetId sets the Id field's value.
  8947  func (s *GetIPSetInput) SetId(v string) *GetIPSetInput {
  8948  	s.Id = &v
  8949  	return s
  8950  }
  8951  
  8952  // SetName sets the Name field's value.
  8953  func (s *GetIPSetInput) SetName(v string) *GetIPSetInput {
  8954  	s.Name = &v
  8955  	return s
  8956  }
  8957  
  8958  // SetScope sets the Scope field's value.
  8959  func (s *GetIPSetInput) SetScope(v string) *GetIPSetInput {
  8960  	s.Scope = &v
  8961  	return s
  8962  }
  8963  
  8964  type GetIPSetOutput struct {
  8965  	_ struct{} `type:"structure"`
  8966  
  8967  	// Contains one or more IP addresses or blocks of IP addresses specified in
  8968  	// Classless Inter-Domain Routing (CIDR) notation. WAF supports all IPv4 and
  8969  	// IPv6 CIDR ranges except for /0. For information about CIDR notation, see
  8970  	// the Wikipedia entry Classless Inter-Domain Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
  8971  	//
  8972  	// WAF assigns an ARN to each IPSet that you create. To use an IP set in a rule,
  8973  	// you provide the ARN to the Rule statement IPSetReferenceStatement.
  8974  	IPSet *IPSet `type:"structure"`
  8975  
  8976  	// A token used for optimistic locking. WAF returns a token to your get and
  8977  	// list requests, to mark the state of the entity at the time of the request.
  8978  	// To make changes to the entity associated with the token, you provide the
  8979  	// token to operations like update and delete. WAF uses the token to ensure
  8980  	// that no changes have been made to the entity since you last retrieved it.
  8981  	// If a change has been made, the update fails with a WAFOptimisticLockException.
  8982  	// If this happens, perform another get, and use the new token returned by that
  8983  	// operation.
  8984  	LockToken *string `min:"1" type:"string"`
  8985  }
  8986  
  8987  // String returns the string representation.
  8988  //
  8989  // API parameter values that are decorated as "sensitive" in the API will not
  8990  // be included in the string output. The member name will be present, but the
  8991  // value will be replaced with "sensitive".
  8992  func (s GetIPSetOutput) String() string {
  8993  	return awsutil.Prettify(s)
  8994  }
  8995  
  8996  // GoString returns the string representation.
  8997  //
  8998  // API parameter values that are decorated as "sensitive" in the API will not
  8999  // be included in the string output. The member name will be present, but the
  9000  // value will be replaced with "sensitive".
  9001  func (s GetIPSetOutput) GoString() string {
  9002  	return s.String()
  9003  }
  9004  
  9005  // SetIPSet sets the IPSet field's value.
  9006  func (s *GetIPSetOutput) SetIPSet(v *IPSet) *GetIPSetOutput {
  9007  	s.IPSet = v
  9008  	return s
  9009  }
  9010  
  9011  // SetLockToken sets the LockToken field's value.
  9012  func (s *GetIPSetOutput) SetLockToken(v string) *GetIPSetOutput {
  9013  	s.LockToken = &v
  9014  	return s
  9015  }
  9016  
  9017  type GetLoggingConfigurationInput struct {
  9018  	_ struct{} `type:"structure"`
  9019  
  9020  	// The Amazon Resource Name (ARN) of the web ACL for which you want to get the
  9021  	// LoggingConfiguration.
  9022  	//
  9023  	// ResourceArn is a required field
  9024  	ResourceArn *string `min:"20" type:"string" required:"true"`
  9025  }
  9026  
  9027  // String returns the string representation.
  9028  //
  9029  // API parameter values that are decorated as "sensitive" in the API will not
  9030  // be included in the string output. The member name will be present, but the
  9031  // value will be replaced with "sensitive".
  9032  func (s GetLoggingConfigurationInput) String() string {
  9033  	return awsutil.Prettify(s)
  9034  }
  9035  
  9036  // GoString returns the string representation.
  9037  //
  9038  // API parameter values that are decorated as "sensitive" in the API will not
  9039  // be included in the string output. The member name will be present, but the
  9040  // value will be replaced with "sensitive".
  9041  func (s GetLoggingConfigurationInput) GoString() string {
  9042  	return s.String()
  9043  }
  9044  
  9045  // Validate inspects the fields of the type to determine if they are valid.
  9046  func (s *GetLoggingConfigurationInput) Validate() error {
  9047  	invalidParams := request.ErrInvalidParams{Context: "GetLoggingConfigurationInput"}
  9048  	if s.ResourceArn == nil {
  9049  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  9050  	}
  9051  	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
  9052  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
  9053  	}
  9054  
  9055  	if invalidParams.Len() > 0 {
  9056  		return invalidParams
  9057  	}
  9058  	return nil
  9059  }
  9060  
  9061  // SetResourceArn sets the ResourceArn field's value.
  9062  func (s *GetLoggingConfigurationInput) SetResourceArn(v string) *GetLoggingConfigurationInput {
  9063  	s.ResourceArn = &v
  9064  	return s
  9065  }
  9066  
  9067  type GetLoggingConfigurationOutput struct {
  9068  	_ struct{} `type:"structure"`
  9069  
  9070  	// The LoggingConfiguration for the specified web ACL.
  9071  	LoggingConfiguration *LoggingConfiguration `type:"structure"`
  9072  }
  9073  
  9074  // String returns the string representation.
  9075  //
  9076  // API parameter values that are decorated as "sensitive" in the API will not
  9077  // be included in the string output. The member name will be present, but the
  9078  // value will be replaced with "sensitive".
  9079  func (s GetLoggingConfigurationOutput) String() string {
  9080  	return awsutil.Prettify(s)
  9081  }
  9082  
  9083  // GoString returns the string representation.
  9084  //
  9085  // API parameter values that are decorated as "sensitive" in the API will not
  9086  // be included in the string output. The member name will be present, but the
  9087  // value will be replaced with "sensitive".
  9088  func (s GetLoggingConfigurationOutput) GoString() string {
  9089  	return s.String()
  9090  }
  9091  
  9092  // SetLoggingConfiguration sets the LoggingConfiguration field's value.
  9093  func (s *GetLoggingConfigurationOutput) SetLoggingConfiguration(v *LoggingConfiguration) *GetLoggingConfigurationOutput {
  9094  	s.LoggingConfiguration = v
  9095  	return s
  9096  }
  9097  
  9098  type GetManagedRuleSetInput struct {
  9099  	_ struct{} `type:"structure"`
  9100  
  9101  	// A unique identifier for the managed rule set. The ID is returned in the responses
  9102  	// to commands like list. You provide it to operations like get and update.
  9103  	//
  9104  	// Id is a required field
  9105  	Id *string `min:"1" type:"string" required:"true"`
  9106  
  9107  	// The name of the managed rule set. You use this, along with the rule set ID,
  9108  	// to identify the rule set.
  9109  	//
  9110  	// This name is assigned to the corresponding managed rule group, which your
  9111  	// customers can access and use.
  9112  	//
  9113  	// Name is a required field
  9114  	Name *string `min:"1" type:"string" required:"true"`
  9115  
  9116  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  9117  	// regional application. A regional application can be an Application Load Balancer
  9118  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  9119  	//
  9120  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  9121  	// as follows:
  9122  	//
  9123  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  9124  	//    --region=us-east-1.
  9125  	//
  9126  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  9127  	//
  9128  	// Scope is a required field
  9129  	Scope *string `type:"string" required:"true" enum:"Scope"`
  9130  }
  9131  
  9132  // String returns the string representation.
  9133  //
  9134  // API parameter values that are decorated as "sensitive" in the API will not
  9135  // be included in the string output. The member name will be present, but the
  9136  // value will be replaced with "sensitive".
  9137  func (s GetManagedRuleSetInput) String() string {
  9138  	return awsutil.Prettify(s)
  9139  }
  9140  
  9141  // GoString returns the string representation.
  9142  //
  9143  // API parameter values that are decorated as "sensitive" in the API will not
  9144  // be included in the string output. The member name will be present, but the
  9145  // value will be replaced with "sensitive".
  9146  func (s GetManagedRuleSetInput) GoString() string {
  9147  	return s.String()
  9148  }
  9149  
  9150  // Validate inspects the fields of the type to determine if they are valid.
  9151  func (s *GetManagedRuleSetInput) Validate() error {
  9152  	invalidParams := request.ErrInvalidParams{Context: "GetManagedRuleSetInput"}
  9153  	if s.Id == nil {
  9154  		invalidParams.Add(request.NewErrParamRequired("Id"))
  9155  	}
  9156  	if s.Id != nil && len(*s.Id) < 1 {
  9157  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
  9158  	}
  9159  	if s.Name == nil {
  9160  		invalidParams.Add(request.NewErrParamRequired("Name"))
  9161  	}
  9162  	if s.Name != nil && len(*s.Name) < 1 {
  9163  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  9164  	}
  9165  	if s.Scope == nil {
  9166  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  9167  	}
  9168  
  9169  	if invalidParams.Len() > 0 {
  9170  		return invalidParams
  9171  	}
  9172  	return nil
  9173  }
  9174  
  9175  // SetId sets the Id field's value.
  9176  func (s *GetManagedRuleSetInput) SetId(v string) *GetManagedRuleSetInput {
  9177  	s.Id = &v
  9178  	return s
  9179  }
  9180  
  9181  // SetName sets the Name field's value.
  9182  func (s *GetManagedRuleSetInput) SetName(v string) *GetManagedRuleSetInput {
  9183  	s.Name = &v
  9184  	return s
  9185  }
  9186  
  9187  // SetScope sets the Scope field's value.
  9188  func (s *GetManagedRuleSetInput) SetScope(v string) *GetManagedRuleSetInput {
  9189  	s.Scope = &v
  9190  	return s
  9191  }
  9192  
  9193  type GetManagedRuleSetOutput struct {
  9194  	_ struct{} `type:"structure"`
  9195  
  9196  	// A token used for optimistic locking. WAF returns a token to your get and
  9197  	// list requests, to mark the state of the entity at the time of the request.
  9198  	// To make changes to the entity associated with the token, you provide the
  9199  	// token to operations like update and delete. WAF uses the token to ensure
  9200  	// that no changes have been made to the entity since you last retrieved it.
  9201  	// If a change has been made, the update fails with a WAFOptimisticLockException.
  9202  	// If this happens, perform another get, and use the new token returned by that
  9203  	// operation.
  9204  	LockToken *string `min:"1" type:"string"`
  9205  
  9206  	// The managed rule set that you requested.
  9207  	ManagedRuleSet *ManagedRuleSet `type:"structure"`
  9208  }
  9209  
  9210  // String returns the string representation.
  9211  //
  9212  // API parameter values that are decorated as "sensitive" in the API will not
  9213  // be included in the string output. The member name will be present, but the
  9214  // value will be replaced with "sensitive".
  9215  func (s GetManagedRuleSetOutput) String() string {
  9216  	return awsutil.Prettify(s)
  9217  }
  9218  
  9219  // GoString returns the string representation.
  9220  //
  9221  // API parameter values that are decorated as "sensitive" in the API will not
  9222  // be included in the string output. The member name will be present, but the
  9223  // value will be replaced with "sensitive".
  9224  func (s GetManagedRuleSetOutput) GoString() string {
  9225  	return s.String()
  9226  }
  9227  
  9228  // SetLockToken sets the LockToken field's value.
  9229  func (s *GetManagedRuleSetOutput) SetLockToken(v string) *GetManagedRuleSetOutput {
  9230  	s.LockToken = &v
  9231  	return s
  9232  }
  9233  
  9234  // SetManagedRuleSet sets the ManagedRuleSet field's value.
  9235  func (s *GetManagedRuleSetOutput) SetManagedRuleSet(v *ManagedRuleSet) *GetManagedRuleSetOutput {
  9236  	s.ManagedRuleSet = v
  9237  	return s
  9238  }
  9239  
  9240  type GetPermissionPolicyInput struct {
  9241  	_ struct{} `type:"structure"`
  9242  
  9243  	// The Amazon Resource Name (ARN) of the rule group for which you want to get
  9244  	// the policy.
  9245  	//
  9246  	// ResourceArn is a required field
  9247  	ResourceArn *string `min:"20" type:"string" required:"true"`
  9248  }
  9249  
  9250  // String returns the string representation.
  9251  //
  9252  // API parameter values that are decorated as "sensitive" in the API will not
  9253  // be included in the string output. The member name will be present, but the
  9254  // value will be replaced with "sensitive".
  9255  func (s GetPermissionPolicyInput) String() string {
  9256  	return awsutil.Prettify(s)
  9257  }
  9258  
  9259  // GoString returns the string representation.
  9260  //
  9261  // API parameter values that are decorated as "sensitive" in the API will not
  9262  // be included in the string output. The member name will be present, but the
  9263  // value will be replaced with "sensitive".
  9264  func (s GetPermissionPolicyInput) GoString() string {
  9265  	return s.String()
  9266  }
  9267  
  9268  // Validate inspects the fields of the type to determine if they are valid.
  9269  func (s *GetPermissionPolicyInput) Validate() error {
  9270  	invalidParams := request.ErrInvalidParams{Context: "GetPermissionPolicyInput"}
  9271  	if s.ResourceArn == nil {
  9272  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  9273  	}
  9274  	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
  9275  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
  9276  	}
  9277  
  9278  	if invalidParams.Len() > 0 {
  9279  		return invalidParams
  9280  	}
  9281  	return nil
  9282  }
  9283  
  9284  // SetResourceArn sets the ResourceArn field's value.
  9285  func (s *GetPermissionPolicyInput) SetResourceArn(v string) *GetPermissionPolicyInput {
  9286  	s.ResourceArn = &v
  9287  	return s
  9288  }
  9289  
  9290  type GetPermissionPolicyOutput struct {
  9291  	_ struct{} `type:"structure"`
  9292  
  9293  	// The IAM policy that is attached to the specified rule group.
  9294  	Policy *string `min:"1" type:"string"`
  9295  }
  9296  
  9297  // String returns the string representation.
  9298  //
  9299  // API parameter values that are decorated as "sensitive" in the API will not
  9300  // be included in the string output. The member name will be present, but the
  9301  // value will be replaced with "sensitive".
  9302  func (s GetPermissionPolicyOutput) String() string {
  9303  	return awsutil.Prettify(s)
  9304  }
  9305  
  9306  // GoString returns the string representation.
  9307  //
  9308  // API parameter values that are decorated as "sensitive" in the API will not
  9309  // be included in the string output. The member name will be present, but the
  9310  // value will be replaced with "sensitive".
  9311  func (s GetPermissionPolicyOutput) GoString() string {
  9312  	return s.String()
  9313  }
  9314  
  9315  // SetPolicy sets the Policy field's value.
  9316  func (s *GetPermissionPolicyOutput) SetPolicy(v string) *GetPermissionPolicyOutput {
  9317  	s.Policy = &v
  9318  	return s
  9319  }
  9320  
  9321  type GetRateBasedStatementManagedKeysInput struct {
  9322  	_ struct{} `type:"structure"`
  9323  
  9324  	// The name of the rule group reference statement in your web ACL. This is required
  9325  	// only when you have the rate-based rule nested inside a rule group.
  9326  	RuleGroupRuleName *string `min:"1" type:"string"`
  9327  
  9328  	// The name of the rate-based rule to get the keys for. If you have the rule
  9329  	// defined inside a rule group that you're using in your web ACL, also provide
  9330  	// the name of the rule group reference statement in the request parameter RuleGroupRuleName.
  9331  	//
  9332  	// RuleName is a required field
  9333  	RuleName *string `min:"1" type:"string" required:"true"`
  9334  
  9335  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  9336  	// regional application. A regional application can be an Application Load Balancer
  9337  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  9338  	//
  9339  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  9340  	// as follows:
  9341  	//
  9342  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  9343  	//    --region=us-east-1.
  9344  	//
  9345  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  9346  	//
  9347  	// Scope is a required field
  9348  	Scope *string `type:"string" required:"true" enum:"Scope"`
  9349  
  9350  	// The unique identifier for the web ACL. This ID is returned in the responses
  9351  	// to create and list commands. You provide it to operations like update and
  9352  	// delete.
  9353  	//
  9354  	// WebACLId is a required field
  9355  	WebACLId *string `min:"1" type:"string" required:"true"`
  9356  
  9357  	// The name of the web ACL. You cannot change the name of a web ACL after you
  9358  	// create it.
  9359  	//
  9360  	// WebACLName is a required field
  9361  	WebACLName *string `min:"1" type:"string" required:"true"`
  9362  }
  9363  
  9364  // String returns the string representation.
  9365  //
  9366  // API parameter values that are decorated as "sensitive" in the API will not
  9367  // be included in the string output. The member name will be present, but the
  9368  // value will be replaced with "sensitive".
  9369  func (s GetRateBasedStatementManagedKeysInput) String() string {
  9370  	return awsutil.Prettify(s)
  9371  }
  9372  
  9373  // GoString returns the string representation.
  9374  //
  9375  // API parameter values that are decorated as "sensitive" in the API will not
  9376  // be included in the string output. The member name will be present, but the
  9377  // value will be replaced with "sensitive".
  9378  func (s GetRateBasedStatementManagedKeysInput) GoString() string {
  9379  	return s.String()
  9380  }
  9381  
  9382  // Validate inspects the fields of the type to determine if they are valid.
  9383  func (s *GetRateBasedStatementManagedKeysInput) Validate() error {
  9384  	invalidParams := request.ErrInvalidParams{Context: "GetRateBasedStatementManagedKeysInput"}
  9385  	if s.RuleGroupRuleName != nil && len(*s.RuleGroupRuleName) < 1 {
  9386  		invalidParams.Add(request.NewErrParamMinLen("RuleGroupRuleName", 1))
  9387  	}
  9388  	if s.RuleName == nil {
  9389  		invalidParams.Add(request.NewErrParamRequired("RuleName"))
  9390  	}
  9391  	if s.RuleName != nil && len(*s.RuleName) < 1 {
  9392  		invalidParams.Add(request.NewErrParamMinLen("RuleName", 1))
  9393  	}
  9394  	if s.Scope == nil {
  9395  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  9396  	}
  9397  	if s.WebACLId == nil {
  9398  		invalidParams.Add(request.NewErrParamRequired("WebACLId"))
  9399  	}
  9400  	if s.WebACLId != nil && len(*s.WebACLId) < 1 {
  9401  		invalidParams.Add(request.NewErrParamMinLen("WebACLId", 1))
  9402  	}
  9403  	if s.WebACLName == nil {
  9404  		invalidParams.Add(request.NewErrParamRequired("WebACLName"))
  9405  	}
  9406  	if s.WebACLName != nil && len(*s.WebACLName) < 1 {
  9407  		invalidParams.Add(request.NewErrParamMinLen("WebACLName", 1))
  9408  	}
  9409  
  9410  	if invalidParams.Len() > 0 {
  9411  		return invalidParams
  9412  	}
  9413  	return nil
  9414  }
  9415  
  9416  // SetRuleGroupRuleName sets the RuleGroupRuleName field's value.
  9417  func (s *GetRateBasedStatementManagedKeysInput) SetRuleGroupRuleName(v string) *GetRateBasedStatementManagedKeysInput {
  9418  	s.RuleGroupRuleName = &v
  9419  	return s
  9420  }
  9421  
  9422  // SetRuleName sets the RuleName field's value.
  9423  func (s *GetRateBasedStatementManagedKeysInput) SetRuleName(v string) *GetRateBasedStatementManagedKeysInput {
  9424  	s.RuleName = &v
  9425  	return s
  9426  }
  9427  
  9428  // SetScope sets the Scope field's value.
  9429  func (s *GetRateBasedStatementManagedKeysInput) SetScope(v string) *GetRateBasedStatementManagedKeysInput {
  9430  	s.Scope = &v
  9431  	return s
  9432  }
  9433  
  9434  // SetWebACLId sets the WebACLId field's value.
  9435  func (s *GetRateBasedStatementManagedKeysInput) SetWebACLId(v string) *GetRateBasedStatementManagedKeysInput {
  9436  	s.WebACLId = &v
  9437  	return s
  9438  }
  9439  
  9440  // SetWebACLName sets the WebACLName field's value.
  9441  func (s *GetRateBasedStatementManagedKeysInput) SetWebACLName(v string) *GetRateBasedStatementManagedKeysInput {
  9442  	s.WebACLName = &v
  9443  	return s
  9444  }
  9445  
  9446  type GetRateBasedStatementManagedKeysOutput struct {
  9447  	_ struct{} `type:"structure"`
  9448  
  9449  	// The keys that are of Internet Protocol version 4 (IPv4).
  9450  	ManagedKeysIPV4 *RateBasedStatementManagedKeysIPSet `type:"structure"`
  9451  
  9452  	// The keys that are of Internet Protocol version 6 (IPv6).
  9453  	ManagedKeysIPV6 *RateBasedStatementManagedKeysIPSet `type:"structure"`
  9454  }
  9455  
  9456  // String returns the string representation.
  9457  //
  9458  // API parameter values that are decorated as "sensitive" in the API will not
  9459  // be included in the string output. The member name will be present, but the
  9460  // value will be replaced with "sensitive".
  9461  func (s GetRateBasedStatementManagedKeysOutput) String() string {
  9462  	return awsutil.Prettify(s)
  9463  }
  9464  
  9465  // GoString returns the string representation.
  9466  //
  9467  // API parameter values that are decorated as "sensitive" in the API will not
  9468  // be included in the string output. The member name will be present, but the
  9469  // value will be replaced with "sensitive".
  9470  func (s GetRateBasedStatementManagedKeysOutput) GoString() string {
  9471  	return s.String()
  9472  }
  9473  
  9474  // SetManagedKeysIPV4 sets the ManagedKeysIPV4 field's value.
  9475  func (s *GetRateBasedStatementManagedKeysOutput) SetManagedKeysIPV4(v *RateBasedStatementManagedKeysIPSet) *GetRateBasedStatementManagedKeysOutput {
  9476  	s.ManagedKeysIPV4 = v
  9477  	return s
  9478  }
  9479  
  9480  // SetManagedKeysIPV6 sets the ManagedKeysIPV6 field's value.
  9481  func (s *GetRateBasedStatementManagedKeysOutput) SetManagedKeysIPV6(v *RateBasedStatementManagedKeysIPSet) *GetRateBasedStatementManagedKeysOutput {
  9482  	s.ManagedKeysIPV6 = v
  9483  	return s
  9484  }
  9485  
  9486  type GetRegexPatternSetInput struct {
  9487  	_ struct{} `type:"structure"`
  9488  
  9489  	// A unique identifier for the set. This ID is returned in the responses to
  9490  	// create and list commands. You provide it to operations like update and delete.
  9491  	//
  9492  	// Id is a required field
  9493  	Id *string `min:"1" type:"string" required:"true"`
  9494  
  9495  	// The name of the set. You cannot change the name after you create the set.
  9496  	//
  9497  	// Name is a required field
  9498  	Name *string `min:"1" type:"string" required:"true"`
  9499  
  9500  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  9501  	// regional application. A regional application can be an Application Load Balancer
  9502  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  9503  	//
  9504  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  9505  	// as follows:
  9506  	//
  9507  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  9508  	//    --region=us-east-1.
  9509  	//
  9510  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  9511  	//
  9512  	// Scope is a required field
  9513  	Scope *string `type:"string" required:"true" enum:"Scope"`
  9514  }
  9515  
  9516  // String returns the string representation.
  9517  //
  9518  // API parameter values that are decorated as "sensitive" in the API will not
  9519  // be included in the string output. The member name will be present, but the
  9520  // value will be replaced with "sensitive".
  9521  func (s GetRegexPatternSetInput) String() string {
  9522  	return awsutil.Prettify(s)
  9523  }
  9524  
  9525  // GoString returns the string representation.
  9526  //
  9527  // API parameter values that are decorated as "sensitive" in the API will not
  9528  // be included in the string output. The member name will be present, but the
  9529  // value will be replaced with "sensitive".
  9530  func (s GetRegexPatternSetInput) GoString() string {
  9531  	return s.String()
  9532  }
  9533  
  9534  // Validate inspects the fields of the type to determine if they are valid.
  9535  func (s *GetRegexPatternSetInput) Validate() error {
  9536  	invalidParams := request.ErrInvalidParams{Context: "GetRegexPatternSetInput"}
  9537  	if s.Id == nil {
  9538  		invalidParams.Add(request.NewErrParamRequired("Id"))
  9539  	}
  9540  	if s.Id != nil && len(*s.Id) < 1 {
  9541  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
  9542  	}
  9543  	if s.Name == nil {
  9544  		invalidParams.Add(request.NewErrParamRequired("Name"))
  9545  	}
  9546  	if s.Name != nil && len(*s.Name) < 1 {
  9547  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  9548  	}
  9549  	if s.Scope == nil {
  9550  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  9551  	}
  9552  
  9553  	if invalidParams.Len() > 0 {
  9554  		return invalidParams
  9555  	}
  9556  	return nil
  9557  }
  9558  
  9559  // SetId sets the Id field's value.
  9560  func (s *GetRegexPatternSetInput) SetId(v string) *GetRegexPatternSetInput {
  9561  	s.Id = &v
  9562  	return s
  9563  }
  9564  
  9565  // SetName sets the Name field's value.
  9566  func (s *GetRegexPatternSetInput) SetName(v string) *GetRegexPatternSetInput {
  9567  	s.Name = &v
  9568  	return s
  9569  }
  9570  
  9571  // SetScope sets the Scope field's value.
  9572  func (s *GetRegexPatternSetInput) SetScope(v string) *GetRegexPatternSetInput {
  9573  	s.Scope = &v
  9574  	return s
  9575  }
  9576  
  9577  type GetRegexPatternSetOutput struct {
  9578  	_ struct{} `type:"structure"`
  9579  
  9580  	// A token used for optimistic locking. WAF returns a token to your get and
  9581  	// list requests, to mark the state of the entity at the time of the request.
  9582  	// To make changes to the entity associated with the token, you provide the
  9583  	// token to operations like update and delete. WAF uses the token to ensure
  9584  	// that no changes have been made to the entity since you last retrieved it.
  9585  	// If a change has been made, the update fails with a WAFOptimisticLockException.
  9586  	// If this happens, perform another get, and use the new token returned by that
  9587  	// operation.
  9588  	LockToken *string `min:"1" type:"string"`
  9589  
  9590  	// Contains one or more regular expressions.
  9591  	//
  9592  	// WAF assigns an ARN to each RegexPatternSet that you create. To use a set
  9593  	// in a rule, you provide the ARN to the Rule statement RegexPatternSetReferenceStatement.
  9594  	RegexPatternSet *RegexPatternSet `type:"structure"`
  9595  }
  9596  
  9597  // String returns the string representation.
  9598  //
  9599  // API parameter values that are decorated as "sensitive" in the API will not
  9600  // be included in the string output. The member name will be present, but the
  9601  // value will be replaced with "sensitive".
  9602  func (s GetRegexPatternSetOutput) String() string {
  9603  	return awsutil.Prettify(s)
  9604  }
  9605  
  9606  // GoString returns the string representation.
  9607  //
  9608  // API parameter values that are decorated as "sensitive" in the API will not
  9609  // be included in the string output. The member name will be present, but the
  9610  // value will be replaced with "sensitive".
  9611  func (s GetRegexPatternSetOutput) GoString() string {
  9612  	return s.String()
  9613  }
  9614  
  9615  // SetLockToken sets the LockToken field's value.
  9616  func (s *GetRegexPatternSetOutput) SetLockToken(v string) *GetRegexPatternSetOutput {
  9617  	s.LockToken = &v
  9618  	return s
  9619  }
  9620  
  9621  // SetRegexPatternSet sets the RegexPatternSet field's value.
  9622  func (s *GetRegexPatternSetOutput) SetRegexPatternSet(v *RegexPatternSet) *GetRegexPatternSetOutput {
  9623  	s.RegexPatternSet = v
  9624  	return s
  9625  }
  9626  
  9627  type GetRuleGroupInput struct {
  9628  	_ struct{} `type:"structure"`
  9629  
  9630  	// The Amazon Resource Name (ARN) of the entity.
  9631  	ARN *string `min:"20" type:"string"`
  9632  
  9633  	// A unique identifier for the rule group. This ID is returned in the responses
  9634  	// to create and list commands. You provide it to operations like update and
  9635  	// delete.
  9636  	Id *string `min:"1" type:"string"`
  9637  
  9638  	// The name of the rule group. You cannot change the name of a rule group after
  9639  	// you create it.
  9640  	Name *string `min:"1" type:"string"`
  9641  
  9642  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  9643  	// regional application. A regional application can be an Application Load Balancer
  9644  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  9645  	//
  9646  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  9647  	// as follows:
  9648  	//
  9649  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  9650  	//    --region=us-east-1.
  9651  	//
  9652  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  9653  	Scope *string `type:"string" enum:"Scope"`
  9654  }
  9655  
  9656  // String returns the string representation.
  9657  //
  9658  // API parameter values that are decorated as "sensitive" in the API will not
  9659  // be included in the string output. The member name will be present, but the
  9660  // value will be replaced with "sensitive".
  9661  func (s GetRuleGroupInput) String() string {
  9662  	return awsutil.Prettify(s)
  9663  }
  9664  
  9665  // GoString returns the string representation.
  9666  //
  9667  // API parameter values that are decorated as "sensitive" in the API will not
  9668  // be included in the string output. The member name will be present, but the
  9669  // value will be replaced with "sensitive".
  9670  func (s GetRuleGroupInput) GoString() string {
  9671  	return s.String()
  9672  }
  9673  
  9674  // Validate inspects the fields of the type to determine if they are valid.
  9675  func (s *GetRuleGroupInput) Validate() error {
  9676  	invalidParams := request.ErrInvalidParams{Context: "GetRuleGroupInput"}
  9677  	if s.ARN != nil && len(*s.ARN) < 20 {
  9678  		invalidParams.Add(request.NewErrParamMinLen("ARN", 20))
  9679  	}
  9680  	if s.Id != nil && len(*s.Id) < 1 {
  9681  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
  9682  	}
  9683  	if s.Name != nil && len(*s.Name) < 1 {
  9684  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  9685  	}
  9686  
  9687  	if invalidParams.Len() > 0 {
  9688  		return invalidParams
  9689  	}
  9690  	return nil
  9691  }
  9692  
  9693  // SetARN sets the ARN field's value.
  9694  func (s *GetRuleGroupInput) SetARN(v string) *GetRuleGroupInput {
  9695  	s.ARN = &v
  9696  	return s
  9697  }
  9698  
  9699  // SetId sets the Id field's value.
  9700  func (s *GetRuleGroupInput) SetId(v string) *GetRuleGroupInput {
  9701  	s.Id = &v
  9702  	return s
  9703  }
  9704  
  9705  // SetName sets the Name field's value.
  9706  func (s *GetRuleGroupInput) SetName(v string) *GetRuleGroupInput {
  9707  	s.Name = &v
  9708  	return s
  9709  }
  9710  
  9711  // SetScope sets the Scope field's value.
  9712  func (s *GetRuleGroupInput) SetScope(v string) *GetRuleGroupInput {
  9713  	s.Scope = &v
  9714  	return s
  9715  }
  9716  
  9717  type GetRuleGroupOutput struct {
  9718  	_ struct{} `type:"structure"`
  9719  
  9720  	// A token used for optimistic locking. WAF returns a token to your get and
  9721  	// list requests, to mark the state of the entity at the time of the request.
  9722  	// To make changes to the entity associated with the token, you provide the
  9723  	// token to operations like update and delete. WAF uses the token to ensure
  9724  	// that no changes have been made to the entity since you last retrieved it.
  9725  	// If a change has been made, the update fails with a WAFOptimisticLockException.
  9726  	// If this happens, perform another get, and use the new token returned by that
  9727  	// operation.
  9728  	LockToken *string `min:"1" type:"string"`
  9729  
  9730  	// A rule group defines a collection of rules to inspect and control web requests
  9731  	// that you can use in a WebACL. When you create a rule group, you define an
  9732  	// immutable capacity limit. If you update a rule group, you must stay within
  9733  	// the capacity. This allows others to reuse the rule group with confidence
  9734  	// in its capacity requirements.
  9735  	RuleGroup *RuleGroup `type:"structure"`
  9736  }
  9737  
  9738  // String returns the string representation.
  9739  //
  9740  // API parameter values that are decorated as "sensitive" in the API will not
  9741  // be included in the string output. The member name will be present, but the
  9742  // value will be replaced with "sensitive".
  9743  func (s GetRuleGroupOutput) String() string {
  9744  	return awsutil.Prettify(s)
  9745  }
  9746  
  9747  // GoString returns the string representation.
  9748  //
  9749  // API parameter values that are decorated as "sensitive" in the API will not
  9750  // be included in the string output. The member name will be present, but the
  9751  // value will be replaced with "sensitive".
  9752  func (s GetRuleGroupOutput) GoString() string {
  9753  	return s.String()
  9754  }
  9755  
  9756  // SetLockToken sets the LockToken field's value.
  9757  func (s *GetRuleGroupOutput) SetLockToken(v string) *GetRuleGroupOutput {
  9758  	s.LockToken = &v
  9759  	return s
  9760  }
  9761  
  9762  // SetRuleGroup sets the RuleGroup field's value.
  9763  func (s *GetRuleGroupOutput) SetRuleGroup(v *RuleGroup) *GetRuleGroupOutput {
  9764  	s.RuleGroup = v
  9765  	return s
  9766  }
  9767  
  9768  type GetSampledRequestsInput struct {
  9769  	_ struct{} `type:"structure"`
  9770  
  9771  	// The number of requests that you want WAF to return from among the first 5,000
  9772  	// requests that your Amazon Web Services resource received during the time
  9773  	// range. If your resource received fewer requests than the value of MaxItems,
  9774  	// GetSampledRequests returns information about all of them.
  9775  	//
  9776  	// MaxItems is a required field
  9777  	MaxItems *int64 `min:"1" type:"long" required:"true"`
  9778  
  9779  	// The metric name assigned to the Rule or RuleGroup for which you want a sample
  9780  	// of requests.
  9781  	//
  9782  	// RuleMetricName is a required field
  9783  	RuleMetricName *string `min:"1" type:"string" required:"true"`
  9784  
  9785  	// Specifies whether this is for an Amazon CloudFront distribution or for a
  9786  	// regional application. A regional application can be an Application Load Balancer
  9787  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
  9788  	//
  9789  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
  9790  	// as follows:
  9791  	//
  9792  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
  9793  	//    --region=us-east-1.
  9794  	//
  9795  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
  9796  	//
  9797  	// Scope is a required field
  9798  	Scope *string `type:"string" required:"true" enum:"Scope"`
  9799  
  9800  	// The start date and time and the end date and time of the range for which
  9801  	// you want GetSampledRequests to return a sample of requests. You must specify
  9802  	// the times in Coordinated Universal Time (UTC) format. UTC format includes
  9803  	// the special designator, Z. For example, "2016-09-27T14:50Z". You can specify
  9804  	// any time range in the previous three hours. If you specify a start time that's
  9805  	// earlier than three hours ago, WAF sets it to three hours ago.
  9806  	//
  9807  	// TimeWindow is a required field
  9808  	TimeWindow *TimeWindow `type:"structure" required:"true"`
  9809  
  9810  	// The Amazon resource name (ARN) of the WebACL for which you want a sample
  9811  	// of requests.
  9812  	//
  9813  	// WebAclArn is a required field
  9814  	WebAclArn *string `min:"20" type:"string" required:"true"`
  9815  }
  9816  
  9817  // String returns the string representation.
  9818  //
  9819  // API parameter values that are decorated as "sensitive" in the API will not
  9820  // be included in the string output. The member name will be present, but the
  9821  // value will be replaced with "sensitive".
  9822  func (s GetSampledRequestsInput) String() string {
  9823  	return awsutil.Prettify(s)
  9824  }
  9825  
  9826  // GoString returns the string representation.
  9827  //
  9828  // API parameter values that are decorated as "sensitive" in the API will not
  9829  // be included in the string output. The member name will be present, but the
  9830  // value will be replaced with "sensitive".
  9831  func (s GetSampledRequestsInput) GoString() string {
  9832  	return s.String()
  9833  }
  9834  
  9835  // Validate inspects the fields of the type to determine if they are valid.
  9836  func (s *GetSampledRequestsInput) Validate() error {
  9837  	invalidParams := request.ErrInvalidParams{Context: "GetSampledRequestsInput"}
  9838  	if s.MaxItems == nil {
  9839  		invalidParams.Add(request.NewErrParamRequired("MaxItems"))
  9840  	}
  9841  	if s.MaxItems != nil && *s.MaxItems < 1 {
  9842  		invalidParams.Add(request.NewErrParamMinValue("MaxItems", 1))
  9843  	}
  9844  	if s.RuleMetricName == nil {
  9845  		invalidParams.Add(request.NewErrParamRequired("RuleMetricName"))
  9846  	}
  9847  	if s.RuleMetricName != nil && len(*s.RuleMetricName) < 1 {
  9848  		invalidParams.Add(request.NewErrParamMinLen("RuleMetricName", 1))
  9849  	}
  9850  	if s.Scope == nil {
  9851  		invalidParams.Add(request.NewErrParamRequired("Scope"))
  9852  	}
  9853  	if s.TimeWindow == nil {
  9854  		invalidParams.Add(request.NewErrParamRequired("TimeWindow"))
  9855  	}
  9856  	if s.WebAclArn == nil {
  9857  		invalidParams.Add(request.NewErrParamRequired("WebAclArn"))
  9858  	}
  9859  	if s.WebAclArn != nil && len(*s.WebAclArn) < 20 {
  9860  		invalidParams.Add(request.NewErrParamMinLen("WebAclArn", 20))
  9861  	}
  9862  	if s.TimeWindow != nil {
  9863  		if err := s.TimeWindow.Validate(); err != nil {
  9864  			invalidParams.AddNested("TimeWindow", err.(request.ErrInvalidParams))
  9865  		}
  9866  	}
  9867  
  9868  	if invalidParams.Len() > 0 {
  9869  		return invalidParams
  9870  	}
  9871  	return nil
  9872  }
  9873  
  9874  // SetMaxItems sets the MaxItems field's value.
  9875  func (s *GetSampledRequestsInput) SetMaxItems(v int64) *GetSampledRequestsInput {
  9876  	s.MaxItems = &v
  9877  	return s
  9878  }
  9879  
  9880  // SetRuleMetricName sets the RuleMetricName field's value.
  9881  func (s *GetSampledRequestsInput) SetRuleMetricName(v string) *GetSampledRequestsInput {
  9882  	s.RuleMetricName = &v
  9883  	return s
  9884  }
  9885  
  9886  // SetScope sets the Scope field's value.
  9887  func (s *GetSampledRequestsInput) SetScope(v string) *GetSampledRequestsInput {
  9888  	s.Scope = &v
  9889  	return s
  9890  }
  9891  
  9892  // SetTimeWindow sets the TimeWindow field's value.
  9893  func (s *GetSampledRequestsInput) SetTimeWindow(v *TimeWindow) *GetSampledRequestsInput {
  9894  	s.TimeWindow = v
  9895  	return s
  9896  }
  9897  
  9898  // SetWebAclArn sets the WebAclArn field's value.
  9899  func (s *GetSampledRequestsInput) SetWebAclArn(v string) *GetSampledRequestsInput {
  9900  	s.WebAclArn = &v
  9901  	return s
  9902  }
  9903  
  9904  type GetSampledRequestsOutput struct {
  9905  	_ struct{} `type:"structure"`
  9906  
  9907  	// The total number of requests from which GetSampledRequests got a sample of
  9908  	// MaxItems requests. If PopulationSize is less than MaxItems, the sample includes
  9909  	// every request that your Amazon Web Services resource received during the
  9910  	// specified time range.
  9911  	PopulationSize *int64 `type:"long"`
  9912  
  9913  	// A complex type that contains detailed information about each of the requests
  9914  	// in the sample.
  9915  	SampledRequests []*SampledHTTPRequest `type:"list"`
  9916  
  9917  	// Usually, TimeWindow is the time range that you specified in the GetSampledRequests
  9918  	// request. However, if your Amazon Web Services resource received more than
  9919  	// 5,000 requests during the time range that you specified in the request, GetSampledRequests
  9920  	// returns the time range for the first 5,000 requests. Times are in Coordinated
  9921  	// Universal Time (UTC) format.
  9922  	TimeWindow *TimeWindow `type:"structure"`
  9923  }
  9924  
  9925  // String returns the string representation.
  9926  //
  9927  // API parameter values that are decorated as "sensitive" in the API will not
  9928  // be included in the string output. The member name will be present, but the
  9929  // value will be replaced with "sensitive".
  9930  func (s GetSampledRequestsOutput) String() string {
  9931  	return awsutil.Prettify(s)
  9932  }
  9933  
  9934  // GoString returns the string representation.
  9935  //
  9936  // API parameter values that are decorated as "sensitive" in the API will not
  9937  // be included in the string output. The member name will be present, but the
  9938  // value will be replaced with "sensitive".
  9939  func (s GetSampledRequestsOutput) GoString() string {
  9940  	return s.String()
  9941  }
  9942  
  9943  // SetPopulationSize sets the PopulationSize field's value.
  9944  func (s *GetSampledRequestsOutput) SetPopulationSize(v int64) *GetSampledRequestsOutput {
  9945  	s.PopulationSize = &v
  9946  	return s
  9947  }
  9948  
  9949  // SetSampledRequests sets the SampledRequests field's value.
  9950  func (s *GetSampledRequestsOutput) SetSampledRequests(v []*SampledHTTPRequest) *GetSampledRequestsOutput {
  9951  	s.SampledRequests = v
  9952  	return s
  9953  }
  9954  
  9955  // SetTimeWindow sets the TimeWindow field's value.
  9956  func (s *GetSampledRequestsOutput) SetTimeWindow(v *TimeWindow) *GetSampledRequestsOutput {
  9957  	s.TimeWindow = v
  9958  	return s
  9959  }
  9960  
  9961  type GetWebACLForResourceInput struct {
  9962  	_ struct{} `type:"structure"`
  9963  
  9964  	// The ARN (Amazon Resource Name) of the resource.
  9965  	//
  9966  	// ResourceArn is a required field
  9967  	ResourceArn *string `min:"20" type:"string" required:"true"`
  9968  }
  9969  
  9970  // String returns the string representation.
  9971  //
  9972  // API parameter values that are decorated as "sensitive" in the API will not
  9973  // be included in the string output. The member name will be present, but the
  9974  // value will be replaced with "sensitive".
  9975  func (s GetWebACLForResourceInput) String() string {
  9976  	return awsutil.Prettify(s)
  9977  }
  9978  
  9979  // GoString returns the string representation.
  9980  //
  9981  // API parameter values that are decorated as "sensitive" in the API will not
  9982  // be included in the string output. The member name will be present, but the
  9983  // value will be replaced with "sensitive".
  9984  func (s GetWebACLForResourceInput) GoString() string {
  9985  	return s.String()
  9986  }
  9987  
  9988  // Validate inspects the fields of the type to determine if they are valid.
  9989  func (s *GetWebACLForResourceInput) Validate() error {
  9990  	invalidParams := request.ErrInvalidParams{Context: "GetWebACLForResourceInput"}
  9991  	if s.ResourceArn == nil {
  9992  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  9993  	}
  9994  	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
  9995  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
  9996  	}
  9997  
  9998  	if invalidParams.Len() > 0 {
  9999  		return invalidParams
 10000  	}
 10001  	return nil
 10002  }
 10003  
 10004  // SetResourceArn sets the ResourceArn field's value.
 10005  func (s *GetWebACLForResourceInput) SetResourceArn(v string) *GetWebACLForResourceInput {
 10006  	s.ResourceArn = &v
 10007  	return s
 10008  }
 10009  
 10010  type GetWebACLForResourceOutput struct {
 10011  	_ struct{} `type:"structure"`
 10012  
 10013  	// The web ACL that is associated with the resource. If there is no associated
 10014  	// resource, WAF returns a null web ACL.
 10015  	WebACL *WebACL `type:"structure"`
 10016  }
 10017  
 10018  // String returns the string representation.
 10019  //
 10020  // API parameter values that are decorated as "sensitive" in the API will not
 10021  // be included in the string output. The member name will be present, but the
 10022  // value will be replaced with "sensitive".
 10023  func (s GetWebACLForResourceOutput) String() string {
 10024  	return awsutil.Prettify(s)
 10025  }
 10026  
 10027  // GoString 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 GetWebACLForResourceOutput) GoString() string {
 10033  	return s.String()
 10034  }
 10035  
 10036  // SetWebACL sets the WebACL field's value.
 10037  func (s *GetWebACLForResourceOutput) SetWebACL(v *WebACL) *GetWebACLForResourceOutput {
 10038  	s.WebACL = v
 10039  	return s
 10040  }
 10041  
 10042  type GetWebACLInput struct {
 10043  	_ struct{} `type:"structure"`
 10044  
 10045  	// The unique identifier for the web ACL. This ID is returned in the responses
 10046  	// to create and list commands. You provide it to operations like update and
 10047  	// delete.
 10048  	//
 10049  	// Id is a required field
 10050  	Id *string `min:"1" type:"string" required:"true"`
 10051  
 10052  	// The name of the web ACL. You cannot change the name of a web ACL after you
 10053  	// create it.
 10054  	//
 10055  	// Name is a required field
 10056  	Name *string `min:"1" type:"string" required:"true"`
 10057  
 10058  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 10059  	// regional application. A regional application can be an Application Load Balancer
 10060  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 10061  	//
 10062  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 10063  	// as follows:
 10064  	//
 10065  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 10066  	//    --region=us-east-1.
 10067  	//
 10068  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 10069  	//
 10070  	// Scope is a required field
 10071  	Scope *string `type:"string" required:"true" enum:"Scope"`
 10072  }
 10073  
 10074  // String returns the string representation.
 10075  //
 10076  // API parameter values that are decorated as "sensitive" in the API will not
 10077  // be included in the string output. The member name will be present, but the
 10078  // value will be replaced with "sensitive".
 10079  func (s GetWebACLInput) String() string {
 10080  	return awsutil.Prettify(s)
 10081  }
 10082  
 10083  // GoString returns the string representation.
 10084  //
 10085  // API parameter values that are decorated as "sensitive" in the API will not
 10086  // be included in the string output. The member name will be present, but the
 10087  // value will be replaced with "sensitive".
 10088  func (s GetWebACLInput) GoString() string {
 10089  	return s.String()
 10090  }
 10091  
 10092  // Validate inspects the fields of the type to determine if they are valid.
 10093  func (s *GetWebACLInput) Validate() error {
 10094  	invalidParams := request.ErrInvalidParams{Context: "GetWebACLInput"}
 10095  	if s.Id == nil {
 10096  		invalidParams.Add(request.NewErrParamRequired("Id"))
 10097  	}
 10098  	if s.Id != nil && len(*s.Id) < 1 {
 10099  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
 10100  	}
 10101  	if s.Name == nil {
 10102  		invalidParams.Add(request.NewErrParamRequired("Name"))
 10103  	}
 10104  	if s.Name != nil && len(*s.Name) < 1 {
 10105  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 10106  	}
 10107  	if s.Scope == nil {
 10108  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 10109  	}
 10110  
 10111  	if invalidParams.Len() > 0 {
 10112  		return invalidParams
 10113  	}
 10114  	return nil
 10115  }
 10116  
 10117  // SetId sets the Id field's value.
 10118  func (s *GetWebACLInput) SetId(v string) *GetWebACLInput {
 10119  	s.Id = &v
 10120  	return s
 10121  }
 10122  
 10123  // SetName sets the Name field's value.
 10124  func (s *GetWebACLInput) SetName(v string) *GetWebACLInput {
 10125  	s.Name = &v
 10126  	return s
 10127  }
 10128  
 10129  // SetScope sets the Scope field's value.
 10130  func (s *GetWebACLInput) SetScope(v string) *GetWebACLInput {
 10131  	s.Scope = &v
 10132  	return s
 10133  }
 10134  
 10135  type GetWebACLOutput struct {
 10136  	_ struct{} `type:"structure"`
 10137  
 10138  	// A token used for optimistic locking. WAF returns a token to your get and
 10139  	// list requests, to mark the state of the entity at the time of the request.
 10140  	// To make changes to the entity associated with the token, you provide the
 10141  	// token to operations like update and delete. WAF uses the token to ensure
 10142  	// that no changes have been made to the entity since you last retrieved it.
 10143  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 10144  	// If this happens, perform another get, and use the new token returned by that
 10145  	// operation.
 10146  	LockToken *string `min:"1" type:"string"`
 10147  
 10148  	// The web ACL specification. You can modify the settings in this web ACL and
 10149  	// use it to update this web ACL or create a new one.
 10150  	WebACL *WebACL `type:"structure"`
 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 GetWebACLOutput) 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 GetWebACLOutput) GoString() string {
 10168  	return s.String()
 10169  }
 10170  
 10171  // SetLockToken sets the LockToken field's value.
 10172  func (s *GetWebACLOutput) SetLockToken(v string) *GetWebACLOutput {
 10173  	s.LockToken = &v
 10174  	return s
 10175  }
 10176  
 10177  // SetWebACL sets the WebACL field's value.
 10178  func (s *GetWebACLOutput) SetWebACL(v *WebACL) *GetWebACLOutput {
 10179  	s.WebACL = v
 10180  	return s
 10181  }
 10182  
 10183  // Part of the response from GetSampledRequests. This is a complex type that
 10184  // appears as Headers in the response syntax. HTTPHeader contains the names
 10185  // and values of all of the headers that appear in one of the web requests.
 10186  type HTTPHeader struct {
 10187  	_ struct{} `type:"structure"`
 10188  
 10189  	// The name of the HTTP header.
 10190  	Name *string `type:"string"`
 10191  
 10192  	// The value of the HTTP header.
 10193  	Value *string `type:"string"`
 10194  }
 10195  
 10196  // String returns the string representation.
 10197  //
 10198  // API parameter values that are decorated as "sensitive" in the API will not
 10199  // be included in the string output. The member name will be present, but the
 10200  // value will be replaced with "sensitive".
 10201  func (s HTTPHeader) String() string {
 10202  	return awsutil.Prettify(s)
 10203  }
 10204  
 10205  // GoString 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 HTTPHeader) GoString() string {
 10211  	return s.String()
 10212  }
 10213  
 10214  // SetName sets the Name field's value.
 10215  func (s *HTTPHeader) SetName(v string) *HTTPHeader {
 10216  	s.Name = &v
 10217  	return s
 10218  }
 10219  
 10220  // SetValue sets the Value field's value.
 10221  func (s *HTTPHeader) SetValue(v string) *HTTPHeader {
 10222  	s.Value = &v
 10223  	return s
 10224  }
 10225  
 10226  // Part of the response from GetSampledRequests. This is a complex type that
 10227  // appears as Request in the response syntax. HTTPRequest contains information
 10228  // about one of the web requests.
 10229  type HTTPRequest struct {
 10230  	_ struct{} `type:"structure"`
 10231  
 10232  	// The IP address that the request originated from. If the web ACL is associated
 10233  	// with a CloudFront distribution, this is the value of one of the following
 10234  	// fields in CloudFront access logs:
 10235  	//
 10236  	//    * c-ip, if the viewer did not use an HTTP proxy or a load balancer to
 10237  	//    send the request
 10238  	//
 10239  	//    * x-forwarded-for, if the viewer did use an HTTP proxy or a load balancer
 10240  	//    to send the request
 10241  	ClientIP *string `type:"string"`
 10242  
 10243  	// The two-letter country code for the country that the request originated from.
 10244  	// For a current list of country codes, see the Wikipedia entry ISO 3166-1 alpha-2
 10245  	// (https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
 10246  	Country *string `type:"string"`
 10247  
 10248  	// The HTTP version specified in the sampled web request, for example, HTTP/1.1.
 10249  	HTTPVersion *string `type:"string"`
 10250  
 10251  	// A complex type that contains the name and value for each header in the sampled
 10252  	// web request.
 10253  	Headers []*HTTPHeader `type:"list"`
 10254  
 10255  	// The HTTP method specified in the sampled web request.
 10256  	Method *string `type:"string"`
 10257  
 10258  	// The URI path of the request, which identifies the resource, for example,
 10259  	// /images/daily-ad.jpg.
 10260  	URI *string `type:"string"`
 10261  }
 10262  
 10263  // String returns the string representation.
 10264  //
 10265  // API parameter values that are decorated as "sensitive" in the API will not
 10266  // be included in the string output. The member name will be present, but the
 10267  // value will be replaced with "sensitive".
 10268  func (s HTTPRequest) String() string {
 10269  	return awsutil.Prettify(s)
 10270  }
 10271  
 10272  // GoString returns the string representation.
 10273  //
 10274  // API parameter values that are decorated as "sensitive" in the API will not
 10275  // be included in the string output. The member name will be present, but the
 10276  // value will be replaced with "sensitive".
 10277  func (s HTTPRequest) GoString() string {
 10278  	return s.String()
 10279  }
 10280  
 10281  // SetClientIP sets the ClientIP field's value.
 10282  func (s *HTTPRequest) SetClientIP(v string) *HTTPRequest {
 10283  	s.ClientIP = &v
 10284  	return s
 10285  }
 10286  
 10287  // SetCountry sets the Country field's value.
 10288  func (s *HTTPRequest) SetCountry(v string) *HTTPRequest {
 10289  	s.Country = &v
 10290  	return s
 10291  }
 10292  
 10293  // SetHTTPVersion sets the HTTPVersion field's value.
 10294  func (s *HTTPRequest) SetHTTPVersion(v string) *HTTPRequest {
 10295  	s.HTTPVersion = &v
 10296  	return s
 10297  }
 10298  
 10299  // SetHeaders sets the Headers field's value.
 10300  func (s *HTTPRequest) SetHeaders(v []*HTTPHeader) *HTTPRequest {
 10301  	s.Headers = v
 10302  	return s
 10303  }
 10304  
 10305  // SetMethod sets the Method field's value.
 10306  func (s *HTTPRequest) SetMethod(v string) *HTTPRequest {
 10307  	s.Method = &v
 10308  	return s
 10309  }
 10310  
 10311  // SetURI sets the URI field's value.
 10312  func (s *HTTPRequest) SetURI(v string) *HTTPRequest {
 10313  	s.URI = &v
 10314  	return s
 10315  }
 10316  
 10317  // Contains one or more IP addresses or blocks of IP addresses specified in
 10318  // Classless Inter-Domain Routing (CIDR) notation. WAF supports all IPv4 and
 10319  // IPv6 CIDR ranges except for /0. For information about CIDR notation, see
 10320  // the Wikipedia entry Classless Inter-Domain Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
 10321  //
 10322  // WAF assigns an ARN to each IPSet that you create. To use an IP set in a rule,
 10323  // you provide the ARN to the Rule statement IPSetReferenceStatement.
 10324  type IPSet struct {
 10325  	_ struct{} `type:"structure"`
 10326  
 10327  	// The Amazon Resource Name (ARN) of the entity.
 10328  	//
 10329  	// ARN is a required field
 10330  	ARN *string `min:"20" type:"string" required:"true"`
 10331  
 10332  	// Contains an array of strings that specify one or more IP addresses or blocks
 10333  	// of IP addresses in Classless Inter-Domain Routing (CIDR) notation. WAF supports
 10334  	// all IPv4 and IPv6 CIDR ranges except for /0.
 10335  	//
 10336  	// Examples:
 10337  	//
 10338  	//    * To configure WAF to allow, block, or count requests that originated
 10339  	//    from the IP address 192.0.2.44, specify 192.0.2.44/32.
 10340  	//
 10341  	//    * To configure WAF to allow, block, or count requests that originated
 10342  	//    from IP addresses from 192.0.2.0 to 192.0.2.255, specify 192.0.2.0/24.
 10343  	//
 10344  	//    * To configure WAF to allow, block, or count requests that originated
 10345  	//    from the IP address 1111:0000:0000:0000:0000:0000:0000:0111, specify 1111:0000:0000:0000:0000:0000:0000:0111/128.
 10346  	//
 10347  	//    * To configure WAF to allow, block, or count requests that originated
 10348  	//    from IP addresses 1111:0000:0000:0000:0000:0000:0000:0000 to 1111:0000:0000:0000:ffff:ffff:ffff:ffff,
 10349  	//    specify 1111:0000:0000:0000:0000:0000:0000:0000/64.
 10350  	//
 10351  	// For more information about CIDR notation, see the Wikipedia entry Classless
 10352  	// Inter-Domain Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
 10353  	//
 10354  	// Addresses is a required field
 10355  	Addresses []*string `type:"list" required:"true"`
 10356  
 10357  	// A description of the IP set that helps with identification.
 10358  	Description *string `min:"1" type:"string"`
 10359  
 10360  	// The version of the IP addresses, either IPV4 or IPV6.
 10361  	//
 10362  	// IPAddressVersion is a required field
 10363  	IPAddressVersion *string `type:"string" required:"true" enum:"IPAddressVersion"`
 10364  
 10365  	// A unique identifier for the set. This ID is returned in the responses to
 10366  	// create and list commands. You provide it to operations like update and delete.
 10367  	//
 10368  	// Id is a required field
 10369  	Id *string `min:"1" type:"string" required:"true"`
 10370  
 10371  	// The name of the IP set. You cannot change the name of an IPSet after you
 10372  	// create it.
 10373  	//
 10374  	// Name is a required field
 10375  	Name *string `min:"1" type:"string" required:"true"`
 10376  }
 10377  
 10378  // String returns the string representation.
 10379  //
 10380  // API parameter values that are decorated as "sensitive" in the API will not
 10381  // be included in the string output. The member name will be present, but the
 10382  // value will be replaced with "sensitive".
 10383  func (s IPSet) String() string {
 10384  	return awsutil.Prettify(s)
 10385  }
 10386  
 10387  // GoString returns the string representation.
 10388  //
 10389  // API parameter values that are decorated as "sensitive" in the API will not
 10390  // be included in the string output. The member name will be present, but the
 10391  // value will be replaced with "sensitive".
 10392  func (s IPSet) GoString() string {
 10393  	return s.String()
 10394  }
 10395  
 10396  // SetARN sets the ARN field's value.
 10397  func (s *IPSet) SetARN(v string) *IPSet {
 10398  	s.ARN = &v
 10399  	return s
 10400  }
 10401  
 10402  // SetAddresses sets the Addresses field's value.
 10403  func (s *IPSet) SetAddresses(v []*string) *IPSet {
 10404  	s.Addresses = v
 10405  	return s
 10406  }
 10407  
 10408  // SetDescription sets the Description field's value.
 10409  func (s *IPSet) SetDescription(v string) *IPSet {
 10410  	s.Description = &v
 10411  	return s
 10412  }
 10413  
 10414  // SetIPAddressVersion sets the IPAddressVersion field's value.
 10415  func (s *IPSet) SetIPAddressVersion(v string) *IPSet {
 10416  	s.IPAddressVersion = &v
 10417  	return s
 10418  }
 10419  
 10420  // SetId sets the Id field's value.
 10421  func (s *IPSet) SetId(v string) *IPSet {
 10422  	s.Id = &v
 10423  	return s
 10424  }
 10425  
 10426  // SetName sets the Name field's value.
 10427  func (s *IPSet) SetName(v string) *IPSet {
 10428  	s.Name = &v
 10429  	return s
 10430  }
 10431  
 10432  // The configuration for inspecting IP addresses in an HTTP header that you
 10433  // specify, instead of using the IP address that's reported by the web request
 10434  // origin. Commonly, this is the X-Forwarded-For (XFF) header, but you can specify
 10435  // any header name.
 10436  //
 10437  // If the specified header isn't present in the request, WAF doesn't apply the
 10438  // rule to the web request at all.
 10439  //
 10440  // This configuration is used only for IPSetReferenceStatement. For GeoMatchStatement
 10441  // and RateBasedStatement, use ForwardedIPConfig instead.
 10442  type IPSetForwardedIPConfig struct {
 10443  	_ struct{} `type:"structure"`
 10444  
 10445  	// The match status to assign to the web request if the request doesn't have
 10446  	// a valid IP address in the specified position.
 10447  	//
 10448  	// If the specified header isn't present in the request, WAF doesn't apply the
 10449  	// rule to the web request at all.
 10450  	//
 10451  	// You can specify the following fallback behaviors:
 10452  	//
 10453  	//    * MATCH - Treat the web request as matching the rule statement. WAF applies
 10454  	//    the rule action to the request.
 10455  	//
 10456  	//    * NO_MATCH - Treat the web request as not matching the rule statement.
 10457  	//
 10458  	// FallbackBehavior is a required field
 10459  	FallbackBehavior *string `type:"string" required:"true" enum:"FallbackBehavior"`
 10460  
 10461  	// The name of the HTTP header to use for the IP address. For example, to use
 10462  	// the X-Forwarded-For (XFF) header, set this to X-Forwarded-For.
 10463  	//
 10464  	// If the specified header isn't present in the request, WAF doesn't apply the
 10465  	// rule to the web request at all.
 10466  	//
 10467  	// HeaderName is a required field
 10468  	HeaderName *string `min:"1" type:"string" required:"true"`
 10469  
 10470  	// The position in the header to search for the IP address. The header can contain
 10471  	// IP addresses of the original client and also of proxies. For example, the
 10472  	// header value could be 10.1.1.1, 127.0.0.0, 10.10.10.10 where the first IP
 10473  	// address identifies the original client and the rest identify proxies that
 10474  	// the request went through.
 10475  	//
 10476  	// The options for this setting are the following:
 10477  	//
 10478  	//    * FIRST - Inspect the first IP address in the list of IP addresses in
 10479  	//    the header. This is usually the client's original IP.
 10480  	//
 10481  	//    * LAST - Inspect the last IP address in the list of IP addresses in the
 10482  	//    header.
 10483  	//
 10484  	//    * ANY - Inspect all IP addresses in the header for a match. If the header
 10485  	//    contains more than 10 IP addresses, WAF inspects the last 10.
 10486  	//
 10487  	// Position is a required field
 10488  	Position *string `type:"string" required:"true" enum:"ForwardedIPPosition"`
 10489  }
 10490  
 10491  // String returns the string representation.
 10492  //
 10493  // API parameter values that are decorated as "sensitive" in the API will not
 10494  // be included in the string output. The member name will be present, but the
 10495  // value will be replaced with "sensitive".
 10496  func (s IPSetForwardedIPConfig) String() string {
 10497  	return awsutil.Prettify(s)
 10498  }
 10499  
 10500  // GoString returns the string representation.
 10501  //
 10502  // API parameter values that are decorated as "sensitive" in the API will not
 10503  // be included in the string output. The member name will be present, but the
 10504  // value will be replaced with "sensitive".
 10505  func (s IPSetForwardedIPConfig) GoString() string {
 10506  	return s.String()
 10507  }
 10508  
 10509  // Validate inspects the fields of the type to determine if they are valid.
 10510  func (s *IPSetForwardedIPConfig) Validate() error {
 10511  	invalidParams := request.ErrInvalidParams{Context: "IPSetForwardedIPConfig"}
 10512  	if s.FallbackBehavior == nil {
 10513  		invalidParams.Add(request.NewErrParamRequired("FallbackBehavior"))
 10514  	}
 10515  	if s.HeaderName == nil {
 10516  		invalidParams.Add(request.NewErrParamRequired("HeaderName"))
 10517  	}
 10518  	if s.HeaderName != nil && len(*s.HeaderName) < 1 {
 10519  		invalidParams.Add(request.NewErrParamMinLen("HeaderName", 1))
 10520  	}
 10521  	if s.Position == nil {
 10522  		invalidParams.Add(request.NewErrParamRequired("Position"))
 10523  	}
 10524  
 10525  	if invalidParams.Len() > 0 {
 10526  		return invalidParams
 10527  	}
 10528  	return nil
 10529  }
 10530  
 10531  // SetFallbackBehavior sets the FallbackBehavior field's value.
 10532  func (s *IPSetForwardedIPConfig) SetFallbackBehavior(v string) *IPSetForwardedIPConfig {
 10533  	s.FallbackBehavior = &v
 10534  	return s
 10535  }
 10536  
 10537  // SetHeaderName sets the HeaderName field's value.
 10538  func (s *IPSetForwardedIPConfig) SetHeaderName(v string) *IPSetForwardedIPConfig {
 10539  	s.HeaderName = &v
 10540  	return s
 10541  }
 10542  
 10543  // SetPosition sets the Position field's value.
 10544  func (s *IPSetForwardedIPConfig) SetPosition(v string) *IPSetForwardedIPConfig {
 10545  	s.Position = &v
 10546  	return s
 10547  }
 10548  
 10549  // A rule statement used to detect web requests coming from particular IP addresses
 10550  // or address ranges. To use this, create an IPSet that specifies the addresses
 10551  // you want to detect, then use the ARN of that set in this statement. To create
 10552  // an IP set, see CreateIPSet.
 10553  //
 10554  // Each IP set rule statement references an IP set. You create and maintain
 10555  // the set independent of your rules. This allows you to use the single set
 10556  // in multiple rules. When you update the referenced set, WAF automatically
 10557  // updates all rules that reference it.
 10558  type IPSetReferenceStatement struct {
 10559  	_ struct{} `type:"structure"`
 10560  
 10561  	// The Amazon Resource Name (ARN) of the IPSet that this statement references.
 10562  	//
 10563  	// ARN is a required field
 10564  	ARN *string `min:"20" type:"string" required:"true"`
 10565  
 10566  	// The configuration for inspecting IP addresses in an HTTP header that you
 10567  	// specify, instead of using the IP address that's reported by the web request
 10568  	// origin. Commonly, this is the X-Forwarded-For (XFF) header, but you can specify
 10569  	// any header name.
 10570  	//
 10571  	// If the specified header isn't present in the request, WAF doesn't apply the
 10572  	// rule to the web request at all.
 10573  	IPSetForwardedIPConfig *IPSetForwardedIPConfig `type:"structure"`
 10574  }
 10575  
 10576  // String returns the string representation.
 10577  //
 10578  // API parameter values that are decorated as "sensitive" in the API will not
 10579  // be included in the string output. The member name will be present, but the
 10580  // value will be replaced with "sensitive".
 10581  func (s IPSetReferenceStatement) String() string {
 10582  	return awsutil.Prettify(s)
 10583  }
 10584  
 10585  // GoString returns the string representation.
 10586  //
 10587  // API parameter values that are decorated as "sensitive" in the API will not
 10588  // be included in the string output. The member name will be present, but the
 10589  // value will be replaced with "sensitive".
 10590  func (s IPSetReferenceStatement) GoString() string {
 10591  	return s.String()
 10592  }
 10593  
 10594  // Validate inspects the fields of the type to determine if they are valid.
 10595  func (s *IPSetReferenceStatement) Validate() error {
 10596  	invalidParams := request.ErrInvalidParams{Context: "IPSetReferenceStatement"}
 10597  	if s.ARN == nil {
 10598  		invalidParams.Add(request.NewErrParamRequired("ARN"))
 10599  	}
 10600  	if s.ARN != nil && len(*s.ARN) < 20 {
 10601  		invalidParams.Add(request.NewErrParamMinLen("ARN", 20))
 10602  	}
 10603  	if s.IPSetForwardedIPConfig != nil {
 10604  		if err := s.IPSetForwardedIPConfig.Validate(); err != nil {
 10605  			invalidParams.AddNested("IPSetForwardedIPConfig", err.(request.ErrInvalidParams))
 10606  		}
 10607  	}
 10608  
 10609  	if invalidParams.Len() > 0 {
 10610  		return invalidParams
 10611  	}
 10612  	return nil
 10613  }
 10614  
 10615  // SetARN sets the ARN field's value.
 10616  func (s *IPSetReferenceStatement) SetARN(v string) *IPSetReferenceStatement {
 10617  	s.ARN = &v
 10618  	return s
 10619  }
 10620  
 10621  // SetIPSetForwardedIPConfig sets the IPSetForwardedIPConfig field's value.
 10622  func (s *IPSetReferenceStatement) SetIPSetForwardedIPConfig(v *IPSetForwardedIPConfig) *IPSetReferenceStatement {
 10623  	s.IPSetForwardedIPConfig = v
 10624  	return s
 10625  }
 10626  
 10627  // High-level information about an IPSet, returned by operations like create
 10628  // and list. This provides information like the ID, that you can use to retrieve
 10629  // and manage an IPSet, and the ARN, that you provide to the IPSetReferenceStatement
 10630  // to use the address set in a Rule.
 10631  type IPSetSummary struct {
 10632  	_ struct{} `type:"structure"`
 10633  
 10634  	// The Amazon Resource Name (ARN) of the entity.
 10635  	ARN *string `min:"20" type:"string"`
 10636  
 10637  	// A description of the IP set that helps with identification.
 10638  	Description *string `min:"1" type:"string"`
 10639  
 10640  	// A unique identifier for the set. This ID is returned in the responses to
 10641  	// create and list commands. You provide it to operations like update and delete.
 10642  	Id *string `min:"1" type:"string"`
 10643  
 10644  	// A token used for optimistic locking. WAF returns a token to your get and
 10645  	// list requests, to mark the state of the entity at the time of the request.
 10646  	// To make changes to the entity associated with the token, you provide the
 10647  	// token to operations like update and delete. WAF uses the token to ensure
 10648  	// that no changes have been made to the entity since you last retrieved it.
 10649  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 10650  	// If this happens, perform another get, and use the new token returned by that
 10651  	// operation.
 10652  	LockToken *string `min:"1" type:"string"`
 10653  
 10654  	// The name of the IP set. You cannot change the name of an IPSet after you
 10655  	// create it.
 10656  	Name *string `min:"1" type:"string"`
 10657  }
 10658  
 10659  // String returns the string representation.
 10660  //
 10661  // API parameter values that are decorated as "sensitive" in the API will not
 10662  // be included in the string output. The member name will be present, but the
 10663  // value will be replaced with "sensitive".
 10664  func (s IPSetSummary) String() string {
 10665  	return awsutil.Prettify(s)
 10666  }
 10667  
 10668  // GoString returns the string representation.
 10669  //
 10670  // API parameter values that are decorated as "sensitive" in the API will not
 10671  // be included in the string output. The member name will be present, but the
 10672  // value will be replaced with "sensitive".
 10673  func (s IPSetSummary) GoString() string {
 10674  	return s.String()
 10675  }
 10676  
 10677  // SetARN sets the ARN field's value.
 10678  func (s *IPSetSummary) SetARN(v string) *IPSetSummary {
 10679  	s.ARN = &v
 10680  	return s
 10681  }
 10682  
 10683  // SetDescription sets the Description field's value.
 10684  func (s *IPSetSummary) SetDescription(v string) *IPSetSummary {
 10685  	s.Description = &v
 10686  	return s
 10687  }
 10688  
 10689  // SetId sets the Id field's value.
 10690  func (s *IPSetSummary) SetId(v string) *IPSetSummary {
 10691  	s.Id = &v
 10692  	return s
 10693  }
 10694  
 10695  // SetLockToken sets the LockToken field's value.
 10696  func (s *IPSetSummary) SetLockToken(v string) *IPSetSummary {
 10697  	s.LockToken = &v
 10698  	return s
 10699  }
 10700  
 10701  // SetName sets the Name field's value.
 10702  func (s *IPSetSummary) SetName(v string) *IPSetSummary {
 10703  	s.Name = &v
 10704  	return s
 10705  }
 10706  
 10707  // The body of a web request, inspected as JSON. The body immediately follows
 10708  // the request headers. This is used in the FieldToMatch specification.
 10709  //
 10710  // Use the specifications in this object to indicate which parts of the JSON
 10711  // body to inspect using the rule's inspection criteria. WAF inspects only the
 10712  // parts of the JSON that result from the matches that you indicate.
 10713  //
 10714  // Example JSON: "JsonBody": { "MatchPattern": { "All": {} }, "MatchScope":
 10715  // "ALL" }
 10716  type JsonBody struct {
 10717  	_ struct{} `type:"structure"`
 10718  
 10719  	// What WAF should do if it fails to completely parse the JSON body. The options
 10720  	// are the following:
 10721  	//
 10722  	//    * EVALUATE_AS_STRING - Inspect the body as plain text. WAF applies the
 10723  	//    text transformations and inspection criteria that you defined for the
 10724  	//    JSON inspection to the body text string.
 10725  	//
 10726  	//    * MATCH - Treat the web request as matching the rule statement. WAF applies
 10727  	//    the rule action to the request.
 10728  	//
 10729  	//    * NO_MATCH - Treat the web request as not matching the rule statement.
 10730  	//
 10731  	// If you don't provide this setting, WAF parses and evaluates the content only
 10732  	// up to the first parsing failure that it encounters.
 10733  	//
 10734  	// WAF does its best to parse the entire JSON body, but might be forced to stop
 10735  	// for reasons such as invalid characters, duplicate keys, truncation, and any
 10736  	// content whose root node isn't an object or an array.
 10737  	//
 10738  	// WAF parses the JSON in the following examples as two valid key, value pairs:
 10739  	//
 10740  	//    * Missing comma: {"key1":"value1""key2":"value2"}
 10741  	//
 10742  	//    * Missing colon: {"key1":"value1","key2""value2"}
 10743  	//
 10744  	//    * Extra colons: {"key1"::"value1","key2""value2"}
 10745  	InvalidFallbackBehavior *string `type:"string" enum:"BodyParsingFallbackBehavior"`
 10746  
 10747  	// The patterns to look for in the JSON body. WAF inspects the results of these
 10748  	// pattern matches against the rule inspection criteria.
 10749  	//
 10750  	// MatchPattern is a required field
 10751  	MatchPattern *JsonMatchPattern `type:"structure" required:"true"`
 10752  
 10753  	// The parts of the JSON to match against using the MatchPattern. If you specify
 10754  	// All, WAF matches against keys and values.
 10755  	//
 10756  	// MatchScope is a required field
 10757  	MatchScope *string `type:"string" required:"true" enum:"JsonMatchScope"`
 10758  }
 10759  
 10760  // String returns the string representation.
 10761  //
 10762  // API parameter values that are decorated as "sensitive" in the API will not
 10763  // be included in the string output. The member name will be present, but the
 10764  // value will be replaced with "sensitive".
 10765  func (s JsonBody) String() string {
 10766  	return awsutil.Prettify(s)
 10767  }
 10768  
 10769  // GoString returns the string representation.
 10770  //
 10771  // API parameter values that are decorated as "sensitive" in the API will not
 10772  // be included in the string output. The member name will be present, but the
 10773  // value will be replaced with "sensitive".
 10774  func (s JsonBody) GoString() string {
 10775  	return s.String()
 10776  }
 10777  
 10778  // Validate inspects the fields of the type to determine if they are valid.
 10779  func (s *JsonBody) Validate() error {
 10780  	invalidParams := request.ErrInvalidParams{Context: "JsonBody"}
 10781  	if s.MatchPattern == nil {
 10782  		invalidParams.Add(request.NewErrParamRequired("MatchPattern"))
 10783  	}
 10784  	if s.MatchScope == nil {
 10785  		invalidParams.Add(request.NewErrParamRequired("MatchScope"))
 10786  	}
 10787  	if s.MatchPattern != nil {
 10788  		if err := s.MatchPattern.Validate(); err != nil {
 10789  			invalidParams.AddNested("MatchPattern", err.(request.ErrInvalidParams))
 10790  		}
 10791  	}
 10792  
 10793  	if invalidParams.Len() > 0 {
 10794  		return invalidParams
 10795  	}
 10796  	return nil
 10797  }
 10798  
 10799  // SetInvalidFallbackBehavior sets the InvalidFallbackBehavior field's value.
 10800  func (s *JsonBody) SetInvalidFallbackBehavior(v string) *JsonBody {
 10801  	s.InvalidFallbackBehavior = &v
 10802  	return s
 10803  }
 10804  
 10805  // SetMatchPattern sets the MatchPattern field's value.
 10806  func (s *JsonBody) SetMatchPattern(v *JsonMatchPattern) *JsonBody {
 10807  	s.MatchPattern = v
 10808  	return s
 10809  }
 10810  
 10811  // SetMatchScope sets the MatchScope field's value.
 10812  func (s *JsonBody) SetMatchScope(v string) *JsonBody {
 10813  	s.MatchScope = &v
 10814  	return s
 10815  }
 10816  
 10817  // The patterns to look for in the JSON body. WAF inspects the results of these
 10818  // pattern matches against the rule inspection criteria. This is used with the
 10819  // FieldToMatch option JsonBody.
 10820  type JsonMatchPattern struct {
 10821  	_ struct{} `type:"structure"`
 10822  
 10823  	// Match all of the elements. See also MatchScope in JsonBody.
 10824  	//
 10825  	// You must specify either this setting or the IncludedPaths setting, but not
 10826  	// both.
 10827  	All *All `type:"structure"`
 10828  
 10829  	// Match only the specified include paths. See also MatchScope in JsonBody.
 10830  	//
 10831  	// Provide the include paths using JSON Pointer syntax. For example, "IncludedPaths":
 10832  	// ["/dogs/0/name", "/dogs/1/name"]. For information about this syntax, see
 10833  	// the Internet Engineering Task Force (IETF) documentation JavaScript Object
 10834  	// Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901).
 10835  	//
 10836  	// You must specify either this setting or the All setting, but not both.
 10837  	//
 10838  	// Don't use this option to include all paths. Instead, use the All setting.
 10839  	IncludedPaths []*string `min:"1" type:"list"`
 10840  }
 10841  
 10842  // String returns the string representation.
 10843  //
 10844  // API parameter values that are decorated as "sensitive" in the API will not
 10845  // be included in the string output. The member name will be present, but the
 10846  // value will be replaced with "sensitive".
 10847  func (s JsonMatchPattern) String() string {
 10848  	return awsutil.Prettify(s)
 10849  }
 10850  
 10851  // GoString returns the string representation.
 10852  //
 10853  // API parameter values that are decorated as "sensitive" in the API will not
 10854  // be included in the string output. The member name will be present, but the
 10855  // value will be replaced with "sensitive".
 10856  func (s JsonMatchPattern) GoString() string {
 10857  	return s.String()
 10858  }
 10859  
 10860  // Validate inspects the fields of the type to determine if they are valid.
 10861  func (s *JsonMatchPattern) Validate() error {
 10862  	invalidParams := request.ErrInvalidParams{Context: "JsonMatchPattern"}
 10863  	if s.IncludedPaths != nil && len(s.IncludedPaths) < 1 {
 10864  		invalidParams.Add(request.NewErrParamMinLen("IncludedPaths", 1))
 10865  	}
 10866  
 10867  	if invalidParams.Len() > 0 {
 10868  		return invalidParams
 10869  	}
 10870  	return nil
 10871  }
 10872  
 10873  // SetAll sets the All field's value.
 10874  func (s *JsonMatchPattern) SetAll(v *All) *JsonMatchPattern {
 10875  	s.All = v
 10876  	return s
 10877  }
 10878  
 10879  // SetIncludedPaths sets the IncludedPaths field's value.
 10880  func (s *JsonMatchPattern) SetIncludedPaths(v []*string) *JsonMatchPattern {
 10881  	s.IncludedPaths = v
 10882  	return s
 10883  }
 10884  
 10885  // A single label container. This is used as an element of a label array in
 10886  // multiple contexts, for example, in RuleLabels inside a Rule and in Labels
 10887  // inside a SampledHTTPRequest.
 10888  type Label struct {
 10889  	_ struct{} `type:"structure"`
 10890  
 10891  	// The label string.
 10892  	//
 10893  	// Name is a required field
 10894  	Name *string `min:"1" type:"string" required:"true"`
 10895  }
 10896  
 10897  // String returns the string representation.
 10898  //
 10899  // API parameter values that are decorated as "sensitive" in the API will not
 10900  // be included in the string output. The member name will be present, but the
 10901  // value will be replaced with "sensitive".
 10902  func (s Label) String() string {
 10903  	return awsutil.Prettify(s)
 10904  }
 10905  
 10906  // GoString returns the string representation.
 10907  //
 10908  // API parameter values that are decorated as "sensitive" in the API will not
 10909  // be included in the string output. The member name will be present, but the
 10910  // value will be replaced with "sensitive".
 10911  func (s Label) GoString() string {
 10912  	return s.String()
 10913  }
 10914  
 10915  // Validate inspects the fields of the type to determine if they are valid.
 10916  func (s *Label) Validate() error {
 10917  	invalidParams := request.ErrInvalidParams{Context: "Label"}
 10918  	if s.Name == nil {
 10919  		invalidParams.Add(request.NewErrParamRequired("Name"))
 10920  	}
 10921  	if s.Name != nil && len(*s.Name) < 1 {
 10922  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 10923  	}
 10924  
 10925  	if invalidParams.Len() > 0 {
 10926  		return invalidParams
 10927  	}
 10928  	return nil
 10929  }
 10930  
 10931  // SetName sets the Name field's value.
 10932  func (s *Label) SetName(v string) *Label {
 10933  	s.Name = &v
 10934  	return s
 10935  }
 10936  
 10937  // A rule statement that defines a string match search against labels that have
 10938  // been added to the web request by rules that have already run in the web ACL.
 10939  //
 10940  // The label match statement provides the label or namespace string to search
 10941  // for. The label string can represent a part or all of the fully qualified
 10942  // label name that had been added to the web request. Fully qualified labels
 10943  // have a prefix, optional namespaces, and label name. The prefix identifies
 10944  // the rule group or web ACL context of the rule that added the label. If you
 10945  // do not provide the fully qualified name in your label match string, WAF performs
 10946  // the search for labels that were added in the same context as the label match
 10947  // statement.
 10948  type LabelMatchStatement struct {
 10949  	_ struct{} `type:"structure"`
 10950  
 10951  	// The string to match against. The setting you provide for this depends on
 10952  	// the match statement's Scope setting:
 10953  	//
 10954  	//    * If the Scope indicates LABEL, then this specification must include the
 10955  	//    name and can include any number of preceding namespace specifications
 10956  	//    and prefix up to providing the fully qualified label name.
 10957  	//
 10958  	//    * If the Scope indicates NAMESPACE, then this specification can include
 10959  	//    any number of contiguous namespace strings, and can include the entire
 10960  	//    label namespace prefix from the rule group or web ACL where the label
 10961  	//    originates.
 10962  	//
 10963  	// Labels are case sensitive and components of a label must be separated by
 10964  	// colon, for example NS1:NS2:name.
 10965  	//
 10966  	// Key is a required field
 10967  	Key *string `min:"1" type:"string" required:"true"`
 10968  
 10969  	// Specify whether you want to match using the label name or just the namespace.
 10970  	//
 10971  	// Scope is a required field
 10972  	Scope *string `type:"string" required:"true" enum:"LabelMatchScope"`
 10973  }
 10974  
 10975  // String returns the string representation.
 10976  //
 10977  // API parameter values that are decorated as "sensitive" in the API will not
 10978  // be included in the string output. The member name will be present, but the
 10979  // value will be replaced with "sensitive".
 10980  func (s LabelMatchStatement) String() string {
 10981  	return awsutil.Prettify(s)
 10982  }
 10983  
 10984  // GoString returns the string representation.
 10985  //
 10986  // API parameter values that are decorated as "sensitive" in the API will not
 10987  // be included in the string output. The member name will be present, but the
 10988  // value will be replaced with "sensitive".
 10989  func (s LabelMatchStatement) GoString() string {
 10990  	return s.String()
 10991  }
 10992  
 10993  // Validate inspects the fields of the type to determine if they are valid.
 10994  func (s *LabelMatchStatement) Validate() error {
 10995  	invalidParams := request.ErrInvalidParams{Context: "LabelMatchStatement"}
 10996  	if s.Key == nil {
 10997  		invalidParams.Add(request.NewErrParamRequired("Key"))
 10998  	}
 10999  	if s.Key != nil && len(*s.Key) < 1 {
 11000  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 11001  	}
 11002  	if s.Scope == nil {
 11003  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 11004  	}
 11005  
 11006  	if invalidParams.Len() > 0 {
 11007  		return invalidParams
 11008  	}
 11009  	return nil
 11010  }
 11011  
 11012  // SetKey sets the Key field's value.
 11013  func (s *LabelMatchStatement) SetKey(v string) *LabelMatchStatement {
 11014  	s.Key = &v
 11015  	return s
 11016  }
 11017  
 11018  // SetScope sets the Scope field's value.
 11019  func (s *LabelMatchStatement) SetScope(v string) *LabelMatchStatement {
 11020  	s.Scope = &v
 11021  	return s
 11022  }
 11023  
 11024  // A single label name condition for a Condition in a logging filter.
 11025  type LabelNameCondition struct {
 11026  	_ struct{} `type:"structure"`
 11027  
 11028  	// The label name that a log record must contain in order to meet the condition.
 11029  	// This must be a fully qualified label name. Fully qualified labels have a
 11030  	// prefix, optional namespaces, and label name. The prefix identifies the rule
 11031  	// group or web ACL context of the rule that added the label.
 11032  	//
 11033  	// LabelName is a required field
 11034  	LabelName *string `min:"1" type:"string" required:"true"`
 11035  }
 11036  
 11037  // String returns the string representation.
 11038  //
 11039  // API parameter values that are decorated as "sensitive" in the API will not
 11040  // be included in the string output. The member name will be present, but the
 11041  // value will be replaced with "sensitive".
 11042  func (s LabelNameCondition) String() string {
 11043  	return awsutil.Prettify(s)
 11044  }
 11045  
 11046  // GoString returns the string representation.
 11047  //
 11048  // API parameter values that are decorated as "sensitive" in the API will not
 11049  // be included in the string output. The member name will be present, but the
 11050  // value will be replaced with "sensitive".
 11051  func (s LabelNameCondition) GoString() string {
 11052  	return s.String()
 11053  }
 11054  
 11055  // Validate inspects the fields of the type to determine if they are valid.
 11056  func (s *LabelNameCondition) Validate() error {
 11057  	invalidParams := request.ErrInvalidParams{Context: "LabelNameCondition"}
 11058  	if s.LabelName == nil {
 11059  		invalidParams.Add(request.NewErrParamRequired("LabelName"))
 11060  	}
 11061  	if s.LabelName != nil && len(*s.LabelName) < 1 {
 11062  		invalidParams.Add(request.NewErrParamMinLen("LabelName", 1))
 11063  	}
 11064  
 11065  	if invalidParams.Len() > 0 {
 11066  		return invalidParams
 11067  	}
 11068  	return nil
 11069  }
 11070  
 11071  // SetLabelName sets the LabelName field's value.
 11072  func (s *LabelNameCondition) SetLabelName(v string) *LabelNameCondition {
 11073  	s.LabelName = &v
 11074  	return s
 11075  }
 11076  
 11077  // List of labels used by one or more of the rules of a RuleGroup. This summary
 11078  // object is used for the following rule group lists:
 11079  //
 11080  //    * AvailableLabels - Labels that rules add to matching requests. These
 11081  //    labels are defined in the RuleLabels for a Rule.
 11082  //
 11083  //    * ConsumedLabels - Labels that rules match against. These labels are defined
 11084  //    in a LabelMatchStatement specification, in the Statement definition of
 11085  //    a rule.
 11086  type LabelSummary struct {
 11087  	_ struct{} `type:"structure"`
 11088  
 11089  	// An individual label specification.
 11090  	Name *string `min:"1" type:"string"`
 11091  }
 11092  
 11093  // String returns the string representation.
 11094  //
 11095  // API parameter values that are decorated as "sensitive" in the API will not
 11096  // be included in the string output. The member name will be present, but the
 11097  // value will be replaced with "sensitive".
 11098  func (s LabelSummary) String() string {
 11099  	return awsutil.Prettify(s)
 11100  }
 11101  
 11102  // GoString returns the string representation.
 11103  //
 11104  // API parameter values that are decorated as "sensitive" in the API will not
 11105  // be included in the string output. The member name will be present, but the
 11106  // value will be replaced with "sensitive".
 11107  func (s LabelSummary) GoString() string {
 11108  	return s.String()
 11109  }
 11110  
 11111  // SetName sets the Name field's value.
 11112  func (s *LabelSummary) SetName(v string) *LabelSummary {
 11113  	s.Name = &v
 11114  	return s
 11115  }
 11116  
 11117  type ListAvailableManagedRuleGroupVersionsInput struct {
 11118  	_ struct{} `type:"structure"`
 11119  
 11120  	// The maximum number of objects that you want WAF to return for this request.
 11121  	// If more objects are available, in the response, WAF provides a NextMarker
 11122  	// value that you can use in a subsequent call to get the next batch of objects.
 11123  	Limit *int64 `min:"1" type:"integer"`
 11124  
 11125  	// The name of the managed rule group. You use this, along with the vendor name,
 11126  	// to identify the rule group.
 11127  	//
 11128  	// Name is a required field
 11129  	Name *string `min:"1" type:"string" required:"true"`
 11130  
 11131  	// When you request a list of objects with a Limit setting, if the number of
 11132  	// objects that are still available for retrieval exceeds the limit, WAF returns
 11133  	// a NextMarker value in the response. To retrieve the next batch of objects,
 11134  	// provide the marker from the prior call in your next request.
 11135  	NextMarker *string `min:"1" type:"string"`
 11136  
 11137  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 11138  	// regional application. A regional application can be an Application Load Balancer
 11139  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 11140  	//
 11141  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 11142  	// as follows:
 11143  	//
 11144  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 11145  	//    --region=us-east-1.
 11146  	//
 11147  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 11148  	//
 11149  	// Scope is a required field
 11150  	Scope *string `type:"string" required:"true" enum:"Scope"`
 11151  
 11152  	// The name of the managed rule group vendor. You use this, along with the rule
 11153  	// group name, to identify the rule group.
 11154  	//
 11155  	// VendorName is a required field
 11156  	VendorName *string `min:"1" type:"string" required:"true"`
 11157  }
 11158  
 11159  // String returns the string representation.
 11160  //
 11161  // API parameter values that are decorated as "sensitive" in the API will not
 11162  // be included in the string output. The member name will be present, but the
 11163  // value will be replaced with "sensitive".
 11164  func (s ListAvailableManagedRuleGroupVersionsInput) String() string {
 11165  	return awsutil.Prettify(s)
 11166  }
 11167  
 11168  // GoString returns the string representation.
 11169  //
 11170  // API parameter values that are decorated as "sensitive" in the API will not
 11171  // be included in the string output. The member name will be present, but the
 11172  // value will be replaced with "sensitive".
 11173  func (s ListAvailableManagedRuleGroupVersionsInput) GoString() string {
 11174  	return s.String()
 11175  }
 11176  
 11177  // Validate inspects the fields of the type to determine if they are valid.
 11178  func (s *ListAvailableManagedRuleGroupVersionsInput) Validate() error {
 11179  	invalidParams := request.ErrInvalidParams{Context: "ListAvailableManagedRuleGroupVersionsInput"}
 11180  	if s.Limit != nil && *s.Limit < 1 {
 11181  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 11182  	}
 11183  	if s.Name == nil {
 11184  		invalidParams.Add(request.NewErrParamRequired("Name"))
 11185  	}
 11186  	if s.Name != nil && len(*s.Name) < 1 {
 11187  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 11188  	}
 11189  	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
 11190  		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
 11191  	}
 11192  	if s.Scope == nil {
 11193  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 11194  	}
 11195  	if s.VendorName == nil {
 11196  		invalidParams.Add(request.NewErrParamRequired("VendorName"))
 11197  	}
 11198  	if s.VendorName != nil && len(*s.VendorName) < 1 {
 11199  		invalidParams.Add(request.NewErrParamMinLen("VendorName", 1))
 11200  	}
 11201  
 11202  	if invalidParams.Len() > 0 {
 11203  		return invalidParams
 11204  	}
 11205  	return nil
 11206  }
 11207  
 11208  // SetLimit sets the Limit field's value.
 11209  func (s *ListAvailableManagedRuleGroupVersionsInput) SetLimit(v int64) *ListAvailableManagedRuleGroupVersionsInput {
 11210  	s.Limit = &v
 11211  	return s
 11212  }
 11213  
 11214  // SetName sets the Name field's value.
 11215  func (s *ListAvailableManagedRuleGroupVersionsInput) SetName(v string) *ListAvailableManagedRuleGroupVersionsInput {
 11216  	s.Name = &v
 11217  	return s
 11218  }
 11219  
 11220  // SetNextMarker sets the NextMarker field's value.
 11221  func (s *ListAvailableManagedRuleGroupVersionsInput) SetNextMarker(v string) *ListAvailableManagedRuleGroupVersionsInput {
 11222  	s.NextMarker = &v
 11223  	return s
 11224  }
 11225  
 11226  // SetScope sets the Scope field's value.
 11227  func (s *ListAvailableManagedRuleGroupVersionsInput) SetScope(v string) *ListAvailableManagedRuleGroupVersionsInput {
 11228  	s.Scope = &v
 11229  	return s
 11230  }
 11231  
 11232  // SetVendorName sets the VendorName field's value.
 11233  func (s *ListAvailableManagedRuleGroupVersionsInput) SetVendorName(v string) *ListAvailableManagedRuleGroupVersionsInput {
 11234  	s.VendorName = &v
 11235  	return s
 11236  }
 11237  
 11238  type ListAvailableManagedRuleGroupVersionsOutput struct {
 11239  	_ struct{} `type:"structure"`
 11240  
 11241  	// When you request a list of objects with a Limit setting, if the number of
 11242  	// objects that are still available for retrieval exceeds the limit, WAF returns
 11243  	// a NextMarker value in the response. To retrieve the next batch of objects,
 11244  	// provide the marker from the prior call in your next request.
 11245  	NextMarker *string `min:"1" type:"string"`
 11246  
 11247  	// The versions that are currently available for the specified managed rule
 11248  	// group.
 11249  	Versions []*ManagedRuleGroupVersion `type:"list"`
 11250  }
 11251  
 11252  // String returns the string representation.
 11253  //
 11254  // API parameter values that are decorated as "sensitive" in the API will not
 11255  // be included in the string output. The member name will be present, but the
 11256  // value will be replaced with "sensitive".
 11257  func (s ListAvailableManagedRuleGroupVersionsOutput) String() string {
 11258  	return awsutil.Prettify(s)
 11259  }
 11260  
 11261  // GoString returns the string representation.
 11262  //
 11263  // API parameter values that are decorated as "sensitive" in the API will not
 11264  // be included in the string output. The member name will be present, but the
 11265  // value will be replaced with "sensitive".
 11266  func (s ListAvailableManagedRuleGroupVersionsOutput) GoString() string {
 11267  	return s.String()
 11268  }
 11269  
 11270  // SetNextMarker sets the NextMarker field's value.
 11271  func (s *ListAvailableManagedRuleGroupVersionsOutput) SetNextMarker(v string) *ListAvailableManagedRuleGroupVersionsOutput {
 11272  	s.NextMarker = &v
 11273  	return s
 11274  }
 11275  
 11276  // SetVersions sets the Versions field's value.
 11277  func (s *ListAvailableManagedRuleGroupVersionsOutput) SetVersions(v []*ManagedRuleGroupVersion) *ListAvailableManagedRuleGroupVersionsOutput {
 11278  	s.Versions = v
 11279  	return s
 11280  }
 11281  
 11282  type ListAvailableManagedRuleGroupsInput struct {
 11283  	_ struct{} `type:"structure"`
 11284  
 11285  	// The maximum number of objects that you want WAF to return for this request.
 11286  	// If more objects are available, in the response, WAF provides a NextMarker
 11287  	// value that you can use in a subsequent call to get the next batch of objects.
 11288  	Limit *int64 `min:"1" type:"integer"`
 11289  
 11290  	// When you request a list of objects with a Limit setting, if the number of
 11291  	// objects that are still available for retrieval exceeds the limit, WAF returns
 11292  	// a NextMarker value in the response. To retrieve the next batch of objects,
 11293  	// provide the marker from the prior call in your next request.
 11294  	NextMarker *string `min:"1" type:"string"`
 11295  
 11296  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 11297  	// regional application. A regional application can be an Application Load Balancer
 11298  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 11299  	//
 11300  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 11301  	// as follows:
 11302  	//
 11303  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 11304  	//    --region=us-east-1.
 11305  	//
 11306  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 11307  	//
 11308  	// Scope is a required field
 11309  	Scope *string `type:"string" required:"true" enum:"Scope"`
 11310  }
 11311  
 11312  // String returns the string representation.
 11313  //
 11314  // API parameter values that are decorated as "sensitive" in the API will not
 11315  // be included in the string output. The member name will be present, but the
 11316  // value will be replaced with "sensitive".
 11317  func (s ListAvailableManagedRuleGroupsInput) String() string {
 11318  	return awsutil.Prettify(s)
 11319  }
 11320  
 11321  // GoString returns the string representation.
 11322  //
 11323  // API parameter values that are decorated as "sensitive" in the API will not
 11324  // be included in the string output. The member name will be present, but the
 11325  // value will be replaced with "sensitive".
 11326  func (s ListAvailableManagedRuleGroupsInput) GoString() string {
 11327  	return s.String()
 11328  }
 11329  
 11330  // Validate inspects the fields of the type to determine if they are valid.
 11331  func (s *ListAvailableManagedRuleGroupsInput) Validate() error {
 11332  	invalidParams := request.ErrInvalidParams{Context: "ListAvailableManagedRuleGroupsInput"}
 11333  	if s.Limit != nil && *s.Limit < 1 {
 11334  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 11335  	}
 11336  	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
 11337  		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
 11338  	}
 11339  	if s.Scope == nil {
 11340  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 11341  	}
 11342  
 11343  	if invalidParams.Len() > 0 {
 11344  		return invalidParams
 11345  	}
 11346  	return nil
 11347  }
 11348  
 11349  // SetLimit sets the Limit field's value.
 11350  func (s *ListAvailableManagedRuleGroupsInput) SetLimit(v int64) *ListAvailableManagedRuleGroupsInput {
 11351  	s.Limit = &v
 11352  	return s
 11353  }
 11354  
 11355  // SetNextMarker sets the NextMarker field's value.
 11356  func (s *ListAvailableManagedRuleGroupsInput) SetNextMarker(v string) *ListAvailableManagedRuleGroupsInput {
 11357  	s.NextMarker = &v
 11358  	return s
 11359  }
 11360  
 11361  // SetScope sets the Scope field's value.
 11362  func (s *ListAvailableManagedRuleGroupsInput) SetScope(v string) *ListAvailableManagedRuleGroupsInput {
 11363  	s.Scope = &v
 11364  	return s
 11365  }
 11366  
 11367  type ListAvailableManagedRuleGroupsOutput struct {
 11368  	_ struct{} `type:"structure"`
 11369  
 11370  	ManagedRuleGroups []*ManagedRuleGroupSummary `type:"list"`
 11371  
 11372  	// When you request a list of objects with a Limit setting, if the number of
 11373  	// objects that are still available for retrieval exceeds the limit, WAF returns
 11374  	// a NextMarker value in the response. To retrieve the next batch of objects,
 11375  	// provide the marker from the prior call in your next request.
 11376  	NextMarker *string `min:"1" type:"string"`
 11377  }
 11378  
 11379  // String returns the string representation.
 11380  //
 11381  // API parameter values that are decorated as "sensitive" in the API will not
 11382  // be included in the string output. The member name will be present, but the
 11383  // value will be replaced with "sensitive".
 11384  func (s ListAvailableManagedRuleGroupsOutput) String() string {
 11385  	return awsutil.Prettify(s)
 11386  }
 11387  
 11388  // GoString returns the string representation.
 11389  //
 11390  // API parameter values that are decorated as "sensitive" in the API will not
 11391  // be included in the string output. The member name will be present, but the
 11392  // value will be replaced with "sensitive".
 11393  func (s ListAvailableManagedRuleGroupsOutput) GoString() string {
 11394  	return s.String()
 11395  }
 11396  
 11397  // SetManagedRuleGroups sets the ManagedRuleGroups field's value.
 11398  func (s *ListAvailableManagedRuleGroupsOutput) SetManagedRuleGroups(v []*ManagedRuleGroupSummary) *ListAvailableManagedRuleGroupsOutput {
 11399  	s.ManagedRuleGroups = v
 11400  	return s
 11401  }
 11402  
 11403  // SetNextMarker sets the NextMarker field's value.
 11404  func (s *ListAvailableManagedRuleGroupsOutput) SetNextMarker(v string) *ListAvailableManagedRuleGroupsOutput {
 11405  	s.NextMarker = &v
 11406  	return s
 11407  }
 11408  
 11409  type ListIPSetsInput struct {
 11410  	_ struct{} `type:"structure"`
 11411  
 11412  	// The maximum number of objects that you want WAF to return for this request.
 11413  	// If more objects are available, in the response, WAF provides a NextMarker
 11414  	// value that you can use in a subsequent call to get the next batch of objects.
 11415  	Limit *int64 `min:"1" type:"integer"`
 11416  
 11417  	// When you request a list of objects with a Limit setting, if the number of
 11418  	// objects that are still available for retrieval exceeds the limit, WAF returns
 11419  	// a NextMarker value in the response. To retrieve the next batch of objects,
 11420  	// provide the marker from the prior call in your next request.
 11421  	NextMarker *string `min:"1" type:"string"`
 11422  
 11423  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 11424  	// regional application. A regional application can be an Application Load Balancer
 11425  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 11426  	//
 11427  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 11428  	// as follows:
 11429  	//
 11430  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 11431  	//    --region=us-east-1.
 11432  	//
 11433  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 11434  	//
 11435  	// Scope is a required field
 11436  	Scope *string `type:"string" required:"true" enum:"Scope"`
 11437  }
 11438  
 11439  // String returns the string representation.
 11440  //
 11441  // API parameter values that are decorated as "sensitive" in the API will not
 11442  // be included in the string output. The member name will be present, but the
 11443  // value will be replaced with "sensitive".
 11444  func (s ListIPSetsInput) String() string {
 11445  	return awsutil.Prettify(s)
 11446  }
 11447  
 11448  // GoString returns the string representation.
 11449  //
 11450  // API parameter values that are decorated as "sensitive" in the API will not
 11451  // be included in the string output. The member name will be present, but the
 11452  // value will be replaced with "sensitive".
 11453  func (s ListIPSetsInput) GoString() string {
 11454  	return s.String()
 11455  }
 11456  
 11457  // Validate inspects the fields of the type to determine if they are valid.
 11458  func (s *ListIPSetsInput) Validate() error {
 11459  	invalidParams := request.ErrInvalidParams{Context: "ListIPSetsInput"}
 11460  	if s.Limit != nil && *s.Limit < 1 {
 11461  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 11462  	}
 11463  	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
 11464  		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
 11465  	}
 11466  	if s.Scope == nil {
 11467  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 11468  	}
 11469  
 11470  	if invalidParams.Len() > 0 {
 11471  		return invalidParams
 11472  	}
 11473  	return nil
 11474  }
 11475  
 11476  // SetLimit sets the Limit field's value.
 11477  func (s *ListIPSetsInput) SetLimit(v int64) *ListIPSetsInput {
 11478  	s.Limit = &v
 11479  	return s
 11480  }
 11481  
 11482  // SetNextMarker sets the NextMarker field's value.
 11483  func (s *ListIPSetsInput) SetNextMarker(v string) *ListIPSetsInput {
 11484  	s.NextMarker = &v
 11485  	return s
 11486  }
 11487  
 11488  // SetScope sets the Scope field's value.
 11489  func (s *ListIPSetsInput) SetScope(v string) *ListIPSetsInput {
 11490  	s.Scope = &v
 11491  	return s
 11492  }
 11493  
 11494  type ListIPSetsOutput struct {
 11495  	_ struct{} `type:"structure"`
 11496  
 11497  	// Array of IPSets. This may not be the full list of IPSets that you have defined.
 11498  	// See the Limit specification for this request.
 11499  	IPSets []*IPSetSummary `type:"list"`
 11500  
 11501  	// When you request a list of objects with a Limit setting, if the number of
 11502  	// objects that are still available for retrieval exceeds the limit, WAF returns
 11503  	// a NextMarker value in the response. To retrieve the next batch of objects,
 11504  	// provide the marker from the prior call in your next request.
 11505  	NextMarker *string `min:"1" type:"string"`
 11506  }
 11507  
 11508  // String returns the string representation.
 11509  //
 11510  // API parameter values that are decorated as "sensitive" in the API will not
 11511  // be included in the string output. The member name will be present, but the
 11512  // value will be replaced with "sensitive".
 11513  func (s ListIPSetsOutput) String() string {
 11514  	return awsutil.Prettify(s)
 11515  }
 11516  
 11517  // GoString returns the string representation.
 11518  //
 11519  // API parameter values that are decorated as "sensitive" in the API will not
 11520  // be included in the string output. The member name will be present, but the
 11521  // value will be replaced with "sensitive".
 11522  func (s ListIPSetsOutput) GoString() string {
 11523  	return s.String()
 11524  }
 11525  
 11526  // SetIPSets sets the IPSets field's value.
 11527  func (s *ListIPSetsOutput) SetIPSets(v []*IPSetSummary) *ListIPSetsOutput {
 11528  	s.IPSets = v
 11529  	return s
 11530  }
 11531  
 11532  // SetNextMarker sets the NextMarker field's value.
 11533  func (s *ListIPSetsOutput) SetNextMarker(v string) *ListIPSetsOutput {
 11534  	s.NextMarker = &v
 11535  	return s
 11536  }
 11537  
 11538  type ListLoggingConfigurationsInput struct {
 11539  	_ struct{} `type:"structure"`
 11540  
 11541  	// The maximum number of objects that you want WAF to return for this request.
 11542  	// If more objects are available, in the response, WAF provides a NextMarker
 11543  	// value that you can use in a subsequent call to get the next batch of objects.
 11544  	Limit *int64 `min:"1" type:"integer"`
 11545  
 11546  	// When you request a list of objects with a Limit setting, if the number of
 11547  	// objects that are still available for retrieval exceeds the limit, WAF returns
 11548  	// a NextMarker value in the response. To retrieve the next batch of objects,
 11549  	// provide the marker from the prior call in your next request.
 11550  	NextMarker *string `min:"1" type:"string"`
 11551  
 11552  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 11553  	// regional application. A regional application can be an Application Load Balancer
 11554  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 11555  	//
 11556  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 11557  	// as follows:
 11558  	//
 11559  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 11560  	//    --region=us-east-1.
 11561  	//
 11562  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 11563  	Scope *string `type:"string" enum:"Scope"`
 11564  }
 11565  
 11566  // String returns the string representation.
 11567  //
 11568  // API parameter values that are decorated as "sensitive" in the API will not
 11569  // be included in the string output. The member name will be present, but the
 11570  // value will be replaced with "sensitive".
 11571  func (s ListLoggingConfigurationsInput) String() string {
 11572  	return awsutil.Prettify(s)
 11573  }
 11574  
 11575  // GoString returns the string representation.
 11576  //
 11577  // API parameter values that are decorated as "sensitive" in the API will not
 11578  // be included in the string output. The member name will be present, but the
 11579  // value will be replaced with "sensitive".
 11580  func (s ListLoggingConfigurationsInput) GoString() string {
 11581  	return s.String()
 11582  }
 11583  
 11584  // Validate inspects the fields of the type to determine if they are valid.
 11585  func (s *ListLoggingConfigurationsInput) Validate() error {
 11586  	invalidParams := request.ErrInvalidParams{Context: "ListLoggingConfigurationsInput"}
 11587  	if s.Limit != nil && *s.Limit < 1 {
 11588  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 11589  	}
 11590  	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
 11591  		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
 11592  	}
 11593  
 11594  	if invalidParams.Len() > 0 {
 11595  		return invalidParams
 11596  	}
 11597  	return nil
 11598  }
 11599  
 11600  // SetLimit sets the Limit field's value.
 11601  func (s *ListLoggingConfigurationsInput) SetLimit(v int64) *ListLoggingConfigurationsInput {
 11602  	s.Limit = &v
 11603  	return s
 11604  }
 11605  
 11606  // SetNextMarker sets the NextMarker field's value.
 11607  func (s *ListLoggingConfigurationsInput) SetNextMarker(v string) *ListLoggingConfigurationsInput {
 11608  	s.NextMarker = &v
 11609  	return s
 11610  }
 11611  
 11612  // SetScope sets the Scope field's value.
 11613  func (s *ListLoggingConfigurationsInput) SetScope(v string) *ListLoggingConfigurationsInput {
 11614  	s.Scope = &v
 11615  	return s
 11616  }
 11617  
 11618  type ListLoggingConfigurationsOutput struct {
 11619  	_ struct{} `type:"structure"`
 11620  
 11621  	LoggingConfigurations []*LoggingConfiguration `type:"list"`
 11622  
 11623  	// When you request a list of objects with a Limit setting, if the number of
 11624  	// objects that are still available for retrieval exceeds the limit, WAF returns
 11625  	// a NextMarker value in the response. To retrieve the next batch of objects,
 11626  	// provide the marker from the prior call in your next request.
 11627  	NextMarker *string `min:"1" type:"string"`
 11628  }
 11629  
 11630  // String returns the string representation.
 11631  //
 11632  // API parameter values that are decorated as "sensitive" in the API will not
 11633  // be included in the string output. The member name will be present, but the
 11634  // value will be replaced with "sensitive".
 11635  func (s ListLoggingConfigurationsOutput) String() string {
 11636  	return awsutil.Prettify(s)
 11637  }
 11638  
 11639  // GoString returns the string representation.
 11640  //
 11641  // API parameter values that are decorated as "sensitive" in the API will not
 11642  // be included in the string output. The member name will be present, but the
 11643  // value will be replaced with "sensitive".
 11644  func (s ListLoggingConfigurationsOutput) GoString() string {
 11645  	return s.String()
 11646  }
 11647  
 11648  // SetLoggingConfigurations sets the LoggingConfigurations field's value.
 11649  func (s *ListLoggingConfigurationsOutput) SetLoggingConfigurations(v []*LoggingConfiguration) *ListLoggingConfigurationsOutput {
 11650  	s.LoggingConfigurations = v
 11651  	return s
 11652  }
 11653  
 11654  // SetNextMarker sets the NextMarker field's value.
 11655  func (s *ListLoggingConfigurationsOutput) SetNextMarker(v string) *ListLoggingConfigurationsOutput {
 11656  	s.NextMarker = &v
 11657  	return s
 11658  }
 11659  
 11660  type ListManagedRuleSetsInput struct {
 11661  	_ struct{} `type:"structure"`
 11662  
 11663  	// The maximum number of objects that you want WAF to return for this request.
 11664  	// If more objects are available, in the response, WAF provides a NextMarker
 11665  	// value that you can use in a subsequent call to get the next batch of objects.
 11666  	Limit *int64 `min:"1" type:"integer"`
 11667  
 11668  	// When you request a list of objects with a Limit setting, if the number of
 11669  	// objects that are still available for retrieval exceeds the limit, WAF returns
 11670  	// a NextMarker value in the response. To retrieve the next batch of objects,
 11671  	// provide the marker from the prior call in your next request.
 11672  	NextMarker *string `min:"1" type:"string"`
 11673  
 11674  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 11675  	// regional application. A regional application can be an Application Load Balancer
 11676  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 11677  	//
 11678  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 11679  	// as follows:
 11680  	//
 11681  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 11682  	//    --region=us-east-1.
 11683  	//
 11684  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 11685  	//
 11686  	// Scope is a required field
 11687  	Scope *string `type:"string" required:"true" enum:"Scope"`
 11688  }
 11689  
 11690  // String returns the string representation.
 11691  //
 11692  // API parameter values that are decorated as "sensitive" in the API will not
 11693  // be included in the string output. The member name will be present, but the
 11694  // value will be replaced with "sensitive".
 11695  func (s ListManagedRuleSetsInput) String() string {
 11696  	return awsutil.Prettify(s)
 11697  }
 11698  
 11699  // GoString returns the string representation.
 11700  //
 11701  // API parameter values that are decorated as "sensitive" in the API will not
 11702  // be included in the string output. The member name will be present, but the
 11703  // value will be replaced with "sensitive".
 11704  func (s ListManagedRuleSetsInput) GoString() string {
 11705  	return s.String()
 11706  }
 11707  
 11708  // Validate inspects the fields of the type to determine if they are valid.
 11709  func (s *ListManagedRuleSetsInput) Validate() error {
 11710  	invalidParams := request.ErrInvalidParams{Context: "ListManagedRuleSetsInput"}
 11711  	if s.Limit != nil && *s.Limit < 1 {
 11712  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 11713  	}
 11714  	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
 11715  		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
 11716  	}
 11717  	if s.Scope == nil {
 11718  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 11719  	}
 11720  
 11721  	if invalidParams.Len() > 0 {
 11722  		return invalidParams
 11723  	}
 11724  	return nil
 11725  }
 11726  
 11727  // SetLimit sets the Limit field's value.
 11728  func (s *ListManagedRuleSetsInput) SetLimit(v int64) *ListManagedRuleSetsInput {
 11729  	s.Limit = &v
 11730  	return s
 11731  }
 11732  
 11733  // SetNextMarker sets the NextMarker field's value.
 11734  func (s *ListManagedRuleSetsInput) SetNextMarker(v string) *ListManagedRuleSetsInput {
 11735  	s.NextMarker = &v
 11736  	return s
 11737  }
 11738  
 11739  // SetScope sets the Scope field's value.
 11740  func (s *ListManagedRuleSetsInput) SetScope(v string) *ListManagedRuleSetsInput {
 11741  	s.Scope = &v
 11742  	return s
 11743  }
 11744  
 11745  type ListManagedRuleSetsOutput struct {
 11746  	_ struct{} `type:"structure"`
 11747  
 11748  	// Your managed rule sets.
 11749  	ManagedRuleSets []*ManagedRuleSetSummary `type:"list"`
 11750  
 11751  	// When you request a list of objects with a Limit setting, if the number of
 11752  	// objects that are still available for retrieval exceeds the limit, WAF returns
 11753  	// a NextMarker value in the response. To retrieve the next batch of objects,
 11754  	// provide the marker from the prior call in your next request.
 11755  	NextMarker *string `min:"1" type:"string"`
 11756  }
 11757  
 11758  // String returns the string representation.
 11759  //
 11760  // API parameter values that are decorated as "sensitive" in the API will not
 11761  // be included in the string output. The member name will be present, but the
 11762  // value will be replaced with "sensitive".
 11763  func (s ListManagedRuleSetsOutput) String() string {
 11764  	return awsutil.Prettify(s)
 11765  }
 11766  
 11767  // GoString returns the string representation.
 11768  //
 11769  // API parameter values that are decorated as "sensitive" in the API will not
 11770  // be included in the string output. The member name will be present, but the
 11771  // value will be replaced with "sensitive".
 11772  func (s ListManagedRuleSetsOutput) GoString() string {
 11773  	return s.String()
 11774  }
 11775  
 11776  // SetManagedRuleSets sets the ManagedRuleSets field's value.
 11777  func (s *ListManagedRuleSetsOutput) SetManagedRuleSets(v []*ManagedRuleSetSummary) *ListManagedRuleSetsOutput {
 11778  	s.ManagedRuleSets = v
 11779  	return s
 11780  }
 11781  
 11782  // SetNextMarker sets the NextMarker field's value.
 11783  func (s *ListManagedRuleSetsOutput) SetNextMarker(v string) *ListManagedRuleSetsOutput {
 11784  	s.NextMarker = &v
 11785  	return s
 11786  }
 11787  
 11788  type ListRegexPatternSetsInput struct {
 11789  	_ struct{} `type:"structure"`
 11790  
 11791  	// The maximum number of objects that you want WAF to return for this request.
 11792  	// If more objects are available, in the response, WAF provides a NextMarker
 11793  	// value that you can use in a subsequent call to get the next batch of objects.
 11794  	Limit *int64 `min:"1" type:"integer"`
 11795  
 11796  	// When you request a list of objects with a Limit setting, if the number of
 11797  	// objects that are still available for retrieval exceeds the limit, WAF returns
 11798  	// a NextMarker value in the response. To retrieve the next batch of objects,
 11799  	// provide the marker from the prior call in your next request.
 11800  	NextMarker *string `min:"1" type:"string"`
 11801  
 11802  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 11803  	// regional application. A regional application can be an Application Load Balancer
 11804  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 11805  	//
 11806  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 11807  	// as follows:
 11808  	//
 11809  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 11810  	//    --region=us-east-1.
 11811  	//
 11812  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 11813  	//
 11814  	// Scope is a required field
 11815  	Scope *string `type:"string" required:"true" enum:"Scope"`
 11816  }
 11817  
 11818  // String returns the string representation.
 11819  //
 11820  // API parameter values that are decorated as "sensitive" in the API will not
 11821  // be included in the string output. The member name will be present, but the
 11822  // value will be replaced with "sensitive".
 11823  func (s ListRegexPatternSetsInput) String() string {
 11824  	return awsutil.Prettify(s)
 11825  }
 11826  
 11827  // GoString returns the string representation.
 11828  //
 11829  // API parameter values that are decorated as "sensitive" in the API will not
 11830  // be included in the string output. The member name will be present, but the
 11831  // value will be replaced with "sensitive".
 11832  func (s ListRegexPatternSetsInput) GoString() string {
 11833  	return s.String()
 11834  }
 11835  
 11836  // Validate inspects the fields of the type to determine if they are valid.
 11837  func (s *ListRegexPatternSetsInput) Validate() error {
 11838  	invalidParams := request.ErrInvalidParams{Context: "ListRegexPatternSetsInput"}
 11839  	if s.Limit != nil && *s.Limit < 1 {
 11840  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 11841  	}
 11842  	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
 11843  		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
 11844  	}
 11845  	if s.Scope == nil {
 11846  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 11847  	}
 11848  
 11849  	if invalidParams.Len() > 0 {
 11850  		return invalidParams
 11851  	}
 11852  	return nil
 11853  }
 11854  
 11855  // SetLimit sets the Limit field's value.
 11856  func (s *ListRegexPatternSetsInput) SetLimit(v int64) *ListRegexPatternSetsInput {
 11857  	s.Limit = &v
 11858  	return s
 11859  }
 11860  
 11861  // SetNextMarker sets the NextMarker field's value.
 11862  func (s *ListRegexPatternSetsInput) SetNextMarker(v string) *ListRegexPatternSetsInput {
 11863  	s.NextMarker = &v
 11864  	return s
 11865  }
 11866  
 11867  // SetScope sets the Scope field's value.
 11868  func (s *ListRegexPatternSetsInput) SetScope(v string) *ListRegexPatternSetsInput {
 11869  	s.Scope = &v
 11870  	return s
 11871  }
 11872  
 11873  type ListRegexPatternSetsOutput struct {
 11874  	_ struct{} `type:"structure"`
 11875  
 11876  	// When you request a list of objects with a Limit setting, if the number of
 11877  	// objects that are still available for retrieval exceeds the limit, WAF returns
 11878  	// a NextMarker value in the response. To retrieve the next batch of objects,
 11879  	// provide the marker from the prior call in your next request.
 11880  	NextMarker *string `min:"1" type:"string"`
 11881  
 11882  	RegexPatternSets []*RegexPatternSetSummary `type:"list"`
 11883  }
 11884  
 11885  // String returns the string representation.
 11886  //
 11887  // API parameter values that are decorated as "sensitive" in the API will not
 11888  // be included in the string output. The member name will be present, but the
 11889  // value will be replaced with "sensitive".
 11890  func (s ListRegexPatternSetsOutput) String() string {
 11891  	return awsutil.Prettify(s)
 11892  }
 11893  
 11894  // GoString returns the string representation.
 11895  //
 11896  // API parameter values that are decorated as "sensitive" in the API will not
 11897  // be included in the string output. The member name will be present, but the
 11898  // value will be replaced with "sensitive".
 11899  func (s ListRegexPatternSetsOutput) GoString() string {
 11900  	return s.String()
 11901  }
 11902  
 11903  // SetNextMarker sets the NextMarker field's value.
 11904  func (s *ListRegexPatternSetsOutput) SetNextMarker(v string) *ListRegexPatternSetsOutput {
 11905  	s.NextMarker = &v
 11906  	return s
 11907  }
 11908  
 11909  // SetRegexPatternSets sets the RegexPatternSets field's value.
 11910  func (s *ListRegexPatternSetsOutput) SetRegexPatternSets(v []*RegexPatternSetSummary) *ListRegexPatternSetsOutput {
 11911  	s.RegexPatternSets = v
 11912  	return s
 11913  }
 11914  
 11915  type ListResourcesForWebACLInput struct {
 11916  	_ struct{} `type:"structure"`
 11917  
 11918  	// Used for web ACLs that are scoped for regional applications. A regional application
 11919  	// can be an Application Load Balancer (ALB), an Amazon API Gateway REST API,
 11920  	// or an AppSync GraphQL API.
 11921  	ResourceType *string `type:"string" enum:"ResourceType"`
 11922  
 11923  	// The Amazon Resource Name (ARN) of the web ACL.
 11924  	//
 11925  	// WebACLArn is a required field
 11926  	WebACLArn *string `min:"20" type:"string" required:"true"`
 11927  }
 11928  
 11929  // String returns the string representation.
 11930  //
 11931  // API parameter values that are decorated as "sensitive" in the API will not
 11932  // be included in the string output. The member name will be present, but the
 11933  // value will be replaced with "sensitive".
 11934  func (s ListResourcesForWebACLInput) String() string {
 11935  	return awsutil.Prettify(s)
 11936  }
 11937  
 11938  // GoString returns the string representation.
 11939  //
 11940  // API parameter values that are decorated as "sensitive" in the API will not
 11941  // be included in the string output. The member name will be present, but the
 11942  // value will be replaced with "sensitive".
 11943  func (s ListResourcesForWebACLInput) GoString() string {
 11944  	return s.String()
 11945  }
 11946  
 11947  // Validate inspects the fields of the type to determine if they are valid.
 11948  func (s *ListResourcesForWebACLInput) Validate() error {
 11949  	invalidParams := request.ErrInvalidParams{Context: "ListResourcesForWebACLInput"}
 11950  	if s.WebACLArn == nil {
 11951  		invalidParams.Add(request.NewErrParamRequired("WebACLArn"))
 11952  	}
 11953  	if s.WebACLArn != nil && len(*s.WebACLArn) < 20 {
 11954  		invalidParams.Add(request.NewErrParamMinLen("WebACLArn", 20))
 11955  	}
 11956  
 11957  	if invalidParams.Len() > 0 {
 11958  		return invalidParams
 11959  	}
 11960  	return nil
 11961  }
 11962  
 11963  // SetResourceType sets the ResourceType field's value.
 11964  func (s *ListResourcesForWebACLInput) SetResourceType(v string) *ListResourcesForWebACLInput {
 11965  	s.ResourceType = &v
 11966  	return s
 11967  }
 11968  
 11969  // SetWebACLArn sets the WebACLArn field's value.
 11970  func (s *ListResourcesForWebACLInput) SetWebACLArn(v string) *ListResourcesForWebACLInput {
 11971  	s.WebACLArn = &v
 11972  	return s
 11973  }
 11974  
 11975  type ListResourcesForWebACLOutput struct {
 11976  	_ struct{} `type:"structure"`
 11977  
 11978  	// The array of Amazon Resource Names (ARNs) of the associated resources.
 11979  	ResourceArns []*string `type:"list"`
 11980  }
 11981  
 11982  // String returns the string representation.
 11983  //
 11984  // API parameter values that are decorated as "sensitive" in the API will not
 11985  // be included in the string output. The member name will be present, but the
 11986  // value will be replaced with "sensitive".
 11987  func (s ListResourcesForWebACLOutput) String() string {
 11988  	return awsutil.Prettify(s)
 11989  }
 11990  
 11991  // GoString returns the string representation.
 11992  //
 11993  // API parameter values that are decorated as "sensitive" in the API will not
 11994  // be included in the string output. The member name will be present, but the
 11995  // value will be replaced with "sensitive".
 11996  func (s ListResourcesForWebACLOutput) GoString() string {
 11997  	return s.String()
 11998  }
 11999  
 12000  // SetResourceArns sets the ResourceArns field's value.
 12001  func (s *ListResourcesForWebACLOutput) SetResourceArns(v []*string) *ListResourcesForWebACLOutput {
 12002  	s.ResourceArns = v
 12003  	return s
 12004  }
 12005  
 12006  type ListRuleGroupsInput struct {
 12007  	_ struct{} `type:"structure"`
 12008  
 12009  	// The maximum number of objects that you want WAF to return for this request.
 12010  	// If more objects are available, in the response, WAF provides a NextMarker
 12011  	// value that you can use in a subsequent call to get the next batch of objects.
 12012  	Limit *int64 `min:"1" type:"integer"`
 12013  
 12014  	// When you request a list of objects with a Limit setting, if the number of
 12015  	// objects that are still available for retrieval exceeds the limit, WAF returns
 12016  	// a NextMarker value in the response. To retrieve the next batch of objects,
 12017  	// provide the marker from the prior call in your next request.
 12018  	NextMarker *string `min:"1" type:"string"`
 12019  
 12020  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 12021  	// regional application. A regional application can be an Application Load Balancer
 12022  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 12023  	//
 12024  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 12025  	// as follows:
 12026  	//
 12027  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 12028  	//    --region=us-east-1.
 12029  	//
 12030  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 12031  	//
 12032  	// Scope is a required field
 12033  	Scope *string `type:"string" required:"true" enum:"Scope"`
 12034  }
 12035  
 12036  // String returns the string representation.
 12037  //
 12038  // API parameter values that are decorated as "sensitive" in the API will not
 12039  // be included in the string output. The member name will be present, but the
 12040  // value will be replaced with "sensitive".
 12041  func (s ListRuleGroupsInput) String() string {
 12042  	return awsutil.Prettify(s)
 12043  }
 12044  
 12045  // GoString returns the string representation.
 12046  //
 12047  // API parameter values that are decorated as "sensitive" in the API will not
 12048  // be included in the string output. The member name will be present, but the
 12049  // value will be replaced with "sensitive".
 12050  func (s ListRuleGroupsInput) GoString() string {
 12051  	return s.String()
 12052  }
 12053  
 12054  // Validate inspects the fields of the type to determine if they are valid.
 12055  func (s *ListRuleGroupsInput) Validate() error {
 12056  	invalidParams := request.ErrInvalidParams{Context: "ListRuleGroupsInput"}
 12057  	if s.Limit != nil && *s.Limit < 1 {
 12058  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 12059  	}
 12060  	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
 12061  		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
 12062  	}
 12063  	if s.Scope == nil {
 12064  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 12065  	}
 12066  
 12067  	if invalidParams.Len() > 0 {
 12068  		return invalidParams
 12069  	}
 12070  	return nil
 12071  }
 12072  
 12073  // SetLimit sets the Limit field's value.
 12074  func (s *ListRuleGroupsInput) SetLimit(v int64) *ListRuleGroupsInput {
 12075  	s.Limit = &v
 12076  	return s
 12077  }
 12078  
 12079  // SetNextMarker sets the NextMarker field's value.
 12080  func (s *ListRuleGroupsInput) SetNextMarker(v string) *ListRuleGroupsInput {
 12081  	s.NextMarker = &v
 12082  	return s
 12083  }
 12084  
 12085  // SetScope sets the Scope field's value.
 12086  func (s *ListRuleGroupsInput) SetScope(v string) *ListRuleGroupsInput {
 12087  	s.Scope = &v
 12088  	return s
 12089  }
 12090  
 12091  type ListRuleGroupsOutput struct {
 12092  	_ struct{} `type:"structure"`
 12093  
 12094  	// When you request a list of objects with a Limit setting, if the number of
 12095  	// objects that are still available for retrieval exceeds the limit, WAF returns
 12096  	// a NextMarker value in the response. To retrieve the next batch of objects,
 12097  	// provide the marker from the prior call in your next request.
 12098  	NextMarker *string `min:"1" type:"string"`
 12099  
 12100  	RuleGroups []*RuleGroupSummary `type:"list"`
 12101  }
 12102  
 12103  // String returns the string representation.
 12104  //
 12105  // API parameter values that are decorated as "sensitive" in the API will not
 12106  // be included in the string output. The member name will be present, but the
 12107  // value will be replaced with "sensitive".
 12108  func (s ListRuleGroupsOutput) String() string {
 12109  	return awsutil.Prettify(s)
 12110  }
 12111  
 12112  // GoString returns the string representation.
 12113  //
 12114  // API parameter values that are decorated as "sensitive" in the API will not
 12115  // be included in the string output. The member name will be present, but the
 12116  // value will be replaced with "sensitive".
 12117  func (s ListRuleGroupsOutput) GoString() string {
 12118  	return s.String()
 12119  }
 12120  
 12121  // SetNextMarker sets the NextMarker field's value.
 12122  func (s *ListRuleGroupsOutput) SetNextMarker(v string) *ListRuleGroupsOutput {
 12123  	s.NextMarker = &v
 12124  	return s
 12125  }
 12126  
 12127  // SetRuleGroups sets the RuleGroups field's value.
 12128  func (s *ListRuleGroupsOutput) SetRuleGroups(v []*RuleGroupSummary) *ListRuleGroupsOutput {
 12129  	s.RuleGroups = v
 12130  	return s
 12131  }
 12132  
 12133  type ListTagsForResourceInput struct {
 12134  	_ struct{} `type:"structure"`
 12135  
 12136  	// The maximum number of objects that you want WAF to return for this request.
 12137  	// If more objects are available, in the response, WAF provides a NextMarker
 12138  	// value that you can use in a subsequent call to get the next batch of objects.
 12139  	Limit *int64 `min:"1" type:"integer"`
 12140  
 12141  	// When you request a list of objects with a Limit setting, if the number of
 12142  	// objects that are still available for retrieval exceeds the limit, WAF returns
 12143  	// a NextMarker value in the response. To retrieve the next batch of objects,
 12144  	// provide the marker from the prior call in your next request.
 12145  	NextMarker *string `min:"1" type:"string"`
 12146  
 12147  	// The Amazon Resource Name (ARN) of the resource.
 12148  	//
 12149  	// ResourceARN is a required field
 12150  	ResourceARN *string `min:"20" type:"string" required:"true"`
 12151  }
 12152  
 12153  // String returns the string representation.
 12154  //
 12155  // API parameter values that are decorated as "sensitive" in the API will not
 12156  // be included in the string output. The member name will be present, but the
 12157  // value will be replaced with "sensitive".
 12158  func (s ListTagsForResourceInput) String() string {
 12159  	return awsutil.Prettify(s)
 12160  }
 12161  
 12162  // GoString returns the string representation.
 12163  //
 12164  // API parameter values that are decorated as "sensitive" in the API will not
 12165  // be included in the string output. The member name will be present, but the
 12166  // value will be replaced with "sensitive".
 12167  func (s ListTagsForResourceInput) GoString() string {
 12168  	return s.String()
 12169  }
 12170  
 12171  // Validate inspects the fields of the type to determine if they are valid.
 12172  func (s *ListTagsForResourceInput) Validate() error {
 12173  	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
 12174  	if s.Limit != nil && *s.Limit < 1 {
 12175  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 12176  	}
 12177  	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
 12178  		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
 12179  	}
 12180  	if s.ResourceARN == nil {
 12181  		invalidParams.Add(request.NewErrParamRequired("ResourceARN"))
 12182  	}
 12183  	if s.ResourceARN != nil && len(*s.ResourceARN) < 20 {
 12184  		invalidParams.Add(request.NewErrParamMinLen("ResourceARN", 20))
 12185  	}
 12186  
 12187  	if invalidParams.Len() > 0 {
 12188  		return invalidParams
 12189  	}
 12190  	return nil
 12191  }
 12192  
 12193  // SetLimit sets the Limit field's value.
 12194  func (s *ListTagsForResourceInput) SetLimit(v int64) *ListTagsForResourceInput {
 12195  	s.Limit = &v
 12196  	return s
 12197  }
 12198  
 12199  // SetNextMarker sets the NextMarker field's value.
 12200  func (s *ListTagsForResourceInput) SetNextMarker(v string) *ListTagsForResourceInput {
 12201  	s.NextMarker = &v
 12202  	return s
 12203  }
 12204  
 12205  // SetResourceARN sets the ResourceARN field's value.
 12206  func (s *ListTagsForResourceInput) SetResourceARN(v string) *ListTagsForResourceInput {
 12207  	s.ResourceARN = &v
 12208  	return s
 12209  }
 12210  
 12211  type ListTagsForResourceOutput struct {
 12212  	_ struct{} `type:"structure"`
 12213  
 12214  	// When you request a list of objects with a Limit setting, if the number of
 12215  	// objects that are still available for retrieval exceeds the limit, WAF returns
 12216  	// a NextMarker value in the response. To retrieve the next batch of objects,
 12217  	// provide the marker from the prior call in your next request.
 12218  	NextMarker *string `min:"1" type:"string"`
 12219  
 12220  	// The collection of tagging definitions for the resource.
 12221  	TagInfoForResource *TagInfoForResource `type:"structure"`
 12222  }
 12223  
 12224  // String returns the string representation.
 12225  //
 12226  // API parameter values that are decorated as "sensitive" in the API will not
 12227  // be included in the string output. The member name will be present, but the
 12228  // value will be replaced with "sensitive".
 12229  func (s ListTagsForResourceOutput) String() string {
 12230  	return awsutil.Prettify(s)
 12231  }
 12232  
 12233  // GoString returns the string representation.
 12234  //
 12235  // API parameter values that are decorated as "sensitive" in the API will not
 12236  // be included in the string output. The member name will be present, but the
 12237  // value will be replaced with "sensitive".
 12238  func (s ListTagsForResourceOutput) GoString() string {
 12239  	return s.String()
 12240  }
 12241  
 12242  // SetNextMarker sets the NextMarker field's value.
 12243  func (s *ListTagsForResourceOutput) SetNextMarker(v string) *ListTagsForResourceOutput {
 12244  	s.NextMarker = &v
 12245  	return s
 12246  }
 12247  
 12248  // SetTagInfoForResource sets the TagInfoForResource field's value.
 12249  func (s *ListTagsForResourceOutput) SetTagInfoForResource(v *TagInfoForResource) *ListTagsForResourceOutput {
 12250  	s.TagInfoForResource = v
 12251  	return s
 12252  }
 12253  
 12254  type ListWebACLsInput struct {
 12255  	_ struct{} `type:"structure"`
 12256  
 12257  	// The maximum number of objects that you want WAF to return for this request.
 12258  	// If more objects are available, in the response, WAF provides a NextMarker
 12259  	// value that you can use in a subsequent call to get the next batch of objects.
 12260  	Limit *int64 `min:"1" type:"integer"`
 12261  
 12262  	// When you request a list of objects with a Limit setting, if the number of
 12263  	// objects that are still available for retrieval exceeds the limit, WAF returns
 12264  	// a NextMarker value in the response. To retrieve the next batch of objects,
 12265  	// provide the marker from the prior call in your next request.
 12266  	NextMarker *string `min:"1" type:"string"`
 12267  
 12268  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 12269  	// regional application. A regional application can be an Application Load Balancer
 12270  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 12271  	//
 12272  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 12273  	// as follows:
 12274  	//
 12275  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 12276  	//    --region=us-east-1.
 12277  	//
 12278  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 12279  	//
 12280  	// Scope is a required field
 12281  	Scope *string `type:"string" required:"true" enum:"Scope"`
 12282  }
 12283  
 12284  // String returns the string representation.
 12285  //
 12286  // API parameter values that are decorated as "sensitive" in the API will not
 12287  // be included in the string output. The member name will be present, but the
 12288  // value will be replaced with "sensitive".
 12289  func (s ListWebACLsInput) String() string {
 12290  	return awsutil.Prettify(s)
 12291  }
 12292  
 12293  // GoString returns the string representation.
 12294  //
 12295  // API parameter values that are decorated as "sensitive" in the API will not
 12296  // be included in the string output. The member name will be present, but the
 12297  // value will be replaced with "sensitive".
 12298  func (s ListWebACLsInput) GoString() string {
 12299  	return s.String()
 12300  }
 12301  
 12302  // Validate inspects the fields of the type to determine if they are valid.
 12303  func (s *ListWebACLsInput) Validate() error {
 12304  	invalidParams := request.ErrInvalidParams{Context: "ListWebACLsInput"}
 12305  	if s.Limit != nil && *s.Limit < 1 {
 12306  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 12307  	}
 12308  	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
 12309  		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
 12310  	}
 12311  	if s.Scope == nil {
 12312  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 12313  	}
 12314  
 12315  	if invalidParams.Len() > 0 {
 12316  		return invalidParams
 12317  	}
 12318  	return nil
 12319  }
 12320  
 12321  // SetLimit sets the Limit field's value.
 12322  func (s *ListWebACLsInput) SetLimit(v int64) *ListWebACLsInput {
 12323  	s.Limit = &v
 12324  	return s
 12325  }
 12326  
 12327  // SetNextMarker sets the NextMarker field's value.
 12328  func (s *ListWebACLsInput) SetNextMarker(v string) *ListWebACLsInput {
 12329  	s.NextMarker = &v
 12330  	return s
 12331  }
 12332  
 12333  // SetScope sets the Scope field's value.
 12334  func (s *ListWebACLsInput) SetScope(v string) *ListWebACLsInput {
 12335  	s.Scope = &v
 12336  	return s
 12337  }
 12338  
 12339  type ListWebACLsOutput struct {
 12340  	_ struct{} `type:"structure"`
 12341  
 12342  	// When you request a list of objects with a Limit setting, if the number of
 12343  	// objects that are still available for retrieval exceeds the limit, WAF returns
 12344  	// a NextMarker value in the response. To retrieve the next batch of objects,
 12345  	// provide the marker from the prior call in your next request.
 12346  	NextMarker *string `min:"1" type:"string"`
 12347  
 12348  	WebACLs []*WebACLSummary `type:"list"`
 12349  }
 12350  
 12351  // String returns the string representation.
 12352  //
 12353  // API parameter values that are decorated as "sensitive" in the API will not
 12354  // be included in the string output. The member name will be present, but the
 12355  // value will be replaced with "sensitive".
 12356  func (s ListWebACLsOutput) String() string {
 12357  	return awsutil.Prettify(s)
 12358  }
 12359  
 12360  // GoString returns the string representation.
 12361  //
 12362  // API parameter values that are decorated as "sensitive" in the API will not
 12363  // be included in the string output. The member name will be present, but the
 12364  // value will be replaced with "sensitive".
 12365  func (s ListWebACLsOutput) GoString() string {
 12366  	return s.String()
 12367  }
 12368  
 12369  // SetNextMarker sets the NextMarker field's value.
 12370  func (s *ListWebACLsOutput) SetNextMarker(v string) *ListWebACLsOutput {
 12371  	s.NextMarker = &v
 12372  	return s
 12373  }
 12374  
 12375  // SetWebACLs sets the WebACLs field's value.
 12376  func (s *ListWebACLsOutput) SetWebACLs(v []*WebACLSummary) *ListWebACLsOutput {
 12377  	s.WebACLs = v
 12378  	return s
 12379  }
 12380  
 12381  // Defines an association between Amazon Kinesis Data Firehose destinations
 12382  // and a web ACL resource, for logging from WAF. As part of the association,
 12383  // you can specify parts of the standard logging fields to keep out of the logs
 12384  // and you can specify filters so that you log only a subset of the logging
 12385  // records.
 12386  type LoggingConfiguration struct {
 12387  	_ struct{} `type:"structure"`
 12388  
 12389  	// The Amazon Kinesis Data Firehose Amazon Resource Name (ARNs) that you want
 12390  	// to associate with the web ACL.
 12391  	//
 12392  	// LogDestinationConfigs is a required field
 12393  	LogDestinationConfigs []*string `min:"1" type:"list" required:"true"`
 12394  
 12395  	// Filtering that specifies which web requests are kept in the logs and which
 12396  	// are dropped. You can filter on the rule action and on the web request labels
 12397  	// that were applied by matching rules during web ACL evaluation.
 12398  	LoggingFilter *LoggingFilter `type:"structure"`
 12399  
 12400  	// Indicates whether the logging configuration was created by Firewall Manager,
 12401  	// as part of an WAF policy configuration. If true, only Firewall Manager can
 12402  	// modify or delete the configuration.
 12403  	ManagedByFirewallManager *bool `type:"boolean"`
 12404  
 12405  	// The parts of the request that you want to keep out of the logs. For example,
 12406  	// if you redact the SingleHeader field, the HEADER field in the firehose will
 12407  	// be xxx.
 12408  	//
 12409  	// You can specify only the following fields for redaction: UriPath, QueryString,
 12410  	// SingleHeader, Method, and JsonBody.
 12411  	RedactedFields []*FieldToMatch `type:"list"`
 12412  
 12413  	// The Amazon Resource Name (ARN) of the web ACL that you want to associate
 12414  	// with LogDestinationConfigs.
 12415  	//
 12416  	// ResourceArn is a required field
 12417  	ResourceArn *string `min:"20" type:"string" required:"true"`
 12418  }
 12419  
 12420  // String returns the string representation.
 12421  //
 12422  // API parameter values that are decorated as "sensitive" in the API will not
 12423  // be included in the string output. The member name will be present, but the
 12424  // value will be replaced with "sensitive".
 12425  func (s LoggingConfiguration) String() string {
 12426  	return awsutil.Prettify(s)
 12427  }
 12428  
 12429  // GoString returns the string representation.
 12430  //
 12431  // API parameter values that are decorated as "sensitive" in the API will not
 12432  // be included in the string output. The member name will be present, but the
 12433  // value will be replaced with "sensitive".
 12434  func (s LoggingConfiguration) GoString() string {
 12435  	return s.String()
 12436  }
 12437  
 12438  // Validate inspects the fields of the type to determine if they are valid.
 12439  func (s *LoggingConfiguration) Validate() error {
 12440  	invalidParams := request.ErrInvalidParams{Context: "LoggingConfiguration"}
 12441  	if s.LogDestinationConfigs == nil {
 12442  		invalidParams.Add(request.NewErrParamRequired("LogDestinationConfigs"))
 12443  	}
 12444  	if s.LogDestinationConfigs != nil && len(s.LogDestinationConfigs) < 1 {
 12445  		invalidParams.Add(request.NewErrParamMinLen("LogDestinationConfigs", 1))
 12446  	}
 12447  	if s.ResourceArn == nil {
 12448  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
 12449  	}
 12450  	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
 12451  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
 12452  	}
 12453  	if s.LoggingFilter != nil {
 12454  		if err := s.LoggingFilter.Validate(); err != nil {
 12455  			invalidParams.AddNested("LoggingFilter", err.(request.ErrInvalidParams))
 12456  		}
 12457  	}
 12458  	if s.RedactedFields != nil {
 12459  		for i, v := range s.RedactedFields {
 12460  			if v == nil {
 12461  				continue
 12462  			}
 12463  			if err := v.Validate(); err != nil {
 12464  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RedactedFields", i), err.(request.ErrInvalidParams))
 12465  			}
 12466  		}
 12467  	}
 12468  
 12469  	if invalidParams.Len() > 0 {
 12470  		return invalidParams
 12471  	}
 12472  	return nil
 12473  }
 12474  
 12475  // SetLogDestinationConfigs sets the LogDestinationConfigs field's value.
 12476  func (s *LoggingConfiguration) SetLogDestinationConfigs(v []*string) *LoggingConfiguration {
 12477  	s.LogDestinationConfigs = v
 12478  	return s
 12479  }
 12480  
 12481  // SetLoggingFilter sets the LoggingFilter field's value.
 12482  func (s *LoggingConfiguration) SetLoggingFilter(v *LoggingFilter) *LoggingConfiguration {
 12483  	s.LoggingFilter = v
 12484  	return s
 12485  }
 12486  
 12487  // SetManagedByFirewallManager sets the ManagedByFirewallManager field's value.
 12488  func (s *LoggingConfiguration) SetManagedByFirewallManager(v bool) *LoggingConfiguration {
 12489  	s.ManagedByFirewallManager = &v
 12490  	return s
 12491  }
 12492  
 12493  // SetRedactedFields sets the RedactedFields field's value.
 12494  func (s *LoggingConfiguration) SetRedactedFields(v []*FieldToMatch) *LoggingConfiguration {
 12495  	s.RedactedFields = v
 12496  	return s
 12497  }
 12498  
 12499  // SetResourceArn sets the ResourceArn field's value.
 12500  func (s *LoggingConfiguration) SetResourceArn(v string) *LoggingConfiguration {
 12501  	s.ResourceArn = &v
 12502  	return s
 12503  }
 12504  
 12505  // Filtering that specifies which web requests are kept in the logs and which
 12506  // are dropped, defined for a web ACL's LoggingConfiguration.
 12507  //
 12508  // You can filter on the rule action and on the web request labels that were
 12509  // applied by matching rules during web ACL evaluation.
 12510  type LoggingFilter struct {
 12511  	_ struct{} `type:"structure"`
 12512  
 12513  	// Default handling for logs that don't match any of the specified filtering
 12514  	// conditions.
 12515  	//
 12516  	// DefaultBehavior is a required field
 12517  	DefaultBehavior *string `type:"string" required:"true" enum:"FilterBehavior"`
 12518  
 12519  	// The filters that you want to apply to the logs.
 12520  	//
 12521  	// Filters is a required field
 12522  	Filters []*Filter `min:"1" type:"list" required:"true"`
 12523  }
 12524  
 12525  // String returns the string representation.
 12526  //
 12527  // API parameter values that are decorated as "sensitive" in the API will not
 12528  // be included in the string output. The member name will be present, but the
 12529  // value will be replaced with "sensitive".
 12530  func (s LoggingFilter) String() string {
 12531  	return awsutil.Prettify(s)
 12532  }
 12533  
 12534  // GoString returns the string representation.
 12535  //
 12536  // API parameter values that are decorated as "sensitive" in the API will not
 12537  // be included in the string output. The member name will be present, but the
 12538  // value will be replaced with "sensitive".
 12539  func (s LoggingFilter) GoString() string {
 12540  	return s.String()
 12541  }
 12542  
 12543  // Validate inspects the fields of the type to determine if they are valid.
 12544  func (s *LoggingFilter) Validate() error {
 12545  	invalidParams := request.ErrInvalidParams{Context: "LoggingFilter"}
 12546  	if s.DefaultBehavior == nil {
 12547  		invalidParams.Add(request.NewErrParamRequired("DefaultBehavior"))
 12548  	}
 12549  	if s.Filters == nil {
 12550  		invalidParams.Add(request.NewErrParamRequired("Filters"))
 12551  	}
 12552  	if s.Filters != nil && len(s.Filters) < 1 {
 12553  		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
 12554  	}
 12555  	if s.Filters != nil {
 12556  		for i, v := range s.Filters {
 12557  			if v == nil {
 12558  				continue
 12559  			}
 12560  			if err := v.Validate(); err != nil {
 12561  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
 12562  			}
 12563  		}
 12564  	}
 12565  
 12566  	if invalidParams.Len() > 0 {
 12567  		return invalidParams
 12568  	}
 12569  	return nil
 12570  }
 12571  
 12572  // SetDefaultBehavior sets the DefaultBehavior field's value.
 12573  func (s *LoggingFilter) SetDefaultBehavior(v string) *LoggingFilter {
 12574  	s.DefaultBehavior = &v
 12575  	return s
 12576  }
 12577  
 12578  // SetFilters sets the Filters field's value.
 12579  func (s *LoggingFilter) SetFilters(v []*Filter) *LoggingFilter {
 12580  	s.Filters = v
 12581  	return s
 12582  }
 12583  
 12584  // A rule statement used to run the rules that are defined in a managed rule
 12585  // group. To use this, provide the vendor name and the name of the rule group
 12586  // in this statement. You can retrieve the required names by calling ListAvailableManagedRuleGroups.
 12587  //
 12588  // You cannot nest a ManagedRuleGroupStatement, for example for use inside a
 12589  // NotStatement or OrStatement. It can only be referenced as a top-level statement
 12590  // within a rule.
 12591  type ManagedRuleGroupStatement struct {
 12592  	_ struct{} `type:"structure"`
 12593  
 12594  	// The rules whose actions are set to COUNT by the web ACL, regardless of the
 12595  	// action that is set on the rule. This effectively excludes the rule from acting
 12596  	// on web requests.
 12597  	ExcludedRules []*ExcludedRule `type:"list"`
 12598  
 12599  	// The name of the managed rule group. You use this, along with the vendor name,
 12600  	// to identify the rule group.
 12601  	//
 12602  	// Name is a required field
 12603  	Name *string `min:"1" type:"string" required:"true"`
 12604  
 12605  	// An optional nested statement that narrows the scope of the web requests that
 12606  	// are evaluated by the managed rule group. Requests are only evaluated by the
 12607  	// rule group if they match the scope-down statement. You can use any nestable
 12608  	// Statement in the scope-down statement, and you can nest statements at any
 12609  	// level, the same as you can for a rule statement.
 12610  	ScopeDownStatement *Statement `type:"structure"`
 12611  
 12612  	// The name of the managed rule group vendor. You use this, along with the rule
 12613  	// group name, to identify the rule group.
 12614  	//
 12615  	// VendorName is a required field
 12616  	VendorName *string `min:"1" type:"string" required:"true"`
 12617  
 12618  	// The version of the managed rule group to use. If you specify this, the version
 12619  	// setting is fixed until you change it. If you don't specify this, WAF uses
 12620  	// the vendor's default version, and then keeps the version at the vendor's
 12621  	// default when the vendor updates the managed rule group settings.
 12622  	Version *string `min:"1" type:"string"`
 12623  }
 12624  
 12625  // String returns the string representation.
 12626  //
 12627  // API parameter values that are decorated as "sensitive" in the API will not
 12628  // be included in the string output. The member name will be present, but the
 12629  // value will be replaced with "sensitive".
 12630  func (s ManagedRuleGroupStatement) String() string {
 12631  	return awsutil.Prettify(s)
 12632  }
 12633  
 12634  // GoString returns the string representation.
 12635  //
 12636  // API parameter values that are decorated as "sensitive" in the API will not
 12637  // be included in the string output. The member name will be present, but the
 12638  // value will be replaced with "sensitive".
 12639  func (s ManagedRuleGroupStatement) GoString() string {
 12640  	return s.String()
 12641  }
 12642  
 12643  // Validate inspects the fields of the type to determine if they are valid.
 12644  func (s *ManagedRuleGroupStatement) Validate() error {
 12645  	invalidParams := request.ErrInvalidParams{Context: "ManagedRuleGroupStatement"}
 12646  	if s.Name == nil {
 12647  		invalidParams.Add(request.NewErrParamRequired("Name"))
 12648  	}
 12649  	if s.Name != nil && len(*s.Name) < 1 {
 12650  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 12651  	}
 12652  	if s.VendorName == nil {
 12653  		invalidParams.Add(request.NewErrParamRequired("VendorName"))
 12654  	}
 12655  	if s.VendorName != nil && len(*s.VendorName) < 1 {
 12656  		invalidParams.Add(request.NewErrParamMinLen("VendorName", 1))
 12657  	}
 12658  	if s.Version != nil && len(*s.Version) < 1 {
 12659  		invalidParams.Add(request.NewErrParamMinLen("Version", 1))
 12660  	}
 12661  	if s.ExcludedRules != nil {
 12662  		for i, v := range s.ExcludedRules {
 12663  			if v == nil {
 12664  				continue
 12665  			}
 12666  			if err := v.Validate(); err != nil {
 12667  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ExcludedRules", i), err.(request.ErrInvalidParams))
 12668  			}
 12669  		}
 12670  	}
 12671  	if s.ScopeDownStatement != nil {
 12672  		if err := s.ScopeDownStatement.Validate(); err != nil {
 12673  			invalidParams.AddNested("ScopeDownStatement", err.(request.ErrInvalidParams))
 12674  		}
 12675  	}
 12676  
 12677  	if invalidParams.Len() > 0 {
 12678  		return invalidParams
 12679  	}
 12680  	return nil
 12681  }
 12682  
 12683  // SetExcludedRules sets the ExcludedRules field's value.
 12684  func (s *ManagedRuleGroupStatement) SetExcludedRules(v []*ExcludedRule) *ManagedRuleGroupStatement {
 12685  	s.ExcludedRules = v
 12686  	return s
 12687  }
 12688  
 12689  // SetName sets the Name field's value.
 12690  func (s *ManagedRuleGroupStatement) SetName(v string) *ManagedRuleGroupStatement {
 12691  	s.Name = &v
 12692  	return s
 12693  }
 12694  
 12695  // SetScopeDownStatement sets the ScopeDownStatement field's value.
 12696  func (s *ManagedRuleGroupStatement) SetScopeDownStatement(v *Statement) *ManagedRuleGroupStatement {
 12697  	s.ScopeDownStatement = v
 12698  	return s
 12699  }
 12700  
 12701  // SetVendorName sets the VendorName field's value.
 12702  func (s *ManagedRuleGroupStatement) SetVendorName(v string) *ManagedRuleGroupStatement {
 12703  	s.VendorName = &v
 12704  	return s
 12705  }
 12706  
 12707  // SetVersion sets the Version field's value.
 12708  func (s *ManagedRuleGroupStatement) SetVersion(v string) *ManagedRuleGroupStatement {
 12709  	s.Version = &v
 12710  	return s
 12711  }
 12712  
 12713  // High-level information about a managed rule group, returned by ListAvailableManagedRuleGroups.
 12714  // This provides information like the name and vendor name, that you provide
 12715  // when you add a ManagedRuleGroupStatement to a web ACL. Managed rule groups
 12716  // include Amazon Web Services Managed Rules rule groups, which are free of
 12717  // charge to WAF customers, and Amazon Web Services Marketplace managed rule
 12718  // groups, which you can subscribe to through Amazon Web Services Marketplace.
 12719  type ManagedRuleGroupSummary struct {
 12720  	_ struct{} `type:"structure"`
 12721  
 12722  	// The description of the managed rule group, provided by Amazon Web Services
 12723  	// Managed Rules or the Amazon Web Services Marketplace seller who manages it.
 12724  	Description *string `min:"1" type:"string"`
 12725  
 12726  	// The name of the managed rule group. You use this, along with the vendor name,
 12727  	// to identify the rule group.
 12728  	Name *string `min:"1" type:"string"`
 12729  
 12730  	// The name of the managed rule group vendor. You use this, along with the rule
 12731  	// group name, to identify the rule group.
 12732  	VendorName *string `min:"1" type:"string"`
 12733  }
 12734  
 12735  // String returns the string representation.
 12736  //
 12737  // API parameter values that are decorated as "sensitive" in the API will not
 12738  // be included in the string output. The member name will be present, but the
 12739  // value will be replaced with "sensitive".
 12740  func (s ManagedRuleGroupSummary) String() string {
 12741  	return awsutil.Prettify(s)
 12742  }
 12743  
 12744  // GoString returns the string representation.
 12745  //
 12746  // API parameter values that are decorated as "sensitive" in the API will not
 12747  // be included in the string output. The member name will be present, but the
 12748  // value will be replaced with "sensitive".
 12749  func (s ManagedRuleGroupSummary) GoString() string {
 12750  	return s.String()
 12751  }
 12752  
 12753  // SetDescription sets the Description field's value.
 12754  func (s *ManagedRuleGroupSummary) SetDescription(v string) *ManagedRuleGroupSummary {
 12755  	s.Description = &v
 12756  	return s
 12757  }
 12758  
 12759  // SetName sets the Name field's value.
 12760  func (s *ManagedRuleGroupSummary) SetName(v string) *ManagedRuleGroupSummary {
 12761  	s.Name = &v
 12762  	return s
 12763  }
 12764  
 12765  // SetVendorName sets the VendorName field's value.
 12766  func (s *ManagedRuleGroupSummary) SetVendorName(v string) *ManagedRuleGroupSummary {
 12767  	s.VendorName = &v
 12768  	return s
 12769  }
 12770  
 12771  // Describes a single version of a managed rule group.
 12772  type ManagedRuleGroupVersion struct {
 12773  	_ struct{} `type:"structure"`
 12774  
 12775  	// The date and time that the managed rule group owner updated the rule group
 12776  	// version information.
 12777  	LastUpdateTimestamp *time.Time `type:"timestamp"`
 12778  
 12779  	// The version name.
 12780  	Name *string `min:"1" type:"string"`
 12781  }
 12782  
 12783  // String returns the string representation.
 12784  //
 12785  // API parameter values that are decorated as "sensitive" in the API will not
 12786  // be included in the string output. The member name will be present, but the
 12787  // value will be replaced with "sensitive".
 12788  func (s ManagedRuleGroupVersion) String() string {
 12789  	return awsutil.Prettify(s)
 12790  }
 12791  
 12792  // GoString returns the string representation.
 12793  //
 12794  // API parameter values that are decorated as "sensitive" in the API will not
 12795  // be included in the string output. The member name will be present, but the
 12796  // value will be replaced with "sensitive".
 12797  func (s ManagedRuleGroupVersion) GoString() string {
 12798  	return s.String()
 12799  }
 12800  
 12801  // SetLastUpdateTimestamp sets the LastUpdateTimestamp field's value.
 12802  func (s *ManagedRuleGroupVersion) SetLastUpdateTimestamp(v time.Time) *ManagedRuleGroupVersion {
 12803  	s.LastUpdateTimestamp = &v
 12804  	return s
 12805  }
 12806  
 12807  // SetName sets the Name field's value.
 12808  func (s *ManagedRuleGroupVersion) SetName(v string) *ManagedRuleGroupVersion {
 12809  	s.Name = &v
 12810  	return s
 12811  }
 12812  
 12813  // A set of rules that is managed by Amazon Web Services and Amazon Web Services
 12814  // Marketplace sellers to provide versioned managed rule groups for customers
 12815  // of WAF.
 12816  //
 12817  // This is intended for use only by vendors of managed rule sets. Vendors are
 12818  // Amazon Web Services and Amazon Web Services Marketplace sellers.
 12819  //
 12820  // Vendors, you can use the managed rule set APIs to provide controlled rollout
 12821  // of your versioned managed rule group offerings for your customers. The APIs
 12822  // are ListManagedRuleSets, GetManagedRuleSet, PutManagedRuleSetVersions, and
 12823  // UpdateManagedRuleSetVersionExpiryDate.
 12824  type ManagedRuleSet struct {
 12825  	_ struct{} `type:"structure"`
 12826  
 12827  	// The Amazon Resource Name (ARN) of the entity.
 12828  	//
 12829  	// ARN is a required field
 12830  	ARN *string `min:"20" type:"string" required:"true"`
 12831  
 12832  	// A description of the set that helps with identification.
 12833  	Description *string `min:"1" type:"string"`
 12834  
 12835  	// A unique identifier for the managed rule set. The ID is returned in the responses
 12836  	// to commands like list. You provide it to operations like get and update.
 12837  	//
 12838  	// Id is a required field
 12839  	Id *string `min:"1" type:"string" required:"true"`
 12840  
 12841  	// The label namespace prefix for the managed rule groups that are offered to
 12842  	// customers from this managed rule set. All labels that are added by rules
 12843  	// in the managed rule group have this prefix.
 12844  	//
 12845  	//    * The syntax for the label namespace prefix for a managed rule group is
 12846  	//    the following: awswaf:managed:<vendor>:<rule group name>:
 12847  	//
 12848  	//    * When a rule with a label matches a web request, WAF adds the fully qualified
 12849  	//    label to the request. A fully qualified label is made up of the label
 12850  	//    namespace from the rule group or web ACL where the rule is defined and
 12851  	//    the label from the rule, separated by a colon: <label namespace>:<label
 12852  	//    from rule>
 12853  	LabelNamespace *string `min:"1" type:"string"`
 12854  
 12855  	// The name of the managed rule set. You use this, along with the rule set ID,
 12856  	// to identify the rule set.
 12857  	//
 12858  	// This name is assigned to the corresponding managed rule group, which your
 12859  	// customers can access and use.
 12860  	//
 12861  	// Name is a required field
 12862  	Name *string `min:"1" type:"string" required:"true"`
 12863  
 12864  	// The versions of this managed rule set that are available for use by customers.
 12865  	PublishedVersions map[string]*ManagedRuleSetVersion `type:"map"`
 12866  
 12867  	// The version that you would like your customers to use.
 12868  	RecommendedVersion *string `min:"1" type:"string"`
 12869  }
 12870  
 12871  // String returns the string representation.
 12872  //
 12873  // API parameter values that are decorated as "sensitive" in the API will not
 12874  // be included in the string output. The member name will be present, but the
 12875  // value will be replaced with "sensitive".
 12876  func (s ManagedRuleSet) String() string {
 12877  	return awsutil.Prettify(s)
 12878  }
 12879  
 12880  // GoString returns the string representation.
 12881  //
 12882  // API parameter values that are decorated as "sensitive" in the API will not
 12883  // be included in the string output. The member name will be present, but the
 12884  // value will be replaced with "sensitive".
 12885  func (s ManagedRuleSet) GoString() string {
 12886  	return s.String()
 12887  }
 12888  
 12889  // SetARN sets the ARN field's value.
 12890  func (s *ManagedRuleSet) SetARN(v string) *ManagedRuleSet {
 12891  	s.ARN = &v
 12892  	return s
 12893  }
 12894  
 12895  // SetDescription sets the Description field's value.
 12896  func (s *ManagedRuleSet) SetDescription(v string) *ManagedRuleSet {
 12897  	s.Description = &v
 12898  	return s
 12899  }
 12900  
 12901  // SetId sets the Id field's value.
 12902  func (s *ManagedRuleSet) SetId(v string) *ManagedRuleSet {
 12903  	s.Id = &v
 12904  	return s
 12905  }
 12906  
 12907  // SetLabelNamespace sets the LabelNamespace field's value.
 12908  func (s *ManagedRuleSet) SetLabelNamespace(v string) *ManagedRuleSet {
 12909  	s.LabelNamespace = &v
 12910  	return s
 12911  }
 12912  
 12913  // SetName sets the Name field's value.
 12914  func (s *ManagedRuleSet) SetName(v string) *ManagedRuleSet {
 12915  	s.Name = &v
 12916  	return s
 12917  }
 12918  
 12919  // SetPublishedVersions sets the PublishedVersions field's value.
 12920  func (s *ManagedRuleSet) SetPublishedVersions(v map[string]*ManagedRuleSetVersion) *ManagedRuleSet {
 12921  	s.PublishedVersions = v
 12922  	return s
 12923  }
 12924  
 12925  // SetRecommendedVersion sets the RecommendedVersion field's value.
 12926  func (s *ManagedRuleSet) SetRecommendedVersion(v string) *ManagedRuleSet {
 12927  	s.RecommendedVersion = &v
 12928  	return s
 12929  }
 12930  
 12931  // High-level information for a managed rule set.
 12932  //
 12933  // This is intended for use only by vendors of managed rule sets. Vendors are
 12934  // Amazon Web Services and Amazon Web Services Marketplace sellers.
 12935  //
 12936  // Vendors, you can use the managed rule set APIs to provide controlled rollout
 12937  // of your versioned managed rule group offerings for your customers. The APIs
 12938  // are ListManagedRuleSets, GetManagedRuleSet, PutManagedRuleSetVersions, and
 12939  // UpdateManagedRuleSetVersionExpiryDate.
 12940  type ManagedRuleSetSummary struct {
 12941  	_ struct{} `type:"structure"`
 12942  
 12943  	// The Amazon Resource Name (ARN) of the entity.
 12944  	ARN *string `min:"20" type:"string"`
 12945  
 12946  	// A description of the set that helps with identification.
 12947  	Description *string `min:"1" type:"string"`
 12948  
 12949  	// A unique identifier for the managed rule set. The ID is returned in the responses
 12950  	// to commands like list. You provide it to operations like get and update.
 12951  	Id *string `min:"1" type:"string"`
 12952  
 12953  	// The label namespace prefix for the managed rule groups that are offered to
 12954  	// customers from this managed rule set. All labels that are added by rules
 12955  	// in the managed rule group have this prefix.
 12956  	//
 12957  	//    * The syntax for the label namespace prefix for a managed rule group is
 12958  	//    the following: awswaf:managed:<vendor>:<rule group name>:
 12959  	//
 12960  	//    * When a rule with a label matches a web request, WAF adds the fully qualified
 12961  	//    label to the request. A fully qualified label is made up of the label
 12962  	//    namespace from the rule group or web ACL where the rule is defined and
 12963  	//    the label from the rule, separated by a colon: <label namespace>:<label
 12964  	//    from rule>
 12965  	LabelNamespace *string `min:"1" type:"string"`
 12966  
 12967  	// A token used for optimistic locking. WAF returns a token to your get and
 12968  	// list requests, to mark the state of the entity at the time of the request.
 12969  	// To make changes to the entity associated with the token, you provide the
 12970  	// token to operations like update and delete. WAF uses the token to ensure
 12971  	// that no changes have been made to the entity since you last retrieved it.
 12972  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 12973  	// If this happens, perform another get, and use the new token returned by that
 12974  	// operation.
 12975  	LockToken *string `min:"1" type:"string"`
 12976  
 12977  	// The name of the managed rule set. You use this, along with the rule set ID,
 12978  	// to identify the rule set.
 12979  	//
 12980  	// This name is assigned to the corresponding managed rule group, which your
 12981  	// customers can access and use.
 12982  	Name *string `min:"1" type:"string"`
 12983  }
 12984  
 12985  // String returns the string representation.
 12986  //
 12987  // API parameter values that are decorated as "sensitive" in the API will not
 12988  // be included in the string output. The member name will be present, but the
 12989  // value will be replaced with "sensitive".
 12990  func (s ManagedRuleSetSummary) String() string {
 12991  	return awsutil.Prettify(s)
 12992  }
 12993  
 12994  // GoString returns the string representation.
 12995  //
 12996  // API parameter values that are decorated as "sensitive" in the API will not
 12997  // be included in the string output. The member name will be present, but the
 12998  // value will be replaced with "sensitive".
 12999  func (s ManagedRuleSetSummary) GoString() string {
 13000  	return s.String()
 13001  }
 13002  
 13003  // SetARN sets the ARN field's value.
 13004  func (s *ManagedRuleSetSummary) SetARN(v string) *ManagedRuleSetSummary {
 13005  	s.ARN = &v
 13006  	return s
 13007  }
 13008  
 13009  // SetDescription sets the Description field's value.
 13010  func (s *ManagedRuleSetSummary) SetDescription(v string) *ManagedRuleSetSummary {
 13011  	s.Description = &v
 13012  	return s
 13013  }
 13014  
 13015  // SetId sets the Id field's value.
 13016  func (s *ManagedRuleSetSummary) SetId(v string) *ManagedRuleSetSummary {
 13017  	s.Id = &v
 13018  	return s
 13019  }
 13020  
 13021  // SetLabelNamespace sets the LabelNamespace field's value.
 13022  func (s *ManagedRuleSetSummary) SetLabelNamespace(v string) *ManagedRuleSetSummary {
 13023  	s.LabelNamespace = &v
 13024  	return s
 13025  }
 13026  
 13027  // SetLockToken sets the LockToken field's value.
 13028  func (s *ManagedRuleSetSummary) SetLockToken(v string) *ManagedRuleSetSummary {
 13029  	s.LockToken = &v
 13030  	return s
 13031  }
 13032  
 13033  // SetName sets the Name field's value.
 13034  func (s *ManagedRuleSetSummary) SetName(v string) *ManagedRuleSetSummary {
 13035  	s.Name = &v
 13036  	return s
 13037  }
 13038  
 13039  // Information for a single version of a managed rule set.
 13040  //
 13041  // This is intended for use only by vendors of managed rule sets. Vendors are
 13042  // Amazon Web Services and Amazon Web Services Marketplace sellers.
 13043  //
 13044  // Vendors, you can use the managed rule set APIs to provide controlled rollout
 13045  // of your versioned managed rule group offerings for your customers. The APIs
 13046  // are ListManagedRuleSets, GetManagedRuleSet, PutManagedRuleSetVersions, and
 13047  // UpdateManagedRuleSetVersionExpiryDate.
 13048  type ManagedRuleSetVersion struct {
 13049  	_ struct{} `type:"structure"`
 13050  
 13051  	// The Amazon Resource Name (ARN) of the vendor rule group that's used to define
 13052  	// the published version of your managed rule group.
 13053  	AssociatedRuleGroupArn *string `min:"20" type:"string"`
 13054  
 13055  	// The web ACL capacity units (WCUs) required for this rule group.
 13056  	//
 13057  	// WAF uses WCUs to calculate and control the operating resources that are used
 13058  	// to run your rules, rule groups, and web ACLs. WAF calculates capacity differently
 13059  	// for each rule type, to reflect the relative cost of each rule. Simple rules
 13060  	// that cost little to run use fewer WCUs than more complex rules that use more
 13061  	// processing power. Rule group capacity is fixed at creation, which helps users
 13062  	// plan their web ACL WCU usage when they use a rule group. The WCU limit for
 13063  	// web ACLs is 1,500.
 13064  	Capacity *int64 `min:"1" type:"long"`
 13065  
 13066  	// The time that this version is set to expire.
 13067  	//
 13068  	// Times are in Coordinated Universal Time (UTC) format. UTC format includes
 13069  	// the special designator, Z. For example, "2016-09-27T14:50Z".
 13070  	ExpiryTimestamp *time.Time `type:"timestamp"`
 13071  
 13072  	// The amount of time you expect this version of your managed rule group to
 13073  	// last, in days.
 13074  	ForecastedLifetime *int64 `min:"1" type:"integer"`
 13075  
 13076  	// The last time that you updated this version.
 13077  	//
 13078  	// Times are in Coordinated Universal Time (UTC) format. UTC format includes
 13079  	// the special designator, Z. For example, "2016-09-27T14:50Z".
 13080  	LastUpdateTimestamp *time.Time `type:"timestamp"`
 13081  
 13082  	// The time that you first published this version.
 13083  	//
 13084  	// Times are in Coordinated Universal Time (UTC) format. UTC format includes
 13085  	// the special designator, Z. For example, "2016-09-27T14:50Z".
 13086  	PublishTimestamp *time.Time `type:"timestamp"`
 13087  }
 13088  
 13089  // String returns the string representation.
 13090  //
 13091  // API parameter values that are decorated as "sensitive" in the API will not
 13092  // be included in the string output. The member name will be present, but the
 13093  // value will be replaced with "sensitive".
 13094  func (s ManagedRuleSetVersion) String() string {
 13095  	return awsutil.Prettify(s)
 13096  }
 13097  
 13098  // GoString returns the string representation.
 13099  //
 13100  // API parameter values that are decorated as "sensitive" in the API will not
 13101  // be included in the string output. The member name will be present, but the
 13102  // value will be replaced with "sensitive".
 13103  func (s ManagedRuleSetVersion) GoString() string {
 13104  	return s.String()
 13105  }
 13106  
 13107  // SetAssociatedRuleGroupArn sets the AssociatedRuleGroupArn field's value.
 13108  func (s *ManagedRuleSetVersion) SetAssociatedRuleGroupArn(v string) *ManagedRuleSetVersion {
 13109  	s.AssociatedRuleGroupArn = &v
 13110  	return s
 13111  }
 13112  
 13113  // SetCapacity sets the Capacity field's value.
 13114  func (s *ManagedRuleSetVersion) SetCapacity(v int64) *ManagedRuleSetVersion {
 13115  	s.Capacity = &v
 13116  	return s
 13117  }
 13118  
 13119  // SetExpiryTimestamp sets the ExpiryTimestamp field's value.
 13120  func (s *ManagedRuleSetVersion) SetExpiryTimestamp(v time.Time) *ManagedRuleSetVersion {
 13121  	s.ExpiryTimestamp = &v
 13122  	return s
 13123  }
 13124  
 13125  // SetForecastedLifetime sets the ForecastedLifetime field's value.
 13126  func (s *ManagedRuleSetVersion) SetForecastedLifetime(v int64) *ManagedRuleSetVersion {
 13127  	s.ForecastedLifetime = &v
 13128  	return s
 13129  }
 13130  
 13131  // SetLastUpdateTimestamp sets the LastUpdateTimestamp field's value.
 13132  func (s *ManagedRuleSetVersion) SetLastUpdateTimestamp(v time.Time) *ManagedRuleSetVersion {
 13133  	s.LastUpdateTimestamp = &v
 13134  	return s
 13135  }
 13136  
 13137  // SetPublishTimestamp sets the PublishTimestamp field's value.
 13138  func (s *ManagedRuleSetVersion) SetPublishTimestamp(v time.Time) *ManagedRuleSetVersion {
 13139  	s.PublishTimestamp = &v
 13140  	return s
 13141  }
 13142  
 13143  // The HTTP method of a web request. The method indicates the type of operation
 13144  // that the request is asking the origin to perform.
 13145  //
 13146  // This is used only to indicate the web request component for WAF to inspect,
 13147  // in the FieldToMatch specification.
 13148  //
 13149  // JSON specification: "Method": {}
 13150  type Method struct {
 13151  	_ struct{} `type:"structure"`
 13152  }
 13153  
 13154  // String returns the string representation.
 13155  //
 13156  // API parameter values that are decorated as "sensitive" in the API will not
 13157  // be included in the string output. The member name will be present, but the
 13158  // value will be replaced with "sensitive".
 13159  func (s Method) String() string {
 13160  	return awsutil.Prettify(s)
 13161  }
 13162  
 13163  // GoString returns the string representation.
 13164  //
 13165  // API parameter values that are decorated as "sensitive" in the API will not
 13166  // be included in the string output. The member name will be present, but the
 13167  // value will be replaced with "sensitive".
 13168  func (s Method) GoString() string {
 13169  	return s.String()
 13170  }
 13171  
 13172  // Specifies that WAF should do nothing. This is generally used to try out a
 13173  // rule without performing any actions. You set the OverrideAction on the Rule.
 13174  //
 13175  // This is used in the context of other settings, for example to specify values
 13176  // for RuleAction and web ACL DefaultAction.
 13177  //
 13178  // JSON specification: "None": {}
 13179  type NoneAction struct {
 13180  	_ struct{} `type:"structure"`
 13181  }
 13182  
 13183  // String returns the string representation.
 13184  //
 13185  // API parameter values that are decorated as "sensitive" in the API will not
 13186  // be included in the string output. The member name will be present, but the
 13187  // value will be replaced with "sensitive".
 13188  func (s NoneAction) String() string {
 13189  	return awsutil.Prettify(s)
 13190  }
 13191  
 13192  // GoString returns the string representation.
 13193  //
 13194  // API parameter values that are decorated as "sensitive" in the API will not
 13195  // be included in the string output. The member name will be present, but the
 13196  // value will be replaced with "sensitive".
 13197  func (s NoneAction) GoString() string {
 13198  	return s.String()
 13199  }
 13200  
 13201  // A logical rule statement used to negate the results of another rule statement.
 13202  // You provide one Statement within the NotStatement.
 13203  type NotStatement struct {
 13204  	_ struct{} `type:"structure"`
 13205  
 13206  	// The statement to negate. You can use any statement that can be nested.
 13207  	//
 13208  	// Statement is a required field
 13209  	Statement *Statement `type:"structure" required:"true"`
 13210  }
 13211  
 13212  // String returns the string representation.
 13213  //
 13214  // API parameter values that are decorated as "sensitive" in the API will not
 13215  // be included in the string output. The member name will be present, but the
 13216  // value will be replaced with "sensitive".
 13217  func (s NotStatement) String() string {
 13218  	return awsutil.Prettify(s)
 13219  }
 13220  
 13221  // GoString returns the string representation.
 13222  //
 13223  // API parameter values that are decorated as "sensitive" in the API will not
 13224  // be included in the string output. The member name will be present, but the
 13225  // value will be replaced with "sensitive".
 13226  func (s NotStatement) GoString() string {
 13227  	return s.String()
 13228  }
 13229  
 13230  // Validate inspects the fields of the type to determine if they are valid.
 13231  func (s *NotStatement) Validate() error {
 13232  	invalidParams := request.ErrInvalidParams{Context: "NotStatement"}
 13233  	if s.Statement == nil {
 13234  		invalidParams.Add(request.NewErrParamRequired("Statement"))
 13235  	}
 13236  	if s.Statement != nil {
 13237  		if err := s.Statement.Validate(); err != nil {
 13238  			invalidParams.AddNested("Statement", err.(request.ErrInvalidParams))
 13239  		}
 13240  	}
 13241  
 13242  	if invalidParams.Len() > 0 {
 13243  		return invalidParams
 13244  	}
 13245  	return nil
 13246  }
 13247  
 13248  // SetStatement sets the Statement field's value.
 13249  func (s *NotStatement) SetStatement(v *Statement) *NotStatement {
 13250  	s.Statement = v
 13251  	return s
 13252  }
 13253  
 13254  // A logical rule statement used to combine other rule statements with OR logic.
 13255  // You provide more than one Statement within the OrStatement.
 13256  type OrStatement struct {
 13257  	_ struct{} `type:"structure"`
 13258  
 13259  	// The statements to combine with OR logic. You can use any statements that
 13260  	// can be nested.
 13261  	//
 13262  	// Statements is a required field
 13263  	Statements []*Statement `type:"list" required:"true"`
 13264  }
 13265  
 13266  // String returns the string representation.
 13267  //
 13268  // API parameter values that are decorated as "sensitive" in the API will not
 13269  // be included in the string output. The member name will be present, but the
 13270  // value will be replaced with "sensitive".
 13271  func (s OrStatement) String() string {
 13272  	return awsutil.Prettify(s)
 13273  }
 13274  
 13275  // GoString returns the string representation.
 13276  //
 13277  // API parameter values that are decorated as "sensitive" in the API will not
 13278  // be included in the string output. The member name will be present, but the
 13279  // value will be replaced with "sensitive".
 13280  func (s OrStatement) GoString() string {
 13281  	return s.String()
 13282  }
 13283  
 13284  // Validate inspects the fields of the type to determine if they are valid.
 13285  func (s *OrStatement) Validate() error {
 13286  	invalidParams := request.ErrInvalidParams{Context: "OrStatement"}
 13287  	if s.Statements == nil {
 13288  		invalidParams.Add(request.NewErrParamRequired("Statements"))
 13289  	}
 13290  	if s.Statements != nil {
 13291  		for i, v := range s.Statements {
 13292  			if v == nil {
 13293  				continue
 13294  			}
 13295  			if err := v.Validate(); err != nil {
 13296  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Statements", i), err.(request.ErrInvalidParams))
 13297  			}
 13298  		}
 13299  	}
 13300  
 13301  	if invalidParams.Len() > 0 {
 13302  		return invalidParams
 13303  	}
 13304  	return nil
 13305  }
 13306  
 13307  // SetStatements sets the Statements field's value.
 13308  func (s *OrStatement) SetStatements(v []*Statement) *OrStatement {
 13309  	s.Statements = v
 13310  	return s
 13311  }
 13312  
 13313  // The override action to apply to the rules in a rule group. Used only for
 13314  // rule statements that reference a rule group, like RuleGroupReferenceStatement
 13315  // and ManagedRuleGroupStatement.
 13316  //
 13317  // Set the override action to none to leave the rule actions in effect. Set
 13318  // it to count to only count matches, regardless of the rule action settings.
 13319  //
 13320  // In a Rule, you must specify either this OverrideAction setting or the rule
 13321  // Action setting, but not both:
 13322  //
 13323  //    * If the rule statement references a rule group, use this override action
 13324  //    setting and not the action setting.
 13325  //
 13326  //    * If the rule statement does not reference a rule group, use the rule
 13327  //    action setting and not this rule override action setting.
 13328  type OverrideAction struct {
 13329  	_ struct{} `type:"structure"`
 13330  
 13331  	// Override the rule action setting to count.
 13332  	Count *CountAction `type:"structure"`
 13333  
 13334  	// Don't override the rule action setting.
 13335  	None *NoneAction `type:"structure"`
 13336  }
 13337  
 13338  // String returns the string representation.
 13339  //
 13340  // API parameter values that are decorated as "sensitive" in the API will not
 13341  // be included in the string output. The member name will be present, but the
 13342  // value will be replaced with "sensitive".
 13343  func (s OverrideAction) String() string {
 13344  	return awsutil.Prettify(s)
 13345  }
 13346  
 13347  // GoString returns the string representation.
 13348  //
 13349  // API parameter values that are decorated as "sensitive" in the API will not
 13350  // be included in the string output. The member name will be present, but the
 13351  // value will be replaced with "sensitive".
 13352  func (s OverrideAction) GoString() string {
 13353  	return s.String()
 13354  }
 13355  
 13356  // Validate inspects the fields of the type to determine if they are valid.
 13357  func (s *OverrideAction) Validate() error {
 13358  	invalidParams := request.ErrInvalidParams{Context: "OverrideAction"}
 13359  	if s.Count != nil {
 13360  		if err := s.Count.Validate(); err != nil {
 13361  			invalidParams.AddNested("Count", err.(request.ErrInvalidParams))
 13362  		}
 13363  	}
 13364  
 13365  	if invalidParams.Len() > 0 {
 13366  		return invalidParams
 13367  	}
 13368  	return nil
 13369  }
 13370  
 13371  // SetCount sets the Count field's value.
 13372  func (s *OverrideAction) SetCount(v *CountAction) *OverrideAction {
 13373  	s.Count = v
 13374  	return s
 13375  }
 13376  
 13377  // SetNone sets the None field's value.
 13378  func (s *OverrideAction) SetNone(v *NoneAction) *OverrideAction {
 13379  	s.None = v
 13380  	return s
 13381  }
 13382  
 13383  type PutLoggingConfigurationInput struct {
 13384  	_ struct{} `type:"structure"`
 13385  
 13386  	// Defines an association between Amazon Kinesis Data Firehose destinations
 13387  	// and a web ACL resource, for logging from WAF. As part of the association,
 13388  	// you can specify parts of the standard logging fields to keep out of the logs
 13389  	// and you can specify filters so that you log only a subset of the logging
 13390  	// records.
 13391  	//
 13392  	// LoggingConfiguration is a required field
 13393  	LoggingConfiguration *LoggingConfiguration `type:"structure" required:"true"`
 13394  }
 13395  
 13396  // String returns the string representation.
 13397  //
 13398  // API parameter values that are decorated as "sensitive" in the API will not
 13399  // be included in the string output. The member name will be present, but the
 13400  // value will be replaced with "sensitive".
 13401  func (s PutLoggingConfigurationInput) String() string {
 13402  	return awsutil.Prettify(s)
 13403  }
 13404  
 13405  // GoString returns the string representation.
 13406  //
 13407  // API parameter values that are decorated as "sensitive" in the API will not
 13408  // be included in the string output. The member name will be present, but the
 13409  // value will be replaced with "sensitive".
 13410  func (s PutLoggingConfigurationInput) GoString() string {
 13411  	return s.String()
 13412  }
 13413  
 13414  // Validate inspects the fields of the type to determine if they are valid.
 13415  func (s *PutLoggingConfigurationInput) Validate() error {
 13416  	invalidParams := request.ErrInvalidParams{Context: "PutLoggingConfigurationInput"}
 13417  	if s.LoggingConfiguration == nil {
 13418  		invalidParams.Add(request.NewErrParamRequired("LoggingConfiguration"))
 13419  	}
 13420  	if s.LoggingConfiguration != nil {
 13421  		if err := s.LoggingConfiguration.Validate(); err != nil {
 13422  			invalidParams.AddNested("LoggingConfiguration", err.(request.ErrInvalidParams))
 13423  		}
 13424  	}
 13425  
 13426  	if invalidParams.Len() > 0 {
 13427  		return invalidParams
 13428  	}
 13429  	return nil
 13430  }
 13431  
 13432  // SetLoggingConfiguration sets the LoggingConfiguration field's value.
 13433  func (s *PutLoggingConfigurationInput) SetLoggingConfiguration(v *LoggingConfiguration) *PutLoggingConfigurationInput {
 13434  	s.LoggingConfiguration = v
 13435  	return s
 13436  }
 13437  
 13438  type PutLoggingConfigurationOutput struct {
 13439  	_ struct{} `type:"structure"`
 13440  
 13441  	// Defines an association between Amazon Kinesis Data Firehose destinations
 13442  	// and a web ACL resource, for logging from WAF. As part of the association,
 13443  	// you can specify parts of the standard logging fields to keep out of the logs
 13444  	// and you can specify filters so that you log only a subset of the logging
 13445  	// records.
 13446  	LoggingConfiguration *LoggingConfiguration `type:"structure"`
 13447  }
 13448  
 13449  // String returns the string representation.
 13450  //
 13451  // API parameter values that are decorated as "sensitive" in the API will not
 13452  // be included in the string output. The member name will be present, but the
 13453  // value will be replaced with "sensitive".
 13454  func (s PutLoggingConfigurationOutput) String() string {
 13455  	return awsutil.Prettify(s)
 13456  }
 13457  
 13458  // GoString returns the string representation.
 13459  //
 13460  // API parameter values that are decorated as "sensitive" in the API will not
 13461  // be included in the string output. The member name will be present, but the
 13462  // value will be replaced with "sensitive".
 13463  func (s PutLoggingConfigurationOutput) GoString() string {
 13464  	return s.String()
 13465  }
 13466  
 13467  // SetLoggingConfiguration sets the LoggingConfiguration field's value.
 13468  func (s *PutLoggingConfigurationOutput) SetLoggingConfiguration(v *LoggingConfiguration) *PutLoggingConfigurationOutput {
 13469  	s.LoggingConfiguration = v
 13470  	return s
 13471  }
 13472  
 13473  type PutManagedRuleSetVersionsInput struct {
 13474  	_ struct{} `type:"structure"`
 13475  
 13476  	// A unique identifier for the managed rule set. The ID is returned in the responses
 13477  	// to commands like list. You provide it to operations like get and update.
 13478  	//
 13479  	// Id is a required field
 13480  	Id *string `min:"1" type:"string" required:"true"`
 13481  
 13482  	// A token used for optimistic locking. WAF returns a token to your get and
 13483  	// list requests, to mark the state of the entity at the time of the request.
 13484  	// To make changes to the entity associated with the token, you provide the
 13485  	// token to operations like update and delete. WAF uses the token to ensure
 13486  	// that no changes have been made to the entity since you last retrieved it.
 13487  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 13488  	// If this happens, perform another get, and use the new token returned by that
 13489  	// operation.
 13490  	//
 13491  	// LockToken is a required field
 13492  	LockToken *string `min:"1" type:"string" required:"true"`
 13493  
 13494  	// The name of the managed rule set. You use this, along with the rule set ID,
 13495  	// to identify the rule set.
 13496  	//
 13497  	// This name is assigned to the corresponding managed rule group, which your
 13498  	// customers can access and use.
 13499  	//
 13500  	// Name is a required field
 13501  	Name *string `min:"1" type:"string" required:"true"`
 13502  
 13503  	// The version of the named managed rule group that you'd like your customers
 13504  	// to choose, from among your version offerings.
 13505  	RecommendedVersion *string `min:"1" type:"string"`
 13506  
 13507  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 13508  	// regional application. A regional application can be an Application Load Balancer
 13509  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 13510  	//
 13511  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 13512  	// as follows:
 13513  	//
 13514  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 13515  	//    --region=us-east-1.
 13516  	//
 13517  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 13518  	//
 13519  	// Scope is a required field
 13520  	Scope *string `type:"string" required:"true" enum:"Scope"`
 13521  
 13522  	// The versions of the named managed rule group that you want to offer to your
 13523  	// customers.
 13524  	VersionsToPublish map[string]*VersionToPublish `type:"map"`
 13525  }
 13526  
 13527  // String returns the string representation.
 13528  //
 13529  // API parameter values that are decorated as "sensitive" in the API will not
 13530  // be included in the string output. The member name will be present, but the
 13531  // value will be replaced with "sensitive".
 13532  func (s PutManagedRuleSetVersionsInput) String() string {
 13533  	return awsutil.Prettify(s)
 13534  }
 13535  
 13536  // GoString returns the string representation.
 13537  //
 13538  // API parameter values that are decorated as "sensitive" in the API will not
 13539  // be included in the string output. The member name will be present, but the
 13540  // value will be replaced with "sensitive".
 13541  func (s PutManagedRuleSetVersionsInput) GoString() string {
 13542  	return s.String()
 13543  }
 13544  
 13545  // Validate inspects the fields of the type to determine if they are valid.
 13546  func (s *PutManagedRuleSetVersionsInput) Validate() error {
 13547  	invalidParams := request.ErrInvalidParams{Context: "PutManagedRuleSetVersionsInput"}
 13548  	if s.Id == nil {
 13549  		invalidParams.Add(request.NewErrParamRequired("Id"))
 13550  	}
 13551  	if s.Id != nil && len(*s.Id) < 1 {
 13552  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
 13553  	}
 13554  	if s.LockToken == nil {
 13555  		invalidParams.Add(request.NewErrParamRequired("LockToken"))
 13556  	}
 13557  	if s.LockToken != nil && len(*s.LockToken) < 1 {
 13558  		invalidParams.Add(request.NewErrParamMinLen("LockToken", 1))
 13559  	}
 13560  	if s.Name == nil {
 13561  		invalidParams.Add(request.NewErrParamRequired("Name"))
 13562  	}
 13563  	if s.Name != nil && len(*s.Name) < 1 {
 13564  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 13565  	}
 13566  	if s.RecommendedVersion != nil && len(*s.RecommendedVersion) < 1 {
 13567  		invalidParams.Add(request.NewErrParamMinLen("RecommendedVersion", 1))
 13568  	}
 13569  	if s.Scope == nil {
 13570  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 13571  	}
 13572  	if s.VersionsToPublish != nil {
 13573  		for i, v := range s.VersionsToPublish {
 13574  			if v == nil {
 13575  				continue
 13576  			}
 13577  			if err := v.Validate(); err != nil {
 13578  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "VersionsToPublish", i), err.(request.ErrInvalidParams))
 13579  			}
 13580  		}
 13581  	}
 13582  
 13583  	if invalidParams.Len() > 0 {
 13584  		return invalidParams
 13585  	}
 13586  	return nil
 13587  }
 13588  
 13589  // SetId sets the Id field's value.
 13590  func (s *PutManagedRuleSetVersionsInput) SetId(v string) *PutManagedRuleSetVersionsInput {
 13591  	s.Id = &v
 13592  	return s
 13593  }
 13594  
 13595  // SetLockToken sets the LockToken field's value.
 13596  func (s *PutManagedRuleSetVersionsInput) SetLockToken(v string) *PutManagedRuleSetVersionsInput {
 13597  	s.LockToken = &v
 13598  	return s
 13599  }
 13600  
 13601  // SetName sets the Name field's value.
 13602  func (s *PutManagedRuleSetVersionsInput) SetName(v string) *PutManagedRuleSetVersionsInput {
 13603  	s.Name = &v
 13604  	return s
 13605  }
 13606  
 13607  // SetRecommendedVersion sets the RecommendedVersion field's value.
 13608  func (s *PutManagedRuleSetVersionsInput) SetRecommendedVersion(v string) *PutManagedRuleSetVersionsInput {
 13609  	s.RecommendedVersion = &v
 13610  	return s
 13611  }
 13612  
 13613  // SetScope sets the Scope field's value.
 13614  func (s *PutManagedRuleSetVersionsInput) SetScope(v string) *PutManagedRuleSetVersionsInput {
 13615  	s.Scope = &v
 13616  	return s
 13617  }
 13618  
 13619  // SetVersionsToPublish sets the VersionsToPublish field's value.
 13620  func (s *PutManagedRuleSetVersionsInput) SetVersionsToPublish(v map[string]*VersionToPublish) *PutManagedRuleSetVersionsInput {
 13621  	s.VersionsToPublish = v
 13622  	return s
 13623  }
 13624  
 13625  type PutManagedRuleSetVersionsOutput struct {
 13626  	_ struct{} `type:"structure"`
 13627  
 13628  	// A token used for optimistic locking. WAF returns a token to your get and
 13629  	// list requests, to mark the state of the entity at the time of the request.
 13630  	// To make changes to the entity associated with the token, you provide the
 13631  	// token to operations like update and delete. WAF uses the token to ensure
 13632  	// that no changes have been made to the entity since you last retrieved it.
 13633  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 13634  	// If this happens, perform another get, and use the new token returned by that
 13635  	// operation.
 13636  	NextLockToken *string `min:"1" type:"string"`
 13637  }
 13638  
 13639  // String returns the string representation.
 13640  //
 13641  // API parameter values that are decorated as "sensitive" in the API will not
 13642  // be included in the string output. The member name will be present, but the
 13643  // value will be replaced with "sensitive".
 13644  func (s PutManagedRuleSetVersionsOutput) String() string {
 13645  	return awsutil.Prettify(s)
 13646  }
 13647  
 13648  // GoString returns the string representation.
 13649  //
 13650  // API parameter values that are decorated as "sensitive" in the API will not
 13651  // be included in the string output. The member name will be present, but the
 13652  // value will be replaced with "sensitive".
 13653  func (s PutManagedRuleSetVersionsOutput) GoString() string {
 13654  	return s.String()
 13655  }
 13656  
 13657  // SetNextLockToken sets the NextLockToken field's value.
 13658  func (s *PutManagedRuleSetVersionsOutput) SetNextLockToken(v string) *PutManagedRuleSetVersionsOutput {
 13659  	s.NextLockToken = &v
 13660  	return s
 13661  }
 13662  
 13663  type PutPermissionPolicyInput struct {
 13664  	_ struct{} `type:"structure"`
 13665  
 13666  	// The policy to attach to the specified rule group.
 13667  	//
 13668  	// The policy specifications must conform to the following:
 13669  	//
 13670  	//    * The policy must be composed using IAM Policy version 2012-10-17 or version
 13671  	//    2015-01-01.
 13672  	//
 13673  	//    * The policy must include specifications for Effect, Action, and Principal.
 13674  	//
 13675  	//    * Effect must specify Allow.
 13676  	//
 13677  	//    * Action must specify wafv2:CreateWebACL, wafv2:UpdateWebACL, and wafv2:PutFirewallManagerRuleGroups.
 13678  	//    WAF rejects any extra actions or wildcard actions in the policy.
 13679  	//
 13680  	//    * The policy must not include a Resource parameter.
 13681  	//
 13682  	// For more information, see IAM Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html).
 13683  	//
 13684  	// Policy is a required field
 13685  	Policy *string `min:"1" type:"string" required:"true"`
 13686  
 13687  	// The Amazon Resource Name (ARN) of the RuleGroup to which you want to attach
 13688  	// the policy.
 13689  	//
 13690  	// ResourceArn is a required field
 13691  	ResourceArn *string `min:"20" type:"string" required:"true"`
 13692  }
 13693  
 13694  // String returns the string representation.
 13695  //
 13696  // API parameter values that are decorated as "sensitive" in the API will not
 13697  // be included in the string output. The member name will be present, but the
 13698  // value will be replaced with "sensitive".
 13699  func (s PutPermissionPolicyInput) String() string {
 13700  	return awsutil.Prettify(s)
 13701  }
 13702  
 13703  // GoString returns the string representation.
 13704  //
 13705  // API parameter values that are decorated as "sensitive" in the API will not
 13706  // be included in the string output. The member name will be present, but the
 13707  // value will be replaced with "sensitive".
 13708  func (s PutPermissionPolicyInput) GoString() string {
 13709  	return s.String()
 13710  }
 13711  
 13712  // Validate inspects the fields of the type to determine if they are valid.
 13713  func (s *PutPermissionPolicyInput) Validate() error {
 13714  	invalidParams := request.ErrInvalidParams{Context: "PutPermissionPolicyInput"}
 13715  	if s.Policy == nil {
 13716  		invalidParams.Add(request.NewErrParamRequired("Policy"))
 13717  	}
 13718  	if s.Policy != nil && len(*s.Policy) < 1 {
 13719  		invalidParams.Add(request.NewErrParamMinLen("Policy", 1))
 13720  	}
 13721  	if s.ResourceArn == nil {
 13722  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
 13723  	}
 13724  	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
 13725  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
 13726  	}
 13727  
 13728  	if invalidParams.Len() > 0 {
 13729  		return invalidParams
 13730  	}
 13731  	return nil
 13732  }
 13733  
 13734  // SetPolicy sets the Policy field's value.
 13735  func (s *PutPermissionPolicyInput) SetPolicy(v string) *PutPermissionPolicyInput {
 13736  	s.Policy = &v
 13737  	return s
 13738  }
 13739  
 13740  // SetResourceArn sets the ResourceArn field's value.
 13741  func (s *PutPermissionPolicyInput) SetResourceArn(v string) *PutPermissionPolicyInput {
 13742  	s.ResourceArn = &v
 13743  	return s
 13744  }
 13745  
 13746  type PutPermissionPolicyOutput struct {
 13747  	_ struct{} `type:"structure"`
 13748  }
 13749  
 13750  // String returns the string representation.
 13751  //
 13752  // API parameter values that are decorated as "sensitive" in the API will not
 13753  // be included in the string output. The member name will be present, but the
 13754  // value will be replaced with "sensitive".
 13755  func (s PutPermissionPolicyOutput) String() string {
 13756  	return awsutil.Prettify(s)
 13757  }
 13758  
 13759  // GoString returns the string representation.
 13760  //
 13761  // API parameter values that are decorated as "sensitive" in the API will not
 13762  // be included in the string output. The member name will be present, but the
 13763  // value will be replaced with "sensitive".
 13764  func (s PutPermissionPolicyOutput) GoString() string {
 13765  	return s.String()
 13766  }
 13767  
 13768  // The query string of a web request. This is the part of a URL that appears
 13769  // after a ? character, if any.
 13770  //
 13771  // This is used only to indicate the web request component for WAF to inspect,
 13772  // in the FieldToMatch specification.
 13773  //
 13774  // JSON specification: "QueryString": {}
 13775  type QueryString struct {
 13776  	_ struct{} `type:"structure"`
 13777  }
 13778  
 13779  // String returns the string representation.
 13780  //
 13781  // API parameter values that are decorated as "sensitive" in the API will not
 13782  // be included in the string output. The member name will be present, but the
 13783  // value will be replaced with "sensitive".
 13784  func (s QueryString) String() string {
 13785  	return awsutil.Prettify(s)
 13786  }
 13787  
 13788  // GoString returns the string representation.
 13789  //
 13790  // API parameter values that are decorated as "sensitive" in the API will not
 13791  // be included in the string output. The member name will be present, but the
 13792  // value will be replaced with "sensitive".
 13793  func (s QueryString) GoString() string {
 13794  	return s.String()
 13795  }
 13796  
 13797  // A rate-based rule tracks the rate of requests for each originating IP address,
 13798  // and triggers the rule action when the rate exceeds a limit that you specify
 13799  // on the number of requests in any 5-minute time span. You can use this to
 13800  // put a temporary block on requests from an IP address that is sending excessive
 13801  // requests.
 13802  //
 13803  // WAF tracks and manages web requests separately for each instance of a rate-based
 13804  // rule that you use. For example, if you provide the same rate-based rule settings
 13805  // in two web ACLs, each of the two rule statements represents a separate instance
 13806  // of the rate-based rule and gets its own tracking and management by WAF. If
 13807  // you define a rate-based rule inside a rule group, and then use that rule
 13808  // group in multiple places, each use creates a separate instance of the rate-based
 13809  // rule that gets its own tracking and management by WAF.
 13810  //
 13811  // When the rule action triggers, WAF blocks additional requests from the IP
 13812  // address until the request rate falls below the limit.
 13813  //
 13814  // You can optionally nest another statement inside the rate-based statement,
 13815  // to narrow the scope of the rule so that it only counts requests that match
 13816  // the nested statement. For example, based on recent requests that you have
 13817  // seen from an attacker, you might create a rate-based rule with a nested AND
 13818  // rule statement that contains the following nested statements:
 13819  //
 13820  //    * An IP match statement with an IP set that specified the address 192.0.2.44.
 13821  //
 13822  //    * A string match statement that searches in the User-Agent header for
 13823  //    the string BadBot.
 13824  //
 13825  // In this rate-based rule, you also define a rate limit. For this example,
 13826  // the rate limit is 1,000. Requests that meet both of the conditions in the
 13827  // statements are counted. If the count exceeds 1,000 requests per five minutes,
 13828  // the rule action triggers. Requests that do not meet both conditions are not
 13829  // counted towards the rate limit and are not affected by this rule.
 13830  //
 13831  // You cannot nest a RateBasedStatement inside another statement, for example
 13832  // inside a NotStatement or OrStatement. You can define a RateBasedStatement
 13833  // inside a web ACL and inside a rule group.
 13834  type RateBasedStatement struct {
 13835  	_ struct{} `type:"structure"`
 13836  
 13837  	// Setting that indicates how to aggregate the request counts. The options are
 13838  	// the following:
 13839  	//
 13840  	//    * IP - Aggregate the request counts on the IP address from the web request
 13841  	//    origin.
 13842  	//
 13843  	//    * FORWARDED_IP - Aggregate the request counts on the first IP address
 13844  	//    in an HTTP header. If you use this, configure the ForwardedIPConfig, to
 13845  	//    specify the header to use.
 13846  	//
 13847  	// AggregateKeyType is a required field
 13848  	AggregateKeyType *string `type:"string" required:"true" enum:"RateBasedStatementAggregateKeyType"`
 13849  
 13850  	// The configuration for inspecting IP addresses in an HTTP header that you
 13851  	// specify, instead of using the IP address that's reported by the web request
 13852  	// origin. Commonly, this is the X-Forwarded-For (XFF) header, but you can specify
 13853  	// any header name.
 13854  	//
 13855  	// If the specified header isn't present in the request, WAF doesn't apply the
 13856  	// rule to the web request at all.
 13857  	//
 13858  	// This is required if AggregateKeyType is set to FORWARDED_IP.
 13859  	ForwardedIPConfig *ForwardedIPConfig `type:"structure"`
 13860  
 13861  	// The limit on requests per 5-minute period for a single originating IP address.
 13862  	// If the statement includes a ScopeDownStatement, this limit is applied only
 13863  	// to the requests that match the statement.
 13864  	//
 13865  	// Limit is a required field
 13866  	Limit *int64 `min:"100" type:"long" required:"true"`
 13867  
 13868  	// An optional nested statement that narrows the scope of the web requests that
 13869  	// are evaluated by the rate-based statement. Requests are only tracked by the
 13870  	// rate-based statement if they match the scope-down statement. You can use
 13871  	// any nestable Statement in the scope-down statement, and you can nest statements
 13872  	// at any level, the same as you can for a rule statement.
 13873  	ScopeDownStatement *Statement `type:"structure"`
 13874  }
 13875  
 13876  // String returns the string representation.
 13877  //
 13878  // API parameter values that are decorated as "sensitive" in the API will not
 13879  // be included in the string output. The member name will be present, but the
 13880  // value will be replaced with "sensitive".
 13881  func (s RateBasedStatement) String() string {
 13882  	return awsutil.Prettify(s)
 13883  }
 13884  
 13885  // GoString returns the string representation.
 13886  //
 13887  // API parameter values that are decorated as "sensitive" in the API will not
 13888  // be included in the string output. The member name will be present, but the
 13889  // value will be replaced with "sensitive".
 13890  func (s RateBasedStatement) GoString() string {
 13891  	return s.String()
 13892  }
 13893  
 13894  // Validate inspects the fields of the type to determine if they are valid.
 13895  func (s *RateBasedStatement) Validate() error {
 13896  	invalidParams := request.ErrInvalidParams{Context: "RateBasedStatement"}
 13897  	if s.AggregateKeyType == nil {
 13898  		invalidParams.Add(request.NewErrParamRequired("AggregateKeyType"))
 13899  	}
 13900  	if s.Limit == nil {
 13901  		invalidParams.Add(request.NewErrParamRequired("Limit"))
 13902  	}
 13903  	if s.Limit != nil && *s.Limit < 100 {
 13904  		invalidParams.Add(request.NewErrParamMinValue("Limit", 100))
 13905  	}
 13906  	if s.ForwardedIPConfig != nil {
 13907  		if err := s.ForwardedIPConfig.Validate(); err != nil {
 13908  			invalidParams.AddNested("ForwardedIPConfig", err.(request.ErrInvalidParams))
 13909  		}
 13910  	}
 13911  	if s.ScopeDownStatement != nil {
 13912  		if err := s.ScopeDownStatement.Validate(); err != nil {
 13913  			invalidParams.AddNested("ScopeDownStatement", err.(request.ErrInvalidParams))
 13914  		}
 13915  	}
 13916  
 13917  	if invalidParams.Len() > 0 {
 13918  		return invalidParams
 13919  	}
 13920  	return nil
 13921  }
 13922  
 13923  // SetAggregateKeyType sets the AggregateKeyType field's value.
 13924  func (s *RateBasedStatement) SetAggregateKeyType(v string) *RateBasedStatement {
 13925  	s.AggregateKeyType = &v
 13926  	return s
 13927  }
 13928  
 13929  // SetForwardedIPConfig sets the ForwardedIPConfig field's value.
 13930  func (s *RateBasedStatement) SetForwardedIPConfig(v *ForwardedIPConfig) *RateBasedStatement {
 13931  	s.ForwardedIPConfig = v
 13932  	return s
 13933  }
 13934  
 13935  // SetLimit sets the Limit field's value.
 13936  func (s *RateBasedStatement) SetLimit(v int64) *RateBasedStatement {
 13937  	s.Limit = &v
 13938  	return s
 13939  }
 13940  
 13941  // SetScopeDownStatement sets the ScopeDownStatement field's value.
 13942  func (s *RateBasedStatement) SetScopeDownStatement(v *Statement) *RateBasedStatement {
 13943  	s.ScopeDownStatement = v
 13944  	return s
 13945  }
 13946  
 13947  // The set of IP addresses that are currently blocked for a RateBasedStatement.
 13948  type RateBasedStatementManagedKeysIPSet struct {
 13949  	_ struct{} `type:"structure"`
 13950  
 13951  	// The IP addresses that are currently blocked.
 13952  	Addresses []*string `type:"list"`
 13953  
 13954  	// The version of the IP addresses, either IPV4 or IPV6.
 13955  	IPAddressVersion *string `type:"string" enum:"IPAddressVersion"`
 13956  }
 13957  
 13958  // String returns the string representation.
 13959  //
 13960  // API parameter values that are decorated as "sensitive" in the API will not
 13961  // be included in the string output. The member name will be present, but the
 13962  // value will be replaced with "sensitive".
 13963  func (s RateBasedStatementManagedKeysIPSet) String() string {
 13964  	return awsutil.Prettify(s)
 13965  }
 13966  
 13967  // GoString returns the string representation.
 13968  //
 13969  // API parameter values that are decorated as "sensitive" in the API will not
 13970  // be included in the string output. The member name will be present, but the
 13971  // value will be replaced with "sensitive".
 13972  func (s RateBasedStatementManagedKeysIPSet) GoString() string {
 13973  	return s.String()
 13974  }
 13975  
 13976  // SetAddresses sets the Addresses field's value.
 13977  func (s *RateBasedStatementManagedKeysIPSet) SetAddresses(v []*string) *RateBasedStatementManagedKeysIPSet {
 13978  	s.Addresses = v
 13979  	return s
 13980  }
 13981  
 13982  // SetIPAddressVersion sets the IPAddressVersion field's value.
 13983  func (s *RateBasedStatementManagedKeysIPSet) SetIPAddressVersion(v string) *RateBasedStatementManagedKeysIPSet {
 13984  	s.IPAddressVersion = &v
 13985  	return s
 13986  }
 13987  
 13988  // A single regular expression. This is used in a RegexPatternSet.
 13989  type Regex struct {
 13990  	_ struct{} `type:"structure"`
 13991  
 13992  	// The string representing the regular expression.
 13993  	RegexString *string `min:"1" type:"string"`
 13994  }
 13995  
 13996  // String returns the string representation.
 13997  //
 13998  // API parameter values that are decorated as "sensitive" in the API will not
 13999  // be included in the string output. The member name will be present, but the
 14000  // value will be replaced with "sensitive".
 14001  func (s Regex) String() string {
 14002  	return awsutil.Prettify(s)
 14003  }
 14004  
 14005  // GoString returns the string representation.
 14006  //
 14007  // API parameter values that are decorated as "sensitive" in the API will not
 14008  // be included in the string output. The member name will be present, but the
 14009  // value will be replaced with "sensitive".
 14010  func (s Regex) GoString() string {
 14011  	return s.String()
 14012  }
 14013  
 14014  // Validate inspects the fields of the type to determine if they are valid.
 14015  func (s *Regex) Validate() error {
 14016  	invalidParams := request.ErrInvalidParams{Context: "Regex"}
 14017  	if s.RegexString != nil && len(*s.RegexString) < 1 {
 14018  		invalidParams.Add(request.NewErrParamMinLen("RegexString", 1))
 14019  	}
 14020  
 14021  	if invalidParams.Len() > 0 {
 14022  		return invalidParams
 14023  	}
 14024  	return nil
 14025  }
 14026  
 14027  // SetRegexString sets the RegexString field's value.
 14028  func (s *Regex) SetRegexString(v string) *Regex {
 14029  	s.RegexString = &v
 14030  	return s
 14031  }
 14032  
 14033  // A rule statement used to search web request components for a match against
 14034  // a single regular expression.
 14035  type RegexMatchStatement struct {
 14036  	_ struct{} `type:"structure"`
 14037  
 14038  	// The part of a web request that you want WAF to inspect. For more information,
 14039  	// see FieldToMatch.
 14040  	//
 14041  	// FieldToMatch is a required field
 14042  	FieldToMatch *FieldToMatch `type:"structure" required:"true"`
 14043  
 14044  	// The string representing the regular expression.
 14045  	//
 14046  	// RegexString is a required field
 14047  	RegexString *string `min:"1" type:"string" required:"true"`
 14048  
 14049  	// Text transformations eliminate some of the unusual formatting that attackers
 14050  	// use in web requests in an effort to bypass detection. If you specify one
 14051  	// or more transformations in a rule statement, WAF performs all transformations
 14052  	// on the content of the request component identified by FieldToMatch, starting
 14053  	// from the lowest priority setting, before inspecting the content for a match.
 14054  	//
 14055  	// TextTransformations is a required field
 14056  	TextTransformations []*TextTransformation `min:"1" type:"list" required:"true"`
 14057  }
 14058  
 14059  // String returns the string representation.
 14060  //
 14061  // API parameter values that are decorated as "sensitive" in the API will not
 14062  // be included in the string output. The member name will be present, but the
 14063  // value will be replaced with "sensitive".
 14064  func (s RegexMatchStatement) String() string {
 14065  	return awsutil.Prettify(s)
 14066  }
 14067  
 14068  // GoString returns the string representation.
 14069  //
 14070  // API parameter values that are decorated as "sensitive" in the API will not
 14071  // be included in the string output. The member name will be present, but the
 14072  // value will be replaced with "sensitive".
 14073  func (s RegexMatchStatement) GoString() string {
 14074  	return s.String()
 14075  }
 14076  
 14077  // Validate inspects the fields of the type to determine if they are valid.
 14078  func (s *RegexMatchStatement) Validate() error {
 14079  	invalidParams := request.ErrInvalidParams{Context: "RegexMatchStatement"}
 14080  	if s.FieldToMatch == nil {
 14081  		invalidParams.Add(request.NewErrParamRequired("FieldToMatch"))
 14082  	}
 14083  	if s.RegexString == nil {
 14084  		invalidParams.Add(request.NewErrParamRequired("RegexString"))
 14085  	}
 14086  	if s.RegexString != nil && len(*s.RegexString) < 1 {
 14087  		invalidParams.Add(request.NewErrParamMinLen("RegexString", 1))
 14088  	}
 14089  	if s.TextTransformations == nil {
 14090  		invalidParams.Add(request.NewErrParamRequired("TextTransformations"))
 14091  	}
 14092  	if s.TextTransformations != nil && len(s.TextTransformations) < 1 {
 14093  		invalidParams.Add(request.NewErrParamMinLen("TextTransformations", 1))
 14094  	}
 14095  	if s.FieldToMatch != nil {
 14096  		if err := s.FieldToMatch.Validate(); err != nil {
 14097  			invalidParams.AddNested("FieldToMatch", err.(request.ErrInvalidParams))
 14098  		}
 14099  	}
 14100  	if s.TextTransformations != nil {
 14101  		for i, v := range s.TextTransformations {
 14102  			if v == nil {
 14103  				continue
 14104  			}
 14105  			if err := v.Validate(); err != nil {
 14106  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TextTransformations", i), err.(request.ErrInvalidParams))
 14107  			}
 14108  		}
 14109  	}
 14110  
 14111  	if invalidParams.Len() > 0 {
 14112  		return invalidParams
 14113  	}
 14114  	return nil
 14115  }
 14116  
 14117  // SetFieldToMatch sets the FieldToMatch field's value.
 14118  func (s *RegexMatchStatement) SetFieldToMatch(v *FieldToMatch) *RegexMatchStatement {
 14119  	s.FieldToMatch = v
 14120  	return s
 14121  }
 14122  
 14123  // SetRegexString sets the RegexString field's value.
 14124  func (s *RegexMatchStatement) SetRegexString(v string) *RegexMatchStatement {
 14125  	s.RegexString = &v
 14126  	return s
 14127  }
 14128  
 14129  // SetTextTransformations sets the TextTransformations field's value.
 14130  func (s *RegexMatchStatement) SetTextTransformations(v []*TextTransformation) *RegexMatchStatement {
 14131  	s.TextTransformations = v
 14132  	return s
 14133  }
 14134  
 14135  // Contains one or more regular expressions.
 14136  //
 14137  // WAF assigns an ARN to each RegexPatternSet that you create. To use a set
 14138  // in a rule, you provide the ARN to the Rule statement RegexPatternSetReferenceStatement.
 14139  type RegexPatternSet struct {
 14140  	_ struct{} `type:"structure"`
 14141  
 14142  	// The Amazon Resource Name (ARN) of the entity.
 14143  	ARN *string `min:"20" type:"string"`
 14144  
 14145  	// A description of the set that helps with identification.
 14146  	Description *string `min:"1" type:"string"`
 14147  
 14148  	// A unique identifier for the set. This ID is returned in the responses to
 14149  	// create and list commands. You provide it to operations like update and delete.
 14150  	Id *string `min:"1" type:"string"`
 14151  
 14152  	// The name of the set. You cannot change the name after you create the set.
 14153  	Name *string `min:"1" type:"string"`
 14154  
 14155  	// The regular expression patterns in the set.
 14156  	RegularExpressionList []*Regex `type:"list"`
 14157  }
 14158  
 14159  // String returns the string representation.
 14160  //
 14161  // API parameter values that are decorated as "sensitive" in the API will not
 14162  // be included in the string output. The member name will be present, but the
 14163  // value will be replaced with "sensitive".
 14164  func (s RegexPatternSet) String() string {
 14165  	return awsutil.Prettify(s)
 14166  }
 14167  
 14168  // GoString returns the string representation.
 14169  //
 14170  // API parameter values that are decorated as "sensitive" in the API will not
 14171  // be included in the string output. The member name will be present, but the
 14172  // value will be replaced with "sensitive".
 14173  func (s RegexPatternSet) GoString() string {
 14174  	return s.String()
 14175  }
 14176  
 14177  // SetARN sets the ARN field's value.
 14178  func (s *RegexPatternSet) SetARN(v string) *RegexPatternSet {
 14179  	s.ARN = &v
 14180  	return s
 14181  }
 14182  
 14183  // SetDescription sets the Description field's value.
 14184  func (s *RegexPatternSet) SetDescription(v string) *RegexPatternSet {
 14185  	s.Description = &v
 14186  	return s
 14187  }
 14188  
 14189  // SetId sets the Id field's value.
 14190  func (s *RegexPatternSet) SetId(v string) *RegexPatternSet {
 14191  	s.Id = &v
 14192  	return s
 14193  }
 14194  
 14195  // SetName sets the Name field's value.
 14196  func (s *RegexPatternSet) SetName(v string) *RegexPatternSet {
 14197  	s.Name = &v
 14198  	return s
 14199  }
 14200  
 14201  // SetRegularExpressionList sets the RegularExpressionList field's value.
 14202  func (s *RegexPatternSet) SetRegularExpressionList(v []*Regex) *RegexPatternSet {
 14203  	s.RegularExpressionList = v
 14204  	return s
 14205  }
 14206  
 14207  // A rule statement used to search web request components for matches with regular
 14208  // expressions. To use this, create a RegexPatternSet that specifies the expressions
 14209  // that you want to detect, then use the ARN of that set in this statement.
 14210  // A web request matches the pattern set rule statement if the request component
 14211  // matches any of the patterns in the set. To create a regex pattern set, see
 14212  // CreateRegexPatternSet.
 14213  //
 14214  // Each regex pattern set rule statement references a regex pattern set. You
 14215  // create and maintain the set independent of your rules. This allows you to
 14216  // use the single set in multiple rules. When you update the referenced set,
 14217  // WAF automatically updates all rules that reference it.
 14218  type RegexPatternSetReferenceStatement struct {
 14219  	_ struct{} `type:"structure"`
 14220  
 14221  	// The Amazon Resource Name (ARN) of the RegexPatternSet that this statement
 14222  	// references.
 14223  	//
 14224  	// ARN is a required field
 14225  	ARN *string `min:"20" type:"string" required:"true"`
 14226  
 14227  	// The part of a web request that you want WAF to inspect. For more information,
 14228  	// see FieldToMatch.
 14229  	//
 14230  	// FieldToMatch is a required field
 14231  	FieldToMatch *FieldToMatch `type:"structure" required:"true"`
 14232  
 14233  	// Text transformations eliminate some of the unusual formatting that attackers
 14234  	// use in web requests in an effort to bypass detection. If you specify one
 14235  	// or more transformations in a rule statement, WAF performs all transformations
 14236  	// on the content of the request component identified by FieldToMatch, starting
 14237  	// from the lowest priority setting, before inspecting the content for a match.
 14238  	//
 14239  	// TextTransformations is a required field
 14240  	TextTransformations []*TextTransformation `min:"1" type:"list" required:"true"`
 14241  }
 14242  
 14243  // String returns the string representation.
 14244  //
 14245  // API parameter values that are decorated as "sensitive" in the API will not
 14246  // be included in the string output. The member name will be present, but the
 14247  // value will be replaced with "sensitive".
 14248  func (s RegexPatternSetReferenceStatement) String() string {
 14249  	return awsutil.Prettify(s)
 14250  }
 14251  
 14252  // GoString returns the string representation.
 14253  //
 14254  // API parameter values that are decorated as "sensitive" in the API will not
 14255  // be included in the string output. The member name will be present, but the
 14256  // value will be replaced with "sensitive".
 14257  func (s RegexPatternSetReferenceStatement) GoString() string {
 14258  	return s.String()
 14259  }
 14260  
 14261  // Validate inspects the fields of the type to determine if they are valid.
 14262  func (s *RegexPatternSetReferenceStatement) Validate() error {
 14263  	invalidParams := request.ErrInvalidParams{Context: "RegexPatternSetReferenceStatement"}
 14264  	if s.ARN == nil {
 14265  		invalidParams.Add(request.NewErrParamRequired("ARN"))
 14266  	}
 14267  	if s.ARN != nil && len(*s.ARN) < 20 {
 14268  		invalidParams.Add(request.NewErrParamMinLen("ARN", 20))
 14269  	}
 14270  	if s.FieldToMatch == nil {
 14271  		invalidParams.Add(request.NewErrParamRequired("FieldToMatch"))
 14272  	}
 14273  	if s.TextTransformations == nil {
 14274  		invalidParams.Add(request.NewErrParamRequired("TextTransformations"))
 14275  	}
 14276  	if s.TextTransformations != nil && len(s.TextTransformations) < 1 {
 14277  		invalidParams.Add(request.NewErrParamMinLen("TextTransformations", 1))
 14278  	}
 14279  	if s.FieldToMatch != nil {
 14280  		if err := s.FieldToMatch.Validate(); err != nil {
 14281  			invalidParams.AddNested("FieldToMatch", err.(request.ErrInvalidParams))
 14282  		}
 14283  	}
 14284  	if s.TextTransformations != nil {
 14285  		for i, v := range s.TextTransformations {
 14286  			if v == nil {
 14287  				continue
 14288  			}
 14289  			if err := v.Validate(); err != nil {
 14290  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TextTransformations", i), err.(request.ErrInvalidParams))
 14291  			}
 14292  		}
 14293  	}
 14294  
 14295  	if invalidParams.Len() > 0 {
 14296  		return invalidParams
 14297  	}
 14298  	return nil
 14299  }
 14300  
 14301  // SetARN sets the ARN field's value.
 14302  func (s *RegexPatternSetReferenceStatement) SetARN(v string) *RegexPatternSetReferenceStatement {
 14303  	s.ARN = &v
 14304  	return s
 14305  }
 14306  
 14307  // SetFieldToMatch sets the FieldToMatch field's value.
 14308  func (s *RegexPatternSetReferenceStatement) SetFieldToMatch(v *FieldToMatch) *RegexPatternSetReferenceStatement {
 14309  	s.FieldToMatch = v
 14310  	return s
 14311  }
 14312  
 14313  // SetTextTransformations sets the TextTransformations field's value.
 14314  func (s *RegexPatternSetReferenceStatement) SetTextTransformations(v []*TextTransformation) *RegexPatternSetReferenceStatement {
 14315  	s.TextTransformations = v
 14316  	return s
 14317  }
 14318  
 14319  // High-level information about a RegexPatternSet, returned by operations like
 14320  // create and list. This provides information like the ID, that you can use
 14321  // to retrieve and manage a RegexPatternSet, and the ARN, that you provide to
 14322  // the RegexPatternSetReferenceStatement to use the pattern set in a Rule.
 14323  type RegexPatternSetSummary struct {
 14324  	_ struct{} `type:"structure"`
 14325  
 14326  	// The Amazon Resource Name (ARN) of the entity.
 14327  	ARN *string `min:"20" type:"string"`
 14328  
 14329  	// A description of the set that helps with identification.
 14330  	Description *string `min:"1" type:"string"`
 14331  
 14332  	// A unique identifier for the set. This ID is returned in the responses to
 14333  	// create and list commands. You provide it to operations like update and delete.
 14334  	Id *string `min:"1" type:"string"`
 14335  
 14336  	// A token used for optimistic locking. WAF returns a token to your get and
 14337  	// list requests, to mark the state of the entity at the time of the request.
 14338  	// To make changes to the entity associated with the token, you provide the
 14339  	// token to operations like update and delete. WAF uses the token to ensure
 14340  	// that no changes have been made to the entity since you last retrieved it.
 14341  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 14342  	// If this happens, perform another get, and use the new token returned by that
 14343  	// operation.
 14344  	LockToken *string `min:"1" type:"string"`
 14345  
 14346  	// The name of the data type instance. You cannot change the name after you
 14347  	// create the instance.
 14348  	Name *string `min:"1" type:"string"`
 14349  }
 14350  
 14351  // String returns the string representation.
 14352  //
 14353  // API parameter values that are decorated as "sensitive" in the API will not
 14354  // be included in the string output. The member name will be present, but the
 14355  // value will be replaced with "sensitive".
 14356  func (s RegexPatternSetSummary) String() string {
 14357  	return awsutil.Prettify(s)
 14358  }
 14359  
 14360  // GoString returns the string representation.
 14361  //
 14362  // API parameter values that are decorated as "sensitive" in the API will not
 14363  // be included in the string output. The member name will be present, but the
 14364  // value will be replaced with "sensitive".
 14365  func (s RegexPatternSetSummary) GoString() string {
 14366  	return s.String()
 14367  }
 14368  
 14369  // SetARN sets the ARN field's value.
 14370  func (s *RegexPatternSetSummary) SetARN(v string) *RegexPatternSetSummary {
 14371  	s.ARN = &v
 14372  	return s
 14373  }
 14374  
 14375  // SetDescription sets the Description field's value.
 14376  func (s *RegexPatternSetSummary) SetDescription(v string) *RegexPatternSetSummary {
 14377  	s.Description = &v
 14378  	return s
 14379  }
 14380  
 14381  // SetId sets the Id field's value.
 14382  func (s *RegexPatternSetSummary) SetId(v string) *RegexPatternSetSummary {
 14383  	s.Id = &v
 14384  	return s
 14385  }
 14386  
 14387  // SetLockToken sets the LockToken field's value.
 14388  func (s *RegexPatternSetSummary) SetLockToken(v string) *RegexPatternSetSummary {
 14389  	s.LockToken = &v
 14390  	return s
 14391  }
 14392  
 14393  // SetName sets the Name field's value.
 14394  func (s *RegexPatternSetSummary) SetName(v string) *RegexPatternSetSummary {
 14395  	s.Name = &v
 14396  	return s
 14397  }
 14398  
 14399  // A single rule, which you can use in a WebACL or RuleGroup to identify web
 14400  // requests that you want to allow, block, or count. Each rule includes one
 14401  // top-level Statement that WAF uses to identify matching web requests, and
 14402  // parameters that govern how WAF handles them.
 14403  type Rule struct {
 14404  	_ struct{} `type:"structure"`
 14405  
 14406  	// The action that WAF should take on a web request when it matches the rule
 14407  	// statement. Settings at the web ACL level can override the rule action setting.
 14408  	//
 14409  	// This is used only for rules whose statements do not reference a rule group.
 14410  	// Rule statements that reference a rule group include RuleGroupReferenceStatement
 14411  	// and ManagedRuleGroupStatement.
 14412  	//
 14413  	// You must specify either this Action setting or the rule OverrideAction setting,
 14414  	// but not both:
 14415  	//
 14416  	//    * If the rule statement does not reference a rule group, use this rule
 14417  	//    action setting and not the rule override action setting.
 14418  	//
 14419  	//    * If the rule statement references a rule group, use the override action
 14420  	//    setting and not this action setting.
 14421  	Action *RuleAction `type:"structure"`
 14422  
 14423  	// The name of the rule. You can't change the name of a Rule after you create
 14424  	// it.
 14425  	//
 14426  	// Name is a required field
 14427  	Name *string `min:"1" type:"string" required:"true"`
 14428  
 14429  	// The override action to apply to the rules in a rule group. Used only for
 14430  	// rule statements that reference a rule group, like RuleGroupReferenceStatement
 14431  	// and ManagedRuleGroupStatement.
 14432  	//
 14433  	// Set the override action to none to leave the rule actions in effect. Set
 14434  	// it to count to only count matches, regardless of the rule action settings.
 14435  	//
 14436  	// In a Rule, you must specify either this OverrideAction setting or the rule
 14437  	// Action setting, but not both:
 14438  	//
 14439  	//    * If the rule statement references a rule group, use this override action
 14440  	//    setting and not the action setting.
 14441  	//
 14442  	//    * If the rule statement does not reference a rule group, use the rule
 14443  	//    action setting and not this rule override action setting.
 14444  	OverrideAction *OverrideAction `type:"structure"`
 14445  
 14446  	// If you define more than one Rule in a WebACL, WAF evaluates each request
 14447  	// against the Rules in order based on the value of Priority. WAF processes
 14448  	// rules with lower priority first. The priorities don't need to be consecutive,
 14449  	// but they must all be different.
 14450  	//
 14451  	// Priority is a required field
 14452  	Priority *int64 `type:"integer" required:"true"`
 14453  
 14454  	// Labels to apply to web requests that match the rule match statement. WAF
 14455  	// applies fully qualified labels to matching web requests. A fully qualified
 14456  	// label is the concatenation of a label namespace and a rule label. The rule's
 14457  	// rule group or web ACL defines the label namespace.
 14458  	//
 14459  	// Rules that run after this rule in the web ACL can match against these labels
 14460  	// using a LabelMatchStatement.
 14461  	//
 14462  	// For each label, provide a case-sensitive string containing optional namespaces
 14463  	// and a label name, according to the following guidelines:
 14464  	//
 14465  	//    * Separate each component of the label with a colon.
 14466  	//
 14467  	//    * Each namespace or name can have up to 128 characters.
 14468  	//
 14469  	//    * You can specify up to 5 namespaces in a label.
 14470  	//
 14471  	//    * Don't use the following reserved words in your label specification:
 14472  	//    aws, waf, managed, rulegroup, webacl, regexpatternset, or ipset.
 14473  	//
 14474  	// For example, myLabelName or nameSpace1:nameSpace2:myLabelName.
 14475  	RuleLabels []*Label `type:"list"`
 14476  
 14477  	// The WAF processing statement for the rule, for example ByteMatchStatement
 14478  	// or SizeConstraintStatement.
 14479  	//
 14480  	// Statement is a required field
 14481  	Statement *Statement `type:"structure" required:"true"`
 14482  
 14483  	// Defines and enables Amazon CloudWatch metrics and web request sample collection.
 14484  	//
 14485  	// VisibilityConfig is a required field
 14486  	VisibilityConfig *VisibilityConfig `type:"structure" required:"true"`
 14487  }
 14488  
 14489  // String returns the string representation.
 14490  //
 14491  // API parameter values that are decorated as "sensitive" in the API will not
 14492  // be included in the string output. The member name will be present, but the
 14493  // value will be replaced with "sensitive".
 14494  func (s Rule) String() string {
 14495  	return awsutil.Prettify(s)
 14496  }
 14497  
 14498  // GoString returns the string representation.
 14499  //
 14500  // API parameter values that are decorated as "sensitive" in the API will not
 14501  // be included in the string output. The member name will be present, but the
 14502  // value will be replaced with "sensitive".
 14503  func (s Rule) GoString() string {
 14504  	return s.String()
 14505  }
 14506  
 14507  // Validate inspects the fields of the type to determine if they are valid.
 14508  func (s *Rule) Validate() error {
 14509  	invalidParams := request.ErrInvalidParams{Context: "Rule"}
 14510  	if s.Name == nil {
 14511  		invalidParams.Add(request.NewErrParamRequired("Name"))
 14512  	}
 14513  	if s.Name != nil && len(*s.Name) < 1 {
 14514  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 14515  	}
 14516  	if s.Priority == nil {
 14517  		invalidParams.Add(request.NewErrParamRequired("Priority"))
 14518  	}
 14519  	if s.Statement == nil {
 14520  		invalidParams.Add(request.NewErrParamRequired("Statement"))
 14521  	}
 14522  	if s.VisibilityConfig == nil {
 14523  		invalidParams.Add(request.NewErrParamRequired("VisibilityConfig"))
 14524  	}
 14525  	if s.Action != nil {
 14526  		if err := s.Action.Validate(); err != nil {
 14527  			invalidParams.AddNested("Action", err.(request.ErrInvalidParams))
 14528  		}
 14529  	}
 14530  	if s.OverrideAction != nil {
 14531  		if err := s.OverrideAction.Validate(); err != nil {
 14532  			invalidParams.AddNested("OverrideAction", err.(request.ErrInvalidParams))
 14533  		}
 14534  	}
 14535  	if s.RuleLabels != nil {
 14536  		for i, v := range s.RuleLabels {
 14537  			if v == nil {
 14538  				continue
 14539  			}
 14540  			if err := v.Validate(); err != nil {
 14541  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RuleLabels", i), err.(request.ErrInvalidParams))
 14542  			}
 14543  		}
 14544  	}
 14545  	if s.Statement != nil {
 14546  		if err := s.Statement.Validate(); err != nil {
 14547  			invalidParams.AddNested("Statement", err.(request.ErrInvalidParams))
 14548  		}
 14549  	}
 14550  	if s.VisibilityConfig != nil {
 14551  		if err := s.VisibilityConfig.Validate(); err != nil {
 14552  			invalidParams.AddNested("VisibilityConfig", err.(request.ErrInvalidParams))
 14553  		}
 14554  	}
 14555  
 14556  	if invalidParams.Len() > 0 {
 14557  		return invalidParams
 14558  	}
 14559  	return nil
 14560  }
 14561  
 14562  // SetAction sets the Action field's value.
 14563  func (s *Rule) SetAction(v *RuleAction) *Rule {
 14564  	s.Action = v
 14565  	return s
 14566  }
 14567  
 14568  // SetName sets the Name field's value.
 14569  func (s *Rule) SetName(v string) *Rule {
 14570  	s.Name = &v
 14571  	return s
 14572  }
 14573  
 14574  // SetOverrideAction sets the OverrideAction field's value.
 14575  func (s *Rule) SetOverrideAction(v *OverrideAction) *Rule {
 14576  	s.OverrideAction = v
 14577  	return s
 14578  }
 14579  
 14580  // SetPriority sets the Priority field's value.
 14581  func (s *Rule) SetPriority(v int64) *Rule {
 14582  	s.Priority = &v
 14583  	return s
 14584  }
 14585  
 14586  // SetRuleLabels sets the RuleLabels field's value.
 14587  func (s *Rule) SetRuleLabels(v []*Label) *Rule {
 14588  	s.RuleLabels = v
 14589  	return s
 14590  }
 14591  
 14592  // SetStatement sets the Statement field's value.
 14593  func (s *Rule) SetStatement(v *Statement) *Rule {
 14594  	s.Statement = v
 14595  	return s
 14596  }
 14597  
 14598  // SetVisibilityConfig sets the VisibilityConfig field's value.
 14599  func (s *Rule) SetVisibilityConfig(v *VisibilityConfig) *Rule {
 14600  	s.VisibilityConfig = v
 14601  	return s
 14602  }
 14603  
 14604  // The action that WAF should take on a web request when it matches a rule's
 14605  // statement. Settings at the web ACL level can override the rule action setting.
 14606  type RuleAction struct {
 14607  	_ struct{} `type:"structure"`
 14608  
 14609  	// Instructs WAF to allow the web request.
 14610  	Allow *AllowAction `type:"structure"`
 14611  
 14612  	// Instructs WAF to block the web request.
 14613  	Block *BlockAction `type:"structure"`
 14614  
 14615  	// Instructs WAF to count the web request and allow it.
 14616  	Count *CountAction `type:"structure"`
 14617  }
 14618  
 14619  // String returns the string representation.
 14620  //
 14621  // API parameter values that are decorated as "sensitive" in the API will not
 14622  // be included in the string output. The member name will be present, but the
 14623  // value will be replaced with "sensitive".
 14624  func (s RuleAction) String() string {
 14625  	return awsutil.Prettify(s)
 14626  }
 14627  
 14628  // GoString returns the string representation.
 14629  //
 14630  // API parameter values that are decorated as "sensitive" in the API will not
 14631  // be included in the string output. The member name will be present, but the
 14632  // value will be replaced with "sensitive".
 14633  func (s RuleAction) GoString() string {
 14634  	return s.String()
 14635  }
 14636  
 14637  // Validate inspects the fields of the type to determine if they are valid.
 14638  func (s *RuleAction) Validate() error {
 14639  	invalidParams := request.ErrInvalidParams{Context: "RuleAction"}
 14640  	if s.Allow != nil {
 14641  		if err := s.Allow.Validate(); err != nil {
 14642  			invalidParams.AddNested("Allow", err.(request.ErrInvalidParams))
 14643  		}
 14644  	}
 14645  	if s.Block != nil {
 14646  		if err := s.Block.Validate(); err != nil {
 14647  			invalidParams.AddNested("Block", err.(request.ErrInvalidParams))
 14648  		}
 14649  	}
 14650  	if s.Count != nil {
 14651  		if err := s.Count.Validate(); err != nil {
 14652  			invalidParams.AddNested("Count", err.(request.ErrInvalidParams))
 14653  		}
 14654  	}
 14655  
 14656  	if invalidParams.Len() > 0 {
 14657  		return invalidParams
 14658  	}
 14659  	return nil
 14660  }
 14661  
 14662  // SetAllow sets the Allow field's value.
 14663  func (s *RuleAction) SetAllow(v *AllowAction) *RuleAction {
 14664  	s.Allow = v
 14665  	return s
 14666  }
 14667  
 14668  // SetBlock sets the Block field's value.
 14669  func (s *RuleAction) SetBlock(v *BlockAction) *RuleAction {
 14670  	s.Block = v
 14671  	return s
 14672  }
 14673  
 14674  // SetCount sets the Count field's value.
 14675  func (s *RuleAction) SetCount(v *CountAction) *RuleAction {
 14676  	s.Count = v
 14677  	return s
 14678  }
 14679  
 14680  // A rule group defines a collection of rules to inspect and control web requests
 14681  // that you can use in a WebACL. When you create a rule group, you define an
 14682  // immutable capacity limit. If you update a rule group, you must stay within
 14683  // the capacity. This allows others to reuse the rule group with confidence
 14684  // in its capacity requirements.
 14685  type RuleGroup struct {
 14686  	_ struct{} `type:"structure"`
 14687  
 14688  	// The Amazon Resource Name (ARN) of the entity.
 14689  	//
 14690  	// ARN is a required field
 14691  	ARN *string `min:"20" type:"string" required:"true"`
 14692  
 14693  	// The labels that one or more rules in this rule group add to matching web
 14694  	// requests. These labels are defined in the RuleLabels for a Rule.
 14695  	AvailableLabels []*LabelSummary `type:"list"`
 14696  
 14697  	// The web ACL capacity units (WCUs) required for this rule group.
 14698  	//
 14699  	// When you create your own rule group, you define this, and you cannot change
 14700  	// it after creation. When you add or modify the rules in a rule group, WAF
 14701  	// enforces this limit. You can check the capacity for a set of rules using
 14702  	// CheckCapacity.
 14703  	//
 14704  	// WAF uses WCUs to calculate and control the operating resources that are used
 14705  	// to run your rules, rule groups, and web ACLs. WAF calculates capacity differently
 14706  	// for each rule type, to reflect the relative cost of each rule. Simple rules
 14707  	// that cost little to run use fewer WCUs than more complex rules that use more
 14708  	// processing power. Rule group capacity is fixed at creation, which helps users
 14709  	// plan their web ACL WCU usage when they use a rule group. The WCU limit for
 14710  	// web ACLs is 1,500.
 14711  	//
 14712  	// Capacity is a required field
 14713  	Capacity *int64 `min:"1" type:"long" required:"true"`
 14714  
 14715  	// The labels that one or more rules in this rule group match against in label
 14716  	// match statements. These labels are defined in a LabelMatchStatement specification,
 14717  	// in the Statement definition of a rule.
 14718  	ConsumedLabels []*LabelSummary `type:"list"`
 14719  
 14720  	// A map of custom response keys and content bodies. When you create a rule
 14721  	// with a block action, you can send a custom response to the web request. You
 14722  	// define these for the rule group, and then use them in the rules that you
 14723  	// define in the rule group.
 14724  	//
 14725  	// For information about customizing web requests and responses, see Customizing
 14726  	// web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
 14727  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
 14728  	//
 14729  	// For information about the limits on count and size for custom request and
 14730  	// response settings, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
 14731  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
 14732  	CustomResponseBodies map[string]*CustomResponseBody `min:"1" type:"map"`
 14733  
 14734  	// A description of the rule group that helps with identification.
 14735  	Description *string `min:"1" type:"string"`
 14736  
 14737  	// A unique identifier for the rule group. This ID is returned in the responses
 14738  	// to create and list commands. You provide it to operations like update and
 14739  	// delete.
 14740  	//
 14741  	// Id is a required field
 14742  	Id *string `min:"1" type:"string" required:"true"`
 14743  
 14744  	// The label namespace prefix for this rule group. All labels added by rules
 14745  	// in this rule group have this prefix.
 14746  	//
 14747  	//    * The syntax for the label namespace prefix for your rule groups is the
 14748  	//    following: awswaf:<account ID>:rulegroup:<rule group name>:
 14749  	//
 14750  	//    * When a rule with a label matches a web request, WAF adds the fully qualified
 14751  	//    label to the request. A fully qualified label is made up of the label
 14752  	//    namespace from the rule group or web ACL where the rule is defined and
 14753  	//    the label from the rule, separated by a colon: <label namespace>:<label
 14754  	//    from rule>
 14755  	LabelNamespace *string `min:"1" type:"string"`
 14756  
 14757  	// The name of the rule group. You cannot change the name of a rule group after
 14758  	// you create it.
 14759  	//
 14760  	// Name is a required field
 14761  	Name *string `min:"1" type:"string" required:"true"`
 14762  
 14763  	// The Rule statements used to identify the web requests that you want to allow,
 14764  	// block, or count. Each rule includes one top-level statement that WAF uses
 14765  	// to identify matching web requests, and parameters that govern how WAF handles
 14766  	// them.
 14767  	Rules []*Rule `type:"list"`
 14768  
 14769  	// Defines and enables Amazon CloudWatch metrics and web request sample collection.
 14770  	//
 14771  	// VisibilityConfig is a required field
 14772  	VisibilityConfig *VisibilityConfig `type:"structure" required:"true"`
 14773  }
 14774  
 14775  // String returns the string representation.
 14776  //
 14777  // API parameter values that are decorated as "sensitive" in the API will not
 14778  // be included in the string output. The member name will be present, but the
 14779  // value will be replaced with "sensitive".
 14780  func (s RuleGroup) String() string {
 14781  	return awsutil.Prettify(s)
 14782  }
 14783  
 14784  // GoString returns the string representation.
 14785  //
 14786  // API parameter values that are decorated as "sensitive" in the API will not
 14787  // be included in the string output. The member name will be present, but the
 14788  // value will be replaced with "sensitive".
 14789  func (s RuleGroup) GoString() string {
 14790  	return s.String()
 14791  }
 14792  
 14793  // SetARN sets the ARN field's value.
 14794  func (s *RuleGroup) SetARN(v string) *RuleGroup {
 14795  	s.ARN = &v
 14796  	return s
 14797  }
 14798  
 14799  // SetAvailableLabels sets the AvailableLabels field's value.
 14800  func (s *RuleGroup) SetAvailableLabels(v []*LabelSummary) *RuleGroup {
 14801  	s.AvailableLabels = v
 14802  	return s
 14803  }
 14804  
 14805  // SetCapacity sets the Capacity field's value.
 14806  func (s *RuleGroup) SetCapacity(v int64) *RuleGroup {
 14807  	s.Capacity = &v
 14808  	return s
 14809  }
 14810  
 14811  // SetConsumedLabels sets the ConsumedLabels field's value.
 14812  func (s *RuleGroup) SetConsumedLabels(v []*LabelSummary) *RuleGroup {
 14813  	s.ConsumedLabels = v
 14814  	return s
 14815  }
 14816  
 14817  // SetCustomResponseBodies sets the CustomResponseBodies field's value.
 14818  func (s *RuleGroup) SetCustomResponseBodies(v map[string]*CustomResponseBody) *RuleGroup {
 14819  	s.CustomResponseBodies = v
 14820  	return s
 14821  }
 14822  
 14823  // SetDescription sets the Description field's value.
 14824  func (s *RuleGroup) SetDescription(v string) *RuleGroup {
 14825  	s.Description = &v
 14826  	return s
 14827  }
 14828  
 14829  // SetId sets the Id field's value.
 14830  func (s *RuleGroup) SetId(v string) *RuleGroup {
 14831  	s.Id = &v
 14832  	return s
 14833  }
 14834  
 14835  // SetLabelNamespace sets the LabelNamespace field's value.
 14836  func (s *RuleGroup) SetLabelNamespace(v string) *RuleGroup {
 14837  	s.LabelNamespace = &v
 14838  	return s
 14839  }
 14840  
 14841  // SetName sets the Name field's value.
 14842  func (s *RuleGroup) SetName(v string) *RuleGroup {
 14843  	s.Name = &v
 14844  	return s
 14845  }
 14846  
 14847  // SetRules sets the Rules field's value.
 14848  func (s *RuleGroup) SetRules(v []*Rule) *RuleGroup {
 14849  	s.Rules = v
 14850  	return s
 14851  }
 14852  
 14853  // SetVisibilityConfig sets the VisibilityConfig field's value.
 14854  func (s *RuleGroup) SetVisibilityConfig(v *VisibilityConfig) *RuleGroup {
 14855  	s.VisibilityConfig = v
 14856  	return s
 14857  }
 14858  
 14859  // A rule statement used to run the rules that are defined in a RuleGroup. To
 14860  // use this, create a rule group with your rules, then provide the ARN of the
 14861  // rule group in this statement.
 14862  //
 14863  // You cannot nest a RuleGroupReferenceStatement, for example for use inside
 14864  // a NotStatement or OrStatement. You can only use a rule group reference statement
 14865  // at the top level inside a web ACL.
 14866  type RuleGroupReferenceStatement struct {
 14867  	_ struct{} `type:"structure"`
 14868  
 14869  	// The Amazon Resource Name (ARN) of the entity.
 14870  	//
 14871  	// ARN is a required field
 14872  	ARN *string `min:"20" type:"string" required:"true"`
 14873  
 14874  	// The names of rules that are in the referenced rule group, but that you want
 14875  	// WAF to exclude from processing for this rule statement.
 14876  	ExcludedRules []*ExcludedRule `type:"list"`
 14877  }
 14878  
 14879  // String returns the string representation.
 14880  //
 14881  // API parameter values that are decorated as "sensitive" in the API will not
 14882  // be included in the string output. The member name will be present, but the
 14883  // value will be replaced with "sensitive".
 14884  func (s RuleGroupReferenceStatement) String() string {
 14885  	return awsutil.Prettify(s)
 14886  }
 14887  
 14888  // GoString returns the string representation.
 14889  //
 14890  // API parameter values that are decorated as "sensitive" in the API will not
 14891  // be included in the string output. The member name will be present, but the
 14892  // value will be replaced with "sensitive".
 14893  func (s RuleGroupReferenceStatement) GoString() string {
 14894  	return s.String()
 14895  }
 14896  
 14897  // Validate inspects the fields of the type to determine if they are valid.
 14898  func (s *RuleGroupReferenceStatement) Validate() error {
 14899  	invalidParams := request.ErrInvalidParams{Context: "RuleGroupReferenceStatement"}
 14900  	if s.ARN == nil {
 14901  		invalidParams.Add(request.NewErrParamRequired("ARN"))
 14902  	}
 14903  	if s.ARN != nil && len(*s.ARN) < 20 {
 14904  		invalidParams.Add(request.NewErrParamMinLen("ARN", 20))
 14905  	}
 14906  	if s.ExcludedRules != nil {
 14907  		for i, v := range s.ExcludedRules {
 14908  			if v == nil {
 14909  				continue
 14910  			}
 14911  			if err := v.Validate(); err != nil {
 14912  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ExcludedRules", i), err.(request.ErrInvalidParams))
 14913  			}
 14914  		}
 14915  	}
 14916  
 14917  	if invalidParams.Len() > 0 {
 14918  		return invalidParams
 14919  	}
 14920  	return nil
 14921  }
 14922  
 14923  // SetARN sets the ARN field's value.
 14924  func (s *RuleGroupReferenceStatement) SetARN(v string) *RuleGroupReferenceStatement {
 14925  	s.ARN = &v
 14926  	return s
 14927  }
 14928  
 14929  // SetExcludedRules sets the ExcludedRules field's value.
 14930  func (s *RuleGroupReferenceStatement) SetExcludedRules(v []*ExcludedRule) *RuleGroupReferenceStatement {
 14931  	s.ExcludedRules = v
 14932  	return s
 14933  }
 14934  
 14935  // High-level information about a RuleGroup, returned by operations like create
 14936  // and list. This provides information like the ID, that you can use to retrieve
 14937  // and manage a RuleGroup, and the ARN, that you provide to the RuleGroupReferenceStatement
 14938  // to use the rule group in a Rule.
 14939  type RuleGroupSummary struct {
 14940  	_ struct{} `type:"structure"`
 14941  
 14942  	// The Amazon Resource Name (ARN) of the entity.
 14943  	ARN *string `min:"20" type:"string"`
 14944  
 14945  	// A description of the rule group that helps with identification.
 14946  	Description *string `min:"1" type:"string"`
 14947  
 14948  	// A unique identifier for the rule group. This ID is returned in the responses
 14949  	// to create and list commands. You provide it to operations like update and
 14950  	// delete.
 14951  	Id *string `min:"1" type:"string"`
 14952  
 14953  	// A token used for optimistic locking. WAF returns a token to your get and
 14954  	// list requests, to mark the state of the entity at the time of the request.
 14955  	// To make changes to the entity associated with the token, you provide the
 14956  	// token to operations like update and delete. WAF uses the token to ensure
 14957  	// that no changes have been made to the entity since you last retrieved it.
 14958  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 14959  	// If this happens, perform another get, and use the new token returned by that
 14960  	// operation.
 14961  	LockToken *string `min:"1" type:"string"`
 14962  
 14963  	// The name of the data type instance. You cannot change the name after you
 14964  	// create the instance.
 14965  	Name *string `min:"1" type:"string"`
 14966  }
 14967  
 14968  // String returns the string representation.
 14969  //
 14970  // API parameter values that are decorated as "sensitive" in the API will not
 14971  // be included in the string output. The member name will be present, but the
 14972  // value will be replaced with "sensitive".
 14973  func (s RuleGroupSummary) String() string {
 14974  	return awsutil.Prettify(s)
 14975  }
 14976  
 14977  // GoString returns the string representation.
 14978  //
 14979  // API parameter values that are decorated as "sensitive" in the API will not
 14980  // be included in the string output. The member name will be present, but the
 14981  // value will be replaced with "sensitive".
 14982  func (s RuleGroupSummary) GoString() string {
 14983  	return s.String()
 14984  }
 14985  
 14986  // SetARN sets the ARN field's value.
 14987  func (s *RuleGroupSummary) SetARN(v string) *RuleGroupSummary {
 14988  	s.ARN = &v
 14989  	return s
 14990  }
 14991  
 14992  // SetDescription sets the Description field's value.
 14993  func (s *RuleGroupSummary) SetDescription(v string) *RuleGroupSummary {
 14994  	s.Description = &v
 14995  	return s
 14996  }
 14997  
 14998  // SetId sets the Id field's value.
 14999  func (s *RuleGroupSummary) SetId(v string) *RuleGroupSummary {
 15000  	s.Id = &v
 15001  	return s
 15002  }
 15003  
 15004  // SetLockToken sets the LockToken field's value.
 15005  func (s *RuleGroupSummary) SetLockToken(v string) *RuleGroupSummary {
 15006  	s.LockToken = &v
 15007  	return s
 15008  }
 15009  
 15010  // SetName sets the Name field's value.
 15011  func (s *RuleGroupSummary) SetName(v string) *RuleGroupSummary {
 15012  	s.Name = &v
 15013  	return s
 15014  }
 15015  
 15016  // High-level information about a Rule, returned by operations like DescribeManagedRuleGroup.
 15017  // This provides information like the ID, that you can use to retrieve and manage
 15018  // a RuleGroup, and the ARN, that you provide to the RuleGroupReferenceStatement
 15019  // to use the rule group in a Rule.
 15020  type RuleSummary struct {
 15021  	_ struct{} `type:"structure"`
 15022  
 15023  	// The action that WAF should take on a web request when it matches a rule's
 15024  	// statement. Settings at the web ACL level can override the rule action setting.
 15025  	Action *RuleAction `type:"structure"`
 15026  
 15027  	// The name of the rule.
 15028  	Name *string `min:"1" type:"string"`
 15029  }
 15030  
 15031  // String returns the string representation.
 15032  //
 15033  // API parameter values that are decorated as "sensitive" in the API will not
 15034  // be included in the string output. The member name will be present, but the
 15035  // value will be replaced with "sensitive".
 15036  func (s RuleSummary) String() string {
 15037  	return awsutil.Prettify(s)
 15038  }
 15039  
 15040  // GoString returns the string representation.
 15041  //
 15042  // API parameter values that are decorated as "sensitive" in the API will not
 15043  // be included in the string output. The member name will be present, but the
 15044  // value will be replaced with "sensitive".
 15045  func (s RuleSummary) GoString() string {
 15046  	return s.String()
 15047  }
 15048  
 15049  // SetAction sets the Action field's value.
 15050  func (s *RuleSummary) SetAction(v *RuleAction) *RuleSummary {
 15051  	s.Action = v
 15052  	return s
 15053  }
 15054  
 15055  // SetName sets the Name field's value.
 15056  func (s *RuleSummary) SetName(v string) *RuleSummary {
 15057  	s.Name = &v
 15058  	return s
 15059  }
 15060  
 15061  // Represents a single sampled web request. The response from GetSampledRequests
 15062  // includes a SampledHTTPRequests complex type that appears as SampledRequests
 15063  // in the response syntax. SampledHTTPRequests contains an array of SampledHTTPRequest
 15064  // objects.
 15065  type SampledHTTPRequest struct {
 15066  	_ struct{} `type:"structure"`
 15067  
 15068  	// The action for the Rule that the request matched: ALLOW, BLOCK, or COUNT.
 15069  	Action *string `type:"string"`
 15070  
 15071  	// Labels applied to the web request by matching rules. WAF applies fully qualified
 15072  	// labels to matching web requests. A fully qualified label is the concatenation
 15073  	// of a label namespace and a rule label. The rule's rule group or web ACL defines
 15074  	// the label namespace.
 15075  	//
 15076  	// For example, awswaf:111122223333:myRuleGroup:testRules:testNS1:testNS2:labelNameA
 15077  	// or awswaf:managed:aws:managed-rule-set:header:encoding:utf8.
 15078  	Labels []*Label `type:"list"`
 15079  
 15080  	// A complex type that contains detailed information about the request.
 15081  	//
 15082  	// Request is a required field
 15083  	Request *HTTPRequest `type:"structure" required:"true"`
 15084  
 15085  	// Custom request headers inserted by WAF into the request, according to the
 15086  	// custom request configuration for the matching rule action.
 15087  	RequestHeadersInserted []*HTTPHeader `type:"list"`
 15088  
 15089  	// The response code that was sent for the request.
 15090  	ResponseCodeSent *int64 `min:"200" type:"integer"`
 15091  
 15092  	// The name of the Rule that the request matched. For managed rule groups, the
 15093  	// format for this name is <vendor name>#<managed rule group name>#<rule name>.
 15094  	// For your own rule groups, the format for this name is <rule group name>#<rule
 15095  	// name>. If the rule is not in a rule group, this field is absent.
 15096  	RuleNameWithinRuleGroup *string `min:"1" type:"string"`
 15097  
 15098  	// The time at which WAF received the request from your Amazon Web Services
 15099  	// resource, in Unix time format (in seconds).
 15100  	Timestamp *time.Time `type:"timestamp"`
 15101  
 15102  	// A value that indicates how one result in the response relates proportionally
 15103  	// to other results in the response. For example, a result that has a weight
 15104  	// of 2 represents roughly twice as many web requests as a result that has a
 15105  	// weight of 1.
 15106  	//
 15107  	// Weight is a required field
 15108  	Weight *int64 `type:"long" required:"true"`
 15109  }
 15110  
 15111  // String returns the string representation.
 15112  //
 15113  // API parameter values that are decorated as "sensitive" in the API will not
 15114  // be included in the string output. The member name will be present, but the
 15115  // value will be replaced with "sensitive".
 15116  func (s SampledHTTPRequest) String() string {
 15117  	return awsutil.Prettify(s)
 15118  }
 15119  
 15120  // GoString returns the string representation.
 15121  //
 15122  // API parameter values that are decorated as "sensitive" in the API will not
 15123  // be included in the string output. The member name will be present, but the
 15124  // value will be replaced with "sensitive".
 15125  func (s SampledHTTPRequest) GoString() string {
 15126  	return s.String()
 15127  }
 15128  
 15129  // SetAction sets the Action field's value.
 15130  func (s *SampledHTTPRequest) SetAction(v string) *SampledHTTPRequest {
 15131  	s.Action = &v
 15132  	return s
 15133  }
 15134  
 15135  // SetLabels sets the Labels field's value.
 15136  func (s *SampledHTTPRequest) SetLabels(v []*Label) *SampledHTTPRequest {
 15137  	s.Labels = v
 15138  	return s
 15139  }
 15140  
 15141  // SetRequest sets the Request field's value.
 15142  func (s *SampledHTTPRequest) SetRequest(v *HTTPRequest) *SampledHTTPRequest {
 15143  	s.Request = v
 15144  	return s
 15145  }
 15146  
 15147  // SetRequestHeadersInserted sets the RequestHeadersInserted field's value.
 15148  func (s *SampledHTTPRequest) SetRequestHeadersInserted(v []*HTTPHeader) *SampledHTTPRequest {
 15149  	s.RequestHeadersInserted = v
 15150  	return s
 15151  }
 15152  
 15153  // SetResponseCodeSent sets the ResponseCodeSent field's value.
 15154  func (s *SampledHTTPRequest) SetResponseCodeSent(v int64) *SampledHTTPRequest {
 15155  	s.ResponseCodeSent = &v
 15156  	return s
 15157  }
 15158  
 15159  // SetRuleNameWithinRuleGroup sets the RuleNameWithinRuleGroup field's value.
 15160  func (s *SampledHTTPRequest) SetRuleNameWithinRuleGroup(v string) *SampledHTTPRequest {
 15161  	s.RuleNameWithinRuleGroup = &v
 15162  	return s
 15163  }
 15164  
 15165  // SetTimestamp sets the Timestamp field's value.
 15166  func (s *SampledHTTPRequest) SetTimestamp(v time.Time) *SampledHTTPRequest {
 15167  	s.Timestamp = &v
 15168  	return s
 15169  }
 15170  
 15171  // SetWeight sets the Weight field's value.
 15172  func (s *SampledHTTPRequest) SetWeight(v int64) *SampledHTTPRequest {
 15173  	s.Weight = &v
 15174  	return s
 15175  }
 15176  
 15177  // One of the headers in a web request, identified by name, for example, User-Agent
 15178  // or Referer. This setting isn't case sensitive.
 15179  //
 15180  // This is used only to indicate the web request component for WAF to inspect,
 15181  // in the FieldToMatch specification.
 15182  //
 15183  // Example JSON: "SingleHeader": { "Name": "haystack" }
 15184  type SingleHeader struct {
 15185  	_ struct{} `type:"structure"`
 15186  
 15187  	// The name of the query header to inspect.
 15188  	//
 15189  	// Name is a required field
 15190  	Name *string `min:"1" type:"string" required:"true"`
 15191  }
 15192  
 15193  // String returns the string representation.
 15194  //
 15195  // API parameter values that are decorated as "sensitive" in the API will not
 15196  // be included in the string output. The member name will be present, but the
 15197  // value will be replaced with "sensitive".
 15198  func (s SingleHeader) String() string {
 15199  	return awsutil.Prettify(s)
 15200  }
 15201  
 15202  // GoString returns the string representation.
 15203  //
 15204  // API parameter values that are decorated as "sensitive" in the API will not
 15205  // be included in the string output. The member name will be present, but the
 15206  // value will be replaced with "sensitive".
 15207  func (s SingleHeader) GoString() string {
 15208  	return s.String()
 15209  }
 15210  
 15211  // Validate inspects the fields of the type to determine if they are valid.
 15212  func (s *SingleHeader) Validate() error {
 15213  	invalidParams := request.ErrInvalidParams{Context: "SingleHeader"}
 15214  	if s.Name == nil {
 15215  		invalidParams.Add(request.NewErrParamRequired("Name"))
 15216  	}
 15217  	if s.Name != nil && len(*s.Name) < 1 {
 15218  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 15219  	}
 15220  
 15221  	if invalidParams.Len() > 0 {
 15222  		return invalidParams
 15223  	}
 15224  	return nil
 15225  }
 15226  
 15227  // SetName sets the Name field's value.
 15228  func (s *SingleHeader) SetName(v string) *SingleHeader {
 15229  	s.Name = &v
 15230  	return s
 15231  }
 15232  
 15233  // One query argument in a web request, identified by name, for example UserName
 15234  // or SalesRegion. The name can be up to 30 characters long and isn't case sensitive.
 15235  //
 15236  // Example JSON: "SingleQueryArgument": { "Name": "myArgument" }
 15237  type SingleQueryArgument struct {
 15238  	_ struct{} `type:"structure"`
 15239  
 15240  	// The name of the query argument to inspect.
 15241  	//
 15242  	// Name is a required field
 15243  	Name *string `min:"1" type:"string" required:"true"`
 15244  }
 15245  
 15246  // String returns the string representation.
 15247  //
 15248  // API parameter values that are decorated as "sensitive" in the API will not
 15249  // be included in the string output. The member name will be present, but the
 15250  // value will be replaced with "sensitive".
 15251  func (s SingleQueryArgument) String() string {
 15252  	return awsutil.Prettify(s)
 15253  }
 15254  
 15255  // GoString returns the string representation.
 15256  //
 15257  // API parameter values that are decorated as "sensitive" in the API will not
 15258  // be included in the string output. The member name will be present, but the
 15259  // value will be replaced with "sensitive".
 15260  func (s SingleQueryArgument) GoString() string {
 15261  	return s.String()
 15262  }
 15263  
 15264  // Validate inspects the fields of the type to determine if they are valid.
 15265  func (s *SingleQueryArgument) Validate() error {
 15266  	invalidParams := request.ErrInvalidParams{Context: "SingleQueryArgument"}
 15267  	if s.Name == nil {
 15268  		invalidParams.Add(request.NewErrParamRequired("Name"))
 15269  	}
 15270  	if s.Name != nil && len(*s.Name) < 1 {
 15271  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 15272  	}
 15273  
 15274  	if invalidParams.Len() > 0 {
 15275  		return invalidParams
 15276  	}
 15277  	return nil
 15278  }
 15279  
 15280  // SetName sets the Name field's value.
 15281  func (s *SingleQueryArgument) SetName(v string) *SingleQueryArgument {
 15282  	s.Name = &v
 15283  	return s
 15284  }
 15285  
 15286  // A rule statement that compares a number of bytes against the size of a request
 15287  // component, using a comparison operator, such as greater than (>) or less
 15288  // than (<). For example, you can use a size constraint statement to look for
 15289  // query strings that are longer than 100 bytes.
 15290  //
 15291  // If you configure WAF to inspect the request body, WAF inspects only the first
 15292  // 8192 bytes (8 KB). If the request body for your web requests never exceeds
 15293  // 8192 bytes, you can create a size constraint condition and block requests
 15294  // that have a request body greater than 8192 bytes.
 15295  //
 15296  // If you choose URI for the value of Part of the request to filter on, the
 15297  // slash (/) in the URI counts as one character. For example, the URI /logo.jpg
 15298  // is nine characters long.
 15299  type SizeConstraintStatement struct {
 15300  	_ struct{} `type:"structure"`
 15301  
 15302  	// The operator to use to compare the request part to the size setting.
 15303  	//
 15304  	// ComparisonOperator is a required field
 15305  	ComparisonOperator *string `type:"string" required:"true" enum:"ComparisonOperator"`
 15306  
 15307  	// The part of a web request that you want WAF to inspect. For more information,
 15308  	// see FieldToMatch.
 15309  	//
 15310  	// FieldToMatch is a required field
 15311  	FieldToMatch *FieldToMatch `type:"structure" required:"true"`
 15312  
 15313  	// The size, in byte, to compare to the request part, after any transformations.
 15314  	//
 15315  	// Size is a required field
 15316  	Size *int64 `type:"long" required:"true"`
 15317  
 15318  	// Text transformations eliminate some of the unusual formatting that attackers
 15319  	// use in web requests in an effort to bypass detection. If you specify one
 15320  	// or more transformations in a rule statement, WAF performs all transformations
 15321  	// on the content of the request component identified by FieldToMatch, starting
 15322  	// from the lowest priority setting, before inspecting the content for a match.
 15323  	//
 15324  	// TextTransformations is a required field
 15325  	TextTransformations []*TextTransformation `min:"1" type:"list" required:"true"`
 15326  }
 15327  
 15328  // String returns the string representation.
 15329  //
 15330  // API parameter values that are decorated as "sensitive" in the API will not
 15331  // be included in the string output. The member name will be present, but the
 15332  // value will be replaced with "sensitive".
 15333  func (s SizeConstraintStatement) String() string {
 15334  	return awsutil.Prettify(s)
 15335  }
 15336  
 15337  // GoString returns the string representation.
 15338  //
 15339  // API parameter values that are decorated as "sensitive" in the API will not
 15340  // be included in the string output. The member name will be present, but the
 15341  // value will be replaced with "sensitive".
 15342  func (s SizeConstraintStatement) GoString() string {
 15343  	return s.String()
 15344  }
 15345  
 15346  // Validate inspects the fields of the type to determine if they are valid.
 15347  func (s *SizeConstraintStatement) Validate() error {
 15348  	invalidParams := request.ErrInvalidParams{Context: "SizeConstraintStatement"}
 15349  	if s.ComparisonOperator == nil {
 15350  		invalidParams.Add(request.NewErrParamRequired("ComparisonOperator"))
 15351  	}
 15352  	if s.FieldToMatch == nil {
 15353  		invalidParams.Add(request.NewErrParamRequired("FieldToMatch"))
 15354  	}
 15355  	if s.Size == nil {
 15356  		invalidParams.Add(request.NewErrParamRequired("Size"))
 15357  	}
 15358  	if s.TextTransformations == nil {
 15359  		invalidParams.Add(request.NewErrParamRequired("TextTransformations"))
 15360  	}
 15361  	if s.TextTransformations != nil && len(s.TextTransformations) < 1 {
 15362  		invalidParams.Add(request.NewErrParamMinLen("TextTransformations", 1))
 15363  	}
 15364  	if s.FieldToMatch != nil {
 15365  		if err := s.FieldToMatch.Validate(); err != nil {
 15366  			invalidParams.AddNested("FieldToMatch", err.(request.ErrInvalidParams))
 15367  		}
 15368  	}
 15369  	if s.TextTransformations != nil {
 15370  		for i, v := range s.TextTransformations {
 15371  			if v == nil {
 15372  				continue
 15373  			}
 15374  			if err := v.Validate(); err != nil {
 15375  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TextTransformations", i), err.(request.ErrInvalidParams))
 15376  			}
 15377  		}
 15378  	}
 15379  
 15380  	if invalidParams.Len() > 0 {
 15381  		return invalidParams
 15382  	}
 15383  	return nil
 15384  }
 15385  
 15386  // SetComparisonOperator sets the ComparisonOperator field's value.
 15387  func (s *SizeConstraintStatement) SetComparisonOperator(v string) *SizeConstraintStatement {
 15388  	s.ComparisonOperator = &v
 15389  	return s
 15390  }
 15391  
 15392  // SetFieldToMatch sets the FieldToMatch field's value.
 15393  func (s *SizeConstraintStatement) SetFieldToMatch(v *FieldToMatch) *SizeConstraintStatement {
 15394  	s.FieldToMatch = v
 15395  	return s
 15396  }
 15397  
 15398  // SetSize sets the Size field's value.
 15399  func (s *SizeConstraintStatement) SetSize(v int64) *SizeConstraintStatement {
 15400  	s.Size = &v
 15401  	return s
 15402  }
 15403  
 15404  // SetTextTransformations sets the TextTransformations field's value.
 15405  func (s *SizeConstraintStatement) SetTextTransformations(v []*TextTransformation) *SizeConstraintStatement {
 15406  	s.TextTransformations = v
 15407  	return s
 15408  }
 15409  
 15410  // Attackers sometimes insert malicious SQL code into web requests in an effort
 15411  // to extract data from your database. To allow or block web requests that appear
 15412  // to contain malicious SQL code, create one or more SQL injection match conditions.
 15413  // An SQL injection match condition identifies the part of web requests, such
 15414  // as the URI or the query string, that you want WAF to inspect. Later in the
 15415  // process, when you create a web ACL, you specify whether to allow or block
 15416  // requests that appear to contain malicious SQL code.
 15417  type SqliMatchStatement struct {
 15418  	_ struct{} `type:"structure"`
 15419  
 15420  	// The part of a web request that you want WAF to inspect. For more information,
 15421  	// see FieldToMatch.
 15422  	//
 15423  	// FieldToMatch is a required field
 15424  	FieldToMatch *FieldToMatch `type:"structure" required:"true"`
 15425  
 15426  	// Text transformations eliminate some of the unusual formatting that attackers
 15427  	// use in web requests in an effort to bypass detection. If you specify one
 15428  	// or more transformations in a rule statement, WAF performs all transformations
 15429  	// on the content of the request component identified by FieldToMatch, starting
 15430  	// from the lowest priority setting, before inspecting the content for a match.
 15431  	//
 15432  	// TextTransformations is a required field
 15433  	TextTransformations []*TextTransformation `min:"1" type:"list" required:"true"`
 15434  }
 15435  
 15436  // String returns the string representation.
 15437  //
 15438  // API parameter values that are decorated as "sensitive" in the API will not
 15439  // be included in the string output. The member name will be present, but the
 15440  // value will be replaced with "sensitive".
 15441  func (s SqliMatchStatement) String() string {
 15442  	return awsutil.Prettify(s)
 15443  }
 15444  
 15445  // GoString returns the string representation.
 15446  //
 15447  // API parameter values that are decorated as "sensitive" in the API will not
 15448  // be included in the string output. The member name will be present, but the
 15449  // value will be replaced with "sensitive".
 15450  func (s SqliMatchStatement) GoString() string {
 15451  	return s.String()
 15452  }
 15453  
 15454  // Validate inspects the fields of the type to determine if they are valid.
 15455  func (s *SqliMatchStatement) Validate() error {
 15456  	invalidParams := request.ErrInvalidParams{Context: "SqliMatchStatement"}
 15457  	if s.FieldToMatch == nil {
 15458  		invalidParams.Add(request.NewErrParamRequired("FieldToMatch"))
 15459  	}
 15460  	if s.TextTransformations == nil {
 15461  		invalidParams.Add(request.NewErrParamRequired("TextTransformations"))
 15462  	}
 15463  	if s.TextTransformations != nil && len(s.TextTransformations) < 1 {
 15464  		invalidParams.Add(request.NewErrParamMinLen("TextTransformations", 1))
 15465  	}
 15466  	if s.FieldToMatch != nil {
 15467  		if err := s.FieldToMatch.Validate(); err != nil {
 15468  			invalidParams.AddNested("FieldToMatch", err.(request.ErrInvalidParams))
 15469  		}
 15470  	}
 15471  	if s.TextTransformations != nil {
 15472  		for i, v := range s.TextTransformations {
 15473  			if v == nil {
 15474  				continue
 15475  			}
 15476  			if err := v.Validate(); err != nil {
 15477  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TextTransformations", i), err.(request.ErrInvalidParams))
 15478  			}
 15479  		}
 15480  	}
 15481  
 15482  	if invalidParams.Len() > 0 {
 15483  		return invalidParams
 15484  	}
 15485  	return nil
 15486  }
 15487  
 15488  // SetFieldToMatch sets the FieldToMatch field's value.
 15489  func (s *SqliMatchStatement) SetFieldToMatch(v *FieldToMatch) *SqliMatchStatement {
 15490  	s.FieldToMatch = v
 15491  	return s
 15492  }
 15493  
 15494  // SetTextTransformations sets the TextTransformations field's value.
 15495  func (s *SqliMatchStatement) SetTextTransformations(v []*TextTransformation) *SqliMatchStatement {
 15496  	s.TextTransformations = v
 15497  	return s
 15498  }
 15499  
 15500  // The processing guidance for a Rule, used by WAF to determine whether a web
 15501  // request matches the rule.
 15502  type Statement struct {
 15503  	_ struct{} `type:"structure"`
 15504  
 15505  	// A logical rule statement used to combine other rule statements with AND logic.
 15506  	// You provide more than one Statement within the AndStatement.
 15507  	AndStatement *AndStatement `type:"structure"`
 15508  
 15509  	// A rule statement that defines a string match search for WAF to apply to web
 15510  	// requests. The byte match statement provides the bytes to search for, the
 15511  	// location in requests that you want WAF to search, and other settings. The
 15512  	// bytes to search for are typically a string that corresponds with ASCII characters.
 15513  	// In the WAF console and the developer guide, this is refered to as a string
 15514  	// match statement.
 15515  	ByteMatchStatement *ByteMatchStatement `type:"structure"`
 15516  
 15517  	// A rule statement used to identify web requests based on country of origin.
 15518  	GeoMatchStatement *GeoMatchStatement `type:"structure"`
 15519  
 15520  	// A rule statement used to detect web requests coming from particular IP addresses
 15521  	// or address ranges. To use this, create an IPSet that specifies the addresses
 15522  	// you want to detect, then use the ARN of that set in this statement. To create
 15523  	// an IP set, see CreateIPSet.
 15524  	//
 15525  	// Each IP set rule statement references an IP set. You create and maintain
 15526  	// the set independent of your rules. This allows you to use the single set
 15527  	// in multiple rules. When you update the referenced set, WAF automatically
 15528  	// updates all rules that reference it.
 15529  	IPSetReferenceStatement *IPSetReferenceStatement `type:"structure"`
 15530  
 15531  	// A rule statement that defines a string match search against labels that have
 15532  	// been added to the web request by rules that have already run in the web ACL.
 15533  	//
 15534  	// The label match statement provides the label or namespace string to search
 15535  	// for. The label string can represent a part or all of the fully qualified
 15536  	// label name that had been added to the web request. Fully qualified labels
 15537  	// have a prefix, optional namespaces, and label name. The prefix identifies
 15538  	// the rule group or web ACL context of the rule that added the label. If you
 15539  	// do not provide the fully qualified name in your label match string, WAF performs
 15540  	// the search for labels that were added in the same context as the label match
 15541  	// statement.
 15542  	LabelMatchStatement *LabelMatchStatement `type:"structure"`
 15543  
 15544  	// A rule statement used to run the rules that are defined in a managed rule
 15545  	// group. To use this, provide the vendor name and the name of the rule group
 15546  	// in this statement. You can retrieve the required names by calling ListAvailableManagedRuleGroups.
 15547  	//
 15548  	// You cannot nest a ManagedRuleGroupStatement, for example for use inside a
 15549  	// NotStatement or OrStatement. It can only be referenced as a top-level statement
 15550  	// within a rule.
 15551  	ManagedRuleGroupStatement *ManagedRuleGroupStatement `type:"structure"`
 15552  
 15553  	// A logical rule statement used to negate the results of another rule statement.
 15554  	// You provide one Statement within the NotStatement.
 15555  	NotStatement *NotStatement `type:"structure"`
 15556  
 15557  	// A logical rule statement used to combine other rule statements with OR logic.
 15558  	// You provide more than one Statement within the OrStatement.
 15559  	OrStatement *OrStatement `type:"structure"`
 15560  
 15561  	// A rate-based rule tracks the rate of requests for each originating IP address,
 15562  	// and triggers the rule action when the rate exceeds a limit that you specify
 15563  	// on the number of requests in any 5-minute time span. You can use this to
 15564  	// put a temporary block on requests from an IP address that is sending excessive
 15565  	// requests.
 15566  	//
 15567  	// WAF tracks and manages web requests separately for each instance of a rate-based
 15568  	// rule that you use. For example, if you provide the same rate-based rule settings
 15569  	// in two web ACLs, each of the two rule statements represents a separate instance
 15570  	// of the rate-based rule and gets its own tracking and management by WAF. If
 15571  	// you define a rate-based rule inside a rule group, and then use that rule
 15572  	// group in multiple places, each use creates a separate instance of the rate-based
 15573  	// rule that gets its own tracking and management by WAF.
 15574  	//
 15575  	// When the rule action triggers, WAF blocks additional requests from the IP
 15576  	// address until the request rate falls below the limit.
 15577  	//
 15578  	// You can optionally nest another statement inside the rate-based statement,
 15579  	// to narrow the scope of the rule so that it only counts requests that match
 15580  	// the nested statement. For example, based on recent requests that you have
 15581  	// seen from an attacker, you might create a rate-based rule with a nested AND
 15582  	// rule statement that contains the following nested statements:
 15583  	//
 15584  	//    * An IP match statement with an IP set that specified the address 192.0.2.44.
 15585  	//
 15586  	//    * A string match statement that searches in the User-Agent header for
 15587  	//    the string BadBot.
 15588  	//
 15589  	// In this rate-based rule, you also define a rate limit. For this example,
 15590  	// the rate limit is 1,000. Requests that meet both of the conditions in the
 15591  	// statements are counted. If the count exceeds 1,000 requests per five minutes,
 15592  	// the rule action triggers. Requests that do not meet both conditions are not
 15593  	// counted towards the rate limit and are not affected by this rule.
 15594  	//
 15595  	// You cannot nest a RateBasedStatement inside another statement, for example
 15596  	// inside a NotStatement or OrStatement. You can define a RateBasedStatement
 15597  	// inside a web ACL and inside a rule group.
 15598  	RateBasedStatement *RateBasedStatement `type:"structure"`
 15599  
 15600  	// A rule statement used to search web request components for a match against
 15601  	// a single regular expression.
 15602  	RegexMatchStatement *RegexMatchStatement `type:"structure"`
 15603  
 15604  	// A rule statement used to search web request components for matches with regular
 15605  	// expressions. To use this, create a RegexPatternSet that specifies the expressions
 15606  	// that you want to detect, then use the ARN of that set in this statement.
 15607  	// A web request matches the pattern set rule statement if the request component
 15608  	// matches any of the patterns in the set. To create a regex pattern set, see
 15609  	// CreateRegexPatternSet.
 15610  	//
 15611  	// Each regex pattern set rule statement references a regex pattern set. You
 15612  	// create and maintain the set independent of your rules. This allows you to
 15613  	// use the single set in multiple rules. When you update the referenced set,
 15614  	// WAF automatically updates all rules that reference it.
 15615  	RegexPatternSetReferenceStatement *RegexPatternSetReferenceStatement `type:"structure"`
 15616  
 15617  	// A rule statement used to run the rules that are defined in a RuleGroup. To
 15618  	// use this, create a rule group with your rules, then provide the ARN of the
 15619  	// rule group in this statement.
 15620  	//
 15621  	// You cannot nest a RuleGroupReferenceStatement, for example for use inside
 15622  	// a NotStatement or OrStatement. You can only use a rule group reference statement
 15623  	// at the top level inside a web ACL.
 15624  	RuleGroupReferenceStatement *RuleGroupReferenceStatement `type:"structure"`
 15625  
 15626  	// A rule statement that compares a number of bytes against the size of a request
 15627  	// component, using a comparison operator, such as greater than (>) or less
 15628  	// than (<). For example, you can use a size constraint statement to look for
 15629  	// query strings that are longer than 100 bytes.
 15630  	//
 15631  	// If you configure WAF to inspect the request body, WAF inspects only the first
 15632  	// 8192 bytes (8 KB). If the request body for your web requests never exceeds
 15633  	// 8192 bytes, you can create a size constraint condition and block requests
 15634  	// that have a request body greater than 8192 bytes.
 15635  	//
 15636  	// If you choose URI for the value of Part of the request to filter on, the
 15637  	// slash (/) in the URI counts as one character. For example, the URI /logo.jpg
 15638  	// is nine characters long.
 15639  	SizeConstraintStatement *SizeConstraintStatement `type:"structure"`
 15640  
 15641  	// Attackers sometimes insert malicious SQL code into web requests in an effort
 15642  	// to extract data from your database. To allow or block web requests that appear
 15643  	// to contain malicious SQL code, create one or more SQL injection match conditions.
 15644  	// An SQL injection match condition identifies the part of web requests, such
 15645  	// as the URI or the query string, that you want WAF to inspect. Later in the
 15646  	// process, when you create a web ACL, you specify whether to allow or block
 15647  	// requests that appear to contain malicious SQL code.
 15648  	SqliMatchStatement *SqliMatchStatement `type:"structure"`
 15649  
 15650  	// A rule statement that defines a cross-site scripting (XSS) match search for
 15651  	// WAF to apply to web requests. XSS attacks are those where the attacker uses
 15652  	// vulnerabilities in a benign website as a vehicle to inject malicious client-site
 15653  	// scripts into other legitimate web browsers. The XSS match statement provides
 15654  	// the location in requests that you want WAF to search and text transformations
 15655  	// to use on the search area before WAF searches for character sequences that
 15656  	// are likely to be malicious strings.
 15657  	XssMatchStatement *XssMatchStatement `type:"structure"`
 15658  }
 15659  
 15660  // String returns the string representation.
 15661  //
 15662  // API parameter values that are decorated as "sensitive" in the API will not
 15663  // be included in the string output. The member name will be present, but the
 15664  // value will be replaced with "sensitive".
 15665  func (s Statement) String() string {
 15666  	return awsutil.Prettify(s)
 15667  }
 15668  
 15669  // GoString returns the string representation.
 15670  //
 15671  // API parameter values that are decorated as "sensitive" in the API will not
 15672  // be included in the string output. The member name will be present, but the
 15673  // value will be replaced with "sensitive".
 15674  func (s Statement) GoString() string {
 15675  	return s.String()
 15676  }
 15677  
 15678  // Validate inspects the fields of the type to determine if they are valid.
 15679  func (s *Statement) Validate() error {
 15680  	invalidParams := request.ErrInvalidParams{Context: "Statement"}
 15681  	if s.AndStatement != nil {
 15682  		if err := s.AndStatement.Validate(); err != nil {
 15683  			invalidParams.AddNested("AndStatement", err.(request.ErrInvalidParams))
 15684  		}
 15685  	}
 15686  	if s.ByteMatchStatement != nil {
 15687  		if err := s.ByteMatchStatement.Validate(); err != nil {
 15688  			invalidParams.AddNested("ByteMatchStatement", err.(request.ErrInvalidParams))
 15689  		}
 15690  	}
 15691  	if s.GeoMatchStatement != nil {
 15692  		if err := s.GeoMatchStatement.Validate(); err != nil {
 15693  			invalidParams.AddNested("GeoMatchStatement", err.(request.ErrInvalidParams))
 15694  		}
 15695  	}
 15696  	if s.IPSetReferenceStatement != nil {
 15697  		if err := s.IPSetReferenceStatement.Validate(); err != nil {
 15698  			invalidParams.AddNested("IPSetReferenceStatement", err.(request.ErrInvalidParams))
 15699  		}
 15700  	}
 15701  	if s.LabelMatchStatement != nil {
 15702  		if err := s.LabelMatchStatement.Validate(); err != nil {
 15703  			invalidParams.AddNested("LabelMatchStatement", err.(request.ErrInvalidParams))
 15704  		}
 15705  	}
 15706  	if s.ManagedRuleGroupStatement != nil {
 15707  		if err := s.ManagedRuleGroupStatement.Validate(); err != nil {
 15708  			invalidParams.AddNested("ManagedRuleGroupStatement", err.(request.ErrInvalidParams))
 15709  		}
 15710  	}
 15711  	if s.NotStatement != nil {
 15712  		if err := s.NotStatement.Validate(); err != nil {
 15713  			invalidParams.AddNested("NotStatement", err.(request.ErrInvalidParams))
 15714  		}
 15715  	}
 15716  	if s.OrStatement != nil {
 15717  		if err := s.OrStatement.Validate(); err != nil {
 15718  			invalidParams.AddNested("OrStatement", err.(request.ErrInvalidParams))
 15719  		}
 15720  	}
 15721  	if s.RateBasedStatement != nil {
 15722  		if err := s.RateBasedStatement.Validate(); err != nil {
 15723  			invalidParams.AddNested("RateBasedStatement", err.(request.ErrInvalidParams))
 15724  		}
 15725  	}
 15726  	if s.RegexMatchStatement != nil {
 15727  		if err := s.RegexMatchStatement.Validate(); err != nil {
 15728  			invalidParams.AddNested("RegexMatchStatement", err.(request.ErrInvalidParams))
 15729  		}
 15730  	}
 15731  	if s.RegexPatternSetReferenceStatement != nil {
 15732  		if err := s.RegexPatternSetReferenceStatement.Validate(); err != nil {
 15733  			invalidParams.AddNested("RegexPatternSetReferenceStatement", err.(request.ErrInvalidParams))
 15734  		}
 15735  	}
 15736  	if s.RuleGroupReferenceStatement != nil {
 15737  		if err := s.RuleGroupReferenceStatement.Validate(); err != nil {
 15738  			invalidParams.AddNested("RuleGroupReferenceStatement", err.(request.ErrInvalidParams))
 15739  		}
 15740  	}
 15741  	if s.SizeConstraintStatement != nil {
 15742  		if err := s.SizeConstraintStatement.Validate(); err != nil {
 15743  			invalidParams.AddNested("SizeConstraintStatement", err.(request.ErrInvalidParams))
 15744  		}
 15745  	}
 15746  	if s.SqliMatchStatement != nil {
 15747  		if err := s.SqliMatchStatement.Validate(); err != nil {
 15748  			invalidParams.AddNested("SqliMatchStatement", err.(request.ErrInvalidParams))
 15749  		}
 15750  	}
 15751  	if s.XssMatchStatement != nil {
 15752  		if err := s.XssMatchStatement.Validate(); err != nil {
 15753  			invalidParams.AddNested("XssMatchStatement", err.(request.ErrInvalidParams))
 15754  		}
 15755  	}
 15756  
 15757  	if invalidParams.Len() > 0 {
 15758  		return invalidParams
 15759  	}
 15760  	return nil
 15761  }
 15762  
 15763  // SetAndStatement sets the AndStatement field's value.
 15764  func (s *Statement) SetAndStatement(v *AndStatement) *Statement {
 15765  	s.AndStatement = v
 15766  	return s
 15767  }
 15768  
 15769  // SetByteMatchStatement sets the ByteMatchStatement field's value.
 15770  func (s *Statement) SetByteMatchStatement(v *ByteMatchStatement) *Statement {
 15771  	s.ByteMatchStatement = v
 15772  	return s
 15773  }
 15774  
 15775  // SetGeoMatchStatement sets the GeoMatchStatement field's value.
 15776  func (s *Statement) SetGeoMatchStatement(v *GeoMatchStatement) *Statement {
 15777  	s.GeoMatchStatement = v
 15778  	return s
 15779  }
 15780  
 15781  // SetIPSetReferenceStatement sets the IPSetReferenceStatement field's value.
 15782  func (s *Statement) SetIPSetReferenceStatement(v *IPSetReferenceStatement) *Statement {
 15783  	s.IPSetReferenceStatement = v
 15784  	return s
 15785  }
 15786  
 15787  // SetLabelMatchStatement sets the LabelMatchStatement field's value.
 15788  func (s *Statement) SetLabelMatchStatement(v *LabelMatchStatement) *Statement {
 15789  	s.LabelMatchStatement = v
 15790  	return s
 15791  }
 15792  
 15793  // SetManagedRuleGroupStatement sets the ManagedRuleGroupStatement field's value.
 15794  func (s *Statement) SetManagedRuleGroupStatement(v *ManagedRuleGroupStatement) *Statement {
 15795  	s.ManagedRuleGroupStatement = v
 15796  	return s
 15797  }
 15798  
 15799  // SetNotStatement sets the NotStatement field's value.
 15800  func (s *Statement) SetNotStatement(v *NotStatement) *Statement {
 15801  	s.NotStatement = v
 15802  	return s
 15803  }
 15804  
 15805  // SetOrStatement sets the OrStatement field's value.
 15806  func (s *Statement) SetOrStatement(v *OrStatement) *Statement {
 15807  	s.OrStatement = v
 15808  	return s
 15809  }
 15810  
 15811  // SetRateBasedStatement sets the RateBasedStatement field's value.
 15812  func (s *Statement) SetRateBasedStatement(v *RateBasedStatement) *Statement {
 15813  	s.RateBasedStatement = v
 15814  	return s
 15815  }
 15816  
 15817  // SetRegexMatchStatement sets the RegexMatchStatement field's value.
 15818  func (s *Statement) SetRegexMatchStatement(v *RegexMatchStatement) *Statement {
 15819  	s.RegexMatchStatement = v
 15820  	return s
 15821  }
 15822  
 15823  // SetRegexPatternSetReferenceStatement sets the RegexPatternSetReferenceStatement field's value.
 15824  func (s *Statement) SetRegexPatternSetReferenceStatement(v *RegexPatternSetReferenceStatement) *Statement {
 15825  	s.RegexPatternSetReferenceStatement = v
 15826  	return s
 15827  }
 15828  
 15829  // SetRuleGroupReferenceStatement sets the RuleGroupReferenceStatement field's value.
 15830  func (s *Statement) SetRuleGroupReferenceStatement(v *RuleGroupReferenceStatement) *Statement {
 15831  	s.RuleGroupReferenceStatement = v
 15832  	return s
 15833  }
 15834  
 15835  // SetSizeConstraintStatement sets the SizeConstraintStatement field's value.
 15836  func (s *Statement) SetSizeConstraintStatement(v *SizeConstraintStatement) *Statement {
 15837  	s.SizeConstraintStatement = v
 15838  	return s
 15839  }
 15840  
 15841  // SetSqliMatchStatement sets the SqliMatchStatement field's value.
 15842  func (s *Statement) SetSqliMatchStatement(v *SqliMatchStatement) *Statement {
 15843  	s.SqliMatchStatement = v
 15844  	return s
 15845  }
 15846  
 15847  // SetXssMatchStatement sets the XssMatchStatement field's value.
 15848  func (s *Statement) SetXssMatchStatement(v *XssMatchStatement) *Statement {
 15849  	s.XssMatchStatement = v
 15850  	return s
 15851  }
 15852  
 15853  // A tag associated with an Amazon Web Services resource. Tags are key:value
 15854  // pairs that you can use to categorize and manage your resources, for purposes
 15855  // like billing or other management. Typically, the tag key represents a category,
 15856  // such as "environment", and the tag value represents a specific value within
 15857  // that category, such as "test," "development," or "production". Or you might
 15858  // set the tag key to "customer" and the value to the customer name or ID. You
 15859  // can specify one or more tags to add to each Amazon Web Services resource,
 15860  // up to 50 tags for a resource.
 15861  //
 15862  // You can tag the Amazon Web Services resources that you manage through WAF:
 15863  // web ACLs, rule groups, IP sets, and regex pattern sets. You can't manage
 15864  // or view tags through the WAF console.
 15865  type Tag struct {
 15866  	_ struct{} `type:"structure"`
 15867  
 15868  	// Part of the key:value pair that defines a tag. You can use a tag key to describe
 15869  	// a category of information, such as "customer." Tag keys are case-sensitive.
 15870  	//
 15871  	// Key is a required field
 15872  	Key *string `min:"1" type:"string" required:"true"`
 15873  
 15874  	// Part of the key:value pair that defines a tag. You can use a tag value to
 15875  	// describe a specific value within a category, such as "companyA" or "companyB."
 15876  	// Tag values are case-sensitive.
 15877  	//
 15878  	// Value is a required field
 15879  	Value *string `type:"string" required:"true"`
 15880  }
 15881  
 15882  // String returns the string representation.
 15883  //
 15884  // API parameter values that are decorated as "sensitive" in the API will not
 15885  // be included in the string output. The member name will be present, but the
 15886  // value will be replaced with "sensitive".
 15887  func (s Tag) String() string {
 15888  	return awsutil.Prettify(s)
 15889  }
 15890  
 15891  // GoString returns the string representation.
 15892  //
 15893  // API parameter values that are decorated as "sensitive" in the API will not
 15894  // be included in the string output. The member name will be present, but the
 15895  // value will be replaced with "sensitive".
 15896  func (s Tag) GoString() string {
 15897  	return s.String()
 15898  }
 15899  
 15900  // Validate inspects the fields of the type to determine if they are valid.
 15901  func (s *Tag) Validate() error {
 15902  	invalidParams := request.ErrInvalidParams{Context: "Tag"}
 15903  	if s.Key == nil {
 15904  		invalidParams.Add(request.NewErrParamRequired("Key"))
 15905  	}
 15906  	if s.Key != nil && len(*s.Key) < 1 {
 15907  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 15908  	}
 15909  	if s.Value == nil {
 15910  		invalidParams.Add(request.NewErrParamRequired("Value"))
 15911  	}
 15912  
 15913  	if invalidParams.Len() > 0 {
 15914  		return invalidParams
 15915  	}
 15916  	return nil
 15917  }
 15918  
 15919  // SetKey sets the Key field's value.
 15920  func (s *Tag) SetKey(v string) *Tag {
 15921  	s.Key = &v
 15922  	return s
 15923  }
 15924  
 15925  // SetValue sets the Value field's value.
 15926  func (s *Tag) SetValue(v string) *Tag {
 15927  	s.Value = &v
 15928  	return s
 15929  }
 15930  
 15931  // The collection of tagging definitions for an Amazon Web Services resource.
 15932  // Tags are key:value pairs that you can use to categorize and manage your resources,
 15933  // for purposes like billing or other management. Typically, the tag key represents
 15934  // a category, such as "environment", and the tag value represents a specific
 15935  // value within that category, such as "test," "development," or "production".
 15936  // Or you might set the tag key to "customer" and the value to the customer
 15937  // name or ID. You can specify one or more tags to add to each Amazon Web Services
 15938  // resource, up to 50 tags for a resource.
 15939  //
 15940  // You can tag the Amazon Web Services resources that you manage through WAF:
 15941  // web ACLs, rule groups, IP sets, and regex pattern sets. You can't manage
 15942  // or view tags through the WAF console.
 15943  type TagInfoForResource struct {
 15944  	_ struct{} `type:"structure"`
 15945  
 15946  	// The Amazon Resource Name (ARN) of the resource.
 15947  	ResourceARN *string `min:"20" type:"string"`
 15948  
 15949  	// The array of Tag objects defined for the resource.
 15950  	TagList []*Tag `min:"1" type:"list"`
 15951  }
 15952  
 15953  // String returns the string representation.
 15954  //
 15955  // API parameter values that are decorated as "sensitive" in the API will not
 15956  // be included in the string output. The member name will be present, but the
 15957  // value will be replaced with "sensitive".
 15958  func (s TagInfoForResource) String() string {
 15959  	return awsutil.Prettify(s)
 15960  }
 15961  
 15962  // GoString returns the string representation.
 15963  //
 15964  // API parameter values that are decorated as "sensitive" in the API will not
 15965  // be included in the string output. The member name will be present, but the
 15966  // value will be replaced with "sensitive".
 15967  func (s TagInfoForResource) GoString() string {
 15968  	return s.String()
 15969  }
 15970  
 15971  // SetResourceARN sets the ResourceARN field's value.
 15972  func (s *TagInfoForResource) SetResourceARN(v string) *TagInfoForResource {
 15973  	s.ResourceARN = &v
 15974  	return s
 15975  }
 15976  
 15977  // SetTagList sets the TagList field's value.
 15978  func (s *TagInfoForResource) SetTagList(v []*Tag) *TagInfoForResource {
 15979  	s.TagList = v
 15980  	return s
 15981  }
 15982  
 15983  type TagResourceInput struct {
 15984  	_ struct{} `type:"structure"`
 15985  
 15986  	// The Amazon Resource Name (ARN) of the resource.
 15987  	//
 15988  	// ResourceARN is a required field
 15989  	ResourceARN *string `min:"20" type:"string" required:"true"`
 15990  
 15991  	// An array of key:value pairs to associate with the resource.
 15992  	//
 15993  	// Tags is a required field
 15994  	Tags []*Tag `min:"1" type:"list" required:"true"`
 15995  }
 15996  
 15997  // String returns the string representation.
 15998  //
 15999  // API parameter values that are decorated as "sensitive" in the API will not
 16000  // be included in the string output. The member name will be present, but the
 16001  // value will be replaced with "sensitive".
 16002  func (s TagResourceInput) String() string {
 16003  	return awsutil.Prettify(s)
 16004  }
 16005  
 16006  // GoString returns the string representation.
 16007  //
 16008  // API parameter values that are decorated as "sensitive" in the API will not
 16009  // be included in the string output. The member name will be present, but the
 16010  // value will be replaced with "sensitive".
 16011  func (s TagResourceInput) GoString() string {
 16012  	return s.String()
 16013  }
 16014  
 16015  // Validate inspects the fields of the type to determine if they are valid.
 16016  func (s *TagResourceInput) Validate() error {
 16017  	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
 16018  	if s.ResourceARN == nil {
 16019  		invalidParams.Add(request.NewErrParamRequired("ResourceARN"))
 16020  	}
 16021  	if s.ResourceARN != nil && len(*s.ResourceARN) < 20 {
 16022  		invalidParams.Add(request.NewErrParamMinLen("ResourceARN", 20))
 16023  	}
 16024  	if s.Tags == nil {
 16025  		invalidParams.Add(request.NewErrParamRequired("Tags"))
 16026  	}
 16027  	if s.Tags != nil && len(s.Tags) < 1 {
 16028  		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
 16029  	}
 16030  	if s.Tags != nil {
 16031  		for i, v := range s.Tags {
 16032  			if v == nil {
 16033  				continue
 16034  			}
 16035  			if err := v.Validate(); err != nil {
 16036  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
 16037  			}
 16038  		}
 16039  	}
 16040  
 16041  	if invalidParams.Len() > 0 {
 16042  		return invalidParams
 16043  	}
 16044  	return nil
 16045  }
 16046  
 16047  // SetResourceARN sets the ResourceARN field's value.
 16048  func (s *TagResourceInput) SetResourceARN(v string) *TagResourceInput {
 16049  	s.ResourceARN = &v
 16050  	return s
 16051  }
 16052  
 16053  // SetTags sets the Tags field's value.
 16054  func (s *TagResourceInput) SetTags(v []*Tag) *TagResourceInput {
 16055  	s.Tags = v
 16056  	return s
 16057  }
 16058  
 16059  type TagResourceOutput struct {
 16060  	_ struct{} `type:"structure"`
 16061  }
 16062  
 16063  // String returns the string representation.
 16064  //
 16065  // API parameter values that are decorated as "sensitive" in the API will not
 16066  // be included in the string output. The member name will be present, but the
 16067  // value will be replaced with "sensitive".
 16068  func (s TagResourceOutput) String() string {
 16069  	return awsutil.Prettify(s)
 16070  }
 16071  
 16072  // GoString returns the string representation.
 16073  //
 16074  // API parameter values that are decorated as "sensitive" in the API will not
 16075  // be included in the string output. The member name will be present, but the
 16076  // value will be replaced with "sensitive".
 16077  func (s TagResourceOutput) GoString() string {
 16078  	return s.String()
 16079  }
 16080  
 16081  // Text transformations eliminate some of the unusual formatting that attackers
 16082  // use in web requests in an effort to bypass detection.
 16083  type TextTransformation struct {
 16084  	_ struct{} `type:"structure"`
 16085  
 16086  	// Sets the relative processing order for multiple transformations that are
 16087  	// defined for a rule statement. WAF processes all transformations, from lowest
 16088  	// priority to highest, before inspecting the transformed content. The priorities
 16089  	// don't need to be consecutive, but they must all be different.
 16090  	//
 16091  	// Priority is a required field
 16092  	Priority *int64 `type:"integer" required:"true"`
 16093  
 16094  	// You can specify the following transformation types:
 16095  	//
 16096  	// BASE64_DECODE - Decode a Base64-encoded string.
 16097  	//
 16098  	// BASE64_DECODE_EXT - Decode a Base64-encoded string, but use a forgiving implementation
 16099  	// that ignores characters that aren't valid.
 16100  	//
 16101  	// CMD_LINE - Command-line transformations. These are helpful in reducing effectiveness
 16102  	// of attackers who inject an operating system command-line command and use
 16103  	// unusual formatting to disguise some or all of the command.
 16104  	//
 16105  	//    * Delete the following characters: \ " ' ^
 16106  	//
 16107  	//    * Delete spaces before the following characters: / (
 16108  	//
 16109  	//    * Replace the following characters with a space: , ;
 16110  	//
 16111  	//    * Replace multiple spaces with one space
 16112  	//
 16113  	//    * Convert uppercase letters (A-Z) to lowercase (a-z)
 16114  	//
 16115  	// COMPRESS_WHITE_SPACE - Replace these characters with a space character (decimal
 16116  	// 32):
 16117  	//
 16118  	//    * \f, formfeed, decimal 12
 16119  	//
 16120  	//    * \t, tab, decimal 9
 16121  	//
 16122  	//    * \n, newline, decimal 10
 16123  	//
 16124  	//    * \r, carriage return, decimal 13
 16125  	//
 16126  	//    * \v, vertical tab, decimal 11
 16127  	//
 16128  	//    * Non-breaking space, decimal 160
 16129  	//
 16130  	// COMPRESS_WHITE_SPACE also replaces multiple spaces with one space.
 16131  	//
 16132  	// CSS_DECODE - Decode characters that were encoded using CSS 2.x escape rules
 16133  	// syndata.html#characters. This function uses up to two bytes in the decoding
 16134  	// process, so it can help to uncover ASCII characters that were encoded using
 16135  	// CSS encoding that wouldn’t typically be encoded. It's also useful in countering
 16136  	// evasion, which is a combination of a backslash and non-hexadecimal characters.
 16137  	// For example, ja\vascript for javascript.
 16138  	//
 16139  	// ESCAPE_SEQ_DECODE - Decode the following ANSI C escape sequences: \a, \b,
 16140  	// \f, \n, \r, \t, \v, \\, \?, \', \", \xHH (hexadecimal), \0OOO (octal). Encodings
 16141  	// that aren't valid remain in the output.
 16142  	//
 16143  	// HEX_DECODE - Decode a string of hexadecimal characters into a binary.
 16144  	//
 16145  	// HTML_ENTITY_DECODE - Replace HTML-encoded characters with unencoded characters.
 16146  	// HTML_ENTITY_DECODE performs these operations:
 16147  	//
 16148  	//    * Replaces (ampersand)quot; with "
 16149  	//
 16150  	//    * Replaces (ampersand)nbsp; with a non-breaking space, decimal 160
 16151  	//
 16152  	//    * Replaces (ampersand)lt; with a "less than" symbol
 16153  	//
 16154  	//    * Replaces (ampersand)gt; with >
 16155  	//
 16156  	//    * Replaces characters that are represented in hexadecimal format, (ampersand)#xhhhh;,
 16157  	//    with the corresponding characters
 16158  	//
 16159  	//    * Replaces characters that are represented in decimal format, (ampersand)#nnnn;,
 16160  	//    with the corresponding characters
 16161  	//
 16162  	// JS_DECODE - Decode JavaScript escape sequences. If a \ u HHHH code is in
 16163  	// the full-width ASCII code range of FF01-FF5E, then the higher byte is used
 16164  	// to detect and adjust the lower byte. If not, only the lower byte is used
 16165  	// and the higher byte is zeroed, causing a possible loss of information.
 16166  	//
 16167  	// LOWERCASE - Convert uppercase letters (A-Z) to lowercase (a-z).
 16168  	//
 16169  	// MD5 - Calculate an MD5 hash from the data in the input. The computed hash
 16170  	// is in a raw binary form.
 16171  	//
 16172  	// NONE - Specify NONE if you don't want any text transformations.
 16173  	//
 16174  	// NORMALIZE_PATH - Remove multiple slashes, directory self-references, and
 16175  	// directory back-references that are not at the beginning of the input from
 16176  	// an input string.
 16177  	//
 16178  	// NORMALIZE_PATH_WIN - This is the same as NORMALIZE_PATH, but first converts
 16179  	// backslash characters to forward slashes.
 16180  	//
 16181  	// REMOVE_NULLS - Remove all NULL bytes from the input.
 16182  	//
 16183  	// REPLACE_COMMENTS - Replace each occurrence of a C-style comment (/* ... */)
 16184  	// with a single space. Multiple consecutive occurrences are not compressed.
 16185  	// Unterminated comments are also replaced with a space (ASCII 0x20). However,
 16186  	// a standalone termination of a comment (*/) is not acted upon.
 16187  	//
 16188  	// REPLACE_NULLS - Replace NULL bytes in the input with space characters (ASCII
 16189  	// 0x20).
 16190  	//
 16191  	// SQL_HEX_DECODE - Decode SQL hex data. Example (0x414243) will be decoded
 16192  	// to (ABC).
 16193  	//
 16194  	// URL_DECODE - Decode a URL-encoded value.
 16195  	//
 16196  	// URL_DECODE_UNI - Like URL_DECODE, but with support for Microsoft-specific
 16197  	// %u encoding. If the code is in the full-width ASCII code range of FF01-FF5E,
 16198  	// the higher byte is used to detect and adjust the lower byte. Otherwise, only
 16199  	// the lower byte is used and the higher byte is zeroed.
 16200  	//
 16201  	// UTF8_TO_UNICODE - Convert all UTF-8 character sequences to Unicode. This
 16202  	// helps input normalization, and minimizing false-positives and false-negatives
 16203  	// for non-English languages.
 16204  	//
 16205  	// Type is a required field
 16206  	Type *string `type:"string" required:"true" enum:"TextTransformationType"`
 16207  }
 16208  
 16209  // String returns the string representation.
 16210  //
 16211  // API parameter values that are decorated as "sensitive" in the API will not
 16212  // be included in the string output. The member name will be present, but the
 16213  // value will be replaced with "sensitive".
 16214  func (s TextTransformation) String() string {
 16215  	return awsutil.Prettify(s)
 16216  }
 16217  
 16218  // GoString returns the string representation.
 16219  //
 16220  // API parameter values that are decorated as "sensitive" in the API will not
 16221  // be included in the string output. The member name will be present, but the
 16222  // value will be replaced with "sensitive".
 16223  func (s TextTransformation) GoString() string {
 16224  	return s.String()
 16225  }
 16226  
 16227  // Validate inspects the fields of the type to determine if they are valid.
 16228  func (s *TextTransformation) Validate() error {
 16229  	invalidParams := request.ErrInvalidParams{Context: "TextTransformation"}
 16230  	if s.Priority == nil {
 16231  		invalidParams.Add(request.NewErrParamRequired("Priority"))
 16232  	}
 16233  	if s.Type == nil {
 16234  		invalidParams.Add(request.NewErrParamRequired("Type"))
 16235  	}
 16236  
 16237  	if invalidParams.Len() > 0 {
 16238  		return invalidParams
 16239  	}
 16240  	return nil
 16241  }
 16242  
 16243  // SetPriority sets the Priority field's value.
 16244  func (s *TextTransformation) SetPriority(v int64) *TextTransformation {
 16245  	s.Priority = &v
 16246  	return s
 16247  }
 16248  
 16249  // SetType sets the Type field's value.
 16250  func (s *TextTransformation) SetType(v string) *TextTransformation {
 16251  	s.Type = &v
 16252  	return s
 16253  }
 16254  
 16255  // In a GetSampledRequests request, the StartTime and EndTime objects specify
 16256  // the time range for which you want WAF to return a sample of web requests.
 16257  //
 16258  // You must specify the times in Coordinated Universal Time (UTC) format. UTC
 16259  // format includes the special designator, Z. For example, "2016-09-27T14:50Z".
 16260  // You can specify any time range in the previous three hours.
 16261  //
 16262  // In a GetSampledRequests response, the StartTime and EndTime objects specify
 16263  // the time range for which WAF actually returned a sample of web requests.
 16264  // WAF gets the specified number of requests from among the first 5,000 requests
 16265  // that your Amazon Web Services resource receives during the specified time
 16266  // period. If your resource receives more than 5,000 requests during that period,
 16267  // WAF stops sampling after the 5,000th request. In that case, EndTime is the
 16268  // time that WAF received the 5,000th request.
 16269  type TimeWindow struct {
 16270  	_ struct{} `type:"structure"`
 16271  
 16272  	// The end of the time range from which you want GetSampledRequests to return
 16273  	// a sample of the requests that your Amazon Web Services resource received.
 16274  	// You must specify the times in Coordinated Universal Time (UTC) format. UTC
 16275  	// format includes the special designator, Z. For example, "2016-09-27T14:50Z".
 16276  	// You can specify any time range in the previous three hours.
 16277  	//
 16278  	// EndTime is a required field
 16279  	EndTime *time.Time `type:"timestamp" required:"true"`
 16280  
 16281  	// The beginning of the time range from which you want GetSampledRequests to
 16282  	// return a sample of the requests that your Amazon Web Services resource received.
 16283  	// You must specify the times in Coordinated Universal Time (UTC) format. UTC
 16284  	// format includes the special designator, Z. For example, "2016-09-27T14:50Z".
 16285  	// You can specify any time range in the previous three hours.
 16286  	//
 16287  	// StartTime is a required field
 16288  	StartTime *time.Time `type:"timestamp" required:"true"`
 16289  }
 16290  
 16291  // String returns the string representation.
 16292  //
 16293  // API parameter values that are decorated as "sensitive" in the API will not
 16294  // be included in the string output. The member name will be present, but the
 16295  // value will be replaced with "sensitive".
 16296  func (s TimeWindow) String() string {
 16297  	return awsutil.Prettify(s)
 16298  }
 16299  
 16300  // GoString returns the string representation.
 16301  //
 16302  // API parameter values that are decorated as "sensitive" in the API will not
 16303  // be included in the string output. The member name will be present, but the
 16304  // value will be replaced with "sensitive".
 16305  func (s TimeWindow) GoString() string {
 16306  	return s.String()
 16307  }
 16308  
 16309  // Validate inspects the fields of the type to determine if they are valid.
 16310  func (s *TimeWindow) Validate() error {
 16311  	invalidParams := request.ErrInvalidParams{Context: "TimeWindow"}
 16312  	if s.EndTime == nil {
 16313  		invalidParams.Add(request.NewErrParamRequired("EndTime"))
 16314  	}
 16315  	if s.StartTime == nil {
 16316  		invalidParams.Add(request.NewErrParamRequired("StartTime"))
 16317  	}
 16318  
 16319  	if invalidParams.Len() > 0 {
 16320  		return invalidParams
 16321  	}
 16322  	return nil
 16323  }
 16324  
 16325  // SetEndTime sets the EndTime field's value.
 16326  func (s *TimeWindow) SetEndTime(v time.Time) *TimeWindow {
 16327  	s.EndTime = &v
 16328  	return s
 16329  }
 16330  
 16331  // SetStartTime sets the StartTime field's value.
 16332  func (s *TimeWindow) SetStartTime(v time.Time) *TimeWindow {
 16333  	s.StartTime = &v
 16334  	return s
 16335  }
 16336  
 16337  type UntagResourceInput struct {
 16338  	_ struct{} `type:"structure"`
 16339  
 16340  	// The Amazon Resource Name (ARN) of the resource.
 16341  	//
 16342  	// ResourceARN is a required field
 16343  	ResourceARN *string `min:"20" type:"string" required:"true"`
 16344  
 16345  	// An array of keys identifying the tags to disassociate from the resource.
 16346  	//
 16347  	// TagKeys is a required field
 16348  	TagKeys []*string `min:"1" type:"list" required:"true"`
 16349  }
 16350  
 16351  // String returns the string representation.
 16352  //
 16353  // API parameter values that are decorated as "sensitive" in the API will not
 16354  // be included in the string output. The member name will be present, but the
 16355  // value will be replaced with "sensitive".
 16356  func (s UntagResourceInput) String() string {
 16357  	return awsutil.Prettify(s)
 16358  }
 16359  
 16360  // GoString returns the string representation.
 16361  //
 16362  // API parameter values that are decorated as "sensitive" in the API will not
 16363  // be included in the string output. The member name will be present, but the
 16364  // value will be replaced with "sensitive".
 16365  func (s UntagResourceInput) GoString() string {
 16366  	return s.String()
 16367  }
 16368  
 16369  // Validate inspects the fields of the type to determine if they are valid.
 16370  func (s *UntagResourceInput) Validate() error {
 16371  	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
 16372  	if s.ResourceARN == nil {
 16373  		invalidParams.Add(request.NewErrParamRequired("ResourceARN"))
 16374  	}
 16375  	if s.ResourceARN != nil && len(*s.ResourceARN) < 20 {
 16376  		invalidParams.Add(request.NewErrParamMinLen("ResourceARN", 20))
 16377  	}
 16378  	if s.TagKeys == nil {
 16379  		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
 16380  	}
 16381  	if s.TagKeys != nil && len(s.TagKeys) < 1 {
 16382  		invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1))
 16383  	}
 16384  
 16385  	if invalidParams.Len() > 0 {
 16386  		return invalidParams
 16387  	}
 16388  	return nil
 16389  }
 16390  
 16391  // SetResourceARN sets the ResourceARN field's value.
 16392  func (s *UntagResourceInput) SetResourceARN(v string) *UntagResourceInput {
 16393  	s.ResourceARN = &v
 16394  	return s
 16395  }
 16396  
 16397  // SetTagKeys sets the TagKeys field's value.
 16398  func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
 16399  	s.TagKeys = v
 16400  	return s
 16401  }
 16402  
 16403  type UntagResourceOutput struct {
 16404  	_ struct{} `type:"structure"`
 16405  }
 16406  
 16407  // String returns the string representation.
 16408  //
 16409  // API parameter values that are decorated as "sensitive" in the API will not
 16410  // be included in the string output. The member name will be present, but the
 16411  // value will be replaced with "sensitive".
 16412  func (s UntagResourceOutput) String() string {
 16413  	return awsutil.Prettify(s)
 16414  }
 16415  
 16416  // GoString returns the string representation.
 16417  //
 16418  // API parameter values that are decorated as "sensitive" in the API will not
 16419  // be included in the string output. The member name will be present, but the
 16420  // value will be replaced with "sensitive".
 16421  func (s UntagResourceOutput) GoString() string {
 16422  	return s.String()
 16423  }
 16424  
 16425  type UpdateIPSetInput struct {
 16426  	_ struct{} `type:"structure"`
 16427  
 16428  	// Contains an array of strings that specify one or more IP addresses or blocks
 16429  	// of IP addresses in Classless Inter-Domain Routing (CIDR) notation. WAF supports
 16430  	// all IPv4 and IPv6 CIDR ranges except for /0.
 16431  	//
 16432  	// Examples:
 16433  	//
 16434  	//    * To configure WAF to allow, block, or count requests that originated
 16435  	//    from the IP address 192.0.2.44, specify 192.0.2.44/32.
 16436  	//
 16437  	//    * To configure WAF to allow, block, or count requests that originated
 16438  	//    from IP addresses from 192.0.2.0 to 192.0.2.255, specify 192.0.2.0/24.
 16439  	//
 16440  	//    * To configure WAF to allow, block, or count requests that originated
 16441  	//    from the IP address 1111:0000:0000:0000:0000:0000:0000:0111, specify 1111:0000:0000:0000:0000:0000:0000:0111/128.
 16442  	//
 16443  	//    * To configure WAF to allow, block, or count requests that originated
 16444  	//    from IP addresses 1111:0000:0000:0000:0000:0000:0000:0000 to 1111:0000:0000:0000:ffff:ffff:ffff:ffff,
 16445  	//    specify 1111:0000:0000:0000:0000:0000:0000:0000/64.
 16446  	//
 16447  	// For more information about CIDR notation, see the Wikipedia entry Classless
 16448  	// Inter-Domain Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
 16449  	//
 16450  	// Addresses is a required field
 16451  	Addresses []*string `type:"list" required:"true"`
 16452  
 16453  	// A description of the IP set that helps with identification.
 16454  	Description *string `min:"1" type:"string"`
 16455  
 16456  	// A unique identifier for the set. This ID is returned in the responses to
 16457  	// create and list commands. You provide it to operations like update and delete.
 16458  	//
 16459  	// Id is a required field
 16460  	Id *string `min:"1" type:"string" required:"true"`
 16461  
 16462  	// A token used for optimistic locking. WAF returns a token to your get and
 16463  	// list requests, to mark the state of the entity at the time of the request.
 16464  	// To make changes to the entity associated with the token, you provide the
 16465  	// token to operations like update and delete. WAF uses the token to ensure
 16466  	// that no changes have been made to the entity since you last retrieved it.
 16467  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 16468  	// If this happens, perform another get, and use the new token returned by that
 16469  	// operation.
 16470  	//
 16471  	// LockToken is a required field
 16472  	LockToken *string `min:"1" type:"string" required:"true"`
 16473  
 16474  	// The name of the IP set. You cannot change the name of an IPSet after you
 16475  	// create it.
 16476  	//
 16477  	// Name is a required field
 16478  	Name *string `min:"1" type:"string" required:"true"`
 16479  
 16480  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 16481  	// regional application. A regional application can be an Application Load Balancer
 16482  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 16483  	//
 16484  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 16485  	// as follows:
 16486  	//
 16487  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 16488  	//    --region=us-east-1.
 16489  	//
 16490  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 16491  	//
 16492  	// Scope is a required field
 16493  	Scope *string `type:"string" required:"true" enum:"Scope"`
 16494  }
 16495  
 16496  // String returns the string representation.
 16497  //
 16498  // API parameter values that are decorated as "sensitive" in the API will not
 16499  // be included in the string output. The member name will be present, but the
 16500  // value will be replaced with "sensitive".
 16501  func (s UpdateIPSetInput) String() string {
 16502  	return awsutil.Prettify(s)
 16503  }
 16504  
 16505  // GoString returns the string representation.
 16506  //
 16507  // API parameter values that are decorated as "sensitive" in the API will not
 16508  // be included in the string output. The member name will be present, but the
 16509  // value will be replaced with "sensitive".
 16510  func (s UpdateIPSetInput) GoString() string {
 16511  	return s.String()
 16512  }
 16513  
 16514  // Validate inspects the fields of the type to determine if they are valid.
 16515  func (s *UpdateIPSetInput) Validate() error {
 16516  	invalidParams := request.ErrInvalidParams{Context: "UpdateIPSetInput"}
 16517  	if s.Addresses == nil {
 16518  		invalidParams.Add(request.NewErrParamRequired("Addresses"))
 16519  	}
 16520  	if s.Description != nil && len(*s.Description) < 1 {
 16521  		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
 16522  	}
 16523  	if s.Id == nil {
 16524  		invalidParams.Add(request.NewErrParamRequired("Id"))
 16525  	}
 16526  	if s.Id != nil && len(*s.Id) < 1 {
 16527  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
 16528  	}
 16529  	if s.LockToken == nil {
 16530  		invalidParams.Add(request.NewErrParamRequired("LockToken"))
 16531  	}
 16532  	if s.LockToken != nil && len(*s.LockToken) < 1 {
 16533  		invalidParams.Add(request.NewErrParamMinLen("LockToken", 1))
 16534  	}
 16535  	if s.Name == nil {
 16536  		invalidParams.Add(request.NewErrParamRequired("Name"))
 16537  	}
 16538  	if s.Name != nil && len(*s.Name) < 1 {
 16539  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 16540  	}
 16541  	if s.Scope == nil {
 16542  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 16543  	}
 16544  
 16545  	if invalidParams.Len() > 0 {
 16546  		return invalidParams
 16547  	}
 16548  	return nil
 16549  }
 16550  
 16551  // SetAddresses sets the Addresses field's value.
 16552  func (s *UpdateIPSetInput) SetAddresses(v []*string) *UpdateIPSetInput {
 16553  	s.Addresses = v
 16554  	return s
 16555  }
 16556  
 16557  // SetDescription sets the Description field's value.
 16558  func (s *UpdateIPSetInput) SetDescription(v string) *UpdateIPSetInput {
 16559  	s.Description = &v
 16560  	return s
 16561  }
 16562  
 16563  // SetId sets the Id field's value.
 16564  func (s *UpdateIPSetInput) SetId(v string) *UpdateIPSetInput {
 16565  	s.Id = &v
 16566  	return s
 16567  }
 16568  
 16569  // SetLockToken sets the LockToken field's value.
 16570  func (s *UpdateIPSetInput) SetLockToken(v string) *UpdateIPSetInput {
 16571  	s.LockToken = &v
 16572  	return s
 16573  }
 16574  
 16575  // SetName sets the Name field's value.
 16576  func (s *UpdateIPSetInput) SetName(v string) *UpdateIPSetInput {
 16577  	s.Name = &v
 16578  	return s
 16579  }
 16580  
 16581  // SetScope sets the Scope field's value.
 16582  func (s *UpdateIPSetInput) SetScope(v string) *UpdateIPSetInput {
 16583  	s.Scope = &v
 16584  	return s
 16585  }
 16586  
 16587  type UpdateIPSetOutput struct {
 16588  	_ struct{} `type:"structure"`
 16589  
 16590  	// A token used for optimistic locking. WAF returns this token to your update
 16591  	// requests. You use NextLockToken in the same manner as you use LockToken.
 16592  	NextLockToken *string `min:"1" type:"string"`
 16593  }
 16594  
 16595  // String returns the string representation.
 16596  //
 16597  // API parameter values that are decorated as "sensitive" in the API will not
 16598  // be included in the string output. The member name will be present, but the
 16599  // value will be replaced with "sensitive".
 16600  func (s UpdateIPSetOutput) String() string {
 16601  	return awsutil.Prettify(s)
 16602  }
 16603  
 16604  // GoString returns the string representation.
 16605  //
 16606  // API parameter values that are decorated as "sensitive" in the API will not
 16607  // be included in the string output. The member name will be present, but the
 16608  // value will be replaced with "sensitive".
 16609  func (s UpdateIPSetOutput) GoString() string {
 16610  	return s.String()
 16611  }
 16612  
 16613  // SetNextLockToken sets the NextLockToken field's value.
 16614  func (s *UpdateIPSetOutput) SetNextLockToken(v string) *UpdateIPSetOutput {
 16615  	s.NextLockToken = &v
 16616  	return s
 16617  }
 16618  
 16619  type UpdateManagedRuleSetVersionExpiryDateInput struct {
 16620  	_ struct{} `type:"structure"`
 16621  
 16622  	// The time that you want the version to expire.
 16623  	//
 16624  	// Times are in Coordinated Universal Time (UTC) format. UTC format includes
 16625  	// the special designator, Z. For example, "2016-09-27T14:50Z".
 16626  	//
 16627  	// ExpiryTimestamp is a required field
 16628  	ExpiryTimestamp *time.Time `type:"timestamp" required:"true"`
 16629  
 16630  	// A unique identifier for the managed rule set. The ID is returned in the responses
 16631  	// to commands like list. You provide it to operations like get and update.
 16632  	//
 16633  	// Id is a required field
 16634  	Id *string `min:"1" type:"string" required:"true"`
 16635  
 16636  	// A token used for optimistic locking. WAF returns a token to your get and
 16637  	// list requests, to mark the state of the entity at the time of the request.
 16638  	// To make changes to the entity associated with the token, you provide the
 16639  	// token to operations like update and delete. WAF uses the token to ensure
 16640  	// that no changes have been made to the entity since you last retrieved it.
 16641  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 16642  	// If this happens, perform another get, and use the new token returned by that
 16643  	// operation.
 16644  	//
 16645  	// LockToken is a required field
 16646  	LockToken *string `min:"1" type:"string" required:"true"`
 16647  
 16648  	// The name of the managed rule set. You use this, along with the rule set ID,
 16649  	// to identify the rule set.
 16650  	//
 16651  	// This name is assigned to the corresponding managed rule group, which your
 16652  	// customers can access and use.
 16653  	//
 16654  	// Name is a required field
 16655  	Name *string `min:"1" type:"string" required:"true"`
 16656  
 16657  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 16658  	// regional application. A regional application can be an Application Load Balancer
 16659  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 16660  	//
 16661  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 16662  	// as follows:
 16663  	//
 16664  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 16665  	//    --region=us-east-1.
 16666  	//
 16667  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 16668  	//
 16669  	// Scope is a required field
 16670  	Scope *string `type:"string" required:"true" enum:"Scope"`
 16671  
 16672  	// The version that you want to remove from your list of offerings for the named
 16673  	// managed rule group.
 16674  	//
 16675  	// VersionToExpire is a required field
 16676  	VersionToExpire *string `min:"1" type:"string" required:"true"`
 16677  }
 16678  
 16679  // String returns the string representation.
 16680  //
 16681  // API parameter values that are decorated as "sensitive" in the API will not
 16682  // be included in the string output. The member name will be present, but the
 16683  // value will be replaced with "sensitive".
 16684  func (s UpdateManagedRuleSetVersionExpiryDateInput) String() string {
 16685  	return awsutil.Prettify(s)
 16686  }
 16687  
 16688  // GoString returns the string representation.
 16689  //
 16690  // API parameter values that are decorated as "sensitive" in the API will not
 16691  // be included in the string output. The member name will be present, but the
 16692  // value will be replaced with "sensitive".
 16693  func (s UpdateManagedRuleSetVersionExpiryDateInput) GoString() string {
 16694  	return s.String()
 16695  }
 16696  
 16697  // Validate inspects the fields of the type to determine if they are valid.
 16698  func (s *UpdateManagedRuleSetVersionExpiryDateInput) Validate() error {
 16699  	invalidParams := request.ErrInvalidParams{Context: "UpdateManagedRuleSetVersionExpiryDateInput"}
 16700  	if s.ExpiryTimestamp == nil {
 16701  		invalidParams.Add(request.NewErrParamRequired("ExpiryTimestamp"))
 16702  	}
 16703  	if s.Id == nil {
 16704  		invalidParams.Add(request.NewErrParamRequired("Id"))
 16705  	}
 16706  	if s.Id != nil && len(*s.Id) < 1 {
 16707  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
 16708  	}
 16709  	if s.LockToken == nil {
 16710  		invalidParams.Add(request.NewErrParamRequired("LockToken"))
 16711  	}
 16712  	if s.LockToken != nil && len(*s.LockToken) < 1 {
 16713  		invalidParams.Add(request.NewErrParamMinLen("LockToken", 1))
 16714  	}
 16715  	if s.Name == nil {
 16716  		invalidParams.Add(request.NewErrParamRequired("Name"))
 16717  	}
 16718  	if s.Name != nil && len(*s.Name) < 1 {
 16719  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 16720  	}
 16721  	if s.Scope == nil {
 16722  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 16723  	}
 16724  	if s.VersionToExpire == nil {
 16725  		invalidParams.Add(request.NewErrParamRequired("VersionToExpire"))
 16726  	}
 16727  	if s.VersionToExpire != nil && len(*s.VersionToExpire) < 1 {
 16728  		invalidParams.Add(request.NewErrParamMinLen("VersionToExpire", 1))
 16729  	}
 16730  
 16731  	if invalidParams.Len() > 0 {
 16732  		return invalidParams
 16733  	}
 16734  	return nil
 16735  }
 16736  
 16737  // SetExpiryTimestamp sets the ExpiryTimestamp field's value.
 16738  func (s *UpdateManagedRuleSetVersionExpiryDateInput) SetExpiryTimestamp(v time.Time) *UpdateManagedRuleSetVersionExpiryDateInput {
 16739  	s.ExpiryTimestamp = &v
 16740  	return s
 16741  }
 16742  
 16743  // SetId sets the Id field's value.
 16744  func (s *UpdateManagedRuleSetVersionExpiryDateInput) SetId(v string) *UpdateManagedRuleSetVersionExpiryDateInput {
 16745  	s.Id = &v
 16746  	return s
 16747  }
 16748  
 16749  // SetLockToken sets the LockToken field's value.
 16750  func (s *UpdateManagedRuleSetVersionExpiryDateInput) SetLockToken(v string) *UpdateManagedRuleSetVersionExpiryDateInput {
 16751  	s.LockToken = &v
 16752  	return s
 16753  }
 16754  
 16755  // SetName sets the Name field's value.
 16756  func (s *UpdateManagedRuleSetVersionExpiryDateInput) SetName(v string) *UpdateManagedRuleSetVersionExpiryDateInput {
 16757  	s.Name = &v
 16758  	return s
 16759  }
 16760  
 16761  // SetScope sets the Scope field's value.
 16762  func (s *UpdateManagedRuleSetVersionExpiryDateInput) SetScope(v string) *UpdateManagedRuleSetVersionExpiryDateInput {
 16763  	s.Scope = &v
 16764  	return s
 16765  }
 16766  
 16767  // SetVersionToExpire sets the VersionToExpire field's value.
 16768  func (s *UpdateManagedRuleSetVersionExpiryDateInput) SetVersionToExpire(v string) *UpdateManagedRuleSetVersionExpiryDateInput {
 16769  	s.VersionToExpire = &v
 16770  	return s
 16771  }
 16772  
 16773  type UpdateManagedRuleSetVersionExpiryDateOutput struct {
 16774  	_ struct{} `type:"structure"`
 16775  
 16776  	// The version that is set to expire.
 16777  	ExpiringVersion *string `min:"1" type:"string"`
 16778  
 16779  	// The time that the version will expire.
 16780  	//
 16781  	// Times are in Coordinated Universal Time (UTC) format. UTC format includes
 16782  	// the special designator, Z. For example, "2016-09-27T14:50Z".
 16783  	ExpiryTimestamp *time.Time `type:"timestamp"`
 16784  
 16785  	// A token used for optimistic locking. WAF returns a token to your get and
 16786  	// list requests, to mark the state of the entity at the time of the request.
 16787  	// To make changes to the entity associated with the token, you provide the
 16788  	// token to operations like update and delete. WAF uses the token to ensure
 16789  	// that no changes have been made to the entity since you last retrieved it.
 16790  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 16791  	// If this happens, perform another get, and use the new token returned by that
 16792  	// operation.
 16793  	NextLockToken *string `min:"1" type:"string"`
 16794  }
 16795  
 16796  // String returns the string representation.
 16797  //
 16798  // API parameter values that are decorated as "sensitive" in the API will not
 16799  // be included in the string output. The member name will be present, but the
 16800  // value will be replaced with "sensitive".
 16801  func (s UpdateManagedRuleSetVersionExpiryDateOutput) String() string {
 16802  	return awsutil.Prettify(s)
 16803  }
 16804  
 16805  // GoString returns the string representation.
 16806  //
 16807  // API parameter values that are decorated as "sensitive" in the API will not
 16808  // be included in the string output. The member name will be present, but the
 16809  // value will be replaced with "sensitive".
 16810  func (s UpdateManagedRuleSetVersionExpiryDateOutput) GoString() string {
 16811  	return s.String()
 16812  }
 16813  
 16814  // SetExpiringVersion sets the ExpiringVersion field's value.
 16815  func (s *UpdateManagedRuleSetVersionExpiryDateOutput) SetExpiringVersion(v string) *UpdateManagedRuleSetVersionExpiryDateOutput {
 16816  	s.ExpiringVersion = &v
 16817  	return s
 16818  }
 16819  
 16820  // SetExpiryTimestamp sets the ExpiryTimestamp field's value.
 16821  func (s *UpdateManagedRuleSetVersionExpiryDateOutput) SetExpiryTimestamp(v time.Time) *UpdateManagedRuleSetVersionExpiryDateOutput {
 16822  	s.ExpiryTimestamp = &v
 16823  	return s
 16824  }
 16825  
 16826  // SetNextLockToken sets the NextLockToken field's value.
 16827  func (s *UpdateManagedRuleSetVersionExpiryDateOutput) SetNextLockToken(v string) *UpdateManagedRuleSetVersionExpiryDateOutput {
 16828  	s.NextLockToken = &v
 16829  	return s
 16830  }
 16831  
 16832  type UpdateRegexPatternSetInput struct {
 16833  	_ struct{} `type:"structure"`
 16834  
 16835  	// A description of the set that helps with identification.
 16836  	Description *string `min:"1" type:"string"`
 16837  
 16838  	// A unique identifier for the set. This ID is returned in the responses to
 16839  	// create and list commands. You provide it to operations like update and delete.
 16840  	//
 16841  	// Id is a required field
 16842  	Id *string `min:"1" type:"string" required:"true"`
 16843  
 16844  	// A token used for optimistic locking. WAF returns a token to your get and
 16845  	// list requests, to mark the state of the entity at the time of the request.
 16846  	// To make changes to the entity associated with the token, you provide the
 16847  	// token to operations like update and delete. WAF uses the token to ensure
 16848  	// that no changes have been made to the entity since you last retrieved it.
 16849  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 16850  	// If this happens, perform another get, and use the new token returned by that
 16851  	// operation.
 16852  	//
 16853  	// LockToken is a required field
 16854  	LockToken *string `min:"1" type:"string" required:"true"`
 16855  
 16856  	// The name of the set. You cannot change the name after you create the set.
 16857  	//
 16858  	// Name is a required field
 16859  	Name *string `min:"1" type:"string" required:"true"`
 16860  
 16861  	// RegularExpressionList is a required field
 16862  	RegularExpressionList []*Regex `type:"list" required:"true"`
 16863  
 16864  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 16865  	// regional application. A regional application can be an Application Load Balancer
 16866  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 16867  	//
 16868  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 16869  	// as follows:
 16870  	//
 16871  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 16872  	//    --region=us-east-1.
 16873  	//
 16874  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 16875  	//
 16876  	// Scope is a required field
 16877  	Scope *string `type:"string" required:"true" enum:"Scope"`
 16878  }
 16879  
 16880  // String returns the string representation.
 16881  //
 16882  // API parameter values that are decorated as "sensitive" in the API will not
 16883  // be included in the string output. The member name will be present, but the
 16884  // value will be replaced with "sensitive".
 16885  func (s UpdateRegexPatternSetInput) String() string {
 16886  	return awsutil.Prettify(s)
 16887  }
 16888  
 16889  // GoString returns the string representation.
 16890  //
 16891  // API parameter values that are decorated as "sensitive" in the API will not
 16892  // be included in the string output. The member name will be present, but the
 16893  // value will be replaced with "sensitive".
 16894  func (s UpdateRegexPatternSetInput) GoString() string {
 16895  	return s.String()
 16896  }
 16897  
 16898  // Validate inspects the fields of the type to determine if they are valid.
 16899  func (s *UpdateRegexPatternSetInput) Validate() error {
 16900  	invalidParams := request.ErrInvalidParams{Context: "UpdateRegexPatternSetInput"}
 16901  	if s.Description != nil && len(*s.Description) < 1 {
 16902  		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
 16903  	}
 16904  	if s.Id == nil {
 16905  		invalidParams.Add(request.NewErrParamRequired("Id"))
 16906  	}
 16907  	if s.Id != nil && len(*s.Id) < 1 {
 16908  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
 16909  	}
 16910  	if s.LockToken == nil {
 16911  		invalidParams.Add(request.NewErrParamRequired("LockToken"))
 16912  	}
 16913  	if s.LockToken != nil && len(*s.LockToken) < 1 {
 16914  		invalidParams.Add(request.NewErrParamMinLen("LockToken", 1))
 16915  	}
 16916  	if s.Name == nil {
 16917  		invalidParams.Add(request.NewErrParamRequired("Name"))
 16918  	}
 16919  	if s.Name != nil && len(*s.Name) < 1 {
 16920  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 16921  	}
 16922  	if s.RegularExpressionList == nil {
 16923  		invalidParams.Add(request.NewErrParamRequired("RegularExpressionList"))
 16924  	}
 16925  	if s.Scope == nil {
 16926  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 16927  	}
 16928  	if s.RegularExpressionList != nil {
 16929  		for i, v := range s.RegularExpressionList {
 16930  			if v == nil {
 16931  				continue
 16932  			}
 16933  			if err := v.Validate(); err != nil {
 16934  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RegularExpressionList", i), err.(request.ErrInvalidParams))
 16935  			}
 16936  		}
 16937  	}
 16938  
 16939  	if invalidParams.Len() > 0 {
 16940  		return invalidParams
 16941  	}
 16942  	return nil
 16943  }
 16944  
 16945  // SetDescription sets the Description field's value.
 16946  func (s *UpdateRegexPatternSetInput) SetDescription(v string) *UpdateRegexPatternSetInput {
 16947  	s.Description = &v
 16948  	return s
 16949  }
 16950  
 16951  // SetId sets the Id field's value.
 16952  func (s *UpdateRegexPatternSetInput) SetId(v string) *UpdateRegexPatternSetInput {
 16953  	s.Id = &v
 16954  	return s
 16955  }
 16956  
 16957  // SetLockToken sets the LockToken field's value.
 16958  func (s *UpdateRegexPatternSetInput) SetLockToken(v string) *UpdateRegexPatternSetInput {
 16959  	s.LockToken = &v
 16960  	return s
 16961  }
 16962  
 16963  // SetName sets the Name field's value.
 16964  func (s *UpdateRegexPatternSetInput) SetName(v string) *UpdateRegexPatternSetInput {
 16965  	s.Name = &v
 16966  	return s
 16967  }
 16968  
 16969  // SetRegularExpressionList sets the RegularExpressionList field's value.
 16970  func (s *UpdateRegexPatternSetInput) SetRegularExpressionList(v []*Regex) *UpdateRegexPatternSetInput {
 16971  	s.RegularExpressionList = v
 16972  	return s
 16973  }
 16974  
 16975  // SetScope sets the Scope field's value.
 16976  func (s *UpdateRegexPatternSetInput) SetScope(v string) *UpdateRegexPatternSetInput {
 16977  	s.Scope = &v
 16978  	return s
 16979  }
 16980  
 16981  type UpdateRegexPatternSetOutput struct {
 16982  	_ struct{} `type:"structure"`
 16983  
 16984  	// A token used for optimistic locking. WAF returns this token to your update
 16985  	// requests. You use NextLockToken in the same manner as you use LockToken.
 16986  	NextLockToken *string `min:"1" type:"string"`
 16987  }
 16988  
 16989  // String returns the string representation.
 16990  //
 16991  // API parameter values that are decorated as "sensitive" in the API will not
 16992  // be included in the string output. The member name will be present, but the
 16993  // value will be replaced with "sensitive".
 16994  func (s UpdateRegexPatternSetOutput) String() string {
 16995  	return awsutil.Prettify(s)
 16996  }
 16997  
 16998  // GoString returns the string representation.
 16999  //
 17000  // API parameter values that are decorated as "sensitive" in the API will not
 17001  // be included in the string output. The member name will be present, but the
 17002  // value will be replaced with "sensitive".
 17003  func (s UpdateRegexPatternSetOutput) GoString() string {
 17004  	return s.String()
 17005  }
 17006  
 17007  // SetNextLockToken sets the NextLockToken field's value.
 17008  func (s *UpdateRegexPatternSetOutput) SetNextLockToken(v string) *UpdateRegexPatternSetOutput {
 17009  	s.NextLockToken = &v
 17010  	return s
 17011  }
 17012  
 17013  type UpdateRuleGroupInput struct {
 17014  	_ struct{} `type:"structure"`
 17015  
 17016  	// A map of custom response keys and content bodies. When you create a rule
 17017  	// with a block action, you can send a custom response to the web request. You
 17018  	// define these for the rule group, and then use them in the rules that you
 17019  	// define in the rule group.
 17020  	//
 17021  	// For information about customizing web requests and responses, see Customizing
 17022  	// web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
 17023  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
 17024  	//
 17025  	// For information about the limits on count and size for custom request and
 17026  	// response settings, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
 17027  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
 17028  	CustomResponseBodies map[string]*CustomResponseBody `min:"1" type:"map"`
 17029  
 17030  	// A description of the rule group that helps with identification.
 17031  	Description *string `min:"1" type:"string"`
 17032  
 17033  	// A unique identifier for the rule group. This ID is returned in the responses
 17034  	// to create and list commands. You provide it to operations like update and
 17035  	// delete.
 17036  	//
 17037  	// Id is a required field
 17038  	Id *string `min:"1" type:"string" required:"true"`
 17039  
 17040  	// A token used for optimistic locking. WAF returns a token to your get and
 17041  	// list requests, to mark the state of the entity at the time of the request.
 17042  	// To make changes to the entity associated with the token, you provide the
 17043  	// token to operations like update and delete. WAF uses the token to ensure
 17044  	// that no changes have been made to the entity since you last retrieved it.
 17045  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 17046  	// If this happens, perform another get, and use the new token returned by that
 17047  	// operation.
 17048  	//
 17049  	// LockToken is a required field
 17050  	LockToken *string `min:"1" type:"string" required:"true"`
 17051  
 17052  	// The name of the rule group. You cannot change the name of a rule group after
 17053  	// you create it.
 17054  	//
 17055  	// Name is a required field
 17056  	Name *string `min:"1" type:"string" required:"true"`
 17057  
 17058  	// The Rule statements used to identify the web requests that you want to allow,
 17059  	// block, or count. Each rule includes one top-level statement that WAF uses
 17060  	// to identify matching web requests, and parameters that govern how WAF handles
 17061  	// them.
 17062  	Rules []*Rule `type:"list"`
 17063  
 17064  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 17065  	// regional application. A regional application can be an Application Load Balancer
 17066  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 17067  	//
 17068  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 17069  	// as follows:
 17070  	//
 17071  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 17072  	//    --region=us-east-1.
 17073  	//
 17074  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 17075  	//
 17076  	// Scope is a required field
 17077  	Scope *string `type:"string" required:"true" enum:"Scope"`
 17078  
 17079  	// Defines and enables Amazon CloudWatch metrics and web request sample collection.
 17080  	//
 17081  	// VisibilityConfig is a required field
 17082  	VisibilityConfig *VisibilityConfig `type:"structure" required:"true"`
 17083  }
 17084  
 17085  // String returns the string representation.
 17086  //
 17087  // API parameter values that are decorated as "sensitive" in the API will not
 17088  // be included in the string output. The member name will be present, but the
 17089  // value will be replaced with "sensitive".
 17090  func (s UpdateRuleGroupInput) String() string {
 17091  	return awsutil.Prettify(s)
 17092  }
 17093  
 17094  // GoString returns the string representation.
 17095  //
 17096  // API parameter values that are decorated as "sensitive" in the API will not
 17097  // be included in the string output. The member name will be present, but the
 17098  // value will be replaced with "sensitive".
 17099  func (s UpdateRuleGroupInput) GoString() string {
 17100  	return s.String()
 17101  }
 17102  
 17103  // Validate inspects the fields of the type to determine if they are valid.
 17104  func (s *UpdateRuleGroupInput) Validate() error {
 17105  	invalidParams := request.ErrInvalidParams{Context: "UpdateRuleGroupInput"}
 17106  	if s.CustomResponseBodies != nil && len(s.CustomResponseBodies) < 1 {
 17107  		invalidParams.Add(request.NewErrParamMinLen("CustomResponseBodies", 1))
 17108  	}
 17109  	if s.Description != nil && len(*s.Description) < 1 {
 17110  		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
 17111  	}
 17112  	if s.Id == nil {
 17113  		invalidParams.Add(request.NewErrParamRequired("Id"))
 17114  	}
 17115  	if s.Id != nil && len(*s.Id) < 1 {
 17116  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
 17117  	}
 17118  	if s.LockToken == nil {
 17119  		invalidParams.Add(request.NewErrParamRequired("LockToken"))
 17120  	}
 17121  	if s.LockToken != nil && len(*s.LockToken) < 1 {
 17122  		invalidParams.Add(request.NewErrParamMinLen("LockToken", 1))
 17123  	}
 17124  	if s.Name == nil {
 17125  		invalidParams.Add(request.NewErrParamRequired("Name"))
 17126  	}
 17127  	if s.Name != nil && len(*s.Name) < 1 {
 17128  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 17129  	}
 17130  	if s.Scope == nil {
 17131  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 17132  	}
 17133  	if s.VisibilityConfig == nil {
 17134  		invalidParams.Add(request.NewErrParamRequired("VisibilityConfig"))
 17135  	}
 17136  	if s.CustomResponseBodies != nil {
 17137  		for i, v := range s.CustomResponseBodies {
 17138  			if v == nil {
 17139  				continue
 17140  			}
 17141  			if err := v.Validate(); err != nil {
 17142  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CustomResponseBodies", i), err.(request.ErrInvalidParams))
 17143  			}
 17144  		}
 17145  	}
 17146  	if s.Rules != nil {
 17147  		for i, v := range s.Rules {
 17148  			if v == nil {
 17149  				continue
 17150  			}
 17151  			if err := v.Validate(); err != nil {
 17152  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
 17153  			}
 17154  		}
 17155  	}
 17156  	if s.VisibilityConfig != nil {
 17157  		if err := s.VisibilityConfig.Validate(); err != nil {
 17158  			invalidParams.AddNested("VisibilityConfig", err.(request.ErrInvalidParams))
 17159  		}
 17160  	}
 17161  
 17162  	if invalidParams.Len() > 0 {
 17163  		return invalidParams
 17164  	}
 17165  	return nil
 17166  }
 17167  
 17168  // SetCustomResponseBodies sets the CustomResponseBodies field's value.
 17169  func (s *UpdateRuleGroupInput) SetCustomResponseBodies(v map[string]*CustomResponseBody) *UpdateRuleGroupInput {
 17170  	s.CustomResponseBodies = v
 17171  	return s
 17172  }
 17173  
 17174  // SetDescription sets the Description field's value.
 17175  func (s *UpdateRuleGroupInput) SetDescription(v string) *UpdateRuleGroupInput {
 17176  	s.Description = &v
 17177  	return s
 17178  }
 17179  
 17180  // SetId sets the Id field's value.
 17181  func (s *UpdateRuleGroupInput) SetId(v string) *UpdateRuleGroupInput {
 17182  	s.Id = &v
 17183  	return s
 17184  }
 17185  
 17186  // SetLockToken sets the LockToken field's value.
 17187  func (s *UpdateRuleGroupInput) SetLockToken(v string) *UpdateRuleGroupInput {
 17188  	s.LockToken = &v
 17189  	return s
 17190  }
 17191  
 17192  // SetName sets the Name field's value.
 17193  func (s *UpdateRuleGroupInput) SetName(v string) *UpdateRuleGroupInput {
 17194  	s.Name = &v
 17195  	return s
 17196  }
 17197  
 17198  // SetRules sets the Rules field's value.
 17199  func (s *UpdateRuleGroupInput) SetRules(v []*Rule) *UpdateRuleGroupInput {
 17200  	s.Rules = v
 17201  	return s
 17202  }
 17203  
 17204  // SetScope sets the Scope field's value.
 17205  func (s *UpdateRuleGroupInput) SetScope(v string) *UpdateRuleGroupInput {
 17206  	s.Scope = &v
 17207  	return s
 17208  }
 17209  
 17210  // SetVisibilityConfig sets the VisibilityConfig field's value.
 17211  func (s *UpdateRuleGroupInput) SetVisibilityConfig(v *VisibilityConfig) *UpdateRuleGroupInput {
 17212  	s.VisibilityConfig = v
 17213  	return s
 17214  }
 17215  
 17216  type UpdateRuleGroupOutput struct {
 17217  	_ struct{} `type:"structure"`
 17218  
 17219  	// A token used for optimistic locking. WAF returns this token to your update
 17220  	// requests. You use NextLockToken in the same manner as you use LockToken.
 17221  	NextLockToken *string `min:"1" type:"string"`
 17222  }
 17223  
 17224  // String returns the string representation.
 17225  //
 17226  // API parameter values that are decorated as "sensitive" in the API will not
 17227  // be included in the string output. The member name will be present, but the
 17228  // value will be replaced with "sensitive".
 17229  func (s UpdateRuleGroupOutput) String() string {
 17230  	return awsutil.Prettify(s)
 17231  }
 17232  
 17233  // GoString returns the string representation.
 17234  //
 17235  // API parameter values that are decorated as "sensitive" in the API will not
 17236  // be included in the string output. The member name will be present, but the
 17237  // value will be replaced with "sensitive".
 17238  func (s UpdateRuleGroupOutput) GoString() string {
 17239  	return s.String()
 17240  }
 17241  
 17242  // SetNextLockToken sets the NextLockToken field's value.
 17243  func (s *UpdateRuleGroupOutput) SetNextLockToken(v string) *UpdateRuleGroupOutput {
 17244  	s.NextLockToken = &v
 17245  	return s
 17246  }
 17247  
 17248  type UpdateWebACLInput struct {
 17249  	_ struct{} `type:"structure"`
 17250  
 17251  	// A map of custom response keys and content bodies. When you create a rule
 17252  	// with a block action, you can send a custom response to the web request. You
 17253  	// define these for the web ACL, and then use them in the rules and default
 17254  	// actions that you define in the web ACL.
 17255  	//
 17256  	// For information about customizing web requests and responses, see Customizing
 17257  	// web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
 17258  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
 17259  	//
 17260  	// For information about the limits on count and size for custom request and
 17261  	// response settings, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
 17262  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
 17263  	CustomResponseBodies map[string]*CustomResponseBody `min:"1" type:"map"`
 17264  
 17265  	// The action to perform if none of the Rules contained in the WebACL match.
 17266  	//
 17267  	// DefaultAction is a required field
 17268  	DefaultAction *DefaultAction `type:"structure" required:"true"`
 17269  
 17270  	// A description of the web ACL that helps with identification.
 17271  	Description *string `min:"1" type:"string"`
 17272  
 17273  	// The unique identifier for the web ACL. This ID is returned in the responses
 17274  	// to create and list commands. You provide it to operations like update and
 17275  	// delete.
 17276  	//
 17277  	// Id is a required field
 17278  	Id *string `min:"1" type:"string" required:"true"`
 17279  
 17280  	// A token used for optimistic locking. WAF returns a token to your get and
 17281  	// list requests, to mark the state of the entity at the time of the request.
 17282  	// To make changes to the entity associated with the token, you provide the
 17283  	// token to operations like update and delete. WAF uses the token to ensure
 17284  	// that no changes have been made to the entity since you last retrieved it.
 17285  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 17286  	// If this happens, perform another get, and use the new token returned by that
 17287  	// operation.
 17288  	//
 17289  	// LockToken is a required field
 17290  	LockToken *string `min:"1" type:"string" required:"true"`
 17291  
 17292  	// The name of the web ACL. You cannot change the name of a web ACL after you
 17293  	// create it.
 17294  	//
 17295  	// Name is a required field
 17296  	Name *string `min:"1" type:"string" required:"true"`
 17297  
 17298  	// The Rule statements used to identify the web requests that you want to allow,
 17299  	// block, or count. Each rule includes one top-level statement that WAF uses
 17300  	// to identify matching web requests, and parameters that govern how WAF handles
 17301  	// them.
 17302  	Rules []*Rule `type:"list"`
 17303  
 17304  	// Specifies whether this is for an Amazon CloudFront distribution or for a
 17305  	// regional application. A regional application can be an Application Load Balancer
 17306  	// (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
 17307  	//
 17308  	// To work with CloudFront, you must also specify the Region US East (N. Virginia)
 17309  	// as follows:
 17310  	//
 17311  	//    * CLI - Specify the Region when you use the CloudFront scope: --scope=CLOUDFRONT
 17312  	//    --region=us-east-1.
 17313  	//
 17314  	//    * API and SDKs - For all calls, use the Region endpoint us-east-1.
 17315  	//
 17316  	// Scope is a required field
 17317  	Scope *string `type:"string" required:"true" enum:"Scope"`
 17318  
 17319  	// Defines and enables Amazon CloudWatch metrics and web request sample collection.
 17320  	//
 17321  	// VisibilityConfig is a required field
 17322  	VisibilityConfig *VisibilityConfig `type:"structure" required:"true"`
 17323  }
 17324  
 17325  // String returns the string representation.
 17326  //
 17327  // API parameter values that are decorated as "sensitive" in the API will not
 17328  // be included in the string output. The member name will be present, but the
 17329  // value will be replaced with "sensitive".
 17330  func (s UpdateWebACLInput) String() string {
 17331  	return awsutil.Prettify(s)
 17332  }
 17333  
 17334  // GoString returns the string representation.
 17335  //
 17336  // API parameter values that are decorated as "sensitive" in the API will not
 17337  // be included in the string output. The member name will be present, but the
 17338  // value will be replaced with "sensitive".
 17339  func (s UpdateWebACLInput) GoString() string {
 17340  	return s.String()
 17341  }
 17342  
 17343  // Validate inspects the fields of the type to determine if they are valid.
 17344  func (s *UpdateWebACLInput) Validate() error {
 17345  	invalidParams := request.ErrInvalidParams{Context: "UpdateWebACLInput"}
 17346  	if s.CustomResponseBodies != nil && len(s.CustomResponseBodies) < 1 {
 17347  		invalidParams.Add(request.NewErrParamMinLen("CustomResponseBodies", 1))
 17348  	}
 17349  	if s.DefaultAction == nil {
 17350  		invalidParams.Add(request.NewErrParamRequired("DefaultAction"))
 17351  	}
 17352  	if s.Description != nil && len(*s.Description) < 1 {
 17353  		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
 17354  	}
 17355  	if s.Id == nil {
 17356  		invalidParams.Add(request.NewErrParamRequired("Id"))
 17357  	}
 17358  	if s.Id != nil && len(*s.Id) < 1 {
 17359  		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
 17360  	}
 17361  	if s.LockToken == nil {
 17362  		invalidParams.Add(request.NewErrParamRequired("LockToken"))
 17363  	}
 17364  	if s.LockToken != nil && len(*s.LockToken) < 1 {
 17365  		invalidParams.Add(request.NewErrParamMinLen("LockToken", 1))
 17366  	}
 17367  	if s.Name == nil {
 17368  		invalidParams.Add(request.NewErrParamRequired("Name"))
 17369  	}
 17370  	if s.Name != nil && len(*s.Name) < 1 {
 17371  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 17372  	}
 17373  	if s.Scope == nil {
 17374  		invalidParams.Add(request.NewErrParamRequired("Scope"))
 17375  	}
 17376  	if s.VisibilityConfig == nil {
 17377  		invalidParams.Add(request.NewErrParamRequired("VisibilityConfig"))
 17378  	}
 17379  	if s.CustomResponseBodies != nil {
 17380  		for i, v := range s.CustomResponseBodies {
 17381  			if v == nil {
 17382  				continue
 17383  			}
 17384  			if err := v.Validate(); err != nil {
 17385  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CustomResponseBodies", i), err.(request.ErrInvalidParams))
 17386  			}
 17387  		}
 17388  	}
 17389  	if s.DefaultAction != nil {
 17390  		if err := s.DefaultAction.Validate(); err != nil {
 17391  			invalidParams.AddNested("DefaultAction", err.(request.ErrInvalidParams))
 17392  		}
 17393  	}
 17394  	if s.Rules != nil {
 17395  		for i, v := range s.Rules {
 17396  			if v == nil {
 17397  				continue
 17398  			}
 17399  			if err := v.Validate(); err != nil {
 17400  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
 17401  			}
 17402  		}
 17403  	}
 17404  	if s.VisibilityConfig != nil {
 17405  		if err := s.VisibilityConfig.Validate(); err != nil {
 17406  			invalidParams.AddNested("VisibilityConfig", err.(request.ErrInvalidParams))
 17407  		}
 17408  	}
 17409  
 17410  	if invalidParams.Len() > 0 {
 17411  		return invalidParams
 17412  	}
 17413  	return nil
 17414  }
 17415  
 17416  // SetCustomResponseBodies sets the CustomResponseBodies field's value.
 17417  func (s *UpdateWebACLInput) SetCustomResponseBodies(v map[string]*CustomResponseBody) *UpdateWebACLInput {
 17418  	s.CustomResponseBodies = v
 17419  	return s
 17420  }
 17421  
 17422  // SetDefaultAction sets the DefaultAction field's value.
 17423  func (s *UpdateWebACLInput) SetDefaultAction(v *DefaultAction) *UpdateWebACLInput {
 17424  	s.DefaultAction = v
 17425  	return s
 17426  }
 17427  
 17428  // SetDescription sets the Description field's value.
 17429  func (s *UpdateWebACLInput) SetDescription(v string) *UpdateWebACLInput {
 17430  	s.Description = &v
 17431  	return s
 17432  }
 17433  
 17434  // SetId sets the Id field's value.
 17435  func (s *UpdateWebACLInput) SetId(v string) *UpdateWebACLInput {
 17436  	s.Id = &v
 17437  	return s
 17438  }
 17439  
 17440  // SetLockToken sets the LockToken field's value.
 17441  func (s *UpdateWebACLInput) SetLockToken(v string) *UpdateWebACLInput {
 17442  	s.LockToken = &v
 17443  	return s
 17444  }
 17445  
 17446  // SetName sets the Name field's value.
 17447  func (s *UpdateWebACLInput) SetName(v string) *UpdateWebACLInput {
 17448  	s.Name = &v
 17449  	return s
 17450  }
 17451  
 17452  // SetRules sets the Rules field's value.
 17453  func (s *UpdateWebACLInput) SetRules(v []*Rule) *UpdateWebACLInput {
 17454  	s.Rules = v
 17455  	return s
 17456  }
 17457  
 17458  // SetScope sets the Scope field's value.
 17459  func (s *UpdateWebACLInput) SetScope(v string) *UpdateWebACLInput {
 17460  	s.Scope = &v
 17461  	return s
 17462  }
 17463  
 17464  // SetVisibilityConfig sets the VisibilityConfig field's value.
 17465  func (s *UpdateWebACLInput) SetVisibilityConfig(v *VisibilityConfig) *UpdateWebACLInput {
 17466  	s.VisibilityConfig = v
 17467  	return s
 17468  }
 17469  
 17470  type UpdateWebACLOutput struct {
 17471  	_ struct{} `type:"structure"`
 17472  
 17473  	// A token used for optimistic locking. WAF returns this token to your update
 17474  	// requests. You use NextLockToken in the same manner as you use LockToken.
 17475  	NextLockToken *string `min:"1" type:"string"`
 17476  }
 17477  
 17478  // String returns the string representation.
 17479  //
 17480  // API parameter values that are decorated as "sensitive" in the API will not
 17481  // be included in the string output. The member name will be present, but the
 17482  // value will be replaced with "sensitive".
 17483  func (s UpdateWebACLOutput) String() string {
 17484  	return awsutil.Prettify(s)
 17485  }
 17486  
 17487  // GoString returns the string representation.
 17488  //
 17489  // API parameter values that are decorated as "sensitive" in the API will not
 17490  // be included in the string output. The member name will be present, but the
 17491  // value will be replaced with "sensitive".
 17492  func (s UpdateWebACLOutput) GoString() string {
 17493  	return s.String()
 17494  }
 17495  
 17496  // SetNextLockToken sets the NextLockToken field's value.
 17497  func (s *UpdateWebACLOutput) SetNextLockToken(v string) *UpdateWebACLOutput {
 17498  	s.NextLockToken = &v
 17499  	return s
 17500  }
 17501  
 17502  // The path component of the URI of a web request. This is the part of a web
 17503  // request that identifies a resource. For example, /images/daily-ad.jpg.
 17504  //
 17505  // This is used only to indicate the web request component for WAF to inspect,
 17506  // in the FieldToMatch specification.
 17507  //
 17508  // JSON specification: "UriPath": {}
 17509  type UriPath struct {
 17510  	_ struct{} `type:"structure"`
 17511  }
 17512  
 17513  // String returns the string representation.
 17514  //
 17515  // API parameter values that are decorated as "sensitive" in the API will not
 17516  // be included in the string output. The member name will be present, but the
 17517  // value will be replaced with "sensitive".
 17518  func (s UriPath) String() string {
 17519  	return awsutil.Prettify(s)
 17520  }
 17521  
 17522  // GoString returns the string representation.
 17523  //
 17524  // API parameter values that are decorated as "sensitive" in the API will not
 17525  // be included in the string output. The member name will be present, but the
 17526  // value will be replaced with "sensitive".
 17527  func (s UriPath) GoString() string {
 17528  	return s.String()
 17529  }
 17530  
 17531  // A version of the named managed rule group, that the rule group's vendor publishes
 17532  // for use by customers.
 17533  //
 17534  // This is intended for use only by vendors of managed rule sets. Vendors are
 17535  // Amazon Web Services and Amazon Web Services Marketplace sellers.
 17536  //
 17537  // Vendors, you can use the managed rule set APIs to provide controlled rollout
 17538  // of your versioned managed rule group offerings for your customers. The APIs
 17539  // are ListManagedRuleSets, GetManagedRuleSet, PutManagedRuleSetVersions, and
 17540  // UpdateManagedRuleSetVersionExpiryDate.
 17541  type VersionToPublish struct {
 17542  	_ struct{} `type:"structure"`
 17543  
 17544  	// The Amazon Resource Name (ARN) of the vendor's rule group that's used in
 17545  	// the published managed rule group version.
 17546  	AssociatedRuleGroupArn *string `min:"20" type:"string"`
 17547  
 17548  	// The amount of time the vendor expects this version of the managed rule group
 17549  	// to last, in days.
 17550  	ForecastedLifetime *int64 `min:"1" type:"integer"`
 17551  }
 17552  
 17553  // String returns the string representation.
 17554  //
 17555  // API parameter values that are decorated as "sensitive" in the API will not
 17556  // be included in the string output. The member name will be present, but the
 17557  // value will be replaced with "sensitive".
 17558  func (s VersionToPublish) String() string {
 17559  	return awsutil.Prettify(s)
 17560  }
 17561  
 17562  // GoString returns the string representation.
 17563  //
 17564  // API parameter values that are decorated as "sensitive" in the API will not
 17565  // be included in the string output. The member name will be present, but the
 17566  // value will be replaced with "sensitive".
 17567  func (s VersionToPublish) GoString() string {
 17568  	return s.String()
 17569  }
 17570  
 17571  // Validate inspects the fields of the type to determine if they are valid.
 17572  func (s *VersionToPublish) Validate() error {
 17573  	invalidParams := request.ErrInvalidParams{Context: "VersionToPublish"}
 17574  	if s.AssociatedRuleGroupArn != nil && len(*s.AssociatedRuleGroupArn) < 20 {
 17575  		invalidParams.Add(request.NewErrParamMinLen("AssociatedRuleGroupArn", 20))
 17576  	}
 17577  	if s.ForecastedLifetime != nil && *s.ForecastedLifetime < 1 {
 17578  		invalidParams.Add(request.NewErrParamMinValue("ForecastedLifetime", 1))
 17579  	}
 17580  
 17581  	if invalidParams.Len() > 0 {
 17582  		return invalidParams
 17583  	}
 17584  	return nil
 17585  }
 17586  
 17587  // SetAssociatedRuleGroupArn sets the AssociatedRuleGroupArn field's value.
 17588  func (s *VersionToPublish) SetAssociatedRuleGroupArn(v string) *VersionToPublish {
 17589  	s.AssociatedRuleGroupArn = &v
 17590  	return s
 17591  }
 17592  
 17593  // SetForecastedLifetime sets the ForecastedLifetime field's value.
 17594  func (s *VersionToPublish) SetForecastedLifetime(v int64) *VersionToPublish {
 17595  	s.ForecastedLifetime = &v
 17596  	return s
 17597  }
 17598  
 17599  // Defines and enables Amazon CloudWatch metrics and web request sample collection.
 17600  type VisibilityConfig struct {
 17601  	_ struct{} `type:"structure"`
 17602  
 17603  	// A boolean indicating whether the associated resource sends metrics to Amazon
 17604  	// CloudWatch. For the list of available metrics, see WAF Metrics (https://docs.aws.amazon.com/waf/latest/developerguide/monitoring-cloudwatch.html#waf-metrics).
 17605  	//
 17606  	// CloudWatchMetricsEnabled is a required field
 17607  	CloudWatchMetricsEnabled *bool `type:"boolean" required:"true"`
 17608  
 17609  	// A name of the Amazon CloudWatch metric. The name can contain only the characters:
 17610  	// A-Z, a-z, 0-9, - (hyphen), and _ (underscore). The name can be from one to
 17611  	// 128 characters long. It can't contain whitespace or metric names reserved
 17612  	// for WAF, for example "All" and "Default_Action."
 17613  	//
 17614  	// MetricName is a required field
 17615  	MetricName *string `min:"1" type:"string" required:"true"`
 17616  
 17617  	// A boolean indicating whether WAF should store a sampling of the web requests
 17618  	// that match the rules. You can view the sampled requests through the WAF console.
 17619  	//
 17620  	// SampledRequestsEnabled is a required field
 17621  	SampledRequestsEnabled *bool `type:"boolean" required:"true"`
 17622  }
 17623  
 17624  // String returns the string representation.
 17625  //
 17626  // API parameter values that are decorated as "sensitive" in the API will not
 17627  // be included in the string output. The member name will be present, but the
 17628  // value will be replaced with "sensitive".
 17629  func (s VisibilityConfig) String() string {
 17630  	return awsutil.Prettify(s)
 17631  }
 17632  
 17633  // GoString returns the string representation.
 17634  //
 17635  // API parameter values that are decorated as "sensitive" in the API will not
 17636  // be included in the string output. The member name will be present, but the
 17637  // value will be replaced with "sensitive".
 17638  func (s VisibilityConfig) GoString() string {
 17639  	return s.String()
 17640  }
 17641  
 17642  // Validate inspects the fields of the type to determine if they are valid.
 17643  func (s *VisibilityConfig) Validate() error {
 17644  	invalidParams := request.ErrInvalidParams{Context: "VisibilityConfig"}
 17645  	if s.CloudWatchMetricsEnabled == nil {
 17646  		invalidParams.Add(request.NewErrParamRequired("CloudWatchMetricsEnabled"))
 17647  	}
 17648  	if s.MetricName == nil {
 17649  		invalidParams.Add(request.NewErrParamRequired("MetricName"))
 17650  	}
 17651  	if s.MetricName != nil && len(*s.MetricName) < 1 {
 17652  		invalidParams.Add(request.NewErrParamMinLen("MetricName", 1))
 17653  	}
 17654  	if s.SampledRequestsEnabled == nil {
 17655  		invalidParams.Add(request.NewErrParamRequired("SampledRequestsEnabled"))
 17656  	}
 17657  
 17658  	if invalidParams.Len() > 0 {
 17659  		return invalidParams
 17660  	}
 17661  	return nil
 17662  }
 17663  
 17664  // SetCloudWatchMetricsEnabled sets the CloudWatchMetricsEnabled field's value.
 17665  func (s *VisibilityConfig) SetCloudWatchMetricsEnabled(v bool) *VisibilityConfig {
 17666  	s.CloudWatchMetricsEnabled = &v
 17667  	return s
 17668  }
 17669  
 17670  // SetMetricName sets the MetricName field's value.
 17671  func (s *VisibilityConfig) SetMetricName(v string) *VisibilityConfig {
 17672  	s.MetricName = &v
 17673  	return s
 17674  }
 17675  
 17676  // SetSampledRequestsEnabled sets the SampledRequestsEnabled field's value.
 17677  func (s *VisibilityConfig) SetSampledRequestsEnabled(v bool) *VisibilityConfig {
 17678  	s.SampledRequestsEnabled = &v
 17679  	return s
 17680  }
 17681  
 17682  // WAF couldn’t perform the operation because your resource is being used
 17683  // by another resource or it’s associated with another resource.
 17684  type WAFAssociatedItemException struct {
 17685  	_            struct{}                  `type:"structure"`
 17686  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 17687  
 17688  	Message_ *string `locationName:"Message" type:"string"`
 17689  }
 17690  
 17691  // String returns the string representation.
 17692  //
 17693  // API parameter values that are decorated as "sensitive" in the API will not
 17694  // be included in the string output. The member name will be present, but the
 17695  // value will be replaced with "sensitive".
 17696  func (s WAFAssociatedItemException) String() string {
 17697  	return awsutil.Prettify(s)
 17698  }
 17699  
 17700  // GoString returns the string representation.
 17701  //
 17702  // API parameter values that are decorated as "sensitive" in the API will not
 17703  // be included in the string output. The member name will be present, but the
 17704  // value will be replaced with "sensitive".
 17705  func (s WAFAssociatedItemException) GoString() string {
 17706  	return s.String()
 17707  }
 17708  
 17709  func newErrorWAFAssociatedItemException(v protocol.ResponseMetadata) error {
 17710  	return &WAFAssociatedItemException{
 17711  		RespMetadata: v,
 17712  	}
 17713  }
 17714  
 17715  // Code returns the exception type name.
 17716  func (s *WAFAssociatedItemException) Code() string {
 17717  	return "WAFAssociatedItemException"
 17718  }
 17719  
 17720  // Message returns the exception's message.
 17721  func (s *WAFAssociatedItemException) Message() string {
 17722  	if s.Message_ != nil {
 17723  		return *s.Message_
 17724  	}
 17725  	return ""
 17726  }
 17727  
 17728  // OrigErr always returns nil, satisfies awserr.Error interface.
 17729  func (s *WAFAssociatedItemException) OrigErr() error {
 17730  	return nil
 17731  }
 17732  
 17733  func (s *WAFAssociatedItemException) Error() string {
 17734  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 17735  }
 17736  
 17737  // Status code returns the HTTP status code for the request's response error.
 17738  func (s *WAFAssociatedItemException) StatusCode() int {
 17739  	return s.RespMetadata.StatusCode
 17740  }
 17741  
 17742  // RequestID returns the service's response RequestID for request.
 17743  func (s *WAFAssociatedItemException) RequestID() string {
 17744  	return s.RespMetadata.RequestID
 17745  }
 17746  
 17747  // WAF couldn’t perform the operation because the resource that you tried
 17748  // to save is a duplicate of an existing one.
 17749  type WAFDuplicateItemException struct {
 17750  	_            struct{}                  `type:"structure"`
 17751  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 17752  
 17753  	Message_ *string `locationName:"Message" type:"string"`
 17754  }
 17755  
 17756  // String returns the string representation.
 17757  //
 17758  // API parameter values that are decorated as "sensitive" in the API will not
 17759  // be included in the string output. The member name will be present, but the
 17760  // value will be replaced with "sensitive".
 17761  func (s WAFDuplicateItemException) String() string {
 17762  	return awsutil.Prettify(s)
 17763  }
 17764  
 17765  // GoString returns the string representation.
 17766  //
 17767  // API parameter values that are decorated as "sensitive" in the API will not
 17768  // be included in the string output. The member name will be present, but the
 17769  // value will be replaced with "sensitive".
 17770  func (s WAFDuplicateItemException) GoString() string {
 17771  	return s.String()
 17772  }
 17773  
 17774  func newErrorWAFDuplicateItemException(v protocol.ResponseMetadata) error {
 17775  	return &WAFDuplicateItemException{
 17776  		RespMetadata: v,
 17777  	}
 17778  }
 17779  
 17780  // Code returns the exception type name.
 17781  func (s *WAFDuplicateItemException) Code() string {
 17782  	return "WAFDuplicateItemException"
 17783  }
 17784  
 17785  // Message returns the exception's message.
 17786  func (s *WAFDuplicateItemException) Message() string {
 17787  	if s.Message_ != nil {
 17788  		return *s.Message_
 17789  	}
 17790  	return ""
 17791  }
 17792  
 17793  // OrigErr always returns nil, satisfies awserr.Error interface.
 17794  func (s *WAFDuplicateItemException) OrigErr() error {
 17795  	return nil
 17796  }
 17797  
 17798  func (s *WAFDuplicateItemException) Error() string {
 17799  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 17800  }
 17801  
 17802  // Status code returns the HTTP status code for the request's response error.
 17803  func (s *WAFDuplicateItemException) StatusCode() int {
 17804  	return s.RespMetadata.StatusCode
 17805  }
 17806  
 17807  // RequestID returns the service's response RequestID for request.
 17808  func (s *WAFDuplicateItemException) RequestID() string {
 17809  	return s.RespMetadata.RequestID
 17810  }
 17811  
 17812  // The operation failed because the specified version for the managed rule group
 17813  // has expired. You can retrieve the available versions for the managed rule
 17814  // group by calling ListAvailableManagedRuleGroupVersions.
 17815  type WAFExpiredManagedRuleGroupVersionException struct {
 17816  	_            struct{}                  `type:"structure"`
 17817  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 17818  
 17819  	Message_ *string `locationName:"Message" type:"string"`
 17820  }
 17821  
 17822  // String returns the string representation.
 17823  //
 17824  // API parameter values that are decorated as "sensitive" in the API will not
 17825  // be included in the string output. The member name will be present, but the
 17826  // value will be replaced with "sensitive".
 17827  func (s WAFExpiredManagedRuleGroupVersionException) String() string {
 17828  	return awsutil.Prettify(s)
 17829  }
 17830  
 17831  // GoString returns the string representation.
 17832  //
 17833  // API parameter values that are decorated as "sensitive" in the API will not
 17834  // be included in the string output. The member name will be present, but the
 17835  // value will be replaced with "sensitive".
 17836  func (s WAFExpiredManagedRuleGroupVersionException) GoString() string {
 17837  	return s.String()
 17838  }
 17839  
 17840  func newErrorWAFExpiredManagedRuleGroupVersionException(v protocol.ResponseMetadata) error {
 17841  	return &WAFExpiredManagedRuleGroupVersionException{
 17842  		RespMetadata: v,
 17843  	}
 17844  }
 17845  
 17846  // Code returns the exception type name.
 17847  func (s *WAFExpiredManagedRuleGroupVersionException) Code() string {
 17848  	return "WAFExpiredManagedRuleGroupVersionException"
 17849  }
 17850  
 17851  // Message returns the exception's message.
 17852  func (s *WAFExpiredManagedRuleGroupVersionException) Message() string {
 17853  	if s.Message_ != nil {
 17854  		return *s.Message_
 17855  	}
 17856  	return ""
 17857  }
 17858  
 17859  // OrigErr always returns nil, satisfies awserr.Error interface.
 17860  func (s *WAFExpiredManagedRuleGroupVersionException) OrigErr() error {
 17861  	return nil
 17862  }
 17863  
 17864  func (s *WAFExpiredManagedRuleGroupVersionException) Error() string {
 17865  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 17866  }
 17867  
 17868  // Status code returns the HTTP status code for the request's response error.
 17869  func (s *WAFExpiredManagedRuleGroupVersionException) StatusCode() int {
 17870  	return s.RespMetadata.StatusCode
 17871  }
 17872  
 17873  // RequestID returns the service's response RequestID for request.
 17874  func (s *WAFExpiredManagedRuleGroupVersionException) RequestID() string {
 17875  	return s.RespMetadata.RequestID
 17876  }
 17877  
 17878  // Your request is valid, but WAF couldn’t perform the operation because of
 17879  // a system problem. Retry your request.
 17880  type WAFInternalErrorException struct {
 17881  	_            struct{}                  `type:"structure"`
 17882  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 17883  
 17884  	Message_ *string `locationName:"Message" type:"string"`
 17885  }
 17886  
 17887  // String returns the string representation.
 17888  //
 17889  // API parameter values that are decorated as "sensitive" in the API will not
 17890  // be included in the string output. The member name will be present, but the
 17891  // value will be replaced with "sensitive".
 17892  func (s WAFInternalErrorException) String() string {
 17893  	return awsutil.Prettify(s)
 17894  }
 17895  
 17896  // GoString returns the string representation.
 17897  //
 17898  // API parameter values that are decorated as "sensitive" in the API will not
 17899  // be included in the string output. The member name will be present, but the
 17900  // value will be replaced with "sensitive".
 17901  func (s WAFInternalErrorException) GoString() string {
 17902  	return s.String()
 17903  }
 17904  
 17905  func newErrorWAFInternalErrorException(v protocol.ResponseMetadata) error {
 17906  	return &WAFInternalErrorException{
 17907  		RespMetadata: v,
 17908  	}
 17909  }
 17910  
 17911  // Code returns the exception type name.
 17912  func (s *WAFInternalErrorException) Code() string {
 17913  	return "WAFInternalErrorException"
 17914  }
 17915  
 17916  // Message returns the exception's message.
 17917  func (s *WAFInternalErrorException) Message() string {
 17918  	if s.Message_ != nil {
 17919  		return *s.Message_
 17920  	}
 17921  	return ""
 17922  }
 17923  
 17924  // OrigErr always returns nil, satisfies awserr.Error interface.
 17925  func (s *WAFInternalErrorException) OrigErr() error {
 17926  	return nil
 17927  }
 17928  
 17929  func (s *WAFInternalErrorException) Error() string {
 17930  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 17931  }
 17932  
 17933  // Status code returns the HTTP status code for the request's response error.
 17934  func (s *WAFInternalErrorException) StatusCode() int {
 17935  	return s.RespMetadata.StatusCode
 17936  }
 17937  
 17938  // RequestID returns the service's response RequestID for request.
 17939  func (s *WAFInternalErrorException) RequestID() string {
 17940  	return s.RespMetadata.RequestID
 17941  }
 17942  
 17943  // The operation isn't valid.
 17944  type WAFInvalidOperationException struct {
 17945  	_            struct{}                  `type:"structure"`
 17946  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 17947  
 17948  	Message_ *string `locationName:"Message" type:"string"`
 17949  }
 17950  
 17951  // String returns the string representation.
 17952  //
 17953  // API parameter values that are decorated as "sensitive" in the API will not
 17954  // be included in the string output. The member name will be present, but the
 17955  // value will be replaced with "sensitive".
 17956  func (s WAFInvalidOperationException) String() string {
 17957  	return awsutil.Prettify(s)
 17958  }
 17959  
 17960  // GoString returns the string representation.
 17961  //
 17962  // API parameter values that are decorated as "sensitive" in the API will not
 17963  // be included in the string output. The member name will be present, but the
 17964  // value will be replaced with "sensitive".
 17965  func (s WAFInvalidOperationException) GoString() string {
 17966  	return s.String()
 17967  }
 17968  
 17969  func newErrorWAFInvalidOperationException(v protocol.ResponseMetadata) error {
 17970  	return &WAFInvalidOperationException{
 17971  		RespMetadata: v,
 17972  	}
 17973  }
 17974  
 17975  // Code returns the exception type name.
 17976  func (s *WAFInvalidOperationException) Code() string {
 17977  	return "WAFInvalidOperationException"
 17978  }
 17979  
 17980  // Message returns the exception's message.
 17981  func (s *WAFInvalidOperationException) Message() string {
 17982  	if s.Message_ != nil {
 17983  		return *s.Message_
 17984  	}
 17985  	return ""
 17986  }
 17987  
 17988  // OrigErr always returns nil, satisfies awserr.Error interface.
 17989  func (s *WAFInvalidOperationException) OrigErr() error {
 17990  	return nil
 17991  }
 17992  
 17993  func (s *WAFInvalidOperationException) Error() string {
 17994  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 17995  }
 17996  
 17997  // Status code returns the HTTP status code for the request's response error.
 17998  func (s *WAFInvalidOperationException) StatusCode() int {
 17999  	return s.RespMetadata.StatusCode
 18000  }
 18001  
 18002  // RequestID returns the service's response RequestID for request.
 18003  func (s *WAFInvalidOperationException) RequestID() string {
 18004  	return s.RespMetadata.RequestID
 18005  }
 18006  
 18007  // The operation failed because WAF didn't recognize a parameter in the request.
 18008  // For example:
 18009  //
 18010  //    * You specified a parameter name or value that isn't valid.
 18011  //
 18012  //    * Your nested statement isn't valid. You might have tried to nest a statement
 18013  //    that can’t be nested.
 18014  //
 18015  //    * You tried to update a WebACL with a DefaultAction that isn't among the
 18016  //    types available at DefaultAction.
 18017  //
 18018  //    * Your request references an ARN that is malformed, or corresponds to
 18019  //    a resource with which a web ACL can't be associated.
 18020  type WAFInvalidParameterException struct {
 18021  	_            struct{}                  `type:"structure"`
 18022  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 18023  
 18024  	// The settings where the invalid parameter was found.
 18025  	Field *string `type:"string" enum:"ParameterExceptionField"`
 18026  
 18027  	Message_ *string `locationName:"message" type:"string"`
 18028  
 18029  	// The invalid parameter that resulted in the exception.
 18030  	Parameter *string `min:"1" type:"string"`
 18031  
 18032  	// Additional information about the exception.
 18033  	Reason *string `type:"string"`
 18034  }
 18035  
 18036  // String returns the string representation.
 18037  //
 18038  // API parameter values that are decorated as "sensitive" in the API will not
 18039  // be included in the string output. The member name will be present, but the
 18040  // value will be replaced with "sensitive".
 18041  func (s WAFInvalidParameterException) String() string {
 18042  	return awsutil.Prettify(s)
 18043  }
 18044  
 18045  // GoString returns the string representation.
 18046  //
 18047  // API parameter values that are decorated as "sensitive" in the API will not
 18048  // be included in the string output. The member name will be present, but the
 18049  // value will be replaced with "sensitive".
 18050  func (s WAFInvalidParameterException) GoString() string {
 18051  	return s.String()
 18052  }
 18053  
 18054  func newErrorWAFInvalidParameterException(v protocol.ResponseMetadata) error {
 18055  	return &WAFInvalidParameterException{
 18056  		RespMetadata: v,
 18057  	}
 18058  }
 18059  
 18060  // Code returns the exception type name.
 18061  func (s *WAFInvalidParameterException) Code() string {
 18062  	return "WAFInvalidParameterException"
 18063  }
 18064  
 18065  // Message returns the exception's message.
 18066  func (s *WAFInvalidParameterException) Message() string {
 18067  	if s.Message_ != nil {
 18068  		return *s.Message_
 18069  	}
 18070  	return ""
 18071  }
 18072  
 18073  // OrigErr always returns nil, satisfies awserr.Error interface.
 18074  func (s *WAFInvalidParameterException) OrigErr() error {
 18075  	return nil
 18076  }
 18077  
 18078  func (s *WAFInvalidParameterException) Error() string {
 18079  	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
 18080  }
 18081  
 18082  // Status code returns the HTTP status code for the request's response error.
 18083  func (s *WAFInvalidParameterException) StatusCode() int {
 18084  	return s.RespMetadata.StatusCode
 18085  }
 18086  
 18087  // RequestID returns the service's response RequestID for request.
 18088  func (s *WAFInvalidParameterException) RequestID() string {
 18089  	return s.RespMetadata.RequestID
 18090  }
 18091  
 18092  // The operation failed because the specified policy isn't in the proper format.
 18093  //
 18094  // The policy specifications must conform to the following:
 18095  //
 18096  //    * The policy must be composed using IAM Policy version 2012-10-17 or version
 18097  //    2015-01-01.
 18098  //
 18099  //    * The policy must include specifications for Effect, Action, and Principal.
 18100  //
 18101  //    * Effect must specify Allow.
 18102  //
 18103  //    * Action must specify wafv2:CreateWebACL, wafv2:UpdateWebACL, and wafv2:PutFirewallManagerRuleGroups.
 18104  //    WAF rejects any extra actions or wildcard actions in the policy.
 18105  //
 18106  //    * The policy must not include a Resource parameter.
 18107  //
 18108  // For more information, see IAM Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html).
 18109  type WAFInvalidPermissionPolicyException struct {
 18110  	_            struct{}                  `type:"structure"`
 18111  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 18112  
 18113  	Message_ *string `locationName:"Message" type:"string"`
 18114  }
 18115  
 18116  // String returns the string representation.
 18117  //
 18118  // API parameter values that are decorated as "sensitive" in the API will not
 18119  // be included in the string output. The member name will be present, but the
 18120  // value will be replaced with "sensitive".
 18121  func (s WAFInvalidPermissionPolicyException) String() string {
 18122  	return awsutil.Prettify(s)
 18123  }
 18124  
 18125  // GoString returns the string representation.
 18126  //
 18127  // API parameter values that are decorated as "sensitive" in the API will not
 18128  // be included in the string output. The member name will be present, but the
 18129  // value will be replaced with "sensitive".
 18130  func (s WAFInvalidPermissionPolicyException) GoString() string {
 18131  	return s.String()
 18132  }
 18133  
 18134  func newErrorWAFInvalidPermissionPolicyException(v protocol.ResponseMetadata) error {
 18135  	return &WAFInvalidPermissionPolicyException{
 18136  		RespMetadata: v,
 18137  	}
 18138  }
 18139  
 18140  // Code returns the exception type name.
 18141  func (s *WAFInvalidPermissionPolicyException) Code() string {
 18142  	return "WAFInvalidPermissionPolicyException"
 18143  }
 18144  
 18145  // Message returns the exception's message.
 18146  func (s *WAFInvalidPermissionPolicyException) Message() string {
 18147  	if s.Message_ != nil {
 18148  		return *s.Message_
 18149  	}
 18150  	return ""
 18151  }
 18152  
 18153  // OrigErr always returns nil, satisfies awserr.Error interface.
 18154  func (s *WAFInvalidPermissionPolicyException) OrigErr() error {
 18155  	return nil
 18156  }
 18157  
 18158  func (s *WAFInvalidPermissionPolicyException) Error() string {
 18159  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 18160  }
 18161  
 18162  // Status code returns the HTTP status code for the request's response error.
 18163  func (s *WAFInvalidPermissionPolicyException) StatusCode() int {
 18164  	return s.RespMetadata.StatusCode
 18165  }
 18166  
 18167  // RequestID returns the service's response RequestID for request.
 18168  func (s *WAFInvalidPermissionPolicyException) RequestID() string {
 18169  	return s.RespMetadata.RequestID
 18170  }
 18171  
 18172  // WAF couldn’t perform the operation because the resource that you requested
 18173  // isn’t valid. Check the resource, and try again.
 18174  type WAFInvalidResourceException struct {
 18175  	_            struct{}                  `type:"structure"`
 18176  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 18177  
 18178  	Message_ *string `locationName:"Message" type:"string"`
 18179  }
 18180  
 18181  // String returns the string representation.
 18182  //
 18183  // API parameter values that are decorated as "sensitive" in the API will not
 18184  // be included in the string output. The member name will be present, but the
 18185  // value will be replaced with "sensitive".
 18186  func (s WAFInvalidResourceException) String() string {
 18187  	return awsutil.Prettify(s)
 18188  }
 18189  
 18190  // GoString returns the string representation.
 18191  //
 18192  // API parameter values that are decorated as "sensitive" in the API will not
 18193  // be included in the string output. The member name will be present, but the
 18194  // value will be replaced with "sensitive".
 18195  func (s WAFInvalidResourceException) GoString() string {
 18196  	return s.String()
 18197  }
 18198  
 18199  func newErrorWAFInvalidResourceException(v protocol.ResponseMetadata) error {
 18200  	return &WAFInvalidResourceException{
 18201  		RespMetadata: v,
 18202  	}
 18203  }
 18204  
 18205  // Code returns the exception type name.
 18206  func (s *WAFInvalidResourceException) Code() string {
 18207  	return "WAFInvalidResourceException"
 18208  }
 18209  
 18210  // Message returns the exception's message.
 18211  func (s *WAFInvalidResourceException) Message() string {
 18212  	if s.Message_ != nil {
 18213  		return *s.Message_
 18214  	}
 18215  	return ""
 18216  }
 18217  
 18218  // OrigErr always returns nil, satisfies awserr.Error interface.
 18219  func (s *WAFInvalidResourceException) OrigErr() error {
 18220  	return nil
 18221  }
 18222  
 18223  func (s *WAFInvalidResourceException) Error() string {
 18224  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 18225  }
 18226  
 18227  // Status code returns the HTTP status code for the request's response error.
 18228  func (s *WAFInvalidResourceException) StatusCode() int {
 18229  	return s.RespMetadata.StatusCode
 18230  }
 18231  
 18232  // RequestID returns the service's response RequestID for request.
 18233  func (s *WAFInvalidResourceException) RequestID() string {
 18234  	return s.RespMetadata.RequestID
 18235  }
 18236  
 18237  // WAF couldn’t perform the operation because you exceeded your resource limit.
 18238  // For example, the maximum number of WebACL objects that you can create for
 18239  // an Amazon Web Services account. For more information, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
 18240  // in the WAF Developer Guide.
 18241  type WAFLimitsExceededException struct {
 18242  	_            struct{}                  `type:"structure"`
 18243  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 18244  
 18245  	Message_ *string `locationName:"Message" type:"string"`
 18246  }
 18247  
 18248  // String returns the string representation.
 18249  //
 18250  // API parameter values that are decorated as "sensitive" in the API will not
 18251  // be included in the string output. The member name will be present, but the
 18252  // value will be replaced with "sensitive".
 18253  func (s WAFLimitsExceededException) String() string {
 18254  	return awsutil.Prettify(s)
 18255  }
 18256  
 18257  // GoString returns the string representation.
 18258  //
 18259  // API parameter values that are decorated as "sensitive" in the API will not
 18260  // be included in the string output. The member name will be present, but the
 18261  // value will be replaced with "sensitive".
 18262  func (s WAFLimitsExceededException) GoString() string {
 18263  	return s.String()
 18264  }
 18265  
 18266  func newErrorWAFLimitsExceededException(v protocol.ResponseMetadata) error {
 18267  	return &WAFLimitsExceededException{
 18268  		RespMetadata: v,
 18269  	}
 18270  }
 18271  
 18272  // Code returns the exception type name.
 18273  func (s *WAFLimitsExceededException) Code() string {
 18274  	return "WAFLimitsExceededException"
 18275  }
 18276  
 18277  // Message returns the exception's message.
 18278  func (s *WAFLimitsExceededException) Message() string {
 18279  	if s.Message_ != nil {
 18280  		return *s.Message_
 18281  	}
 18282  	return ""
 18283  }
 18284  
 18285  // OrigErr always returns nil, satisfies awserr.Error interface.
 18286  func (s *WAFLimitsExceededException) OrigErr() error {
 18287  	return nil
 18288  }
 18289  
 18290  func (s *WAFLimitsExceededException) Error() string {
 18291  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 18292  }
 18293  
 18294  // Status code returns the HTTP status code for the request's response error.
 18295  func (s *WAFLimitsExceededException) StatusCode() int {
 18296  	return s.RespMetadata.StatusCode
 18297  }
 18298  
 18299  // RequestID returns the service's response RequestID for request.
 18300  func (s *WAFLimitsExceededException) RequestID() string {
 18301  	return s.RespMetadata.RequestID
 18302  }
 18303  
 18304  // WAF couldn’t perform the operation because your resource doesn’t exist.
 18305  type WAFNonexistentItemException struct {
 18306  	_            struct{}                  `type:"structure"`
 18307  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 18308  
 18309  	Message_ *string `locationName:"Message" type:"string"`
 18310  }
 18311  
 18312  // String returns the string representation.
 18313  //
 18314  // API parameter values that are decorated as "sensitive" in the API will not
 18315  // be included in the string output. The member name will be present, but the
 18316  // value will be replaced with "sensitive".
 18317  func (s WAFNonexistentItemException) String() string {
 18318  	return awsutil.Prettify(s)
 18319  }
 18320  
 18321  // GoString returns the string representation.
 18322  //
 18323  // API parameter values that are decorated as "sensitive" in the API will not
 18324  // be included in the string output. The member name will be present, but the
 18325  // value will be replaced with "sensitive".
 18326  func (s WAFNonexistentItemException) GoString() string {
 18327  	return s.String()
 18328  }
 18329  
 18330  func newErrorWAFNonexistentItemException(v protocol.ResponseMetadata) error {
 18331  	return &WAFNonexistentItemException{
 18332  		RespMetadata: v,
 18333  	}
 18334  }
 18335  
 18336  // Code returns the exception type name.
 18337  func (s *WAFNonexistentItemException) Code() string {
 18338  	return "WAFNonexistentItemException"
 18339  }
 18340  
 18341  // Message returns the exception's message.
 18342  func (s *WAFNonexistentItemException) Message() string {
 18343  	if s.Message_ != nil {
 18344  		return *s.Message_
 18345  	}
 18346  	return ""
 18347  }
 18348  
 18349  // OrigErr always returns nil, satisfies awserr.Error interface.
 18350  func (s *WAFNonexistentItemException) OrigErr() error {
 18351  	return nil
 18352  }
 18353  
 18354  func (s *WAFNonexistentItemException) Error() string {
 18355  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 18356  }
 18357  
 18358  // Status code returns the HTTP status code for the request's response error.
 18359  func (s *WAFNonexistentItemException) StatusCode() int {
 18360  	return s.RespMetadata.StatusCode
 18361  }
 18362  
 18363  // RequestID returns the service's response RequestID for request.
 18364  func (s *WAFNonexistentItemException) RequestID() string {
 18365  	return s.RespMetadata.RequestID
 18366  }
 18367  
 18368  // WAF couldn’t save your changes because you tried to update or delete a
 18369  // resource that has changed since you last retrieved it. Get the resource again,
 18370  // make any changes you need to make to the new copy, and retry your operation.
 18371  type WAFOptimisticLockException struct {
 18372  	_            struct{}                  `type:"structure"`
 18373  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 18374  
 18375  	Message_ *string `locationName:"Message" type:"string"`
 18376  }
 18377  
 18378  // String returns the string representation.
 18379  //
 18380  // API parameter values that are decorated as "sensitive" in the API will not
 18381  // be included in the string output. The member name will be present, but the
 18382  // value will be replaced with "sensitive".
 18383  func (s WAFOptimisticLockException) String() string {
 18384  	return awsutil.Prettify(s)
 18385  }
 18386  
 18387  // GoString returns the string representation.
 18388  //
 18389  // API parameter values that are decorated as "sensitive" in the API will not
 18390  // be included in the string output. The member name will be present, but the
 18391  // value will be replaced with "sensitive".
 18392  func (s WAFOptimisticLockException) GoString() string {
 18393  	return s.String()
 18394  }
 18395  
 18396  func newErrorWAFOptimisticLockException(v protocol.ResponseMetadata) error {
 18397  	return &WAFOptimisticLockException{
 18398  		RespMetadata: v,
 18399  	}
 18400  }
 18401  
 18402  // Code returns the exception type name.
 18403  func (s *WAFOptimisticLockException) Code() string {
 18404  	return "WAFOptimisticLockException"
 18405  }
 18406  
 18407  // Message returns the exception's message.
 18408  func (s *WAFOptimisticLockException) Message() string {
 18409  	if s.Message_ != nil {
 18410  		return *s.Message_
 18411  	}
 18412  	return ""
 18413  }
 18414  
 18415  // OrigErr always returns nil, satisfies awserr.Error interface.
 18416  func (s *WAFOptimisticLockException) OrigErr() error {
 18417  	return nil
 18418  }
 18419  
 18420  func (s *WAFOptimisticLockException) Error() string {
 18421  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 18422  }
 18423  
 18424  // Status code returns the HTTP status code for the request's response error.
 18425  func (s *WAFOptimisticLockException) StatusCode() int {
 18426  	return s.RespMetadata.StatusCode
 18427  }
 18428  
 18429  // RequestID returns the service's response RequestID for request.
 18430  func (s *WAFOptimisticLockException) RequestID() string {
 18431  	return s.RespMetadata.RequestID
 18432  }
 18433  
 18434  // WAF is not able to access the service linked role. This can be caused by
 18435  // a previous PutLoggingConfiguration request, which can lock the service linked
 18436  // role for about 20 seconds. Please try your request again. The service linked
 18437  // role can also be locked by a previous DeleteServiceLinkedRole request, which
 18438  // can lock the role for 15 minutes or more. If you recently made a call to
 18439  // DeleteServiceLinkedRole, wait at least 15 minutes and try the request again.
 18440  // If you receive this same exception again, you will have to wait additional
 18441  // time until the role is unlocked.
 18442  type WAFServiceLinkedRoleErrorException struct {
 18443  	_            struct{}                  `type:"structure"`
 18444  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 18445  
 18446  	Message_ *string `locationName:"message" type:"string"`
 18447  }
 18448  
 18449  // String returns the string representation.
 18450  //
 18451  // API parameter values that are decorated as "sensitive" in the API will not
 18452  // be included in the string output. The member name will be present, but the
 18453  // value will be replaced with "sensitive".
 18454  func (s WAFServiceLinkedRoleErrorException) String() string {
 18455  	return awsutil.Prettify(s)
 18456  }
 18457  
 18458  // GoString returns the string representation.
 18459  //
 18460  // API parameter values that are decorated as "sensitive" in the API will not
 18461  // be included in the string output. The member name will be present, but the
 18462  // value will be replaced with "sensitive".
 18463  func (s WAFServiceLinkedRoleErrorException) GoString() string {
 18464  	return s.String()
 18465  }
 18466  
 18467  func newErrorWAFServiceLinkedRoleErrorException(v protocol.ResponseMetadata) error {
 18468  	return &WAFServiceLinkedRoleErrorException{
 18469  		RespMetadata: v,
 18470  	}
 18471  }
 18472  
 18473  // Code returns the exception type name.
 18474  func (s *WAFServiceLinkedRoleErrorException) Code() string {
 18475  	return "WAFServiceLinkedRoleErrorException"
 18476  }
 18477  
 18478  // Message returns the exception's message.
 18479  func (s *WAFServiceLinkedRoleErrorException) Message() string {
 18480  	if s.Message_ != nil {
 18481  		return *s.Message_
 18482  	}
 18483  	return ""
 18484  }
 18485  
 18486  // OrigErr always returns nil, satisfies awserr.Error interface.
 18487  func (s *WAFServiceLinkedRoleErrorException) OrigErr() error {
 18488  	return nil
 18489  }
 18490  
 18491  func (s *WAFServiceLinkedRoleErrorException) Error() string {
 18492  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 18493  }
 18494  
 18495  // Status code returns the HTTP status code for the request's response error.
 18496  func (s *WAFServiceLinkedRoleErrorException) StatusCode() int {
 18497  	return s.RespMetadata.StatusCode
 18498  }
 18499  
 18500  // RequestID returns the service's response RequestID for request.
 18501  func (s *WAFServiceLinkedRoleErrorException) RequestID() string {
 18502  	return s.RespMetadata.RequestID
 18503  }
 18504  
 18505  // You tried to use a managed rule group that's available by subscription, but
 18506  // you aren't subscribed to it yet.
 18507  type WAFSubscriptionNotFoundException struct {
 18508  	_            struct{}                  `type:"structure"`
 18509  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 18510  
 18511  	Message_ *string `locationName:"Message" type:"string"`
 18512  }
 18513  
 18514  // String returns the string representation.
 18515  //
 18516  // API parameter values that are decorated as "sensitive" in the API will not
 18517  // be included in the string output. The member name will be present, but the
 18518  // value will be replaced with "sensitive".
 18519  func (s WAFSubscriptionNotFoundException) String() string {
 18520  	return awsutil.Prettify(s)
 18521  }
 18522  
 18523  // GoString returns the string representation.
 18524  //
 18525  // API parameter values that are decorated as "sensitive" in the API will not
 18526  // be included in the string output. The member name will be present, but the
 18527  // value will be replaced with "sensitive".
 18528  func (s WAFSubscriptionNotFoundException) GoString() string {
 18529  	return s.String()
 18530  }
 18531  
 18532  func newErrorWAFSubscriptionNotFoundException(v protocol.ResponseMetadata) error {
 18533  	return &WAFSubscriptionNotFoundException{
 18534  		RespMetadata: v,
 18535  	}
 18536  }
 18537  
 18538  // Code returns the exception type name.
 18539  func (s *WAFSubscriptionNotFoundException) Code() string {
 18540  	return "WAFSubscriptionNotFoundException"
 18541  }
 18542  
 18543  // Message returns the exception's message.
 18544  func (s *WAFSubscriptionNotFoundException) Message() string {
 18545  	if s.Message_ != nil {
 18546  		return *s.Message_
 18547  	}
 18548  	return ""
 18549  }
 18550  
 18551  // OrigErr always returns nil, satisfies awserr.Error interface.
 18552  func (s *WAFSubscriptionNotFoundException) OrigErr() error {
 18553  	return nil
 18554  }
 18555  
 18556  func (s *WAFSubscriptionNotFoundException) Error() string {
 18557  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 18558  }
 18559  
 18560  // Status code returns the HTTP status code for the request's response error.
 18561  func (s *WAFSubscriptionNotFoundException) StatusCode() int {
 18562  	return s.RespMetadata.StatusCode
 18563  }
 18564  
 18565  // RequestID returns the service's response RequestID for request.
 18566  func (s *WAFSubscriptionNotFoundException) RequestID() string {
 18567  	return s.RespMetadata.RequestID
 18568  }
 18569  
 18570  // An error occurred during the tagging operation. Retry your request.
 18571  type WAFTagOperationException struct {
 18572  	_            struct{}                  `type:"structure"`
 18573  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 18574  
 18575  	Message_ *string `locationName:"Message" type:"string"`
 18576  }
 18577  
 18578  // String returns the string representation.
 18579  //
 18580  // API parameter values that are decorated as "sensitive" in the API will not
 18581  // be included in the string output. The member name will be present, but the
 18582  // value will be replaced with "sensitive".
 18583  func (s WAFTagOperationException) String() string {
 18584  	return awsutil.Prettify(s)
 18585  }
 18586  
 18587  // GoString returns the string representation.
 18588  //
 18589  // API parameter values that are decorated as "sensitive" in the API will not
 18590  // be included in the string output. The member name will be present, but the
 18591  // value will be replaced with "sensitive".
 18592  func (s WAFTagOperationException) GoString() string {
 18593  	return s.String()
 18594  }
 18595  
 18596  func newErrorWAFTagOperationException(v protocol.ResponseMetadata) error {
 18597  	return &WAFTagOperationException{
 18598  		RespMetadata: v,
 18599  	}
 18600  }
 18601  
 18602  // Code returns the exception type name.
 18603  func (s *WAFTagOperationException) Code() string {
 18604  	return "WAFTagOperationException"
 18605  }
 18606  
 18607  // Message returns the exception's message.
 18608  func (s *WAFTagOperationException) Message() string {
 18609  	if s.Message_ != nil {
 18610  		return *s.Message_
 18611  	}
 18612  	return ""
 18613  }
 18614  
 18615  // OrigErr always returns nil, satisfies awserr.Error interface.
 18616  func (s *WAFTagOperationException) OrigErr() error {
 18617  	return nil
 18618  }
 18619  
 18620  func (s *WAFTagOperationException) Error() string {
 18621  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 18622  }
 18623  
 18624  // Status code returns the HTTP status code for the request's response error.
 18625  func (s *WAFTagOperationException) StatusCode() int {
 18626  	return s.RespMetadata.StatusCode
 18627  }
 18628  
 18629  // RequestID returns the service's response RequestID for request.
 18630  func (s *WAFTagOperationException) RequestID() string {
 18631  	return s.RespMetadata.RequestID
 18632  }
 18633  
 18634  // WAF couldn’t perform your tagging operation because of an internal error.
 18635  // Retry your request.
 18636  type WAFTagOperationInternalErrorException struct {
 18637  	_            struct{}                  `type:"structure"`
 18638  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 18639  
 18640  	Message_ *string `locationName:"Message" type:"string"`
 18641  }
 18642  
 18643  // String returns the string representation.
 18644  //
 18645  // API parameter values that are decorated as "sensitive" in the API will not
 18646  // be included in the string output. The member name will be present, but the
 18647  // value will be replaced with "sensitive".
 18648  func (s WAFTagOperationInternalErrorException) String() string {
 18649  	return awsutil.Prettify(s)
 18650  }
 18651  
 18652  // GoString returns the string representation.
 18653  //
 18654  // API parameter values that are decorated as "sensitive" in the API will not
 18655  // be included in the string output. The member name will be present, but the
 18656  // value will be replaced with "sensitive".
 18657  func (s WAFTagOperationInternalErrorException) GoString() string {
 18658  	return s.String()
 18659  }
 18660  
 18661  func newErrorWAFTagOperationInternalErrorException(v protocol.ResponseMetadata) error {
 18662  	return &WAFTagOperationInternalErrorException{
 18663  		RespMetadata: v,
 18664  	}
 18665  }
 18666  
 18667  // Code returns the exception type name.
 18668  func (s *WAFTagOperationInternalErrorException) Code() string {
 18669  	return "WAFTagOperationInternalErrorException"
 18670  }
 18671  
 18672  // Message returns the exception's message.
 18673  func (s *WAFTagOperationInternalErrorException) Message() string {
 18674  	if s.Message_ != nil {
 18675  		return *s.Message_
 18676  	}
 18677  	return ""
 18678  }
 18679  
 18680  // OrigErr always returns nil, satisfies awserr.Error interface.
 18681  func (s *WAFTagOperationInternalErrorException) OrigErr() error {
 18682  	return nil
 18683  }
 18684  
 18685  func (s *WAFTagOperationInternalErrorException) Error() string {
 18686  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 18687  }
 18688  
 18689  // Status code returns the HTTP status code for the request's response error.
 18690  func (s *WAFTagOperationInternalErrorException) StatusCode() int {
 18691  	return s.RespMetadata.StatusCode
 18692  }
 18693  
 18694  // RequestID returns the service's response RequestID for request.
 18695  func (s *WAFTagOperationInternalErrorException) RequestID() string {
 18696  	return s.RespMetadata.RequestID
 18697  }
 18698  
 18699  // WAF couldn’t retrieve the resource that you requested. Retry your request.
 18700  type WAFUnavailableEntityException struct {
 18701  	_            struct{}                  `type:"structure"`
 18702  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 18703  
 18704  	Message_ *string `locationName:"Message" type:"string"`
 18705  }
 18706  
 18707  // String returns the string representation.
 18708  //
 18709  // API parameter values that are decorated as "sensitive" in the API will not
 18710  // be included in the string output. The member name will be present, but the
 18711  // value will be replaced with "sensitive".
 18712  func (s WAFUnavailableEntityException) String() string {
 18713  	return awsutil.Prettify(s)
 18714  }
 18715  
 18716  // GoString returns the string representation.
 18717  //
 18718  // API parameter values that are decorated as "sensitive" in the API will not
 18719  // be included in the string output. The member name will be present, but the
 18720  // value will be replaced with "sensitive".
 18721  func (s WAFUnavailableEntityException) GoString() string {
 18722  	return s.String()
 18723  }
 18724  
 18725  func newErrorWAFUnavailableEntityException(v protocol.ResponseMetadata) error {
 18726  	return &WAFUnavailableEntityException{
 18727  		RespMetadata: v,
 18728  	}
 18729  }
 18730  
 18731  // Code returns the exception type name.
 18732  func (s *WAFUnavailableEntityException) Code() string {
 18733  	return "WAFUnavailableEntityException"
 18734  }
 18735  
 18736  // Message returns the exception's message.
 18737  func (s *WAFUnavailableEntityException) Message() string {
 18738  	if s.Message_ != nil {
 18739  		return *s.Message_
 18740  	}
 18741  	return ""
 18742  }
 18743  
 18744  // OrigErr always returns nil, satisfies awserr.Error interface.
 18745  func (s *WAFUnavailableEntityException) OrigErr() error {
 18746  	return nil
 18747  }
 18748  
 18749  func (s *WAFUnavailableEntityException) Error() string {
 18750  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 18751  }
 18752  
 18753  // Status code returns the HTTP status code for the request's response error.
 18754  func (s *WAFUnavailableEntityException) StatusCode() int {
 18755  	return s.RespMetadata.StatusCode
 18756  }
 18757  
 18758  // RequestID returns the service's response RequestID for request.
 18759  func (s *WAFUnavailableEntityException) RequestID() string {
 18760  	return s.RespMetadata.RequestID
 18761  }
 18762  
 18763  // A web ACL defines a collection of rules to use to inspect and control web
 18764  // requests. Each rule has an action defined (allow, block, or count) for requests
 18765  // that match the statement of the rule. In the web ACL, you assign a default
 18766  // action to take (allow, block) for any request that does not match any of
 18767  // the rules. The rules in a web ACL can be a combination of the types Rule,
 18768  // RuleGroup, and managed rule group. You can associate a web ACL with one or
 18769  // more Amazon Web Services resources to protect. The resources can be an Amazon
 18770  // CloudFront distribution, an Amazon API Gateway REST API, an Application Load
 18771  // Balancer, or an AppSync GraphQL API.
 18772  type WebACL struct {
 18773  	_ struct{} `type:"structure"`
 18774  
 18775  	// The Amazon Resource Name (ARN) of the web ACL that you want to associate
 18776  	// with the resource.
 18777  	//
 18778  	// ARN is a required field
 18779  	ARN *string `min:"20" type:"string" required:"true"`
 18780  
 18781  	// The web ACL capacity units (WCUs) currently being used by this web ACL.
 18782  	//
 18783  	// WAF uses WCUs to calculate and control the operating resources that are used
 18784  	// to run your rules, rule groups, and web ACLs. WAF calculates capacity differently
 18785  	// for each rule type, to reflect the relative cost of each rule. Simple rules
 18786  	// that cost little to run use fewer WCUs than more complex rules that use more
 18787  	// processing power. Rule group capacity is fixed at creation, which helps users
 18788  	// plan their web ACL WCU usage when they use a rule group. The WCU limit for
 18789  	// web ACLs is 1,500.
 18790  	Capacity *int64 `type:"long"`
 18791  
 18792  	// A map of custom response keys and content bodies. When you create a rule
 18793  	// with a block action, you can send a custom response to the web request. You
 18794  	// define these for the web ACL, and then use them in the rules and default
 18795  	// actions that you define in the web ACL.
 18796  	//
 18797  	// For information about customizing web requests and responses, see Customizing
 18798  	// web requests and responses in WAF (https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html)
 18799  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
 18800  	//
 18801  	// For information about the limits on count and size for custom request and
 18802  	// response settings, see WAF quotas (https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
 18803  	// in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html).
 18804  	CustomResponseBodies map[string]*CustomResponseBody `min:"1" type:"map"`
 18805  
 18806  	// The action to perform if none of the Rules contained in the WebACL match.
 18807  	//
 18808  	// DefaultAction is a required field
 18809  	DefaultAction *DefaultAction `type:"structure" required:"true"`
 18810  
 18811  	// A description of the web ACL that helps with identification.
 18812  	Description *string `min:"1" type:"string"`
 18813  
 18814  	// A unique identifier for the WebACL. This ID is returned in the responses
 18815  	// to create and list commands. You use this ID to do things like get, update,
 18816  	// and delete a WebACL.
 18817  	//
 18818  	// Id is a required field
 18819  	Id *string `min:"1" type:"string" required:"true"`
 18820  
 18821  	// The label namespace prefix for this web ACL. All labels added by rules in
 18822  	// this web ACL have this prefix.
 18823  	//
 18824  	//    * The syntax for the label namespace prefix for a web ACL is the following:
 18825  	//    awswaf:<account ID>:webacl:<web ACL name>:
 18826  	//
 18827  	//    * When a rule with a label matches a web request, WAF adds the fully qualified
 18828  	//    label to the request. A fully qualified label is made up of the label
 18829  	//    namespace from the rule group or web ACL where the rule is defined and
 18830  	//    the label from the rule, separated by a colon: <label namespace>:<label
 18831  	//    from rule>
 18832  	LabelNamespace *string `min:"1" type:"string"`
 18833  
 18834  	// Indicates whether this web ACL is managed by Firewall Manager. If true, then
 18835  	// only Firewall Manager can delete the web ACL or any Firewall Manager rule
 18836  	// groups in the web ACL.
 18837  	ManagedByFirewallManager *bool `type:"boolean"`
 18838  
 18839  	// The name of the web ACL. You cannot change the name of a web ACL after you
 18840  	// create it.
 18841  	//
 18842  	// Name is a required field
 18843  	Name *string `min:"1" type:"string" required:"true"`
 18844  
 18845  	// The last set of rules for WAF to process in the web ACL. This is defined
 18846  	// in an Firewall Manager WAF policy and contains only rule group references.
 18847  	// You can't alter these. Any rules and rule groups that you define for the
 18848  	// web ACL are prioritized before these.
 18849  	//
 18850  	// In the Firewall Manager WAF policy, the Firewall Manager administrator can
 18851  	// define a set of rule groups to run first in the web ACL and a set of rule
 18852  	// groups to run last. Within each set, the administrator prioritizes the rule
 18853  	// groups, to determine their relative processing order.
 18854  	PostProcessFirewallManagerRuleGroups []*FirewallManagerRuleGroup `type:"list"`
 18855  
 18856  	// The first set of rules for WAF to process in the web ACL. This is defined
 18857  	// in an Firewall Manager WAF policy and contains only rule group references.
 18858  	// You can't alter these. Any rules and rule groups that you define for the
 18859  	// web ACL are prioritized after these.
 18860  	//
 18861  	// In the Firewall Manager WAF policy, the Firewall Manager administrator can
 18862  	// define a set of rule groups to run first in the web ACL and a set of rule
 18863  	// groups to run last. Within each set, the administrator prioritizes the rule
 18864  	// groups, to determine their relative processing order.
 18865  	PreProcessFirewallManagerRuleGroups []*FirewallManagerRuleGroup `type:"list"`
 18866  
 18867  	// The Rule statements used to identify the web requests that you want to allow,
 18868  	// block, or count. Each rule includes one top-level statement that WAF uses
 18869  	// to identify matching web requests, and parameters that govern how WAF handles
 18870  	// them.
 18871  	Rules []*Rule `type:"list"`
 18872  
 18873  	// Defines and enables Amazon CloudWatch metrics and web request sample collection.
 18874  	//
 18875  	// VisibilityConfig is a required field
 18876  	VisibilityConfig *VisibilityConfig `type:"structure" required:"true"`
 18877  }
 18878  
 18879  // String returns the string representation.
 18880  //
 18881  // API parameter values that are decorated as "sensitive" in the API will not
 18882  // be included in the string output. The member name will be present, but the
 18883  // value will be replaced with "sensitive".
 18884  func (s WebACL) String() string {
 18885  	return awsutil.Prettify(s)
 18886  }
 18887  
 18888  // GoString returns the string representation.
 18889  //
 18890  // API parameter values that are decorated as "sensitive" in the API will not
 18891  // be included in the string output. The member name will be present, but the
 18892  // value will be replaced with "sensitive".
 18893  func (s WebACL) GoString() string {
 18894  	return s.String()
 18895  }
 18896  
 18897  // SetARN sets the ARN field's value.
 18898  func (s *WebACL) SetARN(v string) *WebACL {
 18899  	s.ARN = &v
 18900  	return s
 18901  }
 18902  
 18903  // SetCapacity sets the Capacity field's value.
 18904  func (s *WebACL) SetCapacity(v int64) *WebACL {
 18905  	s.Capacity = &v
 18906  	return s
 18907  }
 18908  
 18909  // SetCustomResponseBodies sets the CustomResponseBodies field's value.
 18910  func (s *WebACL) SetCustomResponseBodies(v map[string]*CustomResponseBody) *WebACL {
 18911  	s.CustomResponseBodies = v
 18912  	return s
 18913  }
 18914  
 18915  // SetDefaultAction sets the DefaultAction field's value.
 18916  func (s *WebACL) SetDefaultAction(v *DefaultAction) *WebACL {
 18917  	s.DefaultAction = v
 18918  	return s
 18919  }
 18920  
 18921  // SetDescription sets the Description field's value.
 18922  func (s *WebACL) SetDescription(v string) *WebACL {
 18923  	s.Description = &v
 18924  	return s
 18925  }
 18926  
 18927  // SetId sets the Id field's value.
 18928  func (s *WebACL) SetId(v string) *WebACL {
 18929  	s.Id = &v
 18930  	return s
 18931  }
 18932  
 18933  // SetLabelNamespace sets the LabelNamespace field's value.
 18934  func (s *WebACL) SetLabelNamespace(v string) *WebACL {
 18935  	s.LabelNamespace = &v
 18936  	return s
 18937  }
 18938  
 18939  // SetManagedByFirewallManager sets the ManagedByFirewallManager field's value.
 18940  func (s *WebACL) SetManagedByFirewallManager(v bool) *WebACL {
 18941  	s.ManagedByFirewallManager = &v
 18942  	return s
 18943  }
 18944  
 18945  // SetName sets the Name field's value.
 18946  func (s *WebACL) SetName(v string) *WebACL {
 18947  	s.Name = &v
 18948  	return s
 18949  }
 18950  
 18951  // SetPostProcessFirewallManagerRuleGroups sets the PostProcessFirewallManagerRuleGroups field's value.
 18952  func (s *WebACL) SetPostProcessFirewallManagerRuleGroups(v []*FirewallManagerRuleGroup) *WebACL {
 18953  	s.PostProcessFirewallManagerRuleGroups = v
 18954  	return s
 18955  }
 18956  
 18957  // SetPreProcessFirewallManagerRuleGroups sets the PreProcessFirewallManagerRuleGroups field's value.
 18958  func (s *WebACL) SetPreProcessFirewallManagerRuleGroups(v []*FirewallManagerRuleGroup) *WebACL {
 18959  	s.PreProcessFirewallManagerRuleGroups = v
 18960  	return s
 18961  }
 18962  
 18963  // SetRules sets the Rules field's value.
 18964  func (s *WebACL) SetRules(v []*Rule) *WebACL {
 18965  	s.Rules = v
 18966  	return s
 18967  }
 18968  
 18969  // SetVisibilityConfig sets the VisibilityConfig field's value.
 18970  func (s *WebACL) SetVisibilityConfig(v *VisibilityConfig) *WebACL {
 18971  	s.VisibilityConfig = v
 18972  	return s
 18973  }
 18974  
 18975  // High-level information about a WebACL, returned by operations like create
 18976  // and list. This provides information like the ID, that you can use to retrieve
 18977  // and manage a WebACL, and the ARN, that you provide to operations like AssociateWebACL.
 18978  type WebACLSummary struct {
 18979  	_ struct{} `type:"structure"`
 18980  
 18981  	// The Amazon Resource Name (ARN) of the entity.
 18982  	ARN *string `min:"20" type:"string"`
 18983  
 18984  	// A description of the web ACL that helps with identification.
 18985  	Description *string `min:"1" type:"string"`
 18986  
 18987  	// The unique identifier for the web ACL. This ID is returned in the responses
 18988  	// to create and list commands. You provide it to operations like update and
 18989  	// delete.
 18990  	Id *string `min:"1" type:"string"`
 18991  
 18992  	// A token used for optimistic locking. WAF returns a token to your get and
 18993  	// list requests, to mark the state of the entity at the time of the request.
 18994  	// To make changes to the entity associated with the token, you provide the
 18995  	// token to operations like update and delete. WAF uses the token to ensure
 18996  	// that no changes have been made to the entity since you last retrieved it.
 18997  	// If a change has been made, the update fails with a WAFOptimisticLockException.
 18998  	// If this happens, perform another get, and use the new token returned by that
 18999  	// operation.
 19000  	LockToken *string `min:"1" type:"string"`
 19001  
 19002  	// The name of the web ACL. You cannot change the name of a web ACL after you
 19003  	// create it.
 19004  	Name *string `min:"1" type:"string"`
 19005  }
 19006  
 19007  // String returns the string representation.
 19008  //
 19009  // API parameter values that are decorated as "sensitive" in the API will not
 19010  // be included in the string output. The member name will be present, but the
 19011  // value will be replaced with "sensitive".
 19012  func (s WebACLSummary) String() string {
 19013  	return awsutil.Prettify(s)
 19014  }
 19015  
 19016  // GoString returns the string representation.
 19017  //
 19018  // API parameter values that are decorated as "sensitive" in the API will not
 19019  // be included in the string output. The member name will be present, but the
 19020  // value will be replaced with "sensitive".
 19021  func (s WebACLSummary) GoString() string {
 19022  	return s.String()
 19023  }
 19024  
 19025  // SetARN sets the ARN field's value.
 19026  func (s *WebACLSummary) SetARN(v string) *WebACLSummary {
 19027  	s.ARN = &v
 19028  	return s
 19029  }
 19030  
 19031  // SetDescription sets the Description field's value.
 19032  func (s *WebACLSummary) SetDescription(v string) *WebACLSummary {
 19033  	s.Description = &v
 19034  	return s
 19035  }
 19036  
 19037  // SetId sets the Id field's value.
 19038  func (s *WebACLSummary) SetId(v string) *WebACLSummary {
 19039  	s.Id = &v
 19040  	return s
 19041  }
 19042  
 19043  // SetLockToken sets the LockToken field's value.
 19044  func (s *WebACLSummary) SetLockToken(v string) *WebACLSummary {
 19045  	s.LockToken = &v
 19046  	return s
 19047  }
 19048  
 19049  // SetName sets the Name field's value.
 19050  func (s *WebACLSummary) SetName(v string) *WebACLSummary {
 19051  	s.Name = &v
 19052  	return s
 19053  }
 19054  
 19055  // A rule statement that defines a cross-site scripting (XSS) match search for
 19056  // WAF to apply to web requests. XSS attacks are those where the attacker uses
 19057  // vulnerabilities in a benign website as a vehicle to inject malicious client-site
 19058  // scripts into other legitimate web browsers. The XSS match statement provides
 19059  // the location in requests that you want WAF to search and text transformations
 19060  // to use on the search area before WAF searches for character sequences that
 19061  // are likely to be malicious strings.
 19062  type XssMatchStatement struct {
 19063  	_ struct{} `type:"structure"`
 19064  
 19065  	// The part of a web request that you want WAF to inspect. For more information,
 19066  	// see FieldToMatch.
 19067  	//
 19068  	// FieldToMatch is a required field
 19069  	FieldToMatch *FieldToMatch `type:"structure" required:"true"`
 19070  
 19071  	// Text transformations eliminate some of the unusual formatting that attackers
 19072  	// use in web requests in an effort to bypass detection. If you specify one
 19073  	// or more transformations in a rule statement, WAF performs all transformations
 19074  	// on the content of the request component identified by FieldToMatch, starting
 19075  	// from the lowest priority setting, before inspecting the content for a match.
 19076  	//
 19077  	// TextTransformations is a required field
 19078  	TextTransformations []*TextTransformation `min:"1" type:"list" required:"true"`
 19079  }
 19080  
 19081  // String returns the string representation.
 19082  //
 19083  // API parameter values that are decorated as "sensitive" in the API will not
 19084  // be included in the string output. The member name will be present, but the
 19085  // value will be replaced with "sensitive".
 19086  func (s XssMatchStatement) String() string {
 19087  	return awsutil.Prettify(s)
 19088  }
 19089  
 19090  // GoString returns the string representation.
 19091  //
 19092  // API parameter values that are decorated as "sensitive" in the API will not
 19093  // be included in the string output. The member name will be present, but the
 19094  // value will be replaced with "sensitive".
 19095  func (s XssMatchStatement) GoString() string {
 19096  	return s.String()
 19097  }
 19098  
 19099  // Validate inspects the fields of the type to determine if they are valid.
 19100  func (s *XssMatchStatement) Validate() error {
 19101  	invalidParams := request.ErrInvalidParams{Context: "XssMatchStatement"}
 19102  	if s.FieldToMatch == nil {
 19103  		invalidParams.Add(request.NewErrParamRequired("FieldToMatch"))
 19104  	}
 19105  	if s.TextTransformations == nil {
 19106  		invalidParams.Add(request.NewErrParamRequired("TextTransformations"))
 19107  	}
 19108  	if s.TextTransformations != nil && len(s.TextTransformations) < 1 {
 19109  		invalidParams.Add(request.NewErrParamMinLen("TextTransformations", 1))
 19110  	}
 19111  	if s.FieldToMatch != nil {
 19112  		if err := s.FieldToMatch.Validate(); err != nil {
 19113  			invalidParams.AddNested("FieldToMatch", err.(request.ErrInvalidParams))
 19114  		}
 19115  	}
 19116  	if s.TextTransformations != nil {
 19117  		for i, v := range s.TextTransformations {
 19118  			if v == nil {
 19119  				continue
 19120  			}
 19121  			if err := v.Validate(); err != nil {
 19122  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TextTransformations", i), err.(request.ErrInvalidParams))
 19123  			}
 19124  		}
 19125  	}
 19126  
 19127  	if invalidParams.Len() > 0 {
 19128  		return invalidParams
 19129  	}
 19130  	return nil
 19131  }
 19132  
 19133  // SetFieldToMatch sets the FieldToMatch field's value.
 19134  func (s *XssMatchStatement) SetFieldToMatch(v *FieldToMatch) *XssMatchStatement {
 19135  	s.FieldToMatch = v
 19136  	return s
 19137  }
 19138  
 19139  // SetTextTransformations sets the TextTransformations field's value.
 19140  func (s *XssMatchStatement) SetTextTransformations(v []*TextTransformation) *XssMatchStatement {
 19141  	s.TextTransformations = v
 19142  	return s
 19143  }
 19144  
 19145  const (
 19146  	// ActionValueAllow is a ActionValue enum value
 19147  	ActionValueAllow = "ALLOW"
 19148  
 19149  	// ActionValueBlock is a ActionValue enum value
 19150  	ActionValueBlock = "BLOCK"
 19151  
 19152  	// ActionValueCount is a ActionValue enum value
 19153  	ActionValueCount = "COUNT"
 19154  )
 19155  
 19156  // ActionValue_Values returns all elements of the ActionValue enum
 19157  func ActionValue_Values() []string {
 19158  	return []string{
 19159  		ActionValueAllow,
 19160  		ActionValueBlock,
 19161  		ActionValueCount,
 19162  	}
 19163  }
 19164  
 19165  const (
 19166  	// BodyParsingFallbackBehaviorMatch is a BodyParsingFallbackBehavior enum value
 19167  	BodyParsingFallbackBehaviorMatch = "MATCH"
 19168  
 19169  	// BodyParsingFallbackBehaviorNoMatch is a BodyParsingFallbackBehavior enum value
 19170  	BodyParsingFallbackBehaviorNoMatch = "NO_MATCH"
 19171  
 19172  	// BodyParsingFallbackBehaviorEvaluateAsString is a BodyParsingFallbackBehavior enum value
 19173  	BodyParsingFallbackBehaviorEvaluateAsString = "EVALUATE_AS_STRING"
 19174  )
 19175  
 19176  // BodyParsingFallbackBehavior_Values returns all elements of the BodyParsingFallbackBehavior enum
 19177  func BodyParsingFallbackBehavior_Values() []string {
 19178  	return []string{
 19179  		BodyParsingFallbackBehaviorMatch,
 19180  		BodyParsingFallbackBehaviorNoMatch,
 19181  		BodyParsingFallbackBehaviorEvaluateAsString,
 19182  	}
 19183  }
 19184  
 19185  const (
 19186  	// ComparisonOperatorEq is a ComparisonOperator enum value
 19187  	ComparisonOperatorEq = "EQ"
 19188  
 19189  	// ComparisonOperatorNe is a ComparisonOperator enum value
 19190  	ComparisonOperatorNe = "NE"
 19191  
 19192  	// ComparisonOperatorLe is a ComparisonOperator enum value
 19193  	ComparisonOperatorLe = "LE"
 19194  
 19195  	// ComparisonOperatorLt is a ComparisonOperator enum value
 19196  	ComparisonOperatorLt = "LT"
 19197  
 19198  	// ComparisonOperatorGe is a ComparisonOperator enum value
 19199  	ComparisonOperatorGe = "GE"
 19200  
 19201  	// ComparisonOperatorGt is a ComparisonOperator enum value
 19202  	ComparisonOperatorGt = "GT"
 19203  )
 19204  
 19205  // ComparisonOperator_Values returns all elements of the ComparisonOperator enum
 19206  func ComparisonOperator_Values() []string {
 19207  	return []string{
 19208  		ComparisonOperatorEq,
 19209  		ComparisonOperatorNe,
 19210  		ComparisonOperatorLe,
 19211  		ComparisonOperatorLt,
 19212  		ComparisonOperatorGe,
 19213  		ComparisonOperatorGt,
 19214  	}
 19215  }
 19216  
 19217  const (
 19218  	// CountryCodeAf is a CountryCode enum value
 19219  	CountryCodeAf = "AF"
 19220  
 19221  	// CountryCodeAx is a CountryCode enum value
 19222  	CountryCodeAx = "AX"
 19223  
 19224  	// CountryCodeAl is a CountryCode enum value
 19225  	CountryCodeAl = "AL"
 19226  
 19227  	// CountryCodeDz is a CountryCode enum value
 19228  	CountryCodeDz = "DZ"
 19229  
 19230  	// CountryCodeAs is a CountryCode enum value
 19231  	CountryCodeAs = "AS"
 19232  
 19233  	// CountryCodeAd is a CountryCode enum value
 19234  	CountryCodeAd = "AD"
 19235  
 19236  	// CountryCodeAo is a CountryCode enum value
 19237  	CountryCodeAo = "AO"
 19238  
 19239  	// CountryCodeAi is a CountryCode enum value
 19240  	CountryCodeAi = "AI"
 19241  
 19242  	// CountryCodeAq is a CountryCode enum value
 19243  	CountryCodeAq = "AQ"
 19244  
 19245  	// CountryCodeAg is a CountryCode enum value
 19246  	CountryCodeAg = "AG"
 19247  
 19248  	// CountryCodeAr is a CountryCode enum value
 19249  	CountryCodeAr = "AR"
 19250  
 19251  	// CountryCodeAm is a CountryCode enum value
 19252  	CountryCodeAm = "AM"
 19253  
 19254  	// CountryCodeAw is a CountryCode enum value
 19255  	CountryCodeAw = "AW"
 19256  
 19257  	// CountryCodeAu is a CountryCode enum value
 19258  	CountryCodeAu = "AU"
 19259  
 19260  	// CountryCodeAt is a CountryCode enum value
 19261  	CountryCodeAt = "AT"
 19262  
 19263  	// CountryCodeAz is a CountryCode enum value
 19264  	CountryCodeAz = "AZ"
 19265  
 19266  	// CountryCodeBs is a CountryCode enum value
 19267  	CountryCodeBs = "BS"
 19268  
 19269  	// CountryCodeBh is a CountryCode enum value
 19270  	CountryCodeBh = "BH"
 19271  
 19272  	// CountryCodeBd is a CountryCode enum value
 19273  	CountryCodeBd = "BD"
 19274  
 19275  	// CountryCodeBb is a CountryCode enum value
 19276  	CountryCodeBb = "BB"
 19277  
 19278  	// CountryCodeBy is a CountryCode enum value
 19279  	CountryCodeBy = "BY"
 19280  
 19281  	// CountryCodeBe is a CountryCode enum value
 19282  	CountryCodeBe = "BE"
 19283  
 19284  	// CountryCodeBz is a CountryCode enum value
 19285  	CountryCodeBz = "BZ"
 19286  
 19287  	// CountryCodeBj is a CountryCode enum value
 19288  	CountryCodeBj = "BJ"
 19289  
 19290  	// CountryCodeBm is a CountryCode enum value
 19291  	CountryCodeBm = "BM"
 19292  
 19293  	// CountryCodeBt is a CountryCode enum value
 19294  	CountryCodeBt = "BT"
 19295  
 19296  	// CountryCodeBo is a CountryCode enum value
 19297  	CountryCodeBo = "BO"
 19298  
 19299  	// CountryCodeBq is a CountryCode enum value
 19300  	CountryCodeBq = "BQ"
 19301  
 19302  	// CountryCodeBa is a CountryCode enum value
 19303  	CountryCodeBa = "BA"
 19304  
 19305  	// CountryCodeBw is a CountryCode enum value
 19306  	CountryCodeBw = "BW"
 19307  
 19308  	// CountryCodeBv is a CountryCode enum value
 19309  	CountryCodeBv = "BV"
 19310  
 19311  	// CountryCodeBr is a CountryCode enum value
 19312  	CountryCodeBr = "BR"
 19313  
 19314  	// CountryCodeIo is a CountryCode enum value
 19315  	CountryCodeIo = "IO"
 19316  
 19317  	// CountryCodeBn is a CountryCode enum value
 19318  	CountryCodeBn = "BN"
 19319  
 19320  	// CountryCodeBg is a CountryCode enum value
 19321  	CountryCodeBg = "BG"
 19322  
 19323  	// CountryCodeBf is a CountryCode enum value
 19324  	CountryCodeBf = "BF"
 19325  
 19326  	// CountryCodeBi is a CountryCode enum value
 19327  	CountryCodeBi = "BI"
 19328  
 19329  	// CountryCodeKh is a CountryCode enum value
 19330  	CountryCodeKh = "KH"
 19331  
 19332  	// CountryCodeCm is a CountryCode enum value
 19333  	CountryCodeCm = "CM"
 19334  
 19335  	// CountryCodeCa is a CountryCode enum value
 19336  	CountryCodeCa = "CA"
 19337  
 19338  	// CountryCodeCv is a CountryCode enum value
 19339  	CountryCodeCv = "CV"
 19340  
 19341  	// CountryCodeKy is a CountryCode enum value
 19342  	CountryCodeKy = "KY"
 19343  
 19344  	// CountryCodeCf is a CountryCode enum value
 19345  	CountryCodeCf = "CF"
 19346  
 19347  	// CountryCodeTd is a CountryCode enum value
 19348  	CountryCodeTd = "TD"
 19349  
 19350  	// CountryCodeCl is a CountryCode enum value
 19351  	CountryCodeCl = "CL"
 19352  
 19353  	// CountryCodeCn is a CountryCode enum value
 19354  	CountryCodeCn = "CN"
 19355  
 19356  	// CountryCodeCx is a CountryCode enum value
 19357  	CountryCodeCx = "CX"
 19358  
 19359  	// CountryCodeCc is a CountryCode enum value
 19360  	CountryCodeCc = "CC"
 19361  
 19362  	// CountryCodeCo is a CountryCode enum value
 19363  	CountryCodeCo = "CO"
 19364  
 19365  	// CountryCodeKm is a CountryCode enum value
 19366  	CountryCodeKm = "KM"
 19367  
 19368  	// CountryCodeCg is a CountryCode enum value
 19369  	CountryCodeCg = "CG"
 19370  
 19371  	// CountryCodeCd is a CountryCode enum value
 19372  	CountryCodeCd = "CD"
 19373  
 19374  	// CountryCodeCk is a CountryCode enum value
 19375  	CountryCodeCk = "CK"
 19376  
 19377  	// CountryCodeCr is a CountryCode enum value
 19378  	CountryCodeCr = "CR"
 19379  
 19380  	// CountryCodeCi is a CountryCode enum value
 19381  	CountryCodeCi = "CI"
 19382  
 19383  	// CountryCodeHr is a CountryCode enum value
 19384  	CountryCodeHr = "HR"
 19385  
 19386  	// CountryCodeCu is a CountryCode enum value
 19387  	CountryCodeCu = "CU"
 19388  
 19389  	// CountryCodeCw is a CountryCode enum value
 19390  	CountryCodeCw = "CW"
 19391  
 19392  	// CountryCodeCy is a CountryCode enum value
 19393  	CountryCodeCy = "CY"
 19394  
 19395  	// CountryCodeCz is a CountryCode enum value
 19396  	CountryCodeCz = "CZ"
 19397  
 19398  	// CountryCodeDk is a CountryCode enum value
 19399  	CountryCodeDk = "DK"
 19400  
 19401  	// CountryCodeDj is a CountryCode enum value
 19402  	CountryCodeDj = "DJ"
 19403  
 19404  	// CountryCodeDm is a CountryCode enum value
 19405  	CountryCodeDm = "DM"
 19406  
 19407  	// CountryCodeDo is a CountryCode enum value
 19408  	CountryCodeDo = "DO"
 19409  
 19410  	// CountryCodeEc is a CountryCode enum value
 19411  	CountryCodeEc = "EC"
 19412  
 19413  	// CountryCodeEg is a CountryCode enum value
 19414  	CountryCodeEg = "EG"
 19415  
 19416  	// CountryCodeSv is a CountryCode enum value
 19417  	CountryCodeSv = "SV"
 19418  
 19419  	// CountryCodeGq is a CountryCode enum value
 19420  	CountryCodeGq = "GQ"
 19421  
 19422  	// CountryCodeEr is a CountryCode enum value
 19423  	CountryCodeEr = "ER"
 19424  
 19425  	// CountryCodeEe is a CountryCode enum value
 19426  	CountryCodeEe = "EE"
 19427  
 19428  	// CountryCodeEt is a CountryCode enum value
 19429  	CountryCodeEt = "ET"
 19430  
 19431  	// CountryCodeFk is a CountryCode enum value
 19432  	CountryCodeFk = "FK"
 19433  
 19434  	// CountryCodeFo is a CountryCode enum value
 19435  	CountryCodeFo = "FO"
 19436  
 19437  	// CountryCodeFj is a CountryCode enum value
 19438  	CountryCodeFj = "FJ"
 19439  
 19440  	// CountryCodeFi is a CountryCode enum value
 19441  	CountryCodeFi = "FI"
 19442  
 19443  	// CountryCodeFr is a CountryCode enum value
 19444  	CountryCodeFr = "FR"
 19445  
 19446  	// CountryCodeGf is a CountryCode enum value
 19447  	CountryCodeGf = "GF"
 19448  
 19449  	// CountryCodePf is a CountryCode enum value
 19450  	CountryCodePf = "PF"
 19451  
 19452  	// CountryCodeTf is a CountryCode enum value
 19453  	CountryCodeTf = "TF"
 19454  
 19455  	// CountryCodeGa is a CountryCode enum value
 19456  	CountryCodeGa = "GA"
 19457  
 19458  	// CountryCodeGm is a CountryCode enum value
 19459  	CountryCodeGm = "GM"
 19460  
 19461  	// CountryCodeGe is a CountryCode enum value
 19462  	CountryCodeGe = "GE"
 19463  
 19464  	// CountryCodeDe is a CountryCode enum value
 19465  	CountryCodeDe = "DE"
 19466  
 19467  	// CountryCodeGh is a CountryCode enum value
 19468  	CountryCodeGh = "GH"
 19469  
 19470  	// CountryCodeGi is a CountryCode enum value
 19471  	CountryCodeGi = "GI"
 19472  
 19473  	// CountryCodeGr is a CountryCode enum value
 19474  	CountryCodeGr = "GR"
 19475  
 19476  	// CountryCodeGl is a CountryCode enum value
 19477  	CountryCodeGl = "GL"
 19478  
 19479  	// CountryCodeGd is a CountryCode enum value
 19480  	CountryCodeGd = "GD"
 19481  
 19482  	// CountryCodeGp is a CountryCode enum value
 19483  	CountryCodeGp = "GP"
 19484  
 19485  	// CountryCodeGu is a CountryCode enum value
 19486  	CountryCodeGu = "GU"
 19487  
 19488  	// CountryCodeGt is a CountryCode enum value
 19489  	CountryCodeGt = "GT"
 19490  
 19491  	// CountryCodeGg is a CountryCode enum value
 19492  	CountryCodeGg = "GG"
 19493  
 19494  	// CountryCodeGn is a CountryCode enum value
 19495  	CountryCodeGn = "GN"
 19496  
 19497  	// CountryCodeGw is a CountryCode enum value
 19498  	CountryCodeGw = "GW"
 19499  
 19500  	// CountryCodeGy is a CountryCode enum value
 19501  	CountryCodeGy = "GY"
 19502  
 19503  	// CountryCodeHt is a CountryCode enum value
 19504  	CountryCodeHt = "HT"
 19505  
 19506  	// CountryCodeHm is a CountryCode enum value
 19507  	CountryCodeHm = "HM"
 19508  
 19509  	// CountryCodeVa is a CountryCode enum value
 19510  	CountryCodeVa = "VA"
 19511  
 19512  	// CountryCodeHn is a CountryCode enum value
 19513  	CountryCodeHn = "HN"
 19514  
 19515  	// CountryCodeHk is a CountryCode enum value
 19516  	CountryCodeHk = "HK"
 19517  
 19518  	// CountryCodeHu is a CountryCode enum value
 19519  	CountryCodeHu = "HU"
 19520  
 19521  	// CountryCodeIs is a CountryCode enum value
 19522  	CountryCodeIs = "IS"
 19523  
 19524  	// CountryCodeIn is a CountryCode enum value
 19525  	CountryCodeIn = "IN"
 19526  
 19527  	// CountryCodeId is a CountryCode enum value
 19528  	CountryCodeId = "ID"
 19529  
 19530  	// CountryCodeIr is a CountryCode enum value
 19531  	CountryCodeIr = "IR"
 19532  
 19533  	// CountryCodeIq is a CountryCode enum value
 19534  	CountryCodeIq = "IQ"
 19535  
 19536  	// CountryCodeIe is a CountryCode enum value
 19537  	CountryCodeIe = "IE"
 19538  
 19539  	// CountryCodeIm is a CountryCode enum value
 19540  	CountryCodeIm = "IM"
 19541  
 19542  	// CountryCodeIl is a CountryCode enum value
 19543  	CountryCodeIl = "IL"
 19544  
 19545  	// CountryCodeIt is a CountryCode enum value
 19546  	CountryCodeIt = "IT"
 19547  
 19548  	// CountryCodeJm is a CountryCode enum value
 19549  	CountryCodeJm = "JM"
 19550  
 19551  	// CountryCodeJp is a CountryCode enum value
 19552  	CountryCodeJp = "JP"
 19553  
 19554  	// CountryCodeJe is a CountryCode enum value
 19555  	CountryCodeJe = "JE"
 19556  
 19557  	// CountryCodeJo is a CountryCode enum value
 19558  	CountryCodeJo = "JO"
 19559  
 19560  	// CountryCodeKz is a CountryCode enum value
 19561  	CountryCodeKz = "KZ"
 19562  
 19563  	// CountryCodeKe is a CountryCode enum value
 19564  	CountryCodeKe = "KE"
 19565  
 19566  	// CountryCodeKi is a CountryCode enum value
 19567  	CountryCodeKi = "KI"
 19568  
 19569  	// CountryCodeKp is a CountryCode enum value
 19570  	CountryCodeKp = "KP"
 19571  
 19572  	// CountryCodeKr is a CountryCode enum value
 19573  	CountryCodeKr = "KR"
 19574  
 19575  	// CountryCodeKw is a CountryCode enum value
 19576  	CountryCodeKw = "KW"
 19577  
 19578  	// CountryCodeKg is a CountryCode enum value
 19579  	CountryCodeKg = "KG"
 19580  
 19581  	// CountryCodeLa is a CountryCode enum value
 19582  	CountryCodeLa = "LA"
 19583  
 19584  	// CountryCodeLv is a CountryCode enum value
 19585  	CountryCodeLv = "LV"
 19586  
 19587  	// CountryCodeLb is a CountryCode enum value
 19588  	CountryCodeLb = "LB"
 19589  
 19590  	// CountryCodeLs is a CountryCode enum value
 19591  	CountryCodeLs = "LS"
 19592  
 19593  	// CountryCodeLr is a CountryCode enum value
 19594  	CountryCodeLr = "LR"
 19595  
 19596  	// CountryCodeLy is a CountryCode enum value
 19597  	CountryCodeLy = "LY"
 19598  
 19599  	// CountryCodeLi is a CountryCode enum value
 19600  	CountryCodeLi = "LI"
 19601  
 19602  	// CountryCodeLt is a CountryCode enum value
 19603  	CountryCodeLt = "LT"
 19604  
 19605  	// CountryCodeLu is a CountryCode enum value
 19606  	CountryCodeLu = "LU"
 19607  
 19608  	// CountryCodeMo is a CountryCode enum value
 19609  	CountryCodeMo = "MO"
 19610  
 19611  	// CountryCodeMk is a CountryCode enum value
 19612  	CountryCodeMk = "MK"
 19613  
 19614  	// CountryCodeMg is a CountryCode enum value
 19615  	CountryCodeMg = "MG"
 19616  
 19617  	// CountryCodeMw is a CountryCode enum value
 19618  	CountryCodeMw = "MW"
 19619  
 19620  	// CountryCodeMy is a CountryCode enum value
 19621  	CountryCodeMy = "MY"
 19622  
 19623  	// CountryCodeMv is a CountryCode enum value
 19624  	CountryCodeMv = "MV"
 19625  
 19626  	// CountryCodeMl is a CountryCode enum value
 19627  	CountryCodeMl = "ML"
 19628  
 19629  	// CountryCodeMt is a CountryCode enum value
 19630  	CountryCodeMt = "MT"
 19631  
 19632  	// CountryCodeMh is a CountryCode enum value
 19633  	CountryCodeMh = "MH"
 19634  
 19635  	// CountryCodeMq is a CountryCode enum value
 19636  	CountryCodeMq = "MQ"
 19637  
 19638  	// CountryCodeMr is a CountryCode enum value
 19639  	CountryCodeMr = "MR"
 19640  
 19641  	// CountryCodeMu is a CountryCode enum value
 19642  	CountryCodeMu = "MU"
 19643  
 19644  	// CountryCodeYt is a CountryCode enum value
 19645  	CountryCodeYt = "YT"
 19646  
 19647  	// CountryCodeMx is a CountryCode enum value
 19648  	CountryCodeMx = "MX"
 19649  
 19650  	// CountryCodeFm is a CountryCode enum value
 19651  	CountryCodeFm = "FM"
 19652  
 19653  	// CountryCodeMd is a CountryCode enum value
 19654  	CountryCodeMd = "MD"
 19655  
 19656  	// CountryCodeMc is a CountryCode enum value
 19657  	CountryCodeMc = "MC"
 19658  
 19659  	// CountryCodeMn is a CountryCode enum value
 19660  	CountryCodeMn = "MN"
 19661  
 19662  	// CountryCodeMe is a CountryCode enum value
 19663  	CountryCodeMe = "ME"
 19664  
 19665  	// CountryCodeMs is a CountryCode enum value
 19666  	CountryCodeMs = "MS"
 19667  
 19668  	// CountryCodeMa is a CountryCode enum value
 19669  	CountryCodeMa = "MA"
 19670  
 19671  	// CountryCodeMz is a CountryCode enum value
 19672  	CountryCodeMz = "MZ"
 19673  
 19674  	// CountryCodeMm is a CountryCode enum value
 19675  	CountryCodeMm = "MM"
 19676  
 19677  	// CountryCodeNa is a CountryCode enum value
 19678  	CountryCodeNa = "NA"
 19679  
 19680  	// CountryCodeNr is a CountryCode enum value
 19681  	CountryCodeNr = "NR"
 19682  
 19683  	// CountryCodeNp is a CountryCode enum value
 19684  	CountryCodeNp = "NP"
 19685  
 19686  	// CountryCodeNl is a CountryCode enum value
 19687  	CountryCodeNl = "NL"
 19688  
 19689  	// CountryCodeNc is a CountryCode enum value
 19690  	CountryCodeNc = "NC"
 19691  
 19692  	// CountryCodeNz is a CountryCode enum value
 19693  	CountryCodeNz = "NZ"
 19694  
 19695  	// CountryCodeNi is a CountryCode enum value
 19696  	CountryCodeNi = "NI"
 19697  
 19698  	// CountryCodeNe is a CountryCode enum value
 19699  	CountryCodeNe = "NE"
 19700  
 19701  	// CountryCodeNg is a CountryCode enum value
 19702  	CountryCodeNg = "NG"
 19703  
 19704  	// CountryCodeNu is a CountryCode enum value
 19705  	CountryCodeNu = "NU"
 19706  
 19707  	// CountryCodeNf is a CountryCode enum value
 19708  	CountryCodeNf = "NF"
 19709  
 19710  	// CountryCodeMp is a CountryCode enum value
 19711  	CountryCodeMp = "MP"
 19712  
 19713  	// CountryCodeNo is a CountryCode enum value
 19714  	CountryCodeNo = "NO"
 19715  
 19716  	// CountryCodeOm is a CountryCode enum value
 19717  	CountryCodeOm = "OM"
 19718  
 19719  	// CountryCodePk is a CountryCode enum value
 19720  	CountryCodePk = "PK"
 19721  
 19722  	// CountryCodePw is a CountryCode enum value
 19723  	CountryCodePw = "PW"
 19724  
 19725  	// CountryCodePs is a CountryCode enum value
 19726  	CountryCodePs = "PS"
 19727  
 19728  	// CountryCodePa is a CountryCode enum value
 19729  	CountryCodePa = "PA"
 19730  
 19731  	// CountryCodePg is a CountryCode enum value
 19732  	CountryCodePg = "PG"
 19733  
 19734  	// CountryCodePy is a CountryCode enum value
 19735  	CountryCodePy = "PY"
 19736  
 19737  	// CountryCodePe is a CountryCode enum value
 19738  	CountryCodePe = "PE"
 19739  
 19740  	// CountryCodePh is a CountryCode enum value
 19741  	CountryCodePh = "PH"
 19742  
 19743  	// CountryCodePn is a CountryCode enum value
 19744  	CountryCodePn = "PN"
 19745  
 19746  	// CountryCodePl is a CountryCode enum value
 19747  	CountryCodePl = "PL"
 19748  
 19749  	// CountryCodePt is a CountryCode enum value
 19750  	CountryCodePt = "PT"
 19751  
 19752  	// CountryCodePr is a CountryCode enum value
 19753  	CountryCodePr = "PR"
 19754  
 19755  	// CountryCodeQa is a CountryCode enum value
 19756  	CountryCodeQa = "QA"
 19757  
 19758  	// CountryCodeRe is a CountryCode enum value
 19759  	CountryCodeRe = "RE"
 19760  
 19761  	// CountryCodeRo is a CountryCode enum value
 19762  	CountryCodeRo = "RO"
 19763  
 19764  	// CountryCodeRu is a CountryCode enum value
 19765  	CountryCodeRu = "RU"
 19766  
 19767  	// CountryCodeRw is a CountryCode enum value
 19768  	CountryCodeRw = "RW"
 19769  
 19770  	// CountryCodeBl is a CountryCode enum value
 19771  	CountryCodeBl = "BL"
 19772  
 19773  	// CountryCodeSh is a CountryCode enum value
 19774  	CountryCodeSh = "SH"
 19775  
 19776  	// CountryCodeKn is a CountryCode enum value
 19777  	CountryCodeKn = "KN"
 19778  
 19779  	// CountryCodeLc is a CountryCode enum value
 19780  	CountryCodeLc = "LC"
 19781  
 19782  	// CountryCodeMf is a CountryCode enum value
 19783  	CountryCodeMf = "MF"
 19784  
 19785  	// CountryCodePm is a CountryCode enum value
 19786  	CountryCodePm = "PM"
 19787  
 19788  	// CountryCodeVc is a CountryCode enum value
 19789  	CountryCodeVc = "VC"
 19790  
 19791  	// CountryCodeWs is a CountryCode enum value
 19792  	CountryCodeWs = "WS"
 19793  
 19794  	// CountryCodeSm is a CountryCode enum value
 19795  	CountryCodeSm = "SM"
 19796  
 19797  	// CountryCodeSt is a CountryCode enum value
 19798  	CountryCodeSt = "ST"
 19799  
 19800  	// CountryCodeSa is a CountryCode enum value
 19801  	CountryCodeSa = "SA"
 19802  
 19803  	// CountryCodeSn is a CountryCode enum value
 19804  	CountryCodeSn = "SN"
 19805  
 19806  	// CountryCodeRs is a CountryCode enum value
 19807  	CountryCodeRs = "RS"
 19808  
 19809  	// CountryCodeSc is a CountryCode enum value
 19810  	CountryCodeSc = "SC"
 19811  
 19812  	// CountryCodeSl is a CountryCode enum value
 19813  	CountryCodeSl = "SL"
 19814  
 19815  	// CountryCodeSg is a CountryCode enum value
 19816  	CountryCodeSg = "SG"
 19817  
 19818  	// CountryCodeSx is a CountryCode enum value
 19819  	CountryCodeSx = "SX"
 19820  
 19821  	// CountryCodeSk is a CountryCode enum value
 19822  	CountryCodeSk = "SK"
 19823  
 19824  	// CountryCodeSi is a CountryCode enum value
 19825  	CountryCodeSi = "SI"
 19826  
 19827  	// CountryCodeSb is a CountryCode enum value
 19828  	CountryCodeSb = "SB"
 19829  
 19830  	// CountryCodeSo is a CountryCode enum value
 19831  	CountryCodeSo = "SO"
 19832  
 19833  	// CountryCodeZa is a CountryCode enum value
 19834  	CountryCodeZa = "ZA"
 19835  
 19836  	// CountryCodeGs is a CountryCode enum value
 19837  	CountryCodeGs = "GS"
 19838  
 19839  	// CountryCodeSs is a CountryCode enum value
 19840  	CountryCodeSs = "SS"
 19841  
 19842  	// CountryCodeEs is a CountryCode enum value
 19843  	CountryCodeEs = "ES"
 19844  
 19845  	// CountryCodeLk is a CountryCode enum value
 19846  	CountryCodeLk = "LK"
 19847  
 19848  	// CountryCodeSd is a CountryCode enum value
 19849  	CountryCodeSd = "SD"
 19850  
 19851  	// CountryCodeSr is a CountryCode enum value
 19852  	CountryCodeSr = "SR"
 19853  
 19854  	// CountryCodeSj is a CountryCode enum value
 19855  	CountryCodeSj = "SJ"
 19856  
 19857  	// CountryCodeSz is a CountryCode enum value
 19858  	CountryCodeSz = "SZ"
 19859  
 19860  	// CountryCodeSe is a CountryCode enum value
 19861  	CountryCodeSe = "SE"
 19862  
 19863  	// CountryCodeCh is a CountryCode enum value
 19864  	CountryCodeCh = "CH"
 19865  
 19866  	// CountryCodeSy is a CountryCode enum value
 19867  	CountryCodeSy = "SY"
 19868  
 19869  	// CountryCodeTw is a CountryCode enum value
 19870  	CountryCodeTw = "TW"
 19871  
 19872  	// CountryCodeTj is a CountryCode enum value
 19873  	CountryCodeTj = "TJ"
 19874  
 19875  	// CountryCodeTz is a CountryCode enum value
 19876  	CountryCodeTz = "TZ"
 19877  
 19878  	// CountryCodeTh is a CountryCode enum value
 19879  	CountryCodeTh = "TH"
 19880  
 19881  	// CountryCodeTl is a CountryCode enum value
 19882  	CountryCodeTl = "TL"
 19883  
 19884  	// CountryCodeTg is a CountryCode enum value
 19885  	CountryCodeTg = "TG"
 19886  
 19887  	// CountryCodeTk is a CountryCode enum value
 19888  	CountryCodeTk = "TK"
 19889  
 19890  	// CountryCodeTo is a CountryCode enum value
 19891  	CountryCodeTo = "TO"
 19892  
 19893  	// CountryCodeTt is a CountryCode enum value
 19894  	CountryCodeTt = "TT"
 19895  
 19896  	// CountryCodeTn is a CountryCode enum value
 19897  	CountryCodeTn = "TN"
 19898  
 19899  	// CountryCodeTr is a CountryCode enum value
 19900  	CountryCodeTr = "TR"
 19901  
 19902  	// CountryCodeTm is a CountryCode enum value
 19903  	CountryCodeTm = "TM"
 19904  
 19905  	// CountryCodeTc is a CountryCode enum value
 19906  	CountryCodeTc = "TC"
 19907  
 19908  	// CountryCodeTv is a CountryCode enum value
 19909  	CountryCodeTv = "TV"
 19910  
 19911  	// CountryCodeUg is a CountryCode enum value
 19912  	CountryCodeUg = "UG"
 19913  
 19914  	// CountryCodeUa is a CountryCode enum value
 19915  	CountryCodeUa = "UA"
 19916  
 19917  	// CountryCodeAe is a CountryCode enum value
 19918  	CountryCodeAe = "AE"
 19919  
 19920  	// CountryCodeGb is a CountryCode enum value
 19921  	CountryCodeGb = "GB"
 19922  
 19923  	// CountryCodeUs is a CountryCode enum value
 19924  	CountryCodeUs = "US"
 19925  
 19926  	// CountryCodeUm is a CountryCode enum value
 19927  	CountryCodeUm = "UM"
 19928  
 19929  	// CountryCodeUy is a CountryCode enum value
 19930  	CountryCodeUy = "UY"
 19931  
 19932  	// CountryCodeUz is a CountryCode enum value
 19933  	CountryCodeUz = "UZ"
 19934  
 19935  	// CountryCodeVu is a CountryCode enum value
 19936  	CountryCodeVu = "VU"
 19937  
 19938  	// CountryCodeVe is a CountryCode enum value
 19939  	CountryCodeVe = "VE"
 19940  
 19941  	// CountryCodeVn is a CountryCode enum value
 19942  	CountryCodeVn = "VN"
 19943  
 19944  	// CountryCodeVg is a CountryCode enum value
 19945  	CountryCodeVg = "VG"
 19946  
 19947  	// CountryCodeVi is a CountryCode enum value
 19948  	CountryCodeVi = "VI"
 19949  
 19950  	// CountryCodeWf is a CountryCode enum value
 19951  	CountryCodeWf = "WF"
 19952  
 19953  	// CountryCodeEh is a CountryCode enum value
 19954  	CountryCodeEh = "EH"
 19955  
 19956  	// CountryCodeYe is a CountryCode enum value
 19957  	CountryCodeYe = "YE"
 19958  
 19959  	// CountryCodeZm is a CountryCode enum value
 19960  	CountryCodeZm = "ZM"
 19961  
 19962  	// CountryCodeZw is a CountryCode enum value
 19963  	CountryCodeZw = "ZW"
 19964  )
 19965  
 19966  // CountryCode_Values returns all elements of the CountryCode enum
 19967  func CountryCode_Values() []string {
 19968  	return []string{
 19969  		CountryCodeAf,
 19970  		CountryCodeAx,
 19971  		CountryCodeAl,
 19972  		CountryCodeDz,
 19973  		CountryCodeAs,
 19974  		CountryCodeAd,
 19975  		CountryCodeAo,
 19976  		CountryCodeAi,
 19977  		CountryCodeAq,
 19978  		CountryCodeAg,
 19979  		CountryCodeAr,
 19980  		CountryCodeAm,
 19981  		CountryCodeAw,
 19982  		CountryCodeAu,
 19983  		CountryCodeAt,
 19984  		CountryCodeAz,
 19985  		CountryCodeBs,
 19986  		CountryCodeBh,
 19987  		CountryCodeBd,
 19988  		CountryCodeBb,
 19989  		CountryCodeBy,
 19990  		CountryCodeBe,
 19991  		CountryCodeBz,
 19992  		CountryCodeBj,
 19993  		CountryCodeBm,
 19994  		CountryCodeBt,
 19995  		CountryCodeBo,
 19996  		CountryCodeBq,
 19997  		CountryCodeBa,
 19998  		CountryCodeBw,
 19999  		CountryCodeBv,
 20000  		CountryCodeBr,
 20001  		CountryCodeIo,
 20002  		CountryCodeBn,
 20003  		CountryCodeBg,
 20004  		CountryCodeBf,
 20005  		CountryCodeBi,
 20006  		CountryCodeKh,
 20007  		CountryCodeCm,
 20008  		CountryCodeCa,
 20009  		CountryCodeCv,
 20010  		CountryCodeKy,
 20011  		CountryCodeCf,
 20012  		CountryCodeTd,
 20013  		CountryCodeCl,
 20014  		CountryCodeCn,
 20015  		CountryCodeCx,
 20016  		CountryCodeCc,
 20017  		CountryCodeCo,
 20018  		CountryCodeKm,
 20019  		CountryCodeCg,
 20020  		CountryCodeCd,
 20021  		CountryCodeCk,
 20022  		CountryCodeCr,
 20023  		CountryCodeCi,
 20024  		CountryCodeHr,
 20025  		CountryCodeCu,
 20026  		CountryCodeCw,
 20027  		CountryCodeCy,
 20028  		CountryCodeCz,
 20029  		CountryCodeDk,
 20030  		CountryCodeDj,
 20031  		CountryCodeDm,
 20032  		CountryCodeDo,
 20033  		CountryCodeEc,
 20034  		CountryCodeEg,
 20035  		CountryCodeSv,
 20036  		CountryCodeGq,
 20037  		CountryCodeEr,
 20038  		CountryCodeEe,
 20039  		CountryCodeEt,
 20040  		CountryCodeFk,
 20041  		CountryCodeFo,
 20042  		CountryCodeFj,
 20043  		CountryCodeFi,
 20044  		CountryCodeFr,
 20045  		CountryCodeGf,
 20046  		CountryCodePf,
 20047  		CountryCodeTf,
 20048  		CountryCodeGa,
 20049  		CountryCodeGm,
 20050  		CountryCodeGe,
 20051  		CountryCodeDe,
 20052  		CountryCodeGh,
 20053  		CountryCodeGi,
 20054  		CountryCodeGr,
 20055  		CountryCodeGl,
 20056  		CountryCodeGd,
 20057  		CountryCodeGp,
 20058  		CountryCodeGu,
 20059  		CountryCodeGt,
 20060  		CountryCodeGg,
 20061  		CountryCodeGn,
 20062  		CountryCodeGw,
 20063  		CountryCodeGy,
 20064  		CountryCodeHt,
 20065  		CountryCodeHm,
 20066  		CountryCodeVa,
 20067  		CountryCodeHn,
 20068  		CountryCodeHk,
 20069  		CountryCodeHu,
 20070  		CountryCodeIs,
 20071  		CountryCodeIn,
 20072  		CountryCodeId,
 20073  		CountryCodeIr,
 20074  		CountryCodeIq,
 20075  		CountryCodeIe,
 20076  		CountryCodeIm,
 20077  		CountryCodeIl,
 20078  		CountryCodeIt,
 20079  		CountryCodeJm,
 20080  		CountryCodeJp,
 20081  		CountryCodeJe,
 20082  		CountryCodeJo,
 20083  		CountryCodeKz,
 20084  		CountryCodeKe,
 20085  		CountryCodeKi,
 20086  		CountryCodeKp,
 20087  		CountryCodeKr,
 20088  		CountryCodeKw,
 20089  		CountryCodeKg,
 20090  		CountryCodeLa,
 20091  		CountryCodeLv,
 20092  		CountryCodeLb,
 20093  		CountryCodeLs,
 20094  		CountryCodeLr,
 20095  		CountryCodeLy,
 20096  		CountryCodeLi,
 20097  		CountryCodeLt,
 20098  		CountryCodeLu,
 20099  		CountryCodeMo,
 20100  		CountryCodeMk,
 20101  		CountryCodeMg,
 20102  		CountryCodeMw,
 20103  		CountryCodeMy,
 20104  		CountryCodeMv,
 20105  		CountryCodeMl,
 20106  		CountryCodeMt,
 20107  		CountryCodeMh,
 20108  		CountryCodeMq,
 20109  		CountryCodeMr,
 20110  		CountryCodeMu,
 20111  		CountryCodeYt,
 20112  		CountryCodeMx,
 20113  		CountryCodeFm,
 20114  		CountryCodeMd,
 20115  		CountryCodeMc,
 20116  		CountryCodeMn,
 20117  		CountryCodeMe,
 20118  		CountryCodeMs,
 20119  		CountryCodeMa,
 20120  		CountryCodeMz,
 20121  		CountryCodeMm,
 20122  		CountryCodeNa,
 20123  		CountryCodeNr,
 20124  		CountryCodeNp,
 20125  		CountryCodeNl,
 20126  		CountryCodeNc,
 20127  		CountryCodeNz,
 20128  		CountryCodeNi,
 20129  		CountryCodeNe,
 20130  		CountryCodeNg,
 20131  		CountryCodeNu,
 20132  		CountryCodeNf,
 20133  		CountryCodeMp,
 20134  		CountryCodeNo,
 20135  		CountryCodeOm,
 20136  		CountryCodePk,
 20137  		CountryCodePw,
 20138  		CountryCodePs,
 20139  		CountryCodePa,
 20140  		CountryCodePg,
 20141  		CountryCodePy,
 20142  		CountryCodePe,
 20143  		CountryCodePh,
 20144  		CountryCodePn,
 20145  		CountryCodePl,
 20146  		CountryCodePt,
 20147  		CountryCodePr,
 20148  		CountryCodeQa,
 20149  		CountryCodeRe,
 20150  		CountryCodeRo,
 20151  		CountryCodeRu,
 20152  		CountryCodeRw,
 20153  		CountryCodeBl,
 20154  		CountryCodeSh,
 20155  		CountryCodeKn,
 20156  		CountryCodeLc,
 20157  		CountryCodeMf,
 20158  		CountryCodePm,
 20159  		CountryCodeVc,
 20160  		CountryCodeWs,
 20161  		CountryCodeSm,
 20162  		CountryCodeSt,
 20163  		CountryCodeSa,
 20164  		CountryCodeSn,
 20165  		CountryCodeRs,
 20166  		CountryCodeSc,
 20167  		CountryCodeSl,
 20168  		CountryCodeSg,
 20169  		CountryCodeSx,
 20170  		CountryCodeSk,
 20171  		CountryCodeSi,
 20172  		CountryCodeSb,
 20173  		CountryCodeSo,
 20174  		CountryCodeZa,
 20175  		CountryCodeGs,
 20176  		CountryCodeSs,
 20177  		CountryCodeEs,
 20178  		CountryCodeLk,
 20179  		CountryCodeSd,
 20180  		CountryCodeSr,
 20181  		CountryCodeSj,
 20182  		CountryCodeSz,
 20183  		CountryCodeSe,
 20184  		CountryCodeCh,
 20185  		CountryCodeSy,
 20186  		CountryCodeTw,
 20187  		CountryCodeTj,
 20188  		CountryCodeTz,
 20189  		CountryCodeTh,
 20190  		CountryCodeTl,
 20191  		CountryCodeTg,
 20192  		CountryCodeTk,
 20193  		CountryCodeTo,
 20194  		CountryCodeTt,
 20195  		CountryCodeTn,
 20196  		CountryCodeTr,
 20197  		CountryCodeTm,
 20198  		CountryCodeTc,
 20199  		CountryCodeTv,
 20200  		CountryCodeUg,
 20201  		CountryCodeUa,
 20202  		CountryCodeAe,
 20203  		CountryCodeGb,
 20204  		CountryCodeUs,
 20205  		CountryCodeUm,
 20206  		CountryCodeUy,
 20207  		CountryCodeUz,
 20208  		CountryCodeVu,
 20209  		CountryCodeVe,
 20210  		CountryCodeVn,
 20211  		CountryCodeVg,
 20212  		CountryCodeVi,
 20213  		CountryCodeWf,
 20214  		CountryCodeEh,
 20215  		CountryCodeYe,
 20216  		CountryCodeZm,
 20217  		CountryCodeZw,
 20218  	}
 20219  }
 20220  
 20221  const (
 20222  	// FallbackBehaviorMatch is a FallbackBehavior enum value
 20223  	FallbackBehaviorMatch = "MATCH"
 20224  
 20225  	// FallbackBehaviorNoMatch is a FallbackBehavior enum value
 20226  	FallbackBehaviorNoMatch = "NO_MATCH"
 20227  )
 20228  
 20229  // FallbackBehavior_Values returns all elements of the FallbackBehavior enum
 20230  func FallbackBehavior_Values() []string {
 20231  	return []string{
 20232  		FallbackBehaviorMatch,
 20233  		FallbackBehaviorNoMatch,
 20234  	}
 20235  }
 20236  
 20237  const (
 20238  	// FilterBehaviorKeep is a FilterBehavior enum value
 20239  	FilterBehaviorKeep = "KEEP"
 20240  
 20241  	// FilterBehaviorDrop is a FilterBehavior enum value
 20242  	FilterBehaviorDrop = "DROP"
 20243  )
 20244  
 20245  // FilterBehavior_Values returns all elements of the FilterBehavior enum
 20246  func FilterBehavior_Values() []string {
 20247  	return []string{
 20248  		FilterBehaviorKeep,
 20249  		FilterBehaviorDrop,
 20250  	}
 20251  }
 20252  
 20253  const (
 20254  	// FilterRequirementMeetsAll is a FilterRequirement enum value
 20255  	FilterRequirementMeetsAll = "MEETS_ALL"
 20256  
 20257  	// FilterRequirementMeetsAny is a FilterRequirement enum value
 20258  	FilterRequirementMeetsAny = "MEETS_ANY"
 20259  )
 20260  
 20261  // FilterRequirement_Values returns all elements of the FilterRequirement enum
 20262  func FilterRequirement_Values() []string {
 20263  	return []string{
 20264  		FilterRequirementMeetsAll,
 20265  		FilterRequirementMeetsAny,
 20266  	}
 20267  }
 20268  
 20269  const (
 20270  	// ForwardedIPPositionFirst is a ForwardedIPPosition enum value
 20271  	ForwardedIPPositionFirst = "FIRST"
 20272  
 20273  	// ForwardedIPPositionLast is a ForwardedIPPosition enum value
 20274  	ForwardedIPPositionLast = "LAST"
 20275  
 20276  	// ForwardedIPPositionAny is a ForwardedIPPosition enum value
 20277  	ForwardedIPPositionAny = "ANY"
 20278  )
 20279  
 20280  // ForwardedIPPosition_Values returns all elements of the ForwardedIPPosition enum
 20281  func ForwardedIPPosition_Values() []string {
 20282  	return []string{
 20283  		ForwardedIPPositionFirst,
 20284  		ForwardedIPPositionLast,
 20285  		ForwardedIPPositionAny,
 20286  	}
 20287  }
 20288  
 20289  const (
 20290  	// IPAddressVersionIpv4 is a IPAddressVersion enum value
 20291  	IPAddressVersionIpv4 = "IPV4"
 20292  
 20293  	// IPAddressVersionIpv6 is a IPAddressVersion enum value
 20294  	IPAddressVersionIpv6 = "IPV6"
 20295  )
 20296  
 20297  // IPAddressVersion_Values returns all elements of the IPAddressVersion enum
 20298  func IPAddressVersion_Values() []string {
 20299  	return []string{
 20300  		IPAddressVersionIpv4,
 20301  		IPAddressVersionIpv6,
 20302  	}
 20303  }
 20304  
 20305  const (
 20306  	// JsonMatchScopeAll is a JsonMatchScope enum value
 20307  	JsonMatchScopeAll = "ALL"
 20308  
 20309  	// JsonMatchScopeKey is a JsonMatchScope enum value
 20310  	JsonMatchScopeKey = "KEY"
 20311  
 20312  	// JsonMatchScopeValue is a JsonMatchScope enum value
 20313  	JsonMatchScopeValue = "VALUE"
 20314  )
 20315  
 20316  // JsonMatchScope_Values returns all elements of the JsonMatchScope enum
 20317  func JsonMatchScope_Values() []string {
 20318  	return []string{
 20319  		JsonMatchScopeAll,
 20320  		JsonMatchScopeKey,
 20321  		JsonMatchScopeValue,
 20322  	}
 20323  }
 20324  
 20325  const (
 20326  	// LabelMatchScopeLabel is a LabelMatchScope enum value
 20327  	LabelMatchScopeLabel = "LABEL"
 20328  
 20329  	// LabelMatchScopeNamespace is a LabelMatchScope enum value
 20330  	LabelMatchScopeNamespace = "NAMESPACE"
 20331  )
 20332  
 20333  // LabelMatchScope_Values returns all elements of the LabelMatchScope enum
 20334  func LabelMatchScope_Values() []string {
 20335  	return []string{
 20336  		LabelMatchScopeLabel,
 20337  		LabelMatchScopeNamespace,
 20338  	}
 20339  }
 20340  
 20341  const (
 20342  	// ParameterExceptionFieldWebAcl is a ParameterExceptionField enum value
 20343  	ParameterExceptionFieldWebAcl = "WEB_ACL"
 20344  
 20345  	// ParameterExceptionFieldRuleGroup is a ParameterExceptionField enum value
 20346  	ParameterExceptionFieldRuleGroup = "RULE_GROUP"
 20347  
 20348  	// ParameterExceptionFieldRegexPatternSet is a ParameterExceptionField enum value
 20349  	ParameterExceptionFieldRegexPatternSet = "REGEX_PATTERN_SET"
 20350  
 20351  	// ParameterExceptionFieldIpSet is a ParameterExceptionField enum value
 20352  	ParameterExceptionFieldIpSet = "IP_SET"
 20353  
 20354  	// ParameterExceptionFieldManagedRuleSet is a ParameterExceptionField enum value
 20355  	ParameterExceptionFieldManagedRuleSet = "MANAGED_RULE_SET"
 20356  
 20357  	// ParameterExceptionFieldRule is a ParameterExceptionField enum value
 20358  	ParameterExceptionFieldRule = "RULE"
 20359  
 20360  	// ParameterExceptionFieldExcludedRule is a ParameterExceptionField enum value
 20361  	ParameterExceptionFieldExcludedRule = "EXCLUDED_RULE"
 20362  
 20363  	// ParameterExceptionFieldStatement is a ParameterExceptionField enum value
 20364  	ParameterExceptionFieldStatement = "STATEMENT"
 20365  
 20366  	// ParameterExceptionFieldByteMatchStatement is a ParameterExceptionField enum value
 20367  	ParameterExceptionFieldByteMatchStatement = "BYTE_MATCH_STATEMENT"
 20368  
 20369  	// ParameterExceptionFieldSqliMatchStatement is a ParameterExceptionField enum value
 20370  	ParameterExceptionFieldSqliMatchStatement = "SQLI_MATCH_STATEMENT"
 20371  
 20372  	// ParameterExceptionFieldXssMatchStatement is a ParameterExceptionField enum value
 20373  	ParameterExceptionFieldXssMatchStatement = "XSS_MATCH_STATEMENT"
 20374  
 20375  	// ParameterExceptionFieldSizeConstraintStatement is a ParameterExceptionField enum value
 20376  	ParameterExceptionFieldSizeConstraintStatement = "SIZE_CONSTRAINT_STATEMENT"
 20377  
 20378  	// ParameterExceptionFieldGeoMatchStatement is a ParameterExceptionField enum value
 20379  	ParameterExceptionFieldGeoMatchStatement = "GEO_MATCH_STATEMENT"
 20380  
 20381  	// ParameterExceptionFieldRateBasedStatement is a ParameterExceptionField enum value
 20382  	ParameterExceptionFieldRateBasedStatement = "RATE_BASED_STATEMENT"
 20383  
 20384  	// ParameterExceptionFieldRuleGroupReferenceStatement is a ParameterExceptionField enum value
 20385  	ParameterExceptionFieldRuleGroupReferenceStatement = "RULE_GROUP_REFERENCE_STATEMENT"
 20386  
 20387  	// ParameterExceptionFieldRegexPatternReferenceStatement is a ParameterExceptionField enum value
 20388  	ParameterExceptionFieldRegexPatternReferenceStatement = "REGEX_PATTERN_REFERENCE_STATEMENT"
 20389  
 20390  	// ParameterExceptionFieldIpSetReferenceStatement is a ParameterExceptionField enum value
 20391  	ParameterExceptionFieldIpSetReferenceStatement = "IP_SET_REFERENCE_STATEMENT"
 20392  
 20393  	// ParameterExceptionFieldManagedRuleSetStatement is a ParameterExceptionField enum value
 20394  	ParameterExceptionFieldManagedRuleSetStatement = "MANAGED_RULE_SET_STATEMENT"
 20395  
 20396  	// ParameterExceptionFieldLabelMatchStatement is a ParameterExceptionField enum value
 20397  	ParameterExceptionFieldLabelMatchStatement = "LABEL_MATCH_STATEMENT"
 20398  
 20399  	// ParameterExceptionFieldAndStatement is a ParameterExceptionField enum value
 20400  	ParameterExceptionFieldAndStatement = "AND_STATEMENT"
 20401  
 20402  	// ParameterExceptionFieldOrStatement is a ParameterExceptionField enum value
 20403  	ParameterExceptionFieldOrStatement = "OR_STATEMENT"
 20404  
 20405  	// ParameterExceptionFieldNotStatement is a ParameterExceptionField enum value
 20406  	ParameterExceptionFieldNotStatement = "NOT_STATEMENT"
 20407  
 20408  	// ParameterExceptionFieldIpAddress is a ParameterExceptionField enum value
 20409  	ParameterExceptionFieldIpAddress = "IP_ADDRESS"
 20410  
 20411  	// ParameterExceptionFieldIpAddressVersion is a ParameterExceptionField enum value
 20412  	ParameterExceptionFieldIpAddressVersion = "IP_ADDRESS_VERSION"
 20413  
 20414  	// ParameterExceptionFieldFieldToMatch is a ParameterExceptionField enum value
 20415  	ParameterExceptionFieldFieldToMatch = "FIELD_TO_MATCH"
 20416  
 20417  	// ParameterExceptionFieldTextTransformation is a ParameterExceptionField enum value
 20418  	ParameterExceptionFieldTextTransformation = "TEXT_TRANSFORMATION"
 20419  
 20420  	// ParameterExceptionFieldSingleQueryArgument is a ParameterExceptionField enum value
 20421  	ParameterExceptionFieldSingleQueryArgument = "SINGLE_QUERY_ARGUMENT"
 20422  
 20423  	// ParameterExceptionFieldSingleHeader is a ParameterExceptionField enum value
 20424  	ParameterExceptionFieldSingleHeader = "SINGLE_HEADER"
 20425  
 20426  	// ParameterExceptionFieldDefaultAction is a ParameterExceptionField enum value
 20427  	ParameterExceptionFieldDefaultAction = "DEFAULT_ACTION"
 20428  
 20429  	// ParameterExceptionFieldRuleAction is a ParameterExceptionField enum value
 20430  	ParameterExceptionFieldRuleAction = "RULE_ACTION"
 20431  
 20432  	// ParameterExceptionFieldEntityLimit is a ParameterExceptionField enum value
 20433  	ParameterExceptionFieldEntityLimit = "ENTITY_LIMIT"
 20434  
 20435  	// ParameterExceptionFieldOverrideAction is a ParameterExceptionField enum value
 20436  	ParameterExceptionFieldOverrideAction = "OVERRIDE_ACTION"
 20437  
 20438  	// ParameterExceptionFieldScopeValue is a ParameterExceptionField enum value
 20439  	ParameterExceptionFieldScopeValue = "SCOPE_VALUE"
 20440  
 20441  	// ParameterExceptionFieldResourceArn is a ParameterExceptionField enum value
 20442  	ParameterExceptionFieldResourceArn = "RESOURCE_ARN"
 20443  
 20444  	// ParameterExceptionFieldResourceType is a ParameterExceptionField enum value
 20445  	ParameterExceptionFieldResourceType = "RESOURCE_TYPE"
 20446  
 20447  	// ParameterExceptionFieldTags is a ParameterExceptionField enum value
 20448  	ParameterExceptionFieldTags = "TAGS"
 20449  
 20450  	// ParameterExceptionFieldTagKeys is a ParameterExceptionField enum value
 20451  	ParameterExceptionFieldTagKeys = "TAG_KEYS"
 20452  
 20453  	// ParameterExceptionFieldMetricName is a ParameterExceptionField enum value
 20454  	ParameterExceptionFieldMetricName = "METRIC_NAME"
 20455  
 20456  	// ParameterExceptionFieldFirewallManagerStatement is a ParameterExceptionField enum value
 20457  	ParameterExceptionFieldFirewallManagerStatement = "FIREWALL_MANAGER_STATEMENT"
 20458  
 20459  	// ParameterExceptionFieldFallbackBehavior is a ParameterExceptionField enum value
 20460  	ParameterExceptionFieldFallbackBehavior = "FALLBACK_BEHAVIOR"
 20461  
 20462  	// ParameterExceptionFieldPosition is a ParameterExceptionField enum value
 20463  	ParameterExceptionFieldPosition = "POSITION"
 20464  
 20465  	// ParameterExceptionFieldForwardedIpConfig is a ParameterExceptionField enum value
 20466  	ParameterExceptionFieldForwardedIpConfig = "FORWARDED_IP_CONFIG"
 20467  
 20468  	// ParameterExceptionFieldIpSetForwardedIpConfig is a ParameterExceptionField enum value
 20469  	ParameterExceptionFieldIpSetForwardedIpConfig = "IP_SET_FORWARDED_IP_CONFIG"
 20470  
 20471  	// ParameterExceptionFieldHeaderName is a ParameterExceptionField enum value
 20472  	ParameterExceptionFieldHeaderName = "HEADER_NAME"
 20473  
 20474  	// ParameterExceptionFieldCustomRequestHandling is a ParameterExceptionField enum value
 20475  	ParameterExceptionFieldCustomRequestHandling = "CUSTOM_REQUEST_HANDLING"
 20476  
 20477  	// ParameterExceptionFieldResponseContentType is a ParameterExceptionField enum value
 20478  	ParameterExceptionFieldResponseContentType = "RESPONSE_CONTENT_TYPE"
 20479  
 20480  	// ParameterExceptionFieldCustomResponse is a ParameterExceptionField enum value
 20481  	ParameterExceptionFieldCustomResponse = "CUSTOM_RESPONSE"
 20482  
 20483  	// ParameterExceptionFieldCustomResponseBody is a ParameterExceptionField enum value
 20484  	ParameterExceptionFieldCustomResponseBody = "CUSTOM_RESPONSE_BODY"
 20485  
 20486  	// ParameterExceptionFieldJsonMatchPattern is a ParameterExceptionField enum value
 20487  	ParameterExceptionFieldJsonMatchPattern = "JSON_MATCH_PATTERN"
 20488  
 20489  	// ParameterExceptionFieldJsonMatchScope is a ParameterExceptionField enum value
 20490  	ParameterExceptionFieldJsonMatchScope = "JSON_MATCH_SCOPE"
 20491  
 20492  	// ParameterExceptionFieldBodyParsingFallbackBehavior is a ParameterExceptionField enum value
 20493  	ParameterExceptionFieldBodyParsingFallbackBehavior = "BODY_PARSING_FALLBACK_BEHAVIOR"
 20494  
 20495  	// ParameterExceptionFieldLoggingFilter is a ParameterExceptionField enum value
 20496  	ParameterExceptionFieldLoggingFilter = "LOGGING_FILTER"
 20497  
 20498  	// ParameterExceptionFieldFilterCondition is a ParameterExceptionField enum value
 20499  	ParameterExceptionFieldFilterCondition = "FILTER_CONDITION"
 20500  
 20501  	// ParameterExceptionFieldExpireTimestamp is a ParameterExceptionField enum value
 20502  	ParameterExceptionFieldExpireTimestamp = "EXPIRE_TIMESTAMP"
 20503  
 20504  	// ParameterExceptionFieldChangePropagationStatus is a ParameterExceptionField enum value
 20505  	ParameterExceptionFieldChangePropagationStatus = "CHANGE_PROPAGATION_STATUS"
 20506  
 20507  	// ParameterExceptionFieldAssociableResource is a ParameterExceptionField enum value
 20508  	ParameterExceptionFieldAssociableResource = "ASSOCIABLE_RESOURCE"
 20509  )
 20510  
 20511  // ParameterExceptionField_Values returns all elements of the ParameterExceptionField enum
 20512  func ParameterExceptionField_Values() []string {
 20513  	return []string{
 20514  		ParameterExceptionFieldWebAcl,
 20515  		ParameterExceptionFieldRuleGroup,
 20516  		ParameterExceptionFieldRegexPatternSet,
 20517  		ParameterExceptionFieldIpSet,
 20518  		ParameterExceptionFieldManagedRuleSet,
 20519  		ParameterExceptionFieldRule,
 20520  		ParameterExceptionFieldExcludedRule,
 20521  		ParameterExceptionFieldStatement,
 20522  		ParameterExceptionFieldByteMatchStatement,
 20523  		ParameterExceptionFieldSqliMatchStatement,
 20524  		ParameterExceptionFieldXssMatchStatement,
 20525  		ParameterExceptionFieldSizeConstraintStatement,
 20526  		ParameterExceptionFieldGeoMatchStatement,
 20527  		ParameterExceptionFieldRateBasedStatement,
 20528  		ParameterExceptionFieldRuleGroupReferenceStatement,
 20529  		ParameterExceptionFieldRegexPatternReferenceStatement,
 20530  		ParameterExceptionFieldIpSetReferenceStatement,
 20531  		ParameterExceptionFieldManagedRuleSetStatement,
 20532  		ParameterExceptionFieldLabelMatchStatement,
 20533  		ParameterExceptionFieldAndStatement,
 20534  		ParameterExceptionFieldOrStatement,
 20535  		ParameterExceptionFieldNotStatement,
 20536  		ParameterExceptionFieldIpAddress,
 20537  		ParameterExceptionFieldIpAddressVersion,
 20538  		ParameterExceptionFieldFieldToMatch,
 20539  		ParameterExceptionFieldTextTransformation,
 20540  		ParameterExceptionFieldSingleQueryArgument,
 20541  		ParameterExceptionFieldSingleHeader,
 20542  		ParameterExceptionFieldDefaultAction,
 20543  		ParameterExceptionFieldRuleAction,
 20544  		ParameterExceptionFieldEntityLimit,
 20545  		ParameterExceptionFieldOverrideAction,
 20546  		ParameterExceptionFieldScopeValue,
 20547  		ParameterExceptionFieldResourceArn,
 20548  		ParameterExceptionFieldResourceType,
 20549  		ParameterExceptionFieldTags,
 20550  		ParameterExceptionFieldTagKeys,
 20551  		ParameterExceptionFieldMetricName,
 20552  		ParameterExceptionFieldFirewallManagerStatement,
 20553  		ParameterExceptionFieldFallbackBehavior,
 20554  		ParameterExceptionFieldPosition,
 20555  		ParameterExceptionFieldForwardedIpConfig,
 20556  		ParameterExceptionFieldIpSetForwardedIpConfig,
 20557  		ParameterExceptionFieldHeaderName,
 20558  		ParameterExceptionFieldCustomRequestHandling,
 20559  		ParameterExceptionFieldResponseContentType,
 20560  		ParameterExceptionFieldCustomResponse,
 20561  		ParameterExceptionFieldCustomResponseBody,
 20562  		ParameterExceptionFieldJsonMatchPattern,
 20563  		ParameterExceptionFieldJsonMatchScope,
 20564  		ParameterExceptionFieldBodyParsingFallbackBehavior,
 20565  		ParameterExceptionFieldLoggingFilter,
 20566  		ParameterExceptionFieldFilterCondition,
 20567  		ParameterExceptionFieldExpireTimestamp,
 20568  		ParameterExceptionFieldChangePropagationStatus,
 20569  		ParameterExceptionFieldAssociableResource,
 20570  	}
 20571  }
 20572  
 20573  const (
 20574  	// PositionalConstraintExactly is a PositionalConstraint enum value
 20575  	PositionalConstraintExactly = "EXACTLY"
 20576  
 20577  	// PositionalConstraintStartsWith is a PositionalConstraint enum value
 20578  	PositionalConstraintStartsWith = "STARTS_WITH"
 20579  
 20580  	// PositionalConstraintEndsWith is a PositionalConstraint enum value
 20581  	PositionalConstraintEndsWith = "ENDS_WITH"
 20582  
 20583  	// PositionalConstraintContains is a PositionalConstraint enum value
 20584  	PositionalConstraintContains = "CONTAINS"
 20585  
 20586  	// PositionalConstraintContainsWord is a PositionalConstraint enum value
 20587  	PositionalConstraintContainsWord = "CONTAINS_WORD"
 20588  )
 20589  
 20590  // PositionalConstraint_Values returns all elements of the PositionalConstraint enum
 20591  func PositionalConstraint_Values() []string {
 20592  	return []string{
 20593  		PositionalConstraintExactly,
 20594  		PositionalConstraintStartsWith,
 20595  		PositionalConstraintEndsWith,
 20596  		PositionalConstraintContains,
 20597  		PositionalConstraintContainsWord,
 20598  	}
 20599  }
 20600  
 20601  const (
 20602  	// RateBasedStatementAggregateKeyTypeIp is a RateBasedStatementAggregateKeyType enum value
 20603  	RateBasedStatementAggregateKeyTypeIp = "IP"
 20604  
 20605  	// RateBasedStatementAggregateKeyTypeForwardedIp is a RateBasedStatementAggregateKeyType enum value
 20606  	RateBasedStatementAggregateKeyTypeForwardedIp = "FORWARDED_IP"
 20607  )
 20608  
 20609  // RateBasedStatementAggregateKeyType_Values returns all elements of the RateBasedStatementAggregateKeyType enum
 20610  func RateBasedStatementAggregateKeyType_Values() []string {
 20611  	return []string{
 20612  		RateBasedStatementAggregateKeyTypeIp,
 20613  		RateBasedStatementAggregateKeyTypeForwardedIp,
 20614  	}
 20615  }
 20616  
 20617  const (
 20618  	// ResourceTypeApplicationLoadBalancer is a ResourceType enum value
 20619  	ResourceTypeApplicationLoadBalancer = "APPLICATION_LOAD_BALANCER"
 20620  
 20621  	// ResourceTypeApiGateway is a ResourceType enum value
 20622  	ResourceTypeApiGateway = "API_GATEWAY"
 20623  
 20624  	// ResourceTypeAppsync is a ResourceType enum value
 20625  	ResourceTypeAppsync = "APPSYNC"
 20626  )
 20627  
 20628  // ResourceType_Values returns all elements of the ResourceType enum
 20629  func ResourceType_Values() []string {
 20630  	return []string{
 20631  		ResourceTypeApplicationLoadBalancer,
 20632  		ResourceTypeApiGateway,
 20633  		ResourceTypeAppsync,
 20634  	}
 20635  }
 20636  
 20637  const (
 20638  	// ResponseContentTypeTextPlain is a ResponseContentType enum value
 20639  	ResponseContentTypeTextPlain = "TEXT_PLAIN"
 20640  
 20641  	// ResponseContentTypeTextHtml is a ResponseContentType enum value
 20642  	ResponseContentTypeTextHtml = "TEXT_HTML"
 20643  
 20644  	// ResponseContentTypeApplicationJson is a ResponseContentType enum value
 20645  	ResponseContentTypeApplicationJson = "APPLICATION_JSON"
 20646  )
 20647  
 20648  // ResponseContentType_Values returns all elements of the ResponseContentType enum
 20649  func ResponseContentType_Values() []string {
 20650  	return []string{
 20651  		ResponseContentTypeTextPlain,
 20652  		ResponseContentTypeTextHtml,
 20653  		ResponseContentTypeApplicationJson,
 20654  	}
 20655  }
 20656  
 20657  const (
 20658  	// ScopeCloudfront is a Scope enum value
 20659  	ScopeCloudfront = "CLOUDFRONT"
 20660  
 20661  	// ScopeRegional is a Scope enum value
 20662  	ScopeRegional = "REGIONAL"
 20663  )
 20664  
 20665  // Scope_Values returns all elements of the Scope enum
 20666  func Scope_Values() []string {
 20667  	return []string{
 20668  		ScopeCloudfront,
 20669  		ScopeRegional,
 20670  	}
 20671  }
 20672  
 20673  const (
 20674  	// TextTransformationTypeNone is a TextTransformationType enum value
 20675  	TextTransformationTypeNone = "NONE"
 20676  
 20677  	// TextTransformationTypeCompressWhiteSpace is a TextTransformationType enum value
 20678  	TextTransformationTypeCompressWhiteSpace = "COMPRESS_WHITE_SPACE"
 20679  
 20680  	// TextTransformationTypeHtmlEntityDecode is a TextTransformationType enum value
 20681  	TextTransformationTypeHtmlEntityDecode = "HTML_ENTITY_DECODE"
 20682  
 20683  	// TextTransformationTypeLowercase is a TextTransformationType enum value
 20684  	TextTransformationTypeLowercase = "LOWERCASE"
 20685  
 20686  	// TextTransformationTypeCmdLine is a TextTransformationType enum value
 20687  	TextTransformationTypeCmdLine = "CMD_LINE"
 20688  
 20689  	// TextTransformationTypeUrlDecode is a TextTransformationType enum value
 20690  	TextTransformationTypeUrlDecode = "URL_DECODE"
 20691  
 20692  	// TextTransformationTypeBase64Decode is a TextTransformationType enum value
 20693  	TextTransformationTypeBase64Decode = "BASE64_DECODE"
 20694  
 20695  	// TextTransformationTypeHexDecode is a TextTransformationType enum value
 20696  	TextTransformationTypeHexDecode = "HEX_DECODE"
 20697  
 20698  	// TextTransformationTypeMd5 is a TextTransformationType enum value
 20699  	TextTransformationTypeMd5 = "MD5"
 20700  
 20701  	// TextTransformationTypeReplaceComments is a TextTransformationType enum value
 20702  	TextTransformationTypeReplaceComments = "REPLACE_COMMENTS"
 20703  
 20704  	// TextTransformationTypeEscapeSeqDecode is a TextTransformationType enum value
 20705  	TextTransformationTypeEscapeSeqDecode = "ESCAPE_SEQ_DECODE"
 20706  
 20707  	// TextTransformationTypeSqlHexDecode is a TextTransformationType enum value
 20708  	TextTransformationTypeSqlHexDecode = "SQL_HEX_DECODE"
 20709  
 20710  	// TextTransformationTypeCssDecode is a TextTransformationType enum value
 20711  	TextTransformationTypeCssDecode = "CSS_DECODE"
 20712  
 20713  	// TextTransformationTypeJsDecode is a TextTransformationType enum value
 20714  	TextTransformationTypeJsDecode = "JS_DECODE"
 20715  
 20716  	// TextTransformationTypeNormalizePath is a TextTransformationType enum value
 20717  	TextTransformationTypeNormalizePath = "NORMALIZE_PATH"
 20718  
 20719  	// TextTransformationTypeNormalizePathWin is a TextTransformationType enum value
 20720  	TextTransformationTypeNormalizePathWin = "NORMALIZE_PATH_WIN"
 20721  
 20722  	// TextTransformationTypeRemoveNulls is a TextTransformationType enum value
 20723  	TextTransformationTypeRemoveNulls = "REMOVE_NULLS"
 20724  
 20725  	// TextTransformationTypeReplaceNulls is a TextTransformationType enum value
 20726  	TextTransformationTypeReplaceNulls = "REPLACE_NULLS"
 20727  
 20728  	// TextTransformationTypeBase64DecodeExt is a TextTransformationType enum value
 20729  	TextTransformationTypeBase64DecodeExt = "BASE64_DECODE_EXT"
 20730  
 20731  	// TextTransformationTypeUrlDecodeUni is a TextTransformationType enum value
 20732  	TextTransformationTypeUrlDecodeUni = "URL_DECODE_UNI"
 20733  
 20734  	// TextTransformationTypeUtf8ToUnicode is a TextTransformationType enum value
 20735  	TextTransformationTypeUtf8ToUnicode = "UTF8_TO_UNICODE"
 20736  )
 20737  
 20738  // TextTransformationType_Values returns all elements of the TextTransformationType enum
 20739  func TextTransformationType_Values() []string {
 20740  	return []string{
 20741  		TextTransformationTypeNone,
 20742  		TextTransformationTypeCompressWhiteSpace,
 20743  		TextTransformationTypeHtmlEntityDecode,
 20744  		TextTransformationTypeLowercase,
 20745  		TextTransformationTypeCmdLine,
 20746  		TextTransformationTypeUrlDecode,
 20747  		TextTransformationTypeBase64Decode,
 20748  		TextTransformationTypeHexDecode,
 20749  		TextTransformationTypeMd5,
 20750  		TextTransformationTypeReplaceComments,
 20751  		TextTransformationTypeEscapeSeqDecode,
 20752  		TextTransformationTypeSqlHexDecode,
 20753  		TextTransformationTypeCssDecode,
 20754  		TextTransformationTypeJsDecode,
 20755  		TextTransformationTypeNormalizePath,
 20756  		TextTransformationTypeNormalizePathWin,
 20757  		TextTransformationTypeRemoveNulls,
 20758  		TextTransformationTypeReplaceNulls,
 20759  		TextTransformationTypeBase64DecodeExt,
 20760  		TextTransformationTypeUrlDecodeUni,
 20761  		TextTransformationTypeUtf8ToUnicode,
 20762  	}
 20763  }