aws-sdk-wafv2 1.14.0 → 1.19.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,7 +3,7 @@
3
3
  # WARNING ABOUT GENERATED CODE
4
4
  #
5
5
  # This file is generated. See the contributing guide for more information:
6
- # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
7
  #
8
8
  # WARNING ABOUT GENERATED CODE
9
9
 
@@ -14,6 +14,7 @@ module Aws::WAFV2
14
14
  include Seahorse::Model
15
15
 
16
16
  Action = Shapes::StringShape.new(name: 'Action')
17
+ All = Shapes::StructureShape.new(name: 'All')
17
18
  AllQueryArguments = Shapes::StructureShape.new(name: 'AllQueryArguments')
18
19
  AllowAction = Shapes::StructureShape.new(name: 'AllowAction')
19
20
  AndStatement = Shapes::StructureShape.new(name: 'AndStatement')
@@ -21,6 +22,7 @@ module Aws::WAFV2
21
22
  AssociateWebACLResponse = Shapes::StructureShape.new(name: 'AssociateWebACLResponse')
22
23
  BlockAction = Shapes::StructureShape.new(name: 'BlockAction')
23
24
  Body = Shapes::StructureShape.new(name: 'Body')
25
+ BodyParsingFallbackBehavior = Shapes::StringShape.new(name: 'BodyParsingFallbackBehavior')
24
26
  Boolean = Shapes::BooleanShape.new(name: 'Boolean')
25
27
  ByteMatchStatement = Shapes::StructureShape.new(name: 'ByteMatchStatement')
26
28
  CapacityUnit = Shapes::IntegerShape.new(name: 'CapacityUnit')
@@ -40,6 +42,14 @@ module Aws::WAFV2
40
42
  CreateRuleGroupResponse = Shapes::StructureShape.new(name: 'CreateRuleGroupResponse')
41
43
  CreateWebACLRequest = Shapes::StructureShape.new(name: 'CreateWebACLRequest')
42
44
  CreateWebACLResponse = Shapes::StructureShape.new(name: 'CreateWebACLResponse')
45
+ CustomHTTPHeader = Shapes::StructureShape.new(name: 'CustomHTTPHeader')
46
+ CustomHTTPHeaderName = Shapes::StringShape.new(name: 'CustomHTTPHeaderName')
47
+ CustomHTTPHeaderValue = Shapes::StringShape.new(name: 'CustomHTTPHeaderValue')
48
+ CustomHTTPHeaders = Shapes::ListShape.new(name: 'CustomHTTPHeaders')
49
+ CustomRequestHandling = Shapes::StructureShape.new(name: 'CustomRequestHandling')
50
+ CustomResponse = Shapes::StructureShape.new(name: 'CustomResponse')
51
+ CustomResponseBodies = Shapes::MapShape.new(name: 'CustomResponseBodies')
52
+ CustomResponseBody = Shapes::StructureShape.new(name: 'CustomResponseBody')
43
53
  DefaultAction = Shapes::StructureShape.new(name: 'DefaultAction')
44
54
  DeleteFirewallManagerRuleGroupsRequest = Shapes::StructureShape.new(name: 'DeleteFirewallManagerRuleGroupsRequest')
45
55
  DeleteFirewallManagerRuleGroupsResponse = Shapes::StructureShape.new(name: 'DeleteFirewallManagerRuleGroupsResponse')
@@ -110,6 +120,11 @@ module Aws::WAFV2
110
120
  IPSetSummaries = Shapes::ListShape.new(name: 'IPSetSummaries')
111
121
  IPSetSummary = Shapes::StructureShape.new(name: 'IPSetSummary')
112
122
  IPString = Shapes::StringShape.new(name: 'IPString')
123
+ JsonBody = Shapes::StructureShape.new(name: 'JsonBody')
124
+ JsonMatchPattern = Shapes::StructureShape.new(name: 'JsonMatchPattern')
125
+ JsonMatchScope = Shapes::StringShape.new(name: 'JsonMatchScope')
126
+ JsonPointerPath = Shapes::StringShape.new(name: 'JsonPointerPath')
127
+ JsonPointerPaths = Shapes::ListShape.new(name: 'JsonPointerPaths')
113
128
  ListAvailableManagedRuleGroupsRequest = Shapes::StructureShape.new(name: 'ListAvailableManagedRuleGroupsRequest')
114
129
  ListAvailableManagedRuleGroupsResponse = Shapes::StructureShape.new(name: 'ListAvailableManagedRuleGroupsResponse')
115
130
  ListIPSetsRequest = Shapes::StructureShape.new(name: 'ListIPSetsRequest')
@@ -167,6 +182,9 @@ module Aws::WAFV2
167
182
  ResourceArn = Shapes::StringShape.new(name: 'ResourceArn')
168
183
  ResourceArns = Shapes::ListShape.new(name: 'ResourceArns')
169
184
  ResourceType = Shapes::StringShape.new(name: 'ResourceType')
185
+ ResponseContent = Shapes::StringShape.new(name: 'ResponseContent')
186
+ ResponseContentType = Shapes::StringShape.new(name: 'ResponseContentType')
187
+ ResponseStatusCode = Shapes::IntegerShape.new(name: 'ResponseStatusCode')
170
188
  Rule = Shapes::StructureShape.new(name: 'Rule')
171
189
  RuleAction = Shapes::StructureShape.new(name: 'RuleAction')
172
190
  RuleGroup = Shapes::StructureShape.new(name: 'RuleGroup')
@@ -237,8 +255,11 @@ module Aws::WAFV2
237
255
  WebACLSummary = Shapes::StructureShape.new(name: 'WebACLSummary')
238
256
  XssMatchStatement = Shapes::StructureShape.new(name: 'XssMatchStatement')
239
257
 
258
+ All.struct_class = Types::All
259
+
240
260
  AllQueryArguments.struct_class = Types::AllQueryArguments
241
261
 
262
+ AllowAction.add_member(:custom_request_handling, Shapes::ShapeRef.new(shape: CustomRequestHandling, location_name: "CustomRequestHandling"))
242
263
  AllowAction.struct_class = Types::AllowAction
243
264
 
244
265
  AndStatement.add_member(:statements, Shapes::ShapeRef.new(shape: Statements, required: true, location_name: "Statements"))
@@ -250,6 +271,7 @@ module Aws::WAFV2
250
271
 
251
272
  AssociateWebACLResponse.struct_class = Types::AssociateWebACLResponse
252
273
 
274
+ BlockAction.add_member(:custom_response, Shapes::ShapeRef.new(shape: CustomResponse, location_name: "CustomResponse"))
253
275
  BlockAction.struct_class = Types::BlockAction
254
276
 
255
277
  Body.struct_class = Types::Body
@@ -267,6 +289,7 @@ module Aws::WAFV2
267
289
  CheckCapacityResponse.add_member(:capacity, Shapes::ShapeRef.new(shape: ConsumedCapacity, location_name: "Capacity"))
268
290
  CheckCapacityResponse.struct_class = Types::CheckCapacityResponse
269
291
 
292
+ CountAction.add_member(:custom_request_handling, Shapes::ShapeRef.new(shape: CustomRequestHandling, location_name: "CustomRequestHandling"))
270
293
  CountAction.struct_class = Types::CountAction
271
294
 
272
295
  CountryCodes.member = Shapes::ShapeRef.new(shape: CountryCode)
@@ -299,6 +322,7 @@ module Aws::WAFV2
299
322
  CreateRuleGroupRequest.add_member(:rules, Shapes::ShapeRef.new(shape: Rules, location_name: "Rules"))
300
323
  CreateRuleGroupRequest.add_member(:visibility_config, Shapes::ShapeRef.new(shape: VisibilityConfig, required: true, location_name: "VisibilityConfig"))
301
324
  CreateRuleGroupRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags"))
325
+ CreateRuleGroupRequest.add_member(:custom_response_bodies, Shapes::ShapeRef.new(shape: CustomResponseBodies, location_name: "CustomResponseBodies"))
302
326
  CreateRuleGroupRequest.struct_class = Types::CreateRuleGroupRequest
303
327
 
304
328
  CreateRuleGroupResponse.add_member(:summary, Shapes::ShapeRef.new(shape: RuleGroupSummary, location_name: "Summary"))
@@ -311,11 +335,33 @@ module Aws::WAFV2
311
335
  CreateWebACLRequest.add_member(:rules, Shapes::ShapeRef.new(shape: Rules, location_name: "Rules"))
312
336
  CreateWebACLRequest.add_member(:visibility_config, Shapes::ShapeRef.new(shape: VisibilityConfig, required: true, location_name: "VisibilityConfig"))
313
337
  CreateWebACLRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags"))
338
+ CreateWebACLRequest.add_member(:custom_response_bodies, Shapes::ShapeRef.new(shape: CustomResponseBodies, location_name: "CustomResponseBodies"))
314
339
  CreateWebACLRequest.struct_class = Types::CreateWebACLRequest
315
340
 
316
341
  CreateWebACLResponse.add_member(:summary, Shapes::ShapeRef.new(shape: WebACLSummary, location_name: "Summary"))
317
342
  CreateWebACLResponse.struct_class = Types::CreateWebACLResponse
318
343
 
344
+ CustomHTTPHeader.add_member(:name, Shapes::ShapeRef.new(shape: CustomHTTPHeaderName, required: true, location_name: "Name"))
345
+ CustomHTTPHeader.add_member(:value, Shapes::ShapeRef.new(shape: CustomHTTPHeaderValue, required: true, location_name: "Value"))
346
+ CustomHTTPHeader.struct_class = Types::CustomHTTPHeader
347
+
348
+ CustomHTTPHeaders.member = Shapes::ShapeRef.new(shape: CustomHTTPHeader)
349
+
350
+ CustomRequestHandling.add_member(:insert_headers, Shapes::ShapeRef.new(shape: CustomHTTPHeaders, required: true, location_name: "InsertHeaders"))
351
+ CustomRequestHandling.struct_class = Types::CustomRequestHandling
352
+
353
+ CustomResponse.add_member(:response_code, Shapes::ShapeRef.new(shape: ResponseStatusCode, required: true, location_name: "ResponseCode"))
354
+ CustomResponse.add_member(:custom_response_body_key, Shapes::ShapeRef.new(shape: EntityName, location_name: "CustomResponseBodyKey"))
355
+ CustomResponse.add_member(:response_headers, Shapes::ShapeRef.new(shape: CustomHTTPHeaders, location_name: "ResponseHeaders"))
356
+ CustomResponse.struct_class = Types::CustomResponse
357
+
358
+ CustomResponseBodies.key = Shapes::ShapeRef.new(shape: EntityName)
359
+ CustomResponseBodies.value = Shapes::ShapeRef.new(shape: CustomResponseBody)
360
+
361
+ CustomResponseBody.add_member(:content_type, Shapes::ShapeRef.new(shape: ResponseContentType, required: true, location_name: "ContentType"))
362
+ CustomResponseBody.add_member(:content, Shapes::ShapeRef.new(shape: ResponseContent, required: true, location_name: "Content"))
363
+ CustomResponseBody.struct_class = Types::CustomResponseBody
364
+
319
365
  DefaultAction.add_member(:block, Shapes::ShapeRef.new(shape: BlockAction, location_name: "Block"))
320
366
  DefaultAction.add_member(:allow, Shapes::ShapeRef.new(shape: AllowAction, location_name: "Allow"))
321
367
  DefaultAction.struct_class = Types::DefaultAction
@@ -395,6 +441,7 @@ module Aws::WAFV2
395
441
  FieldToMatch.add_member(:query_string, Shapes::ShapeRef.new(shape: QueryString, location_name: "QueryString"))
396
442
  FieldToMatch.add_member(:body, Shapes::ShapeRef.new(shape: Body, location_name: "Body"))
397
443
  FieldToMatch.add_member(:method, Shapes::ShapeRef.new(shape: Method, location_name: "Method"))
444
+ FieldToMatch.add_member(:json_body, Shapes::ShapeRef.new(shape: JsonBody, location_name: "JsonBody"))
398
445
  FieldToMatch.struct_class = Types::FieldToMatch
399
446
 
400
447
  FirewallManagerRuleGroup.add_member(:name, Shapes::ShapeRef.new(shape: EntityName, required: true, location_name: "Name"))
@@ -536,6 +583,17 @@ module Aws::WAFV2
536
583
  IPSetSummary.add_member(:arn, Shapes::ShapeRef.new(shape: ResourceArn, location_name: "ARN"))
537
584
  IPSetSummary.struct_class = Types::IPSetSummary
538
585
 
586
+ JsonBody.add_member(:match_pattern, Shapes::ShapeRef.new(shape: JsonMatchPattern, required: true, location_name: "MatchPattern"))
587
+ JsonBody.add_member(:match_scope, Shapes::ShapeRef.new(shape: JsonMatchScope, required: true, location_name: "MatchScope"))
588
+ JsonBody.add_member(:invalid_fallback_behavior, Shapes::ShapeRef.new(shape: BodyParsingFallbackBehavior, location_name: "InvalidFallbackBehavior"))
589
+ JsonBody.struct_class = Types::JsonBody
590
+
591
+ JsonMatchPattern.add_member(:all, Shapes::ShapeRef.new(shape: All, location_name: "All"))
592
+ JsonMatchPattern.add_member(:included_paths, Shapes::ShapeRef.new(shape: JsonPointerPaths, location_name: "IncludedPaths"))
593
+ JsonMatchPattern.struct_class = Types::JsonMatchPattern
594
+
595
+ JsonPointerPaths.member = Shapes::ShapeRef.new(shape: JsonPointerPath)
596
+
539
597
  ListAvailableManagedRuleGroupsRequest.add_member(:scope, Shapes::ShapeRef.new(shape: Scope, required: true, location_name: "Scope"))
540
598
  ListAvailableManagedRuleGroupsRequest.add_member(:next_marker, Shapes::ShapeRef.new(shape: NextMarker, location_name: "NextMarker"))
541
599
  ListAvailableManagedRuleGroupsRequest.add_member(:limit, Shapes::ShapeRef.new(shape: PaginationLimit, location_name: "Limit"))
@@ -716,6 +774,7 @@ module Aws::WAFV2
716
774
  RuleGroup.add_member(:description, Shapes::ShapeRef.new(shape: EntityDescription, location_name: "Description"))
717
775
  RuleGroup.add_member(:rules, Shapes::ShapeRef.new(shape: Rules, location_name: "Rules"))
718
776
  RuleGroup.add_member(:visibility_config, Shapes::ShapeRef.new(shape: VisibilityConfig, required: true, location_name: "VisibilityConfig"))
777
+ RuleGroup.add_member(:custom_response_bodies, Shapes::ShapeRef.new(shape: CustomResponseBodies, location_name: "CustomResponseBodies"))
719
778
  RuleGroup.struct_class = Types::RuleGroup
720
779
 
721
780
  RuleGroupReferenceStatement.add_member(:arn, Shapes::ShapeRef.new(shape: ResourceArn, required: true, location_name: "ARN"))
@@ -744,6 +803,8 @@ module Aws::WAFV2
744
803
  SampledHTTPRequest.add_member(:timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "Timestamp"))
745
804
  SampledHTTPRequest.add_member(:action, Shapes::ShapeRef.new(shape: Action, location_name: "Action"))
746
805
  SampledHTTPRequest.add_member(:rule_name_within_rule_group, Shapes::ShapeRef.new(shape: EntityName, location_name: "RuleNameWithinRuleGroup"))
806
+ SampledHTTPRequest.add_member(:request_headers_inserted, Shapes::ShapeRef.new(shape: HTTPHeaders, location_name: "RequestHeadersInserted"))
807
+ SampledHTTPRequest.add_member(:response_code_sent, Shapes::ShapeRef.new(shape: ResponseStatusCode, location_name: "ResponseCodeSent"))
747
808
  SampledHTTPRequest.struct_class = Types::SampledHTTPRequest
748
809
 
749
810
  SampledHTTPRequests.member = Shapes::ShapeRef.new(shape: SampledHTTPRequest)
@@ -844,6 +905,7 @@ module Aws::WAFV2
844
905
  UpdateRuleGroupRequest.add_member(:rules, Shapes::ShapeRef.new(shape: Rules, location_name: "Rules"))
845
906
  UpdateRuleGroupRequest.add_member(:visibility_config, Shapes::ShapeRef.new(shape: VisibilityConfig, required: true, location_name: "VisibilityConfig"))
846
907
  UpdateRuleGroupRequest.add_member(:lock_token, Shapes::ShapeRef.new(shape: LockToken, required: true, location_name: "LockToken"))
908
+ UpdateRuleGroupRequest.add_member(:custom_response_bodies, Shapes::ShapeRef.new(shape: CustomResponseBodies, location_name: "CustomResponseBodies"))
847
909
  UpdateRuleGroupRequest.struct_class = Types::UpdateRuleGroupRequest
848
910
 
849
911
  UpdateRuleGroupResponse.add_member(:next_lock_token, Shapes::ShapeRef.new(shape: LockToken, location_name: "NextLockToken"))
@@ -857,6 +919,7 @@ module Aws::WAFV2
857
919
  UpdateWebACLRequest.add_member(:rules, Shapes::ShapeRef.new(shape: Rules, location_name: "Rules"))
858
920
  UpdateWebACLRequest.add_member(:visibility_config, Shapes::ShapeRef.new(shape: VisibilityConfig, required: true, location_name: "VisibilityConfig"))
859
921
  UpdateWebACLRequest.add_member(:lock_token, Shapes::ShapeRef.new(shape: LockToken, required: true, location_name: "LockToken"))
922
+ UpdateWebACLRequest.add_member(:custom_response_bodies, Shapes::ShapeRef.new(shape: CustomResponseBodies, location_name: "CustomResponseBodies"))
860
923
  UpdateWebACLRequest.struct_class = Types::UpdateWebACLRequest
861
924
 
862
925
  UpdateWebACLResponse.add_member(:next_lock_token, Shapes::ShapeRef.new(shape: LockToken, location_name: "NextLockToken"))
@@ -928,6 +991,7 @@ module Aws::WAFV2
928
991
  WebACL.add_member(:pre_process_firewall_manager_rule_groups, Shapes::ShapeRef.new(shape: FirewallManagerRuleGroups, location_name: "PreProcessFirewallManagerRuleGroups"))
929
992
  WebACL.add_member(:post_process_firewall_manager_rule_groups, Shapes::ShapeRef.new(shape: FirewallManagerRuleGroups, location_name: "PostProcessFirewallManagerRuleGroups"))
930
993
  WebACL.add_member(:managed_by_firewall_manager, Shapes::ShapeRef.new(shape: Boolean, location_name: "ManagedByFirewallManager"))
994
+ WebACL.add_member(:custom_response_bodies, Shapes::ShapeRef.new(shape: CustomResponseBodies, location_name: "CustomResponseBodies"))
931
995
  WebACL.struct_class = Types::WebACL
932
996
 
933
997
  WebACLSummaries.member = Shapes::ShapeRef.new(shape: WebACLSummary)
@@ -3,7 +3,7 @@
3
3
  # WARNING ABOUT GENERATED CODE
4
4
  #
5
5
  # This file is generated. See the contributing guide for more information:
6
- # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
7
  #
8
8
  # WARNING ABOUT GENERATED CODE
9
9
 
@@ -3,7 +3,7 @@
3
3
  # WARNING ABOUT GENERATED CODE
4
4
  #
5
5
  # This file is generated. See the contributing guide for more information:
6
- # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
7
  #
8
8
  # WARNING ABOUT GENERATED CODE
9
9
 
@@ -3,28 +3,30 @@
3
3
  # WARNING ABOUT GENERATED CODE
4
4
  #
5
5
  # This file is generated. See the contributing guide for more information:
6
- # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
7
  #
8
8
  # WARNING ABOUT GENERATED CODE
9
9
 
10
10
  module Aws::WAFV2
11
11
  module Types
12
12
 
13
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
14
- # in November, 2019. For information, including how to migrate your AWS
15
- # WAF resources from the prior release, see the [AWS WAF Developer
16
- # Guide][1].
17
- #
18
- # </note>
19
- #
20
- # All query arguments of a web request.
13
+ # Inspect all of the elements that AWS WAF has parsed and extracted from
14
+ # the web request JSON body that are within the JsonBody `MatchScope`.
15
+ # This is used with the FieldToMatch option `JsonBody`.
21
16
  #
22
17
  # This is used only to indicate the web request component for AWS WAF to
23
18
  # inspect, in the FieldToMatch specification.
24
19
  #
20
+ # @api private
21
+ #
22
+ # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/All AWS API Documentation
25
23
  #
24
+ class All < Aws::EmptyStructure; end
25
+
26
+ # All query arguments of a web request.
26
27
  #
27
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
28
+ # This is used only to indicate the web request component for AWS WAF to
29
+ # inspect, in the FieldToMatch specification.
28
30
  #
29
31
  # @api private
30
32
  #
@@ -32,43 +34,51 @@ module Aws::WAFV2
32
34
  #
33
35
  class AllQueryArguments < Aws::EmptyStructure; end
34
36
 
35
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
36
- # in November, 2019. For information, including how to migrate your AWS
37
- # WAF resources from the prior release, see the [AWS WAF Developer
38
- # Guide][1].
37
+ # Specifies that AWS WAF should allow the request and optionally defines
38
+ # additional custom handling for the request.
39
39
  #
40
- # </note>
40
+ # This is used in the context of other settings, for example to specify
41
+ # values for RuleAction and web ACL DefaultAction.
41
42
  #
42
- # Specifies that AWS WAF should allow requests.
43
+ # @note When making an API call, you may pass AllowAction
44
+ # data as a hash:
43
45
  #
44
- # This is used only in the context of other settings, for example to
45
- # specify values for RuleAction and web ACL DefaultAction.
46
+ # {
47
+ # custom_request_handling: {
48
+ # insert_headers: [ # required
49
+ # {
50
+ # name: "CustomHTTPHeaderName", # required
51
+ # value: "CustomHTTPHeaderValue", # required
52
+ # },
53
+ # ],
54
+ # },
55
+ # }
46
56
  #
57
+ # @!attribute [rw] custom_request_handling
58
+ # Defines custom handling for the web request.
47
59
  #
60
+ # For information about customizing web requests and responses, see
61
+ # [Customizing web requests and responses in AWS WAF][1] in the [AWS
62
+ # WAF Developer Guide][2].
48
63
  #
49
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
50
64
  #
51
- # @api private
65
+ #
66
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html
67
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
68
+ # @return [Types::CustomRequestHandling]
52
69
  #
53
70
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/AllowAction AWS API Documentation
54
71
  #
55
- class AllowAction < Aws::EmptyStructure; end
72
+ class AllowAction < Struct.new(
73
+ :custom_request_handling)
74
+ SENSITIVE = []
75
+ include Aws::Structure
76
+ end
56
77
 
57
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
58
- # in November, 2019. For information, including how to migrate your AWS
59
- # WAF resources from the prior release, see the [AWS WAF Developer
60
- # Guide][1].
61
- #
62
- # </note>
63
- #
64
78
  # A logical rule statement used to combine other rule statements with
65
79
  # AND logic. You provide more than one Statement within the
66
80
  # `AndStatement`.
67
81
  #
68
- #
69
- #
70
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
71
- #
72
82
  # @note When making an API call, you may pass AndStatement
73
83
  # data as a hash:
74
84
  #
@@ -94,6 +104,15 @@ module Aws::WAFV2
94
104
  # },
95
105
  # method: {
96
106
  # },
107
+ # json_body: {
108
+ # match_pattern: { # required
109
+ # all: {
110
+ # },
111
+ # included_paths: ["JsonPointerPath"],
112
+ # },
113
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
114
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
115
+ # },
97
116
  # },
98
117
  # text_transformations: [ # required
99
118
  # {
@@ -121,6 +140,15 @@ module Aws::WAFV2
121
140
  # },
122
141
  # method: {
123
142
  # },
143
+ # json_body: {
144
+ # match_pattern: { # required
145
+ # all: {
146
+ # },
147
+ # included_paths: ["JsonPointerPath"],
148
+ # },
149
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
150
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
151
+ # },
124
152
  # },
125
153
  # text_transformations: [ # required
126
154
  # {
@@ -147,6 +175,15 @@ module Aws::WAFV2
147
175
  # },
148
176
  # method: {
149
177
  # },
178
+ # json_body: {
179
+ # match_pattern: { # required
180
+ # all: {
181
+ # },
182
+ # included_paths: ["JsonPointerPath"],
183
+ # },
184
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
185
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
186
+ # },
150
187
  # },
151
188
  # text_transformations: [ # required
152
189
  # {
@@ -173,6 +210,15 @@ module Aws::WAFV2
173
210
  # },
174
211
  # method: {
175
212
  # },
213
+ # json_body: {
214
+ # match_pattern: { # required
215
+ # all: {
216
+ # },
217
+ # included_paths: ["JsonPointerPath"],
218
+ # },
219
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
220
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
221
+ # },
176
222
  # },
177
223
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
178
224
  # size: 1, # required
@@ -225,6 +271,15 @@ module Aws::WAFV2
225
271
  # },
226
272
  # method: {
227
273
  # },
274
+ # json_body: {
275
+ # match_pattern: { # required
276
+ # all: {
277
+ # },
278
+ # included_paths: ["JsonPointerPath"],
279
+ # },
280
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
281
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
282
+ # },
228
283
  # },
229
284
  # text_transformations: [ # required
230
285
  # {
@@ -328,58 +383,61 @@ module Aws::WAFV2
328
383
  #
329
384
  class AssociateWebACLResponse < Aws::EmptyStructure; end
330
385
 
331
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
332
- # in November, 2019. For information, including how to migrate your AWS
333
- # WAF resources from the prior release, see the [AWS WAF Developer
334
- # Guide][1].
386
+ # Specifies that AWS WAF should block the request and optionally defines
387
+ # additional custom handling for the response to the web request.
335
388
  #
336
- # </note>
389
+ # This is used in the context of other settings, for example to specify
390
+ # values for RuleAction and web ACL DefaultAction.
391
+ #
392
+ # @note When making an API call, you may pass BlockAction
393
+ # data as a hash:
337
394
  #
338
- # Specifies that AWS WAF should block requests.
395
+ # {
396
+ # custom_response: {
397
+ # response_code: 1, # required
398
+ # custom_response_body_key: "EntityName",
399
+ # response_headers: [
400
+ # {
401
+ # name: "CustomHTTPHeaderName", # required
402
+ # value: "CustomHTTPHeaderValue", # required
403
+ # },
404
+ # ],
405
+ # },
406
+ # }
339
407
  #
340
- # This is used only in the context of other settings, for example to
341
- # specify values for RuleAction and web ACL DefaultAction.
408
+ # @!attribute [rw] custom_response
409
+ # Defines a custom response for the web request.
342
410
  #
411
+ # For information about customizing web requests and responses, see
412
+ # [Customizing web requests and responses in AWS WAF][1] in the [AWS
413
+ # WAF Developer Guide][2].
343
414
  #
344
415
  #
345
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
346
416
  #
347
- # @api private
417
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html
418
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
419
+ # @return [Types::CustomResponse]
348
420
  #
349
421
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/BlockAction AWS API Documentation
350
422
  #
351
- class BlockAction < Aws::EmptyStructure; end
423
+ class BlockAction < Struct.new(
424
+ :custom_response)
425
+ SENSITIVE = []
426
+ include Aws::Structure
427
+ end
352
428
 
353
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
354
- # in November, 2019. For information, including how to migrate your AWS
355
- # WAF resources from the prior release, see the [AWS WAF Developer
356
- # Guide][1].
357
- #
358
- # </note>
359
- #
360
429
  # The body of a web request. This immediately follows the request
361
430
  # headers.
362
431
  #
363
432
  # This is used only to indicate the web request component for AWS WAF to
364
433
  # inspect, in the FieldToMatch specification.
365
434
  #
366
- #
367
- #
368
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
369
- #
370
435
  # @api private
371
436
  #
372
437
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/Body AWS API Documentation
373
438
  #
374
439
  class Body < Aws::EmptyStructure; end
375
440
 
376
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
377
- # in November, 2019. For information, including how to migrate your AWS
378
- # WAF resources from the prior release, see the [AWS WAF Developer
379
- # Guide][1].
380
- #
381
- # </note>
382
- #
383
441
  # A rule statement that defines a string match search for AWS WAF to
384
442
  # apply to web requests. The byte match statement provides the bytes to
385
443
  # search for, the location in requests that you want AWS WAF to search,
@@ -387,10 +445,6 @@ module Aws::WAFV2
387
445
  # that corresponds with ASCII characters. In the AWS WAF console and the
388
446
  # developer guide, this is refered to as a string match statement.
389
447
  #
390
- #
391
- #
392
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
393
- #
394
448
  # @note When making an API call, you may pass ByteMatchStatement
395
449
  # data as a hash:
396
450
  #
@@ -413,6 +467,15 @@ module Aws::WAFV2
413
467
  # },
414
468
  # method: {
415
469
  # },
470
+ # json_body: {
471
+ # match_pattern: { # required
472
+ # all: {
473
+ # },
474
+ # included_paths: ["JsonPointerPath"],
475
+ # },
476
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
477
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
478
+ # },
416
479
  # },
417
480
  # text_transformations: [ # required
418
481
  # {
@@ -554,6 +617,15 @@ module Aws::WAFV2
554
617
  # },
555
618
  # method: {
556
619
  # },
620
+ # json_body: {
621
+ # match_pattern: { # required
622
+ # all: {
623
+ # },
624
+ # included_paths: ["JsonPointerPath"],
625
+ # },
626
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
627
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
628
+ # },
557
629
  # },
558
630
  # text_transformations: [ # required
559
631
  # {
@@ -581,6 +653,15 @@ module Aws::WAFV2
581
653
  # },
582
654
  # method: {
583
655
  # },
656
+ # json_body: {
657
+ # match_pattern: { # required
658
+ # all: {
659
+ # },
660
+ # included_paths: ["JsonPointerPath"],
661
+ # },
662
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
663
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
664
+ # },
584
665
  # },
585
666
  # text_transformations: [ # required
586
667
  # {
@@ -607,6 +688,15 @@ module Aws::WAFV2
607
688
  # },
608
689
  # method: {
609
690
  # },
691
+ # json_body: {
692
+ # match_pattern: { # required
693
+ # all: {
694
+ # },
695
+ # included_paths: ["JsonPointerPath"],
696
+ # },
697
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
698
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
699
+ # },
610
700
  # },
611
701
  # text_transformations: [ # required
612
702
  # {
@@ -633,6 +723,15 @@ module Aws::WAFV2
633
723
  # },
634
724
  # method: {
635
725
  # },
726
+ # json_body: {
727
+ # match_pattern: { # required
728
+ # all: {
729
+ # },
730
+ # included_paths: ["JsonPointerPath"],
731
+ # },
732
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
733
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
734
+ # },
636
735
  # },
637
736
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
638
737
  # size: 1, # required
@@ -685,6 +784,15 @@ module Aws::WAFV2
685
784
  # },
686
785
  # method: {
687
786
  # },
787
+ # json_body: {
788
+ # match_pattern: { # required
789
+ # all: {
790
+ # },
791
+ # included_paths: ["JsonPointerPath"],
792
+ # },
793
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
794
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
795
+ # },
688
796
  # },
689
797
  # text_transformations: [ # required
690
798
  # {
@@ -735,14 +843,48 @@ module Aws::WAFV2
735
843
  # },
736
844
  # action: {
737
845
  # block: {
846
+ # custom_response: {
847
+ # response_code: 1, # required
848
+ # custom_response_body_key: "EntityName",
849
+ # response_headers: [
850
+ # {
851
+ # name: "CustomHTTPHeaderName", # required
852
+ # value: "CustomHTTPHeaderValue", # required
853
+ # },
854
+ # ],
855
+ # },
738
856
  # },
739
857
  # allow: {
858
+ # custom_request_handling: {
859
+ # insert_headers: [ # required
860
+ # {
861
+ # name: "CustomHTTPHeaderName", # required
862
+ # value: "CustomHTTPHeaderValue", # required
863
+ # },
864
+ # ],
865
+ # },
740
866
  # },
741
867
  # count: {
868
+ # custom_request_handling: {
869
+ # insert_headers: [ # required
870
+ # {
871
+ # name: "CustomHTTPHeaderName", # required
872
+ # value: "CustomHTTPHeaderValue", # required
873
+ # },
874
+ # ],
875
+ # },
742
876
  # },
743
877
  # },
744
878
  # override_action: {
745
879
  # count: {
880
+ # custom_request_handling: {
881
+ # insert_headers: [ # required
882
+ # {
883
+ # name: "CustomHTTPHeaderName", # required
884
+ # value: "CustomHTTPHeaderValue", # required
885
+ # },
886
+ # ],
887
+ # },
746
888
  # },
747
889
  # none: {
748
890
  # },
@@ -797,27 +939,46 @@ module Aws::WAFV2
797
939
  include Aws::Structure
798
940
  end
799
941
 
800
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
801
- # in November, 2019. For information, including how to migrate your AWS
802
- # WAF resources from the prior release, see the [AWS WAF Developer
803
- # Guide][1].
942
+ # Specifies that AWS WAF should count the request. Optionally defines
943
+ # additional custom handling for the request.
804
944
  #
805
- # </note>
945
+ # This is used in the context of other settings, for example to specify
946
+ # values for RuleAction and web ACL DefaultAction.
806
947
  #
807
- # Specifies that AWS WAF should count requests.
948
+ # @note When making an API call, you may pass CountAction
949
+ # data as a hash:
950
+ #
951
+ # {
952
+ # custom_request_handling: {
953
+ # insert_headers: [ # required
954
+ # {
955
+ # name: "CustomHTTPHeaderName", # required
956
+ # value: "CustomHTTPHeaderValue", # required
957
+ # },
958
+ # ],
959
+ # },
960
+ # }
808
961
  #
809
- # This is used only in the context of other settings, for example to
810
- # specify values for RuleAction and web ACL DefaultAction.
962
+ # @!attribute [rw] custom_request_handling
963
+ # Defines custom handling for the web request.
811
964
  #
965
+ # For information about customizing web requests and responses, see
966
+ # [Customizing web requests and responses in AWS WAF][1] in the [AWS
967
+ # WAF Developer Guide][2].
812
968
  #
813
969
  #
814
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
815
970
  #
816
- # @api private
971
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html
972
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
973
+ # @return [Types::CustomRequestHandling]
817
974
  #
818
975
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CountAction AWS API Documentation
819
976
  #
820
- class CountAction < Aws::EmptyStructure; end
977
+ class CountAction < Struct.new(
978
+ :custom_request_handling)
979
+ SENSITIVE = []
980
+ include Aws::Structure
981
+ end
821
982
 
822
983
  # @note When making an API call, you may pass CreateIPSetRequest
823
984
  # data as a hash:
@@ -857,8 +1018,7 @@ module Aws::WAFV2
857
1018
  # @return [String]
858
1019
  #
859
1020
  # @!attribute [rw] description
860
- # A description of the IP set that helps with identification. You
861
- # cannot change the description of an IP set after you create it.
1021
+ # A description of the IP set that helps with identification.
862
1022
  # @return [String]
863
1023
  #
864
1024
  # @!attribute [rw] ip_address_version
@@ -868,8 +1028,8 @@ module Aws::WAFV2
868
1028
  # @!attribute [rw] addresses
869
1029
  # Contains an array of strings that specify one or more IP addresses
870
1030
  # or blocks of IP addresses in Classless Inter-Domain Routing (CIDR)
871
- # notation. AWS WAF supports all address ranges for IP versions IPv4
872
- # and IPv6.
1031
+ # notation. AWS WAF supports all IPv4 and IPv6 CIDR ranges except for
1032
+ # /0.
873
1033
  #
874
1034
  # Examples:
875
1035
  #
@@ -973,8 +1133,7 @@ module Aws::WAFV2
973
1133
  # @return [String]
974
1134
  #
975
1135
  # @!attribute [rw] description
976
- # A description of the set that helps with identification. You cannot
977
- # change the description of a set after you create it.
1136
+ # A description of the set that helps with identification.
978
1137
  # @return [String]
979
1138
  #
980
1139
  # @!attribute [rw] regular_expression_list
@@ -1045,6 +1204,15 @@ module Aws::WAFV2
1045
1204
  # },
1046
1205
  # method: {
1047
1206
  # },
1207
+ # json_body: {
1208
+ # match_pattern: { # required
1209
+ # all: {
1210
+ # },
1211
+ # included_paths: ["JsonPointerPath"],
1212
+ # },
1213
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
1214
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
1215
+ # },
1048
1216
  # },
1049
1217
  # text_transformations: [ # required
1050
1218
  # {
@@ -1072,6 +1240,15 @@ module Aws::WAFV2
1072
1240
  # },
1073
1241
  # method: {
1074
1242
  # },
1243
+ # json_body: {
1244
+ # match_pattern: { # required
1245
+ # all: {
1246
+ # },
1247
+ # included_paths: ["JsonPointerPath"],
1248
+ # },
1249
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
1250
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
1251
+ # },
1075
1252
  # },
1076
1253
  # text_transformations: [ # required
1077
1254
  # {
@@ -1098,6 +1275,15 @@ module Aws::WAFV2
1098
1275
  # },
1099
1276
  # method: {
1100
1277
  # },
1278
+ # json_body: {
1279
+ # match_pattern: { # required
1280
+ # all: {
1281
+ # },
1282
+ # included_paths: ["JsonPointerPath"],
1283
+ # },
1284
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
1285
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
1286
+ # },
1101
1287
  # },
1102
1288
  # text_transformations: [ # required
1103
1289
  # {
@@ -1124,6 +1310,15 @@ module Aws::WAFV2
1124
1310
  # },
1125
1311
  # method: {
1126
1312
  # },
1313
+ # json_body: {
1314
+ # match_pattern: { # required
1315
+ # all: {
1316
+ # },
1317
+ # included_paths: ["JsonPointerPath"],
1318
+ # },
1319
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
1320
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
1321
+ # },
1127
1322
  # },
1128
1323
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
1129
1324
  # size: 1, # required
@@ -1176,6 +1371,15 @@ module Aws::WAFV2
1176
1371
  # },
1177
1372
  # method: {
1178
1373
  # },
1374
+ # json_body: {
1375
+ # match_pattern: { # required
1376
+ # all: {
1377
+ # },
1378
+ # included_paths: ["JsonPointerPath"],
1379
+ # },
1380
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
1381
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
1382
+ # },
1179
1383
  # },
1180
1384
  # text_transformations: [ # required
1181
1385
  # {
@@ -1226,14 +1430,48 @@ module Aws::WAFV2
1226
1430
  # },
1227
1431
  # action: {
1228
1432
  # block: {
1433
+ # custom_response: {
1434
+ # response_code: 1, # required
1435
+ # custom_response_body_key: "EntityName",
1436
+ # response_headers: [
1437
+ # {
1438
+ # name: "CustomHTTPHeaderName", # required
1439
+ # value: "CustomHTTPHeaderValue", # required
1440
+ # },
1441
+ # ],
1442
+ # },
1229
1443
  # },
1230
1444
  # allow: {
1445
+ # custom_request_handling: {
1446
+ # insert_headers: [ # required
1447
+ # {
1448
+ # name: "CustomHTTPHeaderName", # required
1449
+ # value: "CustomHTTPHeaderValue", # required
1450
+ # },
1451
+ # ],
1452
+ # },
1231
1453
  # },
1232
1454
  # count: {
1455
+ # custom_request_handling: {
1456
+ # insert_headers: [ # required
1457
+ # {
1458
+ # name: "CustomHTTPHeaderName", # required
1459
+ # value: "CustomHTTPHeaderValue", # required
1460
+ # },
1461
+ # ],
1462
+ # },
1233
1463
  # },
1234
1464
  # },
1235
1465
  # override_action: {
1236
1466
  # count: {
1467
+ # custom_request_handling: {
1468
+ # insert_headers: [ # required
1469
+ # {
1470
+ # name: "CustomHTTPHeaderName", # required
1471
+ # value: "CustomHTTPHeaderValue", # required
1472
+ # },
1473
+ # ],
1474
+ # },
1237
1475
  # },
1238
1476
  # none: {
1239
1477
  # },
@@ -1256,6 +1494,12 @@ module Aws::WAFV2
1256
1494
  # value: "TagValue", # required
1257
1495
  # },
1258
1496
  # ],
1497
+ # custom_response_bodies: {
1498
+ # "EntityName" => {
1499
+ # content_type: "TEXT_PLAIN", # required, accepts TEXT_PLAIN, TEXT_HTML, APPLICATION_JSON
1500
+ # content: "ResponseContent", # required
1501
+ # },
1502
+ # },
1259
1503
  # }
1260
1504
  #
1261
1505
  # @!attribute [rw] name
@@ -1297,8 +1541,7 @@ module Aws::WAFV2
1297
1541
  # @return [Integer]
1298
1542
  #
1299
1543
  # @!attribute [rw] description
1300
- # A description of the rule group that helps with identification. You
1301
- # cannot change the description of a rule group after you create it.
1544
+ # A description of the rule group that helps with identification.
1302
1545
  # @return [String]
1303
1546
  #
1304
1547
  # @!attribute [rw] rules
@@ -1317,6 +1560,27 @@ module Aws::WAFV2
1317
1560
  # An array of key:value pairs to associate with the resource.
1318
1561
  # @return [Array<Types::Tag>]
1319
1562
  #
1563
+ # @!attribute [rw] custom_response_bodies
1564
+ # A map of custom response keys and content bodies. When you create a
1565
+ # rule with a block action, you can send a custom response to the web
1566
+ # request. You define these for the rule group, and then use them in
1567
+ # the rules that you define in the rule group.
1568
+ #
1569
+ # For information about customizing web requests and responses, see
1570
+ # [Customizing web requests and responses in AWS WAF][1] in the [AWS
1571
+ # WAF Developer Guide][2].
1572
+ #
1573
+ # For information about the limits on count and size for custom
1574
+ # request and response settings, see [AWS WAF quotas][3] in the [AWS
1575
+ # WAF Developer Guide][2].
1576
+ #
1577
+ #
1578
+ #
1579
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html
1580
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
1581
+ # [3]: https://docs.aws.amazon.com/waf/latest/developerguide/limits.html
1582
+ # @return [Hash<String,Types::CustomResponseBody>]
1583
+ #
1320
1584
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CreateRuleGroupRequest AWS API Documentation
1321
1585
  #
1322
1586
  class CreateRuleGroupRequest < Struct.new(
@@ -1326,7 +1590,8 @@ module Aws::WAFV2
1326
1590
  :description,
1327
1591
  :rules,
1328
1592
  :visibility_config,
1329
- :tags)
1593
+ :tags,
1594
+ :custom_response_bodies)
1330
1595
  SENSITIVE = []
1331
1596
  include Aws::Structure
1332
1597
  end
@@ -1355,8 +1620,26 @@ module Aws::WAFV2
1355
1620
  # scope: "CLOUDFRONT", # required, accepts CLOUDFRONT, REGIONAL
1356
1621
  # default_action: { # required
1357
1622
  # block: {
1623
+ # custom_response: {
1624
+ # response_code: 1, # required
1625
+ # custom_response_body_key: "EntityName",
1626
+ # response_headers: [
1627
+ # {
1628
+ # name: "CustomHTTPHeaderName", # required
1629
+ # value: "CustomHTTPHeaderValue", # required
1630
+ # },
1631
+ # ],
1632
+ # },
1358
1633
  # },
1359
1634
  # allow: {
1635
+ # custom_request_handling: {
1636
+ # insert_headers: [ # required
1637
+ # {
1638
+ # name: "CustomHTTPHeaderName", # required
1639
+ # value: "CustomHTTPHeaderValue", # required
1640
+ # },
1641
+ # ],
1642
+ # },
1360
1643
  # },
1361
1644
  # },
1362
1645
  # description: "EntityDescription",
@@ -1384,6 +1667,15 @@ module Aws::WAFV2
1384
1667
  # },
1385
1668
  # method: {
1386
1669
  # },
1670
+ # json_body: {
1671
+ # match_pattern: { # required
1672
+ # all: {
1673
+ # },
1674
+ # included_paths: ["JsonPointerPath"],
1675
+ # },
1676
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
1677
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
1678
+ # },
1387
1679
  # },
1388
1680
  # text_transformations: [ # required
1389
1681
  # {
@@ -1411,6 +1703,15 @@ module Aws::WAFV2
1411
1703
  # },
1412
1704
  # method: {
1413
1705
  # },
1706
+ # json_body: {
1707
+ # match_pattern: { # required
1708
+ # all: {
1709
+ # },
1710
+ # included_paths: ["JsonPointerPath"],
1711
+ # },
1712
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
1713
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
1714
+ # },
1414
1715
  # },
1415
1716
  # text_transformations: [ # required
1416
1717
  # {
@@ -1437,6 +1738,15 @@ module Aws::WAFV2
1437
1738
  # },
1438
1739
  # method: {
1439
1740
  # },
1741
+ # json_body: {
1742
+ # match_pattern: { # required
1743
+ # all: {
1744
+ # },
1745
+ # included_paths: ["JsonPointerPath"],
1746
+ # },
1747
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
1748
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
1749
+ # },
1440
1750
  # },
1441
1751
  # text_transformations: [ # required
1442
1752
  # {
@@ -1463,6 +1773,15 @@ module Aws::WAFV2
1463
1773
  # },
1464
1774
  # method: {
1465
1775
  # },
1776
+ # json_body: {
1777
+ # match_pattern: { # required
1778
+ # all: {
1779
+ # },
1780
+ # included_paths: ["JsonPointerPath"],
1781
+ # },
1782
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
1783
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
1784
+ # },
1466
1785
  # },
1467
1786
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
1468
1787
  # size: 1, # required
@@ -1515,6 +1834,15 @@ module Aws::WAFV2
1515
1834
  # },
1516
1835
  # method: {
1517
1836
  # },
1837
+ # json_body: {
1838
+ # match_pattern: { # required
1839
+ # all: {
1840
+ # },
1841
+ # included_paths: ["JsonPointerPath"],
1842
+ # },
1843
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
1844
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
1845
+ # },
1518
1846
  # },
1519
1847
  # text_transformations: [ # required
1520
1848
  # {
@@ -1565,14 +1893,48 @@ module Aws::WAFV2
1565
1893
  # },
1566
1894
  # action: {
1567
1895
  # block: {
1896
+ # custom_response: {
1897
+ # response_code: 1, # required
1898
+ # custom_response_body_key: "EntityName",
1899
+ # response_headers: [
1900
+ # {
1901
+ # name: "CustomHTTPHeaderName", # required
1902
+ # value: "CustomHTTPHeaderValue", # required
1903
+ # },
1904
+ # ],
1905
+ # },
1568
1906
  # },
1569
1907
  # allow: {
1908
+ # custom_request_handling: {
1909
+ # insert_headers: [ # required
1910
+ # {
1911
+ # name: "CustomHTTPHeaderName", # required
1912
+ # value: "CustomHTTPHeaderValue", # required
1913
+ # },
1914
+ # ],
1915
+ # },
1570
1916
  # },
1571
1917
  # count: {
1918
+ # custom_request_handling: {
1919
+ # insert_headers: [ # required
1920
+ # {
1921
+ # name: "CustomHTTPHeaderName", # required
1922
+ # value: "CustomHTTPHeaderValue", # required
1923
+ # },
1924
+ # ],
1925
+ # },
1572
1926
  # },
1573
1927
  # },
1574
1928
  # override_action: {
1575
1929
  # count: {
1930
+ # custom_request_handling: {
1931
+ # insert_headers: [ # required
1932
+ # {
1933
+ # name: "CustomHTTPHeaderName", # required
1934
+ # value: "CustomHTTPHeaderValue", # required
1935
+ # },
1936
+ # ],
1937
+ # },
1576
1938
  # },
1577
1939
  # none: {
1578
1940
  # },
@@ -1595,6 +1957,12 @@ module Aws::WAFV2
1595
1957
  # value: "TagValue", # required
1596
1958
  # },
1597
1959
  # ],
1960
+ # custom_response_bodies: {
1961
+ # "EntityName" => {
1962
+ # content_type: "TEXT_PLAIN", # required, accepts TEXT_PLAIN, TEXT_HTML, APPLICATION_JSON
1963
+ # content: "ResponseContent", # required
1964
+ # },
1965
+ # },
1598
1966
  # }
1599
1967
  #
1600
1968
  # @!attribute [rw] name
@@ -1623,8 +1991,7 @@ module Aws::WAFV2
1623
1991
  # @return [Types::DefaultAction]
1624
1992
  #
1625
1993
  # @!attribute [rw] description
1626
- # A description of the Web ACL that helps with identification. You
1627
- # cannot change the description of a Web ACL after you create it.
1994
+ # A description of the Web ACL that helps with identification.
1628
1995
  # @return [String]
1629
1996
  #
1630
1997
  # @!attribute [rw] rules
@@ -1643,6 +2010,27 @@ module Aws::WAFV2
1643
2010
  # An array of key:value pairs to associate with the resource.
1644
2011
  # @return [Array<Types::Tag>]
1645
2012
  #
2013
+ # @!attribute [rw] custom_response_bodies
2014
+ # A map of custom response keys and content bodies. When you create a
2015
+ # rule with a block action, you can send a custom response to the web
2016
+ # request. You define these for the web ACL, and then use them in the
2017
+ # rules and default actions that you define in the web ACL.
2018
+ #
2019
+ # For information about customizing web requests and responses, see
2020
+ # [Customizing web requests and responses in AWS WAF][1] in the [AWS
2021
+ # WAF Developer Guide][2].
2022
+ #
2023
+ # For information about the limits on count and size for custom
2024
+ # request and response settings, see [AWS WAF quotas][3] in the [AWS
2025
+ # WAF Developer Guide][2].
2026
+ #
2027
+ #
2028
+ #
2029
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html
2030
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2031
+ # [3]: https://docs.aws.amazon.com/waf/latest/developerguide/limits.html
2032
+ # @return [Hash<String,Types::CustomResponseBody>]
2033
+ #
1646
2034
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CreateWebACLRequest AWS API Documentation
1647
2035
  #
1648
2036
  class CreateWebACLRequest < Struct.new(
@@ -1652,7 +2040,8 @@ module Aws::WAFV2
1652
2040
  :description,
1653
2041
  :rules,
1654
2042
  :visibility_config,
1655
- :tags)
2043
+ :tags,
2044
+ :custom_response_bodies)
1656
2045
  SENSITIVE = []
1657
2046
  include Aws::Structure
1658
2047
  end
@@ -1672,28 +2061,232 @@ module Aws::WAFV2
1672
2061
  include Aws::Structure
1673
2062
  end
1674
2063
 
1675
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
1676
- # in November, 2019. For information, including how to migrate your AWS
1677
- # WAF resources from the prior release, see the [AWS WAF Developer
1678
- # Guide][1].
2064
+ # A custom header for custom request and response handling. This is used
2065
+ # in CustomResponse and CustomRequestHandling.
1679
2066
  #
1680
- # </note>
2067
+ # @note When making an API call, you may pass CustomHTTPHeader
2068
+ # data as a hash:
1681
2069
  #
1682
- # In a WebACL, this is the action that you want AWS WAF to perform when
1683
- # a web request doesn't match any of the rules in the `WebACL`. The
1684
- # default action must be a terminating action, so count is not allowed.
2070
+ # {
2071
+ # name: "CustomHTTPHeaderName", # required
2072
+ # value: "CustomHTTPHeaderValue", # required
2073
+ # }
1685
2074
  #
2075
+ # @!attribute [rw] name
2076
+ # The name of the custom header.
1686
2077
  #
2078
+ # For custom request header insertion, when AWS WAF inserts the header
2079
+ # into the request, it prefixes this name `x-amzn-waf-`, to avoid
2080
+ # confusion with the headers that are already in the request. For
2081
+ # example, for the header name `sample`, AWS WAF inserts the header
2082
+ # `x-amzn-waf-sample`.
2083
+ # @return [String]
1687
2084
  #
1688
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2085
+ # @!attribute [rw] value
2086
+ # The value of the custom header.
2087
+ # @return [String]
2088
+ #
2089
+ # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CustomHTTPHeader AWS API Documentation
2090
+ #
2091
+ class CustomHTTPHeader < Struct.new(
2092
+ :name,
2093
+ :value)
2094
+ SENSITIVE = []
2095
+ include Aws::Structure
2096
+ end
2097
+
2098
+ # Custom request handling behavior that inserts custom headers into a
2099
+ # web request. You can add custom request handling for the rule actions
2100
+ # allow and count.
2101
+ #
2102
+ # For information about customizing web requests and responses, see
2103
+ # [Customizing web requests and responses in AWS WAF][1] in the [AWS WAF
2104
+ # Developer Guide][2].
2105
+ #
2106
+ #
2107
+ #
2108
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html
2109
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2110
+ #
2111
+ # @note When making an API call, you may pass CustomRequestHandling
2112
+ # data as a hash:
2113
+ #
2114
+ # {
2115
+ # insert_headers: [ # required
2116
+ # {
2117
+ # name: "CustomHTTPHeaderName", # required
2118
+ # value: "CustomHTTPHeaderValue", # required
2119
+ # },
2120
+ # ],
2121
+ # }
2122
+ #
2123
+ # @!attribute [rw] insert_headers
2124
+ # The HTTP headers to insert into the request. Duplicate header names
2125
+ # are not allowed.
2126
+ #
2127
+ # For information about the limits on count and size for custom
2128
+ # request and response settings, see [AWS WAF quotas][1] in the [AWS
2129
+ # WAF Developer Guide][2].
2130
+ #
2131
+ #
2132
+ #
2133
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/limits.html
2134
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2135
+ # @return [Array<Types::CustomHTTPHeader>]
2136
+ #
2137
+ # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CustomRequestHandling AWS API Documentation
2138
+ #
2139
+ class CustomRequestHandling < Struct.new(
2140
+ :insert_headers)
2141
+ SENSITIVE = []
2142
+ include Aws::Structure
2143
+ end
2144
+
2145
+ # A custom response to send to the client. You can define a custom
2146
+ # response for rule actions and default web ACL actions that are set to
2147
+ # BlockAction.
2148
+ #
2149
+ # For information about customizing web requests and responses, see
2150
+ # [Customizing web requests and responses in AWS WAF][1] in the [AWS WAF
2151
+ # Developer Guide][2].
2152
+ #
2153
+ #
2154
+ #
2155
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html
2156
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2157
+ #
2158
+ # @note When making an API call, you may pass CustomResponse
2159
+ # data as a hash:
2160
+ #
2161
+ # {
2162
+ # response_code: 1, # required
2163
+ # custom_response_body_key: "EntityName",
2164
+ # response_headers: [
2165
+ # {
2166
+ # name: "CustomHTTPHeaderName", # required
2167
+ # value: "CustomHTTPHeaderValue", # required
2168
+ # },
2169
+ # ],
2170
+ # }
2171
+ #
2172
+ # @!attribute [rw] response_code
2173
+ # The HTTP status code to return to the client.
2174
+ #
2175
+ # For a list of status codes that you can use in your custom
2176
+ # reqponses, see [Supported status codes for custom response][1] in
2177
+ # the [AWS WAF Developer Guide][2].
2178
+ #
2179
+ #
2180
+ #
2181
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/customizing-the-response-status-codes.html
2182
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2183
+ # @return [Integer]
2184
+ #
2185
+ # @!attribute [rw] custom_response_body_key
2186
+ # References the response body that you want AWS WAF to return to the
2187
+ # web request client. You can define a custom response for a rule
2188
+ # action or a default web ACL action that is set to block. To do this,
2189
+ # you first define the response body key and value in the
2190
+ # `CustomResponseBodies` setting for the WebACL or RuleGroup where you
2191
+ # want to use it. Then, in the rule action or web ACL default action
2192
+ # `BlockAction` setting, you reference the response body using this
2193
+ # key.
2194
+ # @return [String]
2195
+ #
2196
+ # @!attribute [rw] response_headers
2197
+ # The HTTP headers to use in the response. Duplicate header names are
2198
+ # not allowed.
2199
+ #
2200
+ # For information about the limits on count and size for custom
2201
+ # request and response settings, see [AWS WAF quotas][1] in the [AWS
2202
+ # WAF Developer Guide][2].
2203
+ #
2204
+ #
2205
+ #
2206
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/limits.html
2207
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2208
+ # @return [Array<Types::CustomHTTPHeader>]
2209
+ #
2210
+ # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CustomResponse AWS API Documentation
2211
+ #
2212
+ class CustomResponse < Struct.new(
2213
+ :response_code,
2214
+ :custom_response_body_key,
2215
+ :response_headers)
2216
+ SENSITIVE = []
2217
+ include Aws::Structure
2218
+ end
2219
+
2220
+ # The response body to use in a custom response to a web request. This
2221
+ # is referenced by key from CustomResponse `CustomResponseBodyKey`.
2222
+ #
2223
+ # @note When making an API call, you may pass CustomResponseBody
2224
+ # data as a hash:
2225
+ #
2226
+ # {
2227
+ # content_type: "TEXT_PLAIN", # required, accepts TEXT_PLAIN, TEXT_HTML, APPLICATION_JSON
2228
+ # content: "ResponseContent", # required
2229
+ # }
2230
+ #
2231
+ # @!attribute [rw] content_type
2232
+ # The type of content in the payload that you are defining in the
2233
+ # `Content` string.
2234
+ # @return [String]
2235
+ #
2236
+ # @!attribute [rw] content
2237
+ # The payload of the custom response.
2238
+ #
2239
+ # You can use JSON escape strings in JSON content. To do this, you
2240
+ # must specify JSON content in the `ContentType` setting.
2241
+ #
2242
+ # For information about the limits on count and size for custom
2243
+ # request and response settings, see [AWS WAF quotas][1] in the [AWS
2244
+ # WAF Developer Guide][2].
2245
+ #
2246
+ #
2247
+ #
2248
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/limits.html
2249
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2250
+ # @return [String]
2251
+ #
2252
+ # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/CustomResponseBody AWS API Documentation
2253
+ #
2254
+ class CustomResponseBody < Struct.new(
2255
+ :content_type,
2256
+ :content)
2257
+ SENSITIVE = []
2258
+ include Aws::Structure
2259
+ end
2260
+
2261
+ # In a WebACL, this is the action that you want AWS WAF to perform when
2262
+ # a web request doesn't match any of the rules in the `WebACL`. The
2263
+ # default action must be a terminating action, so you can't use count.
1689
2264
  #
1690
2265
  # @note When making an API call, you may pass DefaultAction
1691
2266
  # data as a hash:
1692
2267
  #
1693
2268
  # {
1694
2269
  # block: {
2270
+ # custom_response: {
2271
+ # response_code: 1, # required
2272
+ # custom_response_body_key: "EntityName",
2273
+ # response_headers: [
2274
+ # {
2275
+ # name: "CustomHTTPHeaderName", # required
2276
+ # value: "CustomHTTPHeaderValue", # required
2277
+ # },
2278
+ # ],
2279
+ # },
1695
2280
  # },
1696
2281
  # allow: {
2282
+ # custom_request_handling: {
2283
+ # insert_headers: [ # required
2284
+ # {
2285
+ # name: "CustomHTTPHeaderName", # required
2286
+ # value: "CustomHTTPHeaderValue", # required
2287
+ # },
2288
+ # ],
2289
+ # },
1697
2290
  # },
1698
2291
  # }
1699
2292
  #
@@ -2171,22 +2764,11 @@ module Aws::WAFV2
2171
2764
  #
2172
2765
  class DisassociateWebACLResponse < Aws::EmptyStructure; end
2173
2766
 
2174
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
2175
- # in November, 2019. For information, including how to migrate your AWS
2176
- # WAF resources from the prior release, see the [AWS WAF Developer
2177
- # Guide][1].
2178
- #
2179
- # </note>
2180
- #
2181
2767
  # Specifies a single rule to exclude from the rule group. Excluding a
2182
2768
  # rule overrides its action setting for the rule group in the web ACL,
2183
2769
  # setting it to `COUNT`. This effectively excludes the rule from acting
2184
2770
  # on web requests.
2185
2771
  #
2186
- #
2187
- #
2188
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2189
- #
2190
2772
  # @note When making an API call, you may pass ExcludedRule
2191
2773
  # data as a hash:
2192
2774
  #
@@ -2206,13 +2788,6 @@ module Aws::WAFV2
2206
2788
  include Aws::Structure
2207
2789
  end
2208
2790
 
2209
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
2210
- # in November, 2019. For information, including how to migrate your AWS
2211
- # WAF resources from the prior release, see the [AWS WAF Developer
2212
- # Guide][1].
2213
- #
2214
- # </note>
2215
- #
2216
2791
  # The part of a web request that you want AWS WAF to inspect. Include
2217
2792
  # the single `FieldToMatch` type that you want to inspect, with
2218
2793
  # additional specifications as needed, according to the type. You
@@ -2220,10 +2795,6 @@ module Aws::WAFV2
2220
2795
  # statement that requires it. To inspect more than one component of a
2221
2796
  # web request, create a separate rule statement for each component.
2222
2797
  #
2223
- #
2224
- #
2225
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2226
- #
2227
2798
  # @note When making an API call, you may pass FieldToMatch
2228
2799
  # data as a hash:
2229
2800
  #
@@ -2244,12 +2815,23 @@ module Aws::WAFV2
2244
2815
  # },
2245
2816
  # method: {
2246
2817
  # },
2818
+ # json_body: {
2819
+ # match_pattern: { # required
2820
+ # all: {
2821
+ # },
2822
+ # included_paths: ["JsonPointerPath"],
2823
+ # },
2824
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
2825
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
2826
+ # },
2247
2827
  # }
2248
2828
  #
2249
2829
  # @!attribute [rw] single_header
2250
2830
  # Inspect a single header. Provide the name of the header to inspect,
2251
2831
  # for example, `User-Agent` or `Referer`. This setting isn't case
2252
2832
  # sensitive.
2833
+ #
2834
+ # Example JSON: `"SingleHeader": \{ "Name": "haystack" \}`
2253
2835
  # @return [Types::SingleHeader]
2254
2836
  #
2255
2837
  # @!attribute [rw] single_query_argument
@@ -2259,6 +2841,8 @@ module Aws::WAFV2
2259
2841
  #
2260
2842
  # This is used only to indicate the web request component for AWS WAF
2261
2843
  # to inspect, in the FieldToMatch specification.
2844
+ #
2845
+ # Example JSON: `"SingleQueryArgument": \{ "Name": "myArgument" \}`
2262
2846
  # @return [Types::SingleQueryArgument]
2263
2847
  #
2264
2848
  # @!attribute [rw] all_query_arguments
@@ -2276,10 +2860,10 @@ module Aws::WAFV2
2276
2860
  # @return [Types::QueryString]
2277
2861
  #
2278
2862
  # @!attribute [rw] body
2279
- # Inspect the request body, which immediately follows the request
2280
- # headers. This is the part of a request that contains any additional
2281
- # data that you want to send to your web server as the HTTP request
2282
- # body, such as data from a form.
2863
+ # Inspect the request body as plain text. The request body immediately
2864
+ # follows the request headers. This is the part of a request that
2865
+ # contains any additional data that you want to send to your web
2866
+ # server as the HTTP request body, such as data from a form.
2283
2867
  #
2284
2868
  # Note that only the first 8 KB (8192 bytes) of the request body are
2285
2869
  # forwarded to AWS WAF for inspection by the underlying host service.
@@ -2297,6 +2881,23 @@ module Aws::WAFV2
2297
2881
  # that the request is asking the origin to perform.
2298
2882
  # @return [Types::Method]
2299
2883
  #
2884
+ # @!attribute [rw] json_body
2885
+ # Inspect the request body as JSON. The request body immediately
2886
+ # follows the request headers. This is the part of a request that
2887
+ # contains any additional data that you want to send to your web
2888
+ # server as the HTTP request body, such as data from a form.
2889
+ #
2890
+ # Note that only the first 8 KB (8192 bytes) of the request body are
2891
+ # forwarded to AWS WAF for inspection by the underlying host service.
2892
+ # If you don't need to inspect more than 8 KB, you can guarantee that
2893
+ # you don't allow additional bytes in by combining a statement that
2894
+ # inspects the body of the web request, such as ByteMatchStatement or
2895
+ # RegexPatternSetReferenceStatement, with a SizeConstraintStatement
2896
+ # that enforces an 8 KB size limit on the body of the request. AWS WAF
2897
+ # doesn't support inspecting the entire contents of web requests
2898
+ # whose bodies exceed the 8 KB limit.
2899
+ # @return [Types::JsonBody]
2900
+ #
2300
2901
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/FieldToMatch AWS API Documentation
2301
2902
  #
2302
2903
  class FieldToMatch < Struct.new(
@@ -2306,7 +2907,8 @@ module Aws::WAFV2
2306
2907
  :uri_path,
2307
2908
  :query_string,
2308
2909
  :body,
2309
- :method)
2910
+ :method,
2911
+ :json_body)
2310
2912
  SENSITIVE = []
2311
2913
  include Aws::Structure
2312
2914
  end
@@ -2352,19 +2954,8 @@ module Aws::WAFV2
2352
2954
  # @return [Types::OverrideAction]
2353
2955
  #
2354
2956
  # @!attribute [rw] visibility_config
2355
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
2356
- # in November, 2019. For information, including how to migrate your
2357
- # AWS WAF resources from the prior release, see the [AWS WAF Developer
2358
- # Guide][1].
2359
- #
2360
- # </note>
2361
- #
2362
2957
  # Defines and enables Amazon CloudWatch metrics and web request sample
2363
2958
  # collection.
2364
- #
2365
- #
2366
- #
2367
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2368
2959
  # @return [Types::VisibilityConfig]
2369
2960
  #
2370
2961
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/FirewallManagerRuleGroup AWS API Documentation
@@ -2384,13 +2975,6 @@ module Aws::WAFV2
2384
2975
  # reference.
2385
2976
  #
2386
2977
  # @!attribute [rw] managed_rule_group_statement
2387
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
2388
- # in November, 2019. For information, including how to migrate your
2389
- # AWS WAF resources from the prior release, see the [AWS WAF Developer
2390
- # Guide][1].
2391
- #
2392
- # </note>
2393
- #
2394
2978
  # A rule statement used to run the rules that are defined in a managed
2395
2979
  # rule group. To use this, provide the vendor name and the name of the
2396
2980
  # rule group in this statement. You can retrieve the required names by
@@ -2399,20 +2983,9 @@ module Aws::WAFV2
2399
2983
  # You can't nest a `ManagedRuleGroupStatement`, for example for use
2400
2984
  # inside a `NotStatement` or `OrStatement`. It can only be referenced
2401
2985
  # as a top-level statement within a rule.
2402
- #
2403
- #
2404
- #
2405
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2406
2986
  # @return [Types::ManagedRuleGroupStatement]
2407
2987
  #
2408
2988
  # @!attribute [rw] rule_group_reference_statement
2409
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
2410
- # in November, 2019. For information, including how to migrate your
2411
- # AWS WAF resources from the prior release, see the [AWS WAF Developer
2412
- # Guide][1].
2413
- #
2414
- # </note>
2415
- #
2416
2989
  # A rule statement used to run the rules that are defined in a
2417
2990
  # RuleGroup. To use this, create a rule group with your rules, then
2418
2991
  # provide the ARN of the rule group in this statement.
@@ -2420,10 +2993,6 @@ module Aws::WAFV2
2420
2993
  # You cannot nest a `RuleGroupReferenceStatement`, for example for use
2421
2994
  # inside a `NotStatement` or `OrStatement`. It can only be referenced
2422
2995
  # as a top-level statement within a rule.
2423
- #
2424
- #
2425
- #
2426
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2427
2996
  # @return [Types::RuleGroupReferenceStatement]
2428
2997
  #
2429
2998
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/FirewallManagerStatement AWS API Documentation
@@ -2482,10 +3051,10 @@ module Aws::WAFV2
2482
3051
  #
2483
3052
  # You can specify the following fallback behaviors:
2484
3053
  #
2485
- # * MATCH - Treat the web request as matching the rule statement. AWS
2486
- # WAF applies the rule action to the request.
3054
+ # * `MATCH` - Treat the web request as matching the rule statement.
3055
+ # AWS WAF applies the rule action to the request.
2487
3056
  #
2488
- # * NO\_MATCH - Treat the web request as not matching the rule
3057
+ # * `NO_MATCH` - Treat the web request as not matching the rule
2489
3058
  # statement.
2490
3059
  # @return [String]
2491
3060
  #
@@ -2498,20 +3067,9 @@ module Aws::WAFV2
2498
3067
  include Aws::Structure
2499
3068
  end
2500
3069
 
2501
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
2502
- # in November, 2019. For information, including how to migrate your AWS
2503
- # WAF resources from the prior release, see the [AWS WAF Developer
2504
- # Guide][1].
2505
- #
2506
- # </note>
2507
- #
2508
3070
  # A rule statement used to identify web requests based on country of
2509
3071
  # origin.
2510
3072
  #
2511
- #
2512
- #
2513
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
2514
- #
2515
3073
  # @note When making an API call, you may pass GeoMatchStatement
2516
3074
  # data as a hash:
2517
3075
  #
@@ -2934,7 +3492,8 @@ module Aws::WAFV2
2934
3492
  # You must specify the times in Coordinated Universal Time (UTC)
2935
3493
  # format. UTC format includes the special designator, `Z`. For
2936
3494
  # example, `"2016-09-27T14:50Z"`. You can specify any time range in
2937
- # the previous three hours.
3495
+ # the previous three hours. If you specify a start time that's
3496
+ # earlier than three hours ago, AWS WAF sets it to three hours ago.
2938
3497
  # @return [Types::TimeWindow]
2939
3498
  #
2940
3499
  # @!attribute [rw] max_items
@@ -3091,22 +3650,11 @@ module Aws::WAFV2
3091
3650
  include Aws::Structure
3092
3651
  end
3093
3652
 
3094
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
3095
- # in November, 2019. For information, including how to migrate your AWS
3096
- # WAF resources from the prior release, see the [AWS WAF Developer
3097
- # Guide][1].
3098
- #
3099
- # </note>
3100
- #
3101
3653
  # Part of the response from GetSampledRequests. This is a complex type
3102
3654
  # that appears as `Headers` in the response syntax. `HTTPHeader`
3103
3655
  # contains the names and values of all of the headers that appear in one
3104
3656
  # of the web requests.
3105
3657
  #
3106
- #
3107
- #
3108
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
3109
- #
3110
3658
  # @!attribute [rw] name
3111
3659
  # The name of the HTTP header.
3112
3660
  # @return [String]
@@ -3124,21 +3672,10 @@ module Aws::WAFV2
3124
3672
  include Aws::Structure
3125
3673
  end
3126
3674
 
3127
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
3128
- # in November, 2019. For information, including how to migrate your AWS
3129
- # WAF resources from the prior release, see the [AWS WAF Developer
3130
- # Guide][1].
3131
- #
3132
- # </note>
3133
- #
3134
3675
  # Part of the response from GetSampledRequests. This is a complex type
3135
3676
  # that appears as `Request` in the response syntax. `HTTPRequest`
3136
3677
  # contains information about one of the web requests.
3137
3678
  #
3138
- #
3139
- #
3140
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
3141
- #
3142
3679
  # @!attribute [rw] client_ip
3143
3680
  # The IP address that the request originated from. If the web ACL is
3144
3681
  # associated with a CloudFront distribution, this is the value of one
@@ -3193,17 +3730,11 @@ module Aws::WAFV2
3193
3730
  include Aws::Structure
3194
3731
  end
3195
3732
 
3196
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
3197
- # in November, 2019. For information, including how to migrate your AWS
3198
- # WAF resources from the prior release, see the [AWS WAF Developer
3199
- # Guide][1].
3200
- #
3201
- # </note>
3202
- #
3203
3733
  # Contains one or more IP addresses or blocks of IP addresses specified
3204
3734
  # in Classless Inter-Domain Routing (CIDR) notation. AWS WAF supports
3205
- # any CIDR range. For information about CIDR notation, see the Wikipedia
3206
- # entry [Classless Inter-Domain Routing][2].
3735
+ # all IPv4 and IPv6 CIDR ranges except for /0. For information about
3736
+ # CIDR notation, see the Wikipedia entry [Classless Inter-Domain
3737
+ # Routing][1].
3207
3738
  #
3208
3739
  # AWS WAF assigns an ARN to each `IPSet` that you create. To use an IP
3209
3740
  # set in a rule, you provide the ARN to the Rule statement
@@ -3211,8 +3742,7 @@ module Aws::WAFV2
3211
3742
  #
3212
3743
  #
3213
3744
  #
3214
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
3215
- # [2]: https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing
3745
+ # [1]: https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing
3216
3746
  #
3217
3747
  # @!attribute [rw] name
3218
3748
  # The name of the IP set. You cannot change the name of an `IPSet`
@@ -3230,8 +3760,7 @@ module Aws::WAFV2
3230
3760
  # @return [String]
3231
3761
  #
3232
3762
  # @!attribute [rw] description
3233
- # A description of the IP set that helps with identification. You
3234
- # cannot change the description of an IP set after you create it.
3763
+ # A description of the IP set that helps with identification.
3235
3764
  # @return [String]
3236
3765
  #
3237
3766
  # @!attribute [rw] ip_address_version
@@ -3241,8 +3770,8 @@ module Aws::WAFV2
3241
3770
  # @!attribute [rw] addresses
3242
3771
  # Contains an array of strings that specify one or more IP addresses
3243
3772
  # or blocks of IP addresses in Classless Inter-Domain Routing (CIDR)
3244
- # notation. AWS WAF supports all address ranges for IP versions IPv4
3245
- # and IPv6.
3773
+ # notation. AWS WAF supports all IPv4 and IPv6 CIDR ranges except for
3774
+ # /0.
3246
3775
  #
3247
3776
  # Examples:
3248
3777
  #
@@ -3331,10 +3860,10 @@ module Aws::WAFV2
3331
3860
  #
3332
3861
  # You can specify the following fallback behaviors:
3333
3862
  #
3334
- # * MATCH - Treat the web request as matching the rule statement. AWS
3335
- # WAF applies the rule action to the request.
3863
+ # * `MATCH` - Treat the web request as matching the rule statement.
3864
+ # AWS WAF applies the rule action to the request.
3336
3865
  #
3337
- # * NO\_MATCH - Treat the web request as not matching the rule
3866
+ # * `NO_MATCH` - Treat the web request as not matching the rule
3338
3867
  # statement.
3339
3868
  # @return [String]
3340
3869
  #
@@ -3368,13 +3897,6 @@ module Aws::WAFV2
3368
3897
  include Aws::Structure
3369
3898
  end
3370
3899
 
3371
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
3372
- # in November, 2019. For information, including how to migrate your AWS
3373
- # WAF resources from the prior release, see the [AWS WAF Developer
3374
- # Guide][1].
3375
- #
3376
- # </note>
3377
- #
3378
3900
  # A rule statement used to detect web requests coming from particular IP
3379
3901
  # addresses or address ranges. To use this, create an IPSet that
3380
3902
  # specifies the addresses you want to detect, then use the ARN of that
@@ -3385,10 +3907,6 @@ module Aws::WAFV2
3385
3907
  # single set in multiple rules. When you update the referenced set, AWS
3386
3908
  # WAF automatically updates all rules that reference it.
3387
3909
  #
3388
- #
3389
- #
3390
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
3391
- #
3392
3910
  # @note When making an API call, you may pass IPSetReferenceStatement
3393
3911
  # data as a hash:
3394
3912
  #
@@ -3427,22 +3945,11 @@ module Aws::WAFV2
3427
3945
  include Aws::Structure
3428
3946
  end
3429
3947
 
3430
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
3431
- # in November, 2019. For information, including how to migrate your AWS
3432
- # WAF resources from the prior release, see the [AWS WAF Developer
3433
- # Guide][1].
3434
- #
3435
- # </note>
3436
- #
3437
3948
  # High-level information about an IPSet, returned by operations like
3438
3949
  # create and list. This provides information like the ID, that you can
3439
3950
  # use to retrieve and manage an `IPSet`, and the ARN, that you provide
3440
3951
  # to the IPSetReferenceStatement to use the address set in a Rule.
3441
3952
  #
3442
- #
3443
- #
3444
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
3445
- #
3446
3953
  # @!attribute [rw] name
3447
3954
  # The name of the IP set. You cannot change the name of an `IPSet`
3448
3955
  # after you create it.
@@ -3455,8 +3962,7 @@ module Aws::WAFV2
3455
3962
  # @return [String]
3456
3963
  #
3457
3964
  # @!attribute [rw] description
3458
- # A description of the IP set that helps with identification. You
3459
- # cannot change the description of an IP set after you create it.
3965
+ # A description of the IP set that helps with identification.
3460
3966
  # @return [String]
3461
3967
  #
3462
3968
  # @!attribute [rw] lock_token
@@ -3487,6 +3993,123 @@ module Aws::WAFV2
3487
3993
  include Aws::Structure
3488
3994
  end
3489
3995
 
3996
+ # The body of a web request, inspected as JSON. The body immediately
3997
+ # follows the request headers. This is used in the FieldToMatch
3998
+ # specification.
3999
+ #
4000
+ # Use the specifications in this object to indicate which parts of the
4001
+ # JSON body to inspect using the rule's inspection criteria. AWS WAF
4002
+ # inspects only the parts of the JSON that result from the matches that
4003
+ # you indicate.
4004
+ #
4005
+ # @note When making an API call, you may pass JsonBody
4006
+ # data as a hash:
4007
+ #
4008
+ # {
4009
+ # match_pattern: { # required
4010
+ # all: {
4011
+ # },
4012
+ # included_paths: ["JsonPointerPath"],
4013
+ # },
4014
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
4015
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
4016
+ # }
4017
+ #
4018
+ # @!attribute [rw] match_pattern
4019
+ # The patterns to look for in the JSON body. AWS WAF inspects the
4020
+ # results of these pattern matches against the rule inspection
4021
+ # criteria.
4022
+ # @return [Types::JsonMatchPattern]
4023
+ #
4024
+ # @!attribute [rw] match_scope
4025
+ # The parts of the JSON to match against using the `MatchPattern`. If
4026
+ # you specify `All`, AWS WAF matches against keys and values.
4027
+ # @return [String]
4028
+ #
4029
+ # @!attribute [rw] invalid_fallback_behavior
4030
+ # The inspection behavior to fall back to if the JSON in the request
4031
+ # body is invalid. For AWS WAF, invalid JSON is any content that
4032
+ # isn't complete syntactical JSON, content whose root node isn't an
4033
+ # object or an array, and duplicate keys in the content.
4034
+ #
4035
+ # You can specify the following fallback behaviors:
4036
+ #
4037
+ # * `MATCH` - Treat the web request as matching the rule statement.
4038
+ # AWS WAF applies the rule action to the request.
4039
+ #
4040
+ # * `NO_MATCH` - Treat the web request as not matching the rule
4041
+ # statement.
4042
+ #
4043
+ # * `EVALUATE_AS_STRING` - Inspect the body as plain text. This option
4044
+ # applies the text transformations and inspection criteria that you
4045
+ # defined for the JSON inspection to the body text string.
4046
+ #
4047
+ # If you don't provide this setting, when AWS WAF encounters invalid
4048
+ # JSON, it parses and inspects what it can, up to the first invalid
4049
+ # JSON that it encounters.
4050
+ # @return [String]
4051
+ #
4052
+ # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/JsonBody AWS API Documentation
4053
+ #
4054
+ class JsonBody < Struct.new(
4055
+ :match_pattern,
4056
+ :match_scope,
4057
+ :invalid_fallback_behavior)
4058
+ SENSITIVE = []
4059
+ include Aws::Structure
4060
+ end
4061
+
4062
+ # The patterns to look for in the JSON body. AWS WAF inspects the
4063
+ # results of these pattern matches against the rule inspection criteria.
4064
+ # This is used with the FieldToMatch option `JsonBody`.
4065
+ #
4066
+ # @note When making an API call, you may pass JsonMatchPattern
4067
+ # data as a hash:
4068
+ #
4069
+ # {
4070
+ # all: {
4071
+ # },
4072
+ # included_paths: ["JsonPointerPath"],
4073
+ # }
4074
+ #
4075
+ # @!attribute [rw] all
4076
+ # Match all of the elements. See also `MatchScope` in JsonBody.
4077
+ #
4078
+ # You must specify either this setting or the `IncludedPaths` setting,
4079
+ # but not both.
4080
+ # @return [Types::All]
4081
+ #
4082
+ # @!attribute [rw] included_paths
4083
+ # Match only the specified include paths. See also `MatchScope` in
4084
+ # JsonBody.
4085
+ #
4086
+ # Provide the include paths using JSON Pointer syntax. For example,
4087
+ # `"IncludedPaths": ["/dogs/0/name", "/dogs/1/name"]`. For information
4088
+ # about this syntax, see the Internet Engineering Task Force (IETF)
4089
+ # documentation [JavaScript Object Notation (JSON) Pointer][1].
4090
+ #
4091
+ # You must specify either this setting or the `All` setting, but not
4092
+ # both.
4093
+ #
4094
+ # <note markdown="1"> Don't use this option to include all paths. Instead, use the `All`
4095
+ # setting.
4096
+ #
4097
+ # </note>
4098
+ #
4099
+ #
4100
+ #
4101
+ # [1]: https://tools.ietf.org/html/rfc6901
4102
+ # @return [Array<String>]
4103
+ #
4104
+ # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/JsonMatchPattern AWS API Documentation
4105
+ #
4106
+ class JsonMatchPattern < Struct.new(
4107
+ :all,
4108
+ :included_paths)
4109
+ SENSITIVE = []
4110
+ include Aws::Structure
4111
+ end
4112
+
3490
4113
  # @note When making an API call, you may pass ListAvailableManagedRuleGroupsRequest
3491
4114
  # data as a hash:
3492
4115
  #
@@ -4002,22 +4625,11 @@ module Aws::WAFV2
4002
4625
  include Aws::Structure
4003
4626
  end
4004
4627
 
4005
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
4006
- # in November, 2019. For information, including how to migrate your AWS
4007
- # WAF resources from the prior release, see the [AWS WAF Developer
4008
- # Guide][1].
4009
- #
4010
- # </note>
4011
- #
4012
4628
  # Defines an association between Amazon Kinesis Data Firehose
4013
4629
  # destinations and a web ACL resource, for logging from AWS WAF. As part
4014
4630
  # of the association, you can specify parts of the standard logging
4015
4631
  # fields to keep out of the logs.
4016
4632
  #
4017
- #
4018
- #
4019
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
4020
- #
4021
4633
  # @note When making an API call, you may pass LoggingConfiguration
4022
4634
  # data as a hash:
4023
4635
  #
@@ -4042,6 +4654,15 @@ module Aws::WAFV2
4042
4654
  # },
4043
4655
  # method: {
4044
4656
  # },
4657
+ # json_body: {
4658
+ # match_pattern: { # required
4659
+ # all: {
4660
+ # },
4661
+ # included_paths: ["JsonPointerPath"],
4662
+ # },
4663
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
4664
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
4665
+ # },
4045
4666
  # },
4046
4667
  # ],
4047
4668
  # managed_by_firewall_manager: false,
@@ -4085,13 +4706,6 @@ module Aws::WAFV2
4085
4706
  include Aws::Structure
4086
4707
  end
4087
4708
 
4088
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
4089
- # in November, 2019. For information, including how to migrate your AWS
4090
- # WAF resources from the prior release, see the [AWS WAF Developer
4091
- # Guide][1].
4092
- #
4093
- # </note>
4094
- #
4095
4709
  # A rule statement used to run the rules that are defined in a managed
4096
4710
  # rule group. To use this, provide the vendor name and the name of the
4097
4711
  # rule group in this statement. You can retrieve the required names by
@@ -4101,10 +4715,6 @@ module Aws::WAFV2
4101
4715
  # inside a `NotStatement` or `OrStatement`. It can only be referenced as
4102
4716
  # a top-level statement within a rule.
4103
4717
  #
4104
- #
4105
- #
4106
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
4107
- #
4108
4718
  # @note When making an API call, you may pass ManagedRuleGroupStatement
4109
4719
  # data as a hash:
4110
4720
  #
@@ -4144,13 +4754,6 @@ module Aws::WAFV2
4144
4754
  include Aws::Structure
4145
4755
  end
4146
4756
 
4147
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
4148
- # in November, 2019. For information, including how to migrate your AWS
4149
- # WAF resources from the prior release, see the [AWS WAF Developer
4150
- # Guide][1].
4151
- #
4152
- # </note>
4153
- #
4154
4757
  # High-level information about a managed rule group, returned by
4155
4758
  # ListAvailableManagedRuleGroups. This provides information like the
4156
4759
  # name and vendor name, that you provide when you add a
@@ -4159,10 +4762,6 @@ module Aws::WAFV2
4159
4762
  # customers, and AWS Marketplace managed rule groups, which you can
4160
4763
  # subscribe to through AWS Marketplace.
4161
4764
  #
4162
- #
4163
- #
4164
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
4165
- #
4166
4765
  # @!attribute [rw] vendor_name
4167
4766
  # The name of the managed rule group vendor. You use this, along with
4168
4767
  # the rule group name, to identify the rule group.
@@ -4188,46 +4787,24 @@ module Aws::WAFV2
4188
4787
  include Aws::Structure
4189
4788
  end
4190
4789
 
4191
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
4192
- # in November, 2019. For information, including how to migrate your AWS
4193
- # WAF resources from the prior release, see the [AWS WAF Developer
4194
- # Guide][1].
4195
- #
4196
- # </note>
4197
- #
4198
4790
  # The HTTP method of a web request. The method indicates the type of
4199
4791
  # operation that the request is asking the origin to perform.
4200
4792
  #
4201
4793
  # This is used only to indicate the web request component for AWS WAF to
4202
4794
  # inspect, in the FieldToMatch specification.
4203
4795
  #
4204
- #
4205
- #
4206
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
4207
- #
4208
4796
  # @api private
4209
4797
  #
4210
4798
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/Method AWS API Documentation
4211
4799
  #
4212
4800
  class Method < Aws::EmptyStructure; end
4213
4801
 
4214
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
4215
- # in November, 2019. For information, including how to migrate your AWS
4216
- # WAF resources from the prior release, see the [AWS WAF Developer
4217
- # Guide][1].
4218
- #
4219
- # </note>
4220
- #
4221
4802
  # Specifies that AWS WAF should do nothing. This is generally used to
4222
4803
  # try out a rule without performing any actions. You set the
4223
4804
  # `OverrideAction` on the Rule.
4224
4805
  #
4225
- # This is used only in the context of other settings, for example to
4226
- # specify values for RuleAction and web ACL DefaultAction.
4227
- #
4228
- #
4229
- #
4230
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
4806
+ # This is used in the context of other settings, for example to specify
4807
+ # values for RuleAction and web ACL DefaultAction.
4231
4808
  #
4232
4809
  # @api private
4233
4810
  #
@@ -4235,20 +4812,9 @@ module Aws::WAFV2
4235
4812
  #
4236
4813
  class NoneAction < Aws::EmptyStructure; end
4237
4814
 
4238
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
4239
- # in November, 2019. For information, including how to migrate your AWS
4240
- # WAF resources from the prior release, see the [AWS WAF Developer
4241
- # Guide][1].
4242
- #
4243
- # </note>
4244
- #
4245
4815
  # A logical rule statement used to negate the results of another rule
4246
4816
  # statement. You provide one Statement within the `NotStatement`.
4247
4817
  #
4248
- #
4249
- #
4250
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
4251
- #
4252
4818
  # @note When making an API call, you may pass NotStatement
4253
4819
  # data as a hash:
4254
4820
  #
@@ -4273,6 +4839,15 @@ module Aws::WAFV2
4273
4839
  # },
4274
4840
  # method: {
4275
4841
  # },
4842
+ # json_body: {
4843
+ # match_pattern: { # required
4844
+ # all: {
4845
+ # },
4846
+ # included_paths: ["JsonPointerPath"],
4847
+ # },
4848
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
4849
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
4850
+ # },
4276
4851
  # },
4277
4852
  # text_transformations: [ # required
4278
4853
  # {
@@ -4300,6 +4875,15 @@ module Aws::WAFV2
4300
4875
  # },
4301
4876
  # method: {
4302
4877
  # },
4878
+ # json_body: {
4879
+ # match_pattern: { # required
4880
+ # all: {
4881
+ # },
4882
+ # included_paths: ["JsonPointerPath"],
4883
+ # },
4884
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
4885
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
4886
+ # },
4303
4887
  # },
4304
4888
  # text_transformations: [ # required
4305
4889
  # {
@@ -4326,6 +4910,15 @@ module Aws::WAFV2
4326
4910
  # },
4327
4911
  # method: {
4328
4912
  # },
4913
+ # json_body: {
4914
+ # match_pattern: { # required
4915
+ # all: {
4916
+ # },
4917
+ # included_paths: ["JsonPointerPath"],
4918
+ # },
4919
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
4920
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
4921
+ # },
4329
4922
  # },
4330
4923
  # text_transformations: [ # required
4331
4924
  # {
@@ -4352,6 +4945,15 @@ module Aws::WAFV2
4352
4945
  # },
4353
4946
  # method: {
4354
4947
  # },
4948
+ # json_body: {
4949
+ # match_pattern: { # required
4950
+ # all: {
4951
+ # },
4952
+ # included_paths: ["JsonPointerPath"],
4953
+ # },
4954
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
4955
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
4956
+ # },
4355
4957
  # },
4356
4958
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
4357
4959
  # size: 1, # required
@@ -4404,6 +5006,15 @@ module Aws::WAFV2
4404
5006
  # },
4405
5007
  # method: {
4406
5008
  # },
5009
+ # json_body: {
5010
+ # match_pattern: { # required
5011
+ # all: {
5012
+ # },
5013
+ # included_paths: ["JsonPointerPath"],
5014
+ # },
5015
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5016
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5017
+ # },
4407
5018
  # },
4408
5019
  # text_transformations: [ # required
4409
5020
  # {
@@ -4467,20 +5078,9 @@ module Aws::WAFV2
4467
5078
  include Aws::Structure
4468
5079
  end
4469
5080
 
4470
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
4471
- # in November, 2019. For information, including how to migrate your AWS
4472
- # WAF resources from the prior release, see the [AWS WAF Developer
4473
- # Guide][1].
4474
- #
4475
- # </note>
4476
- #
4477
5081
  # A logical rule statement used to combine other rule statements with OR
4478
5082
  # logic. You provide more than one Statement within the `OrStatement`.
4479
5083
  #
4480
- #
4481
- #
4482
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
4483
- #
4484
5084
  # @note When making an API call, you may pass OrStatement
4485
5085
  # data as a hash:
4486
5086
  #
@@ -4506,6 +5106,15 @@ module Aws::WAFV2
4506
5106
  # },
4507
5107
  # method: {
4508
5108
  # },
5109
+ # json_body: {
5110
+ # match_pattern: { # required
5111
+ # all: {
5112
+ # },
5113
+ # included_paths: ["JsonPointerPath"],
5114
+ # },
5115
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5116
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5117
+ # },
4509
5118
  # },
4510
5119
  # text_transformations: [ # required
4511
5120
  # {
@@ -4533,6 +5142,15 @@ module Aws::WAFV2
4533
5142
  # },
4534
5143
  # method: {
4535
5144
  # },
5145
+ # json_body: {
5146
+ # match_pattern: { # required
5147
+ # all: {
5148
+ # },
5149
+ # included_paths: ["JsonPointerPath"],
5150
+ # },
5151
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5152
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5153
+ # },
4536
5154
  # },
4537
5155
  # text_transformations: [ # required
4538
5156
  # {
@@ -4559,6 +5177,15 @@ module Aws::WAFV2
4559
5177
  # },
4560
5178
  # method: {
4561
5179
  # },
5180
+ # json_body: {
5181
+ # match_pattern: { # required
5182
+ # all: {
5183
+ # },
5184
+ # included_paths: ["JsonPointerPath"],
5185
+ # },
5186
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5187
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5188
+ # },
4562
5189
  # },
4563
5190
  # text_transformations: [ # required
4564
5191
  # {
@@ -4585,6 +5212,15 @@ module Aws::WAFV2
4585
5212
  # },
4586
5213
  # method: {
4587
5214
  # },
5215
+ # json_body: {
5216
+ # match_pattern: { # required
5217
+ # all: {
5218
+ # },
5219
+ # included_paths: ["JsonPointerPath"],
5220
+ # },
5221
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5222
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5223
+ # },
4588
5224
  # },
4589
5225
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
4590
5226
  # size: 1, # required
@@ -4637,6 +5273,15 @@ module Aws::WAFV2
4637
5273
  # },
4638
5274
  # method: {
4639
5275
  # },
5276
+ # json_body: {
5277
+ # match_pattern: { # required
5278
+ # all: {
5279
+ # },
5280
+ # included_paths: ["JsonPointerPath"],
5281
+ # },
5282
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5283
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5284
+ # },
4640
5285
  # },
4641
5286
  # text_transformations: [ # required
4642
5287
  # {
@@ -4719,6 +5364,14 @@ module Aws::WAFV2
4719
5364
  #
4720
5365
  # {
4721
5366
  # count: {
5367
+ # custom_request_handling: {
5368
+ # insert_headers: [ # required
5369
+ # {
5370
+ # name: "CustomHTTPHeaderName", # required
5371
+ # value: "CustomHTTPHeaderValue", # required
5372
+ # },
5373
+ # ],
5374
+ # },
4722
5375
  # },
4723
5376
  # none: {
4724
5377
  # },
@@ -4766,6 +5419,15 @@ module Aws::WAFV2
4766
5419
  # },
4767
5420
  # method: {
4768
5421
  # },
5422
+ # json_body: {
5423
+ # match_pattern: { # required
5424
+ # all: {
5425
+ # },
5426
+ # included_paths: ["JsonPointerPath"],
5427
+ # },
5428
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5429
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5430
+ # },
4769
5431
  # },
4770
5432
  # ],
4771
5433
  # managed_by_firewall_manager: false,
@@ -4846,36 +5508,18 @@ module Aws::WAFV2
4846
5508
  #
4847
5509
  class PutPermissionPolicyResponse < Aws::EmptyStructure; end
4848
5510
 
4849
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
4850
- # in November, 2019. For information, including how to migrate your AWS
4851
- # WAF resources from the prior release, see the [AWS WAF Developer
4852
- # Guide][1].
4853
- #
4854
- # </note>
4855
- #
4856
5511
  # The query string of a web request. This is the part of a URL that
4857
5512
  # appears after a `?` character, if any.
4858
5513
  #
4859
5514
  # This is used only to indicate the web request component for AWS WAF to
4860
5515
  # inspect, in the FieldToMatch specification.
4861
5516
  #
4862
- #
4863
- #
4864
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
4865
- #
4866
5517
  # @api private
4867
5518
  #
4868
5519
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/QueryString AWS API Documentation
4869
5520
  #
4870
5521
  class QueryString < Aws::EmptyStructure; end
4871
5522
 
4872
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
4873
- # in November, 2019. For information, including how to migrate your AWS
4874
- # WAF resources from the prior release, see the [AWS WAF Developer
4875
- # Guide][1].
4876
- #
4877
- # </note>
4878
- #
4879
5523
  # A rate-based rule tracks the rate of requests for each originating IP
4880
5524
  # address, and triggers the rule action when the rate exceeds a limit
4881
5525
  # that you specify on the number of requests in any 5-minute time span.
@@ -4909,10 +5553,6 @@ module Aws::WAFV2
4909
5553
  # `NotStatement` or `OrStatement`. It can only be referenced as a
4910
5554
  # top-level statement within a rule.
4911
5555
  #
4912
- #
4913
- #
4914
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
4915
- #
4916
5556
  # @note When making an API call, you may pass RateBasedStatement
4917
5557
  # data as a hash:
4918
5558
  #
@@ -4939,6 +5579,15 @@ module Aws::WAFV2
4939
5579
  # },
4940
5580
  # method: {
4941
5581
  # },
5582
+ # json_body: {
5583
+ # match_pattern: { # required
5584
+ # all: {
5585
+ # },
5586
+ # included_paths: ["JsonPointerPath"],
5587
+ # },
5588
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5589
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5590
+ # },
4942
5591
  # },
4943
5592
  # text_transformations: [ # required
4944
5593
  # {
@@ -4966,6 +5615,15 @@ module Aws::WAFV2
4966
5615
  # },
4967
5616
  # method: {
4968
5617
  # },
5618
+ # json_body: {
5619
+ # match_pattern: { # required
5620
+ # all: {
5621
+ # },
5622
+ # included_paths: ["JsonPointerPath"],
5623
+ # },
5624
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5625
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5626
+ # },
4969
5627
  # },
4970
5628
  # text_transformations: [ # required
4971
5629
  # {
@@ -4992,6 +5650,15 @@ module Aws::WAFV2
4992
5650
  # },
4993
5651
  # method: {
4994
5652
  # },
5653
+ # json_body: {
5654
+ # match_pattern: { # required
5655
+ # all: {
5656
+ # },
5657
+ # included_paths: ["JsonPointerPath"],
5658
+ # },
5659
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5660
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5661
+ # },
4995
5662
  # },
4996
5663
  # text_transformations: [ # required
4997
5664
  # {
@@ -5018,6 +5685,15 @@ module Aws::WAFV2
5018
5685
  # },
5019
5686
  # method: {
5020
5687
  # },
5688
+ # json_body: {
5689
+ # match_pattern: { # required
5690
+ # all: {
5691
+ # },
5692
+ # included_paths: ["JsonPointerPath"],
5693
+ # },
5694
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5695
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5696
+ # },
5021
5697
  # },
5022
5698
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
5023
5699
  # size: 1, # required
@@ -5070,6 +5746,15 @@ module Aws::WAFV2
5070
5746
  # },
5071
5747
  # method: {
5072
5748
  # },
5749
+ # json_body: {
5750
+ # match_pattern: { # required
5751
+ # all: {
5752
+ # },
5753
+ # included_paths: ["JsonPointerPath"],
5754
+ # },
5755
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5756
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5757
+ # },
5073
5758
  # },
5074
5759
  # text_transformations: [ # required
5075
5760
  # {
@@ -5174,20 +5859,9 @@ module Aws::WAFV2
5174
5859
  include Aws::Structure
5175
5860
  end
5176
5861
 
5177
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
5178
- # in November, 2019. For information, including how to migrate your AWS
5179
- # WAF resources from the prior release, see the [AWS WAF Developer
5180
- # Guide][1].
5181
- #
5182
- # </note>
5183
- #
5184
5862
  # The set of IP addresses that are currently blocked for a rate-based
5185
5863
  # statement.
5186
5864
  #
5187
- #
5188
- #
5189
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
5190
- #
5191
5865
  # @!attribute [rw] ip_address_version
5192
5866
  # @return [String]
5193
5867
  #
@@ -5204,19 +5878,8 @@ module Aws::WAFV2
5204
5878
  include Aws::Structure
5205
5879
  end
5206
5880
 
5207
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
5208
- # in November, 2019. For information, including how to migrate your AWS
5209
- # WAF resources from the prior release, see the [AWS WAF Developer
5210
- # Guide][1].
5211
- #
5212
- # </note>
5213
- #
5214
5881
  # A single regular expression. This is used in a RegexPatternSet.
5215
5882
  #
5216
- #
5217
- #
5218
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
5219
- #
5220
5883
  # @note When making an API call, you may pass Regex
5221
5884
  # data as a hash:
5222
5885
  #
@@ -5236,23 +5899,12 @@ module Aws::WAFV2
5236
5899
  include Aws::Structure
5237
5900
  end
5238
5901
 
5239
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
5240
- # in November, 2019. For information, including how to migrate your AWS
5241
- # WAF resources from the prior release, see the [AWS WAF Developer
5242
- # Guide][1].
5243
- #
5244
- # </note>
5245
- #
5246
5902
  # Contains one or more regular expressions.
5247
5903
  #
5248
5904
  # AWS WAF assigns an ARN to each `RegexPatternSet` that you create. To
5249
5905
  # use a set in a rule, you provide the ARN to the Rule statement
5250
5906
  # RegexPatternSetReferenceStatement.
5251
5907
  #
5252
- #
5253
- #
5254
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
5255
- #
5256
5908
  # @!attribute [rw] name
5257
5909
  # The name of the set. You cannot change the name after you create the
5258
5910
  # set.
@@ -5269,8 +5921,7 @@ module Aws::WAFV2
5269
5921
  # @return [String]
5270
5922
  #
5271
5923
  # @!attribute [rw] description
5272
- # A description of the set that helps with identification. You cannot
5273
- # change the description of a set after you create it.
5924
+ # A description of the set that helps with identification.
5274
5925
  # @return [String]
5275
5926
  #
5276
5927
  # @!attribute [rw] regular_expression_list
@@ -5289,13 +5940,6 @@ module Aws::WAFV2
5289
5940
  include Aws::Structure
5290
5941
  end
5291
5942
 
5292
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
5293
- # in November, 2019. For information, including how to migrate your AWS
5294
- # WAF resources from the prior release, see the [AWS WAF Developer
5295
- # Guide][1].
5296
- #
5297
- # </note>
5298
- #
5299
5943
  # A rule statement used to search web request components for matches
5300
5944
  # with regular expressions. To use this, create a RegexPatternSet that
5301
5945
  # specifies the expressions that you want to detect, then use the ARN of
@@ -5309,10 +5953,6 @@ module Aws::WAFV2
5309
5953
  # referenced set, AWS WAF automatically updates all rules that reference
5310
5954
  # it.
5311
5955
  #
5312
- #
5313
- #
5314
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
5315
- #
5316
5956
  # @note When making an API call, you may pass RegexPatternSetReferenceStatement
5317
5957
  # data as a hash:
5318
5958
  #
@@ -5335,6 +5975,15 @@ module Aws::WAFV2
5335
5975
  # },
5336
5976
  # method: {
5337
5977
  # },
5978
+ # json_body: {
5979
+ # match_pattern: { # required
5980
+ # all: {
5981
+ # },
5982
+ # included_paths: ["JsonPointerPath"],
5983
+ # },
5984
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
5985
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
5986
+ # },
5338
5987
  # },
5339
5988
  # text_transformations: [ # required
5340
5989
  # {
@@ -5373,23 +6022,12 @@ module Aws::WAFV2
5373
6022
  include Aws::Structure
5374
6023
  end
5375
6024
 
5376
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
5377
- # in November, 2019. For information, including how to migrate your AWS
5378
- # WAF resources from the prior release, see the [AWS WAF Developer
5379
- # Guide][1].
5380
- #
5381
- # </note>
5382
- #
5383
6025
  # High-level information about a RegexPatternSet, returned by operations
5384
6026
  # like create and list. This provides information like the ID, that you
5385
6027
  # can use to retrieve and manage a `RegexPatternSet`, and the ARN, that
5386
6028
  # you provide to the RegexPatternSetReferenceStatement to use the
5387
6029
  # pattern set in a Rule.
5388
6030
  #
5389
- #
5390
- #
5391
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
5392
- #
5393
6031
  # @!attribute [rw] name
5394
6032
  # The name of the data type instance. You cannot change the name after
5395
6033
  # you create the instance.
@@ -5402,8 +6040,7 @@ module Aws::WAFV2
5402
6040
  # @return [String]
5403
6041
  #
5404
6042
  # @!attribute [rw] description
5405
- # A description of the set that helps with identification. You cannot
5406
- # change the description of a set after you create it.
6043
+ # A description of the set that helps with identification.
5407
6044
  # @return [String]
5408
6045
  #
5409
6046
  # @!attribute [rw] lock_token
@@ -5434,23 +6071,12 @@ module Aws::WAFV2
5434
6071
  include Aws::Structure
5435
6072
  end
5436
6073
 
5437
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
5438
- # in November, 2019. For information, including how to migrate your AWS
5439
- # WAF resources from the prior release, see the [AWS WAF Developer
5440
- # Guide][1].
5441
- #
5442
- # </note>
5443
- #
5444
6074
  # A single rule, which you can use in a WebACL or RuleGroup to identify
5445
6075
  # web requests that you want to allow, block, or count. Each rule
5446
6076
  # includes one top-level Statement that AWS WAF uses to identify
5447
6077
  # matching web requests, and parameters that govern how AWS WAF handles
5448
6078
  # them.
5449
6079
  #
5450
- #
5451
- #
5452
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
5453
- #
5454
6080
  # @note When making an API call, you may pass Rule
5455
6081
  # data as a hash:
5456
6082
  #
@@ -5477,6 +6103,15 @@ module Aws::WAFV2
5477
6103
  # },
5478
6104
  # method: {
5479
6105
  # },
6106
+ # json_body: {
6107
+ # match_pattern: { # required
6108
+ # all: {
6109
+ # },
6110
+ # included_paths: ["JsonPointerPath"],
6111
+ # },
6112
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
6113
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
6114
+ # },
5480
6115
  # },
5481
6116
  # text_transformations: [ # required
5482
6117
  # {
@@ -5504,6 +6139,15 @@ module Aws::WAFV2
5504
6139
  # },
5505
6140
  # method: {
5506
6141
  # },
6142
+ # json_body: {
6143
+ # match_pattern: { # required
6144
+ # all: {
6145
+ # },
6146
+ # included_paths: ["JsonPointerPath"],
6147
+ # },
6148
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
6149
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
6150
+ # },
5507
6151
  # },
5508
6152
  # text_transformations: [ # required
5509
6153
  # {
@@ -5530,6 +6174,15 @@ module Aws::WAFV2
5530
6174
  # },
5531
6175
  # method: {
5532
6176
  # },
6177
+ # json_body: {
6178
+ # match_pattern: { # required
6179
+ # all: {
6180
+ # },
6181
+ # included_paths: ["JsonPointerPath"],
6182
+ # },
6183
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
6184
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
6185
+ # },
5533
6186
  # },
5534
6187
  # text_transformations: [ # required
5535
6188
  # {
@@ -5556,6 +6209,15 @@ module Aws::WAFV2
5556
6209
  # },
5557
6210
  # method: {
5558
6211
  # },
6212
+ # json_body: {
6213
+ # match_pattern: { # required
6214
+ # all: {
6215
+ # },
6216
+ # included_paths: ["JsonPointerPath"],
6217
+ # },
6218
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
6219
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
6220
+ # },
5559
6221
  # },
5560
6222
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
5561
6223
  # size: 1, # required
@@ -5608,6 +6270,15 @@ module Aws::WAFV2
5608
6270
  # },
5609
6271
  # method: {
5610
6272
  # },
6273
+ # json_body: {
6274
+ # match_pattern: { # required
6275
+ # all: {
6276
+ # },
6277
+ # included_paths: ["JsonPointerPath"],
6278
+ # },
6279
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
6280
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
6281
+ # },
5611
6282
  # },
5612
6283
  # text_transformations: [ # required
5613
6284
  # {
@@ -5658,14 +6329,48 @@ module Aws::WAFV2
5658
6329
  # },
5659
6330
  # action: {
5660
6331
  # block: {
6332
+ # custom_response: {
6333
+ # response_code: 1, # required
6334
+ # custom_response_body_key: "EntityName",
6335
+ # response_headers: [
6336
+ # {
6337
+ # name: "CustomHTTPHeaderName", # required
6338
+ # value: "CustomHTTPHeaderValue", # required
6339
+ # },
6340
+ # ],
6341
+ # },
5661
6342
  # },
5662
6343
  # allow: {
6344
+ # custom_request_handling: {
6345
+ # insert_headers: [ # required
6346
+ # {
6347
+ # name: "CustomHTTPHeaderName", # required
6348
+ # value: "CustomHTTPHeaderValue", # required
6349
+ # },
6350
+ # ],
6351
+ # },
5663
6352
  # },
5664
6353
  # count: {
6354
+ # custom_request_handling: {
6355
+ # insert_headers: [ # required
6356
+ # {
6357
+ # name: "CustomHTTPHeaderName", # required
6358
+ # value: "CustomHTTPHeaderValue", # required
6359
+ # },
6360
+ # ],
6361
+ # },
5665
6362
  # },
5666
6363
  # },
5667
6364
  # override_action: {
5668
6365
  # count: {
6366
+ # custom_request_handling: {
6367
+ # insert_headers: [ # required
6368
+ # {
6369
+ # name: "CustomHTTPHeaderName", # required
6370
+ # value: "CustomHTTPHeaderValue", # required
6371
+ # },
6372
+ # ],
6373
+ # },
5669
6374
  # },
5670
6375
  # none: {
5671
6376
  # },
@@ -5749,32 +6454,47 @@ module Aws::WAFV2
5749
6454
  :visibility_config)
5750
6455
  SENSITIVE = []
5751
6456
  include Aws::Structure
5752
- end
5753
-
5754
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
5755
- # in November, 2019. For information, including how to migrate your AWS
5756
- # WAF resources from the prior release, see the [AWS WAF Developer
5757
- # Guide][1].
5758
- #
5759
- # </note>
5760
- #
6457
+ end
6458
+
5761
6459
  # The action that AWS WAF should take on a web request when it matches a
5762
6460
  # rule's statement. Settings at the web ACL level can override the rule
5763
6461
  # action setting.
5764
6462
  #
5765
- #
5766
- #
5767
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
5768
- #
5769
6463
  # @note When making an API call, you may pass RuleAction
5770
6464
  # data as a hash:
5771
6465
  #
5772
6466
  # {
5773
6467
  # block: {
6468
+ # custom_response: {
6469
+ # response_code: 1, # required
6470
+ # custom_response_body_key: "EntityName",
6471
+ # response_headers: [
6472
+ # {
6473
+ # name: "CustomHTTPHeaderName", # required
6474
+ # value: "CustomHTTPHeaderValue", # required
6475
+ # },
6476
+ # ],
6477
+ # },
5774
6478
  # },
5775
6479
  # allow: {
6480
+ # custom_request_handling: {
6481
+ # insert_headers: [ # required
6482
+ # {
6483
+ # name: "CustomHTTPHeaderName", # required
6484
+ # value: "CustomHTTPHeaderValue", # required
6485
+ # },
6486
+ # ],
6487
+ # },
5776
6488
  # },
5777
6489
  # count: {
6490
+ # custom_request_handling: {
6491
+ # insert_headers: [ # required
6492
+ # {
6493
+ # name: "CustomHTTPHeaderName", # required
6494
+ # value: "CustomHTTPHeaderValue", # required
6495
+ # },
6496
+ # ],
6497
+ # },
5778
6498
  # },
5779
6499
  # }
5780
6500
  #
@@ -5800,23 +6520,12 @@ module Aws::WAFV2
5800
6520
  include Aws::Structure
5801
6521
  end
5802
6522
 
5803
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
5804
- # in November, 2019. For information, including how to migrate your AWS
5805
- # WAF resources from the prior release, see the [AWS WAF Developer
5806
- # Guide][1].
5807
- #
5808
- # </note>
5809
- #
5810
6523
  # A rule group defines a collection of rules to inspect and control web
5811
6524
  # requests that you can use in a WebACL. When you create a rule group,
5812
6525
  # you define an immutable capacity limit. If you update a rule group,
5813
6526
  # you must stay within the capacity. This allows others to reuse the
5814
6527
  # rule group with confidence in its capacity requirements.
5815
6528
  #
5816
- #
5817
- #
5818
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
5819
- #
5820
6529
  # @!attribute [rw] name
5821
6530
  # The name of the rule group. You cannot change the name of a rule
5822
6531
  # group after you create it.
@@ -5851,8 +6560,7 @@ module Aws::WAFV2
5851
6560
  # @return [String]
5852
6561
  #
5853
6562
  # @!attribute [rw] description
5854
- # A description of the rule group that helps with identification. You
5855
- # cannot change the description of a rule group after you create it.
6563
+ # A description of the rule group that helps with identification.
5856
6564
  # @return [String]
5857
6565
  #
5858
6566
  # @!attribute [rw] rules
@@ -5867,6 +6575,27 @@ module Aws::WAFV2
5867
6575
  # collection.
5868
6576
  # @return [Types::VisibilityConfig]
5869
6577
  #
6578
+ # @!attribute [rw] custom_response_bodies
6579
+ # A map of custom response keys and content bodies. When you create a
6580
+ # rule with a block action, you can send a custom response to the web
6581
+ # request. You define these for the rule group, and then use them in
6582
+ # the rules that you define in the rule group.
6583
+ #
6584
+ # For information about customizing web requests and responses, see
6585
+ # [Customizing web requests and responses in AWS WAF][1] in the [AWS
6586
+ # WAF Developer Guide][2].
6587
+ #
6588
+ # For information about the limits on count and size for custom
6589
+ # request and response settings, see [AWS WAF quotas][3] in the [AWS
6590
+ # WAF Developer Guide][2].
6591
+ #
6592
+ #
6593
+ #
6594
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html
6595
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
6596
+ # [3]: https://docs.aws.amazon.com/waf/latest/developerguide/limits.html
6597
+ # @return [Hash<String,Types::CustomResponseBody>]
6598
+ #
5870
6599
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/RuleGroup AWS API Documentation
5871
6600
  #
5872
6601
  class RuleGroup < Struct.new(
@@ -5876,18 +6605,12 @@ module Aws::WAFV2
5876
6605
  :arn,
5877
6606
  :description,
5878
6607
  :rules,
5879
- :visibility_config)
6608
+ :visibility_config,
6609
+ :custom_response_bodies)
5880
6610
  SENSITIVE = []
5881
6611
  include Aws::Structure
5882
6612
  end
5883
6613
 
5884
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
5885
- # in November, 2019. For information, including how to migrate your AWS
5886
- # WAF resources from the prior release, see the [AWS WAF Developer
5887
- # Guide][1].
5888
- #
5889
- # </note>
5890
- #
5891
6614
  # A rule statement used to run the rules that are defined in a
5892
6615
  # RuleGroup. To use this, create a rule group with your rules, then
5893
6616
  # provide the ARN of the rule group in this statement.
@@ -5896,10 +6619,6 @@ module Aws::WAFV2
5896
6619
  # inside a `NotStatement` or `OrStatement`. It can only be referenced as
5897
6620
  # a top-level statement within a rule.
5898
6621
  #
5899
- #
5900
- #
5901
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
5902
- #
5903
6622
  # @note When making an API call, you may pass RuleGroupReferenceStatement
5904
6623
  # data as a hash:
5905
6624
  #
@@ -5930,23 +6649,12 @@ module Aws::WAFV2
5930
6649
  include Aws::Structure
5931
6650
  end
5932
6651
 
5933
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
5934
- # in November, 2019. For information, including how to migrate your AWS
5935
- # WAF resources from the prior release, see the [AWS WAF Developer
5936
- # Guide][1].
5937
- #
5938
- # </note>
5939
- #
5940
6652
  # High-level information about a RuleGroup, returned by operations like
5941
6653
  # create and list. This provides information like the ID, that you can
5942
6654
  # use to retrieve and manage a `RuleGroup`, and the ARN, that you
5943
6655
  # provide to the RuleGroupReferenceStatement to use the rule group in a
5944
6656
  # Rule.
5945
6657
  #
5946
- #
5947
- #
5948
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
5949
- #
5950
6658
  # @!attribute [rw] name
5951
6659
  # The name of the data type instance. You cannot change the name after
5952
6660
  # you create the instance.
@@ -5959,8 +6667,7 @@ module Aws::WAFV2
5959
6667
  # @return [String]
5960
6668
  #
5961
6669
  # @!attribute [rw] description
5962
- # A description of the rule group that helps with identification. You
5963
- # cannot change the description of a rule group after you create it.
6670
+ # A description of the rule group that helps with identification.
5964
6671
  # @return [String]
5965
6672
  #
5966
6673
  # @!attribute [rw] lock_token
@@ -5991,42 +6698,20 @@ module Aws::WAFV2
5991
6698
  include Aws::Structure
5992
6699
  end
5993
6700
 
5994
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
5995
- # in November, 2019. For information, including how to migrate your AWS
5996
- # WAF resources from the prior release, see the [AWS WAF Developer
5997
- # Guide][1].
5998
- #
5999
- # </note>
6000
- #
6001
6701
  # High-level information about a Rule, returned by operations like
6002
6702
  # DescribeManagedRuleGroup. This provides information like the ID, that
6003
6703
  # you can use to retrieve and manage a `RuleGroup`, and the ARN, that
6004
6704
  # you provide to the RuleGroupReferenceStatement to use the rule group
6005
6705
  # in a Rule.
6006
6706
  #
6007
- #
6008
- #
6009
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
6010
- #
6011
6707
  # @!attribute [rw] name
6012
6708
  # The name of the rule.
6013
6709
  # @return [String]
6014
6710
  #
6015
6711
  # @!attribute [rw] action
6016
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
6017
- # in November, 2019. For information, including how to migrate your
6018
- # AWS WAF resources from the prior release, see the [AWS WAF Developer
6019
- # Guide][1].
6020
- #
6021
- # </note>
6022
- #
6023
6712
  # The action that AWS WAF should take on a web request when it matches
6024
6713
  # a rule's statement. Settings at the web ACL level can override the
6025
6714
  # rule action setting.
6026
- #
6027
- #
6028
- #
6029
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
6030
6715
  # @return [Types::RuleAction]
6031
6716
  #
6032
6717
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/RuleSummary AWS API Documentation
@@ -6038,23 +6723,12 @@ module Aws::WAFV2
6038
6723
  include Aws::Structure
6039
6724
  end
6040
6725
 
6041
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
6042
- # in November, 2019. For information, including how to migrate your AWS
6043
- # WAF resources from the prior release, see the [AWS WAF Developer
6044
- # Guide][1].
6045
- #
6046
- # </note>
6047
- #
6048
6726
  # Represents a single sampled web request. The response from
6049
6727
  # GetSampledRequests includes a `SampledHTTPRequests` complex type that
6050
6728
  # appears as `SampledRequests` in the response syntax.
6051
6729
  # `SampledHTTPRequests` contains an array of `SampledHTTPRequest`
6052
6730
  # objects.
6053
6731
  #
6054
- #
6055
- #
6056
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
6057
- #
6058
6732
  # @!attribute [rw] request
6059
6733
  # A complex type that contains detailed information about the request.
6060
6734
  # @return [Types::HTTPRequest]
@@ -6084,6 +6758,16 @@ module Aws::WAFV2
6084
6758
  # a rule group, this field is absent.
6085
6759
  # @return [String]
6086
6760
  #
6761
+ # @!attribute [rw] request_headers_inserted
6762
+ # Custom request headers inserted by AWS WAF into the request,
6763
+ # according to the custom request configuration for the matching rule
6764
+ # action.
6765
+ # @return [Array<Types::HTTPHeader>]
6766
+ #
6767
+ # @!attribute [rw] response_code_sent
6768
+ # The response code that was sent for the request.
6769
+ # @return [Integer]
6770
+ #
6087
6771
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/SampledHTTPRequest AWS API Documentation
6088
6772
  #
6089
6773
  class SampledHTTPRequest < Struct.new(
@@ -6091,28 +6775,19 @@ module Aws::WAFV2
6091
6775
  :weight,
6092
6776
  :timestamp,
6093
6777
  :action,
6094
- :rule_name_within_rule_group)
6778
+ :rule_name_within_rule_group,
6779
+ :request_headers_inserted,
6780
+ :response_code_sent)
6095
6781
  SENSITIVE = []
6096
6782
  include Aws::Structure
6097
6783
  end
6098
6784
 
6099
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
6100
- # in November, 2019. For information, including how to migrate your AWS
6101
- # WAF resources from the prior release, see the [AWS WAF Developer
6102
- # Guide][1].
6103
- #
6104
- # </note>
6105
- #
6106
6785
  # One of the headers in a web request, identified by name, for example,
6107
6786
  # `User-Agent` or `Referer`. This setting isn't case sensitive.
6108
6787
  #
6109
6788
  # This is used only to indicate the web request component for AWS WAF to
6110
6789
  # inspect, in the FieldToMatch specification.
6111
6790
  #
6112
- #
6113
- #
6114
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
6115
- #
6116
6791
  # @note When making an API call, you may pass SingleHeader
6117
6792
  # data as a hash:
6118
6793
  #
@@ -6132,21 +6807,10 @@ module Aws::WAFV2
6132
6807
  include Aws::Structure
6133
6808
  end
6134
6809
 
6135
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
6136
- # in November, 2019. For information, including how to migrate your AWS
6137
- # WAF resources from the prior release, see the [AWS WAF Developer
6138
- # Guide][1].
6139
- #
6140
- # </note>
6141
- #
6142
6810
  # One query argument in a web request, identified by name, for example
6143
6811
  # *UserName* or *SalesRegion*. The name can be up to 30 characters long
6144
6812
  # and isn't case sensitive.
6145
6813
  #
6146
- #
6147
- #
6148
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
6149
- #
6150
6814
  # @note When making an API call, you may pass SingleQueryArgument
6151
6815
  # data as a hash:
6152
6816
  #
@@ -6166,13 +6830,6 @@ module Aws::WAFV2
6166
6830
  include Aws::Structure
6167
6831
  end
6168
6832
 
6169
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
6170
- # in November, 2019. For information, including how to migrate your AWS
6171
- # WAF resources from the prior release, see the [AWS WAF Developer
6172
- # Guide][1].
6173
- #
6174
- # </note>
6175
- #
6176
6833
  # A rule statement that compares a number of bytes against the size of a
6177
6834
  # request component, using a comparison operator, such as greater than
6178
6835
  # (&gt;) or less than (&lt;). For example, you can use a size constraint
@@ -6188,10 +6845,6 @@ module Aws::WAFV2
6188
6845
  # the slash (/) in the URI counts as one character. For example, the URI
6189
6846
  # `/logo.jpg` is nine characters long.
6190
6847
  #
6191
- #
6192
- #
6193
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
6194
- #
6195
6848
  # @note When making an API call, you may pass SizeConstraintStatement
6196
6849
  # data as a hash:
6197
6850
  #
@@ -6213,6 +6866,15 @@ module Aws::WAFV2
6213
6866
  # },
6214
6867
  # method: {
6215
6868
  # },
6869
+ # json_body: {
6870
+ # match_pattern: { # required
6871
+ # all: {
6872
+ # },
6873
+ # included_paths: ["JsonPointerPath"],
6874
+ # },
6875
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
6876
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
6877
+ # },
6216
6878
  # },
6217
6879
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
6218
6880
  # size: 1, # required
@@ -6258,13 +6920,6 @@ module Aws::WAFV2
6258
6920
  include Aws::Structure
6259
6921
  end
6260
6922
 
6261
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
6262
- # in November, 2019. For information, including how to migrate your AWS
6263
- # WAF resources from the prior release, see the [AWS WAF Developer
6264
- # Guide][1].
6265
- #
6266
- # </note>
6267
- #
6268
6923
  # Attackers sometimes insert malicious SQL code into web requests in an
6269
6924
  # effort to extract data from your database. To allow or block web
6270
6925
  # requests that appear to contain malicious SQL code, create one or more
@@ -6274,10 +6929,6 @@ module Aws::WAFV2
6274
6929
  # you create a web ACL, you specify whether to allow or block requests
6275
6930
  # that appear to contain malicious SQL code.
6276
6931
  #
6277
- #
6278
- #
6279
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
6280
- #
6281
6932
  # @note When making an API call, you may pass SqliMatchStatement
6282
6933
  # data as a hash:
6283
6934
  #
@@ -6299,6 +6950,15 @@ module Aws::WAFV2
6299
6950
  # },
6300
6951
  # method: {
6301
6952
  # },
6953
+ # json_body: {
6954
+ # match_pattern: { # required
6955
+ # all: {
6956
+ # },
6957
+ # included_paths: ["JsonPointerPath"],
6958
+ # },
6959
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
6960
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
6961
+ # },
6302
6962
  # },
6303
6963
  # text_transformations: [ # required
6304
6964
  # {
@@ -6331,20 +6991,9 @@ module Aws::WAFV2
6331
6991
  include Aws::Structure
6332
6992
  end
6333
6993
 
6334
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
6335
- # in November, 2019. For information, including how to migrate your AWS
6336
- # WAF resources from the prior release, see the [AWS WAF Developer
6337
- # Guide][1].
6338
- #
6339
- # </note>
6340
- #
6341
6994
  # The processing guidance for a Rule, used by AWS WAF to determine
6342
6995
  # whether a web request matches the rule.
6343
6996
  #
6344
- #
6345
- #
6346
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
6347
- #
6348
6997
  # @note When making an API call, you may pass Statement
6349
6998
  # data as a hash:
6350
6999
  #
@@ -6368,6 +7017,15 @@ module Aws::WAFV2
6368
7017
  # },
6369
7018
  # method: {
6370
7019
  # },
7020
+ # json_body: {
7021
+ # match_pattern: { # required
7022
+ # all: {
7023
+ # },
7024
+ # included_paths: ["JsonPointerPath"],
7025
+ # },
7026
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7027
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7028
+ # },
6371
7029
  # },
6372
7030
  # text_transformations: [ # required
6373
7031
  # {
@@ -6395,6 +7053,15 @@ module Aws::WAFV2
6395
7053
  # },
6396
7054
  # method: {
6397
7055
  # },
7056
+ # json_body: {
7057
+ # match_pattern: { # required
7058
+ # all: {
7059
+ # },
7060
+ # included_paths: ["JsonPointerPath"],
7061
+ # },
7062
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7063
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7064
+ # },
6398
7065
  # },
6399
7066
  # text_transformations: [ # required
6400
7067
  # {
@@ -6421,6 +7088,15 @@ module Aws::WAFV2
6421
7088
  # },
6422
7089
  # method: {
6423
7090
  # },
7091
+ # json_body: {
7092
+ # match_pattern: { # required
7093
+ # all: {
7094
+ # },
7095
+ # included_paths: ["JsonPointerPath"],
7096
+ # },
7097
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7098
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7099
+ # },
6424
7100
  # },
6425
7101
  # text_transformations: [ # required
6426
7102
  # {
@@ -6447,6 +7123,15 @@ module Aws::WAFV2
6447
7123
  # },
6448
7124
  # method: {
6449
7125
  # },
7126
+ # json_body: {
7127
+ # match_pattern: { # required
7128
+ # all: {
7129
+ # },
7130
+ # included_paths: ["JsonPointerPath"],
7131
+ # },
7132
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7133
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7134
+ # },
6450
7135
  # },
6451
7136
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
6452
7137
  # size: 1, # required
@@ -6499,6 +7184,15 @@ module Aws::WAFV2
6499
7184
  # },
6500
7185
  # method: {
6501
7186
  # },
7187
+ # json_body: {
7188
+ # match_pattern: { # required
7189
+ # all: {
7190
+ # },
7191
+ # included_paths: ["JsonPointerPath"],
7192
+ # },
7193
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7194
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7195
+ # },
6502
7196
  # },
6503
7197
  # text_transformations: [ # required
6504
7198
  # {
@@ -6530,6 +7224,15 @@ module Aws::WAFV2
6530
7224
  # },
6531
7225
  # method: {
6532
7226
  # },
7227
+ # json_body: {
7228
+ # match_pattern: { # required
7229
+ # all: {
7230
+ # },
7231
+ # included_paths: ["JsonPointerPath"],
7232
+ # },
7233
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7234
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7235
+ # },
6533
7236
  # },
6534
7237
  # text_transformations: [ # required
6535
7238
  # {
@@ -6557,6 +7260,15 @@ module Aws::WAFV2
6557
7260
  # },
6558
7261
  # method: {
6559
7262
  # },
7263
+ # json_body: {
7264
+ # match_pattern: { # required
7265
+ # all: {
7266
+ # },
7267
+ # included_paths: ["JsonPointerPath"],
7268
+ # },
7269
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7270
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7271
+ # },
6560
7272
  # },
6561
7273
  # text_transformations: [ # required
6562
7274
  # {
@@ -6583,6 +7295,15 @@ module Aws::WAFV2
6583
7295
  # },
6584
7296
  # method: {
6585
7297
  # },
7298
+ # json_body: {
7299
+ # match_pattern: { # required
7300
+ # all: {
7301
+ # },
7302
+ # included_paths: ["JsonPointerPath"],
7303
+ # },
7304
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7305
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7306
+ # },
6586
7307
  # },
6587
7308
  # text_transformations: [ # required
6588
7309
  # {
@@ -6609,6 +7330,15 @@ module Aws::WAFV2
6609
7330
  # },
6610
7331
  # method: {
6611
7332
  # },
7333
+ # json_body: {
7334
+ # match_pattern: { # required
7335
+ # all: {
7336
+ # },
7337
+ # included_paths: ["JsonPointerPath"],
7338
+ # },
7339
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7340
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7341
+ # },
6612
7342
  # },
6613
7343
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
6614
7344
  # size: 1, # required
@@ -6661,6 +7391,15 @@ module Aws::WAFV2
6661
7391
  # },
6662
7392
  # method: {
6663
7393
  # },
7394
+ # json_body: {
7395
+ # match_pattern: { # required
7396
+ # all: {
7397
+ # },
7398
+ # included_paths: ["JsonPointerPath"],
7399
+ # },
7400
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7401
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7402
+ # },
6664
7403
  # },
6665
7404
  # text_transformations: [ # required
6666
7405
  # {
@@ -6728,6 +7467,15 @@ module Aws::WAFV2
6728
7467
  # },
6729
7468
  # method: {
6730
7469
  # },
7470
+ # json_body: {
7471
+ # match_pattern: { # required
7472
+ # all: {
7473
+ # },
7474
+ # included_paths: ["JsonPointerPath"],
7475
+ # },
7476
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7477
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7478
+ # },
6731
7479
  # },
6732
7480
  # text_transformations: [ # required
6733
7481
  # {
@@ -6755,6 +7503,15 @@ module Aws::WAFV2
6755
7503
  # },
6756
7504
  # method: {
6757
7505
  # },
7506
+ # json_body: {
7507
+ # match_pattern: { # required
7508
+ # all: {
7509
+ # },
7510
+ # included_paths: ["JsonPointerPath"],
7511
+ # },
7512
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7513
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7514
+ # },
6758
7515
  # },
6759
7516
  # text_transformations: [ # required
6760
7517
  # {
@@ -6781,6 +7538,15 @@ module Aws::WAFV2
6781
7538
  # },
6782
7539
  # method: {
6783
7540
  # },
7541
+ # json_body: {
7542
+ # match_pattern: { # required
7543
+ # all: {
7544
+ # },
7545
+ # included_paths: ["JsonPointerPath"],
7546
+ # },
7547
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7548
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7549
+ # },
6784
7550
  # },
6785
7551
  # text_transformations: [ # required
6786
7552
  # {
@@ -6807,6 +7573,15 @@ module Aws::WAFV2
6807
7573
  # },
6808
7574
  # method: {
6809
7575
  # },
7576
+ # json_body: {
7577
+ # match_pattern: { # required
7578
+ # all: {
7579
+ # },
7580
+ # included_paths: ["JsonPointerPath"],
7581
+ # },
7582
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7583
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7584
+ # },
6810
7585
  # },
6811
7586
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
6812
7587
  # size: 1, # required
@@ -6859,6 +7634,15 @@ module Aws::WAFV2
6859
7634
  # },
6860
7635
  # method: {
6861
7636
  # },
7637
+ # json_body: {
7638
+ # match_pattern: { # required
7639
+ # all: {
7640
+ # },
7641
+ # included_paths: ["JsonPointerPath"],
7642
+ # },
7643
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7644
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7645
+ # },
6862
7646
  # },
6863
7647
  # text_transformations: [ # required
6864
7648
  # {
@@ -6925,6 +7709,15 @@ module Aws::WAFV2
6925
7709
  # },
6926
7710
  # method: {
6927
7711
  # },
7712
+ # json_body: {
7713
+ # match_pattern: { # required
7714
+ # all: {
7715
+ # },
7716
+ # included_paths: ["JsonPointerPath"],
7717
+ # },
7718
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7719
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7720
+ # },
6928
7721
  # },
6929
7722
  # text_transformations: [ # required
6930
7723
  # {
@@ -6952,6 +7745,15 @@ module Aws::WAFV2
6952
7745
  # },
6953
7746
  # method: {
6954
7747
  # },
7748
+ # json_body: {
7749
+ # match_pattern: { # required
7750
+ # all: {
7751
+ # },
7752
+ # included_paths: ["JsonPointerPath"],
7753
+ # },
7754
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7755
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7756
+ # },
6955
7757
  # },
6956
7758
  # text_transformations: [ # required
6957
7759
  # {
@@ -6978,6 +7780,15 @@ module Aws::WAFV2
6978
7780
  # },
6979
7781
  # method: {
6980
7782
  # },
7783
+ # json_body: {
7784
+ # match_pattern: { # required
7785
+ # all: {
7786
+ # },
7787
+ # included_paths: ["JsonPointerPath"],
7788
+ # },
7789
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7790
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7791
+ # },
6981
7792
  # },
6982
7793
  # text_transformations: [ # required
6983
7794
  # {
@@ -7004,6 +7815,15 @@ module Aws::WAFV2
7004
7815
  # },
7005
7816
  # method: {
7006
7817
  # },
7818
+ # json_body: {
7819
+ # match_pattern: { # required
7820
+ # all: {
7821
+ # },
7822
+ # included_paths: ["JsonPointerPath"],
7823
+ # },
7824
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7825
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7826
+ # },
7007
7827
  # },
7008
7828
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
7009
7829
  # size: 1, # required
@@ -7056,6 +7876,15 @@ module Aws::WAFV2
7056
7876
  # },
7057
7877
  # method: {
7058
7878
  # },
7879
+ # json_body: {
7880
+ # match_pattern: { # required
7881
+ # all: {
7882
+ # },
7883
+ # included_paths: ["JsonPointerPath"],
7884
+ # },
7885
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7886
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7887
+ # },
7059
7888
  # },
7060
7889
  # text_transformations: [ # required
7061
7890
  # {
@@ -7121,6 +7950,15 @@ module Aws::WAFV2
7121
7950
  # },
7122
7951
  # method: {
7123
7952
  # },
7953
+ # json_body: {
7954
+ # match_pattern: { # required
7955
+ # all: {
7956
+ # },
7957
+ # included_paths: ["JsonPointerPath"],
7958
+ # },
7959
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7960
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7961
+ # },
7124
7962
  # },
7125
7963
  # text_transformations: [ # required
7126
7964
  # {
@@ -7148,6 +7986,15 @@ module Aws::WAFV2
7148
7986
  # },
7149
7987
  # method: {
7150
7988
  # },
7989
+ # json_body: {
7990
+ # match_pattern: { # required
7991
+ # all: {
7992
+ # },
7993
+ # included_paths: ["JsonPointerPath"],
7994
+ # },
7995
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
7996
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
7997
+ # },
7151
7998
  # },
7152
7999
  # text_transformations: [ # required
7153
8000
  # {
@@ -7174,6 +8021,15 @@ module Aws::WAFV2
7174
8021
  # },
7175
8022
  # method: {
7176
8023
  # },
8024
+ # json_body: {
8025
+ # match_pattern: { # required
8026
+ # all: {
8027
+ # },
8028
+ # included_paths: ["JsonPointerPath"],
8029
+ # },
8030
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
8031
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
8032
+ # },
7177
8033
  # },
7178
8034
  # text_transformations: [ # required
7179
8035
  # {
@@ -7200,6 +8056,15 @@ module Aws::WAFV2
7200
8056
  # },
7201
8057
  # method: {
7202
8058
  # },
8059
+ # json_body: {
8060
+ # match_pattern: { # required
8061
+ # all: {
8062
+ # },
8063
+ # included_paths: ["JsonPointerPath"],
8064
+ # },
8065
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
8066
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
8067
+ # },
7203
8068
  # },
7204
8069
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
7205
8070
  # size: 1, # required
@@ -7252,6 +8117,15 @@ module Aws::WAFV2
7252
8117
  # },
7253
8118
  # method: {
7254
8119
  # },
8120
+ # json_body: {
8121
+ # match_pattern: { # required
8122
+ # all: {
8123
+ # },
8124
+ # included_paths: ["JsonPointerPath"],
8125
+ # },
8126
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
8127
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
8128
+ # },
7255
8129
  # },
7256
8130
  # text_transformations: [ # required
7257
8131
  # {
@@ -7486,13 +8360,6 @@ module Aws::WAFV2
7486
8360
  include Aws::Structure
7487
8361
  end
7488
8362
 
7489
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
7490
- # in November, 2019. For information, including how to migrate your AWS
7491
- # WAF resources from the prior release, see the [AWS WAF Developer
7492
- # Guide][1].
7493
- #
7494
- # </note>
7495
- #
7496
8363
  # A tag associated with an AWS resource. Tags are key:value pairs that
7497
8364
  # you can use to categorize and manage your resources, for purposes like
7498
8365
  # billing or other management. Typically, the tag key represents a
@@ -7507,10 +8374,6 @@ module Aws::WAFV2
7507
8374
  # ACLs, rule groups, IP sets, and regex pattern sets. You can't manage
7508
8375
  # or view tags through the AWS WAF console.
7509
8376
  #
7510
- #
7511
- #
7512
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
7513
- #
7514
8377
  # @note When making an API call, you may pass Tag
7515
8378
  # data as a hash:
7516
8379
  #
@@ -7540,13 +8403,6 @@ module Aws::WAFV2
7540
8403
  include Aws::Structure
7541
8404
  end
7542
8405
 
7543
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
7544
- # in November, 2019. For information, including how to migrate your AWS
7545
- # WAF resources from the prior release, see the [AWS WAF Developer
7546
- # Guide][1].
7547
- #
7548
- # </note>
7549
- #
7550
8406
  # The collection of tagging definitions for an AWS resource. Tags are
7551
8407
  # key:value pairs that you can use to categorize and manage your
7552
8408
  # resources, for purposes like billing or other management. Typically,
@@ -7561,10 +8417,6 @@ module Aws::WAFV2
7561
8417
  # ACLs, rule groups, IP sets, and regex pattern sets. You can't manage
7562
8418
  # or view tags through the AWS WAF console.
7563
8419
  #
7564
- #
7565
- #
7566
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
7567
- #
7568
8420
  # @!attribute [rw] resource_arn
7569
8421
  # The Amazon Resource Name (ARN) of the resource.
7570
8422
  # @return [String]
@@ -7616,20 +8468,9 @@ module Aws::WAFV2
7616
8468
  #
7617
8469
  class TagResourceResponse < Aws::EmptyStructure; end
7618
8470
 
7619
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
7620
- # in November, 2019. For information, including how to migrate your AWS
7621
- # WAF resources from the prior release, see the [AWS WAF Developer
7622
- # Guide][1].
7623
- #
7624
- # </note>
7625
- #
7626
8471
  # Text transformations eliminate some of the unusual formatting that
7627
8472
  # attackers use in web requests in an effort to bypass detection.
7628
8473
  #
7629
- #
7630
- #
7631
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
7632
- #
7633
8474
  # @note When making an API call, you may pass TextTransformation
7634
8475
  # data as a hash:
7635
8476
  #
@@ -7727,13 +8568,6 @@ module Aws::WAFV2
7727
8568
  include Aws::Structure
7728
8569
  end
7729
8570
 
7730
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
7731
- # in November, 2019. For information, including how to migrate your AWS
7732
- # WAF resources from the prior release, see the [AWS WAF Developer
7733
- # Guide][1].
7734
- #
7735
- # </note>
7736
- #
7737
8571
  # In a GetSampledRequests request, the `StartTime` and `EndTime` objects
7738
8572
  # specify the time range for which you want AWS WAF to return a sample
7739
8573
  # of web requests.
@@ -7752,10 +8586,6 @@ module Aws::WAFV2
7752
8586
  # 5,000th request. In that case, `EndTime` is the time that AWS WAF
7753
8587
  # received the 5,000th request.
7754
8588
  #
7755
- #
7756
- #
7757
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
7758
- #
7759
8589
  # @note When making an API call, you may pass TimeWindow
7760
8590
  # data as a hash:
7761
8591
  #
@@ -7860,15 +8690,14 @@ module Aws::WAFV2
7860
8690
  # @return [String]
7861
8691
  #
7862
8692
  # @!attribute [rw] description
7863
- # A description of the IP set that helps with identification. You
7864
- # cannot change the description of an IP set after you create it.
8693
+ # A description of the IP set that helps with identification.
7865
8694
  # @return [String]
7866
8695
  #
7867
8696
  # @!attribute [rw] addresses
7868
8697
  # Contains an array of strings that specify one or more IP addresses
7869
8698
  # or blocks of IP addresses in Classless Inter-Domain Routing (CIDR)
7870
- # notation. AWS WAF supports all address ranges for IP versions IPv4
7871
- # and IPv6.
8699
+ # notation. AWS WAF supports all IPv4 and IPv6 CIDR ranges except for
8700
+ # /0.
7872
8701
  #
7873
8702
  # Examples:
7874
8703
  #
@@ -7981,8 +8810,7 @@ module Aws::WAFV2
7981
8810
  # @return [String]
7982
8811
  #
7983
8812
  # @!attribute [rw] description
7984
- # A description of the set that helps with identification. You cannot
7985
- # change the description of a set after you create it.
8813
+ # A description of the set that helps with identification.
7986
8814
  # @return [String]
7987
8815
  #
7988
8816
  # @!attribute [rw] regular_expression_list
@@ -8059,6 +8887,15 @@ module Aws::WAFV2
8059
8887
  # },
8060
8888
  # method: {
8061
8889
  # },
8890
+ # json_body: {
8891
+ # match_pattern: { # required
8892
+ # all: {
8893
+ # },
8894
+ # included_paths: ["JsonPointerPath"],
8895
+ # },
8896
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
8897
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
8898
+ # },
8062
8899
  # },
8063
8900
  # text_transformations: [ # required
8064
8901
  # {
@@ -8086,6 +8923,15 @@ module Aws::WAFV2
8086
8923
  # },
8087
8924
  # method: {
8088
8925
  # },
8926
+ # json_body: {
8927
+ # match_pattern: { # required
8928
+ # all: {
8929
+ # },
8930
+ # included_paths: ["JsonPointerPath"],
8931
+ # },
8932
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
8933
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
8934
+ # },
8089
8935
  # },
8090
8936
  # text_transformations: [ # required
8091
8937
  # {
@@ -8112,6 +8958,15 @@ module Aws::WAFV2
8112
8958
  # },
8113
8959
  # method: {
8114
8960
  # },
8961
+ # json_body: {
8962
+ # match_pattern: { # required
8963
+ # all: {
8964
+ # },
8965
+ # included_paths: ["JsonPointerPath"],
8966
+ # },
8967
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
8968
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
8969
+ # },
8115
8970
  # },
8116
8971
  # text_transformations: [ # required
8117
8972
  # {
@@ -8138,6 +8993,15 @@ module Aws::WAFV2
8138
8993
  # },
8139
8994
  # method: {
8140
8995
  # },
8996
+ # json_body: {
8997
+ # match_pattern: { # required
8998
+ # all: {
8999
+ # },
9000
+ # included_paths: ["JsonPointerPath"],
9001
+ # },
9002
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
9003
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
9004
+ # },
8141
9005
  # },
8142
9006
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
8143
9007
  # size: 1, # required
@@ -8190,6 +9054,15 @@ module Aws::WAFV2
8190
9054
  # },
8191
9055
  # method: {
8192
9056
  # },
9057
+ # json_body: {
9058
+ # match_pattern: { # required
9059
+ # all: {
9060
+ # },
9061
+ # included_paths: ["JsonPointerPath"],
9062
+ # },
9063
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
9064
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
9065
+ # },
8193
9066
  # },
8194
9067
  # text_transformations: [ # required
8195
9068
  # {
@@ -8240,14 +9113,48 @@ module Aws::WAFV2
8240
9113
  # },
8241
9114
  # action: {
8242
9115
  # block: {
9116
+ # custom_response: {
9117
+ # response_code: 1, # required
9118
+ # custom_response_body_key: "EntityName",
9119
+ # response_headers: [
9120
+ # {
9121
+ # name: "CustomHTTPHeaderName", # required
9122
+ # value: "CustomHTTPHeaderValue", # required
9123
+ # },
9124
+ # ],
9125
+ # },
8243
9126
  # },
8244
9127
  # allow: {
9128
+ # custom_request_handling: {
9129
+ # insert_headers: [ # required
9130
+ # {
9131
+ # name: "CustomHTTPHeaderName", # required
9132
+ # value: "CustomHTTPHeaderValue", # required
9133
+ # },
9134
+ # ],
9135
+ # },
8245
9136
  # },
8246
9137
  # count: {
9138
+ # custom_request_handling: {
9139
+ # insert_headers: [ # required
9140
+ # {
9141
+ # name: "CustomHTTPHeaderName", # required
9142
+ # value: "CustomHTTPHeaderValue", # required
9143
+ # },
9144
+ # ],
9145
+ # },
8247
9146
  # },
8248
9147
  # },
8249
9148
  # override_action: {
8250
9149
  # count: {
9150
+ # custom_request_handling: {
9151
+ # insert_headers: [ # required
9152
+ # {
9153
+ # name: "CustomHTTPHeaderName", # required
9154
+ # value: "CustomHTTPHeaderValue", # required
9155
+ # },
9156
+ # ],
9157
+ # },
8251
9158
  # },
8252
9159
  # none: {
8253
9160
  # },
@@ -8265,6 +9172,12 @@ module Aws::WAFV2
8265
9172
  # metric_name: "MetricName", # required
8266
9173
  # },
8267
9174
  # lock_token: "LockToken", # required
9175
+ # custom_response_bodies: {
9176
+ # "EntityName" => {
9177
+ # content_type: "TEXT_PLAIN", # required, accepts TEXT_PLAIN, TEXT_HTML, APPLICATION_JSON
9178
+ # content: "ResponseContent", # required
9179
+ # },
9180
+ # },
8268
9181
  # }
8269
9182
  #
8270
9183
  # @!attribute [rw] name
@@ -8294,8 +9207,7 @@ module Aws::WAFV2
8294
9207
  # @return [String]
8295
9208
  #
8296
9209
  # @!attribute [rw] description
8297
- # A description of the rule group that helps with identification. You
8298
- # cannot change the description of a rule group after you create it.
9210
+ # A description of the rule group that helps with identification.
8299
9211
  # @return [String]
8300
9212
  #
8301
9213
  # @!attribute [rw] rules
@@ -8322,6 +9234,27 @@ module Aws::WAFV2
8322
9234
  # operation.
8323
9235
  # @return [String]
8324
9236
  #
9237
+ # @!attribute [rw] custom_response_bodies
9238
+ # A map of custom response keys and content bodies. When you create a
9239
+ # rule with a block action, you can send a custom response to the web
9240
+ # request. You define these for the rule group, and then use them in
9241
+ # the rules that you define in the rule group.
9242
+ #
9243
+ # For information about customizing web requests and responses, see
9244
+ # [Customizing web requests and responses in AWS WAF][1] in the [AWS
9245
+ # WAF Developer Guide][2].
9246
+ #
9247
+ # For information about the limits on count and size for custom
9248
+ # request and response settings, see [AWS WAF quotas][3] in the [AWS
9249
+ # WAF Developer Guide][2].
9250
+ #
9251
+ #
9252
+ #
9253
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html
9254
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
9255
+ # [3]: https://docs.aws.amazon.com/waf/latest/developerguide/limits.html
9256
+ # @return [Hash<String,Types::CustomResponseBody>]
9257
+ #
8325
9258
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UpdateRuleGroupRequest AWS API Documentation
8326
9259
  #
8327
9260
  class UpdateRuleGroupRequest < Struct.new(
@@ -8331,7 +9264,8 @@ module Aws::WAFV2
8331
9264
  :description,
8332
9265
  :rules,
8333
9266
  :visibility_config,
8334
- :lock_token)
9267
+ :lock_token,
9268
+ :custom_response_bodies)
8335
9269
  SENSITIVE = []
8336
9270
  include Aws::Structure
8337
9271
  end
@@ -8359,8 +9293,26 @@ module Aws::WAFV2
8359
9293
  # id: "EntityId", # required
8360
9294
  # default_action: { # required
8361
9295
  # block: {
9296
+ # custom_response: {
9297
+ # response_code: 1, # required
9298
+ # custom_response_body_key: "EntityName",
9299
+ # response_headers: [
9300
+ # {
9301
+ # name: "CustomHTTPHeaderName", # required
9302
+ # value: "CustomHTTPHeaderValue", # required
9303
+ # },
9304
+ # ],
9305
+ # },
8362
9306
  # },
8363
9307
  # allow: {
9308
+ # custom_request_handling: {
9309
+ # insert_headers: [ # required
9310
+ # {
9311
+ # name: "CustomHTTPHeaderName", # required
9312
+ # value: "CustomHTTPHeaderValue", # required
9313
+ # },
9314
+ # ],
9315
+ # },
8364
9316
  # },
8365
9317
  # },
8366
9318
  # description: "EntityDescription",
@@ -8388,6 +9340,15 @@ module Aws::WAFV2
8388
9340
  # },
8389
9341
  # method: {
8390
9342
  # },
9343
+ # json_body: {
9344
+ # match_pattern: { # required
9345
+ # all: {
9346
+ # },
9347
+ # included_paths: ["JsonPointerPath"],
9348
+ # },
9349
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
9350
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
9351
+ # },
8391
9352
  # },
8392
9353
  # text_transformations: [ # required
8393
9354
  # {
@@ -8415,6 +9376,15 @@ module Aws::WAFV2
8415
9376
  # },
8416
9377
  # method: {
8417
9378
  # },
9379
+ # json_body: {
9380
+ # match_pattern: { # required
9381
+ # all: {
9382
+ # },
9383
+ # included_paths: ["JsonPointerPath"],
9384
+ # },
9385
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
9386
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
9387
+ # },
8418
9388
  # },
8419
9389
  # text_transformations: [ # required
8420
9390
  # {
@@ -8441,6 +9411,15 @@ module Aws::WAFV2
8441
9411
  # },
8442
9412
  # method: {
8443
9413
  # },
9414
+ # json_body: {
9415
+ # match_pattern: { # required
9416
+ # all: {
9417
+ # },
9418
+ # included_paths: ["JsonPointerPath"],
9419
+ # },
9420
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
9421
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
9422
+ # },
8444
9423
  # },
8445
9424
  # text_transformations: [ # required
8446
9425
  # {
@@ -8467,6 +9446,15 @@ module Aws::WAFV2
8467
9446
  # },
8468
9447
  # method: {
8469
9448
  # },
9449
+ # json_body: {
9450
+ # match_pattern: { # required
9451
+ # all: {
9452
+ # },
9453
+ # included_paths: ["JsonPointerPath"],
9454
+ # },
9455
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
9456
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
9457
+ # },
8470
9458
  # },
8471
9459
  # comparison_operator: "EQ", # required, accepts EQ, NE, LE, LT, GE, GT
8472
9460
  # size: 1, # required
@@ -8519,6 +9507,15 @@ module Aws::WAFV2
8519
9507
  # },
8520
9508
  # method: {
8521
9509
  # },
9510
+ # json_body: {
9511
+ # match_pattern: { # required
9512
+ # all: {
9513
+ # },
9514
+ # included_paths: ["JsonPointerPath"],
9515
+ # },
9516
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
9517
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
9518
+ # },
8522
9519
  # },
8523
9520
  # text_transformations: [ # required
8524
9521
  # {
@@ -8569,14 +9566,48 @@ module Aws::WAFV2
8569
9566
  # },
8570
9567
  # action: {
8571
9568
  # block: {
9569
+ # custom_response: {
9570
+ # response_code: 1, # required
9571
+ # custom_response_body_key: "EntityName",
9572
+ # response_headers: [
9573
+ # {
9574
+ # name: "CustomHTTPHeaderName", # required
9575
+ # value: "CustomHTTPHeaderValue", # required
9576
+ # },
9577
+ # ],
9578
+ # },
8572
9579
  # },
8573
9580
  # allow: {
9581
+ # custom_request_handling: {
9582
+ # insert_headers: [ # required
9583
+ # {
9584
+ # name: "CustomHTTPHeaderName", # required
9585
+ # value: "CustomHTTPHeaderValue", # required
9586
+ # },
9587
+ # ],
9588
+ # },
8574
9589
  # },
8575
9590
  # count: {
9591
+ # custom_request_handling: {
9592
+ # insert_headers: [ # required
9593
+ # {
9594
+ # name: "CustomHTTPHeaderName", # required
9595
+ # value: "CustomHTTPHeaderValue", # required
9596
+ # },
9597
+ # ],
9598
+ # },
8576
9599
  # },
8577
9600
  # },
8578
9601
  # override_action: {
8579
9602
  # count: {
9603
+ # custom_request_handling: {
9604
+ # insert_headers: [ # required
9605
+ # {
9606
+ # name: "CustomHTTPHeaderName", # required
9607
+ # value: "CustomHTTPHeaderValue", # required
9608
+ # },
9609
+ # ],
9610
+ # },
8580
9611
  # },
8581
9612
  # none: {
8582
9613
  # },
@@ -8594,6 +9625,12 @@ module Aws::WAFV2
8594
9625
  # metric_name: "MetricName", # required
8595
9626
  # },
8596
9627
  # lock_token: "LockToken", # required
9628
+ # custom_response_bodies: {
9629
+ # "EntityName" => {
9630
+ # content_type: "TEXT_PLAIN", # required, accepts TEXT_PLAIN, TEXT_HTML, APPLICATION_JSON
9631
+ # content: "ResponseContent", # required
9632
+ # },
9633
+ # },
8597
9634
  # }
8598
9635
  #
8599
9636
  # @!attribute [rw] name
@@ -8628,8 +9665,7 @@ module Aws::WAFV2
8628
9665
  # @return [Types::DefaultAction]
8629
9666
  #
8630
9667
  # @!attribute [rw] description
8631
- # A description of the Web ACL that helps with identification. You
8632
- # cannot change the description of a Web ACL after you create it.
9668
+ # A description of the Web ACL that helps with identification.
8633
9669
  # @return [String]
8634
9670
  #
8635
9671
  # @!attribute [rw] rules
@@ -8656,6 +9692,27 @@ module Aws::WAFV2
8656
9692
  # operation.
8657
9693
  # @return [String]
8658
9694
  #
9695
+ # @!attribute [rw] custom_response_bodies
9696
+ # A map of custom response keys and content bodies. When you create a
9697
+ # rule with a block action, you can send a custom response to the web
9698
+ # request. You define these for the web ACL, and then use them in the
9699
+ # rules and default actions that you define in the web ACL.
9700
+ #
9701
+ # For information about customizing web requests and responses, see
9702
+ # [Customizing web requests and responses in AWS WAF][1] in the [AWS
9703
+ # WAF Developer Guide][2].
9704
+ #
9705
+ # For information about the limits on count and size for custom
9706
+ # request and response settings, see [AWS WAF quotas][3] in the [AWS
9707
+ # WAF Developer Guide][2].
9708
+ #
9709
+ #
9710
+ #
9711
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html
9712
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
9713
+ # [3]: https://docs.aws.amazon.com/waf/latest/developerguide/limits.html
9714
+ # @return [Hash<String,Types::CustomResponseBody>]
9715
+ #
8659
9716
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UpdateWebACLRequest AWS API Documentation
8660
9717
  #
8661
9718
  class UpdateWebACLRequest < Struct.new(
@@ -8666,7 +9723,8 @@ module Aws::WAFV2
8666
9723
  :description,
8667
9724
  :rules,
8668
9725
  :visibility_config,
8669
- :lock_token)
9726
+ :lock_token,
9727
+ :custom_response_bodies)
8670
9728
  SENSITIVE = []
8671
9729
  include Aws::Structure
8672
9730
  end
@@ -8685,13 +9743,6 @@ module Aws::WAFV2
8685
9743
  include Aws::Structure
8686
9744
  end
8687
9745
 
8688
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
8689
- # in November, 2019. For information, including how to migrate your AWS
8690
- # WAF resources from the prior release, see the [AWS WAF Developer
8691
- # Guide][1].
8692
- #
8693
- # </note>
8694
- #
8695
9746
  # The path component of the URI of a web request. This is the part of a
8696
9747
  # web request that identifies a resource, for example,
8697
9748
  # `/images/daily-ad.jpg`.
@@ -8699,30 +9750,15 @@ module Aws::WAFV2
8699
9750
  # This is used only to indicate the web request component for AWS WAF to
8700
9751
  # inspect, in the FieldToMatch specification.
8701
9752
  #
8702
- #
8703
- #
8704
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
8705
- #
8706
9753
  # @api private
8707
9754
  #
8708
9755
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/UriPath AWS API Documentation
8709
9756
  #
8710
9757
  class UriPath < Aws::EmptyStructure; end
8711
9758
 
8712
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
8713
- # in November, 2019. For information, including how to migrate your AWS
8714
- # WAF resources from the prior release, see the [AWS WAF Developer
8715
- # Guide][1].
8716
- #
8717
- # </note>
8718
- #
8719
9759
  # Defines and enables Amazon CloudWatch metrics and web request sample
8720
9760
  # collection.
8721
9761
  #
8722
- #
8723
- #
8724
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
8725
- #
8726
9762
  # @note When making an API call, you may pass VisibilityConfig
8727
9763
  # data as a hash:
8728
9764
  #
@@ -9031,13 +10067,6 @@ module Aws::WAFV2
9031
10067
  include Aws::Structure
9032
10068
  end
9033
10069
 
9034
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
9035
- # in November, 2019. For information, including how to migrate your AWS
9036
- # WAF resources from the prior release, see the [AWS WAF Developer
9037
- # Guide][1].
9038
- #
9039
- # </note>
9040
- #
9041
10070
  # A Web ACL defines a collection of rules to use to inspect and control
9042
10071
  # web requests. Each rule has an action defined (allow, block, or count)
9043
10072
  # for requests that match the statement of the rule. In the Web ACL, you
@@ -9048,10 +10077,6 @@ module Aws::WAFV2
9048
10077
  # resources can be Amazon CloudFront, an Amazon API Gateway REST API, an
9049
10078
  # Application Load Balancer, or an AWS AppSync GraphQL API.
9050
10079
  #
9051
- #
9052
- #
9053
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
9054
- #
9055
10080
  # @!attribute [rw] name
9056
10081
  # The name of the Web ACL. You cannot change the name of a Web ACL
9057
10082
  # after you create it.
@@ -9074,8 +10099,7 @@ module Aws::WAFV2
9074
10099
  # @return [Types::DefaultAction]
9075
10100
  #
9076
10101
  # @!attribute [rw] description
9077
- # A description of the Web ACL that helps with identification. You
9078
- # cannot change the description of a Web ACL after you create it.
10102
+ # A description of the Web ACL that helps with identification.
9079
10103
  # @return [String]
9080
10104
  #
9081
10105
  # @!attribute [rw] rules
@@ -9136,6 +10160,27 @@ module Aws::WAFV2
9136
10160
  # any Firewall Manager rule groups in the web ACL.
9137
10161
  # @return [Boolean]
9138
10162
  #
10163
+ # @!attribute [rw] custom_response_bodies
10164
+ # A map of custom response keys and content bodies. When you create a
10165
+ # rule with a block action, you can send a custom response to the web
10166
+ # request. You define these for the web ACL, and then use them in the
10167
+ # rules and default actions that you define in the web ACL.
10168
+ #
10169
+ # For information about customizing web requests and responses, see
10170
+ # [Customizing web requests and responses in AWS WAF][1] in the [AWS
10171
+ # WAF Developer Guide][2].
10172
+ #
10173
+ # For information about the limits on count and size for custom
10174
+ # request and response settings, see [AWS WAF quotas][3] in the [AWS
10175
+ # WAF Developer Guide][2].
10176
+ #
10177
+ #
10178
+ #
10179
+ # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-custom-request-response.html
10180
+ # [2]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
10181
+ # [3]: https://docs.aws.amazon.com/waf/latest/developerguide/limits.html
10182
+ # @return [Hash<String,Types::CustomResponseBody>]
10183
+ #
9139
10184
  # @see http://docs.aws.amazon.com/goto/WebAPI/wafv2-2019-07-29/WebACL AWS API Documentation
9140
10185
  #
9141
10186
  class WebACL < Struct.new(
@@ -9149,27 +10194,17 @@ module Aws::WAFV2
9149
10194
  :capacity,
9150
10195
  :pre_process_firewall_manager_rule_groups,
9151
10196
  :post_process_firewall_manager_rule_groups,
9152
- :managed_by_firewall_manager)
10197
+ :managed_by_firewall_manager,
10198
+ :custom_response_bodies)
9153
10199
  SENSITIVE = []
9154
10200
  include Aws::Structure
9155
10201
  end
9156
10202
 
9157
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
9158
- # in November, 2019. For information, including how to migrate your AWS
9159
- # WAF resources from the prior release, see the [AWS WAF Developer
9160
- # Guide][1].
9161
- #
9162
- # </note>
9163
- #
9164
10203
  # High-level information about a WebACL, returned by operations like
9165
10204
  # create and list. This provides information like the ID, that you can
9166
10205
  # use to retrieve and manage a `WebACL`, and the ARN, that you provide
9167
10206
  # to operations like AssociateWebACL.
9168
10207
  #
9169
- #
9170
- #
9171
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
9172
- #
9173
10208
  # @!attribute [rw] name
9174
10209
  # The name of the Web ACL. You cannot change the name of a Web ACL
9175
10210
  # after you create it.
@@ -9182,8 +10217,7 @@ module Aws::WAFV2
9182
10217
  # @return [String]
9183
10218
  #
9184
10219
  # @!attribute [rw] description
9185
- # A description of the Web ACL that helps with identification. You
9186
- # cannot change the description of a Web ACL after you create it.
10220
+ # A description of the Web ACL that helps with identification.
9187
10221
  # @return [String]
9188
10222
  #
9189
10223
  # @!attribute [rw] lock_token
@@ -9214,13 +10248,6 @@ module Aws::WAFV2
9214
10248
  include Aws::Structure
9215
10249
  end
9216
10250
 
9217
- # <note markdown="1"> This is the latest version of **AWS WAF**, named AWS WAFV2, released
9218
- # in November, 2019. For information, including how to migrate your AWS
9219
- # WAF resources from the prior release, see the [AWS WAF Developer
9220
- # Guide][1].
9221
- #
9222
- # </note>
9223
- #
9224
10251
  # A rule statement that defines a cross-site scripting (XSS) match
9225
10252
  # search for AWS WAF to apply to web requests. XSS attacks are those
9226
10253
  # where the attacker uses vulnerabilities in a benign website as a
@@ -9230,10 +10257,6 @@ module Aws::WAFV2
9230
10257
  # use on the search area before AWS WAF searches for character sequences
9231
10258
  # that are likely to be malicious strings.
9232
10259
  #
9233
- #
9234
- #
9235
- # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
9236
- #
9237
10260
  # @note When making an API call, you may pass XssMatchStatement
9238
10261
  # data as a hash:
9239
10262
  #
@@ -9255,6 +10278,15 @@ module Aws::WAFV2
9255
10278
  # },
9256
10279
  # method: {
9257
10280
  # },
10281
+ # json_body: {
10282
+ # match_pattern: { # required
10283
+ # all: {
10284
+ # },
10285
+ # included_paths: ["JsonPointerPath"],
10286
+ # },
10287
+ # match_scope: "ALL", # required, accepts ALL, KEY, VALUE
10288
+ # invalid_fallback_behavior: "MATCH", # accepts MATCH, NO_MATCH, EVALUATE_AS_STRING
10289
+ # },
9258
10290
  # },
9259
10291
  # text_transformations: [ # required
9260
10292
  # {