1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package waf
4
5import (
6	"fmt"
7	"time"
8
9	"github.com/aws/aws-sdk-go/aws"
10	"github.com/aws/aws-sdk-go/aws/awsutil"
11	"github.com/aws/aws-sdk-go/aws/request"
12)
13
14const opCreateByteMatchSet = "CreateByteMatchSet"
15
16// CreateByteMatchSetRequest generates a "aws/request.Request" representing the
17// client's request for the CreateByteMatchSet operation. The "output" return
18// value will be populated with the request's response once the request complets
19// successfuly.
20//
21// Use "Send" method on the returned Request to send the API call to the service.
22// the "output" return value is not valid until after Send returns without error.
23//
24// See CreateByteMatchSet for more information on using the CreateByteMatchSet
25// API call, and error handling.
26//
27// This method is useful when you want to inject custom logic or configuration
28// into the SDK's request lifecycle. Such as custom headers, or retry logic.
29//
30//
31//    // Example sending a request using the CreateByteMatchSetRequest method.
32//    req, resp := client.CreateByteMatchSetRequest(params)
33//
34//    err := req.Send()
35//    if err == nil { // resp is now filled
36//        fmt.Println(resp)
37//    }
38//
39// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateByteMatchSet
40func (c *WAF) CreateByteMatchSetRequest(input *CreateByteMatchSetInput) (req *request.Request, output *CreateByteMatchSetOutput) {
41	op := &request.Operation{
42		Name:       opCreateByteMatchSet,
43		HTTPMethod: "POST",
44		HTTPPath:   "/",
45	}
46
47	if input == nil {
48		input = &CreateByteMatchSetInput{}
49	}
50
51	output = &CreateByteMatchSetOutput{}
52	req = c.newRequest(op, input, output)
53	return
54}
55
56// CreateByteMatchSet API operation for AWS WAF.
57//
58// Creates a ByteMatchSet. You then use UpdateByteMatchSet to identify the part
59// of a web request that you want AWS WAF to inspect, such as the values of
60// the User-Agent header or the query string. For example, you can create a
61// ByteMatchSet that matches any requests with User-Agent headers that contain
62// the string BadBot. You can then configure AWS WAF to reject those requests.
63//
64// To create and configure a ByteMatchSet, perform the following steps:
65//
66// Use GetChangeToken to get the change token that you provide in the ChangeToken
67// parameter of a CreateByteMatchSet request.
68//
69// Submit a CreateByteMatchSet request.
70//
71// Use GetChangeToken to get the change token that you provide in the ChangeToken
72// parameter of an UpdateByteMatchSet request.
73//
74// Submit an UpdateByteMatchSet request to specify the part of the request that
75// you want AWS WAF to inspect (for example, the header or the URI) and the
76// value that you want AWS WAF to watch for.
77//
78// For more information about how to use the AWS WAF API to allow or block HTTP
79// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
80//
81// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
82// with awserr.Error's Code and Message methods to get detailed information about
83// the error.
84//
85// See the AWS API reference guide for AWS WAF's
86// API operation CreateByteMatchSet for usage and error information.
87//
88// Returned Error Codes:
89//   * ErrCodeDisallowedNameException "DisallowedNameException"
90//   The name specified is invalid.
91//
92//   * ErrCodeInternalErrorException "InternalErrorException"
93//   The operation failed because of a system problem, even though the request
94//   was valid. Retry your request.
95//
96//   * ErrCodeInvalidAccountException "InvalidAccountException"
97//   The operation failed because you tried to create, update, or delete an object
98//   by using an invalid account identifier.
99//
100//   * ErrCodeInvalidParameterException "InvalidParameterException"
101//   The operation failed because AWS WAF didn't recognize a parameter in the
102//   request. For example:
103//
104//      * You specified an invalid parameter name.
105//
106//      * You specified an invalid value.
107//
108//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
109//      using an action other than INSERT or DELETE.
110//
111//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
112//      BLOCK, or COUNT.
113//
114//      * You tried to create a RateBasedRule with a RateKey value other than
115//      IP.
116//
117//      * You tried to update a WebACL with a WafActionType other than ALLOW,
118//      BLOCK, or COUNT.
119//
120//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
121//      HEADER, QUERY_STRING, or URI.
122//
123//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
124//      for Data.
125//
126//      * Your request references an ARN that is malformed, or corresponds to
127//      a resource with which a web ACL cannot be associated.
128//
129//   * ErrCodeStaleDataException "StaleDataException"
130//   The operation failed because you tried to create, update, or delete an object
131//   by using a change token that has already been used.
132//
133//   * ErrCodeLimitsExceededException "LimitsExceededException"
134//   The operation exceeds a resource limit, for example, the maximum number of
135//   WebACL objects that you can create for an AWS account. For more information,
136//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
137//   in the AWS WAF Developer Guide.
138//
139// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateByteMatchSet
140func (c *WAF) CreateByteMatchSet(input *CreateByteMatchSetInput) (*CreateByteMatchSetOutput, error) {
141	req, out := c.CreateByteMatchSetRequest(input)
142	return out, req.Send()
143}
144
145// CreateByteMatchSetWithContext is the same as CreateByteMatchSet with the addition of
146// the ability to pass a context and additional request options.
147//
148// See CreateByteMatchSet for details on how to use this API operation.
149//
150// The context must be non-nil and will be used for request cancellation. If
151// the context is nil a panic will occur. In the future the SDK may create
152// sub-contexts for http.Requests. See https://golang.org/pkg/context/
153// for more information on using Contexts.
154func (c *WAF) CreateByteMatchSetWithContext(ctx aws.Context, input *CreateByteMatchSetInput, opts ...request.Option) (*CreateByteMatchSetOutput, error) {
155	req, out := c.CreateByteMatchSetRequest(input)
156	req.SetContext(ctx)
157	req.ApplyOptions(opts...)
158	return out, req.Send()
159}
160
161const opCreateIPSet = "CreateIPSet"
162
163// CreateIPSetRequest generates a "aws/request.Request" representing the
164// client's request for the CreateIPSet operation. The "output" return
165// value will be populated with the request's response once the request complets
166// successfuly.
167//
168// Use "Send" method on the returned Request to send the API call to the service.
169// the "output" return value is not valid until after Send returns without error.
170//
171// See CreateIPSet for more information on using the CreateIPSet
172// API call, and error handling.
173//
174// This method is useful when you want to inject custom logic or configuration
175// into the SDK's request lifecycle. Such as custom headers, or retry logic.
176//
177//
178//    // Example sending a request using the CreateIPSetRequest method.
179//    req, resp := client.CreateIPSetRequest(params)
180//
181//    err := req.Send()
182//    if err == nil { // resp is now filled
183//        fmt.Println(resp)
184//    }
185//
186// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateIPSet
187func (c *WAF) CreateIPSetRequest(input *CreateIPSetInput) (req *request.Request, output *CreateIPSetOutput) {
188	op := &request.Operation{
189		Name:       opCreateIPSet,
190		HTTPMethod: "POST",
191		HTTPPath:   "/",
192	}
193
194	if input == nil {
195		input = &CreateIPSetInput{}
196	}
197
198	output = &CreateIPSetOutput{}
199	req = c.newRequest(op, input, output)
200	return
201}
202
203// CreateIPSet API operation for AWS WAF.
204//
205// Creates an IPSet, which you use to specify which web requests you want to
206// allow or block based on the IP addresses that the requests originate from.
207// For example, if you're receiving a lot of requests from one or more individual
208// IP addresses or one or more ranges of IP addresses and you want to block
209// the requests, you can create an IPSet that contains those IP addresses and
210// then configure AWS WAF to block the requests.
211//
212// To create and configure an IPSet, perform the following steps:
213//
214// Use GetChangeToken to get the change token that you provide in the ChangeToken
215// parameter of a CreateIPSet request.
216//
217// Submit a CreateIPSet request.
218//
219// Use GetChangeToken to get the change token that you provide in the ChangeToken
220// parameter of an UpdateIPSet request.
221//
222// Submit an UpdateIPSet request to specify the IP addresses that you want AWS
223// WAF to watch for.
224//
225// For more information about how to use the AWS WAF API to allow or block HTTP
226// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
227//
228// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
229// with awserr.Error's Code and Message methods to get detailed information about
230// the error.
231//
232// See the AWS API reference guide for AWS WAF's
233// API operation CreateIPSet for usage and error information.
234//
235// Returned Error Codes:
236//   * ErrCodeStaleDataException "StaleDataException"
237//   The operation failed because you tried to create, update, or delete an object
238//   by using a change token that has already been used.
239//
240//   * ErrCodeInternalErrorException "InternalErrorException"
241//   The operation failed because of a system problem, even though the request
242//   was valid. Retry your request.
243//
244//   * ErrCodeInvalidAccountException "InvalidAccountException"
245//   The operation failed because you tried to create, update, or delete an object
246//   by using an invalid account identifier.
247//
248//   * ErrCodeDisallowedNameException "DisallowedNameException"
249//   The name specified is invalid.
250//
251//   * ErrCodeInvalidParameterException "InvalidParameterException"
252//   The operation failed because AWS WAF didn't recognize a parameter in the
253//   request. For example:
254//
255//      * You specified an invalid parameter name.
256//
257//      * You specified an invalid value.
258//
259//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
260//      using an action other than INSERT or DELETE.
261//
262//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
263//      BLOCK, or COUNT.
264//
265//      * You tried to create a RateBasedRule with a RateKey value other than
266//      IP.
267//
268//      * You tried to update a WebACL with a WafActionType other than ALLOW,
269//      BLOCK, or COUNT.
270//
271//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
272//      HEADER, QUERY_STRING, or URI.
273//
274//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
275//      for Data.
276//
277//      * Your request references an ARN that is malformed, or corresponds to
278//      a resource with which a web ACL cannot be associated.
279//
280//   * ErrCodeLimitsExceededException "LimitsExceededException"
281//   The operation exceeds a resource limit, for example, the maximum number of
282//   WebACL objects that you can create for an AWS account. For more information,
283//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
284//   in the AWS WAF Developer Guide.
285//
286// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateIPSet
287func (c *WAF) CreateIPSet(input *CreateIPSetInput) (*CreateIPSetOutput, error) {
288	req, out := c.CreateIPSetRequest(input)
289	return out, req.Send()
290}
291
292// CreateIPSetWithContext is the same as CreateIPSet with the addition of
293// the ability to pass a context and additional request options.
294//
295// See CreateIPSet for details on how to use this API operation.
296//
297// The context must be non-nil and will be used for request cancellation. If
298// the context is nil a panic will occur. In the future the SDK may create
299// sub-contexts for http.Requests. See https://golang.org/pkg/context/
300// for more information on using Contexts.
301func (c *WAF) CreateIPSetWithContext(ctx aws.Context, input *CreateIPSetInput, opts ...request.Option) (*CreateIPSetOutput, error) {
302	req, out := c.CreateIPSetRequest(input)
303	req.SetContext(ctx)
304	req.ApplyOptions(opts...)
305	return out, req.Send()
306}
307
308const opCreateRateBasedRule = "CreateRateBasedRule"
309
310// CreateRateBasedRuleRequest generates a "aws/request.Request" representing the
311// client's request for the CreateRateBasedRule operation. The "output" return
312// value will be populated with the request's response once the request complets
313// successfuly.
314//
315// Use "Send" method on the returned Request to send the API call to the service.
316// the "output" return value is not valid until after Send returns without error.
317//
318// See CreateRateBasedRule for more information on using the CreateRateBasedRule
319// API call, and error handling.
320//
321// This method is useful when you want to inject custom logic or configuration
322// into the SDK's request lifecycle. Such as custom headers, or retry logic.
323//
324//
325//    // Example sending a request using the CreateRateBasedRuleRequest method.
326//    req, resp := client.CreateRateBasedRuleRequest(params)
327//
328//    err := req.Send()
329//    if err == nil { // resp is now filled
330//        fmt.Println(resp)
331//    }
332//
333// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateRateBasedRule
334func (c *WAF) CreateRateBasedRuleRequest(input *CreateRateBasedRuleInput) (req *request.Request, output *CreateRateBasedRuleOutput) {
335	op := &request.Operation{
336		Name:       opCreateRateBasedRule,
337		HTTPMethod: "POST",
338		HTTPPath:   "/",
339	}
340
341	if input == nil {
342		input = &CreateRateBasedRuleInput{}
343	}
344
345	output = &CreateRateBasedRuleOutput{}
346	req = c.newRequest(op, input, output)
347	return
348}
349
350// CreateRateBasedRule API operation for AWS WAF.
351//
352// Creates a RateBasedRule. The RateBasedRule contains a RateLimit, which specifies
353// the maximum number of requests that AWS WAF allows from a specified IP address
354// in a five-minute period. The RateBasedRule also contains the IPSet objects,
355// ByteMatchSet objects, and other predicates that identify the requests that
356// you want to count or block if these requests exceed the RateLimit.
357//
358// If you add more than one predicate to a RateBasedRule, a request not only
359// must exceed the RateLimit, but it also must match all the specifications
360// to be counted or blocked. For example, suppose you add the following to a
361// RateBasedRule:
362//
363//    * An IPSet that matches the IP address 192.0.2.44/32
364//
365//    * A ByteMatchSet that matches BadBot in the User-Agent header
366//
367// Further, you specify a RateLimit of 15,000.
368//
369// You then add the RateBasedRule to a WebACL and specify that you want to block
370// requests that meet the conditions in the rule. For a request to be blocked,
371// it must come from the IP address 192.0.2.44 and the User-Agent header in
372// the request must contain the value BadBot. Further, requests that match these
373// two conditions must be received at a rate of more than 15,000 requests every
374// five minutes. If both conditions are met and the rate is exceeded, AWS WAF
375// blocks the requests. If the rate drops below 15,000 for a five-minute period,
376// AWS WAF no longer blocks the requests.
377//
378// As a second example, suppose you want to limit requests to a particular page
379// on your site. To do this, you could add the following to a RateBasedRule:
380//
381//    * A ByteMatchSet with FieldToMatch of URI
382//
383//    * A PositionalConstraint of STARTS_WITH
384//
385//    * A TargetString of login
386//
387// Further, you specify a RateLimit of 15,000.
388//
389// By adding this RateBasedRule to a WebACL, you could limit requests to your
390// login page without affecting the rest of your site.
391//
392// To create and configure a RateBasedRule, perform the following steps:
393//
394// Create and update the predicates that you want to include in the rule. For
395// more information, see CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet.
396//
397// Use GetChangeToken to get the change token that you provide in the ChangeToken
398// parameter of a CreateRule request.
399//
400// Submit a CreateRateBasedRule request.
401//
402// Use GetChangeToken to get the change token that you provide in the ChangeToken
403// parameter of an UpdateRule request.
404//
405// Submit an UpdateRateBasedRule request to specify the predicates that you
406// want to include in the rule.
407//
408// Create and update a WebACL that contains the RateBasedRule. For more information,
409// see CreateWebACL.
410//
411// For more information about how to use the AWS WAF API to allow or block HTTP
412// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
413//
414// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
415// with awserr.Error's Code and Message methods to get detailed information about
416// the error.
417//
418// See the AWS API reference guide for AWS WAF's
419// API operation CreateRateBasedRule for usage and error information.
420//
421// Returned Error Codes:
422//   * ErrCodeStaleDataException "StaleDataException"
423//   The operation failed because you tried to create, update, or delete an object
424//   by using a change token that has already been used.
425//
426//   * ErrCodeInternalErrorException "InternalErrorException"
427//   The operation failed because of a system problem, even though the request
428//   was valid. Retry your request.
429//
430//   * ErrCodeDisallowedNameException "DisallowedNameException"
431//   The name specified is invalid.
432//
433//   * ErrCodeInvalidParameterException "InvalidParameterException"
434//   The operation failed because AWS WAF didn't recognize a parameter in the
435//   request. For example:
436//
437//      * You specified an invalid parameter name.
438//
439//      * You specified an invalid value.
440//
441//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
442//      using an action other than INSERT or DELETE.
443//
444//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
445//      BLOCK, or COUNT.
446//
447//      * You tried to create a RateBasedRule with a RateKey value other than
448//      IP.
449//
450//      * You tried to update a WebACL with a WafActionType other than ALLOW,
451//      BLOCK, or COUNT.
452//
453//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
454//      HEADER, QUERY_STRING, or URI.
455//
456//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
457//      for Data.
458//
459//      * Your request references an ARN that is malformed, or corresponds to
460//      a resource with which a web ACL cannot be associated.
461//
462//   * ErrCodeLimitsExceededException "LimitsExceededException"
463//   The operation exceeds a resource limit, for example, the maximum number of
464//   WebACL objects that you can create for an AWS account. For more information,
465//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
466//   in the AWS WAF Developer Guide.
467//
468// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateRateBasedRule
469func (c *WAF) CreateRateBasedRule(input *CreateRateBasedRuleInput) (*CreateRateBasedRuleOutput, error) {
470	req, out := c.CreateRateBasedRuleRequest(input)
471	return out, req.Send()
472}
473
474// CreateRateBasedRuleWithContext is the same as CreateRateBasedRule with the addition of
475// the ability to pass a context and additional request options.
476//
477// See CreateRateBasedRule for details on how to use this API operation.
478//
479// The context must be non-nil and will be used for request cancellation. If
480// the context is nil a panic will occur. In the future the SDK may create
481// sub-contexts for http.Requests. See https://golang.org/pkg/context/
482// for more information on using Contexts.
483func (c *WAF) CreateRateBasedRuleWithContext(ctx aws.Context, input *CreateRateBasedRuleInput, opts ...request.Option) (*CreateRateBasedRuleOutput, error) {
484	req, out := c.CreateRateBasedRuleRequest(input)
485	req.SetContext(ctx)
486	req.ApplyOptions(opts...)
487	return out, req.Send()
488}
489
490const opCreateRule = "CreateRule"
491
492// CreateRuleRequest generates a "aws/request.Request" representing the
493// client's request for the CreateRule operation. The "output" return
494// value will be populated with the request's response once the request complets
495// successfuly.
496//
497// Use "Send" method on the returned Request to send the API call to the service.
498// the "output" return value is not valid until after Send returns without error.
499//
500// See CreateRule for more information on using the CreateRule
501// API call, and error handling.
502//
503// This method is useful when you want to inject custom logic or configuration
504// into the SDK's request lifecycle. Such as custom headers, or retry logic.
505//
506//
507//    // Example sending a request using the CreateRuleRequest method.
508//    req, resp := client.CreateRuleRequest(params)
509//
510//    err := req.Send()
511//    if err == nil { // resp is now filled
512//        fmt.Println(resp)
513//    }
514//
515// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateRule
516func (c *WAF) CreateRuleRequest(input *CreateRuleInput) (req *request.Request, output *CreateRuleOutput) {
517	op := &request.Operation{
518		Name:       opCreateRule,
519		HTTPMethod: "POST",
520		HTTPPath:   "/",
521	}
522
523	if input == nil {
524		input = &CreateRuleInput{}
525	}
526
527	output = &CreateRuleOutput{}
528	req = c.newRequest(op, input, output)
529	return
530}
531
532// CreateRule API operation for AWS WAF.
533//
534// Creates a Rule, which contains the IPSet objects, ByteMatchSet objects, and
535// other predicates that identify the requests that you want to block. If you
536// add more than one predicate to a Rule, a request must match all of the specifications
537// to be allowed or blocked. For example, suppose you add the following to a
538// Rule:
539//
540//    * An IPSet that matches the IP address 192.0.2.44/32
541//
542//    * A ByteMatchSet that matches BadBot in the User-Agent header
543//
544// You then add the Rule to a WebACL and specify that you want to blocks requests
545// that satisfy the Rule. For a request to be blocked, it must come from the
546// IP address 192.0.2.44 and the User-Agent header in the request must contain
547// the value BadBot.
548//
549// To create and configure a Rule, perform the following steps:
550//
551// Create and update the predicates that you want to include in the Rule. For
552// more information, see CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet.
553//
554// Use GetChangeToken to get the change token that you provide in the ChangeToken
555// parameter of a CreateRule request.
556//
557// Submit a CreateRule request.
558//
559// Use GetChangeToken to get the change token that you provide in the ChangeToken
560// parameter of an UpdateRule request.
561//
562// Submit an UpdateRule request to specify the predicates that you want to include
563// in the Rule.
564//
565// Create and update a WebACL that contains the Rule. For more information,
566// see CreateWebACL.
567//
568// For more information about how to use the AWS WAF API to allow or block HTTP
569// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
570//
571// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
572// with awserr.Error's Code and Message methods to get detailed information about
573// the error.
574//
575// See the AWS API reference guide for AWS WAF's
576// API operation CreateRule for usage and error information.
577//
578// Returned Error Codes:
579//   * ErrCodeStaleDataException "StaleDataException"
580//   The operation failed because you tried to create, update, or delete an object
581//   by using a change token that has already been used.
582//
583//   * ErrCodeInternalErrorException "InternalErrorException"
584//   The operation failed because of a system problem, even though the request
585//   was valid. Retry your request.
586//
587//   * ErrCodeDisallowedNameException "DisallowedNameException"
588//   The name specified is invalid.
589//
590//   * ErrCodeInvalidParameterException "InvalidParameterException"
591//   The operation failed because AWS WAF didn't recognize a parameter in the
592//   request. For example:
593//
594//      * You specified an invalid parameter name.
595//
596//      * You specified an invalid value.
597//
598//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
599//      using an action other than INSERT or DELETE.
600//
601//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
602//      BLOCK, or COUNT.
603//
604//      * You tried to create a RateBasedRule with a RateKey value other than
605//      IP.
606//
607//      * You tried to update a WebACL with a WafActionType other than ALLOW,
608//      BLOCK, or COUNT.
609//
610//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
611//      HEADER, QUERY_STRING, or URI.
612//
613//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
614//      for Data.
615//
616//      * Your request references an ARN that is malformed, or corresponds to
617//      a resource with which a web ACL cannot be associated.
618//
619//   * ErrCodeLimitsExceededException "LimitsExceededException"
620//   The operation exceeds a resource limit, for example, the maximum number of
621//   WebACL objects that you can create for an AWS account. For more information,
622//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
623//   in the AWS WAF Developer Guide.
624//
625// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateRule
626func (c *WAF) CreateRule(input *CreateRuleInput) (*CreateRuleOutput, error) {
627	req, out := c.CreateRuleRequest(input)
628	return out, req.Send()
629}
630
631// CreateRuleWithContext is the same as CreateRule with the addition of
632// the ability to pass a context and additional request options.
633//
634// See CreateRule for details on how to use this API operation.
635//
636// The context must be non-nil and will be used for request cancellation. If
637// the context is nil a panic will occur. In the future the SDK may create
638// sub-contexts for http.Requests. See https://golang.org/pkg/context/
639// for more information on using Contexts.
640func (c *WAF) CreateRuleWithContext(ctx aws.Context, input *CreateRuleInput, opts ...request.Option) (*CreateRuleOutput, error) {
641	req, out := c.CreateRuleRequest(input)
642	req.SetContext(ctx)
643	req.ApplyOptions(opts...)
644	return out, req.Send()
645}
646
647const opCreateSizeConstraintSet = "CreateSizeConstraintSet"
648
649// CreateSizeConstraintSetRequest generates a "aws/request.Request" representing the
650// client's request for the CreateSizeConstraintSet operation. The "output" return
651// value will be populated with the request's response once the request complets
652// successfuly.
653//
654// Use "Send" method on the returned Request to send the API call to the service.
655// the "output" return value is not valid until after Send returns without error.
656//
657// See CreateSizeConstraintSet for more information on using the CreateSizeConstraintSet
658// API call, and error handling.
659//
660// This method is useful when you want to inject custom logic or configuration
661// into the SDK's request lifecycle. Such as custom headers, or retry logic.
662//
663//
664//    // Example sending a request using the CreateSizeConstraintSetRequest method.
665//    req, resp := client.CreateSizeConstraintSetRequest(params)
666//
667//    err := req.Send()
668//    if err == nil { // resp is now filled
669//        fmt.Println(resp)
670//    }
671//
672// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateSizeConstraintSet
673func (c *WAF) CreateSizeConstraintSetRequest(input *CreateSizeConstraintSetInput) (req *request.Request, output *CreateSizeConstraintSetOutput) {
674	op := &request.Operation{
675		Name:       opCreateSizeConstraintSet,
676		HTTPMethod: "POST",
677		HTTPPath:   "/",
678	}
679
680	if input == nil {
681		input = &CreateSizeConstraintSetInput{}
682	}
683
684	output = &CreateSizeConstraintSetOutput{}
685	req = c.newRequest(op, input, output)
686	return
687}
688
689// CreateSizeConstraintSet API operation for AWS WAF.
690//
691// Creates a SizeConstraintSet. You then use UpdateSizeConstraintSet to identify
692// the part of a web request that you want AWS WAF to check for length, such
693// as the length of the User-Agent header or the length of the query string.
694// For example, you can create a SizeConstraintSet that matches any requests
695// that have a query string that is longer than 100 bytes. You can then configure
696// AWS WAF to reject those requests.
697//
698// To create and configure a SizeConstraintSet, perform the following steps:
699//
700// Use GetChangeToken to get the change token that you provide in the ChangeToken
701// parameter of a CreateSizeConstraintSet request.
702//
703// Submit a CreateSizeConstraintSet request.
704//
705// Use GetChangeToken to get the change token that you provide in the ChangeToken
706// parameter of an UpdateSizeConstraintSet request.
707//
708// Submit an UpdateSizeConstraintSet request to specify the part of the request
709// that you want AWS WAF to inspect (for example, the header or the URI) and
710// the value that you want AWS WAF to watch for.
711//
712// For more information about how to use the AWS WAF API to allow or block HTTP
713// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
714//
715// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
716// with awserr.Error's Code and Message methods to get detailed information about
717// the error.
718//
719// See the AWS API reference guide for AWS WAF's
720// API operation CreateSizeConstraintSet for usage and error information.
721//
722// Returned Error Codes:
723//   * ErrCodeStaleDataException "StaleDataException"
724//   The operation failed because you tried to create, update, or delete an object
725//   by using a change token that has already been used.
726//
727//   * ErrCodeInternalErrorException "InternalErrorException"
728//   The operation failed because of a system problem, even though the request
729//   was valid. Retry your request.
730//
731//   * ErrCodeInvalidAccountException "InvalidAccountException"
732//   The operation failed because you tried to create, update, or delete an object
733//   by using an invalid account identifier.
734//
735//   * ErrCodeDisallowedNameException "DisallowedNameException"
736//   The name specified is invalid.
737//
738//   * ErrCodeInvalidParameterException "InvalidParameterException"
739//   The operation failed because AWS WAF didn't recognize a parameter in the
740//   request. For example:
741//
742//      * You specified an invalid parameter name.
743//
744//      * You specified an invalid value.
745//
746//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
747//      using an action other than INSERT or DELETE.
748//
749//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
750//      BLOCK, or COUNT.
751//
752//      * You tried to create a RateBasedRule with a RateKey value other than
753//      IP.
754//
755//      * You tried to update a WebACL with a WafActionType other than ALLOW,
756//      BLOCK, or COUNT.
757//
758//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
759//      HEADER, QUERY_STRING, or URI.
760//
761//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
762//      for Data.
763//
764//      * Your request references an ARN that is malformed, or corresponds to
765//      a resource with which a web ACL cannot be associated.
766//
767//   * ErrCodeLimitsExceededException "LimitsExceededException"
768//   The operation exceeds a resource limit, for example, the maximum number of
769//   WebACL objects that you can create for an AWS account. For more information,
770//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
771//   in the AWS WAF Developer Guide.
772//
773// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateSizeConstraintSet
774func (c *WAF) CreateSizeConstraintSet(input *CreateSizeConstraintSetInput) (*CreateSizeConstraintSetOutput, error) {
775	req, out := c.CreateSizeConstraintSetRequest(input)
776	return out, req.Send()
777}
778
779// CreateSizeConstraintSetWithContext is the same as CreateSizeConstraintSet with the addition of
780// the ability to pass a context and additional request options.
781//
782// See CreateSizeConstraintSet for details on how to use this API operation.
783//
784// The context must be non-nil and will be used for request cancellation. If
785// the context is nil a panic will occur. In the future the SDK may create
786// sub-contexts for http.Requests. See https://golang.org/pkg/context/
787// for more information on using Contexts.
788func (c *WAF) CreateSizeConstraintSetWithContext(ctx aws.Context, input *CreateSizeConstraintSetInput, opts ...request.Option) (*CreateSizeConstraintSetOutput, error) {
789	req, out := c.CreateSizeConstraintSetRequest(input)
790	req.SetContext(ctx)
791	req.ApplyOptions(opts...)
792	return out, req.Send()
793}
794
795const opCreateSqlInjectionMatchSet = "CreateSqlInjectionMatchSet"
796
797// CreateSqlInjectionMatchSetRequest generates a "aws/request.Request" representing the
798// client's request for the CreateSqlInjectionMatchSet operation. The "output" return
799// value will be populated with the request's response once the request complets
800// successfuly.
801//
802// Use "Send" method on the returned Request to send the API call to the service.
803// the "output" return value is not valid until after Send returns without error.
804//
805// See CreateSqlInjectionMatchSet for more information on using the CreateSqlInjectionMatchSet
806// API call, and error handling.
807//
808// This method is useful when you want to inject custom logic or configuration
809// into the SDK's request lifecycle. Such as custom headers, or retry logic.
810//
811//
812//    // Example sending a request using the CreateSqlInjectionMatchSetRequest method.
813//    req, resp := client.CreateSqlInjectionMatchSetRequest(params)
814//
815//    err := req.Send()
816//    if err == nil { // resp is now filled
817//        fmt.Println(resp)
818//    }
819//
820// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateSqlInjectionMatchSet
821func (c *WAF) CreateSqlInjectionMatchSetRequest(input *CreateSqlInjectionMatchSetInput) (req *request.Request, output *CreateSqlInjectionMatchSetOutput) {
822	op := &request.Operation{
823		Name:       opCreateSqlInjectionMatchSet,
824		HTTPMethod: "POST",
825		HTTPPath:   "/",
826	}
827
828	if input == nil {
829		input = &CreateSqlInjectionMatchSetInput{}
830	}
831
832	output = &CreateSqlInjectionMatchSetOutput{}
833	req = c.newRequest(op, input, output)
834	return
835}
836
837// CreateSqlInjectionMatchSet API operation for AWS WAF.
838//
839// Creates a SqlInjectionMatchSet, which you use to allow, block, or count requests
840// that contain snippets of SQL code in a specified part of web requests. AWS
841// WAF searches for character sequences that are likely to be malicious strings.
842//
843// To create and configure a SqlInjectionMatchSet, perform the following steps:
844//
845// Use GetChangeToken to get the change token that you provide in the ChangeToken
846// parameter of a CreateSqlInjectionMatchSet request.
847//
848// Submit a CreateSqlInjectionMatchSet request.
849//
850// Use GetChangeToken to get the change token that you provide in the ChangeToken
851// parameter of an UpdateSqlInjectionMatchSet request.
852//
853// Submit an UpdateSqlInjectionMatchSet request to specify the parts of web
854// requests in which you want to allow, block, or count malicious SQL code.
855//
856// For more information about how to use the AWS WAF API to allow or block HTTP
857// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
858//
859// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
860// with awserr.Error's Code and Message methods to get detailed information about
861// the error.
862//
863// See the AWS API reference guide for AWS WAF's
864// API operation CreateSqlInjectionMatchSet for usage and error information.
865//
866// Returned Error Codes:
867//   * ErrCodeDisallowedNameException "DisallowedNameException"
868//   The name specified is invalid.
869//
870//   * ErrCodeInternalErrorException "InternalErrorException"
871//   The operation failed because of a system problem, even though the request
872//   was valid. Retry your request.
873//
874//   * ErrCodeInvalidAccountException "InvalidAccountException"
875//   The operation failed because you tried to create, update, or delete an object
876//   by using an invalid account identifier.
877//
878//   * ErrCodeInvalidParameterException "InvalidParameterException"
879//   The operation failed because AWS WAF didn't recognize a parameter in the
880//   request. For example:
881//
882//      * You specified an invalid parameter name.
883//
884//      * You specified an invalid value.
885//
886//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
887//      using an action other than INSERT or DELETE.
888//
889//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
890//      BLOCK, or COUNT.
891//
892//      * You tried to create a RateBasedRule with a RateKey value other than
893//      IP.
894//
895//      * You tried to update a WebACL with a WafActionType other than ALLOW,
896//      BLOCK, or COUNT.
897//
898//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
899//      HEADER, QUERY_STRING, or URI.
900//
901//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
902//      for Data.
903//
904//      * Your request references an ARN that is malformed, or corresponds to
905//      a resource with which a web ACL cannot be associated.
906//
907//   * ErrCodeStaleDataException "StaleDataException"
908//   The operation failed because you tried to create, update, or delete an object
909//   by using a change token that has already been used.
910//
911//   * ErrCodeLimitsExceededException "LimitsExceededException"
912//   The operation exceeds a resource limit, for example, the maximum number of
913//   WebACL objects that you can create for an AWS account. For more information,
914//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
915//   in the AWS WAF Developer Guide.
916//
917// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateSqlInjectionMatchSet
918func (c *WAF) CreateSqlInjectionMatchSet(input *CreateSqlInjectionMatchSetInput) (*CreateSqlInjectionMatchSetOutput, error) {
919	req, out := c.CreateSqlInjectionMatchSetRequest(input)
920	return out, req.Send()
921}
922
923// CreateSqlInjectionMatchSetWithContext is the same as CreateSqlInjectionMatchSet with the addition of
924// the ability to pass a context and additional request options.
925//
926// See CreateSqlInjectionMatchSet for details on how to use this API operation.
927//
928// The context must be non-nil and will be used for request cancellation. If
929// the context is nil a panic will occur. In the future the SDK may create
930// sub-contexts for http.Requests. See https://golang.org/pkg/context/
931// for more information on using Contexts.
932func (c *WAF) CreateSqlInjectionMatchSetWithContext(ctx aws.Context, input *CreateSqlInjectionMatchSetInput, opts ...request.Option) (*CreateSqlInjectionMatchSetOutput, error) {
933	req, out := c.CreateSqlInjectionMatchSetRequest(input)
934	req.SetContext(ctx)
935	req.ApplyOptions(opts...)
936	return out, req.Send()
937}
938
939const opCreateWebACL = "CreateWebACL"
940
941// CreateWebACLRequest generates a "aws/request.Request" representing the
942// client's request for the CreateWebACL operation. The "output" return
943// value will be populated with the request's response once the request complets
944// successfuly.
945//
946// Use "Send" method on the returned Request to send the API call to the service.
947// the "output" return value is not valid until after Send returns without error.
948//
949// See CreateWebACL for more information on using the CreateWebACL
950// API call, and error handling.
951//
952// This method is useful when you want to inject custom logic or configuration
953// into the SDK's request lifecycle. Such as custom headers, or retry logic.
954//
955//
956//    // Example sending a request using the CreateWebACLRequest method.
957//    req, resp := client.CreateWebACLRequest(params)
958//
959//    err := req.Send()
960//    if err == nil { // resp is now filled
961//        fmt.Println(resp)
962//    }
963//
964// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateWebACL
965func (c *WAF) CreateWebACLRequest(input *CreateWebACLInput) (req *request.Request, output *CreateWebACLOutput) {
966	op := &request.Operation{
967		Name:       opCreateWebACL,
968		HTTPMethod: "POST",
969		HTTPPath:   "/",
970	}
971
972	if input == nil {
973		input = &CreateWebACLInput{}
974	}
975
976	output = &CreateWebACLOutput{}
977	req = c.newRequest(op, input, output)
978	return
979}
980
981// CreateWebACL API operation for AWS WAF.
982//
983// Creates a WebACL, which contains the Rules that identify the CloudFront web
984// requests that you want to allow, block, or count. AWS WAF evaluates Rules
985// in order based on the value of Priority for each Rule.
986//
987// You also specify a default action, either ALLOW or BLOCK. If a web request
988// doesn't match any of the Rules in a WebACL, AWS WAF responds to the request
989// with the default action.
990//
991// To create and configure a WebACL, perform the following steps:
992//
993// Create and update the ByteMatchSet objects and other predicates that you
994// want to include in Rules. For more information, see CreateByteMatchSet, UpdateByteMatchSet,
995// CreateIPSet, UpdateIPSet, CreateSqlInjectionMatchSet, and UpdateSqlInjectionMatchSet.
996//
997// Create and update the Rules that you want to include in the WebACL. For more
998// information, see CreateRule and UpdateRule.
999//
1000// Use GetChangeToken to get the change token that you provide in the ChangeToken
1001// parameter of a CreateWebACL request.
1002//
1003// Submit a CreateWebACL request.
1004//
1005// Use GetChangeToken to get the change token that you provide in the ChangeToken
1006// parameter of an UpdateWebACL request.
1007//
1008// Submit an UpdateWebACL request to specify the Rules that you want to include
1009// in the WebACL, to specify the default action, and to associate the WebACL
1010// with a CloudFront distribution.
1011//
1012// For more information about how to use the AWS WAF API, see the AWS WAF Developer
1013// Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
1014//
1015// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1016// with awserr.Error's Code and Message methods to get detailed information about
1017// the error.
1018//
1019// See the AWS API reference guide for AWS WAF's
1020// API operation CreateWebACL for usage and error information.
1021//
1022// Returned Error Codes:
1023//   * ErrCodeStaleDataException "StaleDataException"
1024//   The operation failed because you tried to create, update, or delete an object
1025//   by using a change token that has already been used.
1026//
1027//   * ErrCodeInternalErrorException "InternalErrorException"
1028//   The operation failed because of a system problem, even though the request
1029//   was valid. Retry your request.
1030//
1031//   * ErrCodeInvalidAccountException "InvalidAccountException"
1032//   The operation failed because you tried to create, update, or delete an object
1033//   by using an invalid account identifier.
1034//
1035//   * ErrCodeDisallowedNameException "DisallowedNameException"
1036//   The name specified is invalid.
1037//
1038//   * ErrCodeInvalidParameterException "InvalidParameterException"
1039//   The operation failed because AWS WAF didn't recognize a parameter in the
1040//   request. For example:
1041//
1042//      * You specified an invalid parameter name.
1043//
1044//      * You specified an invalid value.
1045//
1046//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
1047//      using an action other than INSERT or DELETE.
1048//
1049//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
1050//      BLOCK, or COUNT.
1051//
1052//      * You tried to create a RateBasedRule with a RateKey value other than
1053//      IP.
1054//
1055//      * You tried to update a WebACL with a WafActionType other than ALLOW,
1056//      BLOCK, or COUNT.
1057//
1058//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
1059//      HEADER, QUERY_STRING, or URI.
1060//
1061//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
1062//      for Data.
1063//
1064//      * Your request references an ARN that is malformed, or corresponds to
1065//      a resource with which a web ACL cannot be associated.
1066//
1067//   * ErrCodeLimitsExceededException "LimitsExceededException"
1068//   The operation exceeds a resource limit, for example, the maximum number of
1069//   WebACL objects that you can create for an AWS account. For more information,
1070//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
1071//   in the AWS WAF Developer Guide.
1072//
1073// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateWebACL
1074func (c *WAF) CreateWebACL(input *CreateWebACLInput) (*CreateWebACLOutput, error) {
1075	req, out := c.CreateWebACLRequest(input)
1076	return out, req.Send()
1077}
1078
1079// CreateWebACLWithContext is the same as CreateWebACL with the addition of
1080// the ability to pass a context and additional request options.
1081//
1082// See CreateWebACL for details on how to use this API operation.
1083//
1084// The context must be non-nil and will be used for request cancellation. If
1085// the context is nil a panic will occur. In the future the SDK may create
1086// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1087// for more information on using Contexts.
1088func (c *WAF) CreateWebACLWithContext(ctx aws.Context, input *CreateWebACLInput, opts ...request.Option) (*CreateWebACLOutput, error) {
1089	req, out := c.CreateWebACLRequest(input)
1090	req.SetContext(ctx)
1091	req.ApplyOptions(opts...)
1092	return out, req.Send()
1093}
1094
1095const opCreateXssMatchSet = "CreateXssMatchSet"
1096
1097// CreateXssMatchSetRequest generates a "aws/request.Request" representing the
1098// client's request for the CreateXssMatchSet operation. The "output" return
1099// value will be populated with the request's response once the request complets
1100// successfuly.
1101//
1102// Use "Send" method on the returned Request to send the API call to the service.
1103// the "output" return value is not valid until after Send returns without error.
1104//
1105// See CreateXssMatchSet for more information on using the CreateXssMatchSet
1106// API call, and error handling.
1107//
1108// This method is useful when you want to inject custom logic or configuration
1109// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1110//
1111//
1112//    // Example sending a request using the CreateXssMatchSetRequest method.
1113//    req, resp := client.CreateXssMatchSetRequest(params)
1114//
1115//    err := req.Send()
1116//    if err == nil { // resp is now filled
1117//        fmt.Println(resp)
1118//    }
1119//
1120// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateXssMatchSet
1121func (c *WAF) CreateXssMatchSetRequest(input *CreateXssMatchSetInput) (req *request.Request, output *CreateXssMatchSetOutput) {
1122	op := &request.Operation{
1123		Name:       opCreateXssMatchSet,
1124		HTTPMethod: "POST",
1125		HTTPPath:   "/",
1126	}
1127
1128	if input == nil {
1129		input = &CreateXssMatchSetInput{}
1130	}
1131
1132	output = &CreateXssMatchSetOutput{}
1133	req = c.newRequest(op, input, output)
1134	return
1135}
1136
1137// CreateXssMatchSet API operation for AWS WAF.
1138//
1139// Creates an XssMatchSet, which you use to allow, block, or count requests
1140// that contain cross-site scripting attacks in the specified part of web requests.
1141// AWS WAF searches for character sequences that are likely to be malicious
1142// strings.
1143//
1144// To create and configure an XssMatchSet, perform the following steps:
1145//
1146// Use GetChangeToken to get the change token that you provide in the ChangeToken
1147// parameter of a CreateXssMatchSet request.
1148//
1149// Submit a CreateXssMatchSet request.
1150//
1151// Use GetChangeToken to get the change token that you provide in the ChangeToken
1152// parameter of an UpdateXssMatchSet request.
1153//
1154// Submit an UpdateXssMatchSet request to specify the parts of web requests
1155// in which you want to allow, block, or count cross-site scripting attacks.
1156//
1157// For more information about how to use the AWS WAF API to allow or block HTTP
1158// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
1159//
1160// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1161// with awserr.Error's Code and Message methods to get detailed information about
1162// the error.
1163//
1164// See the AWS API reference guide for AWS WAF's
1165// API operation CreateXssMatchSet for usage and error information.
1166//
1167// Returned Error Codes:
1168//   * ErrCodeDisallowedNameException "DisallowedNameException"
1169//   The name specified is invalid.
1170//
1171//   * ErrCodeInternalErrorException "InternalErrorException"
1172//   The operation failed because of a system problem, even though the request
1173//   was valid. Retry your request.
1174//
1175//   * ErrCodeInvalidAccountException "InvalidAccountException"
1176//   The operation failed because you tried to create, update, or delete an object
1177//   by using an invalid account identifier.
1178//
1179//   * ErrCodeInvalidParameterException "InvalidParameterException"
1180//   The operation failed because AWS WAF didn't recognize a parameter in the
1181//   request. For example:
1182//
1183//      * You specified an invalid parameter name.
1184//
1185//      * You specified an invalid value.
1186//
1187//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
1188//      using an action other than INSERT or DELETE.
1189//
1190//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
1191//      BLOCK, or COUNT.
1192//
1193//      * You tried to create a RateBasedRule with a RateKey value other than
1194//      IP.
1195//
1196//      * You tried to update a WebACL with a WafActionType other than ALLOW,
1197//      BLOCK, or COUNT.
1198//
1199//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
1200//      HEADER, QUERY_STRING, or URI.
1201//
1202//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
1203//      for Data.
1204//
1205//      * Your request references an ARN that is malformed, or corresponds to
1206//      a resource with which a web ACL cannot be associated.
1207//
1208//   * ErrCodeStaleDataException "StaleDataException"
1209//   The operation failed because you tried to create, update, or delete an object
1210//   by using a change token that has already been used.
1211//
1212//   * ErrCodeLimitsExceededException "LimitsExceededException"
1213//   The operation exceeds a resource limit, for example, the maximum number of
1214//   WebACL objects that you can create for an AWS account. For more information,
1215//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
1216//   in the AWS WAF Developer Guide.
1217//
1218// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateXssMatchSet
1219func (c *WAF) CreateXssMatchSet(input *CreateXssMatchSetInput) (*CreateXssMatchSetOutput, error) {
1220	req, out := c.CreateXssMatchSetRequest(input)
1221	return out, req.Send()
1222}
1223
1224// CreateXssMatchSetWithContext is the same as CreateXssMatchSet with the addition of
1225// the ability to pass a context and additional request options.
1226//
1227// See CreateXssMatchSet for details on how to use this API operation.
1228//
1229// The context must be non-nil and will be used for request cancellation. If
1230// the context is nil a panic will occur. In the future the SDK may create
1231// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1232// for more information on using Contexts.
1233func (c *WAF) CreateXssMatchSetWithContext(ctx aws.Context, input *CreateXssMatchSetInput, opts ...request.Option) (*CreateXssMatchSetOutput, error) {
1234	req, out := c.CreateXssMatchSetRequest(input)
1235	req.SetContext(ctx)
1236	req.ApplyOptions(opts...)
1237	return out, req.Send()
1238}
1239
1240const opDeleteByteMatchSet = "DeleteByteMatchSet"
1241
1242// DeleteByteMatchSetRequest generates a "aws/request.Request" representing the
1243// client's request for the DeleteByteMatchSet operation. The "output" return
1244// value will be populated with the request's response once the request complets
1245// successfuly.
1246//
1247// Use "Send" method on the returned Request to send the API call to the service.
1248// the "output" return value is not valid until after Send returns without error.
1249//
1250// See DeleteByteMatchSet for more information on using the DeleteByteMatchSet
1251// API call, and error handling.
1252//
1253// This method is useful when you want to inject custom logic or configuration
1254// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1255//
1256//
1257//    // Example sending a request using the DeleteByteMatchSetRequest method.
1258//    req, resp := client.DeleteByteMatchSetRequest(params)
1259//
1260//    err := req.Send()
1261//    if err == nil { // resp is now filled
1262//        fmt.Println(resp)
1263//    }
1264//
1265// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteByteMatchSet
1266func (c *WAF) DeleteByteMatchSetRequest(input *DeleteByteMatchSetInput) (req *request.Request, output *DeleteByteMatchSetOutput) {
1267	op := &request.Operation{
1268		Name:       opDeleteByteMatchSet,
1269		HTTPMethod: "POST",
1270		HTTPPath:   "/",
1271	}
1272
1273	if input == nil {
1274		input = &DeleteByteMatchSetInput{}
1275	}
1276
1277	output = &DeleteByteMatchSetOutput{}
1278	req = c.newRequest(op, input, output)
1279	return
1280}
1281
1282// DeleteByteMatchSet API operation for AWS WAF.
1283//
1284// Permanently deletes a ByteMatchSet. You can't delete a ByteMatchSet if it's
1285// still used in any Rules or if it still includes any ByteMatchTuple objects
1286// (any filters).
1287//
1288// If you just want to remove a ByteMatchSet from a Rule, use UpdateRule.
1289//
1290// To permanently delete a ByteMatchSet, perform the following steps:
1291//
1292// Update the ByteMatchSet to remove filters, if any. For more information,
1293// see UpdateByteMatchSet.
1294//
1295// Use GetChangeToken to get the change token that you provide in the ChangeToken
1296// parameter of a DeleteByteMatchSet request.
1297//
1298// Submit a DeleteByteMatchSet request.
1299//
1300// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1301// with awserr.Error's Code and Message methods to get detailed information about
1302// the error.
1303//
1304// See the AWS API reference guide for AWS WAF's
1305// API operation DeleteByteMatchSet for usage and error information.
1306//
1307// Returned Error Codes:
1308//   * ErrCodeInternalErrorException "InternalErrorException"
1309//   The operation failed because of a system problem, even though the request
1310//   was valid. Retry your request.
1311//
1312//   * ErrCodeInvalidAccountException "InvalidAccountException"
1313//   The operation failed because you tried to create, update, or delete an object
1314//   by using an invalid account identifier.
1315//
1316//   * ErrCodeNonexistentItemException "NonexistentItemException"
1317//   The operation failed because the referenced object doesn't exist.
1318//
1319//   * ErrCodeReferencedItemException "ReferencedItemException"
1320//   The operation failed because you tried to delete an object that is still
1321//   in use. For example:
1322//
1323//      * You tried to delete a ByteMatchSet that is still referenced by a Rule.
1324//
1325//      * You tried to delete a Rule that is still referenced by a WebACL.
1326//
1327//   * ErrCodeStaleDataException "StaleDataException"
1328//   The operation failed because you tried to create, update, or delete an object
1329//   by using a change token that has already been used.
1330//
1331//   * ErrCodeNonEmptyEntityException "NonEmptyEntityException"
1332//   The operation failed because you tried to delete an object that isn't empty.
1333//   For example:
1334//
1335//      * You tried to delete a WebACL that still contains one or more Rule objects.
1336//
1337//      * You tried to delete a Rule that still contains one or more ByteMatchSet
1338//      objects or other predicates.
1339//
1340//      * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple
1341//      objects.
1342//
1343//      * You tried to delete an IPSet that references one or more IP addresses.
1344//
1345// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteByteMatchSet
1346func (c *WAF) DeleteByteMatchSet(input *DeleteByteMatchSetInput) (*DeleteByteMatchSetOutput, error) {
1347	req, out := c.DeleteByteMatchSetRequest(input)
1348	return out, req.Send()
1349}
1350
1351// DeleteByteMatchSetWithContext is the same as DeleteByteMatchSet with the addition of
1352// the ability to pass a context and additional request options.
1353//
1354// See DeleteByteMatchSet for details on how to use this API operation.
1355//
1356// The context must be non-nil and will be used for request cancellation. If
1357// the context is nil a panic will occur. In the future the SDK may create
1358// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1359// for more information on using Contexts.
1360func (c *WAF) DeleteByteMatchSetWithContext(ctx aws.Context, input *DeleteByteMatchSetInput, opts ...request.Option) (*DeleteByteMatchSetOutput, error) {
1361	req, out := c.DeleteByteMatchSetRequest(input)
1362	req.SetContext(ctx)
1363	req.ApplyOptions(opts...)
1364	return out, req.Send()
1365}
1366
1367const opDeleteIPSet = "DeleteIPSet"
1368
1369// DeleteIPSetRequest generates a "aws/request.Request" representing the
1370// client's request for the DeleteIPSet operation. The "output" return
1371// value will be populated with the request's response once the request complets
1372// successfuly.
1373//
1374// Use "Send" method on the returned Request to send the API call to the service.
1375// the "output" return value is not valid until after Send returns without error.
1376//
1377// See DeleteIPSet for more information on using the DeleteIPSet
1378// API call, and error handling.
1379//
1380// This method is useful when you want to inject custom logic or configuration
1381// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1382//
1383//
1384//    // Example sending a request using the DeleteIPSetRequest method.
1385//    req, resp := client.DeleteIPSetRequest(params)
1386//
1387//    err := req.Send()
1388//    if err == nil { // resp is now filled
1389//        fmt.Println(resp)
1390//    }
1391//
1392// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteIPSet
1393func (c *WAF) DeleteIPSetRequest(input *DeleteIPSetInput) (req *request.Request, output *DeleteIPSetOutput) {
1394	op := &request.Operation{
1395		Name:       opDeleteIPSet,
1396		HTTPMethod: "POST",
1397		HTTPPath:   "/",
1398	}
1399
1400	if input == nil {
1401		input = &DeleteIPSetInput{}
1402	}
1403
1404	output = &DeleteIPSetOutput{}
1405	req = c.newRequest(op, input, output)
1406	return
1407}
1408
1409// DeleteIPSet API operation for AWS WAF.
1410//
1411// Permanently deletes an IPSet. You can't delete an IPSet if it's still used
1412// in any Rules or if it still includes any IP addresses.
1413//
1414// If you just want to remove an IPSet from a Rule, use UpdateRule.
1415//
1416// To permanently delete an IPSet from AWS WAF, perform the following steps:
1417//
1418// Update the IPSet to remove IP address ranges, if any. For more information,
1419// see UpdateIPSet.
1420//
1421// Use GetChangeToken to get the change token that you provide in the ChangeToken
1422// parameter of a DeleteIPSet request.
1423//
1424// Submit a DeleteIPSet request.
1425//
1426// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1427// with awserr.Error's Code and Message methods to get detailed information about
1428// the error.
1429//
1430// See the AWS API reference guide for AWS WAF's
1431// API operation DeleteIPSet for usage and error information.
1432//
1433// Returned Error Codes:
1434//   * ErrCodeStaleDataException "StaleDataException"
1435//   The operation failed because you tried to create, update, or delete an object
1436//   by using a change token that has already been used.
1437//
1438//   * ErrCodeInternalErrorException "InternalErrorException"
1439//   The operation failed because of a system problem, even though the request
1440//   was valid. Retry your request.
1441//
1442//   * ErrCodeInvalidAccountException "InvalidAccountException"
1443//   The operation failed because you tried to create, update, or delete an object
1444//   by using an invalid account identifier.
1445//
1446//   * ErrCodeNonexistentItemException "NonexistentItemException"
1447//   The operation failed because the referenced object doesn't exist.
1448//
1449//   * ErrCodeReferencedItemException "ReferencedItemException"
1450//   The operation failed because you tried to delete an object that is still
1451//   in use. For example:
1452//
1453//      * You tried to delete a ByteMatchSet that is still referenced by a Rule.
1454//
1455//      * You tried to delete a Rule that is still referenced by a WebACL.
1456//
1457//   * ErrCodeNonEmptyEntityException "NonEmptyEntityException"
1458//   The operation failed because you tried to delete an object that isn't empty.
1459//   For example:
1460//
1461//      * You tried to delete a WebACL that still contains one or more Rule objects.
1462//
1463//      * You tried to delete a Rule that still contains one or more ByteMatchSet
1464//      objects or other predicates.
1465//
1466//      * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple
1467//      objects.
1468//
1469//      * You tried to delete an IPSet that references one or more IP addresses.
1470//
1471// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteIPSet
1472func (c *WAF) DeleteIPSet(input *DeleteIPSetInput) (*DeleteIPSetOutput, error) {
1473	req, out := c.DeleteIPSetRequest(input)
1474	return out, req.Send()
1475}
1476
1477// DeleteIPSetWithContext is the same as DeleteIPSet with the addition of
1478// the ability to pass a context and additional request options.
1479//
1480// See DeleteIPSet for details on how to use this API operation.
1481//
1482// The context must be non-nil and will be used for request cancellation. If
1483// the context is nil a panic will occur. In the future the SDK may create
1484// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1485// for more information on using Contexts.
1486func (c *WAF) DeleteIPSetWithContext(ctx aws.Context, input *DeleteIPSetInput, opts ...request.Option) (*DeleteIPSetOutput, error) {
1487	req, out := c.DeleteIPSetRequest(input)
1488	req.SetContext(ctx)
1489	req.ApplyOptions(opts...)
1490	return out, req.Send()
1491}
1492
1493const opDeleteRateBasedRule = "DeleteRateBasedRule"
1494
1495// DeleteRateBasedRuleRequest generates a "aws/request.Request" representing the
1496// client's request for the DeleteRateBasedRule operation. The "output" return
1497// value will be populated with the request's response once the request complets
1498// successfuly.
1499//
1500// Use "Send" method on the returned Request to send the API call to the service.
1501// the "output" return value is not valid until after Send returns without error.
1502//
1503// See DeleteRateBasedRule for more information on using the DeleteRateBasedRule
1504// API call, and error handling.
1505//
1506// This method is useful when you want to inject custom logic or configuration
1507// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1508//
1509//
1510//    // Example sending a request using the DeleteRateBasedRuleRequest method.
1511//    req, resp := client.DeleteRateBasedRuleRequest(params)
1512//
1513//    err := req.Send()
1514//    if err == nil { // resp is now filled
1515//        fmt.Println(resp)
1516//    }
1517//
1518// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteRateBasedRule
1519func (c *WAF) DeleteRateBasedRuleRequest(input *DeleteRateBasedRuleInput) (req *request.Request, output *DeleteRateBasedRuleOutput) {
1520	op := &request.Operation{
1521		Name:       opDeleteRateBasedRule,
1522		HTTPMethod: "POST",
1523		HTTPPath:   "/",
1524	}
1525
1526	if input == nil {
1527		input = &DeleteRateBasedRuleInput{}
1528	}
1529
1530	output = &DeleteRateBasedRuleOutput{}
1531	req = c.newRequest(op, input, output)
1532	return
1533}
1534
1535// DeleteRateBasedRule API operation for AWS WAF.
1536//
1537// Permanently deletes a RateBasedRule. You can't delete a rule if it's still
1538// used in any WebACL objects or if it still includes any predicates, such as
1539// ByteMatchSet objects.
1540//
1541// If you just want to remove a rule from a WebACL, use UpdateWebACL.
1542//
1543// To permanently delete a RateBasedRule from AWS WAF, perform the following
1544// steps:
1545//
1546// Update the RateBasedRule to remove predicates, if any. For more information,
1547// see UpdateRateBasedRule.
1548//
1549// Use GetChangeToken to get the change token that you provide in the ChangeToken
1550// parameter of a DeleteRateBasedRule request.
1551//
1552// Submit a DeleteRateBasedRule request.
1553//
1554// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1555// with awserr.Error's Code and Message methods to get detailed information about
1556// the error.
1557//
1558// See the AWS API reference guide for AWS WAF's
1559// API operation DeleteRateBasedRule for usage and error information.
1560//
1561// Returned Error Codes:
1562//   * ErrCodeStaleDataException "StaleDataException"
1563//   The operation failed because you tried to create, update, or delete an object
1564//   by using a change token that has already been used.
1565//
1566//   * ErrCodeInternalErrorException "InternalErrorException"
1567//   The operation failed because of a system problem, even though the request
1568//   was valid. Retry your request.
1569//
1570//   * ErrCodeInvalidAccountException "InvalidAccountException"
1571//   The operation failed because you tried to create, update, or delete an object
1572//   by using an invalid account identifier.
1573//
1574//   * ErrCodeNonexistentItemException "NonexistentItemException"
1575//   The operation failed because the referenced object doesn't exist.
1576//
1577//   * ErrCodeReferencedItemException "ReferencedItemException"
1578//   The operation failed because you tried to delete an object that is still
1579//   in use. For example:
1580//
1581//      * You tried to delete a ByteMatchSet that is still referenced by a Rule.
1582//
1583//      * You tried to delete a Rule that is still referenced by a WebACL.
1584//
1585//   * ErrCodeNonEmptyEntityException "NonEmptyEntityException"
1586//   The operation failed because you tried to delete an object that isn't empty.
1587//   For example:
1588//
1589//      * You tried to delete a WebACL that still contains one or more Rule objects.
1590//
1591//      * You tried to delete a Rule that still contains one or more ByteMatchSet
1592//      objects or other predicates.
1593//
1594//      * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple
1595//      objects.
1596//
1597//      * You tried to delete an IPSet that references one or more IP addresses.
1598//
1599// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteRateBasedRule
1600func (c *WAF) DeleteRateBasedRule(input *DeleteRateBasedRuleInput) (*DeleteRateBasedRuleOutput, error) {
1601	req, out := c.DeleteRateBasedRuleRequest(input)
1602	return out, req.Send()
1603}
1604
1605// DeleteRateBasedRuleWithContext is the same as DeleteRateBasedRule with the addition of
1606// the ability to pass a context and additional request options.
1607//
1608// See DeleteRateBasedRule for details on how to use this API operation.
1609//
1610// The context must be non-nil and will be used for request cancellation. If
1611// the context is nil a panic will occur. In the future the SDK may create
1612// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1613// for more information on using Contexts.
1614func (c *WAF) DeleteRateBasedRuleWithContext(ctx aws.Context, input *DeleteRateBasedRuleInput, opts ...request.Option) (*DeleteRateBasedRuleOutput, error) {
1615	req, out := c.DeleteRateBasedRuleRequest(input)
1616	req.SetContext(ctx)
1617	req.ApplyOptions(opts...)
1618	return out, req.Send()
1619}
1620
1621const opDeleteRule = "DeleteRule"
1622
1623// DeleteRuleRequest generates a "aws/request.Request" representing the
1624// client's request for the DeleteRule operation. The "output" return
1625// value will be populated with the request's response once the request complets
1626// successfuly.
1627//
1628// Use "Send" method on the returned Request to send the API call to the service.
1629// the "output" return value is not valid until after Send returns without error.
1630//
1631// See DeleteRule for more information on using the DeleteRule
1632// API call, and error handling.
1633//
1634// This method is useful when you want to inject custom logic or configuration
1635// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1636//
1637//
1638//    // Example sending a request using the DeleteRuleRequest method.
1639//    req, resp := client.DeleteRuleRequest(params)
1640//
1641//    err := req.Send()
1642//    if err == nil { // resp is now filled
1643//        fmt.Println(resp)
1644//    }
1645//
1646// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteRule
1647func (c *WAF) DeleteRuleRequest(input *DeleteRuleInput) (req *request.Request, output *DeleteRuleOutput) {
1648	op := &request.Operation{
1649		Name:       opDeleteRule,
1650		HTTPMethod: "POST",
1651		HTTPPath:   "/",
1652	}
1653
1654	if input == nil {
1655		input = &DeleteRuleInput{}
1656	}
1657
1658	output = &DeleteRuleOutput{}
1659	req = c.newRequest(op, input, output)
1660	return
1661}
1662
1663// DeleteRule API operation for AWS WAF.
1664//
1665// Permanently deletes a Rule. You can't delete a Rule if it's still used in
1666// any WebACL objects or if it still includes any predicates, such as ByteMatchSet
1667// objects.
1668//
1669// If you just want to remove a Rule from a WebACL, use UpdateWebACL.
1670//
1671// To permanently delete a Rule from AWS WAF, perform the following steps:
1672//
1673// Update the Rule to remove predicates, if any. For more information, see UpdateRule.
1674//
1675// Use GetChangeToken to get the change token that you provide in the ChangeToken
1676// parameter of a DeleteRule request.
1677//
1678// Submit a DeleteRule request.
1679//
1680// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1681// with awserr.Error's Code and Message methods to get detailed information about
1682// the error.
1683//
1684// See the AWS API reference guide for AWS WAF's
1685// API operation DeleteRule for usage and error information.
1686//
1687// Returned Error Codes:
1688//   * ErrCodeStaleDataException "StaleDataException"
1689//   The operation failed because you tried to create, update, or delete an object
1690//   by using a change token that has already been used.
1691//
1692//   * ErrCodeInternalErrorException "InternalErrorException"
1693//   The operation failed because of a system problem, even though the request
1694//   was valid. Retry your request.
1695//
1696//   * ErrCodeInvalidAccountException "InvalidAccountException"
1697//   The operation failed because you tried to create, update, or delete an object
1698//   by using an invalid account identifier.
1699//
1700//   * ErrCodeNonexistentItemException "NonexistentItemException"
1701//   The operation failed because the referenced object doesn't exist.
1702//
1703//   * ErrCodeReferencedItemException "ReferencedItemException"
1704//   The operation failed because you tried to delete an object that is still
1705//   in use. For example:
1706//
1707//      * You tried to delete a ByteMatchSet that is still referenced by a Rule.
1708//
1709//      * You tried to delete a Rule that is still referenced by a WebACL.
1710//
1711//   * ErrCodeNonEmptyEntityException "NonEmptyEntityException"
1712//   The operation failed because you tried to delete an object that isn't empty.
1713//   For example:
1714//
1715//      * You tried to delete a WebACL that still contains one or more Rule objects.
1716//
1717//      * You tried to delete a Rule that still contains one or more ByteMatchSet
1718//      objects or other predicates.
1719//
1720//      * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple
1721//      objects.
1722//
1723//      * You tried to delete an IPSet that references one or more IP addresses.
1724//
1725// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteRule
1726func (c *WAF) DeleteRule(input *DeleteRuleInput) (*DeleteRuleOutput, error) {
1727	req, out := c.DeleteRuleRequest(input)
1728	return out, req.Send()
1729}
1730
1731// DeleteRuleWithContext is the same as DeleteRule with the addition of
1732// the ability to pass a context and additional request options.
1733//
1734// See DeleteRule for details on how to use this API operation.
1735//
1736// The context must be non-nil and will be used for request cancellation. If
1737// the context is nil a panic will occur. In the future the SDK may create
1738// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1739// for more information on using Contexts.
1740func (c *WAF) DeleteRuleWithContext(ctx aws.Context, input *DeleteRuleInput, opts ...request.Option) (*DeleteRuleOutput, error) {
1741	req, out := c.DeleteRuleRequest(input)
1742	req.SetContext(ctx)
1743	req.ApplyOptions(opts...)
1744	return out, req.Send()
1745}
1746
1747const opDeleteSizeConstraintSet = "DeleteSizeConstraintSet"
1748
1749// DeleteSizeConstraintSetRequest generates a "aws/request.Request" representing the
1750// client's request for the DeleteSizeConstraintSet operation. The "output" return
1751// value will be populated with the request's response once the request complets
1752// successfuly.
1753//
1754// Use "Send" method on the returned Request to send the API call to the service.
1755// the "output" return value is not valid until after Send returns without error.
1756//
1757// See DeleteSizeConstraintSet for more information on using the DeleteSizeConstraintSet
1758// API call, and error handling.
1759//
1760// This method is useful when you want to inject custom logic or configuration
1761// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1762//
1763//
1764//    // Example sending a request using the DeleteSizeConstraintSetRequest method.
1765//    req, resp := client.DeleteSizeConstraintSetRequest(params)
1766//
1767//    err := req.Send()
1768//    if err == nil { // resp is now filled
1769//        fmt.Println(resp)
1770//    }
1771//
1772// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteSizeConstraintSet
1773func (c *WAF) DeleteSizeConstraintSetRequest(input *DeleteSizeConstraintSetInput) (req *request.Request, output *DeleteSizeConstraintSetOutput) {
1774	op := &request.Operation{
1775		Name:       opDeleteSizeConstraintSet,
1776		HTTPMethod: "POST",
1777		HTTPPath:   "/",
1778	}
1779
1780	if input == nil {
1781		input = &DeleteSizeConstraintSetInput{}
1782	}
1783
1784	output = &DeleteSizeConstraintSetOutput{}
1785	req = c.newRequest(op, input, output)
1786	return
1787}
1788
1789// DeleteSizeConstraintSet API operation for AWS WAF.
1790//
1791// Permanently deletes a SizeConstraintSet. You can't delete a SizeConstraintSet
1792// if it's still used in any Rules or if it still includes any SizeConstraint
1793// objects (any filters).
1794//
1795// If you just want to remove a SizeConstraintSet from a Rule, use UpdateRule.
1796//
1797// To permanently delete a SizeConstraintSet, perform the following steps:
1798//
1799// Update the SizeConstraintSet to remove filters, if any. For more information,
1800// see UpdateSizeConstraintSet.
1801//
1802// Use GetChangeToken to get the change token that you provide in the ChangeToken
1803// parameter of a DeleteSizeConstraintSet request.
1804//
1805// Submit a DeleteSizeConstraintSet request.
1806//
1807// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1808// with awserr.Error's Code and Message methods to get detailed information about
1809// the error.
1810//
1811// See the AWS API reference guide for AWS WAF's
1812// API operation DeleteSizeConstraintSet for usage and error information.
1813//
1814// Returned Error Codes:
1815//   * ErrCodeStaleDataException "StaleDataException"
1816//   The operation failed because you tried to create, update, or delete an object
1817//   by using a change token that has already been used.
1818//
1819//   * ErrCodeInternalErrorException "InternalErrorException"
1820//   The operation failed because of a system problem, even though the request
1821//   was valid. Retry your request.
1822//
1823//   * ErrCodeInvalidAccountException "InvalidAccountException"
1824//   The operation failed because you tried to create, update, or delete an object
1825//   by using an invalid account identifier.
1826//
1827//   * ErrCodeNonexistentItemException "NonexistentItemException"
1828//   The operation failed because the referenced object doesn't exist.
1829//
1830//   * ErrCodeReferencedItemException "ReferencedItemException"
1831//   The operation failed because you tried to delete an object that is still
1832//   in use. For example:
1833//
1834//      * You tried to delete a ByteMatchSet that is still referenced by a Rule.
1835//
1836//      * You tried to delete a Rule that is still referenced by a WebACL.
1837//
1838//   * ErrCodeNonEmptyEntityException "NonEmptyEntityException"
1839//   The operation failed because you tried to delete an object that isn't empty.
1840//   For example:
1841//
1842//      * You tried to delete a WebACL that still contains one or more Rule objects.
1843//
1844//      * You tried to delete a Rule that still contains one or more ByteMatchSet
1845//      objects or other predicates.
1846//
1847//      * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple
1848//      objects.
1849//
1850//      * You tried to delete an IPSet that references one or more IP addresses.
1851//
1852// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteSizeConstraintSet
1853func (c *WAF) DeleteSizeConstraintSet(input *DeleteSizeConstraintSetInput) (*DeleteSizeConstraintSetOutput, error) {
1854	req, out := c.DeleteSizeConstraintSetRequest(input)
1855	return out, req.Send()
1856}
1857
1858// DeleteSizeConstraintSetWithContext is the same as DeleteSizeConstraintSet with the addition of
1859// the ability to pass a context and additional request options.
1860//
1861// See DeleteSizeConstraintSet for details on how to use this API operation.
1862//
1863// The context must be non-nil and will be used for request cancellation. If
1864// the context is nil a panic will occur. In the future the SDK may create
1865// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1866// for more information on using Contexts.
1867func (c *WAF) DeleteSizeConstraintSetWithContext(ctx aws.Context, input *DeleteSizeConstraintSetInput, opts ...request.Option) (*DeleteSizeConstraintSetOutput, error) {
1868	req, out := c.DeleteSizeConstraintSetRequest(input)
1869	req.SetContext(ctx)
1870	req.ApplyOptions(opts...)
1871	return out, req.Send()
1872}
1873
1874const opDeleteSqlInjectionMatchSet = "DeleteSqlInjectionMatchSet"
1875
1876// DeleteSqlInjectionMatchSetRequest generates a "aws/request.Request" representing the
1877// client's request for the DeleteSqlInjectionMatchSet operation. The "output" return
1878// value will be populated with the request's response once the request complets
1879// successfuly.
1880//
1881// Use "Send" method on the returned Request to send the API call to the service.
1882// the "output" return value is not valid until after Send returns without error.
1883//
1884// See DeleteSqlInjectionMatchSet for more information on using the DeleteSqlInjectionMatchSet
1885// API call, and error handling.
1886//
1887// This method is useful when you want to inject custom logic or configuration
1888// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1889//
1890//
1891//    // Example sending a request using the DeleteSqlInjectionMatchSetRequest method.
1892//    req, resp := client.DeleteSqlInjectionMatchSetRequest(params)
1893//
1894//    err := req.Send()
1895//    if err == nil { // resp is now filled
1896//        fmt.Println(resp)
1897//    }
1898//
1899// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteSqlInjectionMatchSet
1900func (c *WAF) DeleteSqlInjectionMatchSetRequest(input *DeleteSqlInjectionMatchSetInput) (req *request.Request, output *DeleteSqlInjectionMatchSetOutput) {
1901	op := &request.Operation{
1902		Name:       opDeleteSqlInjectionMatchSet,
1903		HTTPMethod: "POST",
1904		HTTPPath:   "/",
1905	}
1906
1907	if input == nil {
1908		input = &DeleteSqlInjectionMatchSetInput{}
1909	}
1910
1911	output = &DeleteSqlInjectionMatchSetOutput{}
1912	req = c.newRequest(op, input, output)
1913	return
1914}
1915
1916// DeleteSqlInjectionMatchSet API operation for AWS WAF.
1917//
1918// Permanently deletes a SqlInjectionMatchSet. You can't delete a SqlInjectionMatchSet
1919// if it's still used in any Rules or if it still contains any SqlInjectionMatchTuple
1920// objects.
1921//
1922// If you just want to remove a SqlInjectionMatchSet from a Rule, use UpdateRule.
1923//
1924// To permanently delete a SqlInjectionMatchSet from AWS WAF, perform the following
1925// steps:
1926//
1927// Update the SqlInjectionMatchSet to remove filters, if any. For more information,
1928// see UpdateSqlInjectionMatchSet.
1929//
1930// Use GetChangeToken to get the change token that you provide in the ChangeToken
1931// parameter of a DeleteSqlInjectionMatchSet request.
1932//
1933// Submit a DeleteSqlInjectionMatchSet request.
1934//
1935// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1936// with awserr.Error's Code and Message methods to get detailed information about
1937// the error.
1938//
1939// See the AWS API reference guide for AWS WAF's
1940// API operation DeleteSqlInjectionMatchSet for usage and error information.
1941//
1942// Returned Error Codes:
1943//   * ErrCodeInternalErrorException "InternalErrorException"
1944//   The operation failed because of a system problem, even though the request
1945//   was valid. Retry your request.
1946//
1947//   * ErrCodeInvalidAccountException "InvalidAccountException"
1948//   The operation failed because you tried to create, update, or delete an object
1949//   by using an invalid account identifier.
1950//
1951//   * ErrCodeNonexistentItemException "NonexistentItemException"
1952//   The operation failed because the referenced object doesn't exist.
1953//
1954//   * ErrCodeReferencedItemException "ReferencedItemException"
1955//   The operation failed because you tried to delete an object that is still
1956//   in use. For example:
1957//
1958//      * You tried to delete a ByteMatchSet that is still referenced by a Rule.
1959//
1960//      * You tried to delete a Rule that is still referenced by a WebACL.
1961//
1962//   * ErrCodeStaleDataException "StaleDataException"
1963//   The operation failed because you tried to create, update, or delete an object
1964//   by using a change token that has already been used.
1965//
1966//   * ErrCodeNonEmptyEntityException "NonEmptyEntityException"
1967//   The operation failed because you tried to delete an object that isn't empty.
1968//   For example:
1969//
1970//      * You tried to delete a WebACL that still contains one or more Rule objects.
1971//
1972//      * You tried to delete a Rule that still contains one or more ByteMatchSet
1973//      objects or other predicates.
1974//
1975//      * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple
1976//      objects.
1977//
1978//      * You tried to delete an IPSet that references one or more IP addresses.
1979//
1980// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteSqlInjectionMatchSet
1981func (c *WAF) DeleteSqlInjectionMatchSet(input *DeleteSqlInjectionMatchSetInput) (*DeleteSqlInjectionMatchSetOutput, error) {
1982	req, out := c.DeleteSqlInjectionMatchSetRequest(input)
1983	return out, req.Send()
1984}
1985
1986// DeleteSqlInjectionMatchSetWithContext is the same as DeleteSqlInjectionMatchSet with the addition of
1987// the ability to pass a context and additional request options.
1988//
1989// See DeleteSqlInjectionMatchSet for details on how to use this API operation.
1990//
1991// The context must be non-nil and will be used for request cancellation. If
1992// the context is nil a panic will occur. In the future the SDK may create
1993// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1994// for more information on using Contexts.
1995func (c *WAF) DeleteSqlInjectionMatchSetWithContext(ctx aws.Context, input *DeleteSqlInjectionMatchSetInput, opts ...request.Option) (*DeleteSqlInjectionMatchSetOutput, error) {
1996	req, out := c.DeleteSqlInjectionMatchSetRequest(input)
1997	req.SetContext(ctx)
1998	req.ApplyOptions(opts...)
1999	return out, req.Send()
2000}
2001
2002const opDeleteWebACL = "DeleteWebACL"
2003
2004// DeleteWebACLRequest generates a "aws/request.Request" representing the
2005// client's request for the DeleteWebACL operation. The "output" return
2006// value will be populated with the request's response once the request complets
2007// successfuly.
2008//
2009// Use "Send" method on the returned Request to send the API call to the service.
2010// the "output" return value is not valid until after Send returns without error.
2011//
2012// See DeleteWebACL for more information on using the DeleteWebACL
2013// API call, and error handling.
2014//
2015// This method is useful when you want to inject custom logic or configuration
2016// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2017//
2018//
2019//    // Example sending a request using the DeleteWebACLRequest method.
2020//    req, resp := client.DeleteWebACLRequest(params)
2021//
2022//    err := req.Send()
2023//    if err == nil { // resp is now filled
2024//        fmt.Println(resp)
2025//    }
2026//
2027// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteWebACL
2028func (c *WAF) DeleteWebACLRequest(input *DeleteWebACLInput) (req *request.Request, output *DeleteWebACLOutput) {
2029	op := &request.Operation{
2030		Name:       opDeleteWebACL,
2031		HTTPMethod: "POST",
2032		HTTPPath:   "/",
2033	}
2034
2035	if input == nil {
2036		input = &DeleteWebACLInput{}
2037	}
2038
2039	output = &DeleteWebACLOutput{}
2040	req = c.newRequest(op, input, output)
2041	return
2042}
2043
2044// DeleteWebACL API operation for AWS WAF.
2045//
2046// Permanently deletes a WebACL. You can't delete a WebACL if it still contains
2047// any Rules.
2048//
2049// To delete a WebACL, perform the following steps:
2050//
2051// Update the WebACL to remove Rules, if any. For more information, see UpdateWebACL.
2052//
2053// Use GetChangeToken to get the change token that you provide in the ChangeToken
2054// parameter of a DeleteWebACL request.
2055//
2056// Submit a DeleteWebACL request.
2057//
2058// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2059// with awserr.Error's Code and Message methods to get detailed information about
2060// the error.
2061//
2062// See the AWS API reference guide for AWS WAF's
2063// API operation DeleteWebACL for usage and error information.
2064//
2065// Returned Error Codes:
2066//   * ErrCodeStaleDataException "StaleDataException"
2067//   The operation failed because you tried to create, update, or delete an object
2068//   by using a change token that has already been used.
2069//
2070//   * ErrCodeInternalErrorException "InternalErrorException"
2071//   The operation failed because of a system problem, even though the request
2072//   was valid. Retry your request.
2073//
2074//   * ErrCodeInvalidAccountException "InvalidAccountException"
2075//   The operation failed because you tried to create, update, or delete an object
2076//   by using an invalid account identifier.
2077//
2078//   * ErrCodeNonexistentItemException "NonexistentItemException"
2079//   The operation failed because the referenced object doesn't exist.
2080//
2081//   * ErrCodeReferencedItemException "ReferencedItemException"
2082//   The operation failed because you tried to delete an object that is still
2083//   in use. For example:
2084//
2085//      * You tried to delete a ByteMatchSet that is still referenced by a Rule.
2086//
2087//      * You tried to delete a Rule that is still referenced by a WebACL.
2088//
2089//   * ErrCodeNonEmptyEntityException "NonEmptyEntityException"
2090//   The operation failed because you tried to delete an object that isn't empty.
2091//   For example:
2092//
2093//      * You tried to delete a WebACL that still contains one or more Rule objects.
2094//
2095//      * You tried to delete a Rule that still contains one or more ByteMatchSet
2096//      objects or other predicates.
2097//
2098//      * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple
2099//      objects.
2100//
2101//      * You tried to delete an IPSet that references one or more IP addresses.
2102//
2103// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteWebACL
2104func (c *WAF) DeleteWebACL(input *DeleteWebACLInput) (*DeleteWebACLOutput, error) {
2105	req, out := c.DeleteWebACLRequest(input)
2106	return out, req.Send()
2107}
2108
2109// DeleteWebACLWithContext is the same as DeleteWebACL with the addition of
2110// the ability to pass a context and additional request options.
2111//
2112// See DeleteWebACL for details on how to use this API operation.
2113//
2114// The context must be non-nil and will be used for request cancellation. If
2115// the context is nil a panic will occur. In the future the SDK may create
2116// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2117// for more information on using Contexts.
2118func (c *WAF) DeleteWebACLWithContext(ctx aws.Context, input *DeleteWebACLInput, opts ...request.Option) (*DeleteWebACLOutput, error) {
2119	req, out := c.DeleteWebACLRequest(input)
2120	req.SetContext(ctx)
2121	req.ApplyOptions(opts...)
2122	return out, req.Send()
2123}
2124
2125const opDeleteXssMatchSet = "DeleteXssMatchSet"
2126
2127// DeleteXssMatchSetRequest generates a "aws/request.Request" representing the
2128// client's request for the DeleteXssMatchSet operation. The "output" return
2129// value will be populated with the request's response once the request complets
2130// successfuly.
2131//
2132// Use "Send" method on the returned Request to send the API call to the service.
2133// the "output" return value is not valid until after Send returns without error.
2134//
2135// See DeleteXssMatchSet for more information on using the DeleteXssMatchSet
2136// API call, and error handling.
2137//
2138// This method is useful when you want to inject custom logic or configuration
2139// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2140//
2141//
2142//    // Example sending a request using the DeleteXssMatchSetRequest method.
2143//    req, resp := client.DeleteXssMatchSetRequest(params)
2144//
2145//    err := req.Send()
2146//    if err == nil { // resp is now filled
2147//        fmt.Println(resp)
2148//    }
2149//
2150// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteXssMatchSet
2151func (c *WAF) DeleteXssMatchSetRequest(input *DeleteXssMatchSetInput) (req *request.Request, output *DeleteXssMatchSetOutput) {
2152	op := &request.Operation{
2153		Name:       opDeleteXssMatchSet,
2154		HTTPMethod: "POST",
2155		HTTPPath:   "/",
2156	}
2157
2158	if input == nil {
2159		input = &DeleteXssMatchSetInput{}
2160	}
2161
2162	output = &DeleteXssMatchSetOutput{}
2163	req = c.newRequest(op, input, output)
2164	return
2165}
2166
2167// DeleteXssMatchSet API operation for AWS WAF.
2168//
2169// Permanently deletes an XssMatchSet. You can't delete an XssMatchSet if it's
2170// still used in any Rules or if it still contains any XssMatchTuple objects.
2171//
2172// If you just want to remove an XssMatchSet from a Rule, use UpdateRule.
2173//
2174// To permanently delete an XssMatchSet from AWS WAF, perform the following
2175// steps:
2176//
2177// Update the XssMatchSet to remove filters, if any. For more information, see
2178// UpdateXssMatchSet.
2179//
2180// Use GetChangeToken to get the change token that you provide in the ChangeToken
2181// parameter of a DeleteXssMatchSet request.
2182//
2183// Submit a DeleteXssMatchSet request.
2184//
2185// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2186// with awserr.Error's Code and Message methods to get detailed information about
2187// the error.
2188//
2189// See the AWS API reference guide for AWS WAF's
2190// API operation DeleteXssMatchSet for usage and error information.
2191//
2192// Returned Error Codes:
2193//   * ErrCodeInternalErrorException "InternalErrorException"
2194//   The operation failed because of a system problem, even though the request
2195//   was valid. Retry your request.
2196//
2197//   * ErrCodeInvalidAccountException "InvalidAccountException"
2198//   The operation failed because you tried to create, update, or delete an object
2199//   by using an invalid account identifier.
2200//
2201//   * ErrCodeNonexistentItemException "NonexistentItemException"
2202//   The operation failed because the referenced object doesn't exist.
2203//
2204//   * ErrCodeReferencedItemException "ReferencedItemException"
2205//   The operation failed because you tried to delete an object that is still
2206//   in use. For example:
2207//
2208//      * You tried to delete a ByteMatchSet that is still referenced by a Rule.
2209//
2210//      * You tried to delete a Rule that is still referenced by a WebACL.
2211//
2212//   * ErrCodeStaleDataException "StaleDataException"
2213//   The operation failed because you tried to create, update, or delete an object
2214//   by using a change token that has already been used.
2215//
2216//   * ErrCodeNonEmptyEntityException "NonEmptyEntityException"
2217//   The operation failed because you tried to delete an object that isn't empty.
2218//   For example:
2219//
2220//      * You tried to delete a WebACL that still contains one or more Rule objects.
2221//
2222//      * You tried to delete a Rule that still contains one or more ByteMatchSet
2223//      objects or other predicates.
2224//
2225//      * You tried to delete a ByteMatchSet that contains one or more ByteMatchTuple
2226//      objects.
2227//
2228//      * You tried to delete an IPSet that references one or more IP addresses.
2229//
2230// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteXssMatchSet
2231func (c *WAF) DeleteXssMatchSet(input *DeleteXssMatchSetInput) (*DeleteXssMatchSetOutput, error) {
2232	req, out := c.DeleteXssMatchSetRequest(input)
2233	return out, req.Send()
2234}
2235
2236// DeleteXssMatchSetWithContext is the same as DeleteXssMatchSet with the addition of
2237// the ability to pass a context and additional request options.
2238//
2239// See DeleteXssMatchSet for details on how to use this API operation.
2240//
2241// The context must be non-nil and will be used for request cancellation. If
2242// the context is nil a panic will occur. In the future the SDK may create
2243// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2244// for more information on using Contexts.
2245func (c *WAF) DeleteXssMatchSetWithContext(ctx aws.Context, input *DeleteXssMatchSetInput, opts ...request.Option) (*DeleteXssMatchSetOutput, error) {
2246	req, out := c.DeleteXssMatchSetRequest(input)
2247	req.SetContext(ctx)
2248	req.ApplyOptions(opts...)
2249	return out, req.Send()
2250}
2251
2252const opGetByteMatchSet = "GetByteMatchSet"
2253
2254// GetByteMatchSetRequest generates a "aws/request.Request" representing the
2255// client's request for the GetByteMatchSet operation. The "output" return
2256// value will be populated with the request's response once the request complets
2257// successfuly.
2258//
2259// Use "Send" method on the returned Request to send the API call to the service.
2260// the "output" return value is not valid until after Send returns without error.
2261//
2262// See GetByteMatchSet for more information on using the GetByteMatchSet
2263// API call, and error handling.
2264//
2265// This method is useful when you want to inject custom logic or configuration
2266// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2267//
2268//
2269//    // Example sending a request using the GetByteMatchSetRequest method.
2270//    req, resp := client.GetByteMatchSetRequest(params)
2271//
2272//    err := req.Send()
2273//    if err == nil { // resp is now filled
2274//        fmt.Println(resp)
2275//    }
2276//
2277// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetByteMatchSet
2278func (c *WAF) GetByteMatchSetRequest(input *GetByteMatchSetInput) (req *request.Request, output *GetByteMatchSetOutput) {
2279	op := &request.Operation{
2280		Name:       opGetByteMatchSet,
2281		HTTPMethod: "POST",
2282		HTTPPath:   "/",
2283	}
2284
2285	if input == nil {
2286		input = &GetByteMatchSetInput{}
2287	}
2288
2289	output = &GetByteMatchSetOutput{}
2290	req = c.newRequest(op, input, output)
2291	return
2292}
2293
2294// GetByteMatchSet API operation for AWS WAF.
2295//
2296// Returns the ByteMatchSet specified by ByteMatchSetId.
2297//
2298// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2299// with awserr.Error's Code and Message methods to get detailed information about
2300// the error.
2301//
2302// See the AWS API reference guide for AWS WAF's
2303// API operation GetByteMatchSet for usage and error information.
2304//
2305// Returned Error Codes:
2306//   * ErrCodeInternalErrorException "InternalErrorException"
2307//   The operation failed because of a system problem, even though the request
2308//   was valid. Retry your request.
2309//
2310//   * ErrCodeInvalidAccountException "InvalidAccountException"
2311//   The operation failed because you tried to create, update, or delete an object
2312//   by using an invalid account identifier.
2313//
2314//   * ErrCodeNonexistentItemException "NonexistentItemException"
2315//   The operation failed because the referenced object doesn't exist.
2316//
2317// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetByteMatchSet
2318func (c *WAF) GetByteMatchSet(input *GetByteMatchSetInput) (*GetByteMatchSetOutput, error) {
2319	req, out := c.GetByteMatchSetRequest(input)
2320	return out, req.Send()
2321}
2322
2323// GetByteMatchSetWithContext is the same as GetByteMatchSet with the addition of
2324// the ability to pass a context and additional request options.
2325//
2326// See GetByteMatchSet for details on how to use this API operation.
2327//
2328// The context must be non-nil and will be used for request cancellation. If
2329// the context is nil a panic will occur. In the future the SDK may create
2330// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2331// for more information on using Contexts.
2332func (c *WAF) GetByteMatchSetWithContext(ctx aws.Context, input *GetByteMatchSetInput, opts ...request.Option) (*GetByteMatchSetOutput, error) {
2333	req, out := c.GetByteMatchSetRequest(input)
2334	req.SetContext(ctx)
2335	req.ApplyOptions(opts...)
2336	return out, req.Send()
2337}
2338
2339const opGetChangeToken = "GetChangeToken"
2340
2341// GetChangeTokenRequest generates a "aws/request.Request" representing the
2342// client's request for the GetChangeToken operation. The "output" return
2343// value will be populated with the request's response once the request complets
2344// successfuly.
2345//
2346// Use "Send" method on the returned Request to send the API call to the service.
2347// the "output" return value is not valid until after Send returns without error.
2348//
2349// See GetChangeToken for more information on using the GetChangeToken
2350// API call, and error handling.
2351//
2352// This method is useful when you want to inject custom logic or configuration
2353// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2354//
2355//
2356//    // Example sending a request using the GetChangeTokenRequest method.
2357//    req, resp := client.GetChangeTokenRequest(params)
2358//
2359//    err := req.Send()
2360//    if err == nil { // resp is now filled
2361//        fmt.Println(resp)
2362//    }
2363//
2364// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetChangeToken
2365func (c *WAF) GetChangeTokenRequest(input *GetChangeTokenInput) (req *request.Request, output *GetChangeTokenOutput) {
2366	op := &request.Operation{
2367		Name:       opGetChangeToken,
2368		HTTPMethod: "POST",
2369		HTTPPath:   "/",
2370	}
2371
2372	if input == nil {
2373		input = &GetChangeTokenInput{}
2374	}
2375
2376	output = &GetChangeTokenOutput{}
2377	req = c.newRequest(op, input, output)
2378	return
2379}
2380
2381// GetChangeToken API operation for AWS WAF.
2382//
2383// When you want to create, update, or delete AWS WAF objects, get a change
2384// token and include the change token in the create, update, or delete request.
2385// Change tokens ensure that your application doesn't submit conflicting requests
2386// to AWS WAF.
2387//
2388// Each create, update, or delete request must use a unique change token. If
2389// your application submits a GetChangeToken request and then submits a second
2390// GetChangeToken request before submitting a create, update, or delete request,
2391// the second GetChangeToken request returns the same value as the first GetChangeToken
2392// request.
2393//
2394// When you use a change token in a create, update, or delete request, the status
2395// of the change token changes to PENDING, which indicates that AWS WAF is propagating
2396// the change to all AWS WAF servers. Use GetChangeTokenStatus to determine
2397// the status of your change token.
2398//
2399// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2400// with awserr.Error's Code and Message methods to get detailed information about
2401// the error.
2402//
2403// See the AWS API reference guide for AWS WAF's
2404// API operation GetChangeToken for usage and error information.
2405//
2406// Returned Error Codes:
2407//   * ErrCodeInternalErrorException "InternalErrorException"
2408//   The operation failed because of a system problem, even though the request
2409//   was valid. Retry your request.
2410//
2411// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetChangeToken
2412func (c *WAF) GetChangeToken(input *GetChangeTokenInput) (*GetChangeTokenOutput, error) {
2413	req, out := c.GetChangeTokenRequest(input)
2414	return out, req.Send()
2415}
2416
2417// GetChangeTokenWithContext is the same as GetChangeToken with the addition of
2418// the ability to pass a context and additional request options.
2419//
2420// See GetChangeToken for details on how to use this API operation.
2421//
2422// The context must be non-nil and will be used for request cancellation. If
2423// the context is nil a panic will occur. In the future the SDK may create
2424// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2425// for more information on using Contexts.
2426func (c *WAF) GetChangeTokenWithContext(ctx aws.Context, input *GetChangeTokenInput, opts ...request.Option) (*GetChangeTokenOutput, error) {
2427	req, out := c.GetChangeTokenRequest(input)
2428	req.SetContext(ctx)
2429	req.ApplyOptions(opts...)
2430	return out, req.Send()
2431}
2432
2433const opGetChangeTokenStatus = "GetChangeTokenStatus"
2434
2435// GetChangeTokenStatusRequest generates a "aws/request.Request" representing the
2436// client's request for the GetChangeTokenStatus operation. The "output" return
2437// value will be populated with the request's response once the request complets
2438// successfuly.
2439//
2440// Use "Send" method on the returned Request to send the API call to the service.
2441// the "output" return value is not valid until after Send returns without error.
2442//
2443// See GetChangeTokenStatus for more information on using the GetChangeTokenStatus
2444// API call, and error handling.
2445//
2446// This method is useful when you want to inject custom logic or configuration
2447// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2448//
2449//
2450//    // Example sending a request using the GetChangeTokenStatusRequest method.
2451//    req, resp := client.GetChangeTokenStatusRequest(params)
2452//
2453//    err := req.Send()
2454//    if err == nil { // resp is now filled
2455//        fmt.Println(resp)
2456//    }
2457//
2458// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetChangeTokenStatus
2459func (c *WAF) GetChangeTokenStatusRequest(input *GetChangeTokenStatusInput) (req *request.Request, output *GetChangeTokenStatusOutput) {
2460	op := &request.Operation{
2461		Name:       opGetChangeTokenStatus,
2462		HTTPMethod: "POST",
2463		HTTPPath:   "/",
2464	}
2465
2466	if input == nil {
2467		input = &GetChangeTokenStatusInput{}
2468	}
2469
2470	output = &GetChangeTokenStatusOutput{}
2471	req = c.newRequest(op, input, output)
2472	return
2473}
2474
2475// GetChangeTokenStatus API operation for AWS WAF.
2476//
2477// Returns the status of a ChangeToken that you got by calling GetChangeToken.
2478// ChangeTokenStatus is one of the following values:
2479//
2480//    * PROVISIONED: You requested the change token by calling GetChangeToken,
2481//    but you haven't used it yet in a call to create, update, or delete an
2482//    AWS WAF object.
2483//
2484//    * PENDING: AWS WAF is propagating the create, update, or delete request
2485//    to all AWS WAF servers.
2486//
2487//    * IN_SYNC: Propagation is complete.
2488//
2489// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2490// with awserr.Error's Code and Message methods to get detailed information about
2491// the error.
2492//
2493// See the AWS API reference guide for AWS WAF's
2494// API operation GetChangeTokenStatus for usage and error information.
2495//
2496// Returned Error Codes:
2497//   * ErrCodeNonexistentItemException "NonexistentItemException"
2498//   The operation failed because the referenced object doesn't exist.
2499//
2500//   * ErrCodeInternalErrorException "InternalErrorException"
2501//   The operation failed because of a system problem, even though the request
2502//   was valid. Retry your request.
2503//
2504// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetChangeTokenStatus
2505func (c *WAF) GetChangeTokenStatus(input *GetChangeTokenStatusInput) (*GetChangeTokenStatusOutput, error) {
2506	req, out := c.GetChangeTokenStatusRequest(input)
2507	return out, req.Send()
2508}
2509
2510// GetChangeTokenStatusWithContext is the same as GetChangeTokenStatus with the addition of
2511// the ability to pass a context and additional request options.
2512//
2513// See GetChangeTokenStatus for details on how to use this API operation.
2514//
2515// The context must be non-nil and will be used for request cancellation. If
2516// the context is nil a panic will occur. In the future the SDK may create
2517// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2518// for more information on using Contexts.
2519func (c *WAF) GetChangeTokenStatusWithContext(ctx aws.Context, input *GetChangeTokenStatusInput, opts ...request.Option) (*GetChangeTokenStatusOutput, error) {
2520	req, out := c.GetChangeTokenStatusRequest(input)
2521	req.SetContext(ctx)
2522	req.ApplyOptions(opts...)
2523	return out, req.Send()
2524}
2525
2526const opGetIPSet = "GetIPSet"
2527
2528// GetIPSetRequest generates a "aws/request.Request" representing the
2529// client's request for the GetIPSet operation. The "output" return
2530// value will be populated with the request's response once the request complets
2531// successfuly.
2532//
2533// Use "Send" method on the returned Request to send the API call to the service.
2534// the "output" return value is not valid until after Send returns without error.
2535//
2536// See GetIPSet for more information on using the GetIPSet
2537// API call, and error handling.
2538//
2539// This method is useful when you want to inject custom logic or configuration
2540// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2541//
2542//
2543//    // Example sending a request using the GetIPSetRequest method.
2544//    req, resp := client.GetIPSetRequest(params)
2545//
2546//    err := req.Send()
2547//    if err == nil { // resp is now filled
2548//        fmt.Println(resp)
2549//    }
2550//
2551// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetIPSet
2552func (c *WAF) GetIPSetRequest(input *GetIPSetInput) (req *request.Request, output *GetIPSetOutput) {
2553	op := &request.Operation{
2554		Name:       opGetIPSet,
2555		HTTPMethod: "POST",
2556		HTTPPath:   "/",
2557	}
2558
2559	if input == nil {
2560		input = &GetIPSetInput{}
2561	}
2562
2563	output = &GetIPSetOutput{}
2564	req = c.newRequest(op, input, output)
2565	return
2566}
2567
2568// GetIPSet API operation for AWS WAF.
2569//
2570// Returns the IPSet that is specified by IPSetId.
2571//
2572// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2573// with awserr.Error's Code and Message methods to get detailed information about
2574// the error.
2575//
2576// See the AWS API reference guide for AWS WAF's
2577// API operation GetIPSet for usage and error information.
2578//
2579// Returned Error Codes:
2580//   * ErrCodeInternalErrorException "InternalErrorException"
2581//   The operation failed because of a system problem, even though the request
2582//   was valid. Retry your request.
2583//
2584//   * ErrCodeInvalidAccountException "InvalidAccountException"
2585//   The operation failed because you tried to create, update, or delete an object
2586//   by using an invalid account identifier.
2587//
2588//   * ErrCodeNonexistentItemException "NonexistentItemException"
2589//   The operation failed because the referenced object doesn't exist.
2590//
2591// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetIPSet
2592func (c *WAF) GetIPSet(input *GetIPSetInput) (*GetIPSetOutput, error) {
2593	req, out := c.GetIPSetRequest(input)
2594	return out, req.Send()
2595}
2596
2597// GetIPSetWithContext is the same as GetIPSet with the addition of
2598// the ability to pass a context and additional request options.
2599//
2600// See GetIPSet for details on how to use this API operation.
2601//
2602// The context must be non-nil and will be used for request cancellation. If
2603// the context is nil a panic will occur. In the future the SDK may create
2604// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2605// for more information on using Contexts.
2606func (c *WAF) GetIPSetWithContext(ctx aws.Context, input *GetIPSetInput, opts ...request.Option) (*GetIPSetOutput, error) {
2607	req, out := c.GetIPSetRequest(input)
2608	req.SetContext(ctx)
2609	req.ApplyOptions(opts...)
2610	return out, req.Send()
2611}
2612
2613const opGetRateBasedRule = "GetRateBasedRule"
2614
2615// GetRateBasedRuleRequest generates a "aws/request.Request" representing the
2616// client's request for the GetRateBasedRule operation. The "output" return
2617// value will be populated with the request's response once the request complets
2618// successfuly.
2619//
2620// Use "Send" method on the returned Request to send the API call to the service.
2621// the "output" return value is not valid until after Send returns without error.
2622//
2623// See GetRateBasedRule for more information on using the GetRateBasedRule
2624// API call, and error handling.
2625//
2626// This method is useful when you want to inject custom logic or configuration
2627// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2628//
2629//
2630//    // Example sending a request using the GetRateBasedRuleRequest method.
2631//    req, resp := client.GetRateBasedRuleRequest(params)
2632//
2633//    err := req.Send()
2634//    if err == nil { // resp is now filled
2635//        fmt.Println(resp)
2636//    }
2637//
2638// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRule
2639func (c *WAF) GetRateBasedRuleRequest(input *GetRateBasedRuleInput) (req *request.Request, output *GetRateBasedRuleOutput) {
2640	op := &request.Operation{
2641		Name:       opGetRateBasedRule,
2642		HTTPMethod: "POST",
2643		HTTPPath:   "/",
2644	}
2645
2646	if input == nil {
2647		input = &GetRateBasedRuleInput{}
2648	}
2649
2650	output = &GetRateBasedRuleOutput{}
2651	req = c.newRequest(op, input, output)
2652	return
2653}
2654
2655// GetRateBasedRule API operation for AWS WAF.
2656//
2657// Returns the RateBasedRule that is specified by the RuleId that you included
2658// in the GetRateBasedRule request.
2659//
2660// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2661// with awserr.Error's Code and Message methods to get detailed information about
2662// the error.
2663//
2664// See the AWS API reference guide for AWS WAF's
2665// API operation GetRateBasedRule for usage and error information.
2666//
2667// Returned Error Codes:
2668//   * ErrCodeInternalErrorException "InternalErrorException"
2669//   The operation failed because of a system problem, even though the request
2670//   was valid. Retry your request.
2671//
2672//   * ErrCodeInvalidAccountException "InvalidAccountException"
2673//   The operation failed because you tried to create, update, or delete an object
2674//   by using an invalid account identifier.
2675//
2676//   * ErrCodeNonexistentItemException "NonexistentItemException"
2677//   The operation failed because the referenced object doesn't exist.
2678//
2679// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRule
2680func (c *WAF) GetRateBasedRule(input *GetRateBasedRuleInput) (*GetRateBasedRuleOutput, error) {
2681	req, out := c.GetRateBasedRuleRequest(input)
2682	return out, req.Send()
2683}
2684
2685// GetRateBasedRuleWithContext is the same as GetRateBasedRule with the addition of
2686// the ability to pass a context and additional request options.
2687//
2688// See GetRateBasedRule for details on how to use this API operation.
2689//
2690// The context must be non-nil and will be used for request cancellation. If
2691// the context is nil a panic will occur. In the future the SDK may create
2692// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2693// for more information on using Contexts.
2694func (c *WAF) GetRateBasedRuleWithContext(ctx aws.Context, input *GetRateBasedRuleInput, opts ...request.Option) (*GetRateBasedRuleOutput, error) {
2695	req, out := c.GetRateBasedRuleRequest(input)
2696	req.SetContext(ctx)
2697	req.ApplyOptions(opts...)
2698	return out, req.Send()
2699}
2700
2701const opGetRateBasedRuleManagedKeys = "GetRateBasedRuleManagedKeys"
2702
2703// GetRateBasedRuleManagedKeysRequest generates a "aws/request.Request" representing the
2704// client's request for the GetRateBasedRuleManagedKeys operation. The "output" return
2705// value will be populated with the request's response once the request complets
2706// successfuly.
2707//
2708// Use "Send" method on the returned Request to send the API call to the service.
2709// the "output" return value is not valid until after Send returns without error.
2710//
2711// See GetRateBasedRuleManagedKeys for more information on using the GetRateBasedRuleManagedKeys
2712// API call, and error handling.
2713//
2714// This method is useful when you want to inject custom logic or configuration
2715// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2716//
2717//
2718//    // Example sending a request using the GetRateBasedRuleManagedKeysRequest method.
2719//    req, resp := client.GetRateBasedRuleManagedKeysRequest(params)
2720//
2721//    err := req.Send()
2722//    if err == nil { // resp is now filled
2723//        fmt.Println(resp)
2724//    }
2725//
2726// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRuleManagedKeys
2727func (c *WAF) GetRateBasedRuleManagedKeysRequest(input *GetRateBasedRuleManagedKeysInput) (req *request.Request, output *GetRateBasedRuleManagedKeysOutput) {
2728	op := &request.Operation{
2729		Name:       opGetRateBasedRuleManagedKeys,
2730		HTTPMethod: "POST",
2731		HTTPPath:   "/",
2732	}
2733
2734	if input == nil {
2735		input = &GetRateBasedRuleManagedKeysInput{}
2736	}
2737
2738	output = &GetRateBasedRuleManagedKeysOutput{}
2739	req = c.newRequest(op, input, output)
2740	return
2741}
2742
2743// GetRateBasedRuleManagedKeys API operation for AWS WAF.
2744//
2745// Returns an array of IP addresses currently being blocked by the RateBasedRule
2746// that is specified by the RuleId. The maximum number of managed keys that
2747// will be blocked is 10,000. If more than 10,000 addresses exceed the rate
2748// limit, the 10,000 addresses with the highest rates will be blocked.
2749//
2750// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2751// with awserr.Error's Code and Message methods to get detailed information about
2752// the error.
2753//
2754// See the AWS API reference guide for AWS WAF's
2755// API operation GetRateBasedRuleManagedKeys for usage and error information.
2756//
2757// Returned Error Codes:
2758//   * ErrCodeInternalErrorException "InternalErrorException"
2759//   The operation failed because of a system problem, even though the request
2760//   was valid. Retry your request.
2761//
2762//   * ErrCodeInvalidAccountException "InvalidAccountException"
2763//   The operation failed because you tried to create, update, or delete an object
2764//   by using an invalid account identifier.
2765//
2766//   * ErrCodeNonexistentItemException "NonexistentItemException"
2767//   The operation failed because the referenced object doesn't exist.
2768//
2769//   * ErrCodeInvalidParameterException "InvalidParameterException"
2770//   The operation failed because AWS WAF didn't recognize a parameter in the
2771//   request. For example:
2772//
2773//      * You specified an invalid parameter name.
2774//
2775//      * You specified an invalid value.
2776//
2777//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
2778//      using an action other than INSERT or DELETE.
2779//
2780//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
2781//      BLOCK, or COUNT.
2782//
2783//      * You tried to create a RateBasedRule with a RateKey value other than
2784//      IP.
2785//
2786//      * You tried to update a WebACL with a WafActionType other than ALLOW,
2787//      BLOCK, or COUNT.
2788//
2789//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
2790//      HEADER, QUERY_STRING, or URI.
2791//
2792//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
2793//      for Data.
2794//
2795//      * Your request references an ARN that is malformed, or corresponds to
2796//      a resource with which a web ACL cannot be associated.
2797//
2798// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRuleManagedKeys
2799func (c *WAF) GetRateBasedRuleManagedKeys(input *GetRateBasedRuleManagedKeysInput) (*GetRateBasedRuleManagedKeysOutput, error) {
2800	req, out := c.GetRateBasedRuleManagedKeysRequest(input)
2801	return out, req.Send()
2802}
2803
2804// GetRateBasedRuleManagedKeysWithContext is the same as GetRateBasedRuleManagedKeys with the addition of
2805// the ability to pass a context and additional request options.
2806//
2807// See GetRateBasedRuleManagedKeys for details on how to use this API operation.
2808//
2809// The context must be non-nil and will be used for request cancellation. If
2810// the context is nil a panic will occur. In the future the SDK may create
2811// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2812// for more information on using Contexts.
2813func (c *WAF) GetRateBasedRuleManagedKeysWithContext(ctx aws.Context, input *GetRateBasedRuleManagedKeysInput, opts ...request.Option) (*GetRateBasedRuleManagedKeysOutput, error) {
2814	req, out := c.GetRateBasedRuleManagedKeysRequest(input)
2815	req.SetContext(ctx)
2816	req.ApplyOptions(opts...)
2817	return out, req.Send()
2818}
2819
2820const opGetRule = "GetRule"
2821
2822// GetRuleRequest generates a "aws/request.Request" representing the
2823// client's request for the GetRule operation. The "output" return
2824// value will be populated with the request's response once the request complets
2825// successfuly.
2826//
2827// Use "Send" method on the returned Request to send the API call to the service.
2828// the "output" return value is not valid until after Send returns without error.
2829//
2830// See GetRule for more information on using the GetRule
2831// API call, and error handling.
2832//
2833// This method is useful when you want to inject custom logic or configuration
2834// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2835//
2836//
2837//    // Example sending a request using the GetRuleRequest method.
2838//    req, resp := client.GetRuleRequest(params)
2839//
2840//    err := req.Send()
2841//    if err == nil { // resp is now filled
2842//        fmt.Println(resp)
2843//    }
2844//
2845// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRule
2846func (c *WAF) GetRuleRequest(input *GetRuleInput) (req *request.Request, output *GetRuleOutput) {
2847	op := &request.Operation{
2848		Name:       opGetRule,
2849		HTTPMethod: "POST",
2850		HTTPPath:   "/",
2851	}
2852
2853	if input == nil {
2854		input = &GetRuleInput{}
2855	}
2856
2857	output = &GetRuleOutput{}
2858	req = c.newRequest(op, input, output)
2859	return
2860}
2861
2862// GetRule API operation for AWS WAF.
2863//
2864// Returns the Rule that is specified by the RuleId that you included in the
2865// GetRule request.
2866//
2867// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2868// with awserr.Error's Code and Message methods to get detailed information about
2869// the error.
2870//
2871// See the AWS API reference guide for AWS WAF's
2872// API operation GetRule for usage and error information.
2873//
2874// Returned Error Codes:
2875//   * ErrCodeInternalErrorException "InternalErrorException"
2876//   The operation failed because of a system problem, even though the request
2877//   was valid. Retry your request.
2878//
2879//   * ErrCodeInvalidAccountException "InvalidAccountException"
2880//   The operation failed because you tried to create, update, or delete an object
2881//   by using an invalid account identifier.
2882//
2883//   * ErrCodeNonexistentItemException "NonexistentItemException"
2884//   The operation failed because the referenced object doesn't exist.
2885//
2886// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRule
2887func (c *WAF) GetRule(input *GetRuleInput) (*GetRuleOutput, error) {
2888	req, out := c.GetRuleRequest(input)
2889	return out, req.Send()
2890}
2891
2892// GetRuleWithContext is the same as GetRule with the addition of
2893// the ability to pass a context and additional request options.
2894//
2895// See GetRule for details on how to use this API operation.
2896//
2897// The context must be non-nil and will be used for request cancellation. If
2898// the context is nil a panic will occur. In the future the SDK may create
2899// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2900// for more information on using Contexts.
2901func (c *WAF) GetRuleWithContext(ctx aws.Context, input *GetRuleInput, opts ...request.Option) (*GetRuleOutput, error) {
2902	req, out := c.GetRuleRequest(input)
2903	req.SetContext(ctx)
2904	req.ApplyOptions(opts...)
2905	return out, req.Send()
2906}
2907
2908const opGetSampledRequests = "GetSampledRequests"
2909
2910// GetSampledRequestsRequest generates a "aws/request.Request" representing the
2911// client's request for the GetSampledRequests operation. The "output" return
2912// value will be populated with the request's response once the request complets
2913// successfuly.
2914//
2915// Use "Send" method on the returned Request to send the API call to the service.
2916// the "output" return value is not valid until after Send returns without error.
2917//
2918// See GetSampledRequests for more information on using the GetSampledRequests
2919// API call, and error handling.
2920//
2921// This method is useful when you want to inject custom logic or configuration
2922// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2923//
2924//
2925//    // Example sending a request using the GetSampledRequestsRequest method.
2926//    req, resp := client.GetSampledRequestsRequest(params)
2927//
2928//    err := req.Send()
2929//    if err == nil { // resp is now filled
2930//        fmt.Println(resp)
2931//    }
2932//
2933// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetSampledRequests
2934func (c *WAF) GetSampledRequestsRequest(input *GetSampledRequestsInput) (req *request.Request, output *GetSampledRequestsOutput) {
2935	op := &request.Operation{
2936		Name:       opGetSampledRequests,
2937		HTTPMethod: "POST",
2938		HTTPPath:   "/",
2939	}
2940
2941	if input == nil {
2942		input = &GetSampledRequestsInput{}
2943	}
2944
2945	output = &GetSampledRequestsOutput{}
2946	req = c.newRequest(op, input, output)
2947	return
2948}
2949
2950// GetSampledRequests API operation for AWS WAF.
2951//
2952// Gets detailed information about a specified number of requests--a sample--that
2953// AWS WAF randomly selects from among the first 5,000 requests that your AWS
2954// resource received during a time range that you choose. You can specify a
2955// sample size of up to 500 requests, and you can specify any time range in
2956// the previous three hours.
2957//
2958// GetSampledRequests returns a time range, which is usually the time range
2959// that you specified. However, if your resource (such as a CloudFront distribution)
2960// received 5,000 requests before the specified time range elapsed, GetSampledRequests
2961// returns an updated time range. This new time range indicates the actual period
2962// during which AWS WAF selected the requests in the sample.
2963//
2964// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2965// with awserr.Error's Code and Message methods to get detailed information about
2966// the error.
2967//
2968// See the AWS API reference guide for AWS WAF's
2969// API operation GetSampledRequests for usage and error information.
2970//
2971// Returned Error Codes:
2972//   * ErrCodeNonexistentItemException "NonexistentItemException"
2973//   The operation failed because the referenced object doesn't exist.
2974//
2975//   * ErrCodeInternalErrorException "InternalErrorException"
2976//   The operation failed because of a system problem, even though the request
2977//   was valid. Retry your request.
2978//
2979// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetSampledRequests
2980func (c *WAF) GetSampledRequests(input *GetSampledRequestsInput) (*GetSampledRequestsOutput, error) {
2981	req, out := c.GetSampledRequestsRequest(input)
2982	return out, req.Send()
2983}
2984
2985// GetSampledRequestsWithContext is the same as GetSampledRequests with the addition of
2986// the ability to pass a context and additional request options.
2987//
2988// See GetSampledRequests for details on how to use this API operation.
2989//
2990// The context must be non-nil and will be used for request cancellation. If
2991// the context is nil a panic will occur. In the future the SDK may create
2992// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2993// for more information on using Contexts.
2994func (c *WAF) GetSampledRequestsWithContext(ctx aws.Context, input *GetSampledRequestsInput, opts ...request.Option) (*GetSampledRequestsOutput, error) {
2995	req, out := c.GetSampledRequestsRequest(input)
2996	req.SetContext(ctx)
2997	req.ApplyOptions(opts...)
2998	return out, req.Send()
2999}
3000
3001const opGetSizeConstraintSet = "GetSizeConstraintSet"
3002
3003// GetSizeConstraintSetRequest generates a "aws/request.Request" representing the
3004// client's request for the GetSizeConstraintSet operation. The "output" return
3005// value will be populated with the request's response once the request complets
3006// successfuly.
3007//
3008// Use "Send" method on the returned Request to send the API call to the service.
3009// the "output" return value is not valid until after Send returns without error.
3010//
3011// See GetSizeConstraintSet for more information on using the GetSizeConstraintSet
3012// API call, and error handling.
3013//
3014// This method is useful when you want to inject custom logic or configuration
3015// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3016//
3017//
3018//    // Example sending a request using the GetSizeConstraintSetRequest method.
3019//    req, resp := client.GetSizeConstraintSetRequest(params)
3020//
3021//    err := req.Send()
3022//    if err == nil { // resp is now filled
3023//        fmt.Println(resp)
3024//    }
3025//
3026// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetSizeConstraintSet
3027func (c *WAF) GetSizeConstraintSetRequest(input *GetSizeConstraintSetInput) (req *request.Request, output *GetSizeConstraintSetOutput) {
3028	op := &request.Operation{
3029		Name:       opGetSizeConstraintSet,
3030		HTTPMethod: "POST",
3031		HTTPPath:   "/",
3032	}
3033
3034	if input == nil {
3035		input = &GetSizeConstraintSetInput{}
3036	}
3037
3038	output = &GetSizeConstraintSetOutput{}
3039	req = c.newRequest(op, input, output)
3040	return
3041}
3042
3043// GetSizeConstraintSet API operation for AWS WAF.
3044//
3045// Returns the SizeConstraintSet specified by SizeConstraintSetId.
3046//
3047// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3048// with awserr.Error's Code and Message methods to get detailed information about
3049// the error.
3050//
3051// See the AWS API reference guide for AWS WAF's
3052// API operation GetSizeConstraintSet for usage and error information.
3053//
3054// Returned Error Codes:
3055//   * ErrCodeInternalErrorException "InternalErrorException"
3056//   The operation failed because of a system problem, even though the request
3057//   was valid. Retry your request.
3058//
3059//   * ErrCodeInvalidAccountException "InvalidAccountException"
3060//   The operation failed because you tried to create, update, or delete an object
3061//   by using an invalid account identifier.
3062//
3063//   * ErrCodeNonexistentItemException "NonexistentItemException"
3064//   The operation failed because the referenced object doesn't exist.
3065//
3066// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetSizeConstraintSet
3067func (c *WAF) GetSizeConstraintSet(input *GetSizeConstraintSetInput) (*GetSizeConstraintSetOutput, error) {
3068	req, out := c.GetSizeConstraintSetRequest(input)
3069	return out, req.Send()
3070}
3071
3072// GetSizeConstraintSetWithContext is the same as GetSizeConstraintSet with the addition of
3073// the ability to pass a context and additional request options.
3074//
3075// See GetSizeConstraintSet for details on how to use this API operation.
3076//
3077// The context must be non-nil and will be used for request cancellation. If
3078// the context is nil a panic will occur. In the future the SDK may create
3079// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3080// for more information on using Contexts.
3081func (c *WAF) GetSizeConstraintSetWithContext(ctx aws.Context, input *GetSizeConstraintSetInput, opts ...request.Option) (*GetSizeConstraintSetOutput, error) {
3082	req, out := c.GetSizeConstraintSetRequest(input)
3083	req.SetContext(ctx)
3084	req.ApplyOptions(opts...)
3085	return out, req.Send()
3086}
3087
3088const opGetSqlInjectionMatchSet = "GetSqlInjectionMatchSet"
3089
3090// GetSqlInjectionMatchSetRequest generates a "aws/request.Request" representing the
3091// client's request for the GetSqlInjectionMatchSet operation. The "output" return
3092// value will be populated with the request's response once the request complets
3093// successfuly.
3094//
3095// Use "Send" method on the returned Request to send the API call to the service.
3096// the "output" return value is not valid until after Send returns without error.
3097//
3098// See GetSqlInjectionMatchSet for more information on using the GetSqlInjectionMatchSet
3099// API call, and error handling.
3100//
3101// This method is useful when you want to inject custom logic or configuration
3102// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3103//
3104//
3105//    // Example sending a request using the GetSqlInjectionMatchSetRequest method.
3106//    req, resp := client.GetSqlInjectionMatchSetRequest(params)
3107//
3108//    err := req.Send()
3109//    if err == nil { // resp is now filled
3110//        fmt.Println(resp)
3111//    }
3112//
3113// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetSqlInjectionMatchSet
3114func (c *WAF) GetSqlInjectionMatchSetRequest(input *GetSqlInjectionMatchSetInput) (req *request.Request, output *GetSqlInjectionMatchSetOutput) {
3115	op := &request.Operation{
3116		Name:       opGetSqlInjectionMatchSet,
3117		HTTPMethod: "POST",
3118		HTTPPath:   "/",
3119	}
3120
3121	if input == nil {
3122		input = &GetSqlInjectionMatchSetInput{}
3123	}
3124
3125	output = &GetSqlInjectionMatchSetOutput{}
3126	req = c.newRequest(op, input, output)
3127	return
3128}
3129
3130// GetSqlInjectionMatchSet API operation for AWS WAF.
3131//
3132// Returns the SqlInjectionMatchSet that is specified by SqlInjectionMatchSetId.
3133//
3134// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3135// with awserr.Error's Code and Message methods to get detailed information about
3136// the error.
3137//
3138// See the AWS API reference guide for AWS WAF's
3139// API operation GetSqlInjectionMatchSet for usage and error information.
3140//
3141// Returned Error Codes:
3142//   * ErrCodeInternalErrorException "InternalErrorException"
3143//   The operation failed because of a system problem, even though the request
3144//   was valid. Retry your request.
3145//
3146//   * ErrCodeInvalidAccountException "InvalidAccountException"
3147//   The operation failed because you tried to create, update, or delete an object
3148//   by using an invalid account identifier.
3149//
3150//   * ErrCodeNonexistentItemException "NonexistentItemException"
3151//   The operation failed because the referenced object doesn't exist.
3152//
3153// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetSqlInjectionMatchSet
3154func (c *WAF) GetSqlInjectionMatchSet(input *GetSqlInjectionMatchSetInput) (*GetSqlInjectionMatchSetOutput, error) {
3155	req, out := c.GetSqlInjectionMatchSetRequest(input)
3156	return out, req.Send()
3157}
3158
3159// GetSqlInjectionMatchSetWithContext is the same as GetSqlInjectionMatchSet with the addition of
3160// the ability to pass a context and additional request options.
3161//
3162// See GetSqlInjectionMatchSet for details on how to use this API operation.
3163//
3164// The context must be non-nil and will be used for request cancellation. If
3165// the context is nil a panic will occur. In the future the SDK may create
3166// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3167// for more information on using Contexts.
3168func (c *WAF) GetSqlInjectionMatchSetWithContext(ctx aws.Context, input *GetSqlInjectionMatchSetInput, opts ...request.Option) (*GetSqlInjectionMatchSetOutput, error) {
3169	req, out := c.GetSqlInjectionMatchSetRequest(input)
3170	req.SetContext(ctx)
3171	req.ApplyOptions(opts...)
3172	return out, req.Send()
3173}
3174
3175const opGetWebACL = "GetWebACL"
3176
3177// GetWebACLRequest generates a "aws/request.Request" representing the
3178// client's request for the GetWebACL operation. The "output" return
3179// value will be populated with the request's response once the request complets
3180// successfuly.
3181//
3182// Use "Send" method on the returned Request to send the API call to the service.
3183// the "output" return value is not valid until after Send returns without error.
3184//
3185// See GetWebACL for more information on using the GetWebACL
3186// API call, and error handling.
3187//
3188// This method is useful when you want to inject custom logic or configuration
3189// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3190//
3191//
3192//    // Example sending a request using the GetWebACLRequest method.
3193//    req, resp := client.GetWebACLRequest(params)
3194//
3195//    err := req.Send()
3196//    if err == nil { // resp is now filled
3197//        fmt.Println(resp)
3198//    }
3199//
3200// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetWebACL
3201func (c *WAF) GetWebACLRequest(input *GetWebACLInput) (req *request.Request, output *GetWebACLOutput) {
3202	op := &request.Operation{
3203		Name:       opGetWebACL,
3204		HTTPMethod: "POST",
3205		HTTPPath:   "/",
3206	}
3207
3208	if input == nil {
3209		input = &GetWebACLInput{}
3210	}
3211
3212	output = &GetWebACLOutput{}
3213	req = c.newRequest(op, input, output)
3214	return
3215}
3216
3217// GetWebACL API operation for AWS WAF.
3218//
3219// Returns the WebACL that is specified by WebACLId.
3220//
3221// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3222// with awserr.Error's Code and Message methods to get detailed information about
3223// the error.
3224//
3225// See the AWS API reference guide for AWS WAF's
3226// API operation GetWebACL for usage and error information.
3227//
3228// Returned Error Codes:
3229//   * ErrCodeInternalErrorException "InternalErrorException"
3230//   The operation failed because of a system problem, even though the request
3231//   was valid. Retry your request.
3232//
3233//   * ErrCodeInvalidAccountException "InvalidAccountException"
3234//   The operation failed because you tried to create, update, or delete an object
3235//   by using an invalid account identifier.
3236//
3237//   * ErrCodeNonexistentItemException "NonexistentItemException"
3238//   The operation failed because the referenced object doesn't exist.
3239//
3240// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetWebACL
3241func (c *WAF) GetWebACL(input *GetWebACLInput) (*GetWebACLOutput, error) {
3242	req, out := c.GetWebACLRequest(input)
3243	return out, req.Send()
3244}
3245
3246// GetWebACLWithContext is the same as GetWebACL with the addition of
3247// the ability to pass a context and additional request options.
3248//
3249// See GetWebACL for details on how to use this API operation.
3250//
3251// The context must be non-nil and will be used for request cancellation. If
3252// the context is nil a panic will occur. In the future the SDK may create
3253// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3254// for more information on using Contexts.
3255func (c *WAF) GetWebACLWithContext(ctx aws.Context, input *GetWebACLInput, opts ...request.Option) (*GetWebACLOutput, error) {
3256	req, out := c.GetWebACLRequest(input)
3257	req.SetContext(ctx)
3258	req.ApplyOptions(opts...)
3259	return out, req.Send()
3260}
3261
3262const opGetXssMatchSet = "GetXssMatchSet"
3263
3264// GetXssMatchSetRequest generates a "aws/request.Request" representing the
3265// client's request for the GetXssMatchSet operation. The "output" return
3266// value will be populated with the request's response once the request complets
3267// successfuly.
3268//
3269// Use "Send" method on the returned Request to send the API call to the service.
3270// the "output" return value is not valid until after Send returns without error.
3271//
3272// See GetXssMatchSet for more information on using the GetXssMatchSet
3273// API call, and error handling.
3274//
3275// This method is useful when you want to inject custom logic or configuration
3276// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3277//
3278//
3279//    // Example sending a request using the GetXssMatchSetRequest method.
3280//    req, resp := client.GetXssMatchSetRequest(params)
3281//
3282//    err := req.Send()
3283//    if err == nil { // resp is now filled
3284//        fmt.Println(resp)
3285//    }
3286//
3287// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetXssMatchSet
3288func (c *WAF) GetXssMatchSetRequest(input *GetXssMatchSetInput) (req *request.Request, output *GetXssMatchSetOutput) {
3289	op := &request.Operation{
3290		Name:       opGetXssMatchSet,
3291		HTTPMethod: "POST",
3292		HTTPPath:   "/",
3293	}
3294
3295	if input == nil {
3296		input = &GetXssMatchSetInput{}
3297	}
3298
3299	output = &GetXssMatchSetOutput{}
3300	req = c.newRequest(op, input, output)
3301	return
3302}
3303
3304// GetXssMatchSet API operation for AWS WAF.
3305//
3306// Returns the XssMatchSet that is specified by XssMatchSetId.
3307//
3308// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3309// with awserr.Error's Code and Message methods to get detailed information about
3310// the error.
3311//
3312// See the AWS API reference guide for AWS WAF's
3313// API operation GetXssMatchSet for usage and error information.
3314//
3315// Returned Error Codes:
3316//   * ErrCodeInternalErrorException "InternalErrorException"
3317//   The operation failed because of a system problem, even though the request
3318//   was valid. Retry your request.
3319//
3320//   * ErrCodeInvalidAccountException "InvalidAccountException"
3321//   The operation failed because you tried to create, update, or delete an object
3322//   by using an invalid account identifier.
3323//
3324//   * ErrCodeNonexistentItemException "NonexistentItemException"
3325//   The operation failed because the referenced object doesn't exist.
3326//
3327// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetXssMatchSet
3328func (c *WAF) GetXssMatchSet(input *GetXssMatchSetInput) (*GetXssMatchSetOutput, error) {
3329	req, out := c.GetXssMatchSetRequest(input)
3330	return out, req.Send()
3331}
3332
3333// GetXssMatchSetWithContext is the same as GetXssMatchSet with the addition of
3334// the ability to pass a context and additional request options.
3335//
3336// See GetXssMatchSet for details on how to use this API operation.
3337//
3338// The context must be non-nil and will be used for request cancellation. If
3339// the context is nil a panic will occur. In the future the SDK may create
3340// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3341// for more information on using Contexts.
3342func (c *WAF) GetXssMatchSetWithContext(ctx aws.Context, input *GetXssMatchSetInput, opts ...request.Option) (*GetXssMatchSetOutput, error) {
3343	req, out := c.GetXssMatchSetRequest(input)
3344	req.SetContext(ctx)
3345	req.ApplyOptions(opts...)
3346	return out, req.Send()
3347}
3348
3349const opListByteMatchSets = "ListByteMatchSets"
3350
3351// ListByteMatchSetsRequest generates a "aws/request.Request" representing the
3352// client's request for the ListByteMatchSets operation. The "output" return
3353// value will be populated with the request's response once the request complets
3354// successfuly.
3355//
3356// Use "Send" method on the returned Request to send the API call to the service.
3357// the "output" return value is not valid until after Send returns without error.
3358//
3359// See ListByteMatchSets for more information on using the ListByteMatchSets
3360// API call, and error handling.
3361//
3362// This method is useful when you want to inject custom logic or configuration
3363// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3364//
3365//
3366//    // Example sending a request using the ListByteMatchSetsRequest method.
3367//    req, resp := client.ListByteMatchSetsRequest(params)
3368//
3369//    err := req.Send()
3370//    if err == nil { // resp is now filled
3371//        fmt.Println(resp)
3372//    }
3373//
3374// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListByteMatchSets
3375func (c *WAF) ListByteMatchSetsRequest(input *ListByteMatchSetsInput) (req *request.Request, output *ListByteMatchSetsOutput) {
3376	op := &request.Operation{
3377		Name:       opListByteMatchSets,
3378		HTTPMethod: "POST",
3379		HTTPPath:   "/",
3380	}
3381
3382	if input == nil {
3383		input = &ListByteMatchSetsInput{}
3384	}
3385
3386	output = &ListByteMatchSetsOutput{}
3387	req = c.newRequest(op, input, output)
3388	return
3389}
3390
3391// ListByteMatchSets API operation for AWS WAF.
3392//
3393// Returns an array of ByteMatchSetSummary objects.
3394//
3395// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3396// with awserr.Error's Code and Message methods to get detailed information about
3397// the error.
3398//
3399// See the AWS API reference guide for AWS WAF's
3400// API operation ListByteMatchSets for usage and error information.
3401//
3402// Returned Error Codes:
3403//   * ErrCodeInternalErrorException "InternalErrorException"
3404//   The operation failed because of a system problem, even though the request
3405//   was valid. Retry your request.
3406//
3407//   * ErrCodeInvalidAccountException "InvalidAccountException"
3408//   The operation failed because you tried to create, update, or delete an object
3409//   by using an invalid account identifier.
3410//
3411// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListByteMatchSets
3412func (c *WAF) ListByteMatchSets(input *ListByteMatchSetsInput) (*ListByteMatchSetsOutput, error) {
3413	req, out := c.ListByteMatchSetsRequest(input)
3414	return out, req.Send()
3415}
3416
3417// ListByteMatchSetsWithContext is the same as ListByteMatchSets with the addition of
3418// the ability to pass a context and additional request options.
3419//
3420// See ListByteMatchSets for details on how to use this API operation.
3421//
3422// The context must be non-nil and will be used for request cancellation. If
3423// the context is nil a panic will occur. In the future the SDK may create
3424// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3425// for more information on using Contexts.
3426func (c *WAF) ListByteMatchSetsWithContext(ctx aws.Context, input *ListByteMatchSetsInput, opts ...request.Option) (*ListByteMatchSetsOutput, error) {
3427	req, out := c.ListByteMatchSetsRequest(input)
3428	req.SetContext(ctx)
3429	req.ApplyOptions(opts...)
3430	return out, req.Send()
3431}
3432
3433const opListIPSets = "ListIPSets"
3434
3435// ListIPSetsRequest generates a "aws/request.Request" representing the
3436// client's request for the ListIPSets operation. The "output" return
3437// value will be populated with the request's response once the request complets
3438// successfuly.
3439//
3440// Use "Send" method on the returned Request to send the API call to the service.
3441// the "output" return value is not valid until after Send returns without error.
3442//
3443// See ListIPSets for more information on using the ListIPSets
3444// API call, and error handling.
3445//
3446// This method is useful when you want to inject custom logic or configuration
3447// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3448//
3449//
3450//    // Example sending a request using the ListIPSetsRequest method.
3451//    req, resp := client.ListIPSetsRequest(params)
3452//
3453//    err := req.Send()
3454//    if err == nil { // resp is now filled
3455//        fmt.Println(resp)
3456//    }
3457//
3458// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListIPSets
3459func (c *WAF) ListIPSetsRequest(input *ListIPSetsInput) (req *request.Request, output *ListIPSetsOutput) {
3460	op := &request.Operation{
3461		Name:       opListIPSets,
3462		HTTPMethod: "POST",
3463		HTTPPath:   "/",
3464	}
3465
3466	if input == nil {
3467		input = &ListIPSetsInput{}
3468	}
3469
3470	output = &ListIPSetsOutput{}
3471	req = c.newRequest(op, input, output)
3472	return
3473}
3474
3475// ListIPSets API operation for AWS WAF.
3476//
3477// Returns an array of IPSetSummary objects in the response.
3478//
3479// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3480// with awserr.Error's Code and Message methods to get detailed information about
3481// the error.
3482//
3483// See the AWS API reference guide for AWS WAF's
3484// API operation ListIPSets for usage and error information.
3485//
3486// Returned Error Codes:
3487//   * ErrCodeInternalErrorException "InternalErrorException"
3488//   The operation failed because of a system problem, even though the request
3489//   was valid. Retry your request.
3490//
3491//   * ErrCodeInvalidAccountException "InvalidAccountException"
3492//   The operation failed because you tried to create, update, or delete an object
3493//   by using an invalid account identifier.
3494//
3495// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListIPSets
3496func (c *WAF) ListIPSets(input *ListIPSetsInput) (*ListIPSetsOutput, error) {
3497	req, out := c.ListIPSetsRequest(input)
3498	return out, req.Send()
3499}
3500
3501// ListIPSetsWithContext is the same as ListIPSets with the addition of
3502// the ability to pass a context and additional request options.
3503//
3504// See ListIPSets for details on how to use this API operation.
3505//
3506// The context must be non-nil and will be used for request cancellation. If
3507// the context is nil a panic will occur. In the future the SDK may create
3508// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3509// for more information on using Contexts.
3510func (c *WAF) ListIPSetsWithContext(ctx aws.Context, input *ListIPSetsInput, opts ...request.Option) (*ListIPSetsOutput, error) {
3511	req, out := c.ListIPSetsRequest(input)
3512	req.SetContext(ctx)
3513	req.ApplyOptions(opts...)
3514	return out, req.Send()
3515}
3516
3517const opListRateBasedRules = "ListRateBasedRules"
3518
3519// ListRateBasedRulesRequest generates a "aws/request.Request" representing the
3520// client's request for the ListRateBasedRules operation. The "output" return
3521// value will be populated with the request's response once the request complets
3522// successfuly.
3523//
3524// Use "Send" method on the returned Request to send the API call to the service.
3525// the "output" return value is not valid until after Send returns without error.
3526//
3527// See ListRateBasedRules for more information on using the ListRateBasedRules
3528// API call, and error handling.
3529//
3530// This method is useful when you want to inject custom logic or configuration
3531// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3532//
3533//
3534//    // Example sending a request using the ListRateBasedRulesRequest method.
3535//    req, resp := client.ListRateBasedRulesRequest(params)
3536//
3537//    err := req.Send()
3538//    if err == nil { // resp is now filled
3539//        fmt.Println(resp)
3540//    }
3541//
3542// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListRateBasedRules
3543func (c *WAF) ListRateBasedRulesRequest(input *ListRateBasedRulesInput) (req *request.Request, output *ListRateBasedRulesOutput) {
3544	op := &request.Operation{
3545		Name:       opListRateBasedRules,
3546		HTTPMethod: "POST",
3547		HTTPPath:   "/",
3548	}
3549
3550	if input == nil {
3551		input = &ListRateBasedRulesInput{}
3552	}
3553
3554	output = &ListRateBasedRulesOutput{}
3555	req = c.newRequest(op, input, output)
3556	return
3557}
3558
3559// ListRateBasedRules API operation for AWS WAF.
3560//
3561// Returns an array of RuleSummary objects.
3562//
3563// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3564// with awserr.Error's Code and Message methods to get detailed information about
3565// the error.
3566//
3567// See the AWS API reference guide for AWS WAF's
3568// API operation ListRateBasedRules for usage and error information.
3569//
3570// Returned Error Codes:
3571//   * ErrCodeInternalErrorException "InternalErrorException"
3572//   The operation failed because of a system problem, even though the request
3573//   was valid. Retry your request.
3574//
3575//   * ErrCodeInvalidAccountException "InvalidAccountException"
3576//   The operation failed because you tried to create, update, or delete an object
3577//   by using an invalid account identifier.
3578//
3579// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListRateBasedRules
3580func (c *WAF) ListRateBasedRules(input *ListRateBasedRulesInput) (*ListRateBasedRulesOutput, error) {
3581	req, out := c.ListRateBasedRulesRequest(input)
3582	return out, req.Send()
3583}
3584
3585// ListRateBasedRulesWithContext is the same as ListRateBasedRules with the addition of
3586// the ability to pass a context and additional request options.
3587//
3588// See ListRateBasedRules for details on how to use this API operation.
3589//
3590// The context must be non-nil and will be used for request cancellation. If
3591// the context is nil a panic will occur. In the future the SDK may create
3592// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3593// for more information on using Contexts.
3594func (c *WAF) ListRateBasedRulesWithContext(ctx aws.Context, input *ListRateBasedRulesInput, opts ...request.Option) (*ListRateBasedRulesOutput, error) {
3595	req, out := c.ListRateBasedRulesRequest(input)
3596	req.SetContext(ctx)
3597	req.ApplyOptions(opts...)
3598	return out, req.Send()
3599}
3600
3601const opListRules = "ListRules"
3602
3603// ListRulesRequest generates a "aws/request.Request" representing the
3604// client's request for the ListRules operation. The "output" return
3605// value will be populated with the request's response once the request complets
3606// successfuly.
3607//
3608// Use "Send" method on the returned Request to send the API call to the service.
3609// the "output" return value is not valid until after Send returns without error.
3610//
3611// See ListRules for more information on using the ListRules
3612// API call, and error handling.
3613//
3614// This method is useful when you want to inject custom logic or configuration
3615// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3616//
3617//
3618//    // Example sending a request using the ListRulesRequest method.
3619//    req, resp := client.ListRulesRequest(params)
3620//
3621//    err := req.Send()
3622//    if err == nil { // resp is now filled
3623//        fmt.Println(resp)
3624//    }
3625//
3626// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListRules
3627func (c *WAF) ListRulesRequest(input *ListRulesInput) (req *request.Request, output *ListRulesOutput) {
3628	op := &request.Operation{
3629		Name:       opListRules,
3630		HTTPMethod: "POST",
3631		HTTPPath:   "/",
3632	}
3633
3634	if input == nil {
3635		input = &ListRulesInput{}
3636	}
3637
3638	output = &ListRulesOutput{}
3639	req = c.newRequest(op, input, output)
3640	return
3641}
3642
3643// ListRules API operation for AWS WAF.
3644//
3645// Returns an array of RuleSummary objects.
3646//
3647// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3648// with awserr.Error's Code and Message methods to get detailed information about
3649// the error.
3650//
3651// See the AWS API reference guide for AWS WAF's
3652// API operation ListRules for usage and error information.
3653//
3654// Returned Error Codes:
3655//   * ErrCodeInternalErrorException "InternalErrorException"
3656//   The operation failed because of a system problem, even though the request
3657//   was valid. Retry your request.
3658//
3659//   * ErrCodeInvalidAccountException "InvalidAccountException"
3660//   The operation failed because you tried to create, update, or delete an object
3661//   by using an invalid account identifier.
3662//
3663// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListRules
3664func (c *WAF) ListRules(input *ListRulesInput) (*ListRulesOutput, error) {
3665	req, out := c.ListRulesRequest(input)
3666	return out, req.Send()
3667}
3668
3669// ListRulesWithContext is the same as ListRules with the addition of
3670// the ability to pass a context and additional request options.
3671//
3672// See ListRules for details on how to use this API operation.
3673//
3674// The context must be non-nil and will be used for request cancellation. If
3675// the context is nil a panic will occur. In the future the SDK may create
3676// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3677// for more information on using Contexts.
3678func (c *WAF) ListRulesWithContext(ctx aws.Context, input *ListRulesInput, opts ...request.Option) (*ListRulesOutput, error) {
3679	req, out := c.ListRulesRequest(input)
3680	req.SetContext(ctx)
3681	req.ApplyOptions(opts...)
3682	return out, req.Send()
3683}
3684
3685const opListSizeConstraintSets = "ListSizeConstraintSets"
3686
3687// ListSizeConstraintSetsRequest generates a "aws/request.Request" representing the
3688// client's request for the ListSizeConstraintSets operation. The "output" return
3689// value will be populated with the request's response once the request complets
3690// successfuly.
3691//
3692// Use "Send" method on the returned Request to send the API call to the service.
3693// the "output" return value is not valid until after Send returns without error.
3694//
3695// See ListSizeConstraintSets for more information on using the ListSizeConstraintSets
3696// API call, and error handling.
3697//
3698// This method is useful when you want to inject custom logic or configuration
3699// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3700//
3701//
3702//    // Example sending a request using the ListSizeConstraintSetsRequest method.
3703//    req, resp := client.ListSizeConstraintSetsRequest(params)
3704//
3705//    err := req.Send()
3706//    if err == nil { // resp is now filled
3707//        fmt.Println(resp)
3708//    }
3709//
3710// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListSizeConstraintSets
3711func (c *WAF) ListSizeConstraintSetsRequest(input *ListSizeConstraintSetsInput) (req *request.Request, output *ListSizeConstraintSetsOutput) {
3712	op := &request.Operation{
3713		Name:       opListSizeConstraintSets,
3714		HTTPMethod: "POST",
3715		HTTPPath:   "/",
3716	}
3717
3718	if input == nil {
3719		input = &ListSizeConstraintSetsInput{}
3720	}
3721
3722	output = &ListSizeConstraintSetsOutput{}
3723	req = c.newRequest(op, input, output)
3724	return
3725}
3726
3727// ListSizeConstraintSets API operation for AWS WAF.
3728//
3729// Returns an array of SizeConstraintSetSummary objects.
3730//
3731// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3732// with awserr.Error's Code and Message methods to get detailed information about
3733// the error.
3734//
3735// See the AWS API reference guide for AWS WAF's
3736// API operation ListSizeConstraintSets for usage and error information.
3737//
3738// Returned Error Codes:
3739//   * ErrCodeInternalErrorException "InternalErrorException"
3740//   The operation failed because of a system problem, even though the request
3741//   was valid. Retry your request.
3742//
3743//   * ErrCodeInvalidAccountException "InvalidAccountException"
3744//   The operation failed because you tried to create, update, or delete an object
3745//   by using an invalid account identifier.
3746//
3747// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListSizeConstraintSets
3748func (c *WAF) ListSizeConstraintSets(input *ListSizeConstraintSetsInput) (*ListSizeConstraintSetsOutput, error) {
3749	req, out := c.ListSizeConstraintSetsRequest(input)
3750	return out, req.Send()
3751}
3752
3753// ListSizeConstraintSetsWithContext is the same as ListSizeConstraintSets with the addition of
3754// the ability to pass a context and additional request options.
3755//
3756// See ListSizeConstraintSets for details on how to use this API operation.
3757//
3758// The context must be non-nil and will be used for request cancellation. If
3759// the context is nil a panic will occur. In the future the SDK may create
3760// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3761// for more information on using Contexts.
3762func (c *WAF) ListSizeConstraintSetsWithContext(ctx aws.Context, input *ListSizeConstraintSetsInput, opts ...request.Option) (*ListSizeConstraintSetsOutput, error) {
3763	req, out := c.ListSizeConstraintSetsRequest(input)
3764	req.SetContext(ctx)
3765	req.ApplyOptions(opts...)
3766	return out, req.Send()
3767}
3768
3769const opListSqlInjectionMatchSets = "ListSqlInjectionMatchSets"
3770
3771// ListSqlInjectionMatchSetsRequest generates a "aws/request.Request" representing the
3772// client's request for the ListSqlInjectionMatchSets operation. The "output" return
3773// value will be populated with the request's response once the request complets
3774// successfuly.
3775//
3776// Use "Send" method on the returned Request to send the API call to the service.
3777// the "output" return value is not valid until after Send returns without error.
3778//
3779// See ListSqlInjectionMatchSets for more information on using the ListSqlInjectionMatchSets
3780// API call, and error handling.
3781//
3782// This method is useful when you want to inject custom logic or configuration
3783// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3784//
3785//
3786//    // Example sending a request using the ListSqlInjectionMatchSetsRequest method.
3787//    req, resp := client.ListSqlInjectionMatchSetsRequest(params)
3788//
3789//    err := req.Send()
3790//    if err == nil { // resp is now filled
3791//        fmt.Println(resp)
3792//    }
3793//
3794// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListSqlInjectionMatchSets
3795func (c *WAF) ListSqlInjectionMatchSetsRequest(input *ListSqlInjectionMatchSetsInput) (req *request.Request, output *ListSqlInjectionMatchSetsOutput) {
3796	op := &request.Operation{
3797		Name:       opListSqlInjectionMatchSets,
3798		HTTPMethod: "POST",
3799		HTTPPath:   "/",
3800	}
3801
3802	if input == nil {
3803		input = &ListSqlInjectionMatchSetsInput{}
3804	}
3805
3806	output = &ListSqlInjectionMatchSetsOutput{}
3807	req = c.newRequest(op, input, output)
3808	return
3809}
3810
3811// ListSqlInjectionMatchSets API operation for AWS WAF.
3812//
3813// Returns an array of SqlInjectionMatchSet objects.
3814//
3815// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3816// with awserr.Error's Code and Message methods to get detailed information about
3817// the error.
3818//
3819// See the AWS API reference guide for AWS WAF's
3820// API operation ListSqlInjectionMatchSets for usage and error information.
3821//
3822// Returned Error Codes:
3823//   * ErrCodeInternalErrorException "InternalErrorException"
3824//   The operation failed because of a system problem, even though the request
3825//   was valid. Retry your request.
3826//
3827//   * ErrCodeInvalidAccountException "InvalidAccountException"
3828//   The operation failed because you tried to create, update, or delete an object
3829//   by using an invalid account identifier.
3830//
3831// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListSqlInjectionMatchSets
3832func (c *WAF) ListSqlInjectionMatchSets(input *ListSqlInjectionMatchSetsInput) (*ListSqlInjectionMatchSetsOutput, error) {
3833	req, out := c.ListSqlInjectionMatchSetsRequest(input)
3834	return out, req.Send()
3835}
3836
3837// ListSqlInjectionMatchSetsWithContext is the same as ListSqlInjectionMatchSets with the addition of
3838// the ability to pass a context and additional request options.
3839//
3840// See ListSqlInjectionMatchSets 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.
3846func (c *WAF) ListSqlInjectionMatchSetsWithContext(ctx aws.Context, input *ListSqlInjectionMatchSetsInput, opts ...request.Option) (*ListSqlInjectionMatchSetsOutput, error) {
3847	req, out := c.ListSqlInjectionMatchSetsRequest(input)
3848	req.SetContext(ctx)
3849	req.ApplyOptions(opts...)
3850	return out, req.Send()
3851}
3852
3853const opListWebACLs = "ListWebACLs"
3854
3855// ListWebACLsRequest generates a "aws/request.Request" representing the
3856// client's request for the ListWebACLs operation. The "output" return
3857// value will be populated with the request's response once the request complets
3858// successfuly.
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 ListWebACLs for more information on using the ListWebACLs
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 ListWebACLsRequest method.
3871//    req, resp := client.ListWebACLsRequest(params)
3872//
3873//    err := req.Send()
3874//    if err == nil { // resp is now filled
3875//        fmt.Println(resp)
3876//    }
3877//
3878// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListWebACLs
3879func (c *WAF) ListWebACLsRequest(input *ListWebACLsInput) (req *request.Request, output *ListWebACLsOutput) {
3880	op := &request.Operation{
3881		Name:       opListWebACLs,
3882		HTTPMethod: "POST",
3883		HTTPPath:   "/",
3884	}
3885
3886	if input == nil {
3887		input = &ListWebACLsInput{}
3888	}
3889
3890	output = &ListWebACLsOutput{}
3891	req = c.newRequest(op, input, output)
3892	return
3893}
3894
3895// ListWebACLs API operation for AWS WAF.
3896//
3897// Returns an array of WebACLSummary objects in the response.
3898//
3899// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3900// with awserr.Error's Code and Message methods to get detailed information about
3901// the error.
3902//
3903// See the AWS API reference guide for AWS WAF's
3904// API operation ListWebACLs for usage and error information.
3905//
3906// Returned Error Codes:
3907//   * ErrCodeInternalErrorException "InternalErrorException"
3908//   The operation failed because of a system problem, even though the request
3909//   was valid. Retry your request.
3910//
3911//   * ErrCodeInvalidAccountException "InvalidAccountException"
3912//   The operation failed because you tried to create, update, or delete an object
3913//   by using an invalid account identifier.
3914//
3915// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListWebACLs
3916func (c *WAF) ListWebACLs(input *ListWebACLsInput) (*ListWebACLsOutput, error) {
3917	req, out := c.ListWebACLsRequest(input)
3918	return out, req.Send()
3919}
3920
3921// ListWebACLsWithContext is the same as ListWebACLs with the addition of
3922// the ability to pass a context and additional request options.
3923//
3924// See ListWebACLs for details on how to use this API operation.
3925//
3926// The context must be non-nil and will be used for request cancellation. If
3927// the context is nil a panic will occur. In the future the SDK may create
3928// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3929// for more information on using Contexts.
3930func (c *WAF) ListWebACLsWithContext(ctx aws.Context, input *ListWebACLsInput, opts ...request.Option) (*ListWebACLsOutput, error) {
3931	req, out := c.ListWebACLsRequest(input)
3932	req.SetContext(ctx)
3933	req.ApplyOptions(opts...)
3934	return out, req.Send()
3935}
3936
3937const opListXssMatchSets = "ListXssMatchSets"
3938
3939// ListXssMatchSetsRequest generates a "aws/request.Request" representing the
3940// client's request for the ListXssMatchSets operation. The "output" return
3941// value will be populated with the request's response once the request complets
3942// successfuly.
3943//
3944// Use "Send" method on the returned Request to send the API call to the service.
3945// the "output" return value is not valid until after Send returns without error.
3946//
3947// See ListXssMatchSets for more information on using the ListXssMatchSets
3948// API call, and error handling.
3949//
3950// This method is useful when you want to inject custom logic or configuration
3951// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3952//
3953//
3954//    // Example sending a request using the ListXssMatchSetsRequest method.
3955//    req, resp := client.ListXssMatchSetsRequest(params)
3956//
3957//    err := req.Send()
3958//    if err == nil { // resp is now filled
3959//        fmt.Println(resp)
3960//    }
3961//
3962// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListXssMatchSets
3963func (c *WAF) ListXssMatchSetsRequest(input *ListXssMatchSetsInput) (req *request.Request, output *ListXssMatchSetsOutput) {
3964	op := &request.Operation{
3965		Name:       opListXssMatchSets,
3966		HTTPMethod: "POST",
3967		HTTPPath:   "/",
3968	}
3969
3970	if input == nil {
3971		input = &ListXssMatchSetsInput{}
3972	}
3973
3974	output = &ListXssMatchSetsOutput{}
3975	req = c.newRequest(op, input, output)
3976	return
3977}
3978
3979// ListXssMatchSets API operation for AWS WAF.
3980//
3981// Returns an array of XssMatchSet objects.
3982//
3983// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3984// with awserr.Error's Code and Message methods to get detailed information about
3985// the error.
3986//
3987// See the AWS API reference guide for AWS WAF's
3988// API operation ListXssMatchSets for usage and error information.
3989//
3990// Returned Error Codes:
3991//   * ErrCodeInternalErrorException "InternalErrorException"
3992//   The operation failed because of a system problem, even though the request
3993//   was valid. Retry your request.
3994//
3995//   * ErrCodeInvalidAccountException "InvalidAccountException"
3996//   The operation failed because you tried to create, update, or delete an object
3997//   by using an invalid account identifier.
3998//
3999// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListXssMatchSets
4000func (c *WAF) ListXssMatchSets(input *ListXssMatchSetsInput) (*ListXssMatchSetsOutput, error) {
4001	req, out := c.ListXssMatchSetsRequest(input)
4002	return out, req.Send()
4003}
4004
4005// ListXssMatchSetsWithContext is the same as ListXssMatchSets with the addition of
4006// the ability to pass a context and additional request options.
4007//
4008// See ListXssMatchSets for details on how to use this API operation.
4009//
4010// The context must be non-nil and will be used for request cancellation. If
4011// the context is nil a panic will occur. In the future the SDK may create
4012// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4013// for more information on using Contexts.
4014func (c *WAF) ListXssMatchSetsWithContext(ctx aws.Context, input *ListXssMatchSetsInput, opts ...request.Option) (*ListXssMatchSetsOutput, error) {
4015	req, out := c.ListXssMatchSetsRequest(input)
4016	req.SetContext(ctx)
4017	req.ApplyOptions(opts...)
4018	return out, req.Send()
4019}
4020
4021const opUpdateByteMatchSet = "UpdateByteMatchSet"
4022
4023// UpdateByteMatchSetRequest generates a "aws/request.Request" representing the
4024// client's request for the UpdateByteMatchSet operation. The "output" return
4025// value will be populated with the request's response once the request complets
4026// successfuly.
4027//
4028// Use "Send" method on the returned Request to send the API call to the service.
4029// the "output" return value is not valid until after Send returns without error.
4030//
4031// See UpdateByteMatchSet for more information on using the UpdateByteMatchSet
4032// API call, and error handling.
4033//
4034// This method is useful when you want to inject custom logic or configuration
4035// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4036//
4037//
4038//    // Example sending a request using the UpdateByteMatchSetRequest method.
4039//    req, resp := client.UpdateByteMatchSetRequest(params)
4040//
4041//    err := req.Send()
4042//    if err == nil { // resp is now filled
4043//        fmt.Println(resp)
4044//    }
4045//
4046// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateByteMatchSet
4047func (c *WAF) UpdateByteMatchSetRequest(input *UpdateByteMatchSetInput) (req *request.Request, output *UpdateByteMatchSetOutput) {
4048	op := &request.Operation{
4049		Name:       opUpdateByteMatchSet,
4050		HTTPMethod: "POST",
4051		HTTPPath:   "/",
4052	}
4053
4054	if input == nil {
4055		input = &UpdateByteMatchSetInput{}
4056	}
4057
4058	output = &UpdateByteMatchSetOutput{}
4059	req = c.newRequest(op, input, output)
4060	return
4061}
4062
4063// UpdateByteMatchSet API operation for AWS WAF.
4064//
4065// Inserts or deletes ByteMatchTuple objects (filters) in a ByteMatchSet. For
4066// each ByteMatchTuple object, you specify the following values:
4067//
4068//    * Whether to insert or delete the object from the array. If you want to
4069//    change a ByteMatchSetUpdate object, you delete the existing object and
4070//    add a new one.
4071//
4072//    * The part of a web request that you want AWS WAF to inspect, such as
4073//    a query string or the value of the User-Agent header.
4074//
4075//    * The bytes (typically a string that corresponds with ASCII characters)
4076//    that you want AWS WAF to look for. For more information, including how
4077//    you specify the values for the AWS WAF API and the AWS CLI or SDKs, see
4078//    TargetString in the ByteMatchTuple data type.
4079//
4080//    * Where to look, such as at the beginning or the end of a query string.
4081//
4082//    * Whether to perform any conversions on the request, such as converting
4083//    it to lowercase, before inspecting it for the specified string.
4084//
4085// For example, you can add a ByteMatchSetUpdate object that matches web requests
4086// in which User-Agent headers contain the string BadBot. You can then configure
4087// AWS WAF to block those requests.
4088//
4089// To create and configure a ByteMatchSet, perform the following steps:
4090//
4091// Create a ByteMatchSet. For more information, see CreateByteMatchSet.
4092//
4093// Use GetChangeToken to get the change token that you provide in the ChangeToken
4094// parameter of an UpdateByteMatchSet request.
4095//
4096// Submit an UpdateByteMatchSet request to specify the part of the request that
4097// you want AWS WAF to inspect (for example, the header or the URI) and the
4098// value that you want AWS WAF to watch for.
4099//
4100// For more information about how to use the AWS WAF API to allow or block HTTP
4101// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
4102//
4103// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4104// with awserr.Error's Code and Message methods to get detailed information about
4105// the error.
4106//
4107// See the AWS API reference guide for AWS WAF's
4108// API operation UpdateByteMatchSet for usage and error information.
4109//
4110// Returned Error Codes:
4111//   * ErrCodeInternalErrorException "InternalErrorException"
4112//   The operation failed because of a system problem, even though the request
4113//   was valid. Retry your request.
4114//
4115//   * ErrCodeInvalidAccountException "InvalidAccountException"
4116//   The operation failed because you tried to create, update, or delete an object
4117//   by using an invalid account identifier.
4118//
4119//   * ErrCodeInvalidOperationException "InvalidOperationException"
4120//   The operation failed because there was nothing to do. For example:
4121//
4122//      * You tried to remove a Rule from a WebACL, but the Rule isn't in the
4123//      specified WebACL.
4124//
4125//      * You tried to remove an IP address from an IPSet, but the IP address
4126//      isn't in the specified IPSet.
4127//
4128//      * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the ByteMatchTuple
4129//      isn't in the specified WebACL.
4130//
4131//      * You tried to add a Rule to a WebACL, but the Rule already exists in
4132//      the specified WebACL.
4133//
4134//      * You tried to add an IP address to an IPSet, but the IP address already
4135//      exists in the specified IPSet.
4136//
4137//      * You tried to add a ByteMatchTuple to a ByteMatchSet, but the ByteMatchTuple
4138//      already exists in the specified WebACL.
4139//
4140//   * ErrCodeInvalidParameterException "InvalidParameterException"
4141//   The operation failed because AWS WAF didn't recognize a parameter in the
4142//   request. For example:
4143//
4144//      * You specified an invalid parameter name.
4145//
4146//      * You specified an invalid value.
4147//
4148//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
4149//      using an action other than INSERT or DELETE.
4150//
4151//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
4152//      BLOCK, or COUNT.
4153//
4154//      * You tried to create a RateBasedRule with a RateKey value other than
4155//      IP.
4156//
4157//      * You tried to update a WebACL with a WafActionType other than ALLOW,
4158//      BLOCK, or COUNT.
4159//
4160//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
4161//      HEADER, QUERY_STRING, or URI.
4162//
4163//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
4164//      for Data.
4165//
4166//      * Your request references an ARN that is malformed, or corresponds to
4167//      a resource with which a web ACL cannot be associated.
4168//
4169//   * ErrCodeNonexistentContainerException "NonexistentContainerException"
4170//   The operation failed because you tried to add an object to or delete an object
4171//   from another object that doesn't exist. For example:
4172//
4173//      * You tried to add a Rule to or delete a Rule from a WebACL that doesn't
4174//      exist.
4175//
4176//      * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a Rule
4177//      that doesn't exist.
4178//
4179//      * You tried to add an IP address to or delete an IP address from an IPSet
4180//      that doesn't exist.
4181//
4182//      * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from
4183//      a ByteMatchSet that doesn't exist.
4184//
4185//   * ErrCodeNonexistentItemException "NonexistentItemException"
4186//   The operation failed because the referenced object doesn't exist.
4187//
4188//   * ErrCodeStaleDataException "StaleDataException"
4189//   The operation failed because you tried to create, update, or delete an object
4190//   by using a change token that has already been used.
4191//
4192//   * ErrCodeLimitsExceededException "LimitsExceededException"
4193//   The operation exceeds a resource limit, for example, the maximum number of
4194//   WebACL objects that you can create for an AWS account. For more information,
4195//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
4196//   in the AWS WAF Developer Guide.
4197//
4198// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateByteMatchSet
4199func (c *WAF) UpdateByteMatchSet(input *UpdateByteMatchSetInput) (*UpdateByteMatchSetOutput, error) {
4200	req, out := c.UpdateByteMatchSetRequest(input)
4201	return out, req.Send()
4202}
4203
4204// UpdateByteMatchSetWithContext is the same as UpdateByteMatchSet with the addition of
4205// the ability to pass a context and additional request options.
4206//
4207// See UpdateByteMatchSet for details on how to use this API operation.
4208//
4209// The context must be non-nil and will be used for request cancellation. If
4210// the context is nil a panic will occur. In the future the SDK may create
4211// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4212// for more information on using Contexts.
4213func (c *WAF) UpdateByteMatchSetWithContext(ctx aws.Context, input *UpdateByteMatchSetInput, opts ...request.Option) (*UpdateByteMatchSetOutput, error) {
4214	req, out := c.UpdateByteMatchSetRequest(input)
4215	req.SetContext(ctx)
4216	req.ApplyOptions(opts...)
4217	return out, req.Send()
4218}
4219
4220const opUpdateIPSet = "UpdateIPSet"
4221
4222// UpdateIPSetRequest generates a "aws/request.Request" representing the
4223// client's request for the UpdateIPSet operation. The "output" return
4224// value will be populated with the request's response once the request complets
4225// successfuly.
4226//
4227// Use "Send" method on the returned Request to send the API call to the service.
4228// the "output" return value is not valid until after Send returns without error.
4229//
4230// See UpdateIPSet for more information on using the UpdateIPSet
4231// API call, and error handling.
4232//
4233// This method is useful when you want to inject custom logic or configuration
4234// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4235//
4236//
4237//    // Example sending a request using the UpdateIPSetRequest method.
4238//    req, resp := client.UpdateIPSetRequest(params)
4239//
4240//    err := req.Send()
4241//    if err == nil { // resp is now filled
4242//        fmt.Println(resp)
4243//    }
4244//
4245// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateIPSet
4246func (c *WAF) UpdateIPSetRequest(input *UpdateIPSetInput) (req *request.Request, output *UpdateIPSetOutput) {
4247	op := &request.Operation{
4248		Name:       opUpdateIPSet,
4249		HTTPMethod: "POST",
4250		HTTPPath:   "/",
4251	}
4252
4253	if input == nil {
4254		input = &UpdateIPSetInput{}
4255	}
4256
4257	output = &UpdateIPSetOutput{}
4258	req = c.newRequest(op, input, output)
4259	return
4260}
4261
4262// UpdateIPSet API operation for AWS WAF.
4263//
4264// Inserts or deletes IPSetDescriptor objects in an IPSet. For each IPSetDescriptor
4265// object, you specify the following values:
4266//
4267//    * Whether to insert or delete the object from the array. If you want to
4268//    change an IPSetDescriptor object, you delete the existing object and add
4269//    a new one.
4270//
4271//    * The IP address version, IPv4 or IPv6.
4272//
4273//    * The IP address in CIDR notation, for example, 192.0.2.0/24 (for the
4274//    range of IP addresses from 192.0.2.0 to 192.0.2.255) or 192.0.2.44/32
4275//    (for the individual IP address 192.0.2.44).
4276//
4277// AWS WAF supports /8, /16, /24, and /32 IP address ranges for IPv4, and /24,
4278// /32, /48, /56, /64 and /128 for IPv6. For more information about CIDR notation,
4279// see the Wikipedia entry Classless Inter-Domain Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
4280//
4281// IPv6 addresses can be represented using any of the following formats:
4282//
4283//    * 1111:0000:0000:0000:0000:0000:0000:0111/128
4284//
4285//    * 1111:0:0:0:0:0:0:0111/128
4286//
4287//    * 1111::0111/128
4288//
4289//    * 1111::111/128
4290//
4291// You use an IPSet to specify which web requests you want to allow or block
4292// based on the IP addresses that the requests originated from. For example,
4293// if you're receiving a lot of requests from one or a small number of IP addresses
4294// and you want to block the requests, you can create an IPSet that specifies
4295// those IP addresses, and then configure AWS WAF to block the requests.
4296//
4297// To create and configure an IPSet, perform the following steps:
4298//
4299// Submit a CreateIPSet request.
4300//
4301// Use GetChangeToken to get the change token that you provide in the ChangeToken
4302// parameter of an UpdateIPSet request.
4303//
4304// Submit an UpdateIPSet request to specify the IP addresses that you want AWS
4305// WAF to watch for.
4306//
4307// When you update an IPSet, you specify the IP addresses that you want to add
4308// and/or the IP addresses that you want to delete. If you want to change an
4309// IP address, you delete the existing IP address and add the new one.
4310//
4311// For more information about how to use the AWS WAF API to allow or block HTTP
4312// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
4313//
4314// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4315// with awserr.Error's Code and Message methods to get detailed information about
4316// the error.
4317//
4318// See the AWS API reference guide for AWS WAF's
4319// API operation UpdateIPSet for usage and error information.
4320//
4321// Returned Error Codes:
4322//   * ErrCodeStaleDataException "StaleDataException"
4323//   The operation failed because you tried to create, update, or delete an object
4324//   by using a change token that has already been used.
4325//
4326//   * ErrCodeInternalErrorException "InternalErrorException"
4327//   The operation failed because of a system problem, even though the request
4328//   was valid. Retry your request.
4329//
4330//   * ErrCodeInvalidAccountException "InvalidAccountException"
4331//   The operation failed because you tried to create, update, or delete an object
4332//   by using an invalid account identifier.
4333//
4334//   * ErrCodeInvalidOperationException "InvalidOperationException"
4335//   The operation failed because there was nothing to do. For example:
4336//
4337//      * You tried to remove a Rule from a WebACL, but the Rule isn't in the
4338//      specified WebACL.
4339//
4340//      * You tried to remove an IP address from an IPSet, but the IP address
4341//      isn't in the specified IPSet.
4342//
4343//      * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the ByteMatchTuple
4344//      isn't in the specified WebACL.
4345//
4346//      * You tried to add a Rule to a WebACL, but the Rule already exists in
4347//      the specified WebACL.
4348//
4349//      * You tried to add an IP address to an IPSet, but the IP address already
4350//      exists in the specified IPSet.
4351//
4352//      * You tried to add a ByteMatchTuple to a ByteMatchSet, but the ByteMatchTuple
4353//      already exists in the specified WebACL.
4354//
4355//   * ErrCodeInvalidParameterException "InvalidParameterException"
4356//   The operation failed because AWS WAF didn't recognize a parameter in the
4357//   request. For example:
4358//
4359//      * You specified an invalid parameter name.
4360//
4361//      * You specified an invalid value.
4362//
4363//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
4364//      using an action other than INSERT or DELETE.
4365//
4366//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
4367//      BLOCK, or COUNT.
4368//
4369//      * You tried to create a RateBasedRule with a RateKey value other than
4370//      IP.
4371//
4372//      * You tried to update a WebACL with a WafActionType other than ALLOW,
4373//      BLOCK, or COUNT.
4374//
4375//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
4376//      HEADER, QUERY_STRING, or URI.
4377//
4378//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
4379//      for Data.
4380//
4381//      * Your request references an ARN that is malformed, or corresponds to
4382//      a resource with which a web ACL cannot be associated.
4383//
4384//   * ErrCodeNonexistentContainerException "NonexistentContainerException"
4385//   The operation failed because you tried to add an object to or delete an object
4386//   from another object that doesn't exist. For example:
4387//
4388//      * You tried to add a Rule to or delete a Rule from a WebACL that doesn't
4389//      exist.
4390//
4391//      * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a Rule
4392//      that doesn't exist.
4393//
4394//      * You tried to add an IP address to or delete an IP address from an IPSet
4395//      that doesn't exist.
4396//
4397//      * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from
4398//      a ByteMatchSet that doesn't exist.
4399//
4400//   * ErrCodeNonexistentItemException "NonexistentItemException"
4401//   The operation failed because the referenced object doesn't exist.
4402//
4403//   * ErrCodeReferencedItemException "ReferencedItemException"
4404//   The operation failed because you tried to delete an object that is still
4405//   in use. For example:
4406//
4407//      * You tried to delete a ByteMatchSet that is still referenced by a Rule.
4408//
4409//      * You tried to delete a Rule that is still referenced by a WebACL.
4410//
4411//   * ErrCodeLimitsExceededException "LimitsExceededException"
4412//   The operation exceeds a resource limit, for example, the maximum number of
4413//   WebACL objects that you can create for an AWS account. For more information,
4414//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
4415//   in the AWS WAF Developer Guide.
4416//
4417// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateIPSet
4418func (c *WAF) UpdateIPSet(input *UpdateIPSetInput) (*UpdateIPSetOutput, error) {
4419	req, out := c.UpdateIPSetRequest(input)
4420	return out, req.Send()
4421}
4422
4423// UpdateIPSetWithContext is the same as UpdateIPSet with the addition of
4424// the ability to pass a context and additional request options.
4425//
4426// See UpdateIPSet for details on how to use this API operation.
4427//
4428// The context must be non-nil and will be used for request cancellation. If
4429// the context is nil a panic will occur. In the future the SDK may create
4430// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4431// for more information on using Contexts.
4432func (c *WAF) UpdateIPSetWithContext(ctx aws.Context, input *UpdateIPSetInput, opts ...request.Option) (*UpdateIPSetOutput, error) {
4433	req, out := c.UpdateIPSetRequest(input)
4434	req.SetContext(ctx)
4435	req.ApplyOptions(opts...)
4436	return out, req.Send()
4437}
4438
4439const opUpdateRateBasedRule = "UpdateRateBasedRule"
4440
4441// UpdateRateBasedRuleRequest generates a "aws/request.Request" representing the
4442// client's request for the UpdateRateBasedRule operation. The "output" return
4443// value will be populated with the request's response once the request complets
4444// successfuly.
4445//
4446// Use "Send" method on the returned Request to send the API call to the service.
4447// the "output" return value is not valid until after Send returns without error.
4448//
4449// See UpdateRateBasedRule for more information on using the UpdateRateBasedRule
4450// API call, and error handling.
4451//
4452// This method is useful when you want to inject custom logic or configuration
4453// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4454//
4455//
4456//    // Example sending a request using the UpdateRateBasedRuleRequest method.
4457//    req, resp := client.UpdateRateBasedRuleRequest(params)
4458//
4459//    err := req.Send()
4460//    if err == nil { // resp is now filled
4461//        fmt.Println(resp)
4462//    }
4463//
4464// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateRateBasedRule
4465func (c *WAF) UpdateRateBasedRuleRequest(input *UpdateRateBasedRuleInput) (req *request.Request, output *UpdateRateBasedRuleOutput) {
4466	op := &request.Operation{
4467		Name:       opUpdateRateBasedRule,
4468		HTTPMethod: "POST",
4469		HTTPPath:   "/",
4470	}
4471
4472	if input == nil {
4473		input = &UpdateRateBasedRuleInput{}
4474	}
4475
4476	output = &UpdateRateBasedRuleOutput{}
4477	req = c.newRequest(op, input, output)
4478	return
4479}
4480
4481// UpdateRateBasedRule API operation for AWS WAF.
4482//
4483// Inserts or deletes Predicate objects in a rule and updates the RateLimit
4484// in the rule.
4485//
4486// Each Predicate object identifies a predicate, such as a ByteMatchSet or an
4487// IPSet, that specifies the web requests that you want to block or count. The
4488// RateLimit specifies the number of requests every five minutes that triggers
4489// the rule.
4490//
4491// If you add more than one predicate to a RateBasedRule, a request must match
4492// all the predicates and exceed the RateLimit to be counted or blocked. For
4493// example, suppose you add the following to a RateBasedRule:
4494//
4495//    * An IPSet that matches the IP address 192.0.2.44/32
4496//
4497//    * A ByteMatchSet that matches BadBot in the User-Agent header
4498//
4499// Further, you specify a RateLimit of 15,000.
4500//
4501// You then add the RateBasedRule to a WebACL and specify that you want to block
4502// requests that satisfy the rule. For a request to be blocked, it must come
4503// from the IP address 192.0.2.44 and the User-Agent header in the request must
4504// contain the value BadBot. Further, requests that match these two conditions
4505// much be received at a rate of more than 15,000 every five minutes. If the
4506// rate drops below this limit, AWS WAF no longer blocks the requests.
4507//
4508// As a second example, suppose you want to limit requests to a particular page
4509// on your site. To do this, you could add the following to a RateBasedRule:
4510//
4511//    * A ByteMatchSet with FieldToMatch of URI
4512//
4513//    * A PositionalConstraint of STARTS_WITH
4514//
4515//    * A TargetString of login
4516//
4517// Further, you specify a RateLimit of 15,000.
4518//
4519// By adding this RateBasedRule to a WebACL, you could limit requests to your
4520// login page without affecting the rest of your site.
4521//
4522// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4523// with awserr.Error's Code and Message methods to get detailed information about
4524// the error.
4525//
4526// See the AWS API reference guide for AWS WAF's
4527// API operation UpdateRateBasedRule for usage and error information.
4528//
4529// Returned Error Codes:
4530//   * ErrCodeStaleDataException "StaleDataException"
4531//   The operation failed because you tried to create, update, or delete an object
4532//   by using a change token that has already been used.
4533//
4534//   * ErrCodeInternalErrorException "InternalErrorException"
4535//   The operation failed because of a system problem, even though the request
4536//   was valid. Retry your request.
4537//
4538//   * ErrCodeInvalidAccountException "InvalidAccountException"
4539//   The operation failed because you tried to create, update, or delete an object
4540//   by using an invalid account identifier.
4541//
4542//   * ErrCodeInvalidOperationException "InvalidOperationException"
4543//   The operation failed because there was nothing to do. For example:
4544//
4545//      * You tried to remove a Rule from a WebACL, but the Rule isn't in the
4546//      specified WebACL.
4547//
4548//      * You tried to remove an IP address from an IPSet, but the IP address
4549//      isn't in the specified IPSet.
4550//
4551//      * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the ByteMatchTuple
4552//      isn't in the specified WebACL.
4553//
4554//      * You tried to add a Rule to a WebACL, but the Rule already exists in
4555//      the specified WebACL.
4556//
4557//      * You tried to add an IP address to an IPSet, but the IP address already
4558//      exists in the specified IPSet.
4559//
4560//      * You tried to add a ByteMatchTuple to a ByteMatchSet, but the ByteMatchTuple
4561//      already exists in the specified WebACL.
4562//
4563//   * ErrCodeInvalidParameterException "InvalidParameterException"
4564//   The operation failed because AWS WAF didn't recognize a parameter in the
4565//   request. For example:
4566//
4567//      * You specified an invalid parameter name.
4568//
4569//      * You specified an invalid value.
4570//
4571//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
4572//      using an action other than INSERT or DELETE.
4573//
4574//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
4575//      BLOCK, or COUNT.
4576//
4577//      * You tried to create a RateBasedRule with a RateKey value other than
4578//      IP.
4579//
4580//      * You tried to update a WebACL with a WafActionType other than ALLOW,
4581//      BLOCK, or COUNT.
4582//
4583//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
4584//      HEADER, QUERY_STRING, or URI.
4585//
4586//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
4587//      for Data.
4588//
4589//      * Your request references an ARN that is malformed, or corresponds to
4590//      a resource with which a web ACL cannot be associated.
4591//
4592//   * ErrCodeNonexistentContainerException "NonexistentContainerException"
4593//   The operation failed because you tried to add an object to or delete an object
4594//   from another object that doesn't exist. For example:
4595//
4596//      * You tried to add a Rule to or delete a Rule from a WebACL that doesn't
4597//      exist.
4598//
4599//      * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a Rule
4600//      that doesn't exist.
4601//
4602//      * You tried to add an IP address to or delete an IP address from an IPSet
4603//      that doesn't exist.
4604//
4605//      * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from
4606//      a ByteMatchSet that doesn't exist.
4607//
4608//   * ErrCodeNonexistentItemException "NonexistentItemException"
4609//   The operation failed because the referenced object doesn't exist.
4610//
4611//   * ErrCodeReferencedItemException "ReferencedItemException"
4612//   The operation failed because you tried to delete an object that is still
4613//   in use. For example:
4614//
4615//      * You tried to delete a ByteMatchSet that is still referenced by a Rule.
4616//
4617//      * You tried to delete a Rule that is still referenced by a WebACL.
4618//
4619//   * ErrCodeLimitsExceededException "LimitsExceededException"
4620//   The operation exceeds a resource limit, for example, the maximum number of
4621//   WebACL objects that you can create for an AWS account. For more information,
4622//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
4623//   in the AWS WAF Developer Guide.
4624//
4625// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateRateBasedRule
4626func (c *WAF) UpdateRateBasedRule(input *UpdateRateBasedRuleInput) (*UpdateRateBasedRuleOutput, error) {
4627	req, out := c.UpdateRateBasedRuleRequest(input)
4628	return out, req.Send()
4629}
4630
4631// UpdateRateBasedRuleWithContext is the same as UpdateRateBasedRule with the addition of
4632// the ability to pass a context and additional request options.
4633//
4634// See UpdateRateBasedRule for details on how to use this API operation.
4635//
4636// The context must be non-nil and will be used for request cancellation. If
4637// the context is nil a panic will occur. In the future the SDK may create
4638// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4639// for more information on using Contexts.
4640func (c *WAF) UpdateRateBasedRuleWithContext(ctx aws.Context, input *UpdateRateBasedRuleInput, opts ...request.Option) (*UpdateRateBasedRuleOutput, error) {
4641	req, out := c.UpdateRateBasedRuleRequest(input)
4642	req.SetContext(ctx)
4643	req.ApplyOptions(opts...)
4644	return out, req.Send()
4645}
4646
4647const opUpdateRule = "UpdateRule"
4648
4649// UpdateRuleRequest generates a "aws/request.Request" representing the
4650// client's request for the UpdateRule operation. The "output" return
4651// value will be populated with the request's response once the request complets
4652// successfuly.
4653//
4654// Use "Send" method on the returned Request to send the API call to the service.
4655// the "output" return value is not valid until after Send returns without error.
4656//
4657// See UpdateRule for more information on using the UpdateRule
4658// API call, and error handling.
4659//
4660// This method is useful when you want to inject custom logic or configuration
4661// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4662//
4663//
4664//    // Example sending a request using the UpdateRuleRequest method.
4665//    req, resp := client.UpdateRuleRequest(params)
4666//
4667//    err := req.Send()
4668//    if err == nil { // resp is now filled
4669//        fmt.Println(resp)
4670//    }
4671//
4672// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateRule
4673func (c *WAF) UpdateRuleRequest(input *UpdateRuleInput) (req *request.Request, output *UpdateRuleOutput) {
4674	op := &request.Operation{
4675		Name:       opUpdateRule,
4676		HTTPMethod: "POST",
4677		HTTPPath:   "/",
4678	}
4679
4680	if input == nil {
4681		input = &UpdateRuleInput{}
4682	}
4683
4684	output = &UpdateRuleOutput{}
4685	req = c.newRequest(op, input, output)
4686	return
4687}
4688
4689// UpdateRule API operation for AWS WAF.
4690//
4691// Inserts or deletes Predicate objects in a Rule. Each Predicate object identifies
4692// a predicate, such as a ByteMatchSet or an IPSet, that specifies the web requests
4693// that you want to allow, block, or count. If you add more than one predicate
4694// to a Rule, a request must match all of the specifications to be allowed,
4695// blocked, or counted. For example, suppose you add the following to a Rule:
4696//
4697//    * A ByteMatchSet that matches the value BadBot in the User-Agent header
4698//
4699//    * An IPSet that matches the IP address 192.0.2.44
4700//
4701// You then add the Rule to a WebACL and specify that you want to block requests
4702// that satisfy the Rule. For a request to be blocked, the User-Agent header
4703// in the request must contain the value BadBotand the request must originate
4704// from the IP address 192.0.2.44.
4705//
4706// To create and configure a Rule, perform the following steps:
4707//
4708// Create and update the predicates that you want to include in the Rule.
4709//
4710// Create the Rule. See CreateRule.
4711//
4712// Use GetChangeToken to get the change token that you provide in the ChangeToken
4713// parameter of an UpdateRule request.
4714//
4715// Submit an UpdateRule request to add predicates to the Rule.
4716//
4717// Create and update a WebACL that contains the Rule. See CreateWebACL.
4718//
4719// If you want to replace one ByteMatchSet or IPSet with another, you delete
4720// the existing one and add the new one.
4721//
4722// For more information about how to use the AWS WAF API to allow or block HTTP
4723// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
4724//
4725// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4726// with awserr.Error's Code and Message methods to get detailed information about
4727// the error.
4728//
4729// See the AWS API reference guide for AWS WAF's
4730// API operation UpdateRule for usage and error information.
4731//
4732// Returned Error Codes:
4733//   * ErrCodeStaleDataException "StaleDataException"
4734//   The operation failed because you tried to create, update, or delete an object
4735//   by using a change token that has already been used.
4736//
4737//   * ErrCodeInternalErrorException "InternalErrorException"
4738//   The operation failed because of a system problem, even though the request
4739//   was valid. Retry your request.
4740//
4741//   * ErrCodeInvalidAccountException "InvalidAccountException"
4742//   The operation failed because you tried to create, update, or delete an object
4743//   by using an invalid account identifier.
4744//
4745//   * ErrCodeInvalidOperationException "InvalidOperationException"
4746//   The operation failed because there was nothing to do. For example:
4747//
4748//      * You tried to remove a Rule from a WebACL, but the Rule isn't in the
4749//      specified WebACL.
4750//
4751//      * You tried to remove an IP address from an IPSet, but the IP address
4752//      isn't in the specified IPSet.
4753//
4754//      * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the ByteMatchTuple
4755//      isn't in the specified WebACL.
4756//
4757//      * You tried to add a Rule to a WebACL, but the Rule already exists in
4758//      the specified WebACL.
4759//
4760//      * You tried to add an IP address to an IPSet, but the IP address already
4761//      exists in the specified IPSet.
4762//
4763//      * You tried to add a ByteMatchTuple to a ByteMatchSet, but the ByteMatchTuple
4764//      already exists in the specified WebACL.
4765//
4766//   * ErrCodeInvalidParameterException "InvalidParameterException"
4767//   The operation failed because AWS WAF didn't recognize a parameter in the
4768//   request. For example:
4769//
4770//      * You specified an invalid parameter name.
4771//
4772//      * You specified an invalid value.
4773//
4774//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
4775//      using an action other than INSERT or DELETE.
4776//
4777//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
4778//      BLOCK, or COUNT.
4779//
4780//      * You tried to create a RateBasedRule with a RateKey value other than
4781//      IP.
4782//
4783//      * You tried to update a WebACL with a WafActionType other than ALLOW,
4784//      BLOCK, or COUNT.
4785//
4786//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
4787//      HEADER, QUERY_STRING, or URI.
4788//
4789//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
4790//      for Data.
4791//
4792//      * Your request references an ARN that is malformed, or corresponds to
4793//      a resource with which a web ACL cannot be associated.
4794//
4795//   * ErrCodeNonexistentContainerException "NonexistentContainerException"
4796//   The operation failed because you tried to add an object to or delete an object
4797//   from another object that doesn't exist. For example:
4798//
4799//      * You tried to add a Rule to or delete a Rule from a WebACL that doesn't
4800//      exist.
4801//
4802//      * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a Rule
4803//      that doesn't exist.
4804//
4805//      * You tried to add an IP address to or delete an IP address from an IPSet
4806//      that doesn't exist.
4807//
4808//      * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from
4809//      a ByteMatchSet that doesn't exist.
4810//
4811//   * ErrCodeNonexistentItemException "NonexistentItemException"
4812//   The operation failed because the referenced object doesn't exist.
4813//
4814//   * ErrCodeReferencedItemException "ReferencedItemException"
4815//   The operation failed because you tried to delete an object that is still
4816//   in use. For example:
4817//
4818//      * You tried to delete a ByteMatchSet that is still referenced by a Rule.
4819//
4820//      * You tried to delete a Rule that is still referenced by a WebACL.
4821//
4822//   * ErrCodeLimitsExceededException "LimitsExceededException"
4823//   The operation exceeds a resource limit, for example, the maximum number of
4824//   WebACL objects that you can create for an AWS account. For more information,
4825//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
4826//   in the AWS WAF Developer Guide.
4827//
4828// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateRule
4829func (c *WAF) UpdateRule(input *UpdateRuleInput) (*UpdateRuleOutput, error) {
4830	req, out := c.UpdateRuleRequest(input)
4831	return out, req.Send()
4832}
4833
4834// UpdateRuleWithContext is the same as UpdateRule with the addition of
4835// the ability to pass a context and additional request options.
4836//
4837// See UpdateRule for details on how to use this API operation.
4838//
4839// The context must be non-nil and will be used for request cancellation. If
4840// the context is nil a panic will occur. In the future the SDK may create
4841// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4842// for more information on using Contexts.
4843func (c *WAF) UpdateRuleWithContext(ctx aws.Context, input *UpdateRuleInput, opts ...request.Option) (*UpdateRuleOutput, error) {
4844	req, out := c.UpdateRuleRequest(input)
4845	req.SetContext(ctx)
4846	req.ApplyOptions(opts...)
4847	return out, req.Send()
4848}
4849
4850const opUpdateSizeConstraintSet = "UpdateSizeConstraintSet"
4851
4852// UpdateSizeConstraintSetRequest generates a "aws/request.Request" representing the
4853// client's request for the UpdateSizeConstraintSet operation. The "output" return
4854// value will be populated with the request's response once the request complets
4855// successfuly.
4856//
4857// Use "Send" method on the returned Request to send the API call to the service.
4858// the "output" return value is not valid until after Send returns without error.
4859//
4860// See UpdateSizeConstraintSet for more information on using the UpdateSizeConstraintSet
4861// API call, and error handling.
4862//
4863// This method is useful when you want to inject custom logic or configuration
4864// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4865//
4866//
4867//    // Example sending a request using the UpdateSizeConstraintSetRequest method.
4868//    req, resp := client.UpdateSizeConstraintSetRequest(params)
4869//
4870//    err := req.Send()
4871//    if err == nil { // resp is now filled
4872//        fmt.Println(resp)
4873//    }
4874//
4875// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateSizeConstraintSet
4876func (c *WAF) UpdateSizeConstraintSetRequest(input *UpdateSizeConstraintSetInput) (req *request.Request, output *UpdateSizeConstraintSetOutput) {
4877	op := &request.Operation{
4878		Name:       opUpdateSizeConstraintSet,
4879		HTTPMethod: "POST",
4880		HTTPPath:   "/",
4881	}
4882
4883	if input == nil {
4884		input = &UpdateSizeConstraintSetInput{}
4885	}
4886
4887	output = &UpdateSizeConstraintSetOutput{}
4888	req = c.newRequest(op, input, output)
4889	return
4890}
4891
4892// UpdateSizeConstraintSet API operation for AWS WAF.
4893//
4894// Inserts or deletes SizeConstraint objects (filters) in a SizeConstraintSet.
4895// For each SizeConstraint object, you specify the following values:
4896//
4897//    * Whether to insert or delete the object from the array. If you want to
4898//    change a SizeConstraintSetUpdate object, you delete the existing object
4899//    and add a new one.
4900//
4901//    * The part of a web request that you want AWS WAF to evaluate, such as
4902//    the length of a query string or the length of the User-Agent header.
4903//
4904//    * Whether to perform any transformations on the request, such as converting
4905//    it to lowercase, before checking its length. Note that transformations
4906//    of the request body are not supported because the AWS resource forwards
4907//    only the first 8192 bytes of your request to AWS WAF.
4908//
4909//    * A ComparisonOperator used for evaluating the selected part of the request
4910//    against the specified Size, such as equals, greater than, less than, and
4911//    so on.
4912//
4913//    * The length, in bytes, that you want AWS WAF to watch for in selected
4914//    part of the request. The length is computed after applying the transformation.
4915//
4916// For example, you can add a SizeConstraintSetUpdate object that matches web
4917// requests in which the length of the User-Agent header is greater than 100
4918// bytes. You can then configure AWS WAF to block those requests.
4919//
4920// To create and configure a SizeConstraintSet, perform the following steps:
4921//
4922// Create a SizeConstraintSet. For more information, see CreateSizeConstraintSet.
4923//
4924// Use GetChangeToken to get the change token that you provide in the ChangeToken
4925// parameter of an UpdateSizeConstraintSet request.
4926//
4927// Submit an UpdateSizeConstraintSet request to specify the part of the request
4928// that you want AWS WAF to inspect (for example, the header or the URI) and
4929// the value that you want AWS WAF to watch for.
4930//
4931// For more information about how to use the AWS WAF API to allow or block HTTP
4932// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
4933//
4934// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4935// with awserr.Error's Code and Message methods to get detailed information about
4936// the error.
4937//
4938// See the AWS API reference guide for AWS WAF's
4939// API operation UpdateSizeConstraintSet for usage and error information.
4940//
4941// Returned Error Codes:
4942//   * ErrCodeStaleDataException "StaleDataException"
4943//   The operation failed because you tried to create, update, or delete an object
4944//   by using a change token that has already been used.
4945//
4946//   * ErrCodeInternalErrorException "InternalErrorException"
4947//   The operation failed because of a system problem, even though the request
4948//   was valid. Retry your request.
4949//
4950//   * ErrCodeInvalidAccountException "InvalidAccountException"
4951//   The operation failed because you tried to create, update, or delete an object
4952//   by using an invalid account identifier.
4953//
4954//   * ErrCodeInvalidOperationException "InvalidOperationException"
4955//   The operation failed because there was nothing to do. For example:
4956//
4957//      * You tried to remove a Rule from a WebACL, but the Rule isn't in the
4958//      specified WebACL.
4959//
4960//      * You tried to remove an IP address from an IPSet, but the IP address
4961//      isn't in the specified IPSet.
4962//
4963//      * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the ByteMatchTuple
4964//      isn't in the specified WebACL.
4965//
4966//      * You tried to add a Rule to a WebACL, but the Rule already exists in
4967//      the specified WebACL.
4968//
4969//      * You tried to add an IP address to an IPSet, but the IP address already
4970//      exists in the specified IPSet.
4971//
4972//      * You tried to add a ByteMatchTuple to a ByteMatchSet, but the ByteMatchTuple
4973//      already exists in the specified WebACL.
4974//
4975//   * ErrCodeInvalidParameterException "InvalidParameterException"
4976//   The operation failed because AWS WAF didn't recognize a parameter in the
4977//   request. For example:
4978//
4979//      * You specified an invalid parameter name.
4980//
4981//      * You specified an invalid value.
4982//
4983//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
4984//      using an action other than INSERT or DELETE.
4985//
4986//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
4987//      BLOCK, or COUNT.
4988//
4989//      * You tried to create a RateBasedRule with a RateKey value other than
4990//      IP.
4991//
4992//      * You tried to update a WebACL with a WafActionType other than ALLOW,
4993//      BLOCK, or COUNT.
4994//
4995//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
4996//      HEADER, QUERY_STRING, or URI.
4997//
4998//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
4999//      for Data.
5000//
5001//      * Your request references an ARN that is malformed, or corresponds to
5002//      a resource with which a web ACL cannot be associated.
5003//
5004//   * ErrCodeNonexistentContainerException "NonexistentContainerException"
5005//   The operation failed because you tried to add an object to or delete an object
5006//   from another object that doesn't exist. For example:
5007//
5008//      * You tried to add a Rule to or delete a Rule from a WebACL that doesn't
5009//      exist.
5010//
5011//      * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a Rule
5012//      that doesn't exist.
5013//
5014//      * You tried to add an IP address to or delete an IP address from an IPSet
5015//      that doesn't exist.
5016//
5017//      * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from
5018//      a ByteMatchSet that doesn't exist.
5019//
5020//   * ErrCodeNonexistentItemException "NonexistentItemException"
5021//   The operation failed because the referenced object doesn't exist.
5022//
5023//   * ErrCodeReferencedItemException "ReferencedItemException"
5024//   The operation failed because you tried to delete an object that is still
5025//   in use. For example:
5026//
5027//      * You tried to delete a ByteMatchSet that is still referenced by a Rule.
5028//
5029//      * You tried to delete a Rule that is still referenced by a WebACL.
5030//
5031//   * ErrCodeLimitsExceededException "LimitsExceededException"
5032//   The operation exceeds a resource limit, for example, the maximum number of
5033//   WebACL objects that you can create for an AWS account. For more information,
5034//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
5035//   in the AWS WAF Developer Guide.
5036//
5037// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateSizeConstraintSet
5038func (c *WAF) UpdateSizeConstraintSet(input *UpdateSizeConstraintSetInput) (*UpdateSizeConstraintSetOutput, error) {
5039	req, out := c.UpdateSizeConstraintSetRequest(input)
5040	return out, req.Send()
5041}
5042
5043// UpdateSizeConstraintSetWithContext is the same as UpdateSizeConstraintSet with the addition of
5044// the ability to pass a context and additional request options.
5045//
5046// See UpdateSizeConstraintSet for details on how to use this API operation.
5047//
5048// The context must be non-nil and will be used for request cancellation. If
5049// the context is nil a panic will occur. In the future the SDK may create
5050// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5051// for more information on using Contexts.
5052func (c *WAF) UpdateSizeConstraintSetWithContext(ctx aws.Context, input *UpdateSizeConstraintSetInput, opts ...request.Option) (*UpdateSizeConstraintSetOutput, error) {
5053	req, out := c.UpdateSizeConstraintSetRequest(input)
5054	req.SetContext(ctx)
5055	req.ApplyOptions(opts...)
5056	return out, req.Send()
5057}
5058
5059const opUpdateSqlInjectionMatchSet = "UpdateSqlInjectionMatchSet"
5060
5061// UpdateSqlInjectionMatchSetRequest generates a "aws/request.Request" representing the
5062// client's request for the UpdateSqlInjectionMatchSet operation. The "output" return
5063// value will be populated with the request's response once the request complets
5064// successfuly.
5065//
5066// Use "Send" method on the returned Request to send the API call to the service.
5067// the "output" return value is not valid until after Send returns without error.
5068//
5069// See UpdateSqlInjectionMatchSet for more information on using the UpdateSqlInjectionMatchSet
5070// API call, and error handling.
5071//
5072// This method is useful when you want to inject custom logic or configuration
5073// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5074//
5075//
5076//    // Example sending a request using the UpdateSqlInjectionMatchSetRequest method.
5077//    req, resp := client.UpdateSqlInjectionMatchSetRequest(params)
5078//
5079//    err := req.Send()
5080//    if err == nil { // resp is now filled
5081//        fmt.Println(resp)
5082//    }
5083//
5084// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateSqlInjectionMatchSet
5085func (c *WAF) UpdateSqlInjectionMatchSetRequest(input *UpdateSqlInjectionMatchSetInput) (req *request.Request, output *UpdateSqlInjectionMatchSetOutput) {
5086	op := &request.Operation{
5087		Name:       opUpdateSqlInjectionMatchSet,
5088		HTTPMethod: "POST",
5089		HTTPPath:   "/",
5090	}
5091
5092	if input == nil {
5093		input = &UpdateSqlInjectionMatchSetInput{}
5094	}
5095
5096	output = &UpdateSqlInjectionMatchSetOutput{}
5097	req = c.newRequest(op, input, output)
5098	return
5099}
5100
5101// UpdateSqlInjectionMatchSet API operation for AWS WAF.
5102//
5103// Inserts or deletes SqlInjectionMatchTuple objects (filters) in a SqlInjectionMatchSet.
5104// For each SqlInjectionMatchTuple object, you specify the following values:
5105//
5106//    * Action: Whether to insert the object into or delete the object from
5107//    the array. To change a SqlInjectionMatchTuple, you delete the existing
5108//    object and add a new one.
5109//
5110//    * FieldToMatch: The part of web requests that you want AWS WAF to inspect
5111//    and, if you want AWS WAF to inspect a header, the name of the header.
5112//
5113//    * TextTransformation: Which text transformation, if any, to perform on
5114//    the web request before inspecting the request for snippets of malicious
5115//    SQL code.
5116//
5117// You use SqlInjectionMatchSet objects to specify which CloudFront requests
5118// you want to allow, block, or count. For example, if you're receiving requests
5119// that contain snippets of SQL code in the query string and you want to block
5120// the requests, you can create a SqlInjectionMatchSet with the applicable settings,
5121// and then configure AWS WAF to block the requests.
5122//
5123// To create and configure a SqlInjectionMatchSet, perform the following steps:
5124//
5125// Submit a CreateSqlInjectionMatchSet request.
5126//
5127// Use GetChangeToken to get the change token that you provide in the ChangeToken
5128// parameter of an UpdateIPSet request.
5129//
5130// Submit an UpdateSqlInjectionMatchSet request to specify the parts of web
5131// requests that you want AWS WAF to inspect for snippets of SQL code.
5132//
5133// For more information about how to use the AWS WAF API to allow or block HTTP
5134// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
5135//
5136// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5137// with awserr.Error's Code and Message methods to get detailed information about
5138// the error.
5139//
5140// See the AWS API reference guide for AWS WAF's
5141// API operation UpdateSqlInjectionMatchSet for usage and error information.
5142//
5143// Returned Error Codes:
5144//   * ErrCodeInternalErrorException "InternalErrorException"
5145//   The operation failed because of a system problem, even though the request
5146//   was valid. Retry your request.
5147//
5148//   * ErrCodeInvalidAccountException "InvalidAccountException"
5149//   The operation failed because you tried to create, update, or delete an object
5150//   by using an invalid account identifier.
5151//
5152//   * ErrCodeInvalidOperationException "InvalidOperationException"
5153//   The operation failed because there was nothing to do. For example:
5154//
5155//      * You tried to remove a Rule from a WebACL, but the Rule isn't in the
5156//      specified WebACL.
5157//
5158//      * You tried to remove an IP address from an IPSet, but the IP address
5159//      isn't in the specified IPSet.
5160//
5161//      * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the ByteMatchTuple
5162//      isn't in the specified WebACL.
5163//
5164//      * You tried to add a Rule to a WebACL, but the Rule already exists in
5165//      the specified WebACL.
5166//
5167//      * You tried to add an IP address to an IPSet, but the IP address already
5168//      exists in the specified IPSet.
5169//
5170//      * You tried to add a ByteMatchTuple to a ByteMatchSet, but the ByteMatchTuple
5171//      already exists in the specified WebACL.
5172//
5173//   * ErrCodeInvalidParameterException "InvalidParameterException"
5174//   The operation failed because AWS WAF didn't recognize a parameter in the
5175//   request. For example:
5176//
5177//      * You specified an invalid parameter name.
5178//
5179//      * You specified an invalid value.
5180//
5181//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
5182//      using an action other than INSERT or DELETE.
5183//
5184//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
5185//      BLOCK, or COUNT.
5186//
5187//      * You tried to create a RateBasedRule with a RateKey value other than
5188//      IP.
5189//
5190//      * You tried to update a WebACL with a WafActionType other than ALLOW,
5191//      BLOCK, or COUNT.
5192//
5193//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
5194//      HEADER, QUERY_STRING, or URI.
5195//
5196//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
5197//      for Data.
5198//
5199//      * Your request references an ARN that is malformed, or corresponds to
5200//      a resource with which a web ACL cannot be associated.
5201//
5202//   * ErrCodeNonexistentContainerException "NonexistentContainerException"
5203//   The operation failed because you tried to add an object to or delete an object
5204//   from another object that doesn't exist. For example:
5205//
5206//      * You tried to add a Rule to or delete a Rule from a WebACL that doesn't
5207//      exist.
5208//
5209//      * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a Rule
5210//      that doesn't exist.
5211//
5212//      * You tried to add an IP address to or delete an IP address from an IPSet
5213//      that doesn't exist.
5214//
5215//      * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from
5216//      a ByteMatchSet that doesn't exist.
5217//
5218//   * ErrCodeNonexistentItemException "NonexistentItemException"
5219//   The operation failed because the referenced object doesn't exist.
5220//
5221//   * ErrCodeStaleDataException "StaleDataException"
5222//   The operation failed because you tried to create, update, or delete an object
5223//   by using a change token that has already been used.
5224//
5225//   * ErrCodeLimitsExceededException "LimitsExceededException"
5226//   The operation exceeds a resource limit, for example, the maximum number of
5227//   WebACL objects that you can create for an AWS account. For more information,
5228//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
5229//   in the AWS WAF Developer Guide.
5230//
5231// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateSqlInjectionMatchSet
5232func (c *WAF) UpdateSqlInjectionMatchSet(input *UpdateSqlInjectionMatchSetInput) (*UpdateSqlInjectionMatchSetOutput, error) {
5233	req, out := c.UpdateSqlInjectionMatchSetRequest(input)
5234	return out, req.Send()
5235}
5236
5237// UpdateSqlInjectionMatchSetWithContext is the same as UpdateSqlInjectionMatchSet with the addition of
5238// the ability to pass a context and additional request options.
5239//
5240// See UpdateSqlInjectionMatchSet for details on how to use this API operation.
5241//
5242// The context must be non-nil and will be used for request cancellation. If
5243// the context is nil a panic will occur. In the future the SDK may create
5244// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5245// for more information on using Contexts.
5246func (c *WAF) UpdateSqlInjectionMatchSetWithContext(ctx aws.Context, input *UpdateSqlInjectionMatchSetInput, opts ...request.Option) (*UpdateSqlInjectionMatchSetOutput, error) {
5247	req, out := c.UpdateSqlInjectionMatchSetRequest(input)
5248	req.SetContext(ctx)
5249	req.ApplyOptions(opts...)
5250	return out, req.Send()
5251}
5252
5253const opUpdateWebACL = "UpdateWebACL"
5254
5255// UpdateWebACLRequest generates a "aws/request.Request" representing the
5256// client's request for the UpdateWebACL operation. The "output" return
5257// value will be populated with the request's response once the request complets
5258// successfuly.
5259//
5260// Use "Send" method on the returned Request to send the API call to the service.
5261// the "output" return value is not valid until after Send returns without error.
5262//
5263// See UpdateWebACL for more information on using the UpdateWebACL
5264// API call, and error handling.
5265//
5266// This method is useful when you want to inject custom logic or configuration
5267// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5268//
5269//
5270//    // Example sending a request using the UpdateWebACLRequest method.
5271//    req, resp := client.UpdateWebACLRequest(params)
5272//
5273//    err := req.Send()
5274//    if err == nil { // resp is now filled
5275//        fmt.Println(resp)
5276//    }
5277//
5278// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateWebACL
5279func (c *WAF) UpdateWebACLRequest(input *UpdateWebACLInput) (req *request.Request, output *UpdateWebACLOutput) {
5280	op := &request.Operation{
5281		Name:       opUpdateWebACL,
5282		HTTPMethod: "POST",
5283		HTTPPath:   "/",
5284	}
5285
5286	if input == nil {
5287		input = &UpdateWebACLInput{}
5288	}
5289
5290	output = &UpdateWebACLOutput{}
5291	req = c.newRequest(op, input, output)
5292	return
5293}
5294
5295// UpdateWebACL API operation for AWS WAF.
5296//
5297// Inserts or deletes ActivatedRule objects in a WebACL. Each Rule identifies
5298// web requests that you want to allow, block, or count. When you update a WebACL,
5299// you specify the following values:
5300//
5301//    * A default action for the WebACL, either ALLOW or BLOCK. AWS WAF performs
5302//    the default action if a request doesn't match the criteria in any of the
5303//    Rules in a WebACL.
5304//
5305//    * The Rules that you want to add and/or delete. If you want to replace
5306//    one Rule with another, you delete the existing Rule and add the new one.
5307//
5308//    * For each Rule, whether you want AWS WAF to allow requests, block requests,
5309//    or count requests that match the conditions in the Rule.
5310//
5311//    * The order in which you want AWS WAF to evaluate the Rules in a WebACL.
5312//    If you add more than one Rule to a WebACL, AWS WAF evaluates each request
5313//    against the Rules in order based on the value of Priority. (The Rule that
5314//    has the lowest value for Priority is evaluated first.) When a web request
5315//    matches all of the predicates (such as ByteMatchSets and IPSets) in a
5316//    Rule, AWS WAF immediately takes the corresponding action, allow or block,
5317//    and doesn't evaluate the request against the remaining Rules in the WebACL,
5318//    if any.
5319//
5320// To create and configure a WebACL, perform the following steps:
5321//
5322// Create and update the predicates that you want to include in Rules. For more
5323// information, see CreateByteMatchSet, UpdateByteMatchSet, CreateIPSet, UpdateIPSet,
5324// CreateSqlInjectionMatchSet, and UpdateSqlInjectionMatchSet.
5325//
5326// Create and update the Rules that you want to include in the WebACL. For more
5327// information, see CreateRule and UpdateRule.
5328//
5329// Create a WebACL. See CreateWebACL.
5330//
5331// Use GetChangeToken to get the change token that you provide in the ChangeToken
5332// parameter of an UpdateWebACL request.
5333//
5334// Submit an UpdateWebACL request to specify the Rules that you want to include
5335// in the WebACL, to specify the default action, and to associate the WebACL
5336// with a CloudFront distribution.
5337//
5338// Be aware that if you try to add a RATE_BASED rule to a web ACL without setting
5339// the rule type when first creating the rule, the UpdateWebACL request will
5340// fail because the request tries to add a REGULAR rule (the default rule type)
5341// with the specified ID, which does not exist.
5342//
5343// For more information about how to use the AWS WAF API to allow or block HTTP
5344// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
5345//
5346// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5347// with awserr.Error's Code and Message methods to get detailed information about
5348// the error.
5349//
5350// See the AWS API reference guide for AWS WAF's
5351// API operation UpdateWebACL for usage and error information.
5352//
5353// Returned Error Codes:
5354//   * ErrCodeStaleDataException "StaleDataException"
5355//   The operation failed because you tried to create, update, or delete an object
5356//   by using a change token that has already been used.
5357//
5358//   * ErrCodeInternalErrorException "InternalErrorException"
5359//   The operation failed because of a system problem, even though the request
5360//   was valid. Retry your request.
5361//
5362//   * ErrCodeInvalidAccountException "InvalidAccountException"
5363//   The operation failed because you tried to create, update, or delete an object
5364//   by using an invalid account identifier.
5365//
5366//   * ErrCodeInvalidOperationException "InvalidOperationException"
5367//   The operation failed because there was nothing to do. For example:
5368//
5369//      * You tried to remove a Rule from a WebACL, but the Rule isn't in the
5370//      specified WebACL.
5371//
5372//      * You tried to remove an IP address from an IPSet, but the IP address
5373//      isn't in the specified IPSet.
5374//
5375//      * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the ByteMatchTuple
5376//      isn't in the specified WebACL.
5377//
5378//      * You tried to add a Rule to a WebACL, but the Rule already exists in
5379//      the specified WebACL.
5380//
5381//      * You tried to add an IP address to an IPSet, but the IP address already
5382//      exists in the specified IPSet.
5383//
5384//      * You tried to add a ByteMatchTuple to a ByteMatchSet, but the ByteMatchTuple
5385//      already exists in the specified WebACL.
5386//
5387//   * ErrCodeInvalidParameterException "InvalidParameterException"
5388//   The operation failed because AWS WAF didn't recognize a parameter in the
5389//   request. For example:
5390//
5391//      * You specified an invalid parameter name.
5392//
5393//      * You specified an invalid value.
5394//
5395//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
5396//      using an action other than INSERT or DELETE.
5397//
5398//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
5399//      BLOCK, or COUNT.
5400//
5401//      * You tried to create a RateBasedRule with a RateKey value other than
5402//      IP.
5403//
5404//      * You tried to update a WebACL with a WafActionType other than ALLOW,
5405//      BLOCK, or COUNT.
5406//
5407//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
5408//      HEADER, QUERY_STRING, or URI.
5409//
5410//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
5411//      for Data.
5412//
5413//      * Your request references an ARN that is malformed, or corresponds to
5414//      a resource with which a web ACL cannot be associated.
5415//
5416//   * ErrCodeNonexistentContainerException "NonexistentContainerException"
5417//   The operation failed because you tried to add an object to or delete an object
5418//   from another object that doesn't exist. For example:
5419//
5420//      * You tried to add a Rule to or delete a Rule from a WebACL that doesn't
5421//      exist.
5422//
5423//      * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a Rule
5424//      that doesn't exist.
5425//
5426//      * You tried to add an IP address to or delete an IP address from an IPSet
5427//      that doesn't exist.
5428//
5429//      * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from
5430//      a ByteMatchSet that doesn't exist.
5431//
5432//   * ErrCodeNonexistentItemException "NonexistentItemException"
5433//   The operation failed because the referenced object doesn't exist.
5434//
5435//   * ErrCodeReferencedItemException "ReferencedItemException"
5436//   The operation failed because you tried to delete an object that is still
5437//   in use. For example:
5438//
5439//      * You tried to delete a ByteMatchSet that is still referenced by a Rule.
5440//
5441//      * You tried to delete a Rule that is still referenced by a WebACL.
5442//
5443//   * ErrCodeLimitsExceededException "LimitsExceededException"
5444//   The operation exceeds a resource limit, for example, the maximum number of
5445//   WebACL objects that you can create for an AWS account. For more information,
5446//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
5447//   in the AWS WAF Developer Guide.
5448//
5449// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateWebACL
5450func (c *WAF) UpdateWebACL(input *UpdateWebACLInput) (*UpdateWebACLOutput, error) {
5451	req, out := c.UpdateWebACLRequest(input)
5452	return out, req.Send()
5453}
5454
5455// UpdateWebACLWithContext is the same as UpdateWebACL with the addition of
5456// the ability to pass a context and additional request options.
5457//
5458// See UpdateWebACL for details on how to use this API operation.
5459//
5460// The context must be non-nil and will be used for request cancellation. If
5461// the context is nil a panic will occur. In the future the SDK may create
5462// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5463// for more information on using Contexts.
5464func (c *WAF) UpdateWebACLWithContext(ctx aws.Context, input *UpdateWebACLInput, opts ...request.Option) (*UpdateWebACLOutput, error) {
5465	req, out := c.UpdateWebACLRequest(input)
5466	req.SetContext(ctx)
5467	req.ApplyOptions(opts...)
5468	return out, req.Send()
5469}
5470
5471const opUpdateXssMatchSet = "UpdateXssMatchSet"
5472
5473// UpdateXssMatchSetRequest generates a "aws/request.Request" representing the
5474// client's request for the UpdateXssMatchSet operation. The "output" return
5475// value will be populated with the request's response once the request complets
5476// successfuly.
5477//
5478// Use "Send" method on the returned Request to send the API call to the service.
5479// the "output" return value is not valid until after Send returns without error.
5480//
5481// See UpdateXssMatchSet for more information on using the UpdateXssMatchSet
5482// API call, and error handling.
5483//
5484// This method is useful when you want to inject custom logic or configuration
5485// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5486//
5487//
5488//    // Example sending a request using the UpdateXssMatchSetRequest method.
5489//    req, resp := client.UpdateXssMatchSetRequest(params)
5490//
5491//    err := req.Send()
5492//    if err == nil { // resp is now filled
5493//        fmt.Println(resp)
5494//    }
5495//
5496// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateXssMatchSet
5497func (c *WAF) UpdateXssMatchSetRequest(input *UpdateXssMatchSetInput) (req *request.Request, output *UpdateXssMatchSetOutput) {
5498	op := &request.Operation{
5499		Name:       opUpdateXssMatchSet,
5500		HTTPMethod: "POST",
5501		HTTPPath:   "/",
5502	}
5503
5504	if input == nil {
5505		input = &UpdateXssMatchSetInput{}
5506	}
5507
5508	output = &UpdateXssMatchSetOutput{}
5509	req = c.newRequest(op, input, output)
5510	return
5511}
5512
5513// UpdateXssMatchSet API operation for AWS WAF.
5514//
5515// Inserts or deletes XssMatchTuple objects (filters) in an XssMatchSet. For
5516// each XssMatchTuple object, you specify the following values:
5517//
5518//    * Action: Whether to insert the object into or delete the object from
5519//    the array. To change a XssMatchTuple, you delete the existing object and
5520//    add a new one.
5521//
5522//    * FieldToMatch: The part of web requests that you want AWS WAF to inspect
5523//    and, if you want AWS WAF to inspect a header, the name of the header.
5524//
5525//    * TextTransformation: Which text transformation, if any, to perform on
5526//    the web request before inspecting the request for cross-site scripting
5527//    attacks.
5528//
5529// You use XssMatchSet objects to specify which CloudFront requests you want
5530// to allow, block, or count. For example, if you're receiving requests that
5531// contain cross-site scripting attacks in the request body and you want to
5532// block the requests, you can create an XssMatchSet with the applicable settings,
5533// and then configure AWS WAF to block the requests.
5534//
5535// To create and configure an XssMatchSet, perform the following steps:
5536//
5537// Submit a CreateXssMatchSet request.
5538//
5539// Use GetChangeToken to get the change token that you provide in the ChangeToken
5540// parameter of an UpdateIPSet request.
5541//
5542// Submit an UpdateXssMatchSet request to specify the parts of web requests
5543// that you want AWS WAF to inspect for cross-site scripting attacks.
5544//
5545// For more information about how to use the AWS WAF API to allow or block HTTP
5546// requests, see the AWS WAF Developer Guide (http://docs.aws.amazon.com/waf/latest/developerguide/).
5547//
5548// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5549// with awserr.Error's Code and Message methods to get detailed information about
5550// the error.
5551//
5552// See the AWS API reference guide for AWS WAF's
5553// API operation UpdateXssMatchSet for usage and error information.
5554//
5555// Returned Error Codes:
5556//   * ErrCodeInternalErrorException "InternalErrorException"
5557//   The operation failed because of a system problem, even though the request
5558//   was valid. Retry your request.
5559//
5560//   * ErrCodeInvalidAccountException "InvalidAccountException"
5561//   The operation failed because you tried to create, update, or delete an object
5562//   by using an invalid account identifier.
5563//
5564//   * ErrCodeInvalidOperationException "InvalidOperationException"
5565//   The operation failed because there was nothing to do. For example:
5566//
5567//      * You tried to remove a Rule from a WebACL, but the Rule isn't in the
5568//      specified WebACL.
5569//
5570//      * You tried to remove an IP address from an IPSet, but the IP address
5571//      isn't in the specified IPSet.
5572//
5573//      * You tried to remove a ByteMatchTuple from a ByteMatchSet, but the ByteMatchTuple
5574//      isn't in the specified WebACL.
5575//
5576//      * You tried to add a Rule to a WebACL, but the Rule already exists in
5577//      the specified WebACL.
5578//
5579//      * You tried to add an IP address to an IPSet, but the IP address already
5580//      exists in the specified IPSet.
5581//
5582//      * You tried to add a ByteMatchTuple to a ByteMatchSet, but the ByteMatchTuple
5583//      already exists in the specified WebACL.
5584//
5585//   * ErrCodeInvalidParameterException "InvalidParameterException"
5586//   The operation failed because AWS WAF didn't recognize a parameter in the
5587//   request. For example:
5588//
5589//      * You specified an invalid parameter name.
5590//
5591//      * You specified an invalid value.
5592//
5593//      * You tried to update an object (ByteMatchSet, IPSet, Rule, or WebACL)
5594//      using an action other than INSERT or DELETE.
5595//
5596//      * You tried to create a WebACL with a DefaultActionType other than ALLOW,
5597//      BLOCK, or COUNT.
5598//
5599//      * You tried to create a RateBasedRule with a RateKey value other than
5600//      IP.
5601//
5602//      * You tried to update a WebACL with a WafActionType other than ALLOW,
5603//      BLOCK, or COUNT.
5604//
5605//      * You tried to update a ByteMatchSet with a FieldToMatchType other than
5606//      HEADER, QUERY_STRING, or URI.
5607//
5608//      * You tried to update a ByteMatchSet with a Field of HEADER but no value
5609//      for Data.
5610//
5611//      * Your request references an ARN that is malformed, or corresponds to
5612//      a resource with which a web ACL cannot be associated.
5613//
5614//   * ErrCodeNonexistentContainerException "NonexistentContainerException"
5615//   The operation failed because you tried to add an object to or delete an object
5616//   from another object that doesn't exist. For example:
5617//
5618//      * You tried to add a Rule to or delete a Rule from a WebACL that doesn't
5619//      exist.
5620//
5621//      * You tried to add a ByteMatchSet to or delete a ByteMatchSet from a Rule
5622//      that doesn't exist.
5623//
5624//      * You tried to add an IP address to or delete an IP address from an IPSet
5625//      that doesn't exist.
5626//
5627//      * You tried to add a ByteMatchTuple to or delete a ByteMatchTuple from
5628//      a ByteMatchSet that doesn't exist.
5629//
5630//   * ErrCodeNonexistentItemException "NonexistentItemException"
5631//   The operation failed because the referenced object doesn't exist.
5632//
5633//   * ErrCodeStaleDataException "StaleDataException"
5634//   The operation failed because you tried to create, update, or delete an object
5635//   by using a change token that has already been used.
5636//
5637//   * ErrCodeLimitsExceededException "LimitsExceededException"
5638//   The operation exceeds a resource limit, for example, the maximum number of
5639//   WebACL objects that you can create for an AWS account. For more information,
5640//   see Limits (http://docs.aws.amazon.com/waf/latest/developerguide/limits.html)
5641//   in the AWS WAF Developer Guide.
5642//
5643// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateXssMatchSet
5644func (c *WAF) UpdateXssMatchSet(input *UpdateXssMatchSetInput) (*UpdateXssMatchSetOutput, error) {
5645	req, out := c.UpdateXssMatchSetRequest(input)
5646	return out, req.Send()
5647}
5648
5649// UpdateXssMatchSetWithContext is the same as UpdateXssMatchSet with the addition of
5650// the ability to pass a context and additional request options.
5651//
5652// See UpdateXssMatchSet for details on how to use this API operation.
5653//
5654// The context must be non-nil and will be used for request cancellation. If
5655// the context is nil a panic will occur. In the future the SDK may create
5656// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5657// for more information on using Contexts.
5658func (c *WAF) UpdateXssMatchSetWithContext(ctx aws.Context, input *UpdateXssMatchSetInput, opts ...request.Option) (*UpdateXssMatchSetOutput, error) {
5659	req, out := c.UpdateXssMatchSetRequest(input)
5660	req.SetContext(ctx)
5661	req.ApplyOptions(opts...)
5662	return out, req.Send()
5663}
5664
5665// The ActivatedRule object in an UpdateWebACL request specifies a Rule that
5666// you want to insert or delete, the priority of the Rule in the WebACL, and
5667// the action that you want AWS WAF to take when a web request matches the Rule
5668// (ALLOW, BLOCK, or COUNT).
5669//
5670// To specify whether to insert or delete a Rule, use the Action parameter in
5671// the WebACLUpdate data type.
5672// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ActivatedRule
5673type ActivatedRule struct {
5674	_ struct{} `type:"structure"`
5675
5676	// Specifies the action that CloudFront or AWS WAF takes when a web request
5677	// matches the conditions in the Rule. Valid values for Action include the following:
5678	//
5679	//    * ALLOW: CloudFront responds with the requested object.
5680	//
5681	//    * BLOCK: CloudFront responds with an HTTP 403 (Forbidden) status code.
5682	//
5683	//    * COUNT: AWS WAF increments a counter of requests that match the conditions
5684	//    in the rule and then continues to inspect the web request based on the
5685	//    remaining rules in the web ACL.
5686	//
5687	// Action is a required field
5688	Action *WafAction `type:"structure" required:"true"`
5689
5690	// Specifies the order in which the Rules in a WebACL are evaluated. Rules with
5691	// a lower value for Priority are evaluated before Rules with a higher value.
5692	// The value must be a unique integer. If you add multiple Rules to a WebACL,
5693	// the values don't need to be consecutive.
5694	//
5695	// Priority is a required field
5696	Priority *int64 `type:"integer" required:"true"`
5697
5698	// The RuleId for a Rule. You use RuleId to get more information about a Rule
5699	// (see GetRule), update a Rule (see UpdateRule), insert a Rule into a WebACL
5700	// or delete a one from a WebACL (see UpdateWebACL), or delete a Rule from AWS
5701	// WAF (see DeleteRule).
5702	//
5703	// RuleId is returned by CreateRule and by ListRules.
5704	//
5705	// RuleId is a required field
5706	RuleId *string `min:"1" type:"string" required:"true"`
5707
5708	// The rule type, either REGULAR, as defined by Rule, or RATE_BASED, as defined
5709	// by RateBasedRule. The default is REGULAR. Although this field is optional,
5710	// be aware that if you try to add a RATE_BASED rule to a web ACL without setting
5711	// the type, the UpdateWebACL request will fail because the request tries to
5712	// add a REGULAR rule with the specified ID, which does not exist.
5713	Type *string `type:"string" enum:"WafRuleType"`
5714}
5715
5716// String returns the string representation
5717func (s ActivatedRule) String() string {
5718	return awsutil.Prettify(s)
5719}
5720
5721// GoString returns the string representation
5722func (s ActivatedRule) GoString() string {
5723	return s.String()
5724}
5725
5726// Validate inspects the fields of the type to determine if they are valid.
5727func (s *ActivatedRule) Validate() error {
5728	invalidParams := request.ErrInvalidParams{Context: "ActivatedRule"}
5729	if s.Action == nil {
5730		invalidParams.Add(request.NewErrParamRequired("Action"))
5731	}
5732	if s.Priority == nil {
5733		invalidParams.Add(request.NewErrParamRequired("Priority"))
5734	}
5735	if s.RuleId == nil {
5736		invalidParams.Add(request.NewErrParamRequired("RuleId"))
5737	}
5738	if s.RuleId != nil && len(*s.RuleId) < 1 {
5739		invalidParams.Add(request.NewErrParamMinLen("RuleId", 1))
5740	}
5741	if s.Action != nil {
5742		if err := s.Action.Validate(); err != nil {
5743			invalidParams.AddNested("Action", err.(request.ErrInvalidParams))
5744		}
5745	}
5746
5747	if invalidParams.Len() > 0 {
5748		return invalidParams
5749	}
5750	return nil
5751}
5752
5753// SetAction sets the Action field's value.
5754func (s *ActivatedRule) SetAction(v *WafAction) *ActivatedRule {
5755	s.Action = v
5756	return s
5757}
5758
5759// SetPriority sets the Priority field's value.
5760func (s *ActivatedRule) SetPriority(v int64) *ActivatedRule {
5761	s.Priority = &v
5762	return s
5763}
5764
5765// SetRuleId sets the RuleId field's value.
5766func (s *ActivatedRule) SetRuleId(v string) *ActivatedRule {
5767	s.RuleId = &v
5768	return s
5769}
5770
5771// SetType sets the Type field's value.
5772func (s *ActivatedRule) SetType(v string) *ActivatedRule {
5773	s.Type = &v
5774	return s
5775}
5776
5777// In a GetByteMatchSet request, ByteMatchSet is a complex type that contains
5778// the ByteMatchSetId and Name of a ByteMatchSet, and the values that you specified
5779// when you updated the ByteMatchSet.
5780//
5781// A complex type that contains ByteMatchTuple objects, which specify the parts
5782// of web requests that you want AWS WAF to inspect and the values that you
5783// want AWS WAF to search for. If a ByteMatchSet contains more than one ByteMatchTuple
5784// object, a request needs to match the settings in only one ByteMatchTuple
5785// to be considered a match.
5786// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ByteMatchSet
5787type ByteMatchSet struct {
5788	_ struct{} `type:"structure"`
5789
5790	// The ByteMatchSetId for a ByteMatchSet. You use ByteMatchSetId to get information
5791	// about a ByteMatchSet (see GetByteMatchSet), update a ByteMatchSet (see UpdateByteMatchSet),
5792	// insert a ByteMatchSet into a Rule or delete one from a Rule (see UpdateRule),
5793	// and delete a ByteMatchSet from AWS WAF (see DeleteByteMatchSet).
5794	//
5795	// ByteMatchSetId is returned by CreateByteMatchSet and by ListByteMatchSets.
5796	//
5797	// ByteMatchSetId is a required field
5798	ByteMatchSetId *string `min:"1" type:"string" required:"true"`
5799
5800	// Specifies the bytes (typically a string that corresponds with ASCII characters)
5801	// that you want AWS WAF to search for in web requests, the location in requests
5802	// that you want AWS WAF to search, and other settings.
5803	//
5804	// ByteMatchTuples is a required field
5805	ByteMatchTuples []*ByteMatchTuple `type:"list" required:"true"`
5806
5807	// A friendly name or description of the ByteMatchSet. You can't change Name
5808	// after you create a ByteMatchSet.
5809	Name *string `min:"1" type:"string"`
5810}
5811
5812// String returns the string representation
5813func (s ByteMatchSet) String() string {
5814	return awsutil.Prettify(s)
5815}
5816
5817// GoString returns the string representation
5818func (s ByteMatchSet) GoString() string {
5819	return s.String()
5820}
5821
5822// SetByteMatchSetId sets the ByteMatchSetId field's value.
5823func (s *ByteMatchSet) SetByteMatchSetId(v string) *ByteMatchSet {
5824	s.ByteMatchSetId = &v
5825	return s
5826}
5827
5828// SetByteMatchTuples sets the ByteMatchTuples field's value.
5829func (s *ByteMatchSet) SetByteMatchTuples(v []*ByteMatchTuple) *ByteMatchSet {
5830	s.ByteMatchTuples = v
5831	return s
5832}
5833
5834// SetName sets the Name field's value.
5835func (s *ByteMatchSet) SetName(v string) *ByteMatchSet {
5836	s.Name = &v
5837	return s
5838}
5839
5840// Returned by ListByteMatchSets. Each ByteMatchSetSummary object includes the
5841// Name and ByteMatchSetId for one ByteMatchSet.
5842// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ByteMatchSetSummary
5843type ByteMatchSetSummary struct {
5844	_ struct{} `type:"structure"`
5845
5846	// The ByteMatchSetId for a ByteMatchSet. You use ByteMatchSetId to get information
5847	// about a ByteMatchSet, update a ByteMatchSet, remove a ByteMatchSet from a
5848	// Rule, and delete a ByteMatchSet from AWS WAF.
5849	//
5850	// ByteMatchSetId is returned by CreateByteMatchSet and by ListByteMatchSets.
5851	//
5852	// ByteMatchSetId is a required field
5853	ByteMatchSetId *string `min:"1" type:"string" required:"true"`
5854
5855	// A friendly name or description of the ByteMatchSet. You can't change Name
5856	// after you create a ByteMatchSet.
5857	//
5858	// Name is a required field
5859	Name *string `min:"1" type:"string" required:"true"`
5860}
5861
5862// String returns the string representation
5863func (s ByteMatchSetSummary) String() string {
5864	return awsutil.Prettify(s)
5865}
5866
5867// GoString returns the string representation
5868func (s ByteMatchSetSummary) GoString() string {
5869	return s.String()
5870}
5871
5872// SetByteMatchSetId sets the ByteMatchSetId field's value.
5873func (s *ByteMatchSetSummary) SetByteMatchSetId(v string) *ByteMatchSetSummary {
5874	s.ByteMatchSetId = &v
5875	return s
5876}
5877
5878// SetName sets the Name field's value.
5879func (s *ByteMatchSetSummary) SetName(v string) *ByteMatchSetSummary {
5880	s.Name = &v
5881	return s
5882}
5883
5884// In an UpdateByteMatchSet request, ByteMatchSetUpdate specifies whether to
5885// insert or delete a ByteMatchTuple and includes the settings for the ByteMatchTuple.
5886// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ByteMatchSetUpdate
5887type ByteMatchSetUpdate struct {
5888	_ struct{} `type:"structure"`
5889
5890	// Specifies whether to insert or delete a ByteMatchTuple.
5891	//
5892	// Action is a required field
5893	Action *string `type:"string" required:"true" enum:"ChangeAction"`
5894
5895	// Information about the part of a web request that you want AWS WAF to inspect
5896	// and the value that you want AWS WAF to search for. If you specify DELETE
5897	// for the value of Action, the ByteMatchTuple values must exactly match the
5898	// values in the ByteMatchTuple that you want to delete from the ByteMatchSet.
5899	//
5900	// ByteMatchTuple is a required field
5901	ByteMatchTuple *ByteMatchTuple `type:"structure" required:"true"`
5902}
5903
5904// String returns the string representation
5905func (s ByteMatchSetUpdate) String() string {
5906	return awsutil.Prettify(s)
5907}
5908
5909// GoString returns the string representation
5910func (s ByteMatchSetUpdate) GoString() string {
5911	return s.String()
5912}
5913
5914// Validate inspects the fields of the type to determine if they are valid.
5915func (s *ByteMatchSetUpdate) Validate() error {
5916	invalidParams := request.ErrInvalidParams{Context: "ByteMatchSetUpdate"}
5917	if s.Action == nil {
5918		invalidParams.Add(request.NewErrParamRequired("Action"))
5919	}
5920	if s.ByteMatchTuple == nil {
5921		invalidParams.Add(request.NewErrParamRequired("ByteMatchTuple"))
5922	}
5923	if s.ByteMatchTuple != nil {
5924		if err := s.ByteMatchTuple.Validate(); err != nil {
5925			invalidParams.AddNested("ByteMatchTuple", err.(request.ErrInvalidParams))
5926		}
5927	}
5928
5929	if invalidParams.Len() > 0 {
5930		return invalidParams
5931	}
5932	return nil
5933}
5934
5935// SetAction sets the Action field's value.
5936func (s *ByteMatchSetUpdate) SetAction(v string) *ByteMatchSetUpdate {
5937	s.Action = &v
5938	return s
5939}
5940
5941// SetByteMatchTuple sets the ByteMatchTuple field's value.
5942func (s *ByteMatchSetUpdate) SetByteMatchTuple(v *ByteMatchTuple) *ByteMatchSetUpdate {
5943	s.ByteMatchTuple = v
5944	return s
5945}
5946
5947// The bytes (typically a string that corresponds with ASCII characters) that
5948// you want AWS WAF to search for in web requests, the location in requests
5949// that you want AWS WAF to search, and other settings.
5950// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ByteMatchTuple
5951type ByteMatchTuple struct {
5952	_ struct{} `type:"structure"`
5953
5954	// The part of a web request that you want AWS WAF to search, such as a specified
5955	// header or a query string. For more information, see FieldToMatch.
5956	//
5957	// FieldToMatch is a required field
5958	FieldToMatch *FieldToMatch `type:"structure" required:"true"`
5959
5960	// Within the portion of a web request that you want to search (for example,
5961	// in the query string, if any), specify where you want AWS WAF to search. Valid
5962	// values include the following:
5963	//
5964	// CONTAINS
5965	//
5966	// The specified part of the web request must include the value of TargetString,
5967	// but the location doesn't matter.
5968	//
5969	// CONTAINS_WORD
5970	//
5971	// The specified part of the web request must include the value of TargetString,
5972	// and TargetString must contain only alphanumeric characters or underscore
5973	// (A-Z, a-z, 0-9, or _). In addition, TargetString must be a word, which means
5974	// one of the following:
5975	//
5976	//    * TargetString exactly matches the value of the specified part of the
5977	//    web request, such as the value of a header.
5978	//
5979	//    * TargetString is at the beginning of the specified part of the web request
5980	//    and is followed by a character other than an alphanumeric character or
5981	//    underscore (_), for example, BadBot;.
5982	//
5983	//    * TargetString is at the end of the specified part of the web request
5984	//    and is preceded by a character other than an alphanumeric character or
5985	//    underscore (_), for example, ;BadBot.
5986	//
5987	//    * TargetString is in the middle of the specified part of the web request
5988	//    and is preceded and followed by characters other than alphanumeric characters
5989	//    or underscore (_), for example, -BadBot;.
5990	//
5991	// EXACTLY
5992	//
5993	// The value of the specified part of the web request must exactly match the
5994	// value of TargetString.
5995	//
5996	// STARTS_WITH
5997	//
5998	// The value of TargetString must appear at the beginning of the specified part
5999	// of the web request.
6000	//
6001	// ENDS_WITH
6002	//
6003	// The value of TargetString must appear at the end of the specified part of
6004	// the web request.
6005	//
6006	// PositionalConstraint is a required field
6007	PositionalConstraint *string `type:"string" required:"true" enum:"PositionalConstraint"`
6008
6009	// The value that you want AWS WAF to search for. AWS WAF searches for the specified
6010	// string in the part of web requests that you specified in FieldToMatch. The
6011	// maximum length of the value is 50 bytes.
6012	//
6013	// Valid values depend on the values that you specified for FieldToMatch:
6014	//
6015	//    * HEADER: The value that you want AWS WAF to search for in the request
6016	//    header that you specified in FieldToMatch, for example, the value of the
6017	//    User-Agent or Referer header.
6018	//
6019	//    * METHOD: The HTTP method, which indicates the type of operation specified
6020	//    in the request. CloudFront supports the following methods: DELETE, GET,
6021	//    HEAD, OPTIONS, PATCH, POST, and PUT.
6022	//
6023	//    * QUERY_STRING: The value that you want AWS WAF to search for in the query
6024	//    string, which is the part of a URL that appears after a ? character.
6025	//
6026	//    * URI: The value that you want AWS WAF to search for in the part of a
6027	//    URL that identifies a resource, for example, /images/daily-ad.jpg.
6028	//
6029	//    * BODY: The part of a request that contains any additional data that you
6030	//    want to send to your web server as the HTTP request body, such as data
6031	//    from a form. The request body immediately follows the request headers.
6032	//    Note that only the first 8192 bytes of the request body are forwarded
6033	//    to AWS WAF for inspection. To allow or block requests based on the length
6034	//    of the body, you can create a size constraint set. For more information,
6035	//    see CreateSizeConstraintSet.
6036	//
6037	// If TargetString includes alphabetic characters A-Z and a-z, note that the
6038	// value is case sensitive.
6039	//
6040	// If you're using the AWS WAF API
6041	//
6042	// Specify a base64-encoded version of the value. The maximum length of the
6043	// value before you base64-encode it is 50 bytes.
6044	//
6045	// For example, suppose the value of Type is HEADER and the value of Data is
6046	// User-Agent. If you want to search the User-Agent header for the value BadBot,
6047	// you base64-encode BadBot using MIME base64 encoding and include the resulting
6048	// value, QmFkQm90, in the value of TargetString.
6049	//
6050	// If you're using the AWS CLI or one of the AWS SDKs
6051	//
6052	// The value that you want AWS WAF to search for. The SDK automatically base64
6053	// encodes the value.
6054	//
6055	// TargetString is automatically base64 encoded/decoded by the SDK.
6056	//
6057	// TargetString is a required field
6058	TargetString []byte `type:"blob" required:"true"`
6059
6060	// Text transformations eliminate some of the unusual formatting that attackers
6061	// use in web requests in an effort to bypass AWS WAF. If you specify a transformation,
6062	// AWS WAF performs the transformation on TargetString before inspecting a request
6063	// for a match.
6064	//
6065	// CMD_LINE
6066	//
6067	// When you're concerned that attackers are injecting an operating system commandline
6068	// command and using unusual formatting to disguise some or all of the command,
6069	// use this option to perform the following transformations:
6070	//
6071	//    * Delete the following characters: \ " ' ^
6072	//
6073	//    * Delete spaces before the following characters: / (
6074	//
6075	//    * Replace the following characters with a space: , ;
6076	//
6077	//    * Replace multiple spaces with one space
6078	//
6079	//    * Convert uppercase letters (A-Z) to lowercase (a-z)
6080	//
6081	// COMPRESS_WHITE_SPACE
6082	//
6083	// Use this option to replace the following characters with a space character
6084	// (decimal 32):
6085	//
6086	//    * \f, formfeed, decimal 12
6087	//
6088	//    * \t, tab, decimal 9
6089	//
6090	//    * \n, newline, decimal 10
6091	//
6092	//    * \r, carriage return, decimal 13
6093	//
6094	//    * \v, vertical tab, decimal 11
6095	//
6096	//    * non-breaking space, decimal 160
6097	//
6098	// COMPRESS_WHITE_SPACE also replaces multiple spaces with one space.
6099	//
6100	// HTML_ENTITY_DECODE
6101	//
6102	// Use this option to replace HTML-encoded characters with unencoded characters.
6103	// HTML_ENTITY_DECODE performs the following operations:
6104	//
6105	//    * Replaces (ampersand)quot; with "
6106	//
6107	//    * Replaces (ampersand)nbsp; with a non-breaking space, decimal 160
6108	//
6109	//    * Replaces (ampersand)lt; with a "less than" symbol
6110	//
6111	//    * Replaces (ampersand)gt; with >
6112	//
6113	//    * Replaces characters that are represented in hexadecimal format, (ampersand)#xhhhh;,
6114	//    with the corresponding characters
6115	//
6116	//    * Replaces characters that are represented in decimal format, (ampersand)#nnnn;,
6117	//    with the corresponding characters
6118	//
6119	// LOWERCASE
6120	//
6121	// Use this option to convert uppercase letters (A-Z) to lowercase (a-z).
6122	//
6123	// URL_DECODE
6124	//
6125	// Use this option to decode a URL-encoded value.
6126	//
6127	// NONE
6128	//
6129	// Specify NONE if you don't want to perform any text transformations.
6130	//
6131	// TextTransformation is a required field
6132	TextTransformation *string `type:"string" required:"true" enum:"TextTransformation"`
6133}
6134
6135// String returns the string representation
6136func (s ByteMatchTuple) String() string {
6137	return awsutil.Prettify(s)
6138}
6139
6140// GoString returns the string representation
6141func (s ByteMatchTuple) GoString() string {
6142	return s.String()
6143}
6144
6145// Validate inspects the fields of the type to determine if they are valid.
6146func (s *ByteMatchTuple) Validate() error {
6147	invalidParams := request.ErrInvalidParams{Context: "ByteMatchTuple"}
6148	if s.FieldToMatch == nil {
6149		invalidParams.Add(request.NewErrParamRequired("FieldToMatch"))
6150	}
6151	if s.PositionalConstraint == nil {
6152		invalidParams.Add(request.NewErrParamRequired("PositionalConstraint"))
6153	}
6154	if s.TargetString == nil {
6155		invalidParams.Add(request.NewErrParamRequired("TargetString"))
6156	}
6157	if s.TextTransformation == nil {
6158		invalidParams.Add(request.NewErrParamRequired("TextTransformation"))
6159	}
6160	if s.FieldToMatch != nil {
6161		if err := s.FieldToMatch.Validate(); err != nil {
6162			invalidParams.AddNested("FieldToMatch", err.(request.ErrInvalidParams))
6163		}
6164	}
6165
6166	if invalidParams.Len() > 0 {
6167		return invalidParams
6168	}
6169	return nil
6170}
6171
6172// SetFieldToMatch sets the FieldToMatch field's value.
6173func (s *ByteMatchTuple) SetFieldToMatch(v *FieldToMatch) *ByteMatchTuple {
6174	s.FieldToMatch = v
6175	return s
6176}
6177
6178// SetPositionalConstraint sets the PositionalConstraint field's value.
6179func (s *ByteMatchTuple) SetPositionalConstraint(v string) *ByteMatchTuple {
6180	s.PositionalConstraint = &v
6181	return s
6182}
6183
6184// SetTargetString sets the TargetString field's value.
6185func (s *ByteMatchTuple) SetTargetString(v []byte) *ByteMatchTuple {
6186	s.TargetString = v
6187	return s
6188}
6189
6190// SetTextTransformation sets the TextTransformation field's value.
6191func (s *ByteMatchTuple) SetTextTransformation(v string) *ByteMatchTuple {
6192	s.TextTransformation = &v
6193	return s
6194}
6195
6196// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateByteMatchSetRequest
6197type CreateByteMatchSetInput struct {
6198	_ struct{} `type:"structure"`
6199
6200	// The value returned by the most recent call to GetChangeToken.
6201	//
6202	// ChangeToken is a required field
6203	ChangeToken *string `min:"1" type:"string" required:"true"`
6204
6205	// A friendly name or description of the ByteMatchSet. You can't change Name
6206	// after you create a ByteMatchSet.
6207	//
6208	// Name is a required field
6209	Name *string `min:"1" type:"string" required:"true"`
6210}
6211
6212// String returns the string representation
6213func (s CreateByteMatchSetInput) String() string {
6214	return awsutil.Prettify(s)
6215}
6216
6217// GoString returns the string representation
6218func (s CreateByteMatchSetInput) GoString() string {
6219	return s.String()
6220}
6221
6222// Validate inspects the fields of the type to determine if they are valid.
6223func (s *CreateByteMatchSetInput) Validate() error {
6224	invalidParams := request.ErrInvalidParams{Context: "CreateByteMatchSetInput"}
6225	if s.ChangeToken == nil {
6226		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
6227	}
6228	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
6229		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
6230	}
6231	if s.Name == nil {
6232		invalidParams.Add(request.NewErrParamRequired("Name"))
6233	}
6234	if s.Name != nil && len(*s.Name) < 1 {
6235		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
6236	}
6237
6238	if invalidParams.Len() > 0 {
6239		return invalidParams
6240	}
6241	return nil
6242}
6243
6244// SetChangeToken sets the ChangeToken field's value.
6245func (s *CreateByteMatchSetInput) SetChangeToken(v string) *CreateByteMatchSetInput {
6246	s.ChangeToken = &v
6247	return s
6248}
6249
6250// SetName sets the Name field's value.
6251func (s *CreateByteMatchSetInput) SetName(v string) *CreateByteMatchSetInput {
6252	s.Name = &v
6253	return s
6254}
6255
6256// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateByteMatchSetResponse
6257type CreateByteMatchSetOutput struct {
6258	_ struct{} `type:"structure"`
6259
6260	// A ByteMatchSet that contains no ByteMatchTuple objects.
6261	ByteMatchSet *ByteMatchSet `type:"structure"`
6262
6263	// The ChangeToken that you used to submit the CreateByteMatchSet request. You
6264	// can also use this value to query the status of the request. For more information,
6265	// see GetChangeTokenStatus.
6266	ChangeToken *string `min:"1" type:"string"`
6267}
6268
6269// String returns the string representation
6270func (s CreateByteMatchSetOutput) String() string {
6271	return awsutil.Prettify(s)
6272}
6273
6274// GoString returns the string representation
6275func (s CreateByteMatchSetOutput) GoString() string {
6276	return s.String()
6277}
6278
6279// SetByteMatchSet sets the ByteMatchSet field's value.
6280func (s *CreateByteMatchSetOutput) SetByteMatchSet(v *ByteMatchSet) *CreateByteMatchSetOutput {
6281	s.ByteMatchSet = v
6282	return s
6283}
6284
6285// SetChangeToken sets the ChangeToken field's value.
6286func (s *CreateByteMatchSetOutput) SetChangeToken(v string) *CreateByteMatchSetOutput {
6287	s.ChangeToken = &v
6288	return s
6289}
6290
6291// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateIPSetRequest
6292type CreateIPSetInput struct {
6293	_ struct{} `type:"structure"`
6294
6295	// The value returned by the most recent call to GetChangeToken.
6296	//
6297	// ChangeToken is a required field
6298	ChangeToken *string `min:"1" type:"string" required:"true"`
6299
6300	// A friendly name or description of the IPSet. You can't change Name after
6301	// you create the IPSet.
6302	//
6303	// Name is a required field
6304	Name *string `min:"1" type:"string" required:"true"`
6305}
6306
6307// String returns the string representation
6308func (s CreateIPSetInput) String() string {
6309	return awsutil.Prettify(s)
6310}
6311
6312// GoString returns the string representation
6313func (s CreateIPSetInput) GoString() string {
6314	return s.String()
6315}
6316
6317// Validate inspects the fields of the type to determine if they are valid.
6318func (s *CreateIPSetInput) Validate() error {
6319	invalidParams := request.ErrInvalidParams{Context: "CreateIPSetInput"}
6320	if s.ChangeToken == nil {
6321		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
6322	}
6323	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
6324		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
6325	}
6326	if s.Name == nil {
6327		invalidParams.Add(request.NewErrParamRequired("Name"))
6328	}
6329	if s.Name != nil && len(*s.Name) < 1 {
6330		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
6331	}
6332
6333	if invalidParams.Len() > 0 {
6334		return invalidParams
6335	}
6336	return nil
6337}
6338
6339// SetChangeToken sets the ChangeToken field's value.
6340func (s *CreateIPSetInput) SetChangeToken(v string) *CreateIPSetInput {
6341	s.ChangeToken = &v
6342	return s
6343}
6344
6345// SetName sets the Name field's value.
6346func (s *CreateIPSetInput) SetName(v string) *CreateIPSetInput {
6347	s.Name = &v
6348	return s
6349}
6350
6351// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateIPSetResponse
6352type CreateIPSetOutput struct {
6353	_ struct{} `type:"structure"`
6354
6355	// The ChangeToken that you used to submit the CreateIPSet request. You can
6356	// also use this value to query the status of the request. For more information,
6357	// see GetChangeTokenStatus.
6358	ChangeToken *string `min:"1" type:"string"`
6359
6360	// The IPSet returned in the CreateIPSet response.
6361	IPSet *IPSet `type:"structure"`
6362}
6363
6364// String returns the string representation
6365func (s CreateIPSetOutput) String() string {
6366	return awsutil.Prettify(s)
6367}
6368
6369// GoString returns the string representation
6370func (s CreateIPSetOutput) GoString() string {
6371	return s.String()
6372}
6373
6374// SetChangeToken sets the ChangeToken field's value.
6375func (s *CreateIPSetOutput) SetChangeToken(v string) *CreateIPSetOutput {
6376	s.ChangeToken = &v
6377	return s
6378}
6379
6380// SetIPSet sets the IPSet field's value.
6381func (s *CreateIPSetOutput) SetIPSet(v *IPSet) *CreateIPSetOutput {
6382	s.IPSet = v
6383	return s
6384}
6385
6386// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateRateBasedRuleRequest
6387type CreateRateBasedRuleInput struct {
6388	_ struct{} `type:"structure"`
6389
6390	// The ChangeToken that you used to submit the CreateRateBasedRule request.
6391	// You can also use this value to query the status of the request. For more
6392	// information, see GetChangeTokenStatus.
6393	//
6394	// ChangeToken is a required field
6395	ChangeToken *string `min:"1" type:"string" required:"true"`
6396
6397	// A friendly name or description for the metrics for this RateBasedRule. The
6398	// name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't
6399	// contain whitespace. You can't change the name of the metric after you create
6400	// the RateBasedRule.
6401	//
6402	// MetricName is a required field
6403	MetricName *string `type:"string" required:"true"`
6404
6405	// A friendly name or description of the RateBasedRule. You can't change the
6406	// name of a RateBasedRule after you create it.
6407	//
6408	// Name is a required field
6409	Name *string `min:"1" type:"string" required:"true"`
6410
6411	// The field that AWS WAF uses to determine if requests are likely arriving
6412	// from a single source and thus subject to rate monitoring. The only valid
6413	// value for RateKey is IP. IP indicates that requests that arrive from the
6414	// same IP address are subject to the RateLimit that is specified in the RateBasedRule.
6415	//
6416	// RateKey is a required field
6417	RateKey *string `type:"string" required:"true" enum:"RateKey"`
6418
6419	// The maximum number of requests, which have an identical value in the field
6420	// that is specified by RateKey, allowed in a five-minute period. If the number
6421	// of requests exceeds the RateLimit and the other predicates specified in the
6422	// rule are also met, AWS WAF triggers the action that is specified for this
6423	// rule.
6424	//
6425	// RateLimit is a required field
6426	RateLimit *int64 `min:"2000" type:"long" required:"true"`
6427}
6428
6429// String returns the string representation
6430func (s CreateRateBasedRuleInput) String() string {
6431	return awsutil.Prettify(s)
6432}
6433
6434// GoString returns the string representation
6435func (s CreateRateBasedRuleInput) GoString() string {
6436	return s.String()
6437}
6438
6439// Validate inspects the fields of the type to determine if they are valid.
6440func (s *CreateRateBasedRuleInput) Validate() error {
6441	invalidParams := request.ErrInvalidParams{Context: "CreateRateBasedRuleInput"}
6442	if s.ChangeToken == nil {
6443		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
6444	}
6445	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
6446		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
6447	}
6448	if s.MetricName == nil {
6449		invalidParams.Add(request.NewErrParamRequired("MetricName"))
6450	}
6451	if s.Name == nil {
6452		invalidParams.Add(request.NewErrParamRequired("Name"))
6453	}
6454	if s.Name != nil && len(*s.Name) < 1 {
6455		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
6456	}
6457	if s.RateKey == nil {
6458		invalidParams.Add(request.NewErrParamRequired("RateKey"))
6459	}
6460	if s.RateLimit == nil {
6461		invalidParams.Add(request.NewErrParamRequired("RateLimit"))
6462	}
6463	if s.RateLimit != nil && *s.RateLimit < 2000 {
6464		invalidParams.Add(request.NewErrParamMinValue("RateLimit", 2000))
6465	}
6466
6467	if invalidParams.Len() > 0 {
6468		return invalidParams
6469	}
6470	return nil
6471}
6472
6473// SetChangeToken sets the ChangeToken field's value.
6474func (s *CreateRateBasedRuleInput) SetChangeToken(v string) *CreateRateBasedRuleInput {
6475	s.ChangeToken = &v
6476	return s
6477}
6478
6479// SetMetricName sets the MetricName field's value.
6480func (s *CreateRateBasedRuleInput) SetMetricName(v string) *CreateRateBasedRuleInput {
6481	s.MetricName = &v
6482	return s
6483}
6484
6485// SetName sets the Name field's value.
6486func (s *CreateRateBasedRuleInput) SetName(v string) *CreateRateBasedRuleInput {
6487	s.Name = &v
6488	return s
6489}
6490
6491// SetRateKey sets the RateKey field's value.
6492func (s *CreateRateBasedRuleInput) SetRateKey(v string) *CreateRateBasedRuleInput {
6493	s.RateKey = &v
6494	return s
6495}
6496
6497// SetRateLimit sets the RateLimit field's value.
6498func (s *CreateRateBasedRuleInput) SetRateLimit(v int64) *CreateRateBasedRuleInput {
6499	s.RateLimit = &v
6500	return s
6501}
6502
6503// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateRateBasedRuleResponse
6504type CreateRateBasedRuleOutput struct {
6505	_ struct{} `type:"structure"`
6506
6507	// The ChangeToken that you used to submit the CreateRateBasedRule request.
6508	// You can also use this value to query the status of the request. For more
6509	// information, see GetChangeTokenStatus.
6510	ChangeToken *string `min:"1" type:"string"`
6511
6512	// The RateBasedRule that is returned in the CreateRateBasedRule response.
6513	Rule *RateBasedRule `type:"structure"`
6514}
6515
6516// String returns the string representation
6517func (s CreateRateBasedRuleOutput) String() string {
6518	return awsutil.Prettify(s)
6519}
6520
6521// GoString returns the string representation
6522func (s CreateRateBasedRuleOutput) GoString() string {
6523	return s.String()
6524}
6525
6526// SetChangeToken sets the ChangeToken field's value.
6527func (s *CreateRateBasedRuleOutput) SetChangeToken(v string) *CreateRateBasedRuleOutput {
6528	s.ChangeToken = &v
6529	return s
6530}
6531
6532// SetRule sets the Rule field's value.
6533func (s *CreateRateBasedRuleOutput) SetRule(v *RateBasedRule) *CreateRateBasedRuleOutput {
6534	s.Rule = v
6535	return s
6536}
6537
6538// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateRuleRequest
6539type CreateRuleInput struct {
6540	_ struct{} `type:"structure"`
6541
6542	// The value returned by the most recent call to GetChangeToken.
6543	//
6544	// ChangeToken is a required field
6545	ChangeToken *string `min:"1" type:"string" required:"true"`
6546
6547	// A friendly name or description for the metrics for this Rule. The name can
6548	// contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
6549	// whitespace. You can't change the name of the metric after you create the
6550	// Rule.
6551	//
6552	// MetricName is a required field
6553	MetricName *string `type:"string" required:"true"`
6554
6555	// A friendly name or description of the Rule. You can't change the name of
6556	// a Rule after you create it.
6557	//
6558	// Name is a required field
6559	Name *string `min:"1" type:"string" required:"true"`
6560}
6561
6562// String returns the string representation
6563func (s CreateRuleInput) String() string {
6564	return awsutil.Prettify(s)
6565}
6566
6567// GoString returns the string representation
6568func (s CreateRuleInput) GoString() string {
6569	return s.String()
6570}
6571
6572// Validate inspects the fields of the type to determine if they are valid.
6573func (s *CreateRuleInput) Validate() error {
6574	invalidParams := request.ErrInvalidParams{Context: "CreateRuleInput"}
6575	if s.ChangeToken == nil {
6576		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
6577	}
6578	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
6579		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
6580	}
6581	if s.MetricName == nil {
6582		invalidParams.Add(request.NewErrParamRequired("MetricName"))
6583	}
6584	if s.Name == nil {
6585		invalidParams.Add(request.NewErrParamRequired("Name"))
6586	}
6587	if s.Name != nil && len(*s.Name) < 1 {
6588		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
6589	}
6590
6591	if invalidParams.Len() > 0 {
6592		return invalidParams
6593	}
6594	return nil
6595}
6596
6597// SetChangeToken sets the ChangeToken field's value.
6598func (s *CreateRuleInput) SetChangeToken(v string) *CreateRuleInput {
6599	s.ChangeToken = &v
6600	return s
6601}
6602
6603// SetMetricName sets the MetricName field's value.
6604func (s *CreateRuleInput) SetMetricName(v string) *CreateRuleInput {
6605	s.MetricName = &v
6606	return s
6607}
6608
6609// SetName sets the Name field's value.
6610func (s *CreateRuleInput) SetName(v string) *CreateRuleInput {
6611	s.Name = &v
6612	return s
6613}
6614
6615// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateRuleResponse
6616type CreateRuleOutput struct {
6617	_ struct{} `type:"structure"`
6618
6619	// The ChangeToken that you used to submit the CreateRule request. You can also
6620	// use this value to query the status of the request. For more information,
6621	// see GetChangeTokenStatus.
6622	ChangeToken *string `min:"1" type:"string"`
6623
6624	// The Rule returned in the CreateRule response.
6625	Rule *Rule `type:"structure"`
6626}
6627
6628// String returns the string representation
6629func (s CreateRuleOutput) String() string {
6630	return awsutil.Prettify(s)
6631}
6632
6633// GoString returns the string representation
6634func (s CreateRuleOutput) GoString() string {
6635	return s.String()
6636}
6637
6638// SetChangeToken sets the ChangeToken field's value.
6639func (s *CreateRuleOutput) SetChangeToken(v string) *CreateRuleOutput {
6640	s.ChangeToken = &v
6641	return s
6642}
6643
6644// SetRule sets the Rule field's value.
6645func (s *CreateRuleOutput) SetRule(v *Rule) *CreateRuleOutput {
6646	s.Rule = v
6647	return s
6648}
6649
6650// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateSizeConstraintSetRequest
6651type CreateSizeConstraintSetInput struct {
6652	_ struct{} `type:"structure"`
6653
6654	// The value returned by the most recent call to GetChangeToken.
6655	//
6656	// ChangeToken is a required field
6657	ChangeToken *string `min:"1" type:"string" required:"true"`
6658
6659	// A friendly name or description of the SizeConstraintSet. You can't change
6660	// Name after you create a SizeConstraintSet.
6661	//
6662	// Name is a required field
6663	Name *string `min:"1" type:"string" required:"true"`
6664}
6665
6666// String returns the string representation
6667func (s CreateSizeConstraintSetInput) String() string {
6668	return awsutil.Prettify(s)
6669}
6670
6671// GoString returns the string representation
6672func (s CreateSizeConstraintSetInput) GoString() string {
6673	return s.String()
6674}
6675
6676// Validate inspects the fields of the type to determine if they are valid.
6677func (s *CreateSizeConstraintSetInput) Validate() error {
6678	invalidParams := request.ErrInvalidParams{Context: "CreateSizeConstraintSetInput"}
6679	if s.ChangeToken == nil {
6680		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
6681	}
6682	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
6683		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
6684	}
6685	if s.Name == nil {
6686		invalidParams.Add(request.NewErrParamRequired("Name"))
6687	}
6688	if s.Name != nil && len(*s.Name) < 1 {
6689		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
6690	}
6691
6692	if invalidParams.Len() > 0 {
6693		return invalidParams
6694	}
6695	return nil
6696}
6697
6698// SetChangeToken sets the ChangeToken field's value.
6699func (s *CreateSizeConstraintSetInput) SetChangeToken(v string) *CreateSizeConstraintSetInput {
6700	s.ChangeToken = &v
6701	return s
6702}
6703
6704// SetName sets the Name field's value.
6705func (s *CreateSizeConstraintSetInput) SetName(v string) *CreateSizeConstraintSetInput {
6706	s.Name = &v
6707	return s
6708}
6709
6710// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateSizeConstraintSetResponse
6711type CreateSizeConstraintSetOutput struct {
6712	_ struct{} `type:"structure"`
6713
6714	// The ChangeToken that you used to submit the CreateSizeConstraintSet request.
6715	// You can also use this value to query the status of the request. For more
6716	// information, see GetChangeTokenStatus.
6717	ChangeToken *string `min:"1" type:"string"`
6718
6719	// A SizeConstraintSet that contains no SizeConstraint objects.
6720	SizeConstraintSet *SizeConstraintSet `type:"structure"`
6721}
6722
6723// String returns the string representation
6724func (s CreateSizeConstraintSetOutput) String() string {
6725	return awsutil.Prettify(s)
6726}
6727
6728// GoString returns the string representation
6729func (s CreateSizeConstraintSetOutput) GoString() string {
6730	return s.String()
6731}
6732
6733// SetChangeToken sets the ChangeToken field's value.
6734func (s *CreateSizeConstraintSetOutput) SetChangeToken(v string) *CreateSizeConstraintSetOutput {
6735	s.ChangeToken = &v
6736	return s
6737}
6738
6739// SetSizeConstraintSet sets the SizeConstraintSet field's value.
6740func (s *CreateSizeConstraintSetOutput) SetSizeConstraintSet(v *SizeConstraintSet) *CreateSizeConstraintSetOutput {
6741	s.SizeConstraintSet = v
6742	return s
6743}
6744
6745// A request to create a SqlInjectionMatchSet.
6746// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateSqlInjectionMatchSetRequest
6747type CreateSqlInjectionMatchSetInput struct {
6748	_ struct{} `type:"structure"`
6749
6750	// The value returned by the most recent call to GetChangeToken.
6751	//
6752	// ChangeToken is a required field
6753	ChangeToken *string `min:"1" type:"string" required:"true"`
6754
6755	// A friendly name or description for the SqlInjectionMatchSet that you're creating.
6756	// You can't change Name after you create the SqlInjectionMatchSet.
6757	//
6758	// Name is a required field
6759	Name *string `min:"1" type:"string" required:"true"`
6760}
6761
6762// String returns the string representation
6763func (s CreateSqlInjectionMatchSetInput) String() string {
6764	return awsutil.Prettify(s)
6765}
6766
6767// GoString returns the string representation
6768func (s CreateSqlInjectionMatchSetInput) GoString() string {
6769	return s.String()
6770}
6771
6772// Validate inspects the fields of the type to determine if they are valid.
6773func (s *CreateSqlInjectionMatchSetInput) Validate() error {
6774	invalidParams := request.ErrInvalidParams{Context: "CreateSqlInjectionMatchSetInput"}
6775	if s.ChangeToken == nil {
6776		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
6777	}
6778	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
6779		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
6780	}
6781	if s.Name == nil {
6782		invalidParams.Add(request.NewErrParamRequired("Name"))
6783	}
6784	if s.Name != nil && len(*s.Name) < 1 {
6785		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
6786	}
6787
6788	if invalidParams.Len() > 0 {
6789		return invalidParams
6790	}
6791	return nil
6792}
6793
6794// SetChangeToken sets the ChangeToken field's value.
6795func (s *CreateSqlInjectionMatchSetInput) SetChangeToken(v string) *CreateSqlInjectionMatchSetInput {
6796	s.ChangeToken = &v
6797	return s
6798}
6799
6800// SetName sets the Name field's value.
6801func (s *CreateSqlInjectionMatchSetInput) SetName(v string) *CreateSqlInjectionMatchSetInput {
6802	s.Name = &v
6803	return s
6804}
6805
6806// The response to a CreateSqlInjectionMatchSet request.
6807// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateSqlInjectionMatchSetResponse
6808type CreateSqlInjectionMatchSetOutput struct {
6809	_ struct{} `type:"structure"`
6810
6811	// The ChangeToken that you used to submit the CreateSqlInjectionMatchSet request.
6812	// You can also use this value to query the status of the request. For more
6813	// information, see GetChangeTokenStatus.
6814	ChangeToken *string `min:"1" type:"string"`
6815
6816	// A SqlInjectionMatchSet.
6817	SqlInjectionMatchSet *SqlInjectionMatchSet `type:"structure"`
6818}
6819
6820// String returns the string representation
6821func (s CreateSqlInjectionMatchSetOutput) String() string {
6822	return awsutil.Prettify(s)
6823}
6824
6825// GoString returns the string representation
6826func (s CreateSqlInjectionMatchSetOutput) GoString() string {
6827	return s.String()
6828}
6829
6830// SetChangeToken sets the ChangeToken field's value.
6831func (s *CreateSqlInjectionMatchSetOutput) SetChangeToken(v string) *CreateSqlInjectionMatchSetOutput {
6832	s.ChangeToken = &v
6833	return s
6834}
6835
6836// SetSqlInjectionMatchSet sets the SqlInjectionMatchSet field's value.
6837func (s *CreateSqlInjectionMatchSetOutput) SetSqlInjectionMatchSet(v *SqlInjectionMatchSet) *CreateSqlInjectionMatchSetOutput {
6838	s.SqlInjectionMatchSet = v
6839	return s
6840}
6841
6842// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateWebACLRequest
6843type CreateWebACLInput struct {
6844	_ struct{} `type:"structure"`
6845
6846	// The value returned by the most recent call to GetChangeToken.
6847	//
6848	// ChangeToken is a required field
6849	ChangeToken *string `min:"1" type:"string" required:"true"`
6850
6851	// The action that you want AWS WAF to take when a request doesn't match the
6852	// criteria specified in any of the Rule objects that are associated with the
6853	// WebACL.
6854	//
6855	// DefaultAction is a required field
6856	DefaultAction *WafAction `type:"structure" required:"true"`
6857
6858	// A friendly name or description for the metrics for this WebACL. The name
6859	// can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't
6860	// contain whitespace. You can't change MetricName after you create the WebACL.
6861	//
6862	// MetricName is a required field
6863	MetricName *string `type:"string" required:"true"`
6864
6865	// A friendly name or description of the WebACL. You can't change Name after
6866	// you create the WebACL.
6867	//
6868	// Name is a required field
6869	Name *string `min:"1" type:"string" required:"true"`
6870}
6871
6872// String returns the string representation
6873func (s CreateWebACLInput) String() string {
6874	return awsutil.Prettify(s)
6875}
6876
6877// GoString returns the string representation
6878func (s CreateWebACLInput) GoString() string {
6879	return s.String()
6880}
6881
6882// Validate inspects the fields of the type to determine if they are valid.
6883func (s *CreateWebACLInput) Validate() error {
6884	invalidParams := request.ErrInvalidParams{Context: "CreateWebACLInput"}
6885	if s.ChangeToken == nil {
6886		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
6887	}
6888	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
6889		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
6890	}
6891	if s.DefaultAction == nil {
6892		invalidParams.Add(request.NewErrParamRequired("DefaultAction"))
6893	}
6894	if s.MetricName == nil {
6895		invalidParams.Add(request.NewErrParamRequired("MetricName"))
6896	}
6897	if s.Name == nil {
6898		invalidParams.Add(request.NewErrParamRequired("Name"))
6899	}
6900	if s.Name != nil && len(*s.Name) < 1 {
6901		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
6902	}
6903	if s.DefaultAction != nil {
6904		if err := s.DefaultAction.Validate(); err != nil {
6905			invalidParams.AddNested("DefaultAction", err.(request.ErrInvalidParams))
6906		}
6907	}
6908
6909	if invalidParams.Len() > 0 {
6910		return invalidParams
6911	}
6912	return nil
6913}
6914
6915// SetChangeToken sets the ChangeToken field's value.
6916func (s *CreateWebACLInput) SetChangeToken(v string) *CreateWebACLInput {
6917	s.ChangeToken = &v
6918	return s
6919}
6920
6921// SetDefaultAction sets the DefaultAction field's value.
6922func (s *CreateWebACLInput) SetDefaultAction(v *WafAction) *CreateWebACLInput {
6923	s.DefaultAction = v
6924	return s
6925}
6926
6927// SetMetricName sets the MetricName field's value.
6928func (s *CreateWebACLInput) SetMetricName(v string) *CreateWebACLInput {
6929	s.MetricName = &v
6930	return s
6931}
6932
6933// SetName sets the Name field's value.
6934func (s *CreateWebACLInput) SetName(v string) *CreateWebACLInput {
6935	s.Name = &v
6936	return s
6937}
6938
6939// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateWebACLResponse
6940type CreateWebACLOutput struct {
6941	_ struct{} `type:"structure"`
6942
6943	// The ChangeToken that you used to submit the CreateWebACL request. You can
6944	// also use this value to query the status of the request. For more information,
6945	// see GetChangeTokenStatus.
6946	ChangeToken *string `min:"1" type:"string"`
6947
6948	// The WebACL returned in the CreateWebACL response.
6949	WebACL *WebACL `type:"structure"`
6950}
6951
6952// String returns the string representation
6953func (s CreateWebACLOutput) String() string {
6954	return awsutil.Prettify(s)
6955}
6956
6957// GoString returns the string representation
6958func (s CreateWebACLOutput) GoString() string {
6959	return s.String()
6960}
6961
6962// SetChangeToken sets the ChangeToken field's value.
6963func (s *CreateWebACLOutput) SetChangeToken(v string) *CreateWebACLOutput {
6964	s.ChangeToken = &v
6965	return s
6966}
6967
6968// SetWebACL sets the WebACL field's value.
6969func (s *CreateWebACLOutput) SetWebACL(v *WebACL) *CreateWebACLOutput {
6970	s.WebACL = v
6971	return s
6972}
6973
6974// A request to create an XssMatchSet.
6975// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateXssMatchSetRequest
6976type CreateXssMatchSetInput struct {
6977	_ struct{} `type:"structure"`
6978
6979	// The value returned by the most recent call to GetChangeToken.
6980	//
6981	// ChangeToken is a required field
6982	ChangeToken *string `min:"1" type:"string" required:"true"`
6983
6984	// A friendly name or description for the XssMatchSet that you're creating.
6985	// You can't change Name after you create the XssMatchSet.
6986	//
6987	// Name is a required field
6988	Name *string `min:"1" type:"string" required:"true"`
6989}
6990
6991// String returns the string representation
6992func (s CreateXssMatchSetInput) String() string {
6993	return awsutil.Prettify(s)
6994}
6995
6996// GoString returns the string representation
6997func (s CreateXssMatchSetInput) GoString() string {
6998	return s.String()
6999}
7000
7001// Validate inspects the fields of the type to determine if they are valid.
7002func (s *CreateXssMatchSetInput) Validate() error {
7003	invalidParams := request.ErrInvalidParams{Context: "CreateXssMatchSetInput"}
7004	if s.ChangeToken == nil {
7005		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
7006	}
7007	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
7008		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
7009	}
7010	if s.Name == nil {
7011		invalidParams.Add(request.NewErrParamRequired("Name"))
7012	}
7013	if s.Name != nil && len(*s.Name) < 1 {
7014		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
7015	}
7016
7017	if invalidParams.Len() > 0 {
7018		return invalidParams
7019	}
7020	return nil
7021}
7022
7023// SetChangeToken sets the ChangeToken field's value.
7024func (s *CreateXssMatchSetInput) SetChangeToken(v string) *CreateXssMatchSetInput {
7025	s.ChangeToken = &v
7026	return s
7027}
7028
7029// SetName sets the Name field's value.
7030func (s *CreateXssMatchSetInput) SetName(v string) *CreateXssMatchSetInput {
7031	s.Name = &v
7032	return s
7033}
7034
7035// The response to a CreateXssMatchSet request.
7036// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateXssMatchSetResponse
7037type CreateXssMatchSetOutput struct {
7038	_ struct{} `type:"structure"`
7039
7040	// The ChangeToken that you used to submit the CreateXssMatchSet request. You
7041	// can also use this value to query the status of the request. For more information,
7042	// see GetChangeTokenStatus.
7043	ChangeToken *string `min:"1" type:"string"`
7044
7045	// An XssMatchSet.
7046	XssMatchSet *XssMatchSet `type:"structure"`
7047}
7048
7049// String returns the string representation
7050func (s CreateXssMatchSetOutput) String() string {
7051	return awsutil.Prettify(s)
7052}
7053
7054// GoString returns the string representation
7055func (s CreateXssMatchSetOutput) GoString() string {
7056	return s.String()
7057}
7058
7059// SetChangeToken sets the ChangeToken field's value.
7060func (s *CreateXssMatchSetOutput) SetChangeToken(v string) *CreateXssMatchSetOutput {
7061	s.ChangeToken = &v
7062	return s
7063}
7064
7065// SetXssMatchSet sets the XssMatchSet field's value.
7066func (s *CreateXssMatchSetOutput) SetXssMatchSet(v *XssMatchSet) *CreateXssMatchSetOutput {
7067	s.XssMatchSet = v
7068	return s
7069}
7070
7071// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteByteMatchSetRequest
7072type DeleteByteMatchSetInput struct {
7073	_ struct{} `type:"structure"`
7074
7075	// The ByteMatchSetId of the ByteMatchSet that you want to delete. ByteMatchSetId
7076	// is returned by CreateByteMatchSet and by ListByteMatchSets.
7077	//
7078	// ByteMatchSetId is a required field
7079	ByteMatchSetId *string `min:"1" type:"string" required:"true"`
7080
7081	// The value returned by the most recent call to GetChangeToken.
7082	//
7083	// ChangeToken is a required field
7084	ChangeToken *string `min:"1" type:"string" required:"true"`
7085}
7086
7087// String returns the string representation
7088func (s DeleteByteMatchSetInput) String() string {
7089	return awsutil.Prettify(s)
7090}
7091
7092// GoString returns the string representation
7093func (s DeleteByteMatchSetInput) GoString() string {
7094	return s.String()
7095}
7096
7097// Validate inspects the fields of the type to determine if they are valid.
7098func (s *DeleteByteMatchSetInput) Validate() error {
7099	invalidParams := request.ErrInvalidParams{Context: "DeleteByteMatchSetInput"}
7100	if s.ByteMatchSetId == nil {
7101		invalidParams.Add(request.NewErrParamRequired("ByteMatchSetId"))
7102	}
7103	if s.ByteMatchSetId != nil && len(*s.ByteMatchSetId) < 1 {
7104		invalidParams.Add(request.NewErrParamMinLen("ByteMatchSetId", 1))
7105	}
7106	if s.ChangeToken == nil {
7107		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
7108	}
7109	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
7110		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
7111	}
7112
7113	if invalidParams.Len() > 0 {
7114		return invalidParams
7115	}
7116	return nil
7117}
7118
7119// SetByteMatchSetId sets the ByteMatchSetId field's value.
7120func (s *DeleteByteMatchSetInput) SetByteMatchSetId(v string) *DeleteByteMatchSetInput {
7121	s.ByteMatchSetId = &v
7122	return s
7123}
7124
7125// SetChangeToken sets the ChangeToken field's value.
7126func (s *DeleteByteMatchSetInput) SetChangeToken(v string) *DeleteByteMatchSetInput {
7127	s.ChangeToken = &v
7128	return s
7129}
7130
7131// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteByteMatchSetResponse
7132type DeleteByteMatchSetOutput struct {
7133	_ struct{} `type:"structure"`
7134
7135	// The ChangeToken that you used to submit the DeleteByteMatchSet request. You
7136	// can also use this value to query the status of the request. For more information,
7137	// see GetChangeTokenStatus.
7138	ChangeToken *string `min:"1" type:"string"`
7139}
7140
7141// String returns the string representation
7142func (s DeleteByteMatchSetOutput) String() string {
7143	return awsutil.Prettify(s)
7144}
7145
7146// GoString returns the string representation
7147func (s DeleteByteMatchSetOutput) GoString() string {
7148	return s.String()
7149}
7150
7151// SetChangeToken sets the ChangeToken field's value.
7152func (s *DeleteByteMatchSetOutput) SetChangeToken(v string) *DeleteByteMatchSetOutput {
7153	s.ChangeToken = &v
7154	return s
7155}
7156
7157// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteIPSetRequest
7158type DeleteIPSetInput struct {
7159	_ struct{} `type:"structure"`
7160
7161	// The value returned by the most recent call to GetChangeToken.
7162	//
7163	// ChangeToken is a required field
7164	ChangeToken *string `min:"1" type:"string" required:"true"`
7165
7166	// The IPSetId of the IPSet that you want to delete. IPSetId is returned by
7167	// CreateIPSet and by ListIPSets.
7168	//
7169	// IPSetId is a required field
7170	IPSetId *string `min:"1" type:"string" required:"true"`
7171}
7172
7173// String returns the string representation
7174func (s DeleteIPSetInput) String() string {
7175	return awsutil.Prettify(s)
7176}
7177
7178// GoString returns the string representation
7179func (s DeleteIPSetInput) GoString() string {
7180	return s.String()
7181}
7182
7183// Validate inspects the fields of the type to determine if they are valid.
7184func (s *DeleteIPSetInput) Validate() error {
7185	invalidParams := request.ErrInvalidParams{Context: "DeleteIPSetInput"}
7186	if s.ChangeToken == nil {
7187		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
7188	}
7189	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
7190		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
7191	}
7192	if s.IPSetId == nil {
7193		invalidParams.Add(request.NewErrParamRequired("IPSetId"))
7194	}
7195	if s.IPSetId != nil && len(*s.IPSetId) < 1 {
7196		invalidParams.Add(request.NewErrParamMinLen("IPSetId", 1))
7197	}
7198
7199	if invalidParams.Len() > 0 {
7200		return invalidParams
7201	}
7202	return nil
7203}
7204
7205// SetChangeToken sets the ChangeToken field's value.
7206func (s *DeleteIPSetInput) SetChangeToken(v string) *DeleteIPSetInput {
7207	s.ChangeToken = &v
7208	return s
7209}
7210
7211// SetIPSetId sets the IPSetId field's value.
7212func (s *DeleteIPSetInput) SetIPSetId(v string) *DeleteIPSetInput {
7213	s.IPSetId = &v
7214	return s
7215}
7216
7217// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteIPSetResponse
7218type DeleteIPSetOutput struct {
7219	_ struct{} `type:"structure"`
7220
7221	// The ChangeToken that you used to submit the DeleteIPSet request. You can
7222	// also use this value to query the status of the request. For more information,
7223	// see GetChangeTokenStatus.
7224	ChangeToken *string `min:"1" type:"string"`
7225}
7226
7227// String returns the string representation
7228func (s DeleteIPSetOutput) String() string {
7229	return awsutil.Prettify(s)
7230}
7231
7232// GoString returns the string representation
7233func (s DeleteIPSetOutput) GoString() string {
7234	return s.String()
7235}
7236
7237// SetChangeToken sets the ChangeToken field's value.
7238func (s *DeleteIPSetOutput) SetChangeToken(v string) *DeleteIPSetOutput {
7239	s.ChangeToken = &v
7240	return s
7241}
7242
7243// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteRateBasedRuleRequest
7244type DeleteRateBasedRuleInput struct {
7245	_ struct{} `type:"structure"`
7246
7247	// The value returned by the most recent call to GetChangeToken.
7248	//
7249	// ChangeToken is a required field
7250	ChangeToken *string `min:"1" type:"string" required:"true"`
7251
7252	// The RuleId of the RateBasedRule that you want to delete. RuleId is returned
7253	// by CreateRateBasedRule and by ListRateBasedRules.
7254	//
7255	// RuleId is a required field
7256	RuleId *string `min:"1" type:"string" required:"true"`
7257}
7258
7259// String returns the string representation
7260func (s DeleteRateBasedRuleInput) String() string {
7261	return awsutil.Prettify(s)
7262}
7263
7264// GoString returns the string representation
7265func (s DeleteRateBasedRuleInput) GoString() string {
7266	return s.String()
7267}
7268
7269// Validate inspects the fields of the type to determine if they are valid.
7270func (s *DeleteRateBasedRuleInput) Validate() error {
7271	invalidParams := request.ErrInvalidParams{Context: "DeleteRateBasedRuleInput"}
7272	if s.ChangeToken == nil {
7273		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
7274	}
7275	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
7276		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
7277	}
7278	if s.RuleId == nil {
7279		invalidParams.Add(request.NewErrParamRequired("RuleId"))
7280	}
7281	if s.RuleId != nil && len(*s.RuleId) < 1 {
7282		invalidParams.Add(request.NewErrParamMinLen("RuleId", 1))
7283	}
7284
7285	if invalidParams.Len() > 0 {
7286		return invalidParams
7287	}
7288	return nil
7289}
7290
7291// SetChangeToken sets the ChangeToken field's value.
7292func (s *DeleteRateBasedRuleInput) SetChangeToken(v string) *DeleteRateBasedRuleInput {
7293	s.ChangeToken = &v
7294	return s
7295}
7296
7297// SetRuleId sets the RuleId field's value.
7298func (s *DeleteRateBasedRuleInput) SetRuleId(v string) *DeleteRateBasedRuleInput {
7299	s.RuleId = &v
7300	return s
7301}
7302
7303// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteRateBasedRuleResponse
7304type DeleteRateBasedRuleOutput struct {
7305	_ struct{} `type:"structure"`
7306
7307	// The ChangeToken that you used to submit the DeleteRateBasedRule request.
7308	// You can also use this value to query the status of the request. For more
7309	// information, see GetChangeTokenStatus.
7310	ChangeToken *string `min:"1" type:"string"`
7311}
7312
7313// String returns the string representation
7314func (s DeleteRateBasedRuleOutput) String() string {
7315	return awsutil.Prettify(s)
7316}
7317
7318// GoString returns the string representation
7319func (s DeleteRateBasedRuleOutput) GoString() string {
7320	return s.String()
7321}
7322
7323// SetChangeToken sets the ChangeToken field's value.
7324func (s *DeleteRateBasedRuleOutput) SetChangeToken(v string) *DeleteRateBasedRuleOutput {
7325	s.ChangeToken = &v
7326	return s
7327}
7328
7329// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteRuleRequest
7330type DeleteRuleInput struct {
7331	_ struct{} `type:"structure"`
7332
7333	// The value returned by the most recent call to GetChangeToken.
7334	//
7335	// ChangeToken is a required field
7336	ChangeToken *string `min:"1" type:"string" required:"true"`
7337
7338	// The RuleId of the Rule that you want to delete. RuleId is returned by CreateRule
7339	// and by ListRules.
7340	//
7341	// RuleId is a required field
7342	RuleId *string `min:"1" type:"string" required:"true"`
7343}
7344
7345// String returns the string representation
7346func (s DeleteRuleInput) String() string {
7347	return awsutil.Prettify(s)
7348}
7349
7350// GoString returns the string representation
7351func (s DeleteRuleInput) GoString() string {
7352	return s.String()
7353}
7354
7355// Validate inspects the fields of the type to determine if they are valid.
7356func (s *DeleteRuleInput) Validate() error {
7357	invalidParams := request.ErrInvalidParams{Context: "DeleteRuleInput"}
7358	if s.ChangeToken == nil {
7359		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
7360	}
7361	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
7362		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
7363	}
7364	if s.RuleId == nil {
7365		invalidParams.Add(request.NewErrParamRequired("RuleId"))
7366	}
7367	if s.RuleId != nil && len(*s.RuleId) < 1 {
7368		invalidParams.Add(request.NewErrParamMinLen("RuleId", 1))
7369	}
7370
7371	if invalidParams.Len() > 0 {
7372		return invalidParams
7373	}
7374	return nil
7375}
7376
7377// SetChangeToken sets the ChangeToken field's value.
7378func (s *DeleteRuleInput) SetChangeToken(v string) *DeleteRuleInput {
7379	s.ChangeToken = &v
7380	return s
7381}
7382
7383// SetRuleId sets the RuleId field's value.
7384func (s *DeleteRuleInput) SetRuleId(v string) *DeleteRuleInput {
7385	s.RuleId = &v
7386	return s
7387}
7388
7389// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteRuleResponse
7390type DeleteRuleOutput struct {
7391	_ struct{} `type:"structure"`
7392
7393	// The ChangeToken that you used to submit the DeleteRule request. You can also
7394	// use this value to query the status of the request. For more information,
7395	// see GetChangeTokenStatus.
7396	ChangeToken *string `min:"1" type:"string"`
7397}
7398
7399// String returns the string representation
7400func (s DeleteRuleOutput) String() string {
7401	return awsutil.Prettify(s)
7402}
7403
7404// GoString returns the string representation
7405func (s DeleteRuleOutput) GoString() string {
7406	return s.String()
7407}
7408
7409// SetChangeToken sets the ChangeToken field's value.
7410func (s *DeleteRuleOutput) SetChangeToken(v string) *DeleteRuleOutput {
7411	s.ChangeToken = &v
7412	return s
7413}
7414
7415// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteSizeConstraintSetRequest
7416type DeleteSizeConstraintSetInput struct {
7417	_ struct{} `type:"structure"`
7418
7419	// The value returned by the most recent call to GetChangeToken.
7420	//
7421	// ChangeToken is a required field
7422	ChangeToken *string `min:"1" type:"string" required:"true"`
7423
7424	// The SizeConstraintSetId of the SizeConstraintSet that you want to delete.
7425	// SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets.
7426	//
7427	// SizeConstraintSetId is a required field
7428	SizeConstraintSetId *string `min:"1" type:"string" required:"true"`
7429}
7430
7431// String returns the string representation
7432func (s DeleteSizeConstraintSetInput) String() string {
7433	return awsutil.Prettify(s)
7434}
7435
7436// GoString returns the string representation
7437func (s DeleteSizeConstraintSetInput) GoString() string {
7438	return s.String()
7439}
7440
7441// Validate inspects the fields of the type to determine if they are valid.
7442func (s *DeleteSizeConstraintSetInput) Validate() error {
7443	invalidParams := request.ErrInvalidParams{Context: "DeleteSizeConstraintSetInput"}
7444	if s.ChangeToken == nil {
7445		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
7446	}
7447	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
7448		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
7449	}
7450	if s.SizeConstraintSetId == nil {
7451		invalidParams.Add(request.NewErrParamRequired("SizeConstraintSetId"))
7452	}
7453	if s.SizeConstraintSetId != nil && len(*s.SizeConstraintSetId) < 1 {
7454		invalidParams.Add(request.NewErrParamMinLen("SizeConstraintSetId", 1))
7455	}
7456
7457	if invalidParams.Len() > 0 {
7458		return invalidParams
7459	}
7460	return nil
7461}
7462
7463// SetChangeToken sets the ChangeToken field's value.
7464func (s *DeleteSizeConstraintSetInput) SetChangeToken(v string) *DeleteSizeConstraintSetInput {
7465	s.ChangeToken = &v
7466	return s
7467}
7468
7469// SetSizeConstraintSetId sets the SizeConstraintSetId field's value.
7470func (s *DeleteSizeConstraintSetInput) SetSizeConstraintSetId(v string) *DeleteSizeConstraintSetInput {
7471	s.SizeConstraintSetId = &v
7472	return s
7473}
7474
7475// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteSizeConstraintSetResponse
7476type DeleteSizeConstraintSetOutput struct {
7477	_ struct{} `type:"structure"`
7478
7479	// The ChangeToken that you used to submit the DeleteSizeConstraintSet request.
7480	// You can also use this value to query the status of the request. For more
7481	// information, see GetChangeTokenStatus.
7482	ChangeToken *string `min:"1" type:"string"`
7483}
7484
7485// String returns the string representation
7486func (s DeleteSizeConstraintSetOutput) String() string {
7487	return awsutil.Prettify(s)
7488}
7489
7490// GoString returns the string representation
7491func (s DeleteSizeConstraintSetOutput) GoString() string {
7492	return s.String()
7493}
7494
7495// SetChangeToken sets the ChangeToken field's value.
7496func (s *DeleteSizeConstraintSetOutput) SetChangeToken(v string) *DeleteSizeConstraintSetOutput {
7497	s.ChangeToken = &v
7498	return s
7499}
7500
7501// A request to delete a SqlInjectionMatchSet from AWS WAF.
7502// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteSqlInjectionMatchSetRequest
7503type DeleteSqlInjectionMatchSetInput struct {
7504	_ struct{} `type:"structure"`
7505
7506	// The value returned by the most recent call to GetChangeToken.
7507	//
7508	// ChangeToken is a required field
7509	ChangeToken *string `min:"1" type:"string" required:"true"`
7510
7511	// The SqlInjectionMatchSetId of the SqlInjectionMatchSet that you want to delete.
7512	// SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets.
7513	//
7514	// SqlInjectionMatchSetId is a required field
7515	SqlInjectionMatchSetId *string `min:"1" type:"string" required:"true"`
7516}
7517
7518// String returns the string representation
7519func (s DeleteSqlInjectionMatchSetInput) String() string {
7520	return awsutil.Prettify(s)
7521}
7522
7523// GoString returns the string representation
7524func (s DeleteSqlInjectionMatchSetInput) GoString() string {
7525	return s.String()
7526}
7527
7528// Validate inspects the fields of the type to determine if they are valid.
7529func (s *DeleteSqlInjectionMatchSetInput) Validate() error {
7530	invalidParams := request.ErrInvalidParams{Context: "DeleteSqlInjectionMatchSetInput"}
7531	if s.ChangeToken == nil {
7532		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
7533	}
7534	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
7535		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
7536	}
7537	if s.SqlInjectionMatchSetId == nil {
7538		invalidParams.Add(request.NewErrParamRequired("SqlInjectionMatchSetId"))
7539	}
7540	if s.SqlInjectionMatchSetId != nil && len(*s.SqlInjectionMatchSetId) < 1 {
7541		invalidParams.Add(request.NewErrParamMinLen("SqlInjectionMatchSetId", 1))
7542	}
7543
7544	if invalidParams.Len() > 0 {
7545		return invalidParams
7546	}
7547	return nil
7548}
7549
7550// SetChangeToken sets the ChangeToken field's value.
7551func (s *DeleteSqlInjectionMatchSetInput) SetChangeToken(v string) *DeleteSqlInjectionMatchSetInput {
7552	s.ChangeToken = &v
7553	return s
7554}
7555
7556// SetSqlInjectionMatchSetId sets the SqlInjectionMatchSetId field's value.
7557func (s *DeleteSqlInjectionMatchSetInput) SetSqlInjectionMatchSetId(v string) *DeleteSqlInjectionMatchSetInput {
7558	s.SqlInjectionMatchSetId = &v
7559	return s
7560}
7561
7562// The response to a request to delete a SqlInjectionMatchSet from AWS WAF.
7563// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteSqlInjectionMatchSetResponse
7564type DeleteSqlInjectionMatchSetOutput struct {
7565	_ struct{} `type:"structure"`
7566
7567	// The ChangeToken that you used to submit the DeleteSqlInjectionMatchSet request.
7568	// You can also use this value to query the status of the request. For more
7569	// information, see GetChangeTokenStatus.
7570	ChangeToken *string `min:"1" type:"string"`
7571}
7572
7573// String returns the string representation
7574func (s DeleteSqlInjectionMatchSetOutput) String() string {
7575	return awsutil.Prettify(s)
7576}
7577
7578// GoString returns the string representation
7579func (s DeleteSqlInjectionMatchSetOutput) GoString() string {
7580	return s.String()
7581}
7582
7583// SetChangeToken sets the ChangeToken field's value.
7584func (s *DeleteSqlInjectionMatchSetOutput) SetChangeToken(v string) *DeleteSqlInjectionMatchSetOutput {
7585	s.ChangeToken = &v
7586	return s
7587}
7588
7589// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteWebACLRequest
7590type DeleteWebACLInput struct {
7591	_ struct{} `type:"structure"`
7592
7593	// The value returned by the most recent call to GetChangeToken.
7594	//
7595	// ChangeToken is a required field
7596	ChangeToken *string `min:"1" type:"string" required:"true"`
7597
7598	// The WebACLId of the WebACL that you want to delete. WebACLId is returned
7599	// by CreateWebACL and by ListWebACLs.
7600	//
7601	// WebACLId is a required field
7602	WebACLId *string `min:"1" type:"string" required:"true"`
7603}
7604
7605// String returns the string representation
7606func (s DeleteWebACLInput) String() string {
7607	return awsutil.Prettify(s)
7608}
7609
7610// GoString returns the string representation
7611func (s DeleteWebACLInput) GoString() string {
7612	return s.String()
7613}
7614
7615// Validate inspects the fields of the type to determine if they are valid.
7616func (s *DeleteWebACLInput) Validate() error {
7617	invalidParams := request.ErrInvalidParams{Context: "DeleteWebACLInput"}
7618	if s.ChangeToken == nil {
7619		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
7620	}
7621	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
7622		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
7623	}
7624	if s.WebACLId == nil {
7625		invalidParams.Add(request.NewErrParamRequired("WebACLId"))
7626	}
7627	if s.WebACLId != nil && len(*s.WebACLId) < 1 {
7628		invalidParams.Add(request.NewErrParamMinLen("WebACLId", 1))
7629	}
7630
7631	if invalidParams.Len() > 0 {
7632		return invalidParams
7633	}
7634	return nil
7635}
7636
7637// SetChangeToken sets the ChangeToken field's value.
7638func (s *DeleteWebACLInput) SetChangeToken(v string) *DeleteWebACLInput {
7639	s.ChangeToken = &v
7640	return s
7641}
7642
7643// SetWebACLId sets the WebACLId field's value.
7644func (s *DeleteWebACLInput) SetWebACLId(v string) *DeleteWebACLInput {
7645	s.WebACLId = &v
7646	return s
7647}
7648
7649// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteWebACLResponse
7650type DeleteWebACLOutput struct {
7651	_ struct{} `type:"structure"`
7652
7653	// The ChangeToken that you used to submit the DeleteWebACL request. You can
7654	// also use this value to query the status of the request. For more information,
7655	// see GetChangeTokenStatus.
7656	ChangeToken *string `min:"1" type:"string"`
7657}
7658
7659// String returns the string representation
7660func (s DeleteWebACLOutput) String() string {
7661	return awsutil.Prettify(s)
7662}
7663
7664// GoString returns the string representation
7665func (s DeleteWebACLOutput) GoString() string {
7666	return s.String()
7667}
7668
7669// SetChangeToken sets the ChangeToken field's value.
7670func (s *DeleteWebACLOutput) SetChangeToken(v string) *DeleteWebACLOutput {
7671	s.ChangeToken = &v
7672	return s
7673}
7674
7675// A request to delete an XssMatchSet from AWS WAF.
7676// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteXssMatchSetRequest
7677type DeleteXssMatchSetInput struct {
7678	_ struct{} `type:"structure"`
7679
7680	// The value returned by the most recent call to GetChangeToken.
7681	//
7682	// ChangeToken is a required field
7683	ChangeToken *string `min:"1" type:"string" required:"true"`
7684
7685	// The XssMatchSetId of the XssMatchSet that you want to delete. XssMatchSetId
7686	// is returned by CreateXssMatchSet and by ListXssMatchSets.
7687	//
7688	// XssMatchSetId is a required field
7689	XssMatchSetId *string `min:"1" type:"string" required:"true"`
7690}
7691
7692// String returns the string representation
7693func (s DeleteXssMatchSetInput) String() string {
7694	return awsutil.Prettify(s)
7695}
7696
7697// GoString returns the string representation
7698func (s DeleteXssMatchSetInput) GoString() string {
7699	return s.String()
7700}
7701
7702// Validate inspects the fields of the type to determine if they are valid.
7703func (s *DeleteXssMatchSetInput) Validate() error {
7704	invalidParams := request.ErrInvalidParams{Context: "DeleteXssMatchSetInput"}
7705	if s.ChangeToken == nil {
7706		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
7707	}
7708	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
7709		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
7710	}
7711	if s.XssMatchSetId == nil {
7712		invalidParams.Add(request.NewErrParamRequired("XssMatchSetId"))
7713	}
7714	if s.XssMatchSetId != nil && len(*s.XssMatchSetId) < 1 {
7715		invalidParams.Add(request.NewErrParamMinLen("XssMatchSetId", 1))
7716	}
7717
7718	if invalidParams.Len() > 0 {
7719		return invalidParams
7720	}
7721	return nil
7722}
7723
7724// SetChangeToken sets the ChangeToken field's value.
7725func (s *DeleteXssMatchSetInput) SetChangeToken(v string) *DeleteXssMatchSetInput {
7726	s.ChangeToken = &v
7727	return s
7728}
7729
7730// SetXssMatchSetId sets the XssMatchSetId field's value.
7731func (s *DeleteXssMatchSetInput) SetXssMatchSetId(v string) *DeleteXssMatchSetInput {
7732	s.XssMatchSetId = &v
7733	return s
7734}
7735
7736// The response to a request to delete an XssMatchSet from AWS WAF.
7737// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteXssMatchSetResponse
7738type DeleteXssMatchSetOutput struct {
7739	_ struct{} `type:"structure"`
7740
7741	// The ChangeToken that you used to submit the DeleteXssMatchSet request. You
7742	// can also use this value to query the status of the request. For more information,
7743	// see GetChangeTokenStatus.
7744	ChangeToken *string `min:"1" type:"string"`
7745}
7746
7747// String returns the string representation
7748func (s DeleteXssMatchSetOutput) String() string {
7749	return awsutil.Prettify(s)
7750}
7751
7752// GoString returns the string representation
7753func (s DeleteXssMatchSetOutput) GoString() string {
7754	return s.String()
7755}
7756
7757// SetChangeToken sets the ChangeToken field's value.
7758func (s *DeleteXssMatchSetOutput) SetChangeToken(v string) *DeleteXssMatchSetOutput {
7759	s.ChangeToken = &v
7760	return s
7761}
7762
7763// Specifies where in a web request to look for TargetString.
7764// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/FieldToMatch
7765type FieldToMatch struct {
7766	_ struct{} `type:"structure"`
7767
7768	// When the value of Type is HEADER, enter the name of the header that you want
7769	// AWS WAF to search, for example, User-Agent or Referer. If the value of Type
7770	// is any other value, omit Data.
7771	//
7772	// The name of the header is not case sensitive.
7773	Data *string `type:"string"`
7774
7775	// The part of the web request that you want AWS WAF to search for a specified
7776	// string. Parts of a request that you can search include the following:
7777	//
7778	//    * HEADER: A specified request header, for example, the value of the User-Agent
7779	//    or Referer header. If you choose HEADER for the type, specify the name
7780	//    of the header in Data.
7781	//
7782	//    * METHOD: The HTTP method, which indicated the type of operation that
7783	//    the request is asking the origin to perform. Amazon CloudFront supports
7784	//    the following methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, and PUT.
7785	//
7786	//    * QUERY_STRING: A query string, which is the part of a URL that appears
7787	//    after a ? character, if any.
7788	//
7789	//    * URI: The part of a web request that identifies a resource, for example,
7790	//    /images/daily-ad.jpg.
7791	//
7792	//    * BODY: The part of a request that contains any additional data that you
7793	//    want to send to your web server as the HTTP request body, such as data
7794	//    from a form. The request body immediately follows the request headers.
7795	//    Note that only the first 8192 bytes of the request body are forwarded
7796	//    to AWS WAF for inspection. To allow or block requests based on the length
7797	//    of the body, you can create a size constraint set. For more information,
7798	//    see CreateSizeConstraintSet.
7799	//
7800	// Type is a required field
7801	Type *string `type:"string" required:"true" enum:"MatchFieldType"`
7802}
7803
7804// String returns the string representation
7805func (s FieldToMatch) String() string {
7806	return awsutil.Prettify(s)
7807}
7808
7809// GoString returns the string representation
7810func (s FieldToMatch) GoString() string {
7811	return s.String()
7812}
7813
7814// Validate inspects the fields of the type to determine if they are valid.
7815func (s *FieldToMatch) Validate() error {
7816	invalidParams := request.ErrInvalidParams{Context: "FieldToMatch"}
7817	if s.Type == nil {
7818		invalidParams.Add(request.NewErrParamRequired("Type"))
7819	}
7820
7821	if invalidParams.Len() > 0 {
7822		return invalidParams
7823	}
7824	return nil
7825}
7826
7827// SetData sets the Data field's value.
7828func (s *FieldToMatch) SetData(v string) *FieldToMatch {
7829	s.Data = &v
7830	return s
7831}
7832
7833// SetType sets the Type field's value.
7834func (s *FieldToMatch) SetType(v string) *FieldToMatch {
7835	s.Type = &v
7836	return s
7837}
7838
7839// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetByteMatchSetRequest
7840type GetByteMatchSetInput struct {
7841	_ struct{} `type:"structure"`
7842
7843	// The ByteMatchSetId of the ByteMatchSet that you want to get. ByteMatchSetId
7844	// is returned by CreateByteMatchSet and by ListByteMatchSets.
7845	//
7846	// ByteMatchSetId is a required field
7847	ByteMatchSetId *string `min:"1" type:"string" required:"true"`
7848}
7849
7850// String returns the string representation
7851func (s GetByteMatchSetInput) String() string {
7852	return awsutil.Prettify(s)
7853}
7854
7855// GoString returns the string representation
7856func (s GetByteMatchSetInput) GoString() string {
7857	return s.String()
7858}
7859
7860// Validate inspects the fields of the type to determine if they are valid.
7861func (s *GetByteMatchSetInput) Validate() error {
7862	invalidParams := request.ErrInvalidParams{Context: "GetByteMatchSetInput"}
7863	if s.ByteMatchSetId == nil {
7864		invalidParams.Add(request.NewErrParamRequired("ByteMatchSetId"))
7865	}
7866	if s.ByteMatchSetId != nil && len(*s.ByteMatchSetId) < 1 {
7867		invalidParams.Add(request.NewErrParamMinLen("ByteMatchSetId", 1))
7868	}
7869
7870	if invalidParams.Len() > 0 {
7871		return invalidParams
7872	}
7873	return nil
7874}
7875
7876// SetByteMatchSetId sets the ByteMatchSetId field's value.
7877func (s *GetByteMatchSetInput) SetByteMatchSetId(v string) *GetByteMatchSetInput {
7878	s.ByteMatchSetId = &v
7879	return s
7880}
7881
7882// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetByteMatchSetResponse
7883type GetByteMatchSetOutput struct {
7884	_ struct{} `type:"structure"`
7885
7886	// Information about the ByteMatchSet that you specified in the GetByteMatchSet
7887	// request. For more information, see the following topics:
7888	//
7889	//    * ByteMatchSet: Contains ByteMatchSetId, ByteMatchTuples, and Name
7890	//
7891	//    * ByteMatchTuples: Contains an array of ByteMatchTuple objects. Each ByteMatchTuple
7892	//    object contains FieldToMatch, PositionalConstraint, TargetString, and
7893	//    TextTransformation
7894	//
7895	//    * FieldToMatch: Contains Data and Type
7896	ByteMatchSet *ByteMatchSet `type:"structure"`
7897}
7898
7899// String returns the string representation
7900func (s GetByteMatchSetOutput) String() string {
7901	return awsutil.Prettify(s)
7902}
7903
7904// GoString returns the string representation
7905func (s GetByteMatchSetOutput) GoString() string {
7906	return s.String()
7907}
7908
7909// SetByteMatchSet sets the ByteMatchSet field's value.
7910func (s *GetByteMatchSetOutput) SetByteMatchSet(v *ByteMatchSet) *GetByteMatchSetOutput {
7911	s.ByteMatchSet = v
7912	return s
7913}
7914
7915// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetChangeTokenRequest
7916type GetChangeTokenInput struct {
7917	_ struct{} `type:"structure"`
7918}
7919
7920// String returns the string representation
7921func (s GetChangeTokenInput) String() string {
7922	return awsutil.Prettify(s)
7923}
7924
7925// GoString returns the string representation
7926func (s GetChangeTokenInput) GoString() string {
7927	return s.String()
7928}
7929
7930// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetChangeTokenResponse
7931type GetChangeTokenOutput struct {
7932	_ struct{} `type:"structure"`
7933
7934	// The ChangeToken that you used in the request. Use this value in a GetChangeTokenStatus
7935	// request to get the current status of the request.
7936	ChangeToken *string `min:"1" type:"string"`
7937}
7938
7939// String returns the string representation
7940func (s GetChangeTokenOutput) String() string {
7941	return awsutil.Prettify(s)
7942}
7943
7944// GoString returns the string representation
7945func (s GetChangeTokenOutput) GoString() string {
7946	return s.String()
7947}
7948
7949// SetChangeToken sets the ChangeToken field's value.
7950func (s *GetChangeTokenOutput) SetChangeToken(v string) *GetChangeTokenOutput {
7951	s.ChangeToken = &v
7952	return s
7953}
7954
7955// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetChangeTokenStatusRequest
7956type GetChangeTokenStatusInput struct {
7957	_ struct{} `type:"structure"`
7958
7959	// The change token for which you want to get the status. This change token
7960	// was previously returned in the GetChangeToken response.
7961	//
7962	// ChangeToken is a required field
7963	ChangeToken *string `min:"1" type:"string" required:"true"`
7964}
7965
7966// String returns the string representation
7967func (s GetChangeTokenStatusInput) String() string {
7968	return awsutil.Prettify(s)
7969}
7970
7971// GoString returns the string representation
7972func (s GetChangeTokenStatusInput) GoString() string {
7973	return s.String()
7974}
7975
7976// Validate inspects the fields of the type to determine if they are valid.
7977func (s *GetChangeTokenStatusInput) Validate() error {
7978	invalidParams := request.ErrInvalidParams{Context: "GetChangeTokenStatusInput"}
7979	if s.ChangeToken == nil {
7980		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
7981	}
7982	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
7983		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
7984	}
7985
7986	if invalidParams.Len() > 0 {
7987		return invalidParams
7988	}
7989	return nil
7990}
7991
7992// SetChangeToken sets the ChangeToken field's value.
7993func (s *GetChangeTokenStatusInput) SetChangeToken(v string) *GetChangeTokenStatusInput {
7994	s.ChangeToken = &v
7995	return s
7996}
7997
7998// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetChangeTokenStatusResponse
7999type GetChangeTokenStatusOutput struct {
8000	_ struct{} `type:"structure"`
8001
8002	// The status of the change token.
8003	ChangeTokenStatus *string `type:"string" enum:"ChangeTokenStatus"`
8004}
8005
8006// String returns the string representation
8007func (s GetChangeTokenStatusOutput) String() string {
8008	return awsutil.Prettify(s)
8009}
8010
8011// GoString returns the string representation
8012func (s GetChangeTokenStatusOutput) GoString() string {
8013	return s.String()
8014}
8015
8016// SetChangeTokenStatus sets the ChangeTokenStatus field's value.
8017func (s *GetChangeTokenStatusOutput) SetChangeTokenStatus(v string) *GetChangeTokenStatusOutput {
8018	s.ChangeTokenStatus = &v
8019	return s
8020}
8021
8022// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetIPSetRequest
8023type GetIPSetInput struct {
8024	_ struct{} `type:"structure"`
8025
8026	// The IPSetId of the IPSet that you want to get. IPSetId is returned by CreateIPSet
8027	// and by ListIPSets.
8028	//
8029	// IPSetId is a required field
8030	IPSetId *string `min:"1" type:"string" required:"true"`
8031}
8032
8033// String returns the string representation
8034func (s GetIPSetInput) String() string {
8035	return awsutil.Prettify(s)
8036}
8037
8038// GoString returns the string representation
8039func (s GetIPSetInput) GoString() string {
8040	return s.String()
8041}
8042
8043// Validate inspects the fields of the type to determine if they are valid.
8044func (s *GetIPSetInput) Validate() error {
8045	invalidParams := request.ErrInvalidParams{Context: "GetIPSetInput"}
8046	if s.IPSetId == nil {
8047		invalidParams.Add(request.NewErrParamRequired("IPSetId"))
8048	}
8049	if s.IPSetId != nil && len(*s.IPSetId) < 1 {
8050		invalidParams.Add(request.NewErrParamMinLen("IPSetId", 1))
8051	}
8052
8053	if invalidParams.Len() > 0 {
8054		return invalidParams
8055	}
8056	return nil
8057}
8058
8059// SetIPSetId sets the IPSetId field's value.
8060func (s *GetIPSetInput) SetIPSetId(v string) *GetIPSetInput {
8061	s.IPSetId = &v
8062	return s
8063}
8064
8065// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetIPSetResponse
8066type GetIPSetOutput struct {
8067	_ struct{} `type:"structure"`
8068
8069	// Information about the IPSet that you specified in the GetIPSet request. For
8070	// more information, see the following topics:
8071	//
8072	//    * IPSet: Contains IPSetDescriptors, IPSetId, and Name
8073	//
8074	//    * IPSetDescriptors: Contains an array of IPSetDescriptor objects. Each
8075	//    IPSetDescriptor object contains Type and Value
8076	IPSet *IPSet `type:"structure"`
8077}
8078
8079// String returns the string representation
8080func (s GetIPSetOutput) String() string {
8081	return awsutil.Prettify(s)
8082}
8083
8084// GoString returns the string representation
8085func (s GetIPSetOutput) GoString() string {
8086	return s.String()
8087}
8088
8089// SetIPSet sets the IPSet field's value.
8090func (s *GetIPSetOutput) SetIPSet(v *IPSet) *GetIPSetOutput {
8091	s.IPSet = v
8092	return s
8093}
8094
8095// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRuleRequest
8096type GetRateBasedRuleInput struct {
8097	_ struct{} `type:"structure"`
8098
8099	// The RuleId of the RateBasedRule that you want to get. RuleId is returned
8100	// by CreateRateBasedRule and by ListRateBasedRules.
8101	//
8102	// RuleId is a required field
8103	RuleId *string `min:"1" type:"string" required:"true"`
8104}
8105
8106// String returns the string representation
8107func (s GetRateBasedRuleInput) String() string {
8108	return awsutil.Prettify(s)
8109}
8110
8111// GoString returns the string representation
8112func (s GetRateBasedRuleInput) GoString() string {
8113	return s.String()
8114}
8115
8116// Validate inspects the fields of the type to determine if they are valid.
8117func (s *GetRateBasedRuleInput) Validate() error {
8118	invalidParams := request.ErrInvalidParams{Context: "GetRateBasedRuleInput"}
8119	if s.RuleId == nil {
8120		invalidParams.Add(request.NewErrParamRequired("RuleId"))
8121	}
8122	if s.RuleId != nil && len(*s.RuleId) < 1 {
8123		invalidParams.Add(request.NewErrParamMinLen("RuleId", 1))
8124	}
8125
8126	if invalidParams.Len() > 0 {
8127		return invalidParams
8128	}
8129	return nil
8130}
8131
8132// SetRuleId sets the RuleId field's value.
8133func (s *GetRateBasedRuleInput) SetRuleId(v string) *GetRateBasedRuleInput {
8134	s.RuleId = &v
8135	return s
8136}
8137
8138// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRuleManagedKeysRequest
8139type GetRateBasedRuleManagedKeysInput struct {
8140	_ struct{} `type:"structure"`
8141
8142	// A null value and not currently used. Do not include this in your request.
8143	NextMarker *string `min:"1" type:"string"`
8144
8145	// The RuleId of the RateBasedRule for which you want to get a list of ManagedKeys.
8146	// RuleId is returned by CreateRateBasedRule and by ListRateBasedRules.
8147	//
8148	// RuleId is a required field
8149	RuleId *string `min:"1" type:"string" required:"true"`
8150}
8151
8152// String returns the string representation
8153func (s GetRateBasedRuleManagedKeysInput) String() string {
8154	return awsutil.Prettify(s)
8155}
8156
8157// GoString returns the string representation
8158func (s GetRateBasedRuleManagedKeysInput) GoString() string {
8159	return s.String()
8160}
8161
8162// Validate inspects the fields of the type to determine if they are valid.
8163func (s *GetRateBasedRuleManagedKeysInput) Validate() error {
8164	invalidParams := request.ErrInvalidParams{Context: "GetRateBasedRuleManagedKeysInput"}
8165	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
8166		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
8167	}
8168	if s.RuleId == nil {
8169		invalidParams.Add(request.NewErrParamRequired("RuleId"))
8170	}
8171	if s.RuleId != nil && len(*s.RuleId) < 1 {
8172		invalidParams.Add(request.NewErrParamMinLen("RuleId", 1))
8173	}
8174
8175	if invalidParams.Len() > 0 {
8176		return invalidParams
8177	}
8178	return nil
8179}
8180
8181// SetNextMarker sets the NextMarker field's value.
8182func (s *GetRateBasedRuleManagedKeysInput) SetNextMarker(v string) *GetRateBasedRuleManagedKeysInput {
8183	s.NextMarker = &v
8184	return s
8185}
8186
8187// SetRuleId sets the RuleId field's value.
8188func (s *GetRateBasedRuleManagedKeysInput) SetRuleId(v string) *GetRateBasedRuleManagedKeysInput {
8189	s.RuleId = &v
8190	return s
8191}
8192
8193// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRuleManagedKeysResponse
8194type GetRateBasedRuleManagedKeysOutput struct {
8195	_ struct{} `type:"structure"`
8196
8197	// An array of IP addresses that currently are blocked by the specified RateBasedRule.
8198	ManagedKeys []*string `type:"list"`
8199
8200	// A null value and not currently used.
8201	NextMarker *string `min:"1" type:"string"`
8202}
8203
8204// String returns the string representation
8205func (s GetRateBasedRuleManagedKeysOutput) String() string {
8206	return awsutil.Prettify(s)
8207}
8208
8209// GoString returns the string representation
8210func (s GetRateBasedRuleManagedKeysOutput) GoString() string {
8211	return s.String()
8212}
8213
8214// SetManagedKeys sets the ManagedKeys field's value.
8215func (s *GetRateBasedRuleManagedKeysOutput) SetManagedKeys(v []*string) *GetRateBasedRuleManagedKeysOutput {
8216	s.ManagedKeys = v
8217	return s
8218}
8219
8220// SetNextMarker sets the NextMarker field's value.
8221func (s *GetRateBasedRuleManagedKeysOutput) SetNextMarker(v string) *GetRateBasedRuleManagedKeysOutput {
8222	s.NextMarker = &v
8223	return s
8224}
8225
8226// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRuleResponse
8227type GetRateBasedRuleOutput struct {
8228	_ struct{} `type:"structure"`
8229
8230	// Information about the RateBasedRule that you specified in the GetRateBasedRule
8231	// request.
8232	Rule *RateBasedRule `type:"structure"`
8233}
8234
8235// String returns the string representation
8236func (s GetRateBasedRuleOutput) String() string {
8237	return awsutil.Prettify(s)
8238}
8239
8240// GoString returns the string representation
8241func (s GetRateBasedRuleOutput) GoString() string {
8242	return s.String()
8243}
8244
8245// SetRule sets the Rule field's value.
8246func (s *GetRateBasedRuleOutput) SetRule(v *RateBasedRule) *GetRateBasedRuleOutput {
8247	s.Rule = v
8248	return s
8249}
8250
8251// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRuleRequest
8252type GetRuleInput struct {
8253	_ struct{} `type:"structure"`
8254
8255	// The RuleId of the Rule that you want to get. RuleId is returned by CreateRule
8256	// and by ListRules.
8257	//
8258	// RuleId is a required field
8259	RuleId *string `min:"1" type:"string" required:"true"`
8260}
8261
8262// String returns the string representation
8263func (s GetRuleInput) String() string {
8264	return awsutil.Prettify(s)
8265}
8266
8267// GoString returns the string representation
8268func (s GetRuleInput) GoString() string {
8269	return s.String()
8270}
8271
8272// Validate inspects the fields of the type to determine if they are valid.
8273func (s *GetRuleInput) Validate() error {
8274	invalidParams := request.ErrInvalidParams{Context: "GetRuleInput"}
8275	if s.RuleId == nil {
8276		invalidParams.Add(request.NewErrParamRequired("RuleId"))
8277	}
8278	if s.RuleId != nil && len(*s.RuleId) < 1 {
8279		invalidParams.Add(request.NewErrParamMinLen("RuleId", 1))
8280	}
8281
8282	if invalidParams.Len() > 0 {
8283		return invalidParams
8284	}
8285	return nil
8286}
8287
8288// SetRuleId sets the RuleId field's value.
8289func (s *GetRuleInput) SetRuleId(v string) *GetRuleInput {
8290	s.RuleId = &v
8291	return s
8292}
8293
8294// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRuleResponse
8295type GetRuleOutput struct {
8296	_ struct{} `type:"structure"`
8297
8298	// Information about the Rule that you specified in the GetRule request. For
8299	// more information, see the following topics:
8300	//
8301	//    * Rule: Contains MetricName, Name, an array of Predicate objects, and
8302	//    RuleId
8303	//
8304	//    * Predicate: Each Predicate object contains DataId, Negated, and Type
8305	Rule *Rule `type:"structure"`
8306}
8307
8308// String returns the string representation
8309func (s GetRuleOutput) String() string {
8310	return awsutil.Prettify(s)
8311}
8312
8313// GoString returns the string representation
8314func (s GetRuleOutput) GoString() string {
8315	return s.String()
8316}
8317
8318// SetRule sets the Rule field's value.
8319func (s *GetRuleOutput) SetRule(v *Rule) *GetRuleOutput {
8320	s.Rule = v
8321	return s
8322}
8323
8324// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetSampledRequestsRequest
8325type GetSampledRequestsInput struct {
8326	_ struct{} `type:"structure"`
8327
8328	// The number of requests that you want AWS WAF to return from among the first
8329	// 5,000 requests that your AWS resource received during the time range. If
8330	// your resource received fewer requests than the value of MaxItems, GetSampledRequests
8331	// returns information about all of them.
8332	//
8333	// MaxItems is a required field
8334	MaxItems *int64 `min:"1" type:"long" required:"true"`
8335
8336	// RuleId is one of two values:
8337	//
8338	//    * The RuleId of the Rule for which you want GetSampledRequests to return
8339	//    a sample of requests.
8340	//
8341	//    * Default_Action, which causes GetSampledRequests to return a sample of
8342	//    the requests that didn't match any of the rules in the specified WebACL.
8343	//
8344	// RuleId is a required field
8345	RuleId *string `min:"1" type:"string" required:"true"`
8346
8347	// The start date and time and the end date and time of the range for which
8348	// you want GetSampledRequests to return a sample of requests. Specify the date
8349	// and time in the following format: "2016-09-27T14:50Z". You can specify any
8350	// time range in the previous three hours.
8351	//
8352	// TimeWindow is a required field
8353	TimeWindow *TimeWindow `type:"structure" required:"true"`
8354
8355	// The WebACLId of the WebACL for which you want GetSampledRequests to return
8356	// a sample of requests.
8357	//
8358	// WebAclId is a required field
8359	WebAclId *string `min:"1" type:"string" required:"true"`
8360}
8361
8362// String returns the string representation
8363func (s GetSampledRequestsInput) String() string {
8364	return awsutil.Prettify(s)
8365}
8366
8367// GoString returns the string representation
8368func (s GetSampledRequestsInput) GoString() string {
8369	return s.String()
8370}
8371
8372// Validate inspects the fields of the type to determine if they are valid.
8373func (s *GetSampledRequestsInput) Validate() error {
8374	invalidParams := request.ErrInvalidParams{Context: "GetSampledRequestsInput"}
8375	if s.MaxItems == nil {
8376		invalidParams.Add(request.NewErrParamRequired("MaxItems"))
8377	}
8378	if s.MaxItems != nil && *s.MaxItems < 1 {
8379		invalidParams.Add(request.NewErrParamMinValue("MaxItems", 1))
8380	}
8381	if s.RuleId == nil {
8382		invalidParams.Add(request.NewErrParamRequired("RuleId"))
8383	}
8384	if s.RuleId != nil && len(*s.RuleId) < 1 {
8385		invalidParams.Add(request.NewErrParamMinLen("RuleId", 1))
8386	}
8387	if s.TimeWindow == nil {
8388		invalidParams.Add(request.NewErrParamRequired("TimeWindow"))
8389	}
8390	if s.WebAclId == nil {
8391		invalidParams.Add(request.NewErrParamRequired("WebAclId"))
8392	}
8393	if s.WebAclId != nil && len(*s.WebAclId) < 1 {
8394		invalidParams.Add(request.NewErrParamMinLen("WebAclId", 1))
8395	}
8396	if s.TimeWindow != nil {
8397		if err := s.TimeWindow.Validate(); err != nil {
8398			invalidParams.AddNested("TimeWindow", err.(request.ErrInvalidParams))
8399		}
8400	}
8401
8402	if invalidParams.Len() > 0 {
8403		return invalidParams
8404	}
8405	return nil
8406}
8407
8408// SetMaxItems sets the MaxItems field's value.
8409func (s *GetSampledRequestsInput) SetMaxItems(v int64) *GetSampledRequestsInput {
8410	s.MaxItems = &v
8411	return s
8412}
8413
8414// SetRuleId sets the RuleId field's value.
8415func (s *GetSampledRequestsInput) SetRuleId(v string) *GetSampledRequestsInput {
8416	s.RuleId = &v
8417	return s
8418}
8419
8420// SetTimeWindow sets the TimeWindow field's value.
8421func (s *GetSampledRequestsInput) SetTimeWindow(v *TimeWindow) *GetSampledRequestsInput {
8422	s.TimeWindow = v
8423	return s
8424}
8425
8426// SetWebAclId sets the WebAclId field's value.
8427func (s *GetSampledRequestsInput) SetWebAclId(v string) *GetSampledRequestsInput {
8428	s.WebAclId = &v
8429	return s
8430}
8431
8432// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetSampledRequestsResponse
8433type GetSampledRequestsOutput struct {
8434	_ struct{} `type:"structure"`
8435
8436	// The total number of requests from which GetSampledRequests got a sample of
8437	// MaxItems requests. If PopulationSize is less than MaxItems, the sample includes
8438	// every request that your AWS resource received during the specified time range.
8439	PopulationSize *int64 `type:"long"`
8440
8441	// A complex type that contains detailed information about each of the requests
8442	// in the sample.
8443	SampledRequests []*SampledHTTPRequest `type:"list"`
8444
8445	// Usually, TimeWindow is the time range that you specified in the GetSampledRequests
8446	// request. However, if your AWS resource received more than 5,000 requests
8447	// during the time range that you specified in the request, GetSampledRequests
8448	// returns the time range for the first 5,000 requests.
8449	TimeWindow *TimeWindow `type:"structure"`
8450}
8451
8452// String returns the string representation
8453func (s GetSampledRequestsOutput) String() string {
8454	return awsutil.Prettify(s)
8455}
8456
8457// GoString returns the string representation
8458func (s GetSampledRequestsOutput) GoString() string {
8459	return s.String()
8460}
8461
8462// SetPopulationSize sets the PopulationSize field's value.
8463func (s *GetSampledRequestsOutput) SetPopulationSize(v int64) *GetSampledRequestsOutput {
8464	s.PopulationSize = &v
8465	return s
8466}
8467
8468// SetSampledRequests sets the SampledRequests field's value.
8469func (s *GetSampledRequestsOutput) SetSampledRequests(v []*SampledHTTPRequest) *GetSampledRequestsOutput {
8470	s.SampledRequests = v
8471	return s
8472}
8473
8474// SetTimeWindow sets the TimeWindow field's value.
8475func (s *GetSampledRequestsOutput) SetTimeWindow(v *TimeWindow) *GetSampledRequestsOutput {
8476	s.TimeWindow = v
8477	return s
8478}
8479
8480// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetSizeConstraintSetRequest
8481type GetSizeConstraintSetInput struct {
8482	_ struct{} `type:"structure"`
8483
8484	// The SizeConstraintSetId of the SizeConstraintSet that you want to get. SizeConstraintSetId
8485	// is returned by CreateSizeConstraintSet and by ListSizeConstraintSets.
8486	//
8487	// SizeConstraintSetId is a required field
8488	SizeConstraintSetId *string `min:"1" type:"string" required:"true"`
8489}
8490
8491// String returns the string representation
8492func (s GetSizeConstraintSetInput) String() string {
8493	return awsutil.Prettify(s)
8494}
8495
8496// GoString returns the string representation
8497func (s GetSizeConstraintSetInput) GoString() string {
8498	return s.String()
8499}
8500
8501// Validate inspects the fields of the type to determine if they are valid.
8502func (s *GetSizeConstraintSetInput) Validate() error {
8503	invalidParams := request.ErrInvalidParams{Context: "GetSizeConstraintSetInput"}
8504	if s.SizeConstraintSetId == nil {
8505		invalidParams.Add(request.NewErrParamRequired("SizeConstraintSetId"))
8506	}
8507	if s.SizeConstraintSetId != nil && len(*s.SizeConstraintSetId) < 1 {
8508		invalidParams.Add(request.NewErrParamMinLen("SizeConstraintSetId", 1))
8509	}
8510
8511	if invalidParams.Len() > 0 {
8512		return invalidParams
8513	}
8514	return nil
8515}
8516
8517// SetSizeConstraintSetId sets the SizeConstraintSetId field's value.
8518func (s *GetSizeConstraintSetInput) SetSizeConstraintSetId(v string) *GetSizeConstraintSetInput {
8519	s.SizeConstraintSetId = &v
8520	return s
8521}
8522
8523// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetSizeConstraintSetResponse
8524type GetSizeConstraintSetOutput struct {
8525	_ struct{} `type:"structure"`
8526
8527	// Information about the SizeConstraintSet that you specified in the GetSizeConstraintSet
8528	// request. For more information, see the following topics:
8529	//
8530	//    * SizeConstraintSet: Contains SizeConstraintSetId, SizeConstraints, and
8531	//    Name
8532	//
8533	//    * SizeConstraints: Contains an array of SizeConstraint objects. Each SizeConstraint
8534	//    object contains FieldToMatch, TextTransformation, ComparisonOperator,
8535	//    and Size
8536	//
8537	//    * FieldToMatch: Contains Data and Type
8538	SizeConstraintSet *SizeConstraintSet `type:"structure"`
8539}
8540
8541// String returns the string representation
8542func (s GetSizeConstraintSetOutput) String() string {
8543	return awsutil.Prettify(s)
8544}
8545
8546// GoString returns the string representation
8547func (s GetSizeConstraintSetOutput) GoString() string {
8548	return s.String()
8549}
8550
8551// SetSizeConstraintSet sets the SizeConstraintSet field's value.
8552func (s *GetSizeConstraintSetOutput) SetSizeConstraintSet(v *SizeConstraintSet) *GetSizeConstraintSetOutput {
8553	s.SizeConstraintSet = v
8554	return s
8555}
8556
8557// A request to get a SqlInjectionMatchSet.
8558// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetSqlInjectionMatchSetRequest
8559type GetSqlInjectionMatchSetInput struct {
8560	_ struct{} `type:"structure"`
8561
8562	// The SqlInjectionMatchSetId of the SqlInjectionMatchSet that you want to get.
8563	// SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets.
8564	//
8565	// SqlInjectionMatchSetId is a required field
8566	SqlInjectionMatchSetId *string `min:"1" type:"string" required:"true"`
8567}
8568
8569// String returns the string representation
8570func (s GetSqlInjectionMatchSetInput) String() string {
8571	return awsutil.Prettify(s)
8572}
8573
8574// GoString returns the string representation
8575func (s GetSqlInjectionMatchSetInput) GoString() string {
8576	return s.String()
8577}
8578
8579// Validate inspects the fields of the type to determine if they are valid.
8580func (s *GetSqlInjectionMatchSetInput) Validate() error {
8581	invalidParams := request.ErrInvalidParams{Context: "GetSqlInjectionMatchSetInput"}
8582	if s.SqlInjectionMatchSetId == nil {
8583		invalidParams.Add(request.NewErrParamRequired("SqlInjectionMatchSetId"))
8584	}
8585	if s.SqlInjectionMatchSetId != nil && len(*s.SqlInjectionMatchSetId) < 1 {
8586		invalidParams.Add(request.NewErrParamMinLen("SqlInjectionMatchSetId", 1))
8587	}
8588
8589	if invalidParams.Len() > 0 {
8590		return invalidParams
8591	}
8592	return nil
8593}
8594
8595// SetSqlInjectionMatchSetId sets the SqlInjectionMatchSetId field's value.
8596func (s *GetSqlInjectionMatchSetInput) SetSqlInjectionMatchSetId(v string) *GetSqlInjectionMatchSetInput {
8597	s.SqlInjectionMatchSetId = &v
8598	return s
8599}
8600
8601// The response to a GetSqlInjectionMatchSet request.
8602// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetSqlInjectionMatchSetResponse
8603type GetSqlInjectionMatchSetOutput struct {
8604	_ struct{} `type:"structure"`
8605
8606	// Information about the SqlInjectionMatchSet that you specified in the GetSqlInjectionMatchSet
8607	// request. For more information, see the following topics:
8608	//
8609	//    * SqlInjectionMatchSet: Contains Name, SqlInjectionMatchSetId, and an
8610	//    array of SqlInjectionMatchTuple objects
8611	//
8612	//    * SqlInjectionMatchTuple: Each SqlInjectionMatchTuple object contains
8613	//    FieldToMatch and TextTransformation
8614	//
8615	//    * FieldToMatch: Contains Data and Type
8616	SqlInjectionMatchSet *SqlInjectionMatchSet `type:"structure"`
8617}
8618
8619// String returns the string representation
8620func (s GetSqlInjectionMatchSetOutput) String() string {
8621	return awsutil.Prettify(s)
8622}
8623
8624// GoString returns the string representation
8625func (s GetSqlInjectionMatchSetOutput) GoString() string {
8626	return s.String()
8627}
8628
8629// SetSqlInjectionMatchSet sets the SqlInjectionMatchSet field's value.
8630func (s *GetSqlInjectionMatchSetOutput) SetSqlInjectionMatchSet(v *SqlInjectionMatchSet) *GetSqlInjectionMatchSetOutput {
8631	s.SqlInjectionMatchSet = v
8632	return s
8633}
8634
8635// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetWebACLRequest
8636type GetWebACLInput struct {
8637	_ struct{} `type:"structure"`
8638
8639	// The WebACLId of the WebACL that you want to get. WebACLId is returned by
8640	// CreateWebACL and by ListWebACLs.
8641	//
8642	// WebACLId is a required field
8643	WebACLId *string `min:"1" type:"string" required:"true"`
8644}
8645
8646// String returns the string representation
8647func (s GetWebACLInput) String() string {
8648	return awsutil.Prettify(s)
8649}
8650
8651// GoString returns the string representation
8652func (s GetWebACLInput) GoString() string {
8653	return s.String()
8654}
8655
8656// Validate inspects the fields of the type to determine if they are valid.
8657func (s *GetWebACLInput) Validate() error {
8658	invalidParams := request.ErrInvalidParams{Context: "GetWebACLInput"}
8659	if s.WebACLId == nil {
8660		invalidParams.Add(request.NewErrParamRequired("WebACLId"))
8661	}
8662	if s.WebACLId != nil && len(*s.WebACLId) < 1 {
8663		invalidParams.Add(request.NewErrParamMinLen("WebACLId", 1))
8664	}
8665
8666	if invalidParams.Len() > 0 {
8667		return invalidParams
8668	}
8669	return nil
8670}
8671
8672// SetWebACLId sets the WebACLId field's value.
8673func (s *GetWebACLInput) SetWebACLId(v string) *GetWebACLInput {
8674	s.WebACLId = &v
8675	return s
8676}
8677
8678// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetWebACLResponse
8679type GetWebACLOutput struct {
8680	_ struct{} `type:"structure"`
8681
8682	// Information about the WebACL that you specified in the GetWebACL request.
8683	// For more information, see the following topics:
8684	//
8685	//    * WebACL: Contains DefaultAction, MetricName, Name, an array of Rule objects,
8686	//    and WebACLId
8687	//
8688	//    * DefaultAction (Data type is WafAction): Contains Type
8689	//
8690	//    * Rules: Contains an array of ActivatedRule objects, which contain Action,
8691	//    Priority, and RuleId
8692	//
8693	//    * Action: Contains Type
8694	WebACL *WebACL `type:"structure"`
8695}
8696
8697// String returns the string representation
8698func (s GetWebACLOutput) String() string {
8699	return awsutil.Prettify(s)
8700}
8701
8702// GoString returns the string representation
8703func (s GetWebACLOutput) GoString() string {
8704	return s.String()
8705}
8706
8707// SetWebACL sets the WebACL field's value.
8708func (s *GetWebACLOutput) SetWebACL(v *WebACL) *GetWebACLOutput {
8709	s.WebACL = v
8710	return s
8711}
8712
8713// A request to get an XssMatchSet.
8714// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetXssMatchSetRequest
8715type GetXssMatchSetInput struct {
8716	_ struct{} `type:"structure"`
8717
8718	// The XssMatchSetId of the XssMatchSet that you want to get. XssMatchSetId
8719	// is returned by CreateXssMatchSet and by ListXssMatchSets.
8720	//
8721	// XssMatchSetId is a required field
8722	XssMatchSetId *string `min:"1" type:"string" required:"true"`
8723}
8724
8725// String returns the string representation
8726func (s GetXssMatchSetInput) String() string {
8727	return awsutil.Prettify(s)
8728}
8729
8730// GoString returns the string representation
8731func (s GetXssMatchSetInput) GoString() string {
8732	return s.String()
8733}
8734
8735// Validate inspects the fields of the type to determine if they are valid.
8736func (s *GetXssMatchSetInput) Validate() error {
8737	invalidParams := request.ErrInvalidParams{Context: "GetXssMatchSetInput"}
8738	if s.XssMatchSetId == nil {
8739		invalidParams.Add(request.NewErrParamRequired("XssMatchSetId"))
8740	}
8741	if s.XssMatchSetId != nil && len(*s.XssMatchSetId) < 1 {
8742		invalidParams.Add(request.NewErrParamMinLen("XssMatchSetId", 1))
8743	}
8744
8745	if invalidParams.Len() > 0 {
8746		return invalidParams
8747	}
8748	return nil
8749}
8750
8751// SetXssMatchSetId sets the XssMatchSetId field's value.
8752func (s *GetXssMatchSetInput) SetXssMatchSetId(v string) *GetXssMatchSetInput {
8753	s.XssMatchSetId = &v
8754	return s
8755}
8756
8757// The response to a GetXssMatchSet request.
8758// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetXssMatchSetResponse
8759type GetXssMatchSetOutput struct {
8760	_ struct{} `type:"structure"`
8761
8762	// Information about the XssMatchSet that you specified in the GetXssMatchSet
8763	// request. For more information, see the following topics:
8764	//
8765	//    * XssMatchSet: Contains Name, XssMatchSetId, and an array of XssMatchTuple
8766	//    objects
8767	//
8768	//    * XssMatchTuple: Each XssMatchTuple object contains FieldToMatch and TextTransformation
8769	//
8770	//    * FieldToMatch: Contains Data and Type
8771	XssMatchSet *XssMatchSet `type:"structure"`
8772}
8773
8774// String returns the string representation
8775func (s GetXssMatchSetOutput) String() string {
8776	return awsutil.Prettify(s)
8777}
8778
8779// GoString returns the string representation
8780func (s GetXssMatchSetOutput) GoString() string {
8781	return s.String()
8782}
8783
8784// SetXssMatchSet sets the XssMatchSet field's value.
8785func (s *GetXssMatchSetOutput) SetXssMatchSet(v *XssMatchSet) *GetXssMatchSetOutput {
8786	s.XssMatchSet = v
8787	return s
8788}
8789
8790// The response from a GetSampledRequests request includes an HTTPHeader complex
8791// type that appears as Headers in the response syntax. HTTPHeader contains
8792// the names and values of all of the headers that appear in one of the web
8793// requests that were returned by GetSampledRequests.
8794// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/HTTPHeader
8795type HTTPHeader struct {
8796	_ struct{} `type:"structure"`
8797
8798	// The name of one of the headers in the sampled web request.
8799	Name *string `type:"string"`
8800
8801	// The value of one of the headers in the sampled web request.
8802	Value *string `type:"string"`
8803}
8804
8805// String returns the string representation
8806func (s HTTPHeader) String() string {
8807	return awsutil.Prettify(s)
8808}
8809
8810// GoString returns the string representation
8811func (s HTTPHeader) GoString() string {
8812	return s.String()
8813}
8814
8815// SetName sets the Name field's value.
8816func (s *HTTPHeader) SetName(v string) *HTTPHeader {
8817	s.Name = &v
8818	return s
8819}
8820
8821// SetValue sets the Value field's value.
8822func (s *HTTPHeader) SetValue(v string) *HTTPHeader {
8823	s.Value = &v
8824	return s
8825}
8826
8827// The response from a GetSampledRequests request includes an HTTPRequest complex
8828// type that appears as Request in the response syntax. HTTPRequest contains
8829// information about one of the web requests that were returned by GetSampledRequests.
8830// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/HTTPRequest
8831type HTTPRequest struct {
8832	_ struct{} `type:"structure"`
8833
8834	// The IP address that the request originated from. If the WebACL is associated
8835	// with a CloudFront distribution, this is the value of one of the following
8836	// fields in CloudFront access logs:
8837	//
8838	//    * c-ip, if the viewer did not use an HTTP proxy or a load balancer to
8839	//    send the request
8840	//
8841	//    * x-forwarded-for, if the viewer did use an HTTP proxy or a load balancer
8842	//    to send the request
8843	ClientIP *string `type:"string"`
8844
8845	// The two-letter country code for the country that the request originated from.
8846	// For a current list of country codes, see the Wikipedia entry ISO 3166-1 alpha-2
8847	// (https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
8848	Country *string `type:"string"`
8849
8850	// The HTTP version specified in the sampled web request, for example, HTTP/1.1.
8851	HTTPVersion *string `type:"string"`
8852
8853	// A complex type that contains two values for each header in the sampled web
8854	// request: the name of the header and the value of the header.
8855	Headers []*HTTPHeader `type:"list"`
8856
8857	// The HTTP method specified in the sampled web request. CloudFront supports
8858	// the following methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, and PUT.
8859	Method *string `type:"string"`
8860
8861	// The part of a web request that identifies the resource, for example, /images/daily-ad.jpg.
8862	URI *string `type:"string"`
8863}
8864
8865// String returns the string representation
8866func (s HTTPRequest) String() string {
8867	return awsutil.Prettify(s)
8868}
8869
8870// GoString returns the string representation
8871func (s HTTPRequest) GoString() string {
8872	return s.String()
8873}
8874
8875// SetClientIP sets the ClientIP field's value.
8876func (s *HTTPRequest) SetClientIP(v string) *HTTPRequest {
8877	s.ClientIP = &v
8878	return s
8879}
8880
8881// SetCountry sets the Country field's value.
8882func (s *HTTPRequest) SetCountry(v string) *HTTPRequest {
8883	s.Country = &v
8884	return s
8885}
8886
8887// SetHTTPVersion sets the HTTPVersion field's value.
8888func (s *HTTPRequest) SetHTTPVersion(v string) *HTTPRequest {
8889	s.HTTPVersion = &v
8890	return s
8891}
8892
8893// SetHeaders sets the Headers field's value.
8894func (s *HTTPRequest) SetHeaders(v []*HTTPHeader) *HTTPRequest {
8895	s.Headers = v
8896	return s
8897}
8898
8899// SetMethod sets the Method field's value.
8900func (s *HTTPRequest) SetMethod(v string) *HTTPRequest {
8901	s.Method = &v
8902	return s
8903}
8904
8905// SetURI sets the URI field's value.
8906func (s *HTTPRequest) SetURI(v string) *HTTPRequest {
8907	s.URI = &v
8908	return s
8909}
8910
8911// Contains one or more IP addresses or blocks of IP addresses specified in
8912// Classless Inter-Domain Routing (CIDR) notation. AWS WAF supports /8, /16,
8913// /24, and /32 IP address ranges for IPv4, and /24, /32, /48, /56, /64 and
8914// /128 for IPv6.
8915//
8916// To specify an individual IP address, you specify the four-part IP address
8917// followed by a /32, for example, 192.0.2.0/31. To block a range of IP addresses,
8918// you can specify a /128, /64, /56, /48, /32, /24, /16, or /8 CIDR. For more
8919// information about CIDR notation, see the Wikipedia entry Classless Inter-Domain
8920// Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
8921// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/IPSet
8922type IPSet struct {
8923	_ struct{} `type:"structure"`
8924
8925	// The IP address type (IPV4 or IPV6) and the IP address range (in CIDR notation)
8926	// that web requests originate from. If the WebACL is associated with a CloudFront
8927	// distribution and the viewer did not use an HTTP proxy or a load balancer
8928	// to send the request, this is the value of the c-ip field in the CloudFront
8929	// access logs.
8930	//
8931	// IPSetDescriptors is a required field
8932	IPSetDescriptors []*IPSetDescriptor `type:"list" required:"true"`
8933
8934	// The IPSetId for an IPSet. You use IPSetId to get information about an IPSet
8935	// (see GetIPSet), update an IPSet (see UpdateIPSet), insert an IPSet into a
8936	// Rule or delete one from a Rule (see UpdateRule), and delete an IPSet from
8937	// AWS WAF (see DeleteIPSet).
8938	//
8939	// IPSetId is returned by CreateIPSet and by ListIPSets.
8940	//
8941	// IPSetId is a required field
8942	IPSetId *string `min:"1" type:"string" required:"true"`
8943
8944	// A friendly name or description of the IPSet. You can't change the name of
8945	// an IPSet after you create it.
8946	Name *string `min:"1" type:"string"`
8947}
8948
8949// String returns the string representation
8950func (s IPSet) String() string {
8951	return awsutil.Prettify(s)
8952}
8953
8954// GoString returns the string representation
8955func (s IPSet) GoString() string {
8956	return s.String()
8957}
8958
8959// SetIPSetDescriptors sets the IPSetDescriptors field's value.
8960func (s *IPSet) SetIPSetDescriptors(v []*IPSetDescriptor) *IPSet {
8961	s.IPSetDescriptors = v
8962	return s
8963}
8964
8965// SetIPSetId sets the IPSetId field's value.
8966func (s *IPSet) SetIPSetId(v string) *IPSet {
8967	s.IPSetId = &v
8968	return s
8969}
8970
8971// SetName sets the Name field's value.
8972func (s *IPSet) SetName(v string) *IPSet {
8973	s.Name = &v
8974	return s
8975}
8976
8977// Specifies the IP address type (IPV4 or IPV6) and the IP address range (in
8978// CIDR format) that web requests originate from.
8979// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/IPSetDescriptor
8980type IPSetDescriptor struct {
8981	_ struct{} `type:"structure"`
8982
8983	// Specify IPV4 or IPV6.
8984	//
8985	// Type is a required field
8986	Type *string `type:"string" required:"true" enum:"IPSetDescriptorType"`
8987
8988	// Specify an IPv4 address by using CIDR notation. For example:
8989	//
8990	//    * To configure AWS WAF to allow, block, or count requests that originated
8991	//    from the IP address 192.0.2.44, specify 192.0.2.44/32.
8992	//
8993	//    * To configure AWS WAF to allow, block, or count requests that originated
8994	//    from IP addresses from 192.0.2.0 to 192.0.2.255, specify 192.0.2.0/24.
8995	//
8996	// For more information about CIDR notation, see the Wikipedia entry Classless
8997	// Inter-Domain Routing (https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
8998	//
8999	// Specify an IPv6 address by using CIDR notation. For example:
9000	//
9001	//    * To configure AWS WAF to allow, block, or count requests that originated
9002	//    from the IP address 1111:0000:0000:0000:0000:0000:0000:0111, specify 1111:0000:0000:0000:0000:0000:0000:0111/128.
9003	//
9004	//    * To configure AWS WAF to allow, block, or count requests that originated
9005	//    from IP addresses 1111:0000:0000:0000:0000:0000:0000:0000 to 1111:0000:0000:0000:ffff:ffff:ffff:ffff,
9006	//    specify 1111:0000:0000:0000:0000:0000:0000:0000/64.
9007	//
9008	// Value is a required field
9009	Value *string `type:"string" required:"true"`
9010}
9011
9012// String returns the string representation
9013func (s IPSetDescriptor) String() string {
9014	return awsutil.Prettify(s)
9015}
9016
9017// GoString returns the string representation
9018func (s IPSetDescriptor) GoString() string {
9019	return s.String()
9020}
9021
9022// Validate inspects the fields of the type to determine if they are valid.
9023func (s *IPSetDescriptor) Validate() error {
9024	invalidParams := request.ErrInvalidParams{Context: "IPSetDescriptor"}
9025	if s.Type == nil {
9026		invalidParams.Add(request.NewErrParamRequired("Type"))
9027	}
9028	if s.Value == nil {
9029		invalidParams.Add(request.NewErrParamRequired("Value"))
9030	}
9031
9032	if invalidParams.Len() > 0 {
9033		return invalidParams
9034	}
9035	return nil
9036}
9037
9038// SetType sets the Type field's value.
9039func (s *IPSetDescriptor) SetType(v string) *IPSetDescriptor {
9040	s.Type = &v
9041	return s
9042}
9043
9044// SetValue sets the Value field's value.
9045func (s *IPSetDescriptor) SetValue(v string) *IPSetDescriptor {
9046	s.Value = &v
9047	return s
9048}
9049
9050// Contains the identifier and the name of the IPSet.
9051// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/IPSetSummary
9052type IPSetSummary struct {
9053	_ struct{} `type:"structure"`
9054
9055	// The IPSetId for an IPSet. You can use IPSetId in a GetIPSet request to get
9056	// detailed information about an IPSet.
9057	//
9058	// IPSetId is a required field
9059	IPSetId *string `min:"1" type:"string" required:"true"`
9060
9061	// A friendly name or description of the IPSet. You can't change the name of
9062	// an IPSet after you create it.
9063	//
9064	// Name is a required field
9065	Name *string `min:"1" type:"string" required:"true"`
9066}
9067
9068// String returns the string representation
9069func (s IPSetSummary) String() string {
9070	return awsutil.Prettify(s)
9071}
9072
9073// GoString returns the string representation
9074func (s IPSetSummary) GoString() string {
9075	return s.String()
9076}
9077
9078// SetIPSetId sets the IPSetId field's value.
9079func (s *IPSetSummary) SetIPSetId(v string) *IPSetSummary {
9080	s.IPSetId = &v
9081	return s
9082}
9083
9084// SetName sets the Name field's value.
9085func (s *IPSetSummary) SetName(v string) *IPSetSummary {
9086	s.Name = &v
9087	return s
9088}
9089
9090// Specifies the type of update to perform to an IPSet with UpdateIPSet.
9091// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/IPSetUpdate
9092type IPSetUpdate struct {
9093	_ struct{} `type:"structure"`
9094
9095	// Specifies whether to insert or delete an IP address with UpdateIPSet.
9096	//
9097	// Action is a required field
9098	Action *string `type:"string" required:"true" enum:"ChangeAction"`
9099
9100	// The IP address type (IPV4 or IPV6) and the IP address range (in CIDR notation)
9101	// that web requests originate from.
9102	//
9103	// IPSetDescriptor is a required field
9104	IPSetDescriptor *IPSetDescriptor `type:"structure" required:"true"`
9105}
9106
9107// String returns the string representation
9108func (s IPSetUpdate) String() string {
9109	return awsutil.Prettify(s)
9110}
9111
9112// GoString returns the string representation
9113func (s IPSetUpdate) GoString() string {
9114	return s.String()
9115}
9116
9117// Validate inspects the fields of the type to determine if they are valid.
9118func (s *IPSetUpdate) Validate() error {
9119	invalidParams := request.ErrInvalidParams{Context: "IPSetUpdate"}
9120	if s.Action == nil {
9121		invalidParams.Add(request.NewErrParamRequired("Action"))
9122	}
9123	if s.IPSetDescriptor == nil {
9124		invalidParams.Add(request.NewErrParamRequired("IPSetDescriptor"))
9125	}
9126	if s.IPSetDescriptor != nil {
9127		if err := s.IPSetDescriptor.Validate(); err != nil {
9128			invalidParams.AddNested("IPSetDescriptor", err.(request.ErrInvalidParams))
9129		}
9130	}
9131
9132	if invalidParams.Len() > 0 {
9133		return invalidParams
9134	}
9135	return nil
9136}
9137
9138// SetAction sets the Action field's value.
9139func (s *IPSetUpdate) SetAction(v string) *IPSetUpdate {
9140	s.Action = &v
9141	return s
9142}
9143
9144// SetIPSetDescriptor sets the IPSetDescriptor field's value.
9145func (s *IPSetUpdate) SetIPSetDescriptor(v *IPSetDescriptor) *IPSetUpdate {
9146	s.IPSetDescriptor = v
9147	return s
9148}
9149
9150// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListByteMatchSetsRequest
9151type ListByteMatchSetsInput struct {
9152	_ struct{} `type:"structure"`
9153
9154	// Specifies the number of ByteMatchSet objects that you want AWS WAF to return
9155	// for this request. If you have more ByteMatchSets objects than the number
9156	// you specify for Limit, the response includes a NextMarker value that you
9157	// can use to get another batch of ByteMatchSet objects.
9158	Limit *int64 `type:"integer"`
9159
9160	// If you specify a value for Limit and you have more ByteMatchSets than the
9161	// value of Limit, AWS WAF returns a NextMarker value in the response that allows
9162	// you to list another group of ByteMatchSets. For the second and subsequent
9163	// ListByteMatchSets requests, specify the value of NextMarker from the previous
9164	// response to get information about another batch of ByteMatchSets.
9165	NextMarker *string `min:"1" type:"string"`
9166}
9167
9168// String returns the string representation
9169func (s ListByteMatchSetsInput) String() string {
9170	return awsutil.Prettify(s)
9171}
9172
9173// GoString returns the string representation
9174func (s ListByteMatchSetsInput) GoString() string {
9175	return s.String()
9176}
9177
9178// Validate inspects the fields of the type to determine if they are valid.
9179func (s *ListByteMatchSetsInput) Validate() error {
9180	invalidParams := request.ErrInvalidParams{Context: "ListByteMatchSetsInput"}
9181	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
9182		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
9183	}
9184
9185	if invalidParams.Len() > 0 {
9186		return invalidParams
9187	}
9188	return nil
9189}
9190
9191// SetLimit sets the Limit field's value.
9192func (s *ListByteMatchSetsInput) SetLimit(v int64) *ListByteMatchSetsInput {
9193	s.Limit = &v
9194	return s
9195}
9196
9197// SetNextMarker sets the NextMarker field's value.
9198func (s *ListByteMatchSetsInput) SetNextMarker(v string) *ListByteMatchSetsInput {
9199	s.NextMarker = &v
9200	return s
9201}
9202
9203// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListByteMatchSetsResponse
9204type ListByteMatchSetsOutput struct {
9205	_ struct{} `type:"structure"`
9206
9207	// An array of ByteMatchSetSummary objects.
9208	ByteMatchSets []*ByteMatchSetSummary `type:"list"`
9209
9210	// If you have more ByteMatchSet objects than the number that you specified
9211	// for Limit in the request, the response includes a NextMarker value. To list
9212	// more ByteMatchSet objects, submit another ListByteMatchSets request, and
9213	// specify the NextMarker value from the response in the NextMarker value in
9214	// the next request.
9215	NextMarker *string `min:"1" type:"string"`
9216}
9217
9218// String returns the string representation
9219func (s ListByteMatchSetsOutput) String() string {
9220	return awsutil.Prettify(s)
9221}
9222
9223// GoString returns the string representation
9224func (s ListByteMatchSetsOutput) GoString() string {
9225	return s.String()
9226}
9227
9228// SetByteMatchSets sets the ByteMatchSets field's value.
9229func (s *ListByteMatchSetsOutput) SetByteMatchSets(v []*ByteMatchSetSummary) *ListByteMatchSetsOutput {
9230	s.ByteMatchSets = v
9231	return s
9232}
9233
9234// SetNextMarker sets the NextMarker field's value.
9235func (s *ListByteMatchSetsOutput) SetNextMarker(v string) *ListByteMatchSetsOutput {
9236	s.NextMarker = &v
9237	return s
9238}
9239
9240// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListIPSetsRequest
9241type ListIPSetsInput struct {
9242	_ struct{} `type:"structure"`
9243
9244	// Specifies the number of IPSet objects that you want AWS WAF to return for
9245	// this request. If you have more IPSet objects than the number you specify
9246	// for Limit, the response includes a NextMarker value that you can use to get
9247	// another batch of IPSet objects.
9248	Limit *int64 `type:"integer"`
9249
9250	// If you specify a value for Limit and you have more IPSets than the value
9251	// of Limit, AWS WAF returns a NextMarker value in the response that allows
9252	// you to list another group of IPSets. For the second and subsequent ListIPSets
9253	// requests, specify the value of NextMarker from the previous response to get
9254	// information about another batch of ByteMatchSets.
9255	NextMarker *string `min:"1" type:"string"`
9256}
9257
9258// String returns the string representation
9259func (s ListIPSetsInput) String() string {
9260	return awsutil.Prettify(s)
9261}
9262
9263// GoString returns the string representation
9264func (s ListIPSetsInput) GoString() string {
9265	return s.String()
9266}
9267
9268// Validate inspects the fields of the type to determine if they are valid.
9269func (s *ListIPSetsInput) Validate() error {
9270	invalidParams := request.ErrInvalidParams{Context: "ListIPSetsInput"}
9271	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
9272		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
9273	}
9274
9275	if invalidParams.Len() > 0 {
9276		return invalidParams
9277	}
9278	return nil
9279}
9280
9281// SetLimit sets the Limit field's value.
9282func (s *ListIPSetsInput) SetLimit(v int64) *ListIPSetsInput {
9283	s.Limit = &v
9284	return s
9285}
9286
9287// SetNextMarker sets the NextMarker field's value.
9288func (s *ListIPSetsInput) SetNextMarker(v string) *ListIPSetsInput {
9289	s.NextMarker = &v
9290	return s
9291}
9292
9293// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListIPSetsResponse
9294type ListIPSetsOutput struct {
9295	_ struct{} `type:"structure"`
9296
9297	// An array of IPSetSummary objects.
9298	IPSets []*IPSetSummary `type:"list"`
9299
9300	// If you have more IPSet objects than the number that you specified for Limit
9301	// in the request, the response includes a NextMarker value. To list more IPSet
9302	// objects, submit another ListIPSets request, and specify the NextMarker value
9303	// from the response in the NextMarker value in the next request.
9304	NextMarker *string `min:"1" type:"string"`
9305}
9306
9307// String returns the string representation
9308func (s ListIPSetsOutput) String() string {
9309	return awsutil.Prettify(s)
9310}
9311
9312// GoString returns the string representation
9313func (s ListIPSetsOutput) GoString() string {
9314	return s.String()
9315}
9316
9317// SetIPSets sets the IPSets field's value.
9318func (s *ListIPSetsOutput) SetIPSets(v []*IPSetSummary) *ListIPSetsOutput {
9319	s.IPSets = v
9320	return s
9321}
9322
9323// SetNextMarker sets the NextMarker field's value.
9324func (s *ListIPSetsOutput) SetNextMarker(v string) *ListIPSetsOutput {
9325	s.NextMarker = &v
9326	return s
9327}
9328
9329// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListRateBasedRulesRequest
9330type ListRateBasedRulesInput struct {
9331	_ struct{} `type:"structure"`
9332
9333	// Specifies the number of Rules that you want AWS WAF to return for this request.
9334	// If you have more Rules than the number that you specify for Limit, the response
9335	// includes a NextMarker value that you can use to get another batch of Rules.
9336	Limit *int64 `type:"integer"`
9337
9338	// If you specify a value for Limit and you have more Rules than the value of
9339	// Limit, AWS WAF returns a NextMarker value in the response that allows you
9340	// to list another group of Rules. For the second and subsequent ListRateBasedRules
9341	// requests, specify the value of NextMarker from the previous response to get
9342	// information about another batch of Rules.
9343	NextMarker *string `min:"1" type:"string"`
9344}
9345
9346// String returns the string representation
9347func (s ListRateBasedRulesInput) String() string {
9348	return awsutil.Prettify(s)
9349}
9350
9351// GoString returns the string representation
9352func (s ListRateBasedRulesInput) GoString() string {
9353	return s.String()
9354}
9355
9356// Validate inspects the fields of the type to determine if they are valid.
9357func (s *ListRateBasedRulesInput) Validate() error {
9358	invalidParams := request.ErrInvalidParams{Context: "ListRateBasedRulesInput"}
9359	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
9360		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
9361	}
9362
9363	if invalidParams.Len() > 0 {
9364		return invalidParams
9365	}
9366	return nil
9367}
9368
9369// SetLimit sets the Limit field's value.
9370func (s *ListRateBasedRulesInput) SetLimit(v int64) *ListRateBasedRulesInput {
9371	s.Limit = &v
9372	return s
9373}
9374
9375// SetNextMarker sets the NextMarker field's value.
9376func (s *ListRateBasedRulesInput) SetNextMarker(v string) *ListRateBasedRulesInput {
9377	s.NextMarker = &v
9378	return s
9379}
9380
9381// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListRateBasedRulesResponse
9382type ListRateBasedRulesOutput struct {
9383	_ struct{} `type:"structure"`
9384
9385	// If you have more Rules than the number that you specified for Limit in the
9386	// request, the response includes a NextMarker value. To list more Rules, submit
9387	// another ListRateBasedRules request, and specify the NextMarker value from
9388	// the response in the NextMarker value in the next request.
9389	NextMarker *string `min:"1" type:"string"`
9390
9391	// An array of RuleSummary objects.
9392	Rules []*RuleSummary `type:"list"`
9393}
9394
9395// String returns the string representation
9396func (s ListRateBasedRulesOutput) String() string {
9397	return awsutil.Prettify(s)
9398}
9399
9400// GoString returns the string representation
9401func (s ListRateBasedRulesOutput) GoString() string {
9402	return s.String()
9403}
9404
9405// SetNextMarker sets the NextMarker field's value.
9406func (s *ListRateBasedRulesOutput) SetNextMarker(v string) *ListRateBasedRulesOutput {
9407	s.NextMarker = &v
9408	return s
9409}
9410
9411// SetRules sets the Rules field's value.
9412func (s *ListRateBasedRulesOutput) SetRules(v []*RuleSummary) *ListRateBasedRulesOutput {
9413	s.Rules = v
9414	return s
9415}
9416
9417// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListRulesRequest
9418type ListRulesInput struct {
9419	_ struct{} `type:"structure"`
9420
9421	// Specifies the number of Rules that you want AWS WAF to return for this request.
9422	// If you have more Rules than the number that you specify for Limit, the response
9423	// includes a NextMarker value that you can use to get another batch of Rules.
9424	Limit *int64 `type:"integer"`
9425
9426	// If you specify a value for Limit and you have more Rules than the value of
9427	// Limit, AWS WAF returns a NextMarker value in the response that allows you
9428	// to list another group of Rules. For the second and subsequent ListRules requests,
9429	// specify the value of NextMarker from the previous response to get information
9430	// about another batch of Rules.
9431	NextMarker *string `min:"1" type:"string"`
9432}
9433
9434// String returns the string representation
9435func (s ListRulesInput) String() string {
9436	return awsutil.Prettify(s)
9437}
9438
9439// GoString returns the string representation
9440func (s ListRulesInput) GoString() string {
9441	return s.String()
9442}
9443
9444// Validate inspects the fields of the type to determine if they are valid.
9445func (s *ListRulesInput) Validate() error {
9446	invalidParams := request.ErrInvalidParams{Context: "ListRulesInput"}
9447	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
9448		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
9449	}
9450
9451	if invalidParams.Len() > 0 {
9452		return invalidParams
9453	}
9454	return nil
9455}
9456
9457// SetLimit sets the Limit field's value.
9458func (s *ListRulesInput) SetLimit(v int64) *ListRulesInput {
9459	s.Limit = &v
9460	return s
9461}
9462
9463// SetNextMarker sets the NextMarker field's value.
9464func (s *ListRulesInput) SetNextMarker(v string) *ListRulesInput {
9465	s.NextMarker = &v
9466	return s
9467}
9468
9469// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListRulesResponse
9470type ListRulesOutput struct {
9471	_ struct{} `type:"structure"`
9472
9473	// If you have more Rules than the number that you specified for Limit in the
9474	// request, the response includes a NextMarker value. To list more Rules, submit
9475	// another ListRules request, and specify the NextMarker value from the response
9476	// in the NextMarker value in the next request.
9477	NextMarker *string `min:"1" type:"string"`
9478
9479	// An array of RuleSummary objects.
9480	Rules []*RuleSummary `type:"list"`
9481}
9482
9483// String returns the string representation
9484func (s ListRulesOutput) String() string {
9485	return awsutil.Prettify(s)
9486}
9487
9488// GoString returns the string representation
9489func (s ListRulesOutput) GoString() string {
9490	return s.String()
9491}
9492
9493// SetNextMarker sets the NextMarker field's value.
9494func (s *ListRulesOutput) SetNextMarker(v string) *ListRulesOutput {
9495	s.NextMarker = &v
9496	return s
9497}
9498
9499// SetRules sets the Rules field's value.
9500func (s *ListRulesOutput) SetRules(v []*RuleSummary) *ListRulesOutput {
9501	s.Rules = v
9502	return s
9503}
9504
9505// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListSizeConstraintSetsRequest
9506type ListSizeConstraintSetsInput struct {
9507	_ struct{} `type:"structure"`
9508
9509	// Specifies the number of SizeConstraintSet objects that you want AWS WAF to
9510	// return for this request. If you have more SizeConstraintSets objects than
9511	// the number you specify for Limit, the response includes a NextMarker value
9512	// that you can use to get another batch of SizeConstraintSet objects.
9513	Limit *int64 `type:"integer"`
9514
9515	// If you specify a value for Limit and you have more SizeConstraintSets than
9516	// the value of Limit, AWS WAF returns a NextMarker value in the response that
9517	// allows you to list another group of SizeConstraintSets. For the second and
9518	// subsequent ListSizeConstraintSets requests, specify the value of NextMarker
9519	// from the previous response to get information about another batch of SizeConstraintSets.
9520	NextMarker *string `min:"1" type:"string"`
9521}
9522
9523// String returns the string representation
9524func (s ListSizeConstraintSetsInput) String() string {
9525	return awsutil.Prettify(s)
9526}
9527
9528// GoString returns the string representation
9529func (s ListSizeConstraintSetsInput) GoString() string {
9530	return s.String()
9531}
9532
9533// Validate inspects the fields of the type to determine if they are valid.
9534func (s *ListSizeConstraintSetsInput) Validate() error {
9535	invalidParams := request.ErrInvalidParams{Context: "ListSizeConstraintSetsInput"}
9536	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
9537		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
9538	}
9539
9540	if invalidParams.Len() > 0 {
9541		return invalidParams
9542	}
9543	return nil
9544}
9545
9546// SetLimit sets the Limit field's value.
9547func (s *ListSizeConstraintSetsInput) SetLimit(v int64) *ListSizeConstraintSetsInput {
9548	s.Limit = &v
9549	return s
9550}
9551
9552// SetNextMarker sets the NextMarker field's value.
9553func (s *ListSizeConstraintSetsInput) SetNextMarker(v string) *ListSizeConstraintSetsInput {
9554	s.NextMarker = &v
9555	return s
9556}
9557
9558// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListSizeConstraintSetsResponse
9559type ListSizeConstraintSetsOutput struct {
9560	_ struct{} `type:"structure"`
9561
9562	// If you have more SizeConstraintSet objects than the number that you specified
9563	// for Limit in the request, the response includes a NextMarker value. To list
9564	// more SizeConstraintSet objects, submit another ListSizeConstraintSets request,
9565	// and specify the NextMarker value from the response in the NextMarker value
9566	// in the next request.
9567	NextMarker *string `min:"1" type:"string"`
9568
9569	// An array of SizeConstraintSetSummary objects.
9570	SizeConstraintSets []*SizeConstraintSetSummary `type:"list"`
9571}
9572
9573// String returns the string representation
9574func (s ListSizeConstraintSetsOutput) String() string {
9575	return awsutil.Prettify(s)
9576}
9577
9578// GoString returns the string representation
9579func (s ListSizeConstraintSetsOutput) GoString() string {
9580	return s.String()
9581}
9582
9583// SetNextMarker sets the NextMarker field's value.
9584func (s *ListSizeConstraintSetsOutput) SetNextMarker(v string) *ListSizeConstraintSetsOutput {
9585	s.NextMarker = &v
9586	return s
9587}
9588
9589// SetSizeConstraintSets sets the SizeConstraintSets field's value.
9590func (s *ListSizeConstraintSetsOutput) SetSizeConstraintSets(v []*SizeConstraintSetSummary) *ListSizeConstraintSetsOutput {
9591	s.SizeConstraintSets = v
9592	return s
9593}
9594
9595// A request to list the SqlInjectionMatchSet objects created by the current
9596// AWS account.
9597// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListSqlInjectionMatchSetsRequest
9598type ListSqlInjectionMatchSetsInput struct {
9599	_ struct{} `type:"structure"`
9600
9601	// Specifies the number of SqlInjectionMatchSet objects that you want AWS WAF
9602	// to return for this request. If you have more SqlInjectionMatchSet objects
9603	// than the number you specify for Limit, the response includes a NextMarker
9604	// value that you can use to get another batch of Rules.
9605	Limit *int64 `type:"integer"`
9606
9607	// If you specify a value for Limit and you have more SqlInjectionMatchSet objects
9608	// than the value of Limit, AWS WAF returns a NextMarker value in the response
9609	// that allows you to list another group of SqlInjectionMatchSets. For the second
9610	// and subsequent ListSqlInjectionMatchSets requests, specify the value of NextMarker
9611	// from the previous response to get information about another batch of SqlInjectionMatchSets.
9612	NextMarker *string `min:"1" type:"string"`
9613}
9614
9615// String returns the string representation
9616func (s ListSqlInjectionMatchSetsInput) String() string {
9617	return awsutil.Prettify(s)
9618}
9619
9620// GoString returns the string representation
9621func (s ListSqlInjectionMatchSetsInput) GoString() string {
9622	return s.String()
9623}
9624
9625// Validate inspects the fields of the type to determine if they are valid.
9626func (s *ListSqlInjectionMatchSetsInput) Validate() error {
9627	invalidParams := request.ErrInvalidParams{Context: "ListSqlInjectionMatchSetsInput"}
9628	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
9629		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
9630	}
9631
9632	if invalidParams.Len() > 0 {
9633		return invalidParams
9634	}
9635	return nil
9636}
9637
9638// SetLimit sets the Limit field's value.
9639func (s *ListSqlInjectionMatchSetsInput) SetLimit(v int64) *ListSqlInjectionMatchSetsInput {
9640	s.Limit = &v
9641	return s
9642}
9643
9644// SetNextMarker sets the NextMarker field's value.
9645func (s *ListSqlInjectionMatchSetsInput) SetNextMarker(v string) *ListSqlInjectionMatchSetsInput {
9646	s.NextMarker = &v
9647	return s
9648}
9649
9650// The response to a ListSqlInjectionMatchSets request.
9651// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListSqlInjectionMatchSetsResponse
9652type ListSqlInjectionMatchSetsOutput struct {
9653	_ struct{} `type:"structure"`
9654
9655	// If you have more SqlInjectionMatchSet objects than the number that you specified
9656	// for Limit in the request, the response includes a NextMarker value. To list
9657	// more SqlInjectionMatchSet objects, submit another ListSqlInjectionMatchSets
9658	// request, and specify the NextMarker value from the response in the NextMarker
9659	// value in the next request.
9660	NextMarker *string `min:"1" type:"string"`
9661
9662	// An array of SqlInjectionMatchSetSummary objects.
9663	SqlInjectionMatchSets []*SqlInjectionMatchSetSummary `type:"list"`
9664}
9665
9666// String returns the string representation
9667func (s ListSqlInjectionMatchSetsOutput) String() string {
9668	return awsutil.Prettify(s)
9669}
9670
9671// GoString returns the string representation
9672func (s ListSqlInjectionMatchSetsOutput) GoString() string {
9673	return s.String()
9674}
9675
9676// SetNextMarker sets the NextMarker field's value.
9677func (s *ListSqlInjectionMatchSetsOutput) SetNextMarker(v string) *ListSqlInjectionMatchSetsOutput {
9678	s.NextMarker = &v
9679	return s
9680}
9681
9682// SetSqlInjectionMatchSets sets the SqlInjectionMatchSets field's value.
9683func (s *ListSqlInjectionMatchSetsOutput) SetSqlInjectionMatchSets(v []*SqlInjectionMatchSetSummary) *ListSqlInjectionMatchSetsOutput {
9684	s.SqlInjectionMatchSets = v
9685	return s
9686}
9687
9688// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListWebACLsRequest
9689type ListWebACLsInput struct {
9690	_ struct{} `type:"structure"`
9691
9692	// Specifies the number of WebACL objects that you want AWS WAF to return for
9693	// this request. If you have more WebACL objects than the number that you specify
9694	// for Limit, the response includes a NextMarker value that you can use to get
9695	// another batch of WebACL objects.
9696	Limit *int64 `type:"integer"`
9697
9698	// If you specify a value for Limit and you have more WebACL objects than the
9699	// number that you specify for Limit, AWS WAF returns a NextMarker value in
9700	// the response that allows you to list another group of WebACL objects. For
9701	// the second and subsequent ListWebACLs requests, specify the value of NextMarker
9702	// from the previous response to get information about another batch of WebACL
9703	// objects.
9704	NextMarker *string `min:"1" type:"string"`
9705}
9706
9707// String returns the string representation
9708func (s ListWebACLsInput) String() string {
9709	return awsutil.Prettify(s)
9710}
9711
9712// GoString returns the string representation
9713func (s ListWebACLsInput) GoString() string {
9714	return s.String()
9715}
9716
9717// Validate inspects the fields of the type to determine if they are valid.
9718func (s *ListWebACLsInput) Validate() error {
9719	invalidParams := request.ErrInvalidParams{Context: "ListWebACLsInput"}
9720	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
9721		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
9722	}
9723
9724	if invalidParams.Len() > 0 {
9725		return invalidParams
9726	}
9727	return nil
9728}
9729
9730// SetLimit sets the Limit field's value.
9731func (s *ListWebACLsInput) SetLimit(v int64) *ListWebACLsInput {
9732	s.Limit = &v
9733	return s
9734}
9735
9736// SetNextMarker sets the NextMarker field's value.
9737func (s *ListWebACLsInput) SetNextMarker(v string) *ListWebACLsInput {
9738	s.NextMarker = &v
9739	return s
9740}
9741
9742// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListWebACLsResponse
9743type ListWebACLsOutput struct {
9744	_ struct{} `type:"structure"`
9745
9746	// If you have more WebACL objects than the number that you specified for Limit
9747	// in the request, the response includes a NextMarker value. To list more WebACL
9748	// objects, submit another ListWebACLs request, and specify the NextMarker value
9749	// from the response in the NextMarker value in the next request.
9750	NextMarker *string `min:"1" type:"string"`
9751
9752	// An array of WebACLSummary objects.
9753	WebACLs []*WebACLSummary `type:"list"`
9754}
9755
9756// String returns the string representation
9757func (s ListWebACLsOutput) String() string {
9758	return awsutil.Prettify(s)
9759}
9760
9761// GoString returns the string representation
9762func (s ListWebACLsOutput) GoString() string {
9763	return s.String()
9764}
9765
9766// SetNextMarker sets the NextMarker field's value.
9767func (s *ListWebACLsOutput) SetNextMarker(v string) *ListWebACLsOutput {
9768	s.NextMarker = &v
9769	return s
9770}
9771
9772// SetWebACLs sets the WebACLs field's value.
9773func (s *ListWebACLsOutput) SetWebACLs(v []*WebACLSummary) *ListWebACLsOutput {
9774	s.WebACLs = v
9775	return s
9776}
9777
9778// A request to list the XssMatchSet objects created by the current AWS account.
9779// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListXssMatchSetsRequest
9780type ListXssMatchSetsInput struct {
9781	_ struct{} `type:"structure"`
9782
9783	// Specifies the number of XssMatchSet objects that you want AWS WAF to return
9784	// for this request. If you have more XssMatchSet objects than the number you
9785	// specify for Limit, the response includes a NextMarker value that you can
9786	// use to get another batch of Rules.
9787	Limit *int64 `type:"integer"`
9788
9789	// If you specify a value for Limit and you have more XssMatchSet objects than
9790	// the value of Limit, AWS WAF returns a NextMarker value in the response that
9791	// allows you to list another group of XssMatchSets. For the second and subsequent
9792	// ListXssMatchSets requests, specify the value of NextMarker from the previous
9793	// response to get information about another batch of XssMatchSets.
9794	NextMarker *string `min:"1" type:"string"`
9795}
9796
9797// String returns the string representation
9798func (s ListXssMatchSetsInput) String() string {
9799	return awsutil.Prettify(s)
9800}
9801
9802// GoString returns the string representation
9803func (s ListXssMatchSetsInput) GoString() string {
9804	return s.String()
9805}
9806
9807// Validate inspects the fields of the type to determine if they are valid.
9808func (s *ListXssMatchSetsInput) Validate() error {
9809	invalidParams := request.ErrInvalidParams{Context: "ListXssMatchSetsInput"}
9810	if s.NextMarker != nil && len(*s.NextMarker) < 1 {
9811		invalidParams.Add(request.NewErrParamMinLen("NextMarker", 1))
9812	}
9813
9814	if invalidParams.Len() > 0 {
9815		return invalidParams
9816	}
9817	return nil
9818}
9819
9820// SetLimit sets the Limit field's value.
9821func (s *ListXssMatchSetsInput) SetLimit(v int64) *ListXssMatchSetsInput {
9822	s.Limit = &v
9823	return s
9824}
9825
9826// SetNextMarker sets the NextMarker field's value.
9827func (s *ListXssMatchSetsInput) SetNextMarker(v string) *ListXssMatchSetsInput {
9828	s.NextMarker = &v
9829	return s
9830}
9831
9832// The response to a ListXssMatchSets request.
9833// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListXssMatchSetsResponse
9834type ListXssMatchSetsOutput struct {
9835	_ struct{} `type:"structure"`
9836
9837	// If you have more XssMatchSet objects than the number that you specified for
9838	// Limit in the request, the response includes a NextMarker value. To list more
9839	// XssMatchSet objects, submit another ListXssMatchSets request, and specify
9840	// the NextMarker value from the response in the NextMarker value in the next
9841	// request.
9842	NextMarker *string `min:"1" type:"string"`
9843
9844	// An array of XssMatchSetSummary objects.
9845	XssMatchSets []*XssMatchSetSummary `type:"list"`
9846}
9847
9848// String returns the string representation
9849func (s ListXssMatchSetsOutput) String() string {
9850	return awsutil.Prettify(s)
9851}
9852
9853// GoString returns the string representation
9854func (s ListXssMatchSetsOutput) GoString() string {
9855	return s.String()
9856}
9857
9858// SetNextMarker sets the NextMarker field's value.
9859func (s *ListXssMatchSetsOutput) SetNextMarker(v string) *ListXssMatchSetsOutput {
9860	s.NextMarker = &v
9861	return s
9862}
9863
9864// SetXssMatchSets sets the XssMatchSets field's value.
9865func (s *ListXssMatchSetsOutput) SetXssMatchSets(v []*XssMatchSetSummary) *ListXssMatchSetsOutput {
9866	s.XssMatchSets = v
9867	return s
9868}
9869
9870// Specifies the ByteMatchSet, IPSet, SqlInjectionMatchSet, XssMatchSet, and
9871// SizeConstraintSet objects that you want to add to a Rule and, for each object,
9872// indicates whether you want to negate the settings, for example, requests
9873// that do NOT originate from the IP address 192.0.2.44.
9874// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/Predicate
9875type Predicate struct {
9876	_ struct{} `type:"structure"`
9877
9878	// A unique identifier for a predicate in a Rule, such as ByteMatchSetId or
9879	// IPSetId. The ID is returned by the corresponding Create or List command.
9880	//
9881	// DataId is a required field
9882	DataId *string `min:"1" type:"string" required:"true"`
9883
9884	// Set Negated to False if you want AWS WAF to allow, block, or count requests
9885	// based on the settings in the specified ByteMatchSet, IPSet, SqlInjectionMatchSet,
9886	// XssMatchSet, or SizeConstraintSet. For example, if an IPSet includes the
9887	// IP address 192.0.2.44, AWS WAF will allow or block requests based on that
9888	// IP address.
9889	//
9890	// Set Negated to True if you want AWS WAF to allow or block a request based
9891	// on the negation of the settings in the ByteMatchSet, IPSet, SqlInjectionMatchSet,
9892	// XssMatchSet, or SizeConstraintSet. For example, if an IPSet includes the
9893	// IP address 192.0.2.44, AWS WAF will allow, block, or count requests based
9894	// on all IP addresses except192.0.2.44.
9895	//
9896	// Negated is a required field
9897	Negated *bool `type:"boolean" required:"true"`
9898
9899	// The type of predicate in a Rule, such as ByteMatchSet or IPSet.
9900	//
9901	// Type is a required field
9902	Type *string `type:"string" required:"true" enum:"PredicateType"`
9903}
9904
9905// String returns the string representation
9906func (s Predicate) String() string {
9907	return awsutil.Prettify(s)
9908}
9909
9910// GoString returns the string representation
9911func (s Predicate) GoString() string {
9912	return s.String()
9913}
9914
9915// Validate inspects the fields of the type to determine if they are valid.
9916func (s *Predicate) Validate() error {
9917	invalidParams := request.ErrInvalidParams{Context: "Predicate"}
9918	if s.DataId == nil {
9919		invalidParams.Add(request.NewErrParamRequired("DataId"))
9920	}
9921	if s.DataId != nil && len(*s.DataId) < 1 {
9922		invalidParams.Add(request.NewErrParamMinLen("DataId", 1))
9923	}
9924	if s.Negated == nil {
9925		invalidParams.Add(request.NewErrParamRequired("Negated"))
9926	}
9927	if s.Type == nil {
9928		invalidParams.Add(request.NewErrParamRequired("Type"))
9929	}
9930
9931	if invalidParams.Len() > 0 {
9932		return invalidParams
9933	}
9934	return nil
9935}
9936
9937// SetDataId sets the DataId field's value.
9938func (s *Predicate) SetDataId(v string) *Predicate {
9939	s.DataId = &v
9940	return s
9941}
9942
9943// SetNegated sets the Negated field's value.
9944func (s *Predicate) SetNegated(v bool) *Predicate {
9945	s.Negated = &v
9946	return s
9947}
9948
9949// SetType sets the Type field's value.
9950func (s *Predicate) SetType(v string) *Predicate {
9951	s.Type = &v
9952	return s
9953}
9954
9955// A RateBasedRule is identical to a regular Rule, with one addition: a RateBasedRule
9956// counts the number of requests that arrive from a specified IP address every
9957// five minutes. For example, based on recent requests that you've seen from
9958// an attacker, you might create a RateBasedRule that includes the following
9959// conditions:
9960//
9961//    * The requests come from 192.0.2.44.
9962//
9963//    * They contain the value BadBot in the User-Agent header.
9964//
9965// In the rule, you also define the rate limit as 15,000.
9966//
9967// Requests that meet both of these conditions and exceed 15,000 requests every
9968// five minutes trigger the rule's action (block or count), which is defined
9969// in the web ACL.
9970// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/RateBasedRule
9971type RateBasedRule struct {
9972	_ struct{} `type:"structure"`
9973
9974	// The Predicates object contains one Predicate element for each ByteMatchSet,
9975	// IPSet, or SqlInjectionMatchSet object that you want to include in a RateBasedRule.
9976	//
9977	// MatchPredicates is a required field
9978	MatchPredicates []*Predicate `type:"list" required:"true"`
9979
9980	// A friendly name or description for the metrics for a RateBasedRule. The name
9981	// can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't
9982	// contain whitespace. You can't change the name of the metric after you create
9983	// the RateBasedRule.
9984	MetricName *string `type:"string"`
9985
9986	// A friendly name or description for a RateBasedRule. You can't change the
9987	// name of a RateBasedRule after you create it.
9988	Name *string `min:"1" type:"string"`
9989
9990	// The field that AWS WAF uses to determine if requests are likely arriving
9991	// from single source and thus subject to rate monitoring. The only valid value
9992	// for RateKey is IP. IP indicates that requests arriving from the same IP address
9993	// are subject to the RateLimit that is specified in the RateBasedRule.
9994	//
9995	// RateKey is a required field
9996	RateKey *string `type:"string" required:"true" enum:"RateKey"`
9997
9998	// The maximum number of requests, which have an identical value in the field
9999	// specified by the RateKey, allowed in a five-minute period. If the number
10000	// of requests exceeds the RateLimit and the other predicates specified in the
10001	// rule are also met, AWS WAF triggers the action that is specified for this
10002	// rule.
10003	//
10004	// RateLimit is a required field
10005	RateLimit *int64 `min:"2000" type:"long" required:"true"`
10006
10007	// A unique identifier for a RateBasedRule. You use RuleId to get more information
10008	// about a RateBasedRule (see GetRateBasedRule), update a RateBasedRule (see
10009	// UpdateRateBasedRule), insert a RateBasedRule into a WebACL or delete one
10010	// from a WebACL (see UpdateWebACL), or delete a RateBasedRule from AWS WAF
10011	// (see DeleteRateBasedRule).
10012	//
10013	// RuleId is a required field
10014	RuleId *string `min:"1" type:"string" required:"true"`
10015}
10016
10017// String returns the string representation
10018func (s RateBasedRule) String() string {
10019	return awsutil.Prettify(s)
10020}
10021
10022// GoString returns the string representation
10023func (s RateBasedRule) GoString() string {
10024	return s.String()
10025}
10026
10027// SetMatchPredicates sets the MatchPredicates field's value.
10028func (s *RateBasedRule) SetMatchPredicates(v []*Predicate) *RateBasedRule {
10029	s.MatchPredicates = v
10030	return s
10031}
10032
10033// SetMetricName sets the MetricName field's value.
10034func (s *RateBasedRule) SetMetricName(v string) *RateBasedRule {
10035	s.MetricName = &v
10036	return s
10037}
10038
10039// SetName sets the Name field's value.
10040func (s *RateBasedRule) SetName(v string) *RateBasedRule {
10041	s.Name = &v
10042	return s
10043}
10044
10045// SetRateKey sets the RateKey field's value.
10046func (s *RateBasedRule) SetRateKey(v string) *RateBasedRule {
10047	s.RateKey = &v
10048	return s
10049}
10050
10051// SetRateLimit sets the RateLimit field's value.
10052func (s *RateBasedRule) SetRateLimit(v int64) *RateBasedRule {
10053	s.RateLimit = &v
10054	return s
10055}
10056
10057// SetRuleId sets the RuleId field's value.
10058func (s *RateBasedRule) SetRuleId(v string) *RateBasedRule {
10059	s.RuleId = &v
10060	return s
10061}
10062
10063// A combination of ByteMatchSet, IPSet, and/or SqlInjectionMatchSet objects
10064// that identify the web requests that you want to allow, block, or count. For
10065// example, you might create a Rule that includes the following predicates:
10066//
10067//    * An IPSet that causes AWS WAF to search for web requests that originate
10068//    from the IP address 192.0.2.44
10069//
10070//    * A ByteMatchSet that causes AWS WAF to search for web requests for which
10071//    the value of the User-Agent header is BadBot.
10072//
10073// To match the settings in this Rule, a request must originate from 192.0.2.44
10074// AND include a User-Agent header for which the value is BadBot.
10075// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/Rule
10076type Rule struct {
10077	_ struct{} `type:"structure"`
10078
10079	// A friendly name or description for the metrics for this Rule. The name can
10080	// contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
10081	// whitespace. You can't change MetricName after you create the Rule.
10082	MetricName *string `type:"string"`
10083
10084	// The friendly name or description for the Rule. You can't change the name
10085	// of a Rule after you create it.
10086	Name *string `min:"1" type:"string"`
10087
10088	// The Predicates object contains one Predicate element for each ByteMatchSet,
10089	// IPSet, or SqlInjectionMatchSet object that you want to include in a Rule.
10090	//
10091	// Predicates is a required field
10092	Predicates []*Predicate `type:"list" required:"true"`
10093
10094	// A unique identifier for a Rule. You use RuleId to get more information about
10095	// a Rule (see GetRule), update a Rule (see UpdateRule), insert a Rule into
10096	// a WebACL or delete a one from a WebACL (see UpdateWebACL), or delete a Rule
10097	// from AWS WAF (see DeleteRule).
10098	//
10099	// RuleId is returned by CreateRule and by ListRules.
10100	//
10101	// RuleId is a required field
10102	RuleId *string `min:"1" type:"string" required:"true"`
10103}
10104
10105// String returns the string representation
10106func (s Rule) String() string {
10107	return awsutil.Prettify(s)
10108}
10109
10110// GoString returns the string representation
10111func (s Rule) GoString() string {
10112	return s.String()
10113}
10114
10115// SetMetricName sets the MetricName field's value.
10116func (s *Rule) SetMetricName(v string) *Rule {
10117	s.MetricName = &v
10118	return s
10119}
10120
10121// SetName sets the Name field's value.
10122func (s *Rule) SetName(v string) *Rule {
10123	s.Name = &v
10124	return s
10125}
10126
10127// SetPredicates sets the Predicates field's value.
10128func (s *Rule) SetPredicates(v []*Predicate) *Rule {
10129	s.Predicates = v
10130	return s
10131}
10132
10133// SetRuleId sets the RuleId field's value.
10134func (s *Rule) SetRuleId(v string) *Rule {
10135	s.RuleId = &v
10136	return s
10137}
10138
10139// Contains the identifier and the friendly name or description of the Rule.
10140// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/RuleSummary
10141type RuleSummary struct {
10142	_ struct{} `type:"structure"`
10143
10144	// A friendly name or description of the Rule. You can't change the name of
10145	// a Rule after you create it.
10146	//
10147	// Name is a required field
10148	Name *string `min:"1" type:"string" required:"true"`
10149
10150	// A unique identifier for a Rule. You use RuleId to get more information about
10151	// a Rule (see GetRule), update a Rule (see UpdateRule), insert a Rule into
10152	// a WebACL or delete one from a WebACL (see UpdateWebACL), or delete a Rule
10153	// from AWS WAF (see DeleteRule).
10154	//
10155	// RuleId is returned by CreateRule and by ListRules.
10156	//
10157	// RuleId is a required field
10158	RuleId *string `min:"1" type:"string" required:"true"`
10159}
10160
10161// String returns the string representation
10162func (s RuleSummary) String() string {
10163	return awsutil.Prettify(s)
10164}
10165
10166// GoString returns the string representation
10167func (s RuleSummary) GoString() string {
10168	return s.String()
10169}
10170
10171// SetName sets the Name field's value.
10172func (s *RuleSummary) SetName(v string) *RuleSummary {
10173	s.Name = &v
10174	return s
10175}
10176
10177// SetRuleId sets the RuleId field's value.
10178func (s *RuleSummary) SetRuleId(v string) *RuleSummary {
10179	s.RuleId = &v
10180	return s
10181}
10182
10183// Specifies a Predicate (such as an IPSet) and indicates whether you want to
10184// add it to a Rule or delete it from a Rule.
10185// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/RuleUpdate
10186type RuleUpdate struct {
10187	_ struct{} `type:"structure"`
10188
10189	// Specify INSERT to add a Predicate to a Rule. Use DELETE to remove a Predicate
10190	// from a Rule.
10191	//
10192	// Action is a required field
10193	Action *string `type:"string" required:"true" enum:"ChangeAction"`
10194
10195	// The ID of the Predicate (such as an IPSet) that you want to add to a Rule.
10196	//
10197	// Predicate is a required field
10198	Predicate *Predicate `type:"structure" required:"true"`
10199}
10200
10201// String returns the string representation
10202func (s RuleUpdate) String() string {
10203	return awsutil.Prettify(s)
10204}
10205
10206// GoString returns the string representation
10207func (s RuleUpdate) GoString() string {
10208	return s.String()
10209}
10210
10211// Validate inspects the fields of the type to determine if they are valid.
10212func (s *RuleUpdate) Validate() error {
10213	invalidParams := request.ErrInvalidParams{Context: "RuleUpdate"}
10214	if s.Action == nil {
10215		invalidParams.Add(request.NewErrParamRequired("Action"))
10216	}
10217	if s.Predicate == nil {
10218		invalidParams.Add(request.NewErrParamRequired("Predicate"))
10219	}
10220	if s.Predicate != nil {
10221		if err := s.Predicate.Validate(); err != nil {
10222			invalidParams.AddNested("Predicate", err.(request.ErrInvalidParams))
10223		}
10224	}
10225
10226	if invalidParams.Len() > 0 {
10227		return invalidParams
10228	}
10229	return nil
10230}
10231
10232// SetAction sets the Action field's value.
10233func (s *RuleUpdate) SetAction(v string) *RuleUpdate {
10234	s.Action = &v
10235	return s
10236}
10237
10238// SetPredicate sets the Predicate field's value.
10239func (s *RuleUpdate) SetPredicate(v *Predicate) *RuleUpdate {
10240	s.Predicate = v
10241	return s
10242}
10243
10244// The response from a GetSampledRequests request includes a SampledHTTPRequests
10245// complex type that appears as SampledRequests in the response syntax. SampledHTTPRequests
10246// contains one SampledHTTPRequest object for each web request that is returned
10247// by GetSampledRequests.
10248// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/SampledHTTPRequest
10249type SampledHTTPRequest struct {
10250	_ struct{} `type:"structure"`
10251
10252	// The action for the Rule that the request matched: ALLOW, BLOCK, or COUNT.
10253	Action *string `type:"string"`
10254
10255	// A complex type that contains detailed information about the request.
10256	//
10257	// Request is a required field
10258	Request *HTTPRequest `type:"structure" required:"true"`
10259
10260	// The time at which AWS WAF received the request from your AWS resource, in
10261	// Unix time format (in seconds).
10262	Timestamp *time.Time `type:"timestamp" timestampFormat:"unix"`
10263
10264	// A value that indicates how one result in the response relates proportionally
10265	// to other results in the response. A result that has a weight of 2 represents
10266	// roughly twice as many CloudFront web requests as a result that has a weight
10267	// of 1.
10268	//
10269	// Weight is a required field
10270	Weight *int64 `type:"long" required:"true"`
10271}
10272
10273// String returns the string representation
10274func (s SampledHTTPRequest) String() string {
10275	return awsutil.Prettify(s)
10276}
10277
10278// GoString returns the string representation
10279func (s SampledHTTPRequest) GoString() string {
10280	return s.String()
10281}
10282
10283// SetAction sets the Action field's value.
10284func (s *SampledHTTPRequest) SetAction(v string) *SampledHTTPRequest {
10285	s.Action = &v
10286	return s
10287}
10288
10289// SetRequest sets the Request field's value.
10290func (s *SampledHTTPRequest) SetRequest(v *HTTPRequest) *SampledHTTPRequest {
10291	s.Request = v
10292	return s
10293}
10294
10295// SetTimestamp sets the Timestamp field's value.
10296func (s *SampledHTTPRequest) SetTimestamp(v time.Time) *SampledHTTPRequest {
10297	s.Timestamp = &v
10298	return s
10299}
10300
10301// SetWeight sets the Weight field's value.
10302func (s *SampledHTTPRequest) SetWeight(v int64) *SampledHTTPRequest {
10303	s.Weight = &v
10304	return s
10305}
10306
10307// Specifies a constraint on the size of a part of the web request. AWS WAF
10308// uses the Size, ComparisonOperator, and FieldToMatch to build an expression
10309// in the form of "SizeComparisonOperator size in bytes of FieldToMatch". If
10310// that expression is true, the SizeConstraint is considered to match.
10311// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/SizeConstraint
10312type SizeConstraint struct {
10313	_ struct{} `type:"structure"`
10314
10315	// The type of comparison you want AWS WAF to perform. AWS WAF uses this in
10316	// combination with the provided Size and FieldToMatch to build an expression
10317	// in the form of "SizeComparisonOperator size in bytes of FieldToMatch". If
10318	// that expression is true, the SizeConstraint is considered to match.
10319	//
10320	// EQ: Used to test if the Size is equal to the size of the FieldToMatch
10321	//
10322	// NE: Used to test if the Size is not equal to the size of the FieldToMatch
10323	//
10324	// LE: Used to test if the Size is less than or equal to the size of the FieldToMatch
10325	//
10326	// LT: Used to test if the Size is strictly less than the size of the FieldToMatch
10327	//
10328	// GE: Used to test if the Size is greater than or equal to the size of the
10329	// FieldToMatch
10330	//
10331	// GT: Used to test if the Size is strictly greater than the size of the FieldToMatch
10332	//
10333	// ComparisonOperator is a required field
10334	ComparisonOperator *string `type:"string" required:"true" enum:"ComparisonOperator"`
10335
10336	// Specifies where in a web request to look for the size constraint.
10337	//
10338	// FieldToMatch is a required field
10339	FieldToMatch *FieldToMatch `type:"structure" required:"true"`
10340
10341	// The size in bytes that you want AWS WAF to compare against the size of the
10342	// specified FieldToMatch. AWS WAF uses this in combination with ComparisonOperator
10343	// and FieldToMatch to build an expression in the form of "SizeComparisonOperator
10344	// size in bytes of FieldToMatch". If that expression is true, the SizeConstraint
10345	// is considered to match.
10346	//
10347	// Valid values for size are 0 - 21474836480 bytes (0 - 20 GB).
10348	//
10349	// If you specify URI for the value of Type, the / in the URI counts as one
10350	// character. For example, the URI /logo.jpg is nine characters long.
10351	//
10352	// Size is a required field
10353	Size *int64 `type:"long" required:"true"`
10354
10355	// Text transformations eliminate some of the unusual formatting that attackers
10356	// use in web requests in an effort to bypass AWS WAF. If you specify a transformation,
10357	// AWS WAF performs the transformation on FieldToMatch before inspecting a request
10358	// for a match.
10359	//
10360	// Note that if you choose BODY for the value of Type, you must choose NONE
10361	// for TextTransformation because CloudFront forwards only the first 8192 bytes
10362	// for inspection.
10363	//
10364	// NONE
10365	//
10366	// Specify NONE if you don't want to perform any text transformations.
10367	//
10368	// CMD_LINE
10369	//
10370	// When you're concerned that attackers are injecting an operating system command
10371	// line command and using unusual formatting to disguise some or all of the
10372	// command, use this option to perform the following transformations:
10373	//
10374	//    * Delete the following characters: \ " ' ^
10375	//
10376	//    * Delete spaces before the following characters: / (
10377	//
10378	//    * Replace the following characters with a space: , ;
10379	//
10380	//    * Replace multiple spaces with one space
10381	//
10382	//    * Convert uppercase letters (A-Z) to lowercase (a-z)
10383	//
10384	// COMPRESS_WHITE_SPACE
10385	//
10386	// Use this option to replace the following characters with a space character
10387	// (decimal 32):
10388	//
10389	//    * \f, formfeed, decimal 12
10390	//
10391	//    * \t, tab, decimal 9
10392	//
10393	//    * \n, newline, decimal 10
10394	//
10395	//    * \r, carriage return, decimal 13
10396	//
10397	//    * \v, vertical tab, decimal 11
10398	//
10399	//    * non-breaking space, decimal 160
10400	//
10401	// COMPRESS_WHITE_SPACE also replaces multiple spaces with one space.
10402	//
10403	// HTML_ENTITY_DECODE
10404	//
10405	// Use this option to replace HTML-encoded characters with unencoded characters.
10406	// HTML_ENTITY_DECODE performs the following operations:
10407	//
10408	//    * Replaces (ampersand)quot; with "
10409	//
10410	//    * Replaces (ampersand)nbsp; with a non-breaking space, decimal 160
10411	//
10412	//    * Replaces (ampersand)lt; with a "less than" symbol
10413	//
10414	//    * Replaces (ampersand)gt; with >
10415	//
10416	//    * Replaces characters that are represented in hexadecimal format, (ampersand)#xhhhh;,
10417	//    with the corresponding characters
10418	//
10419	//    * Replaces characters that are represented in decimal format, (ampersand)#nnnn;,
10420	//    with the corresponding characters
10421	//
10422	// LOWERCASE
10423	//
10424	// Use this option to convert uppercase letters (A-Z) to lowercase (a-z).
10425	//
10426	// URL_DECODE
10427	//
10428	// Use this option to decode a URL-encoded value.
10429	//
10430	// TextTransformation is a required field
10431	TextTransformation *string `type:"string" required:"true" enum:"TextTransformation"`
10432}
10433
10434// String returns the string representation
10435func (s SizeConstraint) String() string {
10436	return awsutil.Prettify(s)
10437}
10438
10439// GoString returns the string representation
10440func (s SizeConstraint) GoString() string {
10441	return s.String()
10442}
10443
10444// Validate inspects the fields of the type to determine if they are valid.
10445func (s *SizeConstraint) Validate() error {
10446	invalidParams := request.ErrInvalidParams{Context: "SizeConstraint"}
10447	if s.ComparisonOperator == nil {
10448		invalidParams.Add(request.NewErrParamRequired("ComparisonOperator"))
10449	}
10450	if s.FieldToMatch == nil {
10451		invalidParams.Add(request.NewErrParamRequired("FieldToMatch"))
10452	}
10453	if s.Size == nil {
10454		invalidParams.Add(request.NewErrParamRequired("Size"))
10455	}
10456	if s.TextTransformation == nil {
10457		invalidParams.Add(request.NewErrParamRequired("TextTransformation"))
10458	}
10459	if s.FieldToMatch != nil {
10460		if err := s.FieldToMatch.Validate(); err != nil {
10461			invalidParams.AddNested("FieldToMatch", err.(request.ErrInvalidParams))
10462		}
10463	}
10464
10465	if invalidParams.Len() > 0 {
10466		return invalidParams
10467	}
10468	return nil
10469}
10470
10471// SetComparisonOperator sets the ComparisonOperator field's value.
10472func (s *SizeConstraint) SetComparisonOperator(v string) *SizeConstraint {
10473	s.ComparisonOperator = &v
10474	return s
10475}
10476
10477// SetFieldToMatch sets the FieldToMatch field's value.
10478func (s *SizeConstraint) SetFieldToMatch(v *FieldToMatch) *SizeConstraint {
10479	s.FieldToMatch = v
10480	return s
10481}
10482
10483// SetSize sets the Size field's value.
10484func (s *SizeConstraint) SetSize(v int64) *SizeConstraint {
10485	s.Size = &v
10486	return s
10487}
10488
10489// SetTextTransformation sets the TextTransformation field's value.
10490func (s *SizeConstraint) SetTextTransformation(v string) *SizeConstraint {
10491	s.TextTransformation = &v
10492	return s
10493}
10494
10495// A complex type that contains SizeConstraint objects, which specify the parts
10496// of web requests that you want AWS WAF to inspect the size of. If a SizeConstraintSet
10497// contains more than one SizeConstraint object, a request only needs to match
10498// one constraint to be considered a match.
10499// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/SizeConstraintSet
10500type SizeConstraintSet struct {
10501	_ struct{} `type:"structure"`
10502
10503	// The name, if any, of the SizeConstraintSet.
10504	Name *string `min:"1" type:"string"`
10505
10506	// A unique identifier for a SizeConstraintSet. You use SizeConstraintSetId
10507	// to get information about a SizeConstraintSet (see GetSizeConstraintSet),
10508	// update a SizeConstraintSet (see UpdateSizeConstraintSet), insert a SizeConstraintSet
10509	// into a Rule or delete one from a Rule (see UpdateRule), and delete a SizeConstraintSet
10510	// from AWS WAF (see DeleteSizeConstraintSet).
10511	//
10512	// SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets.
10513	//
10514	// SizeConstraintSetId is a required field
10515	SizeConstraintSetId *string `min:"1" type:"string" required:"true"`
10516
10517	// Specifies the parts of web requests that you want to inspect the size of.
10518	//
10519	// SizeConstraints is a required field
10520	SizeConstraints []*SizeConstraint `type:"list" required:"true"`
10521}
10522
10523// String returns the string representation
10524func (s SizeConstraintSet) String() string {
10525	return awsutil.Prettify(s)
10526}
10527
10528// GoString returns the string representation
10529func (s SizeConstraintSet) GoString() string {
10530	return s.String()
10531}
10532
10533// SetName sets the Name field's value.
10534func (s *SizeConstraintSet) SetName(v string) *SizeConstraintSet {
10535	s.Name = &v
10536	return s
10537}
10538
10539// SetSizeConstraintSetId sets the SizeConstraintSetId field's value.
10540func (s *SizeConstraintSet) SetSizeConstraintSetId(v string) *SizeConstraintSet {
10541	s.SizeConstraintSetId = &v
10542	return s
10543}
10544
10545// SetSizeConstraints sets the SizeConstraints field's value.
10546func (s *SizeConstraintSet) SetSizeConstraints(v []*SizeConstraint) *SizeConstraintSet {
10547	s.SizeConstraints = v
10548	return s
10549}
10550
10551// The Id and Name of a SizeConstraintSet.
10552// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/SizeConstraintSetSummary
10553type SizeConstraintSetSummary struct {
10554	_ struct{} `type:"structure"`
10555
10556	// The name of the SizeConstraintSet, if any.
10557	//
10558	// Name is a required field
10559	Name *string `min:"1" type:"string" required:"true"`
10560
10561	// A unique identifier for a SizeConstraintSet. You use SizeConstraintSetId
10562	// to get information about a SizeConstraintSet (see GetSizeConstraintSet),
10563	// update a SizeConstraintSet (see UpdateSizeConstraintSet), insert a SizeConstraintSet
10564	// into a Rule or delete one from a Rule (see UpdateRule), and delete a SizeConstraintSet
10565	// from AWS WAF (see DeleteSizeConstraintSet).
10566	//
10567	// SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets.
10568	//
10569	// SizeConstraintSetId is a required field
10570	SizeConstraintSetId *string `min:"1" type:"string" required:"true"`
10571}
10572
10573// String returns the string representation
10574func (s SizeConstraintSetSummary) String() string {
10575	return awsutil.Prettify(s)
10576}
10577
10578// GoString returns the string representation
10579func (s SizeConstraintSetSummary) GoString() string {
10580	return s.String()
10581}
10582
10583// SetName sets the Name field's value.
10584func (s *SizeConstraintSetSummary) SetName(v string) *SizeConstraintSetSummary {
10585	s.Name = &v
10586	return s
10587}
10588
10589// SetSizeConstraintSetId sets the SizeConstraintSetId field's value.
10590func (s *SizeConstraintSetSummary) SetSizeConstraintSetId(v string) *SizeConstraintSetSummary {
10591	s.SizeConstraintSetId = &v
10592	return s
10593}
10594
10595// Specifies the part of a web request that you want to inspect the size of
10596// and indicates whether you want to add the specification to a SizeConstraintSet
10597// or delete it from a SizeConstraintSet.
10598// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/SizeConstraintSetUpdate
10599type SizeConstraintSetUpdate struct {
10600	_ struct{} `type:"structure"`
10601
10602	// Specify INSERT to add a SizeConstraintSetUpdate to a SizeConstraintSet. Use
10603	// DELETE to remove a SizeConstraintSetUpdate from a SizeConstraintSet.
10604	//
10605	// Action is a required field
10606	Action *string `type:"string" required:"true" enum:"ChangeAction"`
10607
10608	// Specifies a constraint on the size of a part of the web request. AWS WAF
10609	// uses the Size, ComparisonOperator, and FieldToMatch to build an expression
10610	// in the form of "SizeComparisonOperator size in bytes of FieldToMatch". If
10611	// that expression is true, the SizeConstraint is considered to match.
10612	//
10613	// SizeConstraint is a required field
10614	SizeConstraint *SizeConstraint `type:"structure" required:"true"`
10615}
10616
10617// String returns the string representation
10618func (s SizeConstraintSetUpdate) String() string {
10619	return awsutil.Prettify(s)
10620}
10621
10622// GoString returns the string representation
10623func (s SizeConstraintSetUpdate) GoString() string {
10624	return s.String()
10625}
10626
10627// Validate inspects the fields of the type to determine if they are valid.
10628func (s *SizeConstraintSetUpdate) Validate() error {
10629	invalidParams := request.ErrInvalidParams{Context: "SizeConstraintSetUpdate"}
10630	if s.Action == nil {
10631		invalidParams.Add(request.NewErrParamRequired("Action"))
10632	}
10633	if s.SizeConstraint == nil {
10634		invalidParams.Add(request.NewErrParamRequired("SizeConstraint"))
10635	}
10636	if s.SizeConstraint != nil {
10637		if err := s.SizeConstraint.Validate(); err != nil {
10638			invalidParams.AddNested("SizeConstraint", err.(request.ErrInvalidParams))
10639		}
10640	}
10641
10642	if invalidParams.Len() > 0 {
10643		return invalidParams
10644	}
10645	return nil
10646}
10647
10648// SetAction sets the Action field's value.
10649func (s *SizeConstraintSetUpdate) SetAction(v string) *SizeConstraintSetUpdate {
10650	s.Action = &v
10651	return s
10652}
10653
10654// SetSizeConstraint sets the SizeConstraint field's value.
10655func (s *SizeConstraintSetUpdate) SetSizeConstraint(v *SizeConstraint) *SizeConstraintSetUpdate {
10656	s.SizeConstraint = v
10657	return s
10658}
10659
10660// A complex type that contains SqlInjectionMatchTuple objects, which specify
10661// the parts of web requests that you want AWS WAF to inspect for snippets of
10662// malicious SQL code and, if you want AWS WAF to inspect a header, the name
10663// of the header. If a SqlInjectionMatchSet contains more than one SqlInjectionMatchTuple
10664// object, a request needs to include snippets of SQL code in only one of the
10665// specified parts of the request to be considered a match.
10666// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/SqlInjectionMatchSet
10667type SqlInjectionMatchSet struct {
10668	_ struct{} `type:"structure"`
10669
10670	// The name, if any, of the SqlInjectionMatchSet.
10671	Name *string `min:"1" type:"string"`
10672
10673	// A unique identifier for a SqlInjectionMatchSet. You use SqlInjectionMatchSetId
10674	// to get information about a SqlInjectionMatchSet (see GetSqlInjectionMatchSet),
10675	// update a SqlInjectionMatchSet (see UpdateSqlInjectionMatchSet), insert a
10676	// SqlInjectionMatchSet into a Rule or delete one from a Rule (see UpdateRule),
10677	// and delete a SqlInjectionMatchSet from AWS WAF (see DeleteSqlInjectionMatchSet).
10678	//
10679	// SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets.
10680	//
10681	// SqlInjectionMatchSetId is a required field
10682	SqlInjectionMatchSetId *string `min:"1" type:"string" required:"true"`
10683
10684	// Specifies the parts of web requests that you want to inspect for snippets
10685	// of malicious SQL code.
10686	//
10687	// SqlInjectionMatchTuples is a required field
10688	SqlInjectionMatchTuples []*SqlInjectionMatchTuple `type:"list" required:"true"`
10689}
10690
10691// String returns the string representation
10692func (s SqlInjectionMatchSet) String() string {
10693	return awsutil.Prettify(s)
10694}
10695
10696// GoString returns the string representation
10697func (s SqlInjectionMatchSet) GoString() string {
10698	return s.String()
10699}
10700
10701// SetName sets the Name field's value.
10702func (s *SqlInjectionMatchSet) SetName(v string) *SqlInjectionMatchSet {
10703	s.Name = &v
10704	return s
10705}
10706
10707// SetSqlInjectionMatchSetId sets the SqlInjectionMatchSetId field's value.
10708func (s *SqlInjectionMatchSet) SetSqlInjectionMatchSetId(v string) *SqlInjectionMatchSet {
10709	s.SqlInjectionMatchSetId = &v
10710	return s
10711}
10712
10713// SetSqlInjectionMatchTuples sets the SqlInjectionMatchTuples field's value.
10714func (s *SqlInjectionMatchSet) SetSqlInjectionMatchTuples(v []*SqlInjectionMatchTuple) *SqlInjectionMatchSet {
10715	s.SqlInjectionMatchTuples = v
10716	return s
10717}
10718
10719// The Id and Name of a SqlInjectionMatchSet.
10720// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/SqlInjectionMatchSetSummary
10721type SqlInjectionMatchSetSummary struct {
10722	_ struct{} `type:"structure"`
10723
10724	// The name of the SqlInjectionMatchSet, if any, specified by Id.
10725	//
10726	// Name is a required field
10727	Name *string `min:"1" type:"string" required:"true"`
10728
10729	// A unique identifier for a SqlInjectionMatchSet. You use SqlInjectionMatchSetId
10730	// to get information about a SqlInjectionMatchSet (see GetSqlInjectionMatchSet),
10731	// update a SqlInjectionMatchSet (see UpdateSqlInjectionMatchSet), insert a
10732	// SqlInjectionMatchSet into a Rule or delete one from a Rule (see UpdateRule),
10733	// and delete a SqlInjectionMatchSet from AWS WAF (see DeleteSqlInjectionMatchSet).
10734	//
10735	// SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets.
10736	//
10737	// SqlInjectionMatchSetId is a required field
10738	SqlInjectionMatchSetId *string `min:"1" type:"string" required:"true"`
10739}
10740
10741// String returns the string representation
10742func (s SqlInjectionMatchSetSummary) String() string {
10743	return awsutil.Prettify(s)
10744}
10745
10746// GoString returns the string representation
10747func (s SqlInjectionMatchSetSummary) GoString() string {
10748	return s.String()
10749}
10750
10751// SetName sets the Name field's value.
10752func (s *SqlInjectionMatchSetSummary) SetName(v string) *SqlInjectionMatchSetSummary {
10753	s.Name = &v
10754	return s
10755}
10756
10757// SetSqlInjectionMatchSetId sets the SqlInjectionMatchSetId field's value.
10758func (s *SqlInjectionMatchSetSummary) SetSqlInjectionMatchSetId(v string) *SqlInjectionMatchSetSummary {
10759	s.SqlInjectionMatchSetId = &v
10760	return s
10761}
10762
10763// Specifies the part of a web request that you want to inspect for snippets
10764// of malicious SQL code and indicates whether you want to add the specification
10765// to a SqlInjectionMatchSet or delete it from a SqlInjectionMatchSet.
10766// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/SqlInjectionMatchSetUpdate
10767type SqlInjectionMatchSetUpdate struct {
10768	_ struct{} `type:"structure"`
10769
10770	// Specify INSERT to add a SqlInjectionMatchSetUpdate to a SqlInjectionMatchSet.
10771	// Use DELETE to remove a SqlInjectionMatchSetUpdate from a SqlInjectionMatchSet.
10772	//
10773	// Action is a required field
10774	Action *string `type:"string" required:"true" enum:"ChangeAction"`
10775
10776	// Specifies the part of a web request that you want AWS WAF to inspect for
10777	// snippets of malicious SQL code and, if you want AWS WAF to inspect a header,
10778	// the name of the header.
10779	//
10780	// SqlInjectionMatchTuple is a required field
10781	SqlInjectionMatchTuple *SqlInjectionMatchTuple `type:"structure" required:"true"`
10782}
10783
10784// String returns the string representation
10785func (s SqlInjectionMatchSetUpdate) String() string {
10786	return awsutil.Prettify(s)
10787}
10788
10789// GoString returns the string representation
10790func (s SqlInjectionMatchSetUpdate) GoString() string {
10791	return s.String()
10792}
10793
10794// Validate inspects the fields of the type to determine if they are valid.
10795func (s *SqlInjectionMatchSetUpdate) Validate() error {
10796	invalidParams := request.ErrInvalidParams{Context: "SqlInjectionMatchSetUpdate"}
10797	if s.Action == nil {
10798		invalidParams.Add(request.NewErrParamRequired("Action"))
10799	}
10800	if s.SqlInjectionMatchTuple == nil {
10801		invalidParams.Add(request.NewErrParamRequired("SqlInjectionMatchTuple"))
10802	}
10803	if s.SqlInjectionMatchTuple != nil {
10804		if err := s.SqlInjectionMatchTuple.Validate(); err != nil {
10805			invalidParams.AddNested("SqlInjectionMatchTuple", err.(request.ErrInvalidParams))
10806		}
10807	}
10808
10809	if invalidParams.Len() > 0 {
10810		return invalidParams
10811	}
10812	return nil
10813}
10814
10815// SetAction sets the Action field's value.
10816func (s *SqlInjectionMatchSetUpdate) SetAction(v string) *SqlInjectionMatchSetUpdate {
10817	s.Action = &v
10818	return s
10819}
10820
10821// SetSqlInjectionMatchTuple sets the SqlInjectionMatchTuple field's value.
10822func (s *SqlInjectionMatchSetUpdate) SetSqlInjectionMatchTuple(v *SqlInjectionMatchTuple) *SqlInjectionMatchSetUpdate {
10823	s.SqlInjectionMatchTuple = v
10824	return s
10825}
10826
10827// Specifies the part of a web request that you want AWS WAF to inspect for
10828// snippets of malicious SQL code and, if you want AWS WAF to inspect a header,
10829// the name of the header.
10830// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/SqlInjectionMatchTuple
10831type SqlInjectionMatchTuple struct {
10832	_ struct{} `type:"structure"`
10833
10834	// Specifies where in a web request to look for snippets of malicious SQL code.
10835	//
10836	// FieldToMatch is a required field
10837	FieldToMatch *FieldToMatch `type:"structure" required:"true"`
10838
10839	// Text transformations eliminate some of the unusual formatting that attackers
10840	// use in web requests in an effort to bypass AWS WAF. If you specify a transformation,
10841	// AWS WAF performs the transformation on FieldToMatch before inspecting a request
10842	// for a match.
10843	//
10844	// CMD_LINE
10845	//
10846	// When you're concerned that attackers are injecting an operating system commandline
10847	// command and using unusual formatting to disguise some or all of the command,
10848	// use this option to perform the following transformations:
10849	//
10850	//    * Delete the following characters: \ " ' ^
10851	//
10852	//    * Delete spaces before the following characters: / (
10853	//
10854	//    * Replace the following characters with a space: , ;
10855	//
10856	//    * Replace multiple spaces with one space
10857	//
10858	//    * Convert uppercase letters (A-Z) to lowercase (a-z)
10859	//
10860	// COMPRESS_WHITE_SPACE
10861	//
10862	// Use this option to replace the following characters with a space character
10863	// (decimal 32):
10864	//
10865	//    * \f, formfeed, decimal 12
10866	//
10867	//    * \t, tab, decimal 9
10868	//
10869	//    * \n, newline, decimal 10
10870	//
10871	//    * \r, carriage return, decimal 13
10872	//
10873	//    * \v, vertical tab, decimal 11
10874	//
10875	//    * non-breaking space, decimal 160
10876	//
10877	// COMPRESS_WHITE_SPACE also replaces multiple spaces with one space.
10878	//
10879	// HTML_ENTITY_DECODE
10880	//
10881	// Use this option to replace HTML-encoded characters with unencoded characters.
10882	// HTML_ENTITY_DECODE performs the following operations:
10883	//
10884	//    * Replaces (ampersand)quot; with "
10885	//
10886	//    * Replaces (ampersand)nbsp; with a non-breaking space, decimal 160
10887	//
10888	//    * Replaces (ampersand)lt; with a "less than" symbol
10889	//
10890	//    * Replaces (ampersand)gt; with >
10891	//
10892	//    * Replaces characters that are represented in hexadecimal format, (ampersand)#xhhhh;,
10893	//    with the corresponding characters
10894	//
10895	//    * Replaces characters that are represented in decimal format, (ampersand)#nnnn;,
10896	//    with the corresponding characters
10897	//
10898	// LOWERCASE
10899	//
10900	// Use this option to convert uppercase letters (A-Z) to lowercase (a-z).
10901	//
10902	// URL_DECODE
10903	//
10904	// Use this option to decode a URL-encoded value.
10905	//
10906	// NONE
10907	//
10908	// Specify NONE if you don't want to perform any text transformations.
10909	//
10910	// TextTransformation is a required field
10911	TextTransformation *string `type:"string" required:"true" enum:"TextTransformation"`
10912}
10913
10914// String returns the string representation
10915func (s SqlInjectionMatchTuple) String() string {
10916	return awsutil.Prettify(s)
10917}
10918
10919// GoString returns the string representation
10920func (s SqlInjectionMatchTuple) GoString() string {
10921	return s.String()
10922}
10923
10924// Validate inspects the fields of the type to determine if they are valid.
10925func (s *SqlInjectionMatchTuple) Validate() error {
10926	invalidParams := request.ErrInvalidParams{Context: "SqlInjectionMatchTuple"}
10927	if s.FieldToMatch == nil {
10928		invalidParams.Add(request.NewErrParamRequired("FieldToMatch"))
10929	}
10930	if s.TextTransformation == nil {
10931		invalidParams.Add(request.NewErrParamRequired("TextTransformation"))
10932	}
10933	if s.FieldToMatch != nil {
10934		if err := s.FieldToMatch.Validate(); err != nil {
10935			invalidParams.AddNested("FieldToMatch", err.(request.ErrInvalidParams))
10936		}
10937	}
10938
10939	if invalidParams.Len() > 0 {
10940		return invalidParams
10941	}
10942	return nil
10943}
10944
10945// SetFieldToMatch sets the FieldToMatch field's value.
10946func (s *SqlInjectionMatchTuple) SetFieldToMatch(v *FieldToMatch) *SqlInjectionMatchTuple {
10947	s.FieldToMatch = v
10948	return s
10949}
10950
10951// SetTextTransformation sets the TextTransformation field's value.
10952func (s *SqlInjectionMatchTuple) SetTextTransformation(v string) *SqlInjectionMatchTuple {
10953	s.TextTransformation = &v
10954	return s
10955}
10956
10957// In a GetSampledRequests request, the StartTime and EndTime objects specify
10958// the time range for which you want AWS WAF to return a sample of web requests.
10959//
10960// In a GetSampledRequests response, the StartTime and EndTime objects specify
10961// the time range for which AWS WAF actually returned a sample of web requests.
10962// AWS WAF gets the specified number of requests from among the first 5,000
10963// requests that your AWS resource receives during the specified time period.
10964// If your resource receives more than 5,000 requests during that period, AWS
10965// WAF stops sampling after the 5,000th request. In that case, EndTime is the
10966// time that AWS WAF received the 5,000th request.
10967// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/TimeWindow
10968type TimeWindow struct {
10969	_ struct{} `type:"structure"`
10970
10971	// The end of the time range from which you want GetSampledRequests to return
10972	// a sample of the requests that your AWS resource received. Specify the date
10973	// and time in the following format: "2016-09-27T14:50Z". You can specify any
10974	// time range in the previous three hours.
10975	//
10976	// EndTime is a required field
10977	EndTime *time.Time `type:"timestamp" timestampFormat:"unix" required:"true"`
10978
10979	// The beginning of the time range from which you want GetSampledRequests to
10980	// return a sample of the requests that your AWS resource received. Specify
10981	// the date and time in the following format: "2016-09-27T14:50Z". You can specify
10982	// any time range in the previous three hours.
10983	//
10984	// StartTime is a required field
10985	StartTime *time.Time `type:"timestamp" timestampFormat:"unix" required:"true"`
10986}
10987
10988// String returns the string representation
10989func (s TimeWindow) String() string {
10990	return awsutil.Prettify(s)
10991}
10992
10993// GoString returns the string representation
10994func (s TimeWindow) GoString() string {
10995	return s.String()
10996}
10997
10998// Validate inspects the fields of the type to determine if they are valid.
10999func (s *TimeWindow) Validate() error {
11000	invalidParams := request.ErrInvalidParams{Context: "TimeWindow"}
11001	if s.EndTime == nil {
11002		invalidParams.Add(request.NewErrParamRequired("EndTime"))
11003	}
11004	if s.StartTime == nil {
11005		invalidParams.Add(request.NewErrParamRequired("StartTime"))
11006	}
11007
11008	if invalidParams.Len() > 0 {
11009		return invalidParams
11010	}
11011	return nil
11012}
11013
11014// SetEndTime sets the EndTime field's value.
11015func (s *TimeWindow) SetEndTime(v time.Time) *TimeWindow {
11016	s.EndTime = &v
11017	return s
11018}
11019
11020// SetStartTime sets the StartTime field's value.
11021func (s *TimeWindow) SetStartTime(v time.Time) *TimeWindow {
11022	s.StartTime = &v
11023	return s
11024}
11025
11026// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateByteMatchSetRequest
11027type UpdateByteMatchSetInput struct {
11028	_ struct{} `type:"structure"`
11029
11030	// The ByteMatchSetId of the ByteMatchSet that you want to update. ByteMatchSetId
11031	// is returned by CreateByteMatchSet and by ListByteMatchSets.
11032	//
11033	// ByteMatchSetId is a required field
11034	ByteMatchSetId *string `min:"1" type:"string" required:"true"`
11035
11036	// The value returned by the most recent call to GetChangeToken.
11037	//
11038	// ChangeToken is a required field
11039	ChangeToken *string `min:"1" type:"string" required:"true"`
11040
11041	// An array of ByteMatchSetUpdate objects that you want to insert into or delete
11042	// from a ByteMatchSet. For more information, see the applicable data types:
11043	//
11044	//    * ByteMatchSetUpdate: Contains Action and ByteMatchTuple
11045	//
11046	//    * ByteMatchTuple: Contains FieldToMatch, PositionalConstraint, TargetString,
11047	//    and TextTransformation
11048	//
11049	//    * FieldToMatch: Contains Data and Type
11050	//
11051	// Updates is a required field
11052	Updates []*ByteMatchSetUpdate `type:"list" required:"true"`
11053}
11054
11055// String returns the string representation
11056func (s UpdateByteMatchSetInput) String() string {
11057	return awsutil.Prettify(s)
11058}
11059
11060// GoString returns the string representation
11061func (s UpdateByteMatchSetInput) GoString() string {
11062	return s.String()
11063}
11064
11065// Validate inspects the fields of the type to determine if they are valid.
11066func (s *UpdateByteMatchSetInput) Validate() error {
11067	invalidParams := request.ErrInvalidParams{Context: "UpdateByteMatchSetInput"}
11068	if s.ByteMatchSetId == nil {
11069		invalidParams.Add(request.NewErrParamRequired("ByteMatchSetId"))
11070	}
11071	if s.ByteMatchSetId != nil && len(*s.ByteMatchSetId) < 1 {
11072		invalidParams.Add(request.NewErrParamMinLen("ByteMatchSetId", 1))
11073	}
11074	if s.ChangeToken == nil {
11075		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
11076	}
11077	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
11078		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
11079	}
11080	if s.Updates == nil {
11081		invalidParams.Add(request.NewErrParamRequired("Updates"))
11082	}
11083	if s.Updates != nil {
11084		for i, v := range s.Updates {
11085			if v == nil {
11086				continue
11087			}
11088			if err := v.Validate(); err != nil {
11089				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Updates", i), err.(request.ErrInvalidParams))
11090			}
11091		}
11092	}
11093
11094	if invalidParams.Len() > 0 {
11095		return invalidParams
11096	}
11097	return nil
11098}
11099
11100// SetByteMatchSetId sets the ByteMatchSetId field's value.
11101func (s *UpdateByteMatchSetInput) SetByteMatchSetId(v string) *UpdateByteMatchSetInput {
11102	s.ByteMatchSetId = &v
11103	return s
11104}
11105
11106// SetChangeToken sets the ChangeToken field's value.
11107func (s *UpdateByteMatchSetInput) SetChangeToken(v string) *UpdateByteMatchSetInput {
11108	s.ChangeToken = &v
11109	return s
11110}
11111
11112// SetUpdates sets the Updates field's value.
11113func (s *UpdateByteMatchSetInput) SetUpdates(v []*ByteMatchSetUpdate) *UpdateByteMatchSetInput {
11114	s.Updates = v
11115	return s
11116}
11117
11118// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateByteMatchSetResponse
11119type UpdateByteMatchSetOutput struct {
11120	_ struct{} `type:"structure"`
11121
11122	// The ChangeToken that you used to submit the UpdateByteMatchSet request. You
11123	// can also use this value to query the status of the request. For more information,
11124	// see GetChangeTokenStatus.
11125	ChangeToken *string `min:"1" type:"string"`
11126}
11127
11128// String returns the string representation
11129func (s UpdateByteMatchSetOutput) String() string {
11130	return awsutil.Prettify(s)
11131}
11132
11133// GoString returns the string representation
11134func (s UpdateByteMatchSetOutput) GoString() string {
11135	return s.String()
11136}
11137
11138// SetChangeToken sets the ChangeToken field's value.
11139func (s *UpdateByteMatchSetOutput) SetChangeToken(v string) *UpdateByteMatchSetOutput {
11140	s.ChangeToken = &v
11141	return s
11142}
11143
11144// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateIPSetRequest
11145type UpdateIPSetInput struct {
11146	_ struct{} `type:"structure"`
11147
11148	// The value returned by the most recent call to GetChangeToken.
11149	//
11150	// ChangeToken is a required field
11151	ChangeToken *string `min:"1" type:"string" required:"true"`
11152
11153	// The IPSetId of the IPSet that you want to update. IPSetId is returned by
11154	// CreateIPSet and by ListIPSets.
11155	//
11156	// IPSetId is a required field
11157	IPSetId *string `min:"1" type:"string" required:"true"`
11158
11159	// An array of IPSetUpdate objects that you want to insert into or delete from
11160	// an IPSet. For more information, see the applicable data types:
11161	//
11162	//    * IPSetUpdate: Contains Action and IPSetDescriptor
11163	//
11164	//    * IPSetDescriptor: Contains Type and Value
11165	//
11166	// Updates is a required field
11167	Updates []*IPSetUpdate `type:"list" required:"true"`
11168}
11169
11170// String returns the string representation
11171func (s UpdateIPSetInput) String() string {
11172	return awsutil.Prettify(s)
11173}
11174
11175// GoString returns the string representation
11176func (s UpdateIPSetInput) GoString() string {
11177	return s.String()
11178}
11179
11180// Validate inspects the fields of the type to determine if they are valid.
11181func (s *UpdateIPSetInput) Validate() error {
11182	invalidParams := request.ErrInvalidParams{Context: "UpdateIPSetInput"}
11183	if s.ChangeToken == nil {
11184		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
11185	}
11186	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
11187		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
11188	}
11189	if s.IPSetId == nil {
11190		invalidParams.Add(request.NewErrParamRequired("IPSetId"))
11191	}
11192	if s.IPSetId != nil && len(*s.IPSetId) < 1 {
11193		invalidParams.Add(request.NewErrParamMinLen("IPSetId", 1))
11194	}
11195	if s.Updates == nil {
11196		invalidParams.Add(request.NewErrParamRequired("Updates"))
11197	}
11198	if s.Updates != nil {
11199		for i, v := range s.Updates {
11200			if v == nil {
11201				continue
11202			}
11203			if err := v.Validate(); err != nil {
11204				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Updates", i), err.(request.ErrInvalidParams))
11205			}
11206		}
11207	}
11208
11209	if invalidParams.Len() > 0 {
11210		return invalidParams
11211	}
11212	return nil
11213}
11214
11215// SetChangeToken sets the ChangeToken field's value.
11216func (s *UpdateIPSetInput) SetChangeToken(v string) *UpdateIPSetInput {
11217	s.ChangeToken = &v
11218	return s
11219}
11220
11221// SetIPSetId sets the IPSetId field's value.
11222func (s *UpdateIPSetInput) SetIPSetId(v string) *UpdateIPSetInput {
11223	s.IPSetId = &v
11224	return s
11225}
11226
11227// SetUpdates sets the Updates field's value.
11228func (s *UpdateIPSetInput) SetUpdates(v []*IPSetUpdate) *UpdateIPSetInput {
11229	s.Updates = v
11230	return s
11231}
11232
11233// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateIPSetResponse
11234type UpdateIPSetOutput struct {
11235	_ struct{} `type:"structure"`
11236
11237	// The ChangeToken that you used to submit the UpdateIPSet request. You can
11238	// also use this value to query the status of the request. For more information,
11239	// see GetChangeTokenStatus.
11240	ChangeToken *string `min:"1" type:"string"`
11241}
11242
11243// String returns the string representation
11244func (s UpdateIPSetOutput) String() string {
11245	return awsutil.Prettify(s)
11246}
11247
11248// GoString returns the string representation
11249func (s UpdateIPSetOutput) GoString() string {
11250	return s.String()
11251}
11252
11253// SetChangeToken sets the ChangeToken field's value.
11254func (s *UpdateIPSetOutput) SetChangeToken(v string) *UpdateIPSetOutput {
11255	s.ChangeToken = &v
11256	return s
11257}
11258
11259// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateRateBasedRuleRequest
11260type UpdateRateBasedRuleInput struct {
11261	_ struct{} `type:"structure"`
11262
11263	// The value returned by the most recent call to GetChangeToken.
11264	//
11265	// ChangeToken is a required field
11266	ChangeToken *string `min:"1" type:"string" required:"true"`
11267
11268	// The maximum number of requests, which have an identical value in the field
11269	// specified by the RateKey, allowed in a five-minute period. If the number
11270	// of requests exceeds the RateLimit and the other predicates specified in the
11271	// rule are also met, AWS WAF triggers the action that is specified for this
11272	// rule.
11273	//
11274	// RateLimit is a required field
11275	RateLimit *int64 `min:"2000" type:"long" required:"true"`
11276
11277	// The RuleId of the RateBasedRule that you want to update. RuleId is returned
11278	// by CreateRateBasedRule and by ListRateBasedRules.
11279	//
11280	// RuleId is a required field
11281	RuleId *string `min:"1" type:"string" required:"true"`
11282
11283	// An array of RuleUpdate objects that you want to insert into or delete from
11284	// a RateBasedRule.
11285	//
11286	// Updates is a required field
11287	Updates []*RuleUpdate `type:"list" required:"true"`
11288}
11289
11290// String returns the string representation
11291func (s UpdateRateBasedRuleInput) String() string {
11292	return awsutil.Prettify(s)
11293}
11294
11295// GoString returns the string representation
11296func (s UpdateRateBasedRuleInput) GoString() string {
11297	return s.String()
11298}
11299
11300// Validate inspects the fields of the type to determine if they are valid.
11301func (s *UpdateRateBasedRuleInput) Validate() error {
11302	invalidParams := request.ErrInvalidParams{Context: "UpdateRateBasedRuleInput"}
11303	if s.ChangeToken == nil {
11304		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
11305	}
11306	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
11307		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
11308	}
11309	if s.RateLimit == nil {
11310		invalidParams.Add(request.NewErrParamRequired("RateLimit"))
11311	}
11312	if s.RateLimit != nil && *s.RateLimit < 2000 {
11313		invalidParams.Add(request.NewErrParamMinValue("RateLimit", 2000))
11314	}
11315	if s.RuleId == nil {
11316		invalidParams.Add(request.NewErrParamRequired("RuleId"))
11317	}
11318	if s.RuleId != nil && len(*s.RuleId) < 1 {
11319		invalidParams.Add(request.NewErrParamMinLen("RuleId", 1))
11320	}
11321	if s.Updates == nil {
11322		invalidParams.Add(request.NewErrParamRequired("Updates"))
11323	}
11324	if s.Updates != nil {
11325		for i, v := range s.Updates {
11326			if v == nil {
11327				continue
11328			}
11329			if err := v.Validate(); err != nil {
11330				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Updates", i), err.(request.ErrInvalidParams))
11331			}
11332		}
11333	}
11334
11335	if invalidParams.Len() > 0 {
11336		return invalidParams
11337	}
11338	return nil
11339}
11340
11341// SetChangeToken sets the ChangeToken field's value.
11342func (s *UpdateRateBasedRuleInput) SetChangeToken(v string) *UpdateRateBasedRuleInput {
11343	s.ChangeToken = &v
11344	return s
11345}
11346
11347// SetRateLimit sets the RateLimit field's value.
11348func (s *UpdateRateBasedRuleInput) SetRateLimit(v int64) *UpdateRateBasedRuleInput {
11349	s.RateLimit = &v
11350	return s
11351}
11352
11353// SetRuleId sets the RuleId field's value.
11354func (s *UpdateRateBasedRuleInput) SetRuleId(v string) *UpdateRateBasedRuleInput {
11355	s.RuleId = &v
11356	return s
11357}
11358
11359// SetUpdates sets the Updates field's value.
11360func (s *UpdateRateBasedRuleInput) SetUpdates(v []*RuleUpdate) *UpdateRateBasedRuleInput {
11361	s.Updates = v
11362	return s
11363}
11364
11365// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateRateBasedRuleResponse
11366type UpdateRateBasedRuleOutput struct {
11367	_ struct{} `type:"structure"`
11368
11369	// The ChangeToken that you used to submit the UpdateRateBasedRule request.
11370	// You can also use this value to query the status of the request. For more
11371	// information, see GetChangeTokenStatus.
11372	ChangeToken *string `min:"1" type:"string"`
11373}
11374
11375// String returns the string representation
11376func (s UpdateRateBasedRuleOutput) String() string {
11377	return awsutil.Prettify(s)
11378}
11379
11380// GoString returns the string representation
11381func (s UpdateRateBasedRuleOutput) GoString() string {
11382	return s.String()
11383}
11384
11385// SetChangeToken sets the ChangeToken field's value.
11386func (s *UpdateRateBasedRuleOutput) SetChangeToken(v string) *UpdateRateBasedRuleOutput {
11387	s.ChangeToken = &v
11388	return s
11389}
11390
11391// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateRuleRequest
11392type UpdateRuleInput struct {
11393	_ struct{} `type:"structure"`
11394
11395	// The value returned by the most recent call to GetChangeToken.
11396	//
11397	// ChangeToken is a required field
11398	ChangeToken *string `min:"1" type:"string" required:"true"`
11399
11400	// The RuleId of the Rule that you want to update. RuleId is returned by CreateRule
11401	// and by ListRules.
11402	//
11403	// RuleId is a required field
11404	RuleId *string `min:"1" type:"string" required:"true"`
11405
11406	// An array of RuleUpdate objects that you want to insert into or delete from
11407	// a Rule. For more information, see the applicable data types:
11408	//
11409	//    * RuleUpdate: Contains Action and Predicate
11410	//
11411	//    * Predicate: Contains DataId, Negated, and Type
11412	//
11413	//    * FieldToMatch: Contains Data and Type
11414	//
11415	// Updates is a required field
11416	Updates []*RuleUpdate `type:"list" required:"true"`
11417}
11418
11419// String returns the string representation
11420func (s UpdateRuleInput) String() string {
11421	return awsutil.Prettify(s)
11422}
11423
11424// GoString returns the string representation
11425func (s UpdateRuleInput) GoString() string {
11426	return s.String()
11427}
11428
11429// Validate inspects the fields of the type to determine if they are valid.
11430func (s *UpdateRuleInput) Validate() error {
11431	invalidParams := request.ErrInvalidParams{Context: "UpdateRuleInput"}
11432	if s.ChangeToken == nil {
11433		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
11434	}
11435	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
11436		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
11437	}
11438	if s.RuleId == nil {
11439		invalidParams.Add(request.NewErrParamRequired("RuleId"))
11440	}
11441	if s.RuleId != nil && len(*s.RuleId) < 1 {
11442		invalidParams.Add(request.NewErrParamMinLen("RuleId", 1))
11443	}
11444	if s.Updates == nil {
11445		invalidParams.Add(request.NewErrParamRequired("Updates"))
11446	}
11447	if s.Updates != nil {
11448		for i, v := range s.Updates {
11449			if v == nil {
11450				continue
11451			}
11452			if err := v.Validate(); err != nil {
11453				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Updates", i), err.(request.ErrInvalidParams))
11454			}
11455		}
11456	}
11457
11458	if invalidParams.Len() > 0 {
11459		return invalidParams
11460	}
11461	return nil
11462}
11463
11464// SetChangeToken sets the ChangeToken field's value.
11465func (s *UpdateRuleInput) SetChangeToken(v string) *UpdateRuleInput {
11466	s.ChangeToken = &v
11467	return s
11468}
11469
11470// SetRuleId sets the RuleId field's value.
11471func (s *UpdateRuleInput) SetRuleId(v string) *UpdateRuleInput {
11472	s.RuleId = &v
11473	return s
11474}
11475
11476// SetUpdates sets the Updates field's value.
11477func (s *UpdateRuleInput) SetUpdates(v []*RuleUpdate) *UpdateRuleInput {
11478	s.Updates = v
11479	return s
11480}
11481
11482// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateRuleResponse
11483type UpdateRuleOutput struct {
11484	_ struct{} `type:"structure"`
11485
11486	// The ChangeToken that you used to submit the UpdateRule request. You can also
11487	// use this value to query the status of the request. For more information,
11488	// see GetChangeTokenStatus.
11489	ChangeToken *string `min:"1" type:"string"`
11490}
11491
11492// String returns the string representation
11493func (s UpdateRuleOutput) String() string {
11494	return awsutil.Prettify(s)
11495}
11496
11497// GoString returns the string representation
11498func (s UpdateRuleOutput) GoString() string {
11499	return s.String()
11500}
11501
11502// SetChangeToken sets the ChangeToken field's value.
11503func (s *UpdateRuleOutput) SetChangeToken(v string) *UpdateRuleOutput {
11504	s.ChangeToken = &v
11505	return s
11506}
11507
11508// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateSizeConstraintSetRequest
11509type UpdateSizeConstraintSetInput struct {
11510	_ struct{} `type:"structure"`
11511
11512	// The value returned by the most recent call to GetChangeToken.
11513	//
11514	// ChangeToken is a required field
11515	ChangeToken *string `min:"1" type:"string" required:"true"`
11516
11517	// The SizeConstraintSetId of the SizeConstraintSet that you want to update.
11518	// SizeConstraintSetId is returned by CreateSizeConstraintSet and by ListSizeConstraintSets.
11519	//
11520	// SizeConstraintSetId is a required field
11521	SizeConstraintSetId *string `min:"1" type:"string" required:"true"`
11522
11523	// An array of SizeConstraintSetUpdate objects that you want to insert into
11524	// or delete from a SizeConstraintSet. For more information, see the applicable
11525	// data types:
11526	//
11527	//    * SizeConstraintSetUpdate: Contains Action and SizeConstraint
11528	//
11529	//    * SizeConstraint: Contains FieldToMatch, TextTransformation, ComparisonOperator,
11530	//    and Size
11531	//
11532	//    * FieldToMatch: Contains Data and Type
11533	//
11534	// Updates is a required field
11535	Updates []*SizeConstraintSetUpdate `type:"list" required:"true"`
11536}
11537
11538// String returns the string representation
11539func (s UpdateSizeConstraintSetInput) String() string {
11540	return awsutil.Prettify(s)
11541}
11542
11543// GoString returns the string representation
11544func (s UpdateSizeConstraintSetInput) GoString() string {
11545	return s.String()
11546}
11547
11548// Validate inspects the fields of the type to determine if they are valid.
11549func (s *UpdateSizeConstraintSetInput) Validate() error {
11550	invalidParams := request.ErrInvalidParams{Context: "UpdateSizeConstraintSetInput"}
11551	if s.ChangeToken == nil {
11552		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
11553	}
11554	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
11555		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
11556	}
11557	if s.SizeConstraintSetId == nil {
11558		invalidParams.Add(request.NewErrParamRequired("SizeConstraintSetId"))
11559	}
11560	if s.SizeConstraintSetId != nil && len(*s.SizeConstraintSetId) < 1 {
11561		invalidParams.Add(request.NewErrParamMinLen("SizeConstraintSetId", 1))
11562	}
11563	if s.Updates == nil {
11564		invalidParams.Add(request.NewErrParamRequired("Updates"))
11565	}
11566	if s.Updates != nil {
11567		for i, v := range s.Updates {
11568			if v == nil {
11569				continue
11570			}
11571			if err := v.Validate(); err != nil {
11572				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Updates", i), err.(request.ErrInvalidParams))
11573			}
11574		}
11575	}
11576
11577	if invalidParams.Len() > 0 {
11578		return invalidParams
11579	}
11580	return nil
11581}
11582
11583// SetChangeToken sets the ChangeToken field's value.
11584func (s *UpdateSizeConstraintSetInput) SetChangeToken(v string) *UpdateSizeConstraintSetInput {
11585	s.ChangeToken = &v
11586	return s
11587}
11588
11589// SetSizeConstraintSetId sets the SizeConstraintSetId field's value.
11590func (s *UpdateSizeConstraintSetInput) SetSizeConstraintSetId(v string) *UpdateSizeConstraintSetInput {
11591	s.SizeConstraintSetId = &v
11592	return s
11593}
11594
11595// SetUpdates sets the Updates field's value.
11596func (s *UpdateSizeConstraintSetInput) SetUpdates(v []*SizeConstraintSetUpdate) *UpdateSizeConstraintSetInput {
11597	s.Updates = v
11598	return s
11599}
11600
11601// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateSizeConstraintSetResponse
11602type UpdateSizeConstraintSetOutput struct {
11603	_ struct{} `type:"structure"`
11604
11605	// The ChangeToken that you used to submit the UpdateSizeConstraintSet request.
11606	// You can also use this value to query the status of the request. For more
11607	// information, see GetChangeTokenStatus.
11608	ChangeToken *string `min:"1" type:"string"`
11609}
11610
11611// String returns the string representation
11612func (s UpdateSizeConstraintSetOutput) String() string {
11613	return awsutil.Prettify(s)
11614}
11615
11616// GoString returns the string representation
11617func (s UpdateSizeConstraintSetOutput) GoString() string {
11618	return s.String()
11619}
11620
11621// SetChangeToken sets the ChangeToken field's value.
11622func (s *UpdateSizeConstraintSetOutput) SetChangeToken(v string) *UpdateSizeConstraintSetOutput {
11623	s.ChangeToken = &v
11624	return s
11625}
11626
11627// A request to update a SqlInjectionMatchSet.
11628// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateSqlInjectionMatchSetRequest
11629type UpdateSqlInjectionMatchSetInput struct {
11630	_ struct{} `type:"structure"`
11631
11632	// The value returned by the most recent call to GetChangeToken.
11633	//
11634	// ChangeToken is a required field
11635	ChangeToken *string `min:"1" type:"string" required:"true"`
11636
11637	// The SqlInjectionMatchSetId of the SqlInjectionMatchSet that you want to update.
11638	// SqlInjectionMatchSetId is returned by CreateSqlInjectionMatchSet and by ListSqlInjectionMatchSets.
11639	//
11640	// SqlInjectionMatchSetId is a required field
11641	SqlInjectionMatchSetId *string `min:"1" type:"string" required:"true"`
11642
11643	// An array of SqlInjectionMatchSetUpdate objects that you want to insert into
11644	// or delete from a SqlInjectionMatchSet. For more information, see the applicable
11645	// data types:
11646	//
11647	//    * SqlInjectionMatchSetUpdate: Contains Action and SqlInjectionMatchTuple
11648	//
11649	//    * SqlInjectionMatchTuple: Contains FieldToMatch and TextTransformation
11650	//
11651	//    * FieldToMatch: Contains Data and Type
11652	//
11653	// Updates is a required field
11654	Updates []*SqlInjectionMatchSetUpdate `type:"list" required:"true"`
11655}
11656
11657// String returns the string representation
11658func (s UpdateSqlInjectionMatchSetInput) String() string {
11659	return awsutil.Prettify(s)
11660}
11661
11662// GoString returns the string representation
11663func (s UpdateSqlInjectionMatchSetInput) GoString() string {
11664	return s.String()
11665}
11666
11667// Validate inspects the fields of the type to determine if they are valid.
11668func (s *UpdateSqlInjectionMatchSetInput) Validate() error {
11669	invalidParams := request.ErrInvalidParams{Context: "UpdateSqlInjectionMatchSetInput"}
11670	if s.ChangeToken == nil {
11671		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
11672	}
11673	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
11674		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
11675	}
11676	if s.SqlInjectionMatchSetId == nil {
11677		invalidParams.Add(request.NewErrParamRequired("SqlInjectionMatchSetId"))
11678	}
11679	if s.SqlInjectionMatchSetId != nil && len(*s.SqlInjectionMatchSetId) < 1 {
11680		invalidParams.Add(request.NewErrParamMinLen("SqlInjectionMatchSetId", 1))
11681	}
11682	if s.Updates == nil {
11683		invalidParams.Add(request.NewErrParamRequired("Updates"))
11684	}
11685	if s.Updates != nil {
11686		for i, v := range s.Updates {
11687			if v == nil {
11688				continue
11689			}
11690			if err := v.Validate(); err != nil {
11691				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Updates", i), err.(request.ErrInvalidParams))
11692			}
11693		}
11694	}
11695
11696	if invalidParams.Len() > 0 {
11697		return invalidParams
11698	}
11699	return nil
11700}
11701
11702// SetChangeToken sets the ChangeToken field's value.
11703func (s *UpdateSqlInjectionMatchSetInput) SetChangeToken(v string) *UpdateSqlInjectionMatchSetInput {
11704	s.ChangeToken = &v
11705	return s
11706}
11707
11708// SetSqlInjectionMatchSetId sets the SqlInjectionMatchSetId field's value.
11709func (s *UpdateSqlInjectionMatchSetInput) SetSqlInjectionMatchSetId(v string) *UpdateSqlInjectionMatchSetInput {
11710	s.SqlInjectionMatchSetId = &v
11711	return s
11712}
11713
11714// SetUpdates sets the Updates field's value.
11715func (s *UpdateSqlInjectionMatchSetInput) SetUpdates(v []*SqlInjectionMatchSetUpdate) *UpdateSqlInjectionMatchSetInput {
11716	s.Updates = v
11717	return s
11718}
11719
11720// The response to an UpdateSqlInjectionMatchSets request.
11721// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateSqlInjectionMatchSetResponse
11722type UpdateSqlInjectionMatchSetOutput struct {
11723	_ struct{} `type:"structure"`
11724
11725	// The ChangeToken that you used to submit the UpdateSqlInjectionMatchSet request.
11726	// You can also use this value to query the status of the request. For more
11727	// information, see GetChangeTokenStatus.
11728	ChangeToken *string `min:"1" type:"string"`
11729}
11730
11731// String returns the string representation
11732func (s UpdateSqlInjectionMatchSetOutput) String() string {
11733	return awsutil.Prettify(s)
11734}
11735
11736// GoString returns the string representation
11737func (s UpdateSqlInjectionMatchSetOutput) GoString() string {
11738	return s.String()
11739}
11740
11741// SetChangeToken sets the ChangeToken field's value.
11742func (s *UpdateSqlInjectionMatchSetOutput) SetChangeToken(v string) *UpdateSqlInjectionMatchSetOutput {
11743	s.ChangeToken = &v
11744	return s
11745}
11746
11747// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateWebACLRequest
11748type UpdateWebACLInput struct {
11749	_ struct{} `type:"structure"`
11750
11751	// The value returned by the most recent call to GetChangeToken.
11752	//
11753	// ChangeToken is a required field
11754	ChangeToken *string `min:"1" type:"string" required:"true"`
11755
11756	// A default action for the web ACL, either ALLOW or BLOCK. AWS WAF performs
11757	// the default action if a request doesn't match the criteria in any of the
11758	// rules in a web ACL.
11759	DefaultAction *WafAction `type:"structure"`
11760
11761	// An array of updates to make to the WebACL.
11762	//
11763	// An array of WebACLUpdate objects that you want to insert into or delete from
11764	// a WebACL. For more information, see the applicable data types:
11765	//
11766	//    * WebACLUpdate: Contains Action and ActivatedRule
11767	//
11768	//    * ActivatedRule: Contains Action, Priority, RuleId, and Type
11769	//
11770	//    * WafAction: Contains Type
11771	Updates []*WebACLUpdate `type:"list"`
11772
11773	// The WebACLId of the WebACL that you want to update. WebACLId is returned
11774	// by CreateWebACL and by ListWebACLs.
11775	//
11776	// WebACLId is a required field
11777	WebACLId *string `min:"1" type:"string" required:"true"`
11778}
11779
11780// String returns the string representation
11781func (s UpdateWebACLInput) String() string {
11782	return awsutil.Prettify(s)
11783}
11784
11785// GoString returns the string representation
11786func (s UpdateWebACLInput) GoString() string {
11787	return s.String()
11788}
11789
11790// Validate inspects the fields of the type to determine if they are valid.
11791func (s *UpdateWebACLInput) Validate() error {
11792	invalidParams := request.ErrInvalidParams{Context: "UpdateWebACLInput"}
11793	if s.ChangeToken == nil {
11794		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
11795	}
11796	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
11797		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
11798	}
11799	if s.WebACLId == nil {
11800		invalidParams.Add(request.NewErrParamRequired("WebACLId"))
11801	}
11802	if s.WebACLId != nil && len(*s.WebACLId) < 1 {
11803		invalidParams.Add(request.NewErrParamMinLen("WebACLId", 1))
11804	}
11805	if s.DefaultAction != nil {
11806		if err := s.DefaultAction.Validate(); err != nil {
11807			invalidParams.AddNested("DefaultAction", err.(request.ErrInvalidParams))
11808		}
11809	}
11810	if s.Updates != nil {
11811		for i, v := range s.Updates {
11812			if v == nil {
11813				continue
11814			}
11815			if err := v.Validate(); err != nil {
11816				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Updates", i), err.(request.ErrInvalidParams))
11817			}
11818		}
11819	}
11820
11821	if invalidParams.Len() > 0 {
11822		return invalidParams
11823	}
11824	return nil
11825}
11826
11827// SetChangeToken sets the ChangeToken field's value.
11828func (s *UpdateWebACLInput) SetChangeToken(v string) *UpdateWebACLInput {
11829	s.ChangeToken = &v
11830	return s
11831}
11832
11833// SetDefaultAction sets the DefaultAction field's value.
11834func (s *UpdateWebACLInput) SetDefaultAction(v *WafAction) *UpdateWebACLInput {
11835	s.DefaultAction = v
11836	return s
11837}
11838
11839// SetUpdates sets the Updates field's value.
11840func (s *UpdateWebACLInput) SetUpdates(v []*WebACLUpdate) *UpdateWebACLInput {
11841	s.Updates = v
11842	return s
11843}
11844
11845// SetWebACLId sets the WebACLId field's value.
11846func (s *UpdateWebACLInput) SetWebACLId(v string) *UpdateWebACLInput {
11847	s.WebACLId = &v
11848	return s
11849}
11850
11851// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateWebACLResponse
11852type UpdateWebACLOutput struct {
11853	_ struct{} `type:"structure"`
11854
11855	// The ChangeToken that you used to submit the UpdateWebACL request. You can
11856	// also use this value to query the status of the request. For more information,
11857	// see GetChangeTokenStatus.
11858	ChangeToken *string `min:"1" type:"string"`
11859}
11860
11861// String returns the string representation
11862func (s UpdateWebACLOutput) String() string {
11863	return awsutil.Prettify(s)
11864}
11865
11866// GoString returns the string representation
11867func (s UpdateWebACLOutput) GoString() string {
11868	return s.String()
11869}
11870
11871// SetChangeToken sets the ChangeToken field's value.
11872func (s *UpdateWebACLOutput) SetChangeToken(v string) *UpdateWebACLOutput {
11873	s.ChangeToken = &v
11874	return s
11875}
11876
11877// A request to update an XssMatchSet.
11878// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateXssMatchSetRequest
11879type UpdateXssMatchSetInput struct {
11880	_ struct{} `type:"structure"`
11881
11882	// The value returned by the most recent call to GetChangeToken.
11883	//
11884	// ChangeToken is a required field
11885	ChangeToken *string `min:"1" type:"string" required:"true"`
11886
11887	// An array of XssMatchSetUpdate objects that you want to insert into or delete
11888	// from a XssMatchSet. For more information, see the applicable data types:
11889	//
11890	//    * XssMatchSetUpdate: Contains Action and XssMatchTuple
11891	//
11892	//    * XssMatchTuple: Contains FieldToMatch and TextTransformation
11893	//
11894	//    * FieldToMatch: Contains Data and Type
11895	//
11896	// Updates is a required field
11897	Updates []*XssMatchSetUpdate `type:"list" required:"true"`
11898
11899	// The XssMatchSetId of the XssMatchSet that you want to update. XssMatchSetId
11900	// is returned by CreateXssMatchSet and by ListXssMatchSets.
11901	//
11902	// XssMatchSetId is a required field
11903	XssMatchSetId *string `min:"1" type:"string" required:"true"`
11904}
11905
11906// String returns the string representation
11907func (s UpdateXssMatchSetInput) String() string {
11908	return awsutil.Prettify(s)
11909}
11910
11911// GoString returns the string representation
11912func (s UpdateXssMatchSetInput) GoString() string {
11913	return s.String()
11914}
11915
11916// Validate inspects the fields of the type to determine if they are valid.
11917func (s *UpdateXssMatchSetInput) Validate() error {
11918	invalidParams := request.ErrInvalidParams{Context: "UpdateXssMatchSetInput"}
11919	if s.ChangeToken == nil {
11920		invalidParams.Add(request.NewErrParamRequired("ChangeToken"))
11921	}
11922	if s.ChangeToken != nil && len(*s.ChangeToken) < 1 {
11923		invalidParams.Add(request.NewErrParamMinLen("ChangeToken", 1))
11924	}
11925	if s.Updates == nil {
11926		invalidParams.Add(request.NewErrParamRequired("Updates"))
11927	}
11928	if s.XssMatchSetId == nil {
11929		invalidParams.Add(request.NewErrParamRequired("XssMatchSetId"))
11930	}
11931	if s.XssMatchSetId != nil && len(*s.XssMatchSetId) < 1 {
11932		invalidParams.Add(request.NewErrParamMinLen("XssMatchSetId", 1))
11933	}
11934	if s.Updates != nil {
11935		for i, v := range s.Updates {
11936			if v == nil {
11937				continue
11938			}
11939			if err := v.Validate(); err != nil {
11940				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Updates", i), err.(request.ErrInvalidParams))
11941			}
11942		}
11943	}
11944
11945	if invalidParams.Len() > 0 {
11946		return invalidParams
11947	}
11948	return nil
11949}
11950
11951// SetChangeToken sets the ChangeToken field's value.
11952func (s *UpdateXssMatchSetInput) SetChangeToken(v string) *UpdateXssMatchSetInput {
11953	s.ChangeToken = &v
11954	return s
11955}
11956
11957// SetUpdates sets the Updates field's value.
11958func (s *UpdateXssMatchSetInput) SetUpdates(v []*XssMatchSetUpdate) *UpdateXssMatchSetInput {
11959	s.Updates = v
11960	return s
11961}
11962
11963// SetXssMatchSetId sets the XssMatchSetId field's value.
11964func (s *UpdateXssMatchSetInput) SetXssMatchSetId(v string) *UpdateXssMatchSetInput {
11965	s.XssMatchSetId = &v
11966	return s
11967}
11968
11969// The response to an UpdateXssMatchSets request.
11970// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateXssMatchSetResponse
11971type UpdateXssMatchSetOutput struct {
11972	_ struct{} `type:"structure"`
11973
11974	// The ChangeToken that you used to submit the UpdateXssMatchSet request. You
11975	// can also use this value to query the status of the request. For more information,
11976	// see GetChangeTokenStatus.
11977	ChangeToken *string `min:"1" type:"string"`
11978}
11979
11980// String returns the string representation
11981func (s UpdateXssMatchSetOutput) String() string {
11982	return awsutil.Prettify(s)
11983}
11984
11985// GoString returns the string representation
11986func (s UpdateXssMatchSetOutput) GoString() string {
11987	return s.String()
11988}
11989
11990// SetChangeToken sets the ChangeToken field's value.
11991func (s *UpdateXssMatchSetOutput) SetChangeToken(v string) *UpdateXssMatchSetOutput {
11992	s.ChangeToken = &v
11993	return s
11994}
11995
11996// For the action that is associated with a rule in a WebACL, specifies the
11997// action that you want AWS WAF to perform when a web request matches all of
11998// the conditions in a rule. For the default action in a WebACL, specifies the
11999// action that you want AWS WAF to take when a web request doesn't match all
12000// of the conditions in any of the rules in a WebACL.
12001// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/WafAction
12002type WafAction struct {
12003	_ struct{} `type:"structure"`
12004
12005	// Specifies how you want AWS WAF to respond to requests that match the settings
12006	// in a Rule. Valid settings include the following:
12007	//
12008	//    * ALLOW: AWS WAF allows requests
12009	//
12010	//    * BLOCK: AWS WAF blocks requests
12011	//
12012	//    * COUNT: AWS WAF increments a counter of the requests that match all of
12013	//    the conditions in the rule. AWS WAF then continues to inspect the web
12014	//    request based on the remaining rules in the web ACL. You can't specify
12015	//    COUNT for the default action for a WebACL.
12016	//
12017	// Type is a required field
12018	Type *string `type:"string" required:"true" enum:"WafActionType"`
12019}
12020
12021// String returns the string representation
12022func (s WafAction) String() string {
12023	return awsutil.Prettify(s)
12024}
12025
12026// GoString returns the string representation
12027func (s WafAction) GoString() string {
12028	return s.String()
12029}
12030
12031// Validate inspects the fields of the type to determine if they are valid.
12032func (s *WafAction) Validate() error {
12033	invalidParams := request.ErrInvalidParams{Context: "WafAction"}
12034	if s.Type == nil {
12035		invalidParams.Add(request.NewErrParamRequired("Type"))
12036	}
12037
12038	if invalidParams.Len() > 0 {
12039		return invalidParams
12040	}
12041	return nil
12042}
12043
12044// SetType sets the Type field's value.
12045func (s *WafAction) SetType(v string) *WafAction {
12046	s.Type = &v
12047	return s
12048}
12049
12050// Contains the Rules that identify the requests that you want to allow, block,
12051// or count. In a WebACL, you also specify a default action (ALLOW or BLOCK),
12052// and the action for each Rule that you add to a WebACL, for example, block
12053// requests from specified IP addresses or block requests from specified referrers.
12054// You also associate the WebACL with a CloudFront distribution to identify
12055// the requests that you want AWS WAF to filter. If you add more than one Rule
12056// to a WebACL, a request needs to match only one of the specifications to be
12057// allowed, blocked, or counted. For more information, see UpdateWebACL.
12058// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/WebACL
12059type WebACL struct {
12060	_ struct{} `type:"structure"`
12061
12062	// The action to perform if none of the Rules contained in the WebACL match.
12063	// The action is specified by the WafAction object.
12064	//
12065	// DefaultAction is a required field
12066	DefaultAction *WafAction `type:"structure" required:"true"`
12067
12068	// A friendly name or description for the metrics for this WebACL. The name
12069	// can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't
12070	// contain whitespace. You can't change MetricName after you create the WebACL.
12071	MetricName *string `type:"string"`
12072
12073	// A friendly name or description of the WebACL. You can't change the name of
12074	// a WebACL after you create it.
12075	Name *string `min:"1" type:"string"`
12076
12077	// An array that contains the action for each Rule in a WebACL, the priority
12078	// of the Rule, and the ID of the Rule.
12079	//
12080	// Rules is a required field
12081	Rules []*ActivatedRule `type:"list" required:"true"`
12082
12083	// A unique identifier for a WebACL. You use WebACLId to get information about
12084	// a WebACL (see GetWebACL), update a WebACL (see UpdateWebACL), and delete
12085	// a WebACL from AWS WAF (see DeleteWebACL).
12086	//
12087	// WebACLId is returned by CreateWebACL and by ListWebACLs.
12088	//
12089	// WebACLId is a required field
12090	WebACLId *string `min:"1" type:"string" required:"true"`
12091}
12092
12093// String returns the string representation
12094func (s WebACL) String() string {
12095	return awsutil.Prettify(s)
12096}
12097
12098// GoString returns the string representation
12099func (s WebACL) GoString() string {
12100	return s.String()
12101}
12102
12103// SetDefaultAction sets the DefaultAction field's value.
12104func (s *WebACL) SetDefaultAction(v *WafAction) *WebACL {
12105	s.DefaultAction = v
12106	return s
12107}
12108
12109// SetMetricName sets the MetricName field's value.
12110func (s *WebACL) SetMetricName(v string) *WebACL {
12111	s.MetricName = &v
12112	return s
12113}
12114
12115// SetName sets the Name field's value.
12116func (s *WebACL) SetName(v string) *WebACL {
12117	s.Name = &v
12118	return s
12119}
12120
12121// SetRules sets the Rules field's value.
12122func (s *WebACL) SetRules(v []*ActivatedRule) *WebACL {
12123	s.Rules = v
12124	return s
12125}
12126
12127// SetWebACLId sets the WebACLId field's value.
12128func (s *WebACL) SetWebACLId(v string) *WebACL {
12129	s.WebACLId = &v
12130	return s
12131}
12132
12133// Contains the identifier and the name or description of the WebACL.
12134// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/WebACLSummary
12135type WebACLSummary struct {
12136	_ struct{} `type:"structure"`
12137
12138	// A friendly name or description of the WebACL. You can't change the name of
12139	// a WebACL after you create it.
12140	//
12141	// Name is a required field
12142	Name *string `min:"1" type:"string" required:"true"`
12143
12144	// A unique identifier for a WebACL. You use WebACLId to get information about
12145	// a WebACL (see GetWebACL), update a WebACL (see UpdateWebACL), and delete
12146	// a WebACL from AWS WAF (see DeleteWebACL).
12147	//
12148	// WebACLId is returned by CreateWebACL and by ListWebACLs.
12149	//
12150	// WebACLId is a required field
12151	WebACLId *string `min:"1" type:"string" required:"true"`
12152}
12153
12154// String returns the string representation
12155func (s WebACLSummary) String() string {
12156	return awsutil.Prettify(s)
12157}
12158
12159// GoString returns the string representation
12160func (s WebACLSummary) GoString() string {
12161	return s.String()
12162}
12163
12164// SetName sets the Name field's value.
12165func (s *WebACLSummary) SetName(v string) *WebACLSummary {
12166	s.Name = &v
12167	return s
12168}
12169
12170// SetWebACLId sets the WebACLId field's value.
12171func (s *WebACLSummary) SetWebACLId(v string) *WebACLSummary {
12172	s.WebACLId = &v
12173	return s
12174}
12175
12176// Specifies whether to insert a Rule into or delete a Rule from a WebACL.
12177// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/WebACLUpdate
12178type WebACLUpdate struct {
12179	_ struct{} `type:"structure"`
12180
12181	// Specifies whether to insert a Rule into or delete a Rule from a WebACL.
12182	//
12183	// Action is a required field
12184	Action *string `type:"string" required:"true" enum:"ChangeAction"`
12185
12186	// The ActivatedRule object in an UpdateWebACL request specifies a Rule that
12187	// you want to insert or delete, the priority of the Rule in the WebACL, and
12188	// the action that you want AWS WAF to take when a web request matches the Rule
12189	// (ALLOW, BLOCK, or COUNT).
12190	//
12191	// ActivatedRule is a required field
12192	ActivatedRule *ActivatedRule `type:"structure" required:"true"`
12193}
12194
12195// String returns the string representation
12196func (s WebACLUpdate) String() string {
12197	return awsutil.Prettify(s)
12198}
12199
12200// GoString returns the string representation
12201func (s WebACLUpdate) GoString() string {
12202	return s.String()
12203}
12204
12205// Validate inspects the fields of the type to determine if they are valid.
12206func (s *WebACLUpdate) Validate() error {
12207	invalidParams := request.ErrInvalidParams{Context: "WebACLUpdate"}
12208	if s.Action == nil {
12209		invalidParams.Add(request.NewErrParamRequired("Action"))
12210	}
12211	if s.ActivatedRule == nil {
12212		invalidParams.Add(request.NewErrParamRequired("ActivatedRule"))
12213	}
12214	if s.ActivatedRule != nil {
12215		if err := s.ActivatedRule.Validate(); err != nil {
12216			invalidParams.AddNested("ActivatedRule", err.(request.ErrInvalidParams))
12217		}
12218	}
12219
12220	if invalidParams.Len() > 0 {
12221		return invalidParams
12222	}
12223	return nil
12224}
12225
12226// SetAction sets the Action field's value.
12227func (s *WebACLUpdate) SetAction(v string) *WebACLUpdate {
12228	s.Action = &v
12229	return s
12230}
12231
12232// SetActivatedRule sets the ActivatedRule field's value.
12233func (s *WebACLUpdate) SetActivatedRule(v *ActivatedRule) *WebACLUpdate {
12234	s.ActivatedRule = v
12235	return s
12236}
12237
12238// A complex type that contains XssMatchTuple objects, which specify the parts
12239// of web requests that you want AWS WAF to inspect for cross-site scripting
12240// attacks and, if you want AWS WAF to inspect a header, the name of the header.
12241// If a XssMatchSet contains more than one XssMatchTuple object, a request needs
12242// to include cross-site scripting attacks in only one of the specified parts
12243// of the request to be considered a match.
12244// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/XssMatchSet
12245type XssMatchSet struct {
12246	_ struct{} `type:"structure"`
12247
12248	// The name, if any, of the XssMatchSet.
12249	Name *string `min:"1" type:"string"`
12250
12251	// A unique identifier for an XssMatchSet. You use XssMatchSetId to get information
12252	// about an XssMatchSet (see GetXssMatchSet), update an XssMatchSet (see UpdateXssMatchSet),
12253	// insert an XssMatchSet into a Rule or delete one from a Rule (see UpdateRule),
12254	// and delete an XssMatchSet from AWS WAF (see DeleteXssMatchSet).
12255	//
12256	// XssMatchSetId is returned by CreateXssMatchSet and by ListXssMatchSets.
12257	//
12258	// XssMatchSetId is a required field
12259	XssMatchSetId *string `min:"1" type:"string" required:"true"`
12260
12261	// Specifies the parts of web requests that you want to inspect for cross-site
12262	// scripting attacks.
12263	//
12264	// XssMatchTuples is a required field
12265	XssMatchTuples []*XssMatchTuple `type:"list" required:"true"`
12266}
12267
12268// String returns the string representation
12269func (s XssMatchSet) String() string {
12270	return awsutil.Prettify(s)
12271}
12272
12273// GoString returns the string representation
12274func (s XssMatchSet) GoString() string {
12275	return s.String()
12276}
12277
12278// SetName sets the Name field's value.
12279func (s *XssMatchSet) SetName(v string) *XssMatchSet {
12280	s.Name = &v
12281	return s
12282}
12283
12284// SetXssMatchSetId sets the XssMatchSetId field's value.
12285func (s *XssMatchSet) SetXssMatchSetId(v string) *XssMatchSet {
12286	s.XssMatchSetId = &v
12287	return s
12288}
12289
12290// SetXssMatchTuples sets the XssMatchTuples field's value.
12291func (s *XssMatchSet) SetXssMatchTuples(v []*XssMatchTuple) *XssMatchSet {
12292	s.XssMatchTuples = v
12293	return s
12294}
12295
12296// The Id and Name of an XssMatchSet.
12297// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/XssMatchSetSummary
12298type XssMatchSetSummary struct {
12299	_ struct{} `type:"structure"`
12300
12301	// The name of the XssMatchSet, if any, specified by Id.
12302	//
12303	// Name is a required field
12304	Name *string `min:"1" type:"string" required:"true"`
12305
12306	// A unique identifier for an XssMatchSet. You use XssMatchSetId to get information
12307	// about a XssMatchSet (see GetXssMatchSet), update an XssMatchSet (see UpdateXssMatchSet),
12308	// insert an XssMatchSet into a Rule or delete one from a Rule (see UpdateRule),
12309	// and delete an XssMatchSet from AWS WAF (see DeleteXssMatchSet).
12310	//
12311	// XssMatchSetId is returned by CreateXssMatchSet and by ListXssMatchSets.
12312	//
12313	// XssMatchSetId is a required field
12314	XssMatchSetId *string `min:"1" type:"string" required:"true"`
12315}
12316
12317// String returns the string representation
12318func (s XssMatchSetSummary) String() string {
12319	return awsutil.Prettify(s)
12320}
12321
12322// GoString returns the string representation
12323func (s XssMatchSetSummary) GoString() string {
12324	return s.String()
12325}
12326
12327// SetName sets the Name field's value.
12328func (s *XssMatchSetSummary) SetName(v string) *XssMatchSetSummary {
12329	s.Name = &v
12330	return s
12331}
12332
12333// SetXssMatchSetId sets the XssMatchSetId field's value.
12334func (s *XssMatchSetSummary) SetXssMatchSetId(v string) *XssMatchSetSummary {
12335	s.XssMatchSetId = &v
12336	return s
12337}
12338
12339// Specifies the part of a web request that you want to inspect for cross-site
12340// scripting attacks and indicates whether you want to add the specification
12341// to an XssMatchSet or delete it from an XssMatchSet.
12342// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/XssMatchSetUpdate
12343type XssMatchSetUpdate struct {
12344	_ struct{} `type:"structure"`
12345
12346	// Specify INSERT to add a XssMatchSetUpdate to an XssMatchSet. Use DELETE to
12347	// remove a XssMatchSetUpdate from an XssMatchSet.
12348	//
12349	// Action is a required field
12350	Action *string `type:"string" required:"true" enum:"ChangeAction"`
12351
12352	// Specifies the part of a web request that you want AWS WAF to inspect for
12353	// cross-site scripting attacks and, if you want AWS WAF to inspect a header,
12354	// the name of the header.
12355	//
12356	// XssMatchTuple is a required field
12357	XssMatchTuple *XssMatchTuple `type:"structure" required:"true"`
12358}
12359
12360// String returns the string representation
12361func (s XssMatchSetUpdate) String() string {
12362	return awsutil.Prettify(s)
12363}
12364
12365// GoString returns the string representation
12366func (s XssMatchSetUpdate) GoString() string {
12367	return s.String()
12368}
12369
12370// Validate inspects the fields of the type to determine if they are valid.
12371func (s *XssMatchSetUpdate) Validate() error {
12372	invalidParams := request.ErrInvalidParams{Context: "XssMatchSetUpdate"}
12373	if s.Action == nil {
12374		invalidParams.Add(request.NewErrParamRequired("Action"))
12375	}
12376	if s.XssMatchTuple == nil {
12377		invalidParams.Add(request.NewErrParamRequired("XssMatchTuple"))
12378	}
12379	if s.XssMatchTuple != nil {
12380		if err := s.XssMatchTuple.Validate(); err != nil {
12381			invalidParams.AddNested("XssMatchTuple", err.(request.ErrInvalidParams))
12382		}
12383	}
12384
12385	if invalidParams.Len() > 0 {
12386		return invalidParams
12387	}
12388	return nil
12389}
12390
12391// SetAction sets the Action field's value.
12392func (s *XssMatchSetUpdate) SetAction(v string) *XssMatchSetUpdate {
12393	s.Action = &v
12394	return s
12395}
12396
12397// SetXssMatchTuple sets the XssMatchTuple field's value.
12398func (s *XssMatchSetUpdate) SetXssMatchTuple(v *XssMatchTuple) *XssMatchSetUpdate {
12399	s.XssMatchTuple = v
12400	return s
12401}
12402
12403// Specifies the part of a web request that you want AWS WAF to inspect for
12404// cross-site scripting attacks and, if you want AWS WAF to inspect a header,
12405// the name of the header.
12406// Please also see https://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/XssMatchTuple
12407type XssMatchTuple struct {
12408	_ struct{} `type:"structure"`
12409
12410	// Specifies where in a web request to look for cross-site scripting attacks.
12411	//
12412	// FieldToMatch is a required field
12413	FieldToMatch *FieldToMatch `type:"structure" required:"true"`
12414
12415	// Text transformations eliminate some of the unusual formatting that attackers
12416	// use in web requests in an effort to bypass AWS WAF. If you specify a transformation,
12417	// AWS WAF performs the transformation on FieldToMatch before inspecting a request
12418	// for a match.
12419	//
12420	// CMD_LINE
12421	//
12422	// When you're concerned that attackers are injecting an operating system commandline
12423	// command and using unusual formatting to disguise some or all of the command,
12424	// use this option to perform the following transformations:
12425	//
12426	//    * Delete the following characters: \ " ' ^
12427	//
12428	//    * Delete spaces before the following characters: / (
12429	//
12430	//    * Replace the following characters with a space: , ;
12431	//
12432	//    * Replace multiple spaces with one space
12433	//
12434	//    * Convert uppercase letters (A-Z) to lowercase (a-z)
12435	//
12436	// COMPRESS_WHITE_SPACE
12437	//
12438	// Use this option to replace the following characters with a space character
12439	// (decimal 32):
12440	//
12441	//    * \f, formfeed, decimal 12
12442	//
12443	//    * \t, tab, decimal 9
12444	//
12445	//    * \n, newline, decimal 10
12446	//
12447	//    * \r, carriage return, decimal 13
12448	//
12449	//    * \v, vertical tab, decimal 11
12450	//
12451	//    * non-breaking space, decimal 160
12452	//
12453	// COMPRESS_WHITE_SPACE also replaces multiple spaces with one space.
12454	//
12455	// HTML_ENTITY_DECODE
12456	//
12457	// Use this option to replace HTML-encoded characters with unencoded characters.
12458	// HTML_ENTITY_DECODE performs the following operations:
12459	//
12460	//    * Replaces (ampersand)quot; with "
12461	//
12462	//    * Replaces (ampersand)nbsp; with a non-breaking space, decimal 160
12463	//
12464	//    * Replaces (ampersand)lt; with a "less than" symbol
12465	//
12466	//    * Replaces (ampersand)gt; with >
12467	//
12468	//    * Replaces characters that are represented in hexadecimal format, (ampersand)#xhhhh;,
12469	//    with the corresponding characters
12470	//
12471	//    * Replaces characters that are represented in decimal format, (ampersand)#nnnn;,
12472	//    with the corresponding characters
12473	//
12474	// LOWERCASE
12475	//
12476	// Use this option to convert uppercase letters (A-Z) to lowercase (a-z).
12477	//
12478	// URL_DECODE
12479	//
12480	// Use this option to decode a URL-encoded value.
12481	//
12482	// NONE
12483	//
12484	// Specify NONE if you don't want to perform any text transformations.
12485	//
12486	// TextTransformation is a required field
12487	TextTransformation *string `type:"string" required:"true" enum:"TextTransformation"`
12488}
12489
12490// String returns the string representation
12491func (s XssMatchTuple) String() string {
12492	return awsutil.Prettify(s)
12493}
12494
12495// GoString returns the string representation
12496func (s XssMatchTuple) GoString() string {
12497	return s.String()
12498}
12499
12500// Validate inspects the fields of the type to determine if they are valid.
12501func (s *XssMatchTuple) Validate() error {
12502	invalidParams := request.ErrInvalidParams{Context: "XssMatchTuple"}
12503	if s.FieldToMatch == nil {
12504		invalidParams.Add(request.NewErrParamRequired("FieldToMatch"))
12505	}
12506	if s.TextTransformation == nil {
12507		invalidParams.Add(request.NewErrParamRequired("TextTransformation"))
12508	}
12509	if s.FieldToMatch != nil {
12510		if err := s.FieldToMatch.Validate(); err != nil {
12511			invalidParams.AddNested("FieldToMatch", err.(request.ErrInvalidParams))
12512		}
12513	}
12514
12515	if invalidParams.Len() > 0 {
12516		return invalidParams
12517	}
12518	return nil
12519}
12520
12521// SetFieldToMatch sets the FieldToMatch field's value.
12522func (s *XssMatchTuple) SetFieldToMatch(v *FieldToMatch) *XssMatchTuple {
12523	s.FieldToMatch = v
12524	return s
12525}
12526
12527// SetTextTransformation sets the TextTransformation field's value.
12528func (s *XssMatchTuple) SetTextTransformation(v string) *XssMatchTuple {
12529	s.TextTransformation = &v
12530	return s
12531}
12532
12533const (
12534	// ChangeActionInsert is a ChangeAction enum value
12535	ChangeActionInsert = "INSERT"
12536
12537	// ChangeActionDelete is a ChangeAction enum value
12538	ChangeActionDelete = "DELETE"
12539)
12540
12541const (
12542	// ChangeTokenStatusProvisioned is a ChangeTokenStatus enum value
12543	ChangeTokenStatusProvisioned = "PROVISIONED"
12544
12545	// ChangeTokenStatusPending is a ChangeTokenStatus enum value
12546	ChangeTokenStatusPending = "PENDING"
12547
12548	// ChangeTokenStatusInsync is a ChangeTokenStatus enum value
12549	ChangeTokenStatusInsync = "INSYNC"
12550)
12551
12552const (
12553	// ComparisonOperatorEq is a ComparisonOperator enum value
12554	ComparisonOperatorEq = "EQ"
12555
12556	// ComparisonOperatorNe is a ComparisonOperator enum value
12557	ComparisonOperatorNe = "NE"
12558
12559	// ComparisonOperatorLe is a ComparisonOperator enum value
12560	ComparisonOperatorLe = "LE"
12561
12562	// ComparisonOperatorLt is a ComparisonOperator enum value
12563	ComparisonOperatorLt = "LT"
12564
12565	// ComparisonOperatorGe is a ComparisonOperator enum value
12566	ComparisonOperatorGe = "GE"
12567
12568	// ComparisonOperatorGt is a ComparisonOperator enum value
12569	ComparisonOperatorGt = "GT"
12570)
12571
12572const (
12573	// IPSetDescriptorTypeIpv4 is a IPSetDescriptorType enum value
12574	IPSetDescriptorTypeIpv4 = "IPV4"
12575
12576	// IPSetDescriptorTypeIpv6 is a IPSetDescriptorType enum value
12577	IPSetDescriptorTypeIpv6 = "IPV6"
12578)
12579
12580const (
12581	// MatchFieldTypeUri is a MatchFieldType enum value
12582	MatchFieldTypeUri = "URI"
12583
12584	// MatchFieldTypeQueryString is a MatchFieldType enum value
12585	MatchFieldTypeQueryString = "QUERY_STRING"
12586
12587	// MatchFieldTypeHeader is a MatchFieldType enum value
12588	MatchFieldTypeHeader = "HEADER"
12589
12590	// MatchFieldTypeMethod is a MatchFieldType enum value
12591	MatchFieldTypeMethod = "METHOD"
12592
12593	// MatchFieldTypeBody is a MatchFieldType enum value
12594	MatchFieldTypeBody = "BODY"
12595)
12596
12597const (
12598	// ParameterExceptionFieldChangeAction is a ParameterExceptionField enum value
12599	ParameterExceptionFieldChangeAction = "CHANGE_ACTION"
12600
12601	// ParameterExceptionFieldWafAction is a ParameterExceptionField enum value
12602	ParameterExceptionFieldWafAction = "WAF_ACTION"
12603
12604	// ParameterExceptionFieldPredicateType is a ParameterExceptionField enum value
12605	ParameterExceptionFieldPredicateType = "PREDICATE_TYPE"
12606
12607	// ParameterExceptionFieldIpsetType is a ParameterExceptionField enum value
12608	ParameterExceptionFieldIpsetType = "IPSET_TYPE"
12609
12610	// ParameterExceptionFieldByteMatchFieldType is a ParameterExceptionField enum value
12611	ParameterExceptionFieldByteMatchFieldType = "BYTE_MATCH_FIELD_TYPE"
12612
12613	// ParameterExceptionFieldSqlInjectionMatchFieldType is a ParameterExceptionField enum value
12614	ParameterExceptionFieldSqlInjectionMatchFieldType = "SQL_INJECTION_MATCH_FIELD_TYPE"
12615
12616	// ParameterExceptionFieldByteMatchTextTransformation is a ParameterExceptionField enum value
12617	ParameterExceptionFieldByteMatchTextTransformation = "BYTE_MATCH_TEXT_TRANSFORMATION"
12618
12619	// ParameterExceptionFieldByteMatchPositionalConstraint is a ParameterExceptionField enum value
12620	ParameterExceptionFieldByteMatchPositionalConstraint = "BYTE_MATCH_POSITIONAL_CONSTRAINT"
12621
12622	// ParameterExceptionFieldSizeConstraintComparisonOperator is a ParameterExceptionField enum value
12623	ParameterExceptionFieldSizeConstraintComparisonOperator = "SIZE_CONSTRAINT_COMPARISON_OPERATOR"
12624
12625	// ParameterExceptionFieldRateKey is a ParameterExceptionField enum value
12626	ParameterExceptionFieldRateKey = "RATE_KEY"
12627
12628	// ParameterExceptionFieldRuleType is a ParameterExceptionField enum value
12629	ParameterExceptionFieldRuleType = "RULE_TYPE"
12630
12631	// ParameterExceptionFieldNextMarker is a ParameterExceptionField enum value
12632	ParameterExceptionFieldNextMarker = "NEXT_MARKER"
12633)
12634
12635const (
12636	// ParameterExceptionReasonInvalidOption is a ParameterExceptionReason enum value
12637	ParameterExceptionReasonInvalidOption = "INVALID_OPTION"
12638
12639	// ParameterExceptionReasonIllegalCombination is a ParameterExceptionReason enum value
12640	ParameterExceptionReasonIllegalCombination = "ILLEGAL_COMBINATION"
12641)
12642
12643const (
12644	// PositionalConstraintExactly is a PositionalConstraint enum value
12645	PositionalConstraintExactly = "EXACTLY"
12646
12647	// PositionalConstraintStartsWith is a PositionalConstraint enum value
12648	PositionalConstraintStartsWith = "STARTS_WITH"
12649
12650	// PositionalConstraintEndsWith is a PositionalConstraint enum value
12651	PositionalConstraintEndsWith = "ENDS_WITH"
12652
12653	// PositionalConstraintContains is a PositionalConstraint enum value
12654	PositionalConstraintContains = "CONTAINS"
12655
12656	// PositionalConstraintContainsWord is a PositionalConstraint enum value
12657	PositionalConstraintContainsWord = "CONTAINS_WORD"
12658)
12659
12660const (
12661	// PredicateTypeIpmatch is a PredicateType enum value
12662	PredicateTypeIpmatch = "IPMatch"
12663
12664	// PredicateTypeByteMatch is a PredicateType enum value
12665	PredicateTypeByteMatch = "ByteMatch"
12666
12667	// PredicateTypeSqlInjectionMatch is a PredicateType enum value
12668	PredicateTypeSqlInjectionMatch = "SqlInjectionMatch"
12669
12670	// PredicateTypeSizeConstraint is a PredicateType enum value
12671	PredicateTypeSizeConstraint = "SizeConstraint"
12672
12673	// PredicateTypeXssMatch is a PredicateType enum value
12674	PredicateTypeXssMatch = "XssMatch"
12675)
12676
12677const (
12678	// RateKeyIp is a RateKey enum value
12679	RateKeyIp = "IP"
12680)
12681
12682const (
12683	// TextTransformationNone is a TextTransformation enum value
12684	TextTransformationNone = "NONE"
12685
12686	// TextTransformationCompressWhiteSpace is a TextTransformation enum value
12687	TextTransformationCompressWhiteSpace = "COMPRESS_WHITE_SPACE"
12688
12689	// TextTransformationHtmlEntityDecode is a TextTransformation enum value
12690	TextTransformationHtmlEntityDecode = "HTML_ENTITY_DECODE"
12691
12692	// TextTransformationLowercase is a TextTransformation enum value
12693	TextTransformationLowercase = "LOWERCASE"
12694
12695	// TextTransformationCmdLine is a TextTransformation enum value
12696	TextTransformationCmdLine = "CMD_LINE"
12697
12698	// TextTransformationUrlDecode is a TextTransformation enum value
12699	TextTransformationUrlDecode = "URL_DECODE"
12700)
12701
12702const (
12703	// WafActionTypeBlock is a WafActionType enum value
12704	WafActionTypeBlock = "BLOCK"
12705
12706	// WafActionTypeAllow is a WafActionType enum value
12707	WafActionTypeAllow = "ALLOW"
12708
12709	// WafActionTypeCount is a WafActionType enum value
12710	WafActionTypeCount = "COUNT"
12711)
12712
12713const (
12714	// WafRuleTypeRegular is a WafRuleType enum value
12715	WafRuleTypeRegular = "REGULAR"
12716
12717	// WafRuleTypeRateBased is a WafRuleType enum value
12718	WafRuleTypeRateBased = "RATE_BASED"
12719)
12720