-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Amazon WAF SDK.
--   
--   The types from this library are intended to be used with
--   <a>amazonka</a>, which provides mechanisms for specifying AuthN/AuthZ
--   information, sending requests, and receiving responses.
--   
--   Lenses are used for constructing and manipulating types, due to the
--   depth of nesting of AWS types and transparency regarding
--   de/serialisation into more palatable Haskell values. The provided
--   lenses should be compatible with any of the major lens libraries such
--   as <a>lens</a> or <a>lens-family-core</a>.
--   
--   See <a>Network.AWS.WAF</a> or <a>the AWS documentation</a> to get
--   started.
@package amazonka-waf
@version 1.6.0


module Network.AWS.WAF.Types

-- | API version <tt>2015-08-24</tt> of the Amazon WAF SDK configuration.
waf :: Service

-- | The operation failed because you tried to create, update, or delete an
--   object by using an invalid account identifier.
_WAFInvalidAccountException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified subscription does not exist.
_WAFSubscriptionNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because you tried to delete an object that is
--   still in use. For example:
--   
--   <ul>
--   <li>You tried to delete a <tt>ByteMatchSet</tt> that is still
--   referenced by a <tt>Rule</tt> .</li>
--   <li>You tried to delete a <tt>Rule</tt> that is still referenced by a
--   <tt>WebACL</tt> .</li>
--   </ul>
_WAFReferencedItemException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The regular expression (regex) you specified in
--   <tt>RegexPatternString</tt> is invalid.
_WAFInvalidRegexPatternException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because there was nothing to do. For example:
--   
--   <ul>
--   <li>You tried to remove a <tt>Rule</tt> from a <tt>WebACL</tt> , but
--   the <tt>Rule</tt> isn't in the specified <tt>WebACL</tt> .</li>
--   <li>You tried to remove an IP address from an <tt>IPSet</tt> , but the
--   IP address isn't in the specified <tt>IPSet</tt> .</li>
--   <li>You tried to remove a <tt>ByteMatchTuple</tt> from a
--   <tt>ByteMatchSet</tt> , but the <tt>ByteMatchTuple</tt> isn't in the
--   specified <tt>WebACL</tt> .</li>
--   <li>You tried to add a <tt>Rule</tt> to a <tt>WebACL</tt> , but the
--   <tt>Rule</tt> already exists in the specified <tt>WebACL</tt> .</li>
--   <li>You tried to add an IP address to an <tt>IPSet</tt> , but the IP
--   address already exists in the specified <tt>IPSet</tt> .</li>
--   <li>You tried to add a <tt>ByteMatchTuple</tt> to a
--   <tt>ByteMatchSet</tt> , but the <tt>ByteMatchTuple</tt> already exists
--   in the specified <tt>WebACL</tt> .</li>
--   </ul>
_WAFInvalidOperationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because the referenced object doesn't exist.
_WAFNonexistentItemException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because AWS WAF didn't recognize a parameter in
--   the request. For example:
--   
--   <ul>
--   <li>You specified an invalid parameter name.</li>
--   <li>You specified an invalid value.</li>
--   <li>You tried to update an object (<tt>ByteMatchSet</tt> ,
--   <tt>IPSet</tt> , <tt>Rule</tt> , or <tt>WebACL</tt> ) using an action
--   other than <tt>INSERT</tt> or <tt>DELETE</tt> .</li>
--   <li>You tried to create a <tt>WebACL</tt> with a
--   <tt>DefaultAction</tt> <tt>Type</tt> other than <tt>ALLOW</tt> ,
--   <tt>BLOCK</tt> , or <tt>COUNT</tt> .</li>
--   <li>You tried to create a <tt>RateBasedRule</tt> with a
--   <tt>RateKey</tt> value other than <tt>IP</tt> .</li>
--   <li>You tried to update a <tt>WebACL</tt> with a <tt>WafAction</tt>
--   <tt>Type</tt> other than <tt>ALLOW</tt> , <tt>BLOCK</tt> , or
--   <tt>COUNT</tt> .</li>
--   <li>You tried to update a <tt>ByteMatchSet</tt> with a
--   <tt>FieldToMatch</tt> <tt>Type</tt> other than HEADER, METHOD,
--   QUERY_STRING, URI, or BODY.</li>
--   <li>You tried to update a <tt>ByteMatchSet</tt> with a <tt>Field</tt>
--   of <tt>HEADER</tt> but no value for <tt>Data</tt> .</li>
--   <li>Your request references an ARN that is malformed, or corresponds
--   to a resource with which a web ACL cannot be associated.</li>
--   </ul>
_WAFInvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation exceeds a resource limit, for example, the maximum
--   number of <tt>WebACL</tt> objects that you can create for an AWS
--   account. For more information, see <a>Limits</a> in the <i>AWS WAF
--   Developer Guide</i> .
_WAFLimitsExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because the specified policy is not in the proper
--   format.
--   
--   The policy is subject to the following restrictions:
--   
--   <ul>
--   <li>You can attach only one policy with each
--   <tt>PutPermissionPolicy</tt> request.</li>
--   <li>The policy must include an <tt>Effect</tt> , <tt>Action</tt> and
--   <tt>Principal</tt> .</li>
--   <li><tt>Effect</tt> must specify <tt>Allow</tt> .</li>
--   <li>The <tt>Action</tt> in the policy must be
--   <tt>waf:UpdateWebACL</tt> or <tt>waf-regional:UpdateWebACL</tt> . Any
--   extra or wildcard actions in the policy will be rejected.</li>
--   <li>The policy cannot include a <tt>Resource</tt> parameter.</li>
--   <li>The ARN in the request must be a valid WAF RuleGroup ARN and the
--   RuleGroup must exist in the same region.</li>
--   <li>The user making the request must be the owner of the
--   RuleGroup.</li>
--   <li>Your policy must be composed using IAM Policy version
--   2012-10-17.</li>
--   </ul>
_WAFInvalidPermissionPolicyException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because you tried to create, update, or delete an
--   object by using a change token that has already been used.
_WAFStaleDataException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because of a system problem, even though the
--   request was valid. Retry your request.
_WAFInternalErrorException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because you tried to add an object to or delete
--   an object from another object that doesn't exist. For example:
--   
--   <ul>
--   <li>You tried to add a <tt>Rule</tt> to or delete a <tt>Rule</tt> from
--   a <tt>WebACL</tt> that doesn't exist.</li>
--   <li>You tried to add a <tt>ByteMatchSet</tt> to or delete a
--   <tt>ByteMatchSet</tt> from a <tt>Rule</tt> that doesn't exist.</li>
--   <li>You tried to add an IP address to or delete an IP address from an
--   <tt>IPSet</tt> that doesn't exist.</li>
--   <li>You tried to add a <tt>ByteMatchTuple</tt> to or delete a
--   <tt>ByteMatchTuple</tt> from a <tt>ByteMatchSet</tt> that doesn't
--   exist.</li>
--   </ul>
_WAFNonexistentContainerException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The name specified is invalid.
_WAFDisallowedNameException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because you tried to delete an object that isn't
--   empty. For example:
--   
--   <ul>
--   <li>You tried to delete a <tt>WebACL</tt> that still contains one or
--   more <tt>Rule</tt> objects.</li>
--   <li>You tried to delete a <tt>Rule</tt> that still contains one or
--   more <tt>ByteMatchSet</tt> objects or other predicates.</li>
--   <li>You tried to delete a <tt>ByteMatchSet</tt> that contains one or
--   more <tt>ByteMatchTuple</tt> objects.</li>
--   <li>You tried to delete an <tt>IPSet</tt> that references one or more
--   IP addresses.</li>
--   </ul>
_WAFNonEmptyEntityException :: AsError a => Getting (First ServiceError) a ServiceError
data ChangeAction
Delete :: ChangeAction
Insert :: ChangeAction
data ChangeTokenStatus
Insync :: ChangeTokenStatus
Pending :: ChangeTokenStatus
Provisioned :: ChangeTokenStatus
data ComparisonOperator
EQ' :: ComparisonOperator
GE :: ComparisonOperator
GT' :: ComparisonOperator
LE :: ComparisonOperator
LT' :: ComparisonOperator
NE :: ComparisonOperator
data GeoMatchConstraintType
Country :: GeoMatchConstraintType
data GeoMatchConstraintValue
GMCVAD :: GeoMatchConstraintValue
GMCVAE :: GeoMatchConstraintValue
GMCVAF :: GeoMatchConstraintValue
GMCVAG :: GeoMatchConstraintValue
GMCVAI :: GeoMatchConstraintValue
GMCVAL :: GeoMatchConstraintValue
GMCVAM :: GeoMatchConstraintValue
GMCVAO :: GeoMatchConstraintValue
GMCVAQ :: GeoMatchConstraintValue
GMCVAR :: GeoMatchConstraintValue
GMCVAS :: GeoMatchConstraintValue
GMCVAT :: GeoMatchConstraintValue
GMCVAU :: GeoMatchConstraintValue
GMCVAW :: GeoMatchConstraintValue
GMCVAX :: GeoMatchConstraintValue
GMCVAZ :: GeoMatchConstraintValue
GMCVBA :: GeoMatchConstraintValue
GMCVBB :: GeoMatchConstraintValue
GMCVBD :: GeoMatchConstraintValue
GMCVBE :: GeoMatchConstraintValue
GMCVBF :: GeoMatchConstraintValue
GMCVBG :: GeoMatchConstraintValue
GMCVBH :: GeoMatchConstraintValue
GMCVBI :: GeoMatchConstraintValue
GMCVBJ :: GeoMatchConstraintValue
GMCVBL :: GeoMatchConstraintValue
GMCVBM :: GeoMatchConstraintValue
GMCVBN :: GeoMatchConstraintValue
GMCVBO :: GeoMatchConstraintValue
GMCVBQ :: GeoMatchConstraintValue
GMCVBR :: GeoMatchConstraintValue
GMCVBS :: GeoMatchConstraintValue
GMCVBT :: GeoMatchConstraintValue
GMCVBV :: GeoMatchConstraintValue
GMCVBW :: GeoMatchConstraintValue
GMCVBY :: GeoMatchConstraintValue
GMCVBZ :: GeoMatchConstraintValue
GMCVCA :: GeoMatchConstraintValue
GMCVCC :: GeoMatchConstraintValue
GMCVCD :: GeoMatchConstraintValue
GMCVCF :: GeoMatchConstraintValue
GMCVCG :: GeoMatchConstraintValue
GMCVCH :: GeoMatchConstraintValue
GMCVCI :: GeoMatchConstraintValue
GMCVCK :: GeoMatchConstraintValue
GMCVCL :: GeoMatchConstraintValue
GMCVCM :: GeoMatchConstraintValue
GMCVCN :: GeoMatchConstraintValue
GMCVCO :: GeoMatchConstraintValue
GMCVCR :: GeoMatchConstraintValue
GMCVCU :: GeoMatchConstraintValue
GMCVCV :: GeoMatchConstraintValue
GMCVCW :: GeoMatchConstraintValue
GMCVCX :: GeoMatchConstraintValue
GMCVCY :: GeoMatchConstraintValue
GMCVCZ :: GeoMatchConstraintValue
GMCVDE :: GeoMatchConstraintValue
GMCVDJ :: GeoMatchConstraintValue
GMCVDK :: GeoMatchConstraintValue
GMCVDM :: GeoMatchConstraintValue
GMCVDO :: GeoMatchConstraintValue
GMCVDZ :: GeoMatchConstraintValue
GMCVEC :: GeoMatchConstraintValue
GMCVEE :: GeoMatchConstraintValue
GMCVEG :: GeoMatchConstraintValue
GMCVEH :: GeoMatchConstraintValue
GMCVER :: GeoMatchConstraintValue
GMCVES :: GeoMatchConstraintValue
GMCVET :: GeoMatchConstraintValue
GMCVFI :: GeoMatchConstraintValue
GMCVFJ :: GeoMatchConstraintValue
GMCVFK :: GeoMatchConstraintValue
GMCVFM :: GeoMatchConstraintValue
GMCVFO :: GeoMatchConstraintValue
GMCVFR :: GeoMatchConstraintValue
GMCVGA :: GeoMatchConstraintValue
GMCVGB :: GeoMatchConstraintValue
GMCVGD :: GeoMatchConstraintValue
GMCVGE :: GeoMatchConstraintValue
GMCVGF :: GeoMatchConstraintValue
GMCVGG :: GeoMatchConstraintValue
GMCVGH :: GeoMatchConstraintValue
GMCVGI :: GeoMatchConstraintValue
GMCVGL :: GeoMatchConstraintValue
GMCVGM :: GeoMatchConstraintValue
GMCVGN :: GeoMatchConstraintValue
GMCVGP :: GeoMatchConstraintValue
GMCVGQ :: GeoMatchConstraintValue
GMCVGR :: GeoMatchConstraintValue
GMCVGS :: GeoMatchConstraintValue
GMCVGT' :: GeoMatchConstraintValue
GMCVGU :: GeoMatchConstraintValue
GMCVGW :: GeoMatchConstraintValue
GMCVGY :: GeoMatchConstraintValue
GMCVHK :: GeoMatchConstraintValue
GMCVHM :: GeoMatchConstraintValue
GMCVHN :: GeoMatchConstraintValue
GMCVHR :: GeoMatchConstraintValue
GMCVHT :: GeoMatchConstraintValue
GMCVHU :: GeoMatchConstraintValue
GMCVIE :: GeoMatchConstraintValue
GMCVIL :: GeoMatchConstraintValue
GMCVIM :: GeoMatchConstraintValue
GMCVIN :: GeoMatchConstraintValue
GMCVIO :: GeoMatchConstraintValue
GMCVIQ :: GeoMatchConstraintValue
GMCVIR :: GeoMatchConstraintValue
GMCVIS :: GeoMatchConstraintValue
GMCVIT :: GeoMatchConstraintValue
GMCVId :: GeoMatchConstraintValue
GMCVJE :: GeoMatchConstraintValue
GMCVJM :: GeoMatchConstraintValue
GMCVJO :: GeoMatchConstraintValue
GMCVJP :: GeoMatchConstraintValue
GMCVKE :: GeoMatchConstraintValue
GMCVKG :: GeoMatchConstraintValue
GMCVKH :: GeoMatchConstraintValue
GMCVKI :: GeoMatchConstraintValue
GMCVKM :: GeoMatchConstraintValue
GMCVKN :: GeoMatchConstraintValue
GMCVKP :: GeoMatchConstraintValue
GMCVKR :: GeoMatchConstraintValue
GMCVKW :: GeoMatchConstraintValue
GMCVKY :: GeoMatchConstraintValue
GMCVKZ :: GeoMatchConstraintValue
GMCVLA :: GeoMatchConstraintValue
GMCVLB :: GeoMatchConstraintValue
GMCVLC :: GeoMatchConstraintValue
GMCVLI :: GeoMatchConstraintValue
GMCVLK :: GeoMatchConstraintValue
GMCVLR :: GeoMatchConstraintValue
GMCVLS :: GeoMatchConstraintValue
GMCVLT' :: GeoMatchConstraintValue
GMCVLU :: GeoMatchConstraintValue
GMCVLV :: GeoMatchConstraintValue
GMCVLY :: GeoMatchConstraintValue
GMCVMA :: GeoMatchConstraintValue
GMCVMC :: GeoMatchConstraintValue
GMCVMD :: GeoMatchConstraintValue
GMCVME :: GeoMatchConstraintValue
GMCVMF :: GeoMatchConstraintValue
GMCVMG :: GeoMatchConstraintValue
GMCVMH :: GeoMatchConstraintValue
GMCVMK :: GeoMatchConstraintValue
GMCVML :: GeoMatchConstraintValue
GMCVMM :: GeoMatchConstraintValue
GMCVMN :: GeoMatchConstraintValue
GMCVMO :: GeoMatchConstraintValue
GMCVMP :: GeoMatchConstraintValue
GMCVMQ :: GeoMatchConstraintValue
GMCVMR :: GeoMatchConstraintValue
GMCVMS :: GeoMatchConstraintValue
GMCVMT :: GeoMatchConstraintValue
GMCVMU :: GeoMatchConstraintValue
GMCVMV :: GeoMatchConstraintValue
GMCVMW :: GeoMatchConstraintValue
GMCVMX :: GeoMatchConstraintValue
GMCVMY :: GeoMatchConstraintValue
GMCVMZ :: GeoMatchConstraintValue
GMCVNA :: GeoMatchConstraintValue
GMCVNC :: GeoMatchConstraintValue
GMCVNE :: GeoMatchConstraintValue
GMCVNF :: GeoMatchConstraintValue
GMCVNG :: GeoMatchConstraintValue
GMCVNI :: GeoMatchConstraintValue
GMCVNL :: GeoMatchConstraintValue
GMCVNO :: GeoMatchConstraintValue
GMCVNP :: GeoMatchConstraintValue
GMCVNR :: GeoMatchConstraintValue
GMCVNU :: GeoMatchConstraintValue
GMCVNZ :: GeoMatchConstraintValue
GMCVOM :: GeoMatchConstraintValue
GMCVPA :: GeoMatchConstraintValue
GMCVPE :: GeoMatchConstraintValue
GMCVPF :: GeoMatchConstraintValue
GMCVPG :: GeoMatchConstraintValue
GMCVPH :: GeoMatchConstraintValue
GMCVPK :: GeoMatchConstraintValue
GMCVPL :: GeoMatchConstraintValue
GMCVPM :: GeoMatchConstraintValue
GMCVPN :: GeoMatchConstraintValue
GMCVPR :: GeoMatchConstraintValue
GMCVPS :: GeoMatchConstraintValue
GMCVPT :: GeoMatchConstraintValue
GMCVPW :: GeoMatchConstraintValue
GMCVPY :: GeoMatchConstraintValue
GMCVQA :: GeoMatchConstraintValue
GMCVRE :: GeoMatchConstraintValue
GMCVRO :: GeoMatchConstraintValue
GMCVRS :: GeoMatchConstraintValue
GMCVRU :: GeoMatchConstraintValue
GMCVRW :: GeoMatchConstraintValue
GMCVSA :: GeoMatchConstraintValue
GMCVSB :: GeoMatchConstraintValue
GMCVSC :: GeoMatchConstraintValue
GMCVSD :: GeoMatchConstraintValue
GMCVSE :: GeoMatchConstraintValue
GMCVSG :: GeoMatchConstraintValue
GMCVSH :: GeoMatchConstraintValue
GMCVSI :: GeoMatchConstraintValue
GMCVSJ :: GeoMatchConstraintValue
GMCVSK :: GeoMatchConstraintValue
GMCVSL :: GeoMatchConstraintValue
GMCVSM :: GeoMatchConstraintValue
GMCVSN :: GeoMatchConstraintValue
GMCVSO :: GeoMatchConstraintValue
GMCVSR :: GeoMatchConstraintValue
GMCVSS :: GeoMatchConstraintValue
GMCVST :: GeoMatchConstraintValue
GMCVSV :: GeoMatchConstraintValue
GMCVSX :: GeoMatchConstraintValue
GMCVSY :: GeoMatchConstraintValue
GMCVSZ :: GeoMatchConstraintValue
GMCVTC :: GeoMatchConstraintValue
GMCVTD :: GeoMatchConstraintValue
GMCVTF :: GeoMatchConstraintValue
GMCVTG :: GeoMatchConstraintValue
GMCVTH :: GeoMatchConstraintValue
GMCVTJ :: GeoMatchConstraintValue
GMCVTK :: GeoMatchConstraintValue
GMCVTL :: GeoMatchConstraintValue
GMCVTM :: GeoMatchConstraintValue
GMCVTN :: GeoMatchConstraintValue
GMCVTO :: GeoMatchConstraintValue
GMCVTR :: GeoMatchConstraintValue
GMCVTT :: GeoMatchConstraintValue
GMCVTV :: GeoMatchConstraintValue
GMCVTW :: GeoMatchConstraintValue
GMCVTZ :: GeoMatchConstraintValue
GMCVUA :: GeoMatchConstraintValue
GMCVUG :: GeoMatchConstraintValue
GMCVUM :: GeoMatchConstraintValue
GMCVUS :: GeoMatchConstraintValue
GMCVUY :: GeoMatchConstraintValue
GMCVUZ :: GeoMatchConstraintValue
GMCVVA :: GeoMatchConstraintValue
GMCVVC :: GeoMatchConstraintValue
GMCVVE :: GeoMatchConstraintValue
GMCVVG :: GeoMatchConstraintValue
GMCVVI :: GeoMatchConstraintValue
GMCVVN :: GeoMatchConstraintValue
GMCVVU :: GeoMatchConstraintValue
GMCVWF :: GeoMatchConstraintValue
GMCVWS :: GeoMatchConstraintValue
GMCVYE :: GeoMatchConstraintValue
GMCVYT :: GeoMatchConstraintValue
GMCVZA :: GeoMatchConstraintValue
GMCVZM :: GeoMatchConstraintValue
GMCVZW :: GeoMatchConstraintValue
data IPSetDescriptorType
IPV4 :: IPSetDescriptorType
IPV6 :: IPSetDescriptorType
data MatchFieldType
Body :: MatchFieldType
Header :: MatchFieldType
Method :: MatchFieldType
QueryString :: MatchFieldType
URI :: MatchFieldType
data PositionalConstraint
Contains :: PositionalConstraint
ContainsWord :: PositionalConstraint
EndsWith :: PositionalConstraint
Exactly :: PositionalConstraint
StartsWith :: PositionalConstraint
data PredicateType
ByteMatch :: PredicateType
GeoMatch :: PredicateType
IPMatch :: PredicateType
RegexMatch :: PredicateType
SizeConstraint :: PredicateType
SqlInjectionMatch :: PredicateType
XSSMatch :: PredicateType
data RateKey
IP :: RateKey
data TextTransformation
CmdLine :: TextTransformation
CompressWhiteSpace :: TextTransformation
HTMLEntityDecode :: TextTransformation
Lowercase :: TextTransformation
None :: TextTransformation
URLDecode :: TextTransformation
data WafActionType
Allow :: WafActionType
Block :: WafActionType
Count :: WafActionType
data WafOverrideActionType
WOATCount :: WafOverrideActionType
WOATNone :: WafOverrideActionType
data WafRuleType
Group :: WafRuleType
RateBased :: WafRuleType
Regular :: WafRuleType

-- | The <tt>ActivatedRule</tt> object in an <tt>UpdateWebACL</tt> request
--   specifies a <tt>Rule</tt> that you want to insert or delete, the
--   priority of the <tt>Rule</tt> in the <tt>WebACL</tt> , and the action
--   that you want AWS WAF to take when a web request matches the
--   <tt>Rule</tt> (<tt>ALLOW</tt> , <tt>BLOCK</tt> , or <tt>COUNT</tt> ).
--   
--   To specify whether to insert or delete a <tt>Rule</tt> , use the
--   <tt>Action</tt> parameter in the <a>WebACLUpdate</a> data type.
--   
--   <i>See:</i> <a>activatedRule</a> smart constructor.
data ActivatedRule

-- | Creates a value of <a>ActivatedRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>arOverrideAction</a> - Use the <tt>OverrideAction</tt> to test
--   your <tt>RuleGroup</tt> . Any rule in a <tt>RuleGroup</tt> can
--   potentially block a request. If you set the <tt>OverrideAction</tt> to
--   <tt>None</tt> , the <tt>RuleGroup</tt> will block a request if any
--   individual rule in the <tt>RuleGroup</tt> matches the request and is
--   configured to block that request. However if you first want to test
--   the <tt>RuleGroup</tt> , set the <tt>OverrideAction</tt> to
--   <tt>Count</tt> . The <tt>RuleGroup</tt> will then override any block
--   action specified by individual rules contained within the group.
--   Instead of blocking matching requests, those requests will be counted.
--   You can view a record of counted requests using
--   <tt>GetSampledRequests</tt> . <tt>ActivatedRule|OverrideAction</tt>
--   applies only when updating or adding a <tt>RuleGroup</tt> to a
--   <tt>WebACL</tt> . In this case you do not use
--   <tt>ActivatedRule|Action</tt> . For all other update requests,
--   <tt>ActivatedRule|Action</tt> is used instead of
--   <tt>ActivatedRule|OverrideAction</tt> .</li>
--   <li><a>arAction</a> - Specifies the action that CloudFront or AWS WAF
--   takes when a web request matches the conditions in the <tt>Rule</tt> .
--   Valid values for <tt>Action</tt> include the following: *
--   <tt>ALLOW</tt> : CloudFront responds with the requested object. *
--   <tt>BLOCK</tt> : CloudFront responds with an HTTP 403 (Forbidden)
--   status code. * <tt>COUNT</tt> : AWS WAF increments a counter of
--   requests that match the conditions in the rule and then continues to
--   inspect the web request based on the remaining rules in the web ACL.
--   <tt>ActivatedRule|OverrideAction</tt> applies only when updating or
--   adding a <tt>RuleGroup</tt> to a <tt>WebACL</tt> . In this case you do
--   not use <tt>ActivatedRule|Action</tt> . For all other update requests,
--   <tt>ActivatedRule|Action</tt> is used instead of
--   <tt>ActivatedRule|OverrideAction</tt> .</li>
--   <li><a>arType</a> - The rule type, either <tt>REGULAR</tt> , as
--   defined by <a>Rule</a> , <tt>RATE_BASED</tt> , as defined by
--   <a>RateBasedRule</a> , or <tt>GROUP</tt> , as defined by
--   <a>RuleGroup</a> . The default is REGULAR. Although this field is
--   optional, be aware that if you try to add a RATE_BASED rule to a web
--   ACL without setting the type, the <tt>UpdateWebACL</tt> request will
--   fail because the request tries to add a REGULAR rule with the
--   specified ID, which does not exist.</li>
--   <li><a>arPriority</a> - Specifies the order in which the
--   <tt>Rules</tt> in a <tt>WebACL</tt> are evaluated. Rules with a lower
--   value for <tt>Priority</tt> are evaluated before <tt>Rules</tt> with a
--   higher value. The value must be a unique integer. If you add multiple
--   <tt>Rules</tt> to a <tt>WebACL</tt> , the values don't need to be
--   consecutive.</li>
--   <li><a>arRuleId</a> - The <tt>RuleId</tt> for a <tt>Rule</tt> . You
--   use <tt>RuleId</tt> to get more information about a <tt>Rule</tt> (see
--   <tt>GetRule</tt> ), update a <tt>Rule</tt> (see <tt>UpdateRule</tt> ),
--   insert a <tt>Rule</tt> into a <tt>WebACL</tt> or delete a one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>Rule</tt> from AWS WAF (see <tt>DeleteRule</tt> ). <tt>RuleId</tt>
--   is returned by <tt>CreateRule</tt> and by <tt>ListRules</tt> .</li>
--   </ul>
activatedRule :: Int -> Text -> ActivatedRule

-- | Use the <tt>OverrideAction</tt> to test your <tt>RuleGroup</tt> . Any
--   rule in a <tt>RuleGroup</tt> can potentially block a request. If you
--   set the <tt>OverrideAction</tt> to <tt>None</tt> , the
--   <tt>RuleGroup</tt> will block a request if any individual rule in the
--   <tt>RuleGroup</tt> matches the request and is configured to block that
--   request. However if you first want to test the <tt>RuleGroup</tt> ,
--   set the <tt>OverrideAction</tt> to <tt>Count</tt> . The
--   <tt>RuleGroup</tt> will then override any block action specified by
--   individual rules contained within the group. Instead of blocking
--   matching requests, those requests will be counted. You can view a
--   record of counted requests using <tt>GetSampledRequests</tt> .
--   <tt>ActivatedRule|OverrideAction</tt> applies only when updating or
--   adding a <tt>RuleGroup</tt> to a <tt>WebACL</tt> . In this case you do
--   not use <tt>ActivatedRule|Action</tt> . For all other update requests,
--   <tt>ActivatedRule|Action</tt> is used instead of
--   <tt>ActivatedRule|OverrideAction</tt> .
arOverrideAction :: Lens' ActivatedRule (Maybe WafOverrideAction)

-- | Specifies the action that CloudFront or AWS WAF takes when a web
--   request matches the conditions in the <tt>Rule</tt> . Valid values for
--   <tt>Action</tt> include the following: * <tt>ALLOW</tt> : CloudFront
--   responds with the requested object. * <tt>BLOCK</tt> : CloudFront
--   responds with an HTTP 403 (Forbidden) status code. * <tt>COUNT</tt> :
--   AWS WAF increments a counter of requests that match the conditions in
--   the rule and then continues to inspect the web request based on the
--   remaining rules in the web ACL. <tt>ActivatedRule|OverrideAction</tt>
--   applies only when updating or adding a <tt>RuleGroup</tt> to a
--   <tt>WebACL</tt> . In this case you do not use
--   <tt>ActivatedRule|Action</tt> . For all other update requests,
--   <tt>ActivatedRule|Action</tt> is used instead of
--   <tt>ActivatedRule|OverrideAction</tt> .
arAction :: Lens' ActivatedRule (Maybe WafAction)

-- | The rule type, either <tt>REGULAR</tt> , as defined by <a>Rule</a> ,
--   <tt>RATE_BASED</tt> , as defined by <a>RateBasedRule</a> , or
--   <tt>GROUP</tt> , as defined by <a>RuleGroup</a> . The default is
--   REGULAR. Although this field is optional, be aware that if you try to
--   add a RATE_BASED rule to a web ACL without setting the type, the
--   <tt>UpdateWebACL</tt> request will fail because the request tries to
--   add a REGULAR rule with the specified ID, which does not exist.
arType :: Lens' ActivatedRule (Maybe WafRuleType)

-- | Specifies the order in which the <tt>Rules</tt> in a <tt>WebACL</tt>
--   are evaluated. Rules with a lower value for <tt>Priority</tt> are
--   evaluated before <tt>Rules</tt> with a higher value. The value must be
--   a unique integer. If you add multiple <tt>Rules</tt> to a
--   <tt>WebACL</tt> , the values don't need to be consecutive.
arPriority :: Lens' ActivatedRule Int

-- | The <tt>RuleId</tt> for a <tt>Rule</tt> . You use <tt>RuleId</tt> to
--   get more information about a <tt>Rule</tt> (see <tt>GetRule</tt> ),
--   update a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), insert a
--   <tt>Rule</tt> into a <tt>WebACL</tt> or delete a one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>Rule</tt> from AWS WAF (see <tt>DeleteRule</tt> ). <tt>RuleId</tt>
--   is returned by <tt>CreateRule</tt> and by <tt>ListRules</tt> .
arRuleId :: Lens' ActivatedRule Text

-- | In a <tt>GetByteMatchSet</tt> request, <tt>ByteMatchSet</tt> is a
--   complex type that contains the <tt>ByteMatchSetId</tt> and
--   <tt>Name</tt> of a <tt>ByteMatchSet</tt> , and the values that you
--   specified when you updated the <tt>ByteMatchSet</tt> .
--   
--   A complex type that contains <tt>ByteMatchTuple</tt> objects, which
--   specify the parts of web requests that you want AWS WAF to inspect and
--   the values that you want AWS WAF to search for. If a
--   <tt>ByteMatchSet</tt> contains more than one <tt>ByteMatchTuple</tt>
--   object, a request needs to match the settings in only one
--   <tt>ByteMatchTuple</tt> to be considered a match.
--   
--   <i>See:</i> <a>byteMatchSet</a> smart constructor.
data ByteMatchSet

-- | Creates a value of <a>ByteMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bmsName</a> - A friendly name or description of the
--   <a>ByteMatchSet</a> . You can't change <tt>Name</tt> after you create
--   a <tt>ByteMatchSet</tt> .</li>
--   <li><a>bmsByteMatchSetId</a> - The <tt>ByteMatchSetId</tt> for a
--   <tt>ByteMatchSet</tt> . You use <tt>ByteMatchSetId</tt> to get
--   information about a <tt>ByteMatchSet</tt> (see
--   <tt>GetByteMatchSet</tt> ), update a <tt>ByteMatchSet</tt> (see
--   <tt>UpdateByteMatchSet</tt> ), insert a <tt>ByteMatchSet</tt> into a
--   <tt>Rule</tt> or delete one from a <tt>Rule</tt> (see
--   <tt>UpdateRule</tt> ), and delete a <tt>ByteMatchSet</tt> from AWS WAF
--   (see <tt>DeleteByteMatchSet</tt> ). <tt>ByteMatchSetId</tt> is
--   returned by <tt>CreateByteMatchSet</tt> and by
--   <tt>ListByteMatchSets</tt> .</li>
--   <li><a>bmsByteMatchTuples</a> - Specifies the bytes (typically a
--   string that corresponds with ASCII characters) that you want AWS WAF
--   to search for in web requests, the location in requests that you want
--   AWS WAF to search, and other settings.</li>
--   </ul>
byteMatchSet :: Text -> ByteMatchSet

-- | A friendly name or description of the <a>ByteMatchSet</a> . You can't
--   change <tt>Name</tt> after you create a <tt>ByteMatchSet</tt> .
bmsName :: Lens' ByteMatchSet (Maybe Text)

-- | The <tt>ByteMatchSetId</tt> for a <tt>ByteMatchSet</tt> . You use
--   <tt>ByteMatchSetId</tt> to get information about a
--   <tt>ByteMatchSet</tt> (see <tt>GetByteMatchSet</tt> ), update a
--   <tt>ByteMatchSet</tt> (see <tt>UpdateByteMatchSet</tt> ), insert a
--   <tt>ByteMatchSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>ByteMatchSet</tt> from AWS WAF (see <tt>DeleteByteMatchSet</tt> ).
--   <tt>ByteMatchSetId</tt> is returned by <tt>CreateByteMatchSet</tt> and
--   by <tt>ListByteMatchSets</tt> .
bmsByteMatchSetId :: Lens' ByteMatchSet Text

-- | Specifies the bytes (typically a string that corresponds with ASCII
--   characters) that you want AWS WAF to search for in web requests, the
--   location in requests that you want AWS WAF to search, and other
--   settings.
bmsByteMatchTuples :: Lens' ByteMatchSet [ByteMatchTuple]

-- | Returned by <tt>ListByteMatchSets</tt> . Each
--   <tt>ByteMatchSetSummary</tt> object includes the <tt>Name</tt> and
--   <tt>ByteMatchSetId</tt> for one <a>ByteMatchSet</a> .
--   
--   <i>See:</i> <a>byteMatchSetSummary</a> smart constructor.
data ByteMatchSetSummary

-- | Creates a value of <a>ByteMatchSetSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bmssByteMatchSetId</a> - The <tt>ByteMatchSetId</tt> for a
--   <tt>ByteMatchSet</tt> . You use <tt>ByteMatchSetId</tt> to get
--   information about a <tt>ByteMatchSet</tt> , update a
--   <tt>ByteMatchSet</tt> , remove a <tt>ByteMatchSet</tt> from a
--   <tt>Rule</tt> , and delete a <tt>ByteMatchSet</tt> from AWS WAF.
--   <tt>ByteMatchSetId</tt> is returned by <tt>CreateByteMatchSet</tt> and
--   by <tt>ListByteMatchSets</tt> .</li>
--   <li><a>bmssName</a> - A friendly name or description of the
--   <a>ByteMatchSet</a> . You can't change <tt>Name</tt> after you create
--   a <tt>ByteMatchSet</tt> .</li>
--   </ul>
byteMatchSetSummary :: Text -> Text -> ByteMatchSetSummary

-- | The <tt>ByteMatchSetId</tt> for a <tt>ByteMatchSet</tt> . You use
--   <tt>ByteMatchSetId</tt> to get information about a
--   <tt>ByteMatchSet</tt> , update a <tt>ByteMatchSet</tt> , remove a
--   <tt>ByteMatchSet</tt> from a <tt>Rule</tt> , and delete a
--   <tt>ByteMatchSet</tt> from AWS WAF. <tt>ByteMatchSetId</tt> is
--   returned by <tt>CreateByteMatchSet</tt> and by
--   <tt>ListByteMatchSets</tt> .
bmssByteMatchSetId :: Lens' ByteMatchSetSummary Text

-- | A friendly name or description of the <a>ByteMatchSet</a> . You can't
--   change <tt>Name</tt> after you create a <tt>ByteMatchSet</tt> .
bmssName :: Lens' ByteMatchSetSummary Text

-- | In an <tt>UpdateByteMatchSet</tt> request, <tt>ByteMatchSetUpdate</tt>
--   specifies whether to insert or delete a <a>ByteMatchTuple</a> and
--   includes the settings for the <tt>ByteMatchTuple</tt> .
--   
--   <i>See:</i> <a>byteMatchSetUpdate</a> smart constructor.
data ByteMatchSetUpdate

-- | Creates a value of <a>ByteMatchSetUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bmsuAction</a> - Specifies whether to insert or delete a
--   <a>ByteMatchTuple</a> .</li>
--   <li><a>bmsuByteMatchTuple</a> - Information about the part of a web
--   request that you want AWS WAF to inspect and the value that you want
--   AWS WAF to search for. If you specify <tt>DELETE</tt> for the value of
--   <tt>Action</tt> , the <tt>ByteMatchTuple</tt> values must exactly
--   match the values in the <tt>ByteMatchTuple</tt> that you want to
--   delete from the <tt>ByteMatchSet</tt> .</li>
--   </ul>
byteMatchSetUpdate :: ChangeAction -> ByteMatchTuple -> ByteMatchSetUpdate

-- | Specifies whether to insert or delete a <a>ByteMatchTuple</a> .
bmsuAction :: Lens' ByteMatchSetUpdate ChangeAction

-- | Information about the part of a web request that you want AWS WAF to
--   inspect and the value that you want AWS WAF to search for. If you
--   specify <tt>DELETE</tt> for the value of <tt>Action</tt> , the
--   <tt>ByteMatchTuple</tt> values must exactly match the values in the
--   <tt>ByteMatchTuple</tt> that you want to delete from the
--   <tt>ByteMatchSet</tt> .
bmsuByteMatchTuple :: Lens' ByteMatchSetUpdate ByteMatchTuple

-- | The bytes (typically a string that corresponds with ASCII characters)
--   that you want AWS WAF to search for in web requests, the location in
--   requests that you want AWS WAF to search, and other settings.
--   
--   <i>See:</i> <a>byteMatchTuple</a> smart constructor.
data ByteMatchTuple

-- | Creates a value of <a>ByteMatchTuple</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bmtFieldToMatch</a> - The part of a web request that you want
--   AWS WAF to search, such as a specified header or a query string. For
--   more information, see <a>FieldToMatch</a> .</li>
--   <li><a>bmtTargetString</a> - The value that you want AWS WAF to search
--   for. AWS WAF searches for the specified string in the part of web
--   requests that you specified in <tt>FieldToMatch</tt> . The maximum
--   length of the value is 50 bytes. Valid values depend on the values
--   that you specified for <tt>FieldToMatch</tt> : * <tt>HEADER</tt> : The
--   value that you want AWS WAF to search for in the request header that
--   you specified in <a>FieldToMatch</a> , for example, the value of the
--   <tt>User-Agent</tt> or <tt>Referer</tt> header. * <tt>METHOD</tt> :
--   The HTTP method, which indicates the type of operation specified in
--   the request. CloudFront supports the following methods:
--   <tt>DELETE</tt> , <tt>GET</tt> , <tt>HEAD</tt> , <tt>OPTIONS</tt> ,
--   <tt>PATCH</tt> , <tt>POST</tt> , and <tt>PUT</tt> . *
--   <tt>QUERY_STRING</tt> : The value that you want AWS WAF to search for
--   in the query string, which is the part of a URL that appears after a
--   <tt>?</tt> character. * <tt>URI</tt> : The value that you want AWS WAF
--   to search for in the part of a URL that identifies a resource, for
--   example, <tt><i>images</i>daily-ad.jpg</tt> . * <tt>BODY</tt> : The
--   part of a request that contains any additional data that you want to
--   send to your web server as the HTTP request body, such as data from a
--   form. The request body immediately follows the request headers. Note
--   that only the first <tt>8192</tt> bytes of the request body are
--   forwarded to AWS WAF for inspection. To allow or block requests based
--   on the length of the body, you can create a size constraint set. For
--   more information, see <tt>CreateSizeConstraintSet</tt> . If
--   <tt>TargetString</tt> includes alphabetic characters A-Z and a-z, note
--   that the value is case sensitive. <b>If you're using the AWS WAF
--   API</b> Specify a base64-encoded version of the value. The maximum
--   length of the value before you base64-encode it is 50 bytes. For
--   example, suppose the value of <tt>Type</tt> is <tt>HEADER</tt> and the
--   value of <tt>Data</tt> is <tt>User-Agent</tt> . If you want to search
--   the <tt>User-Agent</tt> header for the value <tt>BadBot</tt> , you
--   base64-encode <tt>BadBot</tt> using MIME base64 encoding and include
--   the resulting value, <tt>QmFkQm90</tt> , in the value of
--   <tt>TargetString</tt> . <b>If you're using the AWS CLI or one of the
--   AWS SDKs</b> The value that you want AWS WAF to search for. The SDK
--   automatically base64 encodes the value.-- <i>Note:</i> This
--   <tt>Lens</tt> automatically encodes and decodes Base64 data. The
--   underlying isomorphism will encode to Base64 representation during
--   serialisation, and decode from Base64 representation during
--   deserialisation. This <tt>Lens</tt> accepts and returns only raw
--   unencoded data.</li>
--   <li><a>bmtTextTransformation</a> - Text transformations eliminate some
--   of the unusual formatting that attackers use in web requests in an
--   effort to bypass AWS WAF. If you specify a transformation, AWS WAF
--   performs the transformation on <tt>TargetString</tt> before inspecting
--   a request for a match. <b>CMD_LINE</b> When you're concerned that
--   attackers are injecting an operating system commandline command and
--   using unusual formatting to disguise some or all of the command, use
--   this option to perform the following transformations: * Delete the
--   following characters: " ' ^ * Delete spaces before the following
--   characters: / ( * Replace the following characters with a space: , ; *
--   Replace multiple spaces with one space * Convert uppercase letters
--   (A-Z) to lowercase (a-z) <b>COMPRESS_WHITE_SPACE</b> Use this option
--   to replace the following characters with a space character (decimal
--   32): * f, formfeed, decimal 12 * t, tab, decimal 9 * n, newline,
--   decimal 10 * r, carriage return, decimal 13 * v, vertical tab, decimal
--   11 * non-breaking space, decimal 160 <tt>COMPRESS_WHITE_SPACE</tt>
--   also replaces multiple spaces with one space.
--   <b>HTML_ENTITY_DECODE</b> Use this option to replace HTML-encoded
--   characters with unencoded characters. <tt>HTML_ENTITY_DECODE</tt>
--   performs the following operations: * Replaces
--   <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text
--   transformations.</li>
--   <li><a>bmtPositionalConstraint</a> - Within the portion of a web
--   request that you want to search (for example, in the query string, if
--   any), specify where you want AWS WAF to search. Valid values include
--   the following: <b>CONTAINS</b> The specified part of the web request
--   must include the value of <tt>TargetString</tt> , but the location
--   doesn't matter. <b>CONTAINS_WORD</b> The specified part of the web
--   request must include the value of <tt>TargetString</tt> , and
--   <tt>TargetString</tt> must contain only alphanumeric characters or
--   underscore (A-Z, a-z, 0-9, or _). In addition, <tt>TargetString</tt>
--   must be a word, which means one of the following: *
--   <tt>TargetString</tt> exactly matches the value of the specified part
--   of the web request, such as the value of a header. *
--   <tt>TargetString</tt> is at the beginning of the specified part of the
--   web request and is followed by a character other than an alphanumeric
--   character or underscore (_), for example, <tt>BadBot;</tt> . *
--   <tt>TargetString</tt> is at the end of the specified part of the web
--   request and is preceded by a character other than an alphanumeric
--   character or underscore (_), for example, <tt>;BadBot</tt> . *
--   <tt>TargetString</tt> is in the middle of the specified part of the
--   web request and is preceded and followed by characters other than
--   alphanumeric characters or underscore (_), for example,
--   <tt>-BadBot;</tt> . <b>EXACTLY</b> The value of the specified part of
--   the web request must exactly match the value of <tt>TargetString</tt>
--   . <b>STARTS_WITH</b> The value of <tt>TargetString</tt> must appear at
--   the beginning of the specified part of the web request.
--   <b>ENDS_WITH</b> The value of <tt>TargetString</tt> must appear at the
--   end of the specified part of the web request.</li>
--   </ul>
byteMatchTuple :: FieldToMatch -> ByteString -> TextTransformation -> PositionalConstraint -> ByteMatchTuple

-- | The part of a web request that you want AWS WAF to search, such as a
--   specified header or a query string. For more information, see
--   <a>FieldToMatch</a> .
bmtFieldToMatch :: Lens' ByteMatchTuple FieldToMatch

-- | The value that you want AWS WAF to search for. AWS WAF searches for
--   the specified string in the part of web requests that you specified in
--   <tt>FieldToMatch</tt> . The maximum length of the value is 50 bytes.
--   Valid values depend on the values that you specified for
--   <tt>FieldToMatch</tt> : * <tt>HEADER</tt> : The value that you want
--   AWS WAF to search for in the request header that you specified in
--   <a>FieldToMatch</a> , for example, the value of the
--   <tt>User-Agent</tt> or <tt>Referer</tt> header. * <tt>METHOD</tt> :
--   The HTTP method, which indicates the type of operation specified in
--   the request. CloudFront supports the following methods:
--   <tt>DELETE</tt> , <tt>GET</tt> , <tt>HEAD</tt> , <tt>OPTIONS</tt> ,
--   <tt>PATCH</tt> , <tt>POST</tt> , and <tt>PUT</tt> . *
--   <tt>QUERY_STRING</tt> : The value that you want AWS WAF to search for
--   in the query string, which is the part of a URL that appears after a
--   <tt>?</tt> character. * <tt>URI</tt> : The value that you want AWS WAF
--   to search for in the part of a URL that identifies a resource, for
--   example, <tt><i>images</i>daily-ad.jpg</tt> . * <tt>BODY</tt> : The
--   part of a request that contains any additional data that you want to
--   send to your web server as the HTTP request body, such as data from a
--   form. The request body immediately follows the request headers. Note
--   that only the first <tt>8192</tt> bytes of the request body are
--   forwarded to AWS WAF for inspection. To allow or block requests based
--   on the length of the body, you can create a size constraint set. For
--   more information, see <tt>CreateSizeConstraintSet</tt> . If
--   <tt>TargetString</tt> includes alphabetic characters A-Z and a-z, note
--   that the value is case sensitive. <b>If you're using the AWS WAF
--   API</b> Specify a base64-encoded version of the value. The maximum
--   length of the value before you base64-encode it is 50 bytes. For
--   example, suppose the value of <tt>Type</tt> is <tt>HEADER</tt> and the
--   value of <tt>Data</tt> is <tt>User-Agent</tt> . If you want to search
--   the <tt>User-Agent</tt> header for the value <tt>BadBot</tt> , you
--   base64-encode <tt>BadBot</tt> using MIME base64 encoding and include
--   the resulting value, <tt>QmFkQm90</tt> , in the value of
--   <tt>TargetString</tt> . <b>If you're using the AWS CLI or one of the
--   AWS SDKs</b> The value that you want AWS WAF to search for. The SDK
--   automatically base64 encodes the value.-- <i>Note:</i> This
--   <tt>Lens</tt> automatically encodes and decodes Base64 data. The
--   underlying isomorphism will encode to Base64 representation during
--   serialisation, and decode from Base64 representation during
--   deserialisation. This <tt>Lens</tt> accepts and returns only raw
--   unencoded data.
bmtTargetString :: Lens' ByteMatchTuple ByteString

-- | Text transformations eliminate some of the unusual formatting that
--   attackers use in web requests in an effort to bypass AWS WAF. If you
--   specify a transformation, AWS WAF performs the transformation on
--   <tt>TargetString</tt> before inspecting a request for a match.
--   <b>CMD_LINE</b> When you're concerned that attackers are injecting an
--   operating system commandline command and using unusual formatting to
--   disguise some or all of the command, use this option to perform the
--   following transformations: * Delete the following characters: " ' ^ *
--   Delete spaces before the following characters: / ( * Replace the
--   following characters with a space: , ; * Replace multiple spaces with
--   one space * Convert uppercase letters (A-Z) to lowercase (a-z)
--   <b>COMPRESS_WHITE_SPACE</b> Use this option to replace the following
--   characters with a space character (decimal 32): * f, formfeed, decimal
--   12 * t, tab, decimal 9 * n, newline, decimal 10 * r, carriage return,
--   decimal 13 * v, vertical tab, decimal 11 * non-breaking space, decimal
--   160 <tt>COMPRESS_WHITE_SPACE</tt> also replaces multiple spaces with
--   one space. <b>HTML_ENTITY_DECODE</b> Use this option to replace
--   HTML-encoded characters with unencoded characters.
--   <tt>HTML_ENTITY_DECODE</tt> performs the following operations: *
--   Replaces <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text transformations.
bmtTextTransformation :: Lens' ByteMatchTuple TextTransformation

-- | Within the portion of a web request that you want to search (for
--   example, in the query string, if any), specify where you want AWS WAF
--   to search. Valid values include the following: <b>CONTAINS</b> The
--   specified part of the web request must include the value of
--   <tt>TargetString</tt> , but the location doesn't matter.
--   <b>CONTAINS_WORD</b> The specified part of the web request must
--   include the value of <tt>TargetString</tt> , and <tt>TargetString</tt>
--   must contain only alphanumeric characters or underscore (A-Z, a-z,
--   0-9, or _). In addition, <tt>TargetString</tt> must be a word, which
--   means one of the following: * <tt>TargetString</tt> exactly matches
--   the value of the specified part of the web request, such as the value
--   of a header. * <tt>TargetString</tt> is at the beginning of the
--   specified part of the web request and is followed by a character other
--   than an alphanumeric character or underscore (_), for example,
--   <tt>BadBot;</tt> . * <tt>TargetString</tt> is at the end of the
--   specified part of the web request and is preceded by a character other
--   than an alphanumeric character or underscore (_), for example,
--   <tt>;BadBot</tt> . * <tt>TargetString</tt> is in the middle of the
--   specified part of the web request and is preceded and followed by
--   characters other than alphanumeric characters or underscore (_), for
--   example, <tt>-BadBot;</tt> . <b>EXACTLY</b> The value of the specified
--   part of the web request must exactly match the value of
--   <tt>TargetString</tt> . <b>STARTS_WITH</b> The value of
--   <tt>TargetString</tt> must appear at the beginning of the specified
--   part of the web request. <b>ENDS_WITH</b> The value of
--   <tt>TargetString</tt> must appear at the end of the specified part of
--   the web request.
bmtPositionalConstraint :: Lens' ByteMatchTuple PositionalConstraint

-- | Specifies where in a web request to look for <tt>TargetString</tt> .
--   
--   <i>See:</i> <a>fieldToMatch</a> smart constructor.
data FieldToMatch

-- | Creates a value of <a>FieldToMatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ftmData</a> - When the value of <tt>Type</tt> is
--   <tt>HEADER</tt> , enter the name of the header that you want AWS WAF
--   to search, for example, <tt>User-Agent</tt> or <tt>Referer</tt> . If
--   the value of <tt>Type</tt> is any other value, omit <tt>Data</tt> .
--   The name of the header is not case sensitive.</li>
--   <li><a>ftmType</a> - The part of the web request that you want AWS WAF
--   to search for a specified string. Parts of a request that you can
--   search include the following: * <tt>HEADER</tt> : A specified request
--   header, for example, the value of the <tt>User-Agent</tt> or
--   <tt>Referer</tt> header. If you choose <tt>HEADER</tt> for the type,
--   specify the name of the header in <tt>Data</tt> . * <tt>METHOD</tt> :
--   The HTTP method, which indicated the type of operation that the
--   request is asking the origin to perform. Amazon CloudFront supports
--   the following methods: <tt>DELETE</tt> , <tt>GET</tt> , <tt>HEAD</tt>
--   , <tt>OPTIONS</tt> , <tt>PATCH</tt> , <tt>POST</tt> , and <tt>PUT</tt>
--   . * <tt>QUERY_STRING</tt> : A query string, which is the part of a URL
--   that appears after a <tt>?</tt> character, if any. * <tt>URI</tt> :
--   The part of a web request that identifies a resource, for example,
--   <tt><i>images</i>daily-ad.jpg</tt> . * <tt>BODY</tt> : The part of a
--   request that contains any additional data that you want to send to
--   your web server as the HTTP request body, such as data from a form.
--   The request body immediately follows the request headers. Note that
--   only the first <tt>8192</tt> bytes of the request body are forwarded
--   to AWS WAF for inspection. To allow or block requests based on the
--   length of the body, you can create a size constraint set. For more
--   information, see <tt>CreateSizeConstraintSet</tt> .</li>
--   </ul>
fieldToMatch :: MatchFieldType -> FieldToMatch

-- | When the value of <tt>Type</tt> is <tt>HEADER</tt> , enter the name of
--   the header that you want AWS WAF to search, for example,
--   <tt>User-Agent</tt> or <tt>Referer</tt> . If the value of
--   <tt>Type</tt> is any other value, omit <tt>Data</tt> . The name of the
--   header is not case sensitive.
ftmData :: Lens' FieldToMatch (Maybe Text)

-- | The part of the web request that you want AWS WAF to search for a
--   specified string. Parts of a request that you can search include the
--   following: * <tt>HEADER</tt> : A specified request header, for
--   example, the value of the <tt>User-Agent</tt> or <tt>Referer</tt>
--   header. If you choose <tt>HEADER</tt> for the type, specify the name
--   of the header in <tt>Data</tt> . * <tt>METHOD</tt> : The HTTP method,
--   which indicated the type of operation that the request is asking the
--   origin to perform. Amazon CloudFront supports the following methods:
--   <tt>DELETE</tt> , <tt>GET</tt> , <tt>HEAD</tt> , <tt>OPTIONS</tt> ,
--   <tt>PATCH</tt> , <tt>POST</tt> , and <tt>PUT</tt> . *
--   <tt>QUERY_STRING</tt> : A query string, which is the part of a URL
--   that appears after a <tt>?</tt> character, if any. * <tt>URI</tt> :
--   The part of a web request that identifies a resource, for example,
--   <tt><i>images</i>daily-ad.jpg</tt> . * <tt>BODY</tt> : The part of a
--   request that contains any additional data that you want to send to
--   your web server as the HTTP request body, such as data from a form.
--   The request body immediately follows the request headers. Note that
--   only the first <tt>8192</tt> bytes of the request body are forwarded
--   to AWS WAF for inspection. To allow or block requests based on the
--   length of the body, you can create a size constraint set. For more
--   information, see <tt>CreateSizeConstraintSet</tt> .
ftmType :: Lens' FieldToMatch MatchFieldType

-- | The country from which web requests originate that you want AWS WAF to
--   search for.
--   
--   <i>See:</i> <a>geoMatchConstraint</a> smart constructor.
data GeoMatchConstraint

-- | Creates a value of <a>GeoMatchConstraint</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gmcType</a> - The type of geographical area you want AWS WAF to
--   search for. Currently <tt>Country</tt> is the only valid value.</li>
--   <li><a>gmcValue</a> - The country that you want AWS WAF to search
--   for.</li>
--   </ul>
geoMatchConstraint :: GeoMatchConstraintType -> GeoMatchConstraintValue -> GeoMatchConstraint

-- | The type of geographical area you want AWS WAF to search for.
--   Currently <tt>Country</tt> is the only valid value.
gmcType :: Lens' GeoMatchConstraint GeoMatchConstraintType

-- | The country that you want AWS WAF to search for.
gmcValue :: Lens' GeoMatchConstraint GeoMatchConstraintValue

-- | Contains one or more countries that AWS WAF will search for.
--   
--   <i>See:</i> <a>geoMatchSet</a> smart constructor.
data GeoMatchSet

-- | Creates a value of <a>GeoMatchSet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gmsName</a> - A friendly name or description of the
--   <a>GeoMatchSet</a> . You can't change the name of an
--   <tt>GeoMatchSet</tt> after you create it.</li>
--   <li><a>gmsGeoMatchSetId</a> - The <tt>GeoMatchSetId</tt> for an
--   <tt>GeoMatchSet</tt> . You use <tt>GeoMatchSetId</tt> to get
--   information about a <tt>GeoMatchSet</tt> (see <a>GeoMatchSet</a> ),
--   update a <tt>GeoMatchSet</tt> (see <tt>UpdateGeoMatchSet</tt> ),
--   insert a <tt>GeoMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>GeoMatchSet</tt> from AWS WAF (see <tt>DeleteGeoMatchSet</tt> ).
--   <tt>GeoMatchSetId</tt> is returned by <tt>CreateGeoMatchSet</tt> and
--   by <tt>ListGeoMatchSets</tt> .</li>
--   <li><a>gmsGeoMatchConstraints</a> - An array of
--   <a>GeoMatchConstraint</a> objects, which contain the country that you
--   want AWS WAF to search for.</li>
--   </ul>
geoMatchSet :: Text -> GeoMatchSet

-- | A friendly name or description of the <a>GeoMatchSet</a> . You can't
--   change the name of an <tt>GeoMatchSet</tt> after you create it.
gmsName :: Lens' GeoMatchSet (Maybe Text)

-- | The <tt>GeoMatchSetId</tt> for an <tt>GeoMatchSet</tt> . You use
--   <tt>GeoMatchSetId</tt> to get information about a <tt>GeoMatchSet</tt>
--   (see <a>GeoMatchSet</a> ), update a <tt>GeoMatchSet</tt> (see
--   <tt>UpdateGeoMatchSet</tt> ), insert a <tt>GeoMatchSet</tt> into a
--   <tt>Rule</tt> or delete one from a <tt>Rule</tt> (see
--   <tt>UpdateRule</tt> ), and delete a <tt>GeoMatchSet</tt> from AWS WAF
--   (see <tt>DeleteGeoMatchSet</tt> ). <tt>GeoMatchSetId</tt> is returned
--   by <tt>CreateGeoMatchSet</tt> and by <tt>ListGeoMatchSets</tt> .
gmsGeoMatchSetId :: Lens' GeoMatchSet Text

-- | An array of <a>GeoMatchConstraint</a> objects, which contain the
--   country that you want AWS WAF to search for.
gmsGeoMatchConstraints :: Lens' GeoMatchSet [GeoMatchConstraint]

-- | Contains the identifier and the name of the <tt>GeoMatchSet</tt> .
--   
--   <i>See:</i> <a>geoMatchSetSummary</a> smart constructor.
data GeoMatchSetSummary

-- | Creates a value of <a>GeoMatchSetSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gmssGeoMatchSetId</a> - The <tt>GeoMatchSetId</tt> for an
--   <a>GeoMatchSet</a> . You can use <tt>GeoMatchSetId</tt> in a
--   <tt>GetGeoMatchSet</tt> request to get detailed information about an
--   <a>GeoMatchSet</a> .</li>
--   <li><a>gmssName</a> - A friendly name or description of the
--   <a>GeoMatchSet</a> . You can't change the name of an
--   <tt>GeoMatchSet</tt> after you create it.</li>
--   </ul>
geoMatchSetSummary :: Text -> Text -> GeoMatchSetSummary

-- | The <tt>GeoMatchSetId</tt> for an <a>GeoMatchSet</a> . You can use
--   <tt>GeoMatchSetId</tt> in a <tt>GetGeoMatchSet</tt> request to get
--   detailed information about an <a>GeoMatchSet</a> .
gmssGeoMatchSetId :: Lens' GeoMatchSetSummary Text

-- | A friendly name or description of the <a>GeoMatchSet</a> . You can't
--   change the name of an <tt>GeoMatchSet</tt> after you create it.
gmssName :: Lens' GeoMatchSetSummary Text

-- | Specifies the type of update to perform to an <a>GeoMatchSet</a> with
--   <tt>UpdateGeoMatchSet</tt> .
--   
--   <i>See:</i> <a>geoMatchSetUpdate</a> smart constructor.
data GeoMatchSetUpdate

-- | Creates a value of <a>GeoMatchSetUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gmsuAction</a> - Specifies whether to insert or delete a
--   country with <tt>UpdateGeoMatchSet</tt> .</li>
--   <li><a>gmsuGeoMatchConstraint</a> - The country from which web
--   requests originate that you want AWS WAF to search for.</li>
--   </ul>
geoMatchSetUpdate :: ChangeAction -> GeoMatchConstraint -> GeoMatchSetUpdate

-- | Specifies whether to insert or delete a country with
--   <tt>UpdateGeoMatchSet</tt> .
gmsuAction :: Lens' GeoMatchSetUpdate ChangeAction

-- | The country from which web requests originate that you want AWS WAF to
--   search for.
gmsuGeoMatchConstraint :: Lens' GeoMatchSetUpdate GeoMatchConstraint

-- | The response from a <tt>GetSampledRequests</tt> request includes an
--   <tt>HTTPHeader</tt> complex type that appears as <tt>Headers</tt> in
--   the response syntax. <tt>HTTPHeader</tt> contains the names and values
--   of all of the headers that appear in one of the web requests that were
--   returned by <tt>GetSampledRequests</tt> .
--   
--   <i>See:</i> <a>hTTPHeader</a> smart constructor.
data HTTPHeader

-- | Creates a value of <a>HTTPHeader</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httphValue</a> - The value of one of the headers in the sampled
--   web request.</li>
--   <li><a>httphName</a> - The name of one of the headers in the sampled
--   web request.</li>
--   </ul>
hTTPHeader :: HTTPHeader

-- | The value of one of the headers in the sampled web request.
httphValue :: Lens' HTTPHeader (Maybe Text)

-- | The name of one of the headers in the sampled web request.
httphName :: Lens' HTTPHeader (Maybe Text)

-- | The response from a <tt>GetSampledRequests</tt> request includes an
--   <tt>HTTPRequest</tt> complex type that appears as <tt>Request</tt> in
--   the response syntax. <tt>HTTPRequest</tt> contains information about
--   one of the web requests that were returned by
--   <tt>GetSampledRequests</tt> .
--   
--   <i>See:</i> <a>hTTPRequest</a> smart constructor.
data HTTPRequest

-- | Creates a value of <a>HTTPRequest</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httprHTTPVersion</a> - The HTTP version specified in the
--   sampled web request, for example, <tt>HTTP/1.1</tt> .</li>
--   <li><a>httprCountry</a> - The two-letter country code for the country
--   that the request originated from. For a current list of country codes,
--   see the Wikipedia entry <a>ISO 3166-1 alpha-2</a> .</li>
--   <li><a>httprURI</a> - The part of a web request that identifies the
--   resource, for example, <tt><i>images</i>daily-ad.jpg</tt> .</li>
--   <li><a>httprHeaders</a> - A complex type that contains two values for
--   each header in the sampled web request: the name of the header and the
--   value of the header.</li>
--   <li><a>httprMethod</a> - The HTTP method specified in the sampled web
--   request. CloudFront supports the following methods: <tt>DELETE</tt> ,
--   <tt>GET</tt> , <tt>HEAD</tt> , <tt>OPTIONS</tt> , <tt>PATCH</tt> ,
--   <tt>POST</tt> , and <tt>PUT</tt> .</li>
--   <li><a>httprClientIP</a> - The IP address that the request originated
--   from. If the <tt>WebACL</tt> is associated with a CloudFront
--   distribution, this is the value of one of the following fields in
--   CloudFront access logs: * <tt>c-ip</tt> , if the viewer did not use an
--   HTTP proxy or a load balancer to send the request *
--   <tt>x-forwarded-for</tt> , if the viewer did use an HTTP proxy or a
--   load balancer to send the request</li>
--   </ul>
hTTPRequest :: HTTPRequest

-- | The HTTP version specified in the sampled web request, for example,
--   <tt>HTTP/1.1</tt> .
httprHTTPVersion :: Lens' HTTPRequest (Maybe Text)

-- | The two-letter country code for the country that the request
--   originated from. For a current list of country codes, see the
--   Wikipedia entry <a>ISO 3166-1 alpha-2</a> .
httprCountry :: Lens' HTTPRequest (Maybe Text)

-- | The part of a web request that identifies the resource, for example,
--   <tt><i>images</i>daily-ad.jpg</tt> .
httprURI :: Lens' HTTPRequest (Maybe Text)

-- | A complex type that contains two values for each header in the sampled
--   web request: the name of the header and the value of the header.
httprHeaders :: Lens' HTTPRequest [HTTPHeader]

-- | The HTTP method specified in the sampled web request. CloudFront
--   supports the following methods: <tt>DELETE</tt> , <tt>GET</tt> ,
--   <tt>HEAD</tt> , <tt>OPTIONS</tt> , <tt>PATCH</tt> , <tt>POST</tt> ,
--   and <tt>PUT</tt> .
httprMethod :: Lens' HTTPRequest (Maybe Text)

-- | The IP address that the request originated from. If the
--   <tt>WebACL</tt> is associated with a CloudFront distribution, this is
--   the value of one of the following fields in CloudFront access logs: *
--   <tt>c-ip</tt> , if the viewer did not use an HTTP proxy or a load
--   balancer to send the request * <tt>x-forwarded-for</tt> , if the
--   viewer did use an HTTP proxy or a load balancer to send the request
httprClientIP :: Lens' HTTPRequest (Maybe Text)

-- | Contains one or more IP addresses or blocks of IP addresses specified
--   in Classless Inter-Domain Routing (CIDR) notation. AWS WAF supports
--   <i>8, </i>16, <i>24, and </i>32 IP address ranges for IPv4, and <i>24,
--   </i>32, <i>48, </i>56, <i>64 and </i>128 for IPv6.
--   
--   To specify an individual IP address, you specify the four-part IP
--   address followed by a <tt>/32</tt> , for example, 192.0.2.0<i>31. To
--   block a range of IP addresses, you can specify a @</i>128<tt> ,
--   </tt><i>64<tt> , </tt></i>56<tt> , </tt><i>48<tt> , </tt></i>32<tt> ,
--   </tt><i>24<tt> , </tt></i>16<tt> , or </tt><i>8@ CIDR. For more
--   information about CIDR notation, see the Wikipedia entry
--   &lt;https:</i><i>en.wikipedia.org</i>wiki/Classless_Inter-Domain_Routing
--   Classless Inter-Domain Routing&gt; .
--   
--   <i>See:</i> <a>ipSet</a> smart constructor.
data IPSet

-- | Creates a value of <a>IPSet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>isName</a> - A friendly name or description of the <a>IPSet</a>
--   . You can't change the name of an <tt>IPSet</tt> after you create
--   it.</li>
--   <li><a>isIPSetId</a> - The <tt>IPSetId</tt> for an <tt>IPSet</tt> .
--   You use <tt>IPSetId</tt> to get information about an <tt>IPSet</tt>
--   (see <tt>GetIPSet</tt> ), update an <tt>IPSet</tt> (see
--   <tt>UpdateIPSet</tt> ), insert an <tt>IPSet</tt> into a <tt>Rule</tt>
--   or delete one from a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and
--   delete an <tt>IPSet</tt> from AWS WAF (see <tt>DeleteIPSet</tt> ).
--   <tt>IPSetId</tt> is returned by <tt>CreateIPSet</tt> and by
--   <tt>ListIPSets</tt> .</li>
--   <li><a>isIPSetDescriptors</a> - The IP address type (<tt>IPV4</tt> or
--   <tt>IPV6</tt> ) and the IP address range (in CIDR notation) that web
--   requests originate from. If the <tt>WebACL</tt> is associated with a
--   CloudFront distribution and the viewer did not use an HTTP proxy or a
--   load balancer to send the request, this is the value of the c-ip field
--   in the CloudFront access logs.</li>
--   </ul>
ipSet :: Text -> IPSet

-- | A friendly name or description of the <a>IPSet</a> . You can't change
--   the name of an <tt>IPSet</tt> after you create it.
isName :: Lens' IPSet (Maybe Text)

-- | The <tt>IPSetId</tt> for an <tt>IPSet</tt> . You use <tt>IPSetId</tt>
--   to get information about an <tt>IPSet</tt> (see <tt>GetIPSet</tt> ),
--   update an <tt>IPSet</tt> (see <tt>UpdateIPSet</tt> ), insert an
--   <tt>IPSet</tt> into a <tt>Rule</tt> or delete one from a <tt>Rule</tt>
--   (see <tt>UpdateRule</tt> ), and delete an <tt>IPSet</tt> from AWS WAF
--   (see <tt>DeleteIPSet</tt> ). <tt>IPSetId</tt> is returned by
--   <tt>CreateIPSet</tt> and by <tt>ListIPSets</tt> .
isIPSetId :: Lens' IPSet Text

-- | The IP address type (<tt>IPV4</tt> or <tt>IPV6</tt> ) and the IP
--   address range (in CIDR notation) that web requests originate from. If
--   the <tt>WebACL</tt> is associated with a CloudFront distribution and
--   the viewer did not use an HTTP proxy or a load balancer to send the
--   request, this is the value of the c-ip field in the CloudFront access
--   logs.
isIPSetDescriptors :: Lens' IPSet [IPSetDescriptor]

-- | Specifies the IP address type (<tt>IPV4</tt> or <tt>IPV6</tt> ) and
--   the IP address range (in CIDR format) that web requests originate
--   from.
--   
--   <i>See:</i> <a>ipSetDescriptor</a> smart constructor.
data IPSetDescriptor

-- | Creates a value of <a>IPSetDescriptor</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>isdType</a> - Specify <tt>IPV4</tt> or <tt>IPV6</tt> .</li>
--   <li><a>isdValue</a> - Specify an IPv4 address by using CIDR notation.
--   For example: * To configure AWS WAF to allow, block, or count requests
--   that originated from the IP address 192.0.2.44, specify
--   <tt>192.0.2.44/32</tt> . * To configure AWS WAF to allow, block, or
--   count requests that originated from IP addresses from 192.0.2.0 to
--   192.0.2.255, specify <tt>192.0.2.0/24</tt> . For more information
--   about CIDR notation, see the Wikipedia entry <a>Classless Inter-Domain
--   Routing</a> . Specify an IPv6 address by using CIDR notation. For
--   example: * To configure AWS WAF to allow, block, or count requests
--   that originated from the IP address
--   1111:0000:0000:0000:0000:0000:0000:0111, specify
--   <tt>1111:0000:0000:0000:0000:0000:0000:0111/128</tt> . * To configure
--   AWS WAF to allow, block, or count requests that originated from IP
--   addresses 1111:0000:0000:0000:0000:0000:0000:0000 to
--   1111:0000:0000:0000:ffff:ffff:ffff:ffff, specify
--   <tt>1111:0000:0000:0000:0000:0000:0000:0000/64</tt> .</li>
--   </ul>
ipSetDescriptor :: IPSetDescriptorType -> Text -> IPSetDescriptor

-- | Specify <tt>IPV4</tt> or <tt>IPV6</tt> .
isdType :: Lens' IPSetDescriptor IPSetDescriptorType

-- | Specify an IPv4 address by using CIDR notation. For example: * To
--   configure AWS WAF to allow, block, or count requests that originated
--   from the IP address 192.0.2.44, specify <tt>192.0.2.44/32</tt> . * To
--   configure AWS WAF to allow, block, or count requests that originated
--   from IP addresses from 192.0.2.0 to 192.0.2.255, specify
--   <tt>192.0.2.0/24</tt> . For more information about CIDR notation, see
--   the Wikipedia entry <a>Classless Inter-Domain Routing</a> . Specify an
--   IPv6 address by using CIDR notation. For example: * To configure AWS
--   WAF to allow, block, or count requests that originated from the IP
--   address 1111:0000:0000:0000:0000:0000:0000:0111, specify
--   <tt>1111:0000:0000:0000:0000:0000:0000:0111/128</tt> . * To configure
--   AWS WAF to allow, block, or count requests that originated from IP
--   addresses 1111:0000:0000:0000:0000:0000:0000:0000 to
--   1111:0000:0000:0000:ffff:ffff:ffff:ffff, specify
--   <tt>1111:0000:0000:0000:0000:0000:0000:0000/64</tt> .
isdValue :: Lens' IPSetDescriptor Text

-- | Contains the identifier and the name of the <tt>IPSet</tt> .
--   
--   <i>See:</i> <a>ipSetSummary</a> smart constructor.
data IPSetSummary

-- | Creates a value of <a>IPSetSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>issIPSetId</a> - The <tt>IPSetId</tt> for an <a>IPSet</a> . You
--   can use <tt>IPSetId</tt> in a <tt>GetIPSet</tt> request to get
--   detailed information about an <a>IPSet</a> .</li>
--   <li><a>issName</a> - A friendly name or description of the
--   <a>IPSet</a> . You can't change the name of an <tt>IPSet</tt> after
--   you create it.</li>
--   </ul>
ipSetSummary :: Text -> Text -> IPSetSummary

-- | The <tt>IPSetId</tt> for an <a>IPSet</a> . You can use
--   <tt>IPSetId</tt> in a <tt>GetIPSet</tt> request to get detailed
--   information about an <a>IPSet</a> .
issIPSetId :: Lens' IPSetSummary Text

-- | A friendly name or description of the <a>IPSet</a> . You can't change
--   the name of an <tt>IPSet</tt> after you create it.
issName :: Lens' IPSetSummary Text

-- | Specifies the type of update to perform to an <a>IPSet</a> with
--   <tt>UpdateIPSet</tt> .
--   
--   <i>See:</i> <a>ipSetUpdate</a> smart constructor.
data IPSetUpdate

-- | Creates a value of <a>IPSetUpdate</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>isuAction</a> - Specifies whether to insert or delete an IP
--   address with <tt>UpdateIPSet</tt> .</li>
--   <li><a>isuIPSetDescriptor</a> - The IP address type (<tt>IPV4</tt> or
--   <tt>IPV6</tt> ) and the IP address range (in CIDR notation) that web
--   requests originate from.</li>
--   </ul>
ipSetUpdate :: ChangeAction -> IPSetDescriptor -> IPSetUpdate

-- | Specifies whether to insert or delete an IP address with
--   <tt>UpdateIPSet</tt> .
isuAction :: Lens' IPSetUpdate ChangeAction

-- | The IP address type (<tt>IPV4</tt> or <tt>IPV6</tt> ) and the IP
--   address range (in CIDR notation) that web requests originate from.
isuIPSetDescriptor :: Lens' IPSetUpdate IPSetDescriptor

-- | Specifies the <a>ByteMatchSet</a> , <a>IPSet</a> ,
--   <a>SqlInjectionMatchSet</a> , <tt>XssMatchSet</tt> ,
--   <a>RegexMatchSet</a> , <a>GeoMatchSet</a> , and
--   <a>SizeConstraintSet</a> objects that you want to add to a
--   <tt>Rule</tt> and, for each object, indicates whether you want to
--   negate the settings, for example, requests that do NOT originate from
--   the IP address 192.0.2.44.
--   
--   <i>See:</i> <a>predicate</a> smart constructor.
data Predicate

-- | Creates a value of <a>Predicate</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pNegated</a> - Set <tt>Negated</tt> to <tt>False</tt> if you
--   want AWS WAF to allow, block, or count requests based on the settings
--   in the specified <a>ByteMatchSet</a> , <a>IPSet</a> ,
--   <a>SqlInjectionMatchSet</a> , <tt>XssMatchSet</tt> ,
--   <a>RegexMatchSet</a> , <a>GeoMatchSet</a> , or
--   <a>SizeConstraintSet</a> . For example, if an <tt>IPSet</tt> includes
--   the IP address <tt>192.0.2.44</tt> , AWS WAF will allow or block
--   requests based on that IP address. Set <tt>Negated</tt> to
--   <tt>True</tt> if you want AWS WAF to allow or block a request based on
--   the negation of the settings in the <a>ByteMatchSet</a> , <a>IPSet</a>
--   , <a>SqlInjectionMatchSet</a> , <tt>XssMatchSet</tt> ,
--   <a>RegexMatchSet</a> , <a>GeoMatchSet</a> , or
--   <a>SizeConstraintSet</a> . For example, if an <tt>IPSet</tt> includes
--   the IP address <tt>192.0.2.44</tt> , AWS WAF will allow, block, or
--   count requests based on all IP addresses <i>except</i>
--   <tt>192.0.2.44</tt> .</li>
--   <li><a>pType</a> - The type of predicate in a <tt>Rule</tt> , such as
--   <tt>ByteMatchSet</tt> or <tt>IPSet</tt> .</li>
--   <li><a>pDataId</a> - A unique identifier for a predicate in a
--   <tt>Rule</tt> , such as <tt>ByteMatchSetId</tt> or <tt>IPSetId</tt> .
--   The ID is returned by the corresponding <tt>Create</tt> or
--   <tt>List</tt> command.</li>
--   </ul>
predicate :: Bool -> PredicateType -> Text -> Predicate

-- | Set <tt>Negated</tt> to <tt>False</tt> if you want AWS WAF to allow,
--   block, or count requests based on the settings in the specified
--   <a>ByteMatchSet</a> , <a>IPSet</a> , <a>SqlInjectionMatchSet</a> ,
--   <tt>XssMatchSet</tt> , <a>RegexMatchSet</a> , <a>GeoMatchSet</a> , or
--   <a>SizeConstraintSet</a> . For example, if an <tt>IPSet</tt> includes
--   the IP address <tt>192.0.2.44</tt> , AWS WAF will allow or block
--   requests based on that IP address. Set <tt>Negated</tt> to
--   <tt>True</tt> if you want AWS WAF to allow or block a request based on
--   the negation of the settings in the <a>ByteMatchSet</a> , <a>IPSet</a>
--   , <a>SqlInjectionMatchSet</a> , <tt>XssMatchSet</tt> ,
--   <a>RegexMatchSet</a> , <a>GeoMatchSet</a> , or
--   <a>SizeConstraintSet</a> . For example, if an <tt>IPSet</tt> includes
--   the IP address <tt>192.0.2.44</tt> , AWS WAF will allow, block, or
--   count requests based on all IP addresses <i>except</i>
--   <tt>192.0.2.44</tt> .
pNegated :: Lens' Predicate Bool

-- | The type of predicate in a <tt>Rule</tt> , such as
--   <tt>ByteMatchSet</tt> or <tt>IPSet</tt> .
pType :: Lens' Predicate PredicateType

-- | A unique identifier for a predicate in a <tt>Rule</tt> , such as
--   <tt>ByteMatchSetId</tt> or <tt>IPSetId</tt> . The ID is returned by
--   the corresponding <tt>Create</tt> or <tt>List</tt> command.
pDataId :: Lens' Predicate Text

-- | A <tt>RateBasedRule</tt> is identical to a regular <a>Rule</a> , with
--   one addition: a <tt>RateBasedRule</tt> counts the number of requests
--   that arrive from a specified IP address every five minutes. For
--   example, based on recent requests that you've seen from an attacker,
--   you might create a <tt>RateBasedRule</tt> that includes the following
--   conditions:
--   
--   <ul>
--   <li>The requests come from 192.0.2.44.</li>
--   <li>They contain the value <tt>BadBot</tt> in the <tt>User-Agent</tt>
--   header.</li>
--   </ul>
--   
--   In the rule, you also define the rate limit as 15,000.
--   
--   Requests that meet both of these conditions and exceed 15,000 requests
--   every five minutes trigger the rule's action (block or count), which
--   is defined in the web ACL.
--   
--   <i>See:</i> <a>rateBasedRule</a> smart constructor.
data RateBasedRule

-- | Creates a value of <a>RateBasedRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rbrMetricName</a> - A friendly name or description for the
--   metrics for a <tt>RateBasedRule</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change the name of the metric after you create
--   the <tt>RateBasedRule</tt> .</li>
--   <li><a>rbrName</a> - A friendly name or description for a
--   <tt>RateBasedRule</tt> . You can't change the name of a
--   <tt>RateBasedRule</tt> after you create it.</li>
--   <li><a>rbrRuleId</a> - A unique identifier for a
--   <tt>RateBasedRule</tt> . You use <tt>RuleId</tt> to get more
--   information about a <tt>RateBasedRule</tt> (see
--   <tt>GetRateBasedRule</tt> ), update a <tt>RateBasedRule</tt> (see
--   <tt>UpdateRateBasedRule</tt> ), insert a <tt>RateBasedRule</tt> into a
--   <tt>WebACL</tt> or delete one from a <tt>WebACL</tt> (see
--   <tt>UpdateWebACL</tt> ), or delete a <tt>RateBasedRule</tt> from AWS
--   WAF (see <tt>DeleteRateBasedRule</tt> ).</li>
--   <li><a>rbrMatchPredicates</a> - The <tt>Predicates</tt> object
--   contains one <tt>Predicate</tt> element for each <a>ByteMatchSet</a> ,
--   <a>IPSet</a> , or <a>SqlInjectionMatchSet</a> object that you want to
--   include in a <tt>RateBasedRule</tt> .</li>
--   <li><a>rbrRateKey</a> - The field that AWS WAF uses to determine if
--   requests are likely arriving from single source and thus subject to
--   rate monitoring. The only valid value for <tt>RateKey</tt> is
--   <tt>IP</tt> . <tt>IP</tt> indicates that requests arriving from the
--   same IP address are subject to the <tt>RateLimit</tt> that is
--   specified in the <tt>RateBasedRule</tt> .</li>
--   <li><a>rbrRateLimit</a> - The maximum number of requests, which have
--   an identical value in the field specified by the <tt>RateKey</tt> ,
--   allowed in a five-minute period. If the number of requests exceeds the
--   <tt>RateLimit</tt> and the other predicates specified in the rule are
--   also met, AWS WAF triggers the action that is specified for this
--   rule.</li>
--   </ul>
rateBasedRule :: Text -> RateKey -> Natural -> RateBasedRule

-- | A friendly name or description for the metrics for a
--   <tt>RateBasedRule</tt> . The name can contain only alphanumeric
--   characters (A-Z, a-z, 0-9); the name can't contain whitespace. You
--   can't change the name of the metric after you create the
--   <tt>RateBasedRule</tt> .
rbrMetricName :: Lens' RateBasedRule (Maybe Text)

-- | A friendly name or description for a <tt>RateBasedRule</tt> . You
--   can't change the name of a <tt>RateBasedRule</tt> after you create it.
rbrName :: Lens' RateBasedRule (Maybe Text)

-- | A unique identifier for a <tt>RateBasedRule</tt> . You use
--   <tt>RuleId</tt> to get more information about a <tt>RateBasedRule</tt>
--   (see <tt>GetRateBasedRule</tt> ), update a <tt>RateBasedRule</tt> (see
--   <tt>UpdateRateBasedRule</tt> ), insert a <tt>RateBasedRule</tt> into a
--   <tt>WebACL</tt> or delete one from a <tt>WebACL</tt> (see
--   <tt>UpdateWebACL</tt> ), or delete a <tt>RateBasedRule</tt> from AWS
--   WAF (see <tt>DeleteRateBasedRule</tt> ).
rbrRuleId :: Lens' RateBasedRule Text

-- | The <tt>Predicates</tt> object contains one <tt>Predicate</tt> element
--   for each <a>ByteMatchSet</a> , <a>IPSet</a> , or
--   <a>SqlInjectionMatchSet</a> object that you want to include in a
--   <tt>RateBasedRule</tt> .
rbrMatchPredicates :: Lens' RateBasedRule [Predicate]

-- | The field that AWS WAF uses to determine if requests are likely
--   arriving from single source and thus subject to rate monitoring. The
--   only valid value for <tt>RateKey</tt> is <tt>IP</tt> . <tt>IP</tt>
--   indicates that requests arriving from the same IP address are subject
--   to the <tt>RateLimit</tt> that is specified in the
--   <tt>RateBasedRule</tt> .
rbrRateKey :: Lens' RateBasedRule RateKey

-- | The maximum number of requests, which have an identical value in the
--   field specified by the <tt>RateKey</tt> , allowed in a five-minute
--   period. If the number of requests exceeds the <tt>RateLimit</tt> and
--   the other predicates specified in the rule are also met, AWS WAF
--   triggers the action that is specified for this rule.
rbrRateLimit :: Lens' RateBasedRule Natural

-- | In a <tt>GetRegexMatchSet</tt> request, <tt>RegexMatchSet</tt> is a
--   complex type that contains the <tt>RegexMatchSetId</tt> and
--   <tt>Name</tt> of a <tt>RegexMatchSet</tt> , and the values that you
--   specified when you updated the <tt>RegexMatchSet</tt> .
--   
--   The values are contained in a <tt>RegexMatchTuple</tt> object, which
--   specify the parts of web requests that you want AWS WAF to inspect and
--   the values that you want AWS WAF to search for. If a
--   <tt>RegexMatchSet</tt> contains more than one <tt>RegexMatchTuple</tt>
--   object, a request needs to match the settings in only one
--   <tt>ByteMatchTuple</tt> to be considered a match.
--   
--   <i>See:</i> <a>regexMatchSet</a> smart constructor.
data RegexMatchSet

-- | Creates a value of <a>RegexMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmsName</a> - A friendly name or description of the
--   <a>RegexMatchSet</a> . You can't change <tt>Name</tt> after you create
--   a <tt>RegexMatchSet</tt> .</li>
--   <li><a>rmsRegexMatchTuples</a> - Contains an array of
--   <a>RegexMatchTuple</a> objects. Each <tt>RegexMatchTuple</tt> object
--   contains: * The part of a web request that you want AWS WAF to
--   inspect, such as a query string or the value of the
--   <tt>User-Agent</tt> header. * The identifier of the pattern (a regular
--   expression) that you want AWS WAF to look for. For more information,
--   see <a>RegexPatternSet</a> . * Whether to perform any conversions on
--   the request, such as converting it to lowercase, before inspecting it
--   for the specified string.</li>
--   <li><a>rmsRegexMatchSetId</a> - The <tt>RegexMatchSetId</tt> for a
--   <tt>RegexMatchSet</tt> . You use <tt>RegexMatchSetId</tt> to get
--   information about a <tt>RegexMatchSet</tt> (see
--   <tt>GetRegexMatchSet</tt> ), update a <tt>RegexMatchSet</tt> (see
--   <tt>UpdateRegexMatchSet</tt> ), insert a <tt>RegexMatchSet</tt> into a
--   <tt>Rule</tt> or delete one from a <tt>Rule</tt> (see
--   <tt>UpdateRule</tt> ), and delete a <tt>RegexMatchSet</tt> from AWS
--   WAF (see <tt>DeleteRegexMatchSet</tt> ). <tt>RegexMatchSetId</tt> is
--   returned by <tt>CreateRegexMatchSet</tt> and by
--   <tt>ListRegexMatchSets</tt> .</li>
--   </ul>
regexMatchSet :: RegexMatchSet

-- | A friendly name or description of the <a>RegexMatchSet</a> . You can't
--   change <tt>Name</tt> after you create a <tt>RegexMatchSet</tt> .
rmsName :: Lens' RegexMatchSet (Maybe Text)

-- | Contains an array of <a>RegexMatchTuple</a> objects. Each
--   <tt>RegexMatchTuple</tt> object contains: * The part of a web request
--   that you want AWS WAF to inspect, such as a query string or the value
--   of the <tt>User-Agent</tt> header. * The identifier of the pattern (a
--   regular expression) that you want AWS WAF to look for. For more
--   information, see <a>RegexPatternSet</a> . * Whether to perform any
--   conversions on the request, such as converting it to lowercase, before
--   inspecting it for the specified string.
rmsRegexMatchTuples :: Lens' RegexMatchSet [RegexMatchTuple]

-- | The <tt>RegexMatchSetId</tt> for a <tt>RegexMatchSet</tt> . You use
--   <tt>RegexMatchSetId</tt> to get information about a
--   <tt>RegexMatchSet</tt> (see <tt>GetRegexMatchSet</tt> ), update a
--   <tt>RegexMatchSet</tt> (see <tt>UpdateRegexMatchSet</tt> ), insert a
--   <tt>RegexMatchSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>RegexMatchSet</tt> from AWS WAF (see <tt>DeleteRegexMatchSet</tt>
--   ). <tt>RegexMatchSetId</tt> is returned by
--   <tt>CreateRegexMatchSet</tt> and by <tt>ListRegexMatchSets</tt> .
rmsRegexMatchSetId :: Lens' RegexMatchSet (Maybe Text)

-- | Returned by <tt>ListRegexMatchSets</tt> . Each
--   <tt>RegexMatchSetSummary</tt> object includes the <tt>Name</tt> and
--   <tt>RegexMatchSetId</tt> for one <a>RegexMatchSet</a> .
--   
--   <i>See:</i> <a>regexMatchSetSummary</a> smart constructor.
data RegexMatchSetSummary

-- | Creates a value of <a>RegexMatchSetSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmssRegexMatchSetId</a> - The <tt>RegexMatchSetId</tt> for a
--   <tt>RegexMatchSet</tt> . You use <tt>RegexMatchSetId</tt> to get
--   information about a <tt>RegexMatchSet</tt> , update a
--   <tt>RegexMatchSet</tt> , remove a <tt>RegexMatchSet</tt> from a
--   <tt>Rule</tt> , and delete a <tt>RegexMatchSet</tt> from AWS WAF.
--   <tt>RegexMatchSetId</tt> is returned by <tt>CreateRegexMatchSet</tt>
--   and by <tt>ListRegexMatchSets</tt> .</li>
--   <li><a>rmssName</a> - A friendly name or description of the
--   <a>RegexMatchSet</a> . You can't change <tt>Name</tt> after you create
--   a <tt>RegexMatchSet</tt> .</li>
--   </ul>
regexMatchSetSummary :: Text -> Text -> RegexMatchSetSummary

-- | The <tt>RegexMatchSetId</tt> for a <tt>RegexMatchSet</tt> . You use
--   <tt>RegexMatchSetId</tt> to get information about a
--   <tt>RegexMatchSet</tt> , update a <tt>RegexMatchSet</tt> , remove a
--   <tt>RegexMatchSet</tt> from a <tt>Rule</tt> , and delete a
--   <tt>RegexMatchSet</tt> from AWS WAF. <tt>RegexMatchSetId</tt> is
--   returned by <tt>CreateRegexMatchSet</tt> and by
--   <tt>ListRegexMatchSets</tt> .
rmssRegexMatchSetId :: Lens' RegexMatchSetSummary Text

-- | A friendly name or description of the <a>RegexMatchSet</a> . You can't
--   change <tt>Name</tt> after you create a <tt>RegexMatchSet</tt> .
rmssName :: Lens' RegexMatchSetSummary Text

-- | In an <tt>UpdateRegexMatchSet</tt> request,
--   <tt>RegexMatchSetUpdate</tt> specifies whether to insert or delete a
--   <a>RegexMatchTuple</a> and includes the settings for the
--   <tt>RegexMatchTuple</tt> .
--   
--   <i>See:</i> <a>regexMatchSetUpdate</a> smart constructor.
data RegexMatchSetUpdate

-- | Creates a value of <a>RegexMatchSetUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmsuAction</a> - Specifies whether to insert or delete a
--   <a>RegexMatchTuple</a> .</li>
--   <li><a>rmsuRegexMatchTuple</a> - Information about the part of a web
--   request that you want AWS WAF to inspect and the identifier of the
--   regular expression (regex) pattern that you want AWS WAF to search
--   for. If you specify <tt>DELETE</tt> for the value of <tt>Action</tt> ,
--   the <tt>RegexMatchTuple</tt> values must exactly match the values in
--   the <tt>RegexMatchTuple</tt> that you want to delete from the
--   <tt>RegexMatchSet</tt> .</li>
--   </ul>
regexMatchSetUpdate :: ChangeAction -> RegexMatchTuple -> RegexMatchSetUpdate

-- | Specifies whether to insert or delete a <a>RegexMatchTuple</a> .
rmsuAction :: Lens' RegexMatchSetUpdate ChangeAction

-- | Information about the part of a web request that you want AWS WAF to
--   inspect and the identifier of the regular expression (regex) pattern
--   that you want AWS WAF to search for. If you specify <tt>DELETE</tt>
--   for the value of <tt>Action</tt> , the <tt>RegexMatchTuple</tt> values
--   must exactly match the values in the <tt>RegexMatchTuple</tt> that you
--   want to delete from the <tt>RegexMatchSet</tt> .
rmsuRegexMatchTuple :: Lens' RegexMatchSetUpdate RegexMatchTuple

-- | The regular expression pattern that you want AWS WAF to search for in
--   web requests, the location in requests that you want AWS WAF to
--   search, and other settings. Each <tt>RegexMatchTuple</tt> object
--   contains:
--   
--   <ul>
--   <li>The part of a web request that you want AWS WAF to inspect, such
--   as a query string or the value of the <tt>User-Agent</tt> header.</li>
--   <li>The identifier of the pattern (a regular expression) that you want
--   AWS WAF to look for. For more information, see <a>RegexPatternSet</a>
--   .</li>
--   <li>Whether to perform any conversions on the request, such as
--   converting it to lowercase, before inspecting it for the specified
--   string.</li>
--   </ul>
--   
--   <i>See:</i> <a>regexMatchTuple</a> smart constructor.
data RegexMatchTuple

-- | Creates a value of <a>RegexMatchTuple</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmtFieldToMatch</a> - Specifies where in a web request to look
--   for the <tt>RegexPatternSet</tt> .</li>
--   <li><a>rmtTextTransformation</a> - Text transformations eliminate some
--   of the unusual formatting that attackers use in web requests in an
--   effort to bypass AWS WAF. If you specify a transformation, AWS WAF
--   performs the transformation on <tt>RegexPatternSet</tt> before
--   inspecting a request for a match. <b>CMD_LINE</b> When you're
--   concerned that attackers are injecting an operating system commandline
--   command and using unusual formatting to disguise some or all of the
--   command, use this option to perform the following transformations: *
--   Delete the following characters: " ' ^ * Delete spaces before the
--   following characters: / ( * Replace the following characters with a
--   space: , ; * Replace multiple spaces with one space * Convert
--   uppercase letters (A-Z) to lowercase (a-z) <b>COMPRESS_WHITE_SPACE</b>
--   Use this option to replace the following characters with a space
--   character (decimal 32): * f, formfeed, decimal 12 * t, tab, decimal 9
--   * n, newline, decimal 10 * r, carriage return, decimal 13 * v,
--   vertical tab, decimal 11 * non-breaking space, decimal 160
--   <tt>COMPRESS_WHITE_SPACE</tt> also replaces multiple spaces with one
--   space. <b>HTML_ENTITY_DECODE</b> Use this option to replace
--   HTML-encoded characters with unencoded characters.
--   <tt>HTML_ENTITY_DECODE</tt> performs the following operations: *
--   Replaces <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text
--   transformations.</li>
--   <li><a>rmtRegexPatternSetId</a> - The <tt>RegexPatternSetId</tt> for a
--   <tt>RegexPatternSet</tt> . You use <tt>RegexPatternSetId</tt> to get
--   information about a <tt>RegexPatternSet</tt> (see
--   <tt>GetRegexPatternSet</tt> ), update a <tt>RegexPatternSet</tt> (see
--   <tt>UpdateRegexPatternSet</tt> ), insert a <tt>RegexPatternSet</tt>
--   into a <tt>RegexMatchSet</tt> or delete one from a
--   <tt>RegexMatchSet</tt> (see <tt>UpdateRegexMatchSet</tt> ), and delete
--   an <tt>RegexPatternSet</tt> from AWS WAF (see
--   <tt>DeleteRegexPatternSet</tt> ). <tt>RegexPatternSetId</tt> is
--   returned by <tt>CreateRegexPatternSet</tt> and by
--   <tt>ListRegexPatternSets</tt> .</li>
--   </ul>
regexMatchTuple :: FieldToMatch -> TextTransformation -> Text -> RegexMatchTuple

-- | Specifies where in a web request to look for the
--   <tt>RegexPatternSet</tt> .
rmtFieldToMatch :: Lens' RegexMatchTuple FieldToMatch

-- | Text transformations eliminate some of the unusual formatting that
--   attackers use in web requests in an effort to bypass AWS WAF. If you
--   specify a transformation, AWS WAF performs the transformation on
--   <tt>RegexPatternSet</tt> before inspecting a request for a match.
--   <b>CMD_LINE</b> When you're concerned that attackers are injecting an
--   operating system commandline command and using unusual formatting to
--   disguise some or all of the command, use this option to perform the
--   following transformations: * Delete the following characters: " ' ^ *
--   Delete spaces before the following characters: / ( * Replace the
--   following characters with a space: , ; * Replace multiple spaces with
--   one space * Convert uppercase letters (A-Z) to lowercase (a-z)
--   <b>COMPRESS_WHITE_SPACE</b> Use this option to replace the following
--   characters with a space character (decimal 32): * f, formfeed, decimal
--   12 * t, tab, decimal 9 * n, newline, decimal 10 * r, carriage return,
--   decimal 13 * v, vertical tab, decimal 11 * non-breaking space, decimal
--   160 <tt>COMPRESS_WHITE_SPACE</tt> also replaces multiple spaces with
--   one space. <b>HTML_ENTITY_DECODE</b> Use this option to replace
--   HTML-encoded characters with unencoded characters.
--   <tt>HTML_ENTITY_DECODE</tt> performs the following operations: *
--   Replaces <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text transformations.
rmtTextTransformation :: Lens' RegexMatchTuple TextTransformation

-- | The <tt>RegexPatternSetId</tt> for a <tt>RegexPatternSet</tt> . You
--   use <tt>RegexPatternSetId</tt> to get information about a
--   <tt>RegexPatternSet</tt> (see <tt>GetRegexPatternSet</tt> ), update a
--   <tt>RegexPatternSet</tt> (see <tt>UpdateRegexPatternSet</tt> ), insert
--   a <tt>RegexPatternSet</tt> into a <tt>RegexMatchSet</tt> or delete one
--   from a <tt>RegexMatchSet</tt> (see <tt>UpdateRegexMatchSet</tt> ), and
--   delete an <tt>RegexPatternSet</tt> from AWS WAF (see
--   <tt>DeleteRegexPatternSet</tt> ). <tt>RegexPatternSetId</tt> is
--   returned by <tt>CreateRegexPatternSet</tt> and by
--   <tt>ListRegexPatternSets</tt> .
rmtRegexPatternSetId :: Lens' RegexMatchTuple Text

-- | The <tt>RegexPatternSet</tt> specifies the regular expression (regex)
--   pattern that you want AWS WAF to search for, such as
--   <tt>B[a</tt>]dB[o0]t@ . You can then configure AWS WAF to reject those
--   requests.
--   
--   <i>See:</i> <a>regexPatternSet</a> smart constructor.
data RegexPatternSet

-- | Creates a value of <a>RegexPatternSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rpsName</a> - A friendly name or description of the
--   <a>RegexPatternSet</a> . You can't change <tt>Name</tt> after you
--   create a <tt>RegexPatternSet</tt> .</li>
--   <li><a>rpsRegexPatternSetId</a> - The identifier for the
--   <tt>RegexPatternSet</tt> . You use <tt>RegexPatternSetId</tt> to get
--   information about a <tt>RegexPatternSet</tt> , update a
--   <tt>RegexPatternSet</tt> , remove a <tt>RegexPatternSet</tt> from a
--   <tt>RegexMatchSet</tt> , and delete a <tt>RegexPatternSet</tt> from
--   AWS WAF. <tt>RegexMatchSetId</tt> is returned by
--   <tt>CreateRegexPatternSet</tt> and by <tt>ListRegexPatternSets</tt>
--   .</li>
--   <li><a>rpsRegexPatternStrings</a> - Specifies the regular expression
--   (regex) patterns that you want AWS WAF to search for, such as
--   <tt>B[a</tt>]dB[o0]t@ .</li>
--   </ul>
regexPatternSet :: Text -> RegexPatternSet

-- | A friendly name or description of the <a>RegexPatternSet</a> . You
--   can't change <tt>Name</tt> after you create a <tt>RegexPatternSet</tt>
--   .
rpsName :: Lens' RegexPatternSet (Maybe Text)

-- | The identifier for the <tt>RegexPatternSet</tt> . You use
--   <tt>RegexPatternSetId</tt> to get information about a
--   <tt>RegexPatternSet</tt> , update a <tt>RegexPatternSet</tt> , remove
--   a <tt>RegexPatternSet</tt> from a <tt>RegexMatchSet</tt> , and delete
--   a <tt>RegexPatternSet</tt> from AWS WAF. <tt>RegexMatchSetId</tt> is
--   returned by <tt>CreateRegexPatternSet</tt> and by
--   <tt>ListRegexPatternSets</tt> .
rpsRegexPatternSetId :: Lens' RegexPatternSet Text

-- | Specifies the regular expression (regex) patterns that you want AWS
--   WAF to search for, such as <tt>B[a</tt>]dB[o0]t@ .
rpsRegexPatternStrings :: Lens' RegexPatternSet [Text]

-- | Returned by <tt>ListRegexPatternSets</tt> . Each
--   <tt>RegexPatternSetSummary</tt> object includes the <tt>Name</tt> and
--   <tt>RegexPatternSetId</tt> for one <a>RegexPatternSet</a> .
--   
--   <i>See:</i> <a>regexPatternSetSummary</a> smart constructor.
data RegexPatternSetSummary

-- | Creates a value of <a>RegexPatternSetSummary</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rpssRegexPatternSetId</a> - The <tt>RegexPatternSetId</tt> for
--   a <tt>RegexPatternSet</tt> . You use <tt>RegexPatternSetId</tt> to get
--   information about a <tt>RegexPatternSet</tt> , update a
--   <tt>RegexPatternSet</tt> , remove a <tt>RegexPatternSet</tt> from a
--   <tt>RegexMatchSet</tt> , and delete a <tt>RegexPatternSet</tt> from
--   AWS WAF. <tt>RegexPatternSetId</tt> is returned by
--   <tt>CreateRegexPatternSet</tt> and by <tt>ListRegexPatternSets</tt>
--   .</li>
--   <li><a>rpssName</a> - A friendly name or description of the
--   <a>RegexPatternSet</a> . You can't change <tt>Name</tt> after you
--   create a <tt>RegexPatternSet</tt> .</li>
--   </ul>
regexPatternSetSummary :: Text -> Text -> RegexPatternSetSummary

-- | The <tt>RegexPatternSetId</tt> for a <tt>RegexPatternSet</tt> . You
--   use <tt>RegexPatternSetId</tt> to get information about a
--   <tt>RegexPatternSet</tt> , update a <tt>RegexPatternSet</tt> , remove
--   a <tt>RegexPatternSet</tt> from a <tt>RegexMatchSet</tt> , and delete
--   a <tt>RegexPatternSet</tt> from AWS WAF. <tt>RegexPatternSetId</tt> is
--   returned by <tt>CreateRegexPatternSet</tt> and by
--   <tt>ListRegexPatternSets</tt> .
rpssRegexPatternSetId :: Lens' RegexPatternSetSummary Text

-- | A friendly name or description of the <a>RegexPatternSet</a> . You
--   can't change <tt>Name</tt> after you create a <tt>RegexPatternSet</tt>
--   .
rpssName :: Lens' RegexPatternSetSummary Text

-- | In an <tt>UpdateRegexPatternSet</tt> request,
--   <tt>RegexPatternSetUpdate</tt> specifies whether to insert or delete a
--   <tt>RegexPatternString</tt> and includes the settings for the
--   <tt>RegexPatternString</tt> .
--   
--   <i>See:</i> <a>regexPatternSetUpdate</a> smart constructor.
data RegexPatternSetUpdate

-- | Creates a value of <a>RegexPatternSetUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rpsuAction</a> - Specifies whether to insert or delete a
--   <tt>RegexPatternString</tt> .</li>
--   <li><a>rpsuRegexPatternString</a> - Specifies the regular expression
--   (regex) pattern that you want AWS WAF to search for, such as
--   <tt>B[a</tt>]dB[o0]t@ .</li>
--   </ul>
regexPatternSetUpdate :: ChangeAction -> Text -> RegexPatternSetUpdate

-- | Specifies whether to insert or delete a <tt>RegexPatternString</tt> .
rpsuAction :: Lens' RegexPatternSetUpdate ChangeAction

-- | Specifies the regular expression (regex) pattern that you want AWS WAF
--   to search for, such as <tt>B[a</tt>]dB[o0]t@ .
rpsuRegexPatternString :: Lens' RegexPatternSetUpdate Text

-- | A combination of <a>ByteMatchSet</a> , <a>IPSet</a> , and/or
--   <a>SqlInjectionMatchSet</a> objects that identify the web requests
--   that you want to allow, block, or count. For example, you might create
--   a <tt>Rule</tt> that includes the following predicates:
--   
--   <ul>
--   <li>An <tt>IPSet</tt> that causes AWS WAF to search for web requests
--   that originate from the IP address <tt>192.0.2.44</tt></li>
--   <li>A <tt>ByteMatchSet</tt> that causes AWS WAF to search for web
--   requests for which the value of the <tt>User-Agent</tt> header is
--   <tt>BadBot</tt> .</li>
--   </ul>
--   
--   To match the settings in this <tt>Rule</tt> , a request must originate
--   from <tt>192.0.2.44</tt> AND include a <tt>User-Agent</tt> header for
--   which the value is <tt>BadBot</tt> .
--   
--   <i>See:</i> <a>rule</a> smart constructor.
data Rule

-- | Creates a value of <a>Rule</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rMetricName</a> - A friendly name or description for the
--   metrics for this <tt>Rule</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change <tt>MetricName</tt> after you create the
--   <tt>Rule</tt> .</li>
--   <li><a>rName</a> - The friendly name or description for the
--   <tt>Rule</tt> . You can't change the name of a <tt>Rule</tt> after you
--   create it.</li>
--   <li><a>rRuleId</a> - A unique identifier for a <tt>Rule</tt> . You use
--   <tt>RuleId</tt> to get more information about a <tt>Rule</tt> (see
--   <tt>GetRule</tt> ), update a <tt>Rule</tt> (see <tt>UpdateRule</tt> ),
--   insert a <tt>Rule</tt> into a <tt>WebACL</tt> or delete a one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>Rule</tt> from AWS WAF (see <tt>DeleteRule</tt> ). <tt>RuleId</tt>
--   is returned by <tt>CreateRule</tt> and by <tt>ListRules</tt> .</li>
--   <li><a>rPredicates</a> - The <tt>Predicates</tt> object contains one
--   <tt>Predicate</tt> element for each <a>ByteMatchSet</a> , <a>IPSet</a>
--   , or <a>SqlInjectionMatchSet</a> object that you want to include in a
--   <tt>Rule</tt> .</li>
--   </ul>
rule :: Text -> Rule

-- | A friendly name or description for the metrics for this <tt>Rule</tt>
--   . The name can contain only alphanumeric characters (A-Z, a-z, 0-9);
--   the name can't contain whitespace. You can't change
--   <tt>MetricName</tt> after you create the <tt>Rule</tt> .
rMetricName :: Lens' Rule (Maybe Text)

-- | The friendly name or description for the <tt>Rule</tt> . You can't
--   change the name of a <tt>Rule</tt> after you create it.
rName :: Lens' Rule (Maybe Text)

-- | A unique identifier for a <tt>Rule</tt> . You use <tt>RuleId</tt> to
--   get more information about a <tt>Rule</tt> (see <tt>GetRule</tt> ),
--   update a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), insert a
--   <tt>Rule</tt> into a <tt>WebACL</tt> or delete a one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>Rule</tt> from AWS WAF (see <tt>DeleteRule</tt> ). <tt>RuleId</tt>
--   is returned by <tt>CreateRule</tt> and by <tt>ListRules</tt> .
rRuleId :: Lens' Rule Text

-- | The <tt>Predicates</tt> object contains one <tt>Predicate</tt> element
--   for each <a>ByteMatchSet</a> , <a>IPSet</a> , or
--   <a>SqlInjectionMatchSet</a> object that you want to include in a
--   <tt>Rule</tt> .
rPredicates :: Lens' Rule [Predicate]

-- | A collection of predefined rules that you can add to a web ACL.
--   
--   Rule groups are subject to the following limits:
--   
--   <ul>
--   <li>Three rule groups per account. You can request an increase to this
--   limit by contacting customer support.</li>
--   <li>One rule group per web ACL.</li>
--   <li>Ten rules per rule group.</li>
--   </ul>
--   
--   <i>See:</i> <a>ruleGroup</a> smart constructor.
data RuleGroup

-- | Creates a value of <a>RuleGroup</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgMetricName</a> - A friendly name or description for the
--   metrics for this <tt>RuleGroup</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change the name of the metric after you create
--   the <tt>RuleGroup</tt> .</li>
--   <li><a>rgName</a> - The friendly name or description for the
--   <tt>RuleGroup</tt> . You can't change the name of a <tt>RuleGroup</tt>
--   after you create it.</li>
--   <li><a>rgRuleGroupId</a> - A unique identifier for a
--   <tt>RuleGroup</tt> . You use <tt>RuleGroupId</tt> to get more
--   information about a <tt>RuleGroup</tt> (see <tt>GetRuleGroup</tt> ),
--   update a <tt>RuleGroup</tt> (see <tt>UpdateRuleGroup</tt> ), insert a
--   <tt>RuleGroup</tt> into a <tt>WebACL</tt> or delete a one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>RuleGroup</tt> from AWS WAF (see <tt>DeleteRuleGroup</tt> ).
--   <tt>RuleGroupId</tt> is returned by <tt>CreateRuleGroup</tt> and by
--   <tt>ListRuleGroups</tt> .</li>
--   </ul>
ruleGroup :: Text -> RuleGroup

-- | A friendly name or description for the metrics for this
--   <tt>RuleGroup</tt> . The name can contain only alphanumeric characters
--   (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change
--   the name of the metric after you create the <tt>RuleGroup</tt> .
rgMetricName :: Lens' RuleGroup (Maybe Text)

-- | The friendly name or description for the <tt>RuleGroup</tt> . You
--   can't change the name of a <tt>RuleGroup</tt> after you create it.
rgName :: Lens' RuleGroup (Maybe Text)

-- | A unique identifier for a <tt>RuleGroup</tt> . You use
--   <tt>RuleGroupId</tt> to get more information about a
--   <tt>RuleGroup</tt> (see <tt>GetRuleGroup</tt> ), update a
--   <tt>RuleGroup</tt> (see <tt>UpdateRuleGroup</tt> ), insert a
--   <tt>RuleGroup</tt> into a <tt>WebACL</tt> or delete a one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>RuleGroup</tt> from AWS WAF (see <tt>DeleteRuleGroup</tt> ).
--   <tt>RuleGroupId</tt> is returned by <tt>CreateRuleGroup</tt> and by
--   <tt>ListRuleGroups</tt> .
rgRuleGroupId :: Lens' RuleGroup Text

-- | Contains the identifier and the friendly name or description of the
--   <tt>RuleGroup</tt> .
--   
--   <i>See:</i> <a>ruleGroupSummary</a> smart constructor.
data RuleGroupSummary

-- | Creates a value of <a>RuleGroupSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgsRuleGroupId</a> - A unique identifier for a
--   <tt>RuleGroup</tt> . You use <tt>RuleGroupId</tt> to get more
--   information about a <tt>RuleGroup</tt> (see <tt>GetRuleGroup</tt> ),
--   update a <tt>RuleGroup</tt> (see <tt>UpdateRuleGroup</tt> ), insert a
--   <tt>RuleGroup</tt> into a <tt>WebACL</tt> or delete one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>RuleGroup</tt> from AWS WAF (see <tt>DeleteRuleGroup</tt> ).
--   <tt>RuleGroupId</tt> is returned by <tt>CreateRuleGroup</tt> and by
--   <tt>ListRuleGroups</tt> .</li>
--   <li><a>rgsName</a> - A friendly name or description of the
--   <a>RuleGroup</a> . You can't change the name of a <tt>RuleGroup</tt>
--   after you create it.</li>
--   </ul>
ruleGroupSummary :: Text -> Text -> RuleGroupSummary

-- | A unique identifier for a <tt>RuleGroup</tt> . You use
--   <tt>RuleGroupId</tt> to get more information about a
--   <tt>RuleGroup</tt> (see <tt>GetRuleGroup</tt> ), update a
--   <tt>RuleGroup</tt> (see <tt>UpdateRuleGroup</tt> ), insert a
--   <tt>RuleGroup</tt> into a <tt>WebACL</tt> or delete one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>RuleGroup</tt> from AWS WAF (see <tt>DeleteRuleGroup</tt> ).
--   <tt>RuleGroupId</tt> is returned by <tt>CreateRuleGroup</tt> and by
--   <tt>ListRuleGroups</tt> .
rgsRuleGroupId :: Lens' RuleGroupSummary Text

-- | A friendly name or description of the <a>RuleGroup</a> . You can't
--   change the name of a <tt>RuleGroup</tt> after you create it.
rgsName :: Lens' RuleGroupSummary Text

-- | Specifies an <tt>ActivatedRule</tt> and indicates whether you want to
--   add it to a <tt>RuleGroup</tt> or delete it from a <tt>RuleGroup</tt>
--   .
--   
--   <i>See:</i> <a>ruleGroupUpdate</a> smart constructor.
data RuleGroupUpdate

-- | Creates a value of <a>RuleGroupUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rguAction</a> - Specify <tt>INSERT</tt> to add an
--   <tt>ActivatedRule</tt> to a <tt>RuleGroup</tt> . Use <tt>DELETE</tt>
--   to remove an <tt>ActivatedRule</tt> from a <tt>RuleGroup</tt> .</li>
--   <li><a>rguActivatedRule</a> - The <tt>ActivatedRule</tt> object
--   specifies a <tt>Rule</tt> that you want to insert or delete, the
--   priority of the <tt>Rule</tt> in the <tt>WebACL</tt> , and the action
--   that you want AWS WAF to take when a web request matches the
--   <tt>Rule</tt> (<tt>ALLOW</tt> , <tt>BLOCK</tt> , or <tt>COUNT</tt>
--   ).</li>
--   </ul>
ruleGroupUpdate :: ChangeAction -> ActivatedRule -> RuleGroupUpdate

-- | Specify <tt>INSERT</tt> to add an <tt>ActivatedRule</tt> to a
--   <tt>RuleGroup</tt> . Use <tt>DELETE</tt> to remove an
--   <tt>ActivatedRule</tt> from a <tt>RuleGroup</tt> .
rguAction :: Lens' RuleGroupUpdate ChangeAction

-- | The <tt>ActivatedRule</tt> object specifies a <tt>Rule</tt> that you
--   want to insert or delete, the priority of the <tt>Rule</tt> in the
--   <tt>WebACL</tt> , and the action that you want AWS WAF to take when a
--   web request matches the <tt>Rule</tt> (<tt>ALLOW</tt> , <tt>BLOCK</tt>
--   , or <tt>COUNT</tt> ).
rguActivatedRule :: Lens' RuleGroupUpdate ActivatedRule

-- | Contains the identifier and the friendly name or description of the
--   <tt>Rule</tt> .
--   
--   <i>See:</i> <a>ruleSummary</a> smart constructor.
data RuleSummary

-- | Creates a value of <a>RuleSummary</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rsRuleId</a> - A unique identifier for a <tt>Rule</tt> . You
--   use <tt>RuleId</tt> to get more information about a <tt>Rule</tt> (see
--   <tt>GetRule</tt> ), update a <tt>Rule</tt> (see <tt>UpdateRule</tt> ),
--   insert a <tt>Rule</tt> into a <tt>WebACL</tt> or delete one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>Rule</tt> from AWS WAF (see <tt>DeleteRule</tt> ). <tt>RuleId</tt>
--   is returned by <tt>CreateRule</tt> and by <tt>ListRules</tt> .</li>
--   <li><a>rsName</a> - A friendly name or description of the <a>Rule</a>
--   . You can't change the name of a <tt>Rule</tt> after you create
--   it.</li>
--   </ul>
ruleSummary :: Text -> Text -> RuleSummary

-- | A unique identifier for a <tt>Rule</tt> . You use <tt>RuleId</tt> to
--   get more information about a <tt>Rule</tt> (see <tt>GetRule</tt> ),
--   update a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), insert a
--   <tt>Rule</tt> into a <tt>WebACL</tt> or delete one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>Rule</tt> from AWS WAF (see <tt>DeleteRule</tt> ). <tt>RuleId</tt>
--   is returned by <tt>CreateRule</tt> and by <tt>ListRules</tt> .
rsRuleId :: Lens' RuleSummary Text

-- | A friendly name or description of the <a>Rule</a> . You can't change
--   the name of a <tt>Rule</tt> after you create it.
rsName :: Lens' RuleSummary Text

-- | Specifies a <tt>Predicate</tt> (such as an <tt>IPSet</tt> ) and
--   indicates whether you want to add it to a <tt>Rule</tt> or delete it
--   from a <tt>Rule</tt> .
--   
--   <i>See:</i> <a>ruleUpdate</a> smart constructor.
data RuleUpdate

-- | Creates a value of <a>RuleUpdate</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ruAction</a> - Specify <tt>INSERT</tt> to add a
--   <tt>Predicate</tt> to a <tt>Rule</tt> . Use <tt>DELETE</tt> to remove
--   a <tt>Predicate</tt> from a <tt>Rule</tt> .</li>
--   <li><a>ruPredicate</a> - The ID of the <tt>Predicate</tt> (such as an
--   <tt>IPSet</tt> ) that you want to add to a <tt>Rule</tt> .</li>
--   </ul>
ruleUpdate :: ChangeAction -> Predicate -> RuleUpdate

-- | Specify <tt>INSERT</tt> to add a <tt>Predicate</tt> to a <tt>Rule</tt>
--   . Use <tt>DELETE</tt> to remove a <tt>Predicate</tt> from a
--   <tt>Rule</tt> .
ruAction :: Lens' RuleUpdate ChangeAction

-- | The ID of the <tt>Predicate</tt> (such as an <tt>IPSet</tt> ) that you
--   want to add to a <tt>Rule</tt> .
ruPredicate :: Lens' RuleUpdate Predicate

-- | The response from a <tt>GetSampledRequests</tt> request includes a
--   <tt>SampledHTTPRequests</tt> complex type that appears as
--   <tt>SampledRequests</tt> in the response syntax.
--   <tt>SampledHTTPRequests</tt> contains one <tt>SampledHTTPRequest</tt>
--   object for each web request that is returned by
--   <tt>GetSampledRequests</tt> .
--   
--   <i>See:</i> <a>sampledHTTPRequest</a> smart constructor.
data SampledHTTPRequest

-- | Creates a value of <a>SampledHTTPRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>shttprRuleWithinRuleGroup</a> - This value is returned if the
--   <tt>GetSampledRequests</tt> request specifies the ID of a
--   <tt>RuleGroup</tt> rather than the ID of an individual rule.
--   <tt>RuleWithinRuleGroup</tt> is the rule within the specified
--   <tt>RuleGroup</tt> that matched the request listed in the
--   response.</li>
--   <li><a>shttprAction</a> - The action for the <tt>Rule</tt> that the
--   request matched: <tt>ALLOW</tt> , <tt>BLOCK</tt> , or <tt>COUNT</tt>
--   .</li>
--   <li><a>shttprTimestamp</a> - The time at which AWS WAF received the
--   request from your AWS resource, in Unix time format (in seconds).</li>
--   <li><a>shttprRequest</a> - A complex type that contains detailed
--   information about the request.</li>
--   <li><a>shttprWeight</a> - A value that indicates how one result in the
--   response relates proportionally to other results in the response. A
--   result that has a weight of <tt>2</tt> represents roughly twice as
--   many CloudFront web requests as a result that has a weight of
--   <tt>1</tt> .</li>
--   </ul>
sampledHTTPRequest :: HTTPRequest -> Natural -> SampledHTTPRequest

-- | This value is returned if the <tt>GetSampledRequests</tt> request
--   specifies the ID of a <tt>RuleGroup</tt> rather than the ID of an
--   individual rule. <tt>RuleWithinRuleGroup</tt> is the rule within the
--   specified <tt>RuleGroup</tt> that matched the request listed in the
--   response.
shttprRuleWithinRuleGroup :: Lens' SampledHTTPRequest (Maybe Text)

-- | The action for the <tt>Rule</tt> that the request matched:
--   <tt>ALLOW</tt> , <tt>BLOCK</tt> , or <tt>COUNT</tt> .
shttprAction :: Lens' SampledHTTPRequest (Maybe Text)

-- | The time at which AWS WAF received the request from your AWS resource,
--   in Unix time format (in seconds).
shttprTimestamp :: Lens' SampledHTTPRequest (Maybe UTCTime)

-- | A complex type that contains detailed information about the request.
shttprRequest :: Lens' SampledHTTPRequest HTTPRequest

-- | A value that indicates how one result in the response relates
--   proportionally to other results in the response. A result that has a
--   weight of <tt>2</tt> represents roughly twice as many CloudFront web
--   requests as a result that has a weight of <tt>1</tt> .
shttprWeight :: Lens' SampledHTTPRequest Natural

-- | Specifies a constraint on the size of a part of the web request. AWS
--   WAF uses the <tt>Size</tt> , <tt>ComparisonOperator</tt> , and
--   <tt>FieldToMatch</tt> to build an expression in the form of
--   "<tt>Size</tt> <tt>ComparisonOperator</tt> size in bytes of
--   <tt>FieldToMatch</tt> ". If that expression is true, the
--   <tt>SizeConstraint</tt> is considered to match.
--   
--   <i>See:</i> <a>sizeConstraint</a> smart constructor.
data SizeConstraint

-- | Creates a value of <a>SizeConstraint</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scFieldToMatch</a> - Specifies where in a web request to look
--   for the size constraint.</li>
--   <li><a>scTextTransformation</a> - Text transformations eliminate some
--   of the unusual formatting that attackers use in web requests in an
--   effort to bypass AWS WAF. If you specify a transformation, AWS WAF
--   performs the transformation on <tt>FieldToMatch</tt> before inspecting
--   a request for a match. Note that if you choose <tt>BODY</tt> for the
--   value of <tt>Type</tt> , you must choose <tt>NONE</tt> for
--   <tt>TextTransformation</tt> because CloudFront forwards only the first
--   8192 bytes for inspection. <b>NONE</b> Specify <tt>NONE</tt> if you
--   don't want to perform any text transformations. <b>CMD_LINE</b> When
--   you're concerned that attackers are injecting an operating system
--   command line command and using unusual formatting to disguise some or
--   all of the command, use this option to perform the following
--   transformations: * Delete the following characters: " ' ^ * Delete
--   spaces before the following characters: / ( * Replace the following
--   characters with a space: , ; * Replace multiple spaces with one space
--   * Convert uppercase letters (A-Z) to lowercase (a-z)
--   <b>COMPRESS_WHITE_SPACE</b> Use this option to replace the following
--   characters with a space character (decimal 32): * f, formfeed, decimal
--   12 * t, tab, decimal 9 * n, newline, decimal 10 * r, carriage return,
--   decimal 13 * v, vertical tab, decimal 11 * non-breaking space, decimal
--   160 <tt>COMPRESS_WHITE_SPACE</tt> also replaces multiple spaces with
--   one space. <b>HTML_ENTITY_DECODE</b> Use this option to replace
--   HTML-encoded characters with unencoded characters.
--   <tt>HTML_ENTITY_DECODE</tt> performs the following operations: *
--   Replaces <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value.</li>
--   <li><a>scComparisonOperator</a> - The type of comparison you want AWS
--   WAF to perform. AWS WAF uses this in combination with the provided
--   <tt>Size</tt> and <tt>FieldToMatch</tt> to build an expression in the
--   form of "<tt>Size</tt> <tt>ComparisonOperator</tt> size in bytes of
--   <tt>FieldToMatch</tt> ". If that expression is true, the
--   <tt>SizeConstraint</tt> is considered to match. <b>EQ</b> : Used to
--   test if the <tt>Size</tt> is equal to the size of the
--   <tt>FieldToMatch</tt> <b>NE</b> : Used to test if the <tt>Size</tt> is
--   not equal to the size of the <tt>FieldToMatch</tt> <b>LE</b> : Used to
--   test if the <tt>Size</tt> is less than or equal to the size of the
--   <tt>FieldToMatch</tt> <b>LT</b> : Used to test if the <tt>Size</tt> is
--   strictly less than the size of the <tt>FieldToMatch</tt> <b>GE</b> :
--   Used to test if the <tt>Size</tt> is greater than or equal to the size
--   of the <tt>FieldToMatch</tt> <b>GT</b> : Used to test if the
--   <tt>Size</tt> is strictly greater than the size of the
--   <tt>FieldToMatch</tt></li>
--   <li><a>scSize</a> - The size in bytes that you want AWS WAF to compare
--   against the size of the specified <tt>FieldToMatch</tt> . AWS WAF uses
--   this in combination with <tt>ComparisonOperator</tt> and
--   <tt>FieldToMatch</tt> to build an expression in the form of
--   "<tt>Size</tt> <tt>ComparisonOperator</tt> size in bytes of
--   <tt>FieldToMatch</tt> ". If that expression is true, the
--   <tt>SizeConstraint</tt> is considered to match. Valid values for size
--   are 0 - 21474836480 bytes (0 - 20 GB). If you specify <tt>URI</tt> for
--   the value of <tt>Type</tt> , the <i> in the URI counts as one
--   character. For example, the URI @</i>logo.jpg@ is nine characters
--   long.</li>
--   </ul>
sizeConstraint :: FieldToMatch -> TextTransformation -> ComparisonOperator -> Natural -> SizeConstraint

-- | Specifies where in a web request to look for the size constraint.
scFieldToMatch :: Lens' SizeConstraint FieldToMatch

-- | Text transformations eliminate some of the unusual formatting that
--   attackers use in web requests in an effort to bypass AWS WAF. If you
--   specify a transformation, AWS WAF performs the transformation on
--   <tt>FieldToMatch</tt> before inspecting a request for a match. Note
--   that if you choose <tt>BODY</tt> for the value of <tt>Type</tt> , you
--   must choose <tt>NONE</tt> for <tt>TextTransformation</tt> because
--   CloudFront forwards only the first 8192 bytes for inspection.
--   <b>NONE</b> Specify <tt>NONE</tt> if you don't want to perform any
--   text transformations. <b>CMD_LINE</b> When you're concerned that
--   attackers are injecting an operating system command line command and
--   using unusual formatting to disguise some or all of the command, use
--   this option to perform the following transformations: * Delete the
--   following characters: " ' ^ * Delete spaces before the following
--   characters: / ( * Replace the following characters with a space: , ; *
--   Replace multiple spaces with one space * Convert uppercase letters
--   (A-Z) to lowercase (a-z) <b>COMPRESS_WHITE_SPACE</b> Use this option
--   to replace the following characters with a space character (decimal
--   32): * f, formfeed, decimal 12 * t, tab, decimal 9 * n, newline,
--   decimal 10 * r, carriage return, decimal 13 * v, vertical tab, decimal
--   11 * non-breaking space, decimal 160 <tt>COMPRESS_WHITE_SPACE</tt>
--   also replaces multiple spaces with one space.
--   <b>HTML_ENTITY_DECODE</b> Use this option to replace HTML-encoded
--   characters with unencoded characters. <tt>HTML_ENTITY_DECODE</tt>
--   performs the following operations: * Replaces
--   <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value.
scTextTransformation :: Lens' SizeConstraint TextTransformation

-- | The type of comparison you want AWS WAF to perform. AWS WAF uses this
--   in combination with the provided <tt>Size</tt> and
--   <tt>FieldToMatch</tt> to build an expression in the form of
--   "<tt>Size</tt> <tt>ComparisonOperator</tt> size in bytes of
--   <tt>FieldToMatch</tt> ". If that expression is true, the
--   <tt>SizeConstraint</tt> is considered to match. <b>EQ</b> : Used to
--   test if the <tt>Size</tt> is equal to the size of the
--   <tt>FieldToMatch</tt> <b>NE</b> : Used to test if the <tt>Size</tt> is
--   not equal to the size of the <tt>FieldToMatch</tt> <b>LE</b> : Used to
--   test if the <tt>Size</tt> is less than or equal to the size of the
--   <tt>FieldToMatch</tt> <b>LT</b> : Used to test if the <tt>Size</tt> is
--   strictly less than the size of the <tt>FieldToMatch</tt> <b>GE</b> :
--   Used to test if the <tt>Size</tt> is greater than or equal to the size
--   of the <tt>FieldToMatch</tt> <b>GT</b> : Used to test if the
--   <tt>Size</tt> is strictly greater than the size of the
--   <tt>FieldToMatch</tt>
scComparisonOperator :: Lens' SizeConstraint ComparisonOperator

-- | The size in bytes that you want AWS WAF to compare against the size of
--   the specified <tt>FieldToMatch</tt> . AWS WAF uses this in combination
--   with <tt>ComparisonOperator</tt> and <tt>FieldToMatch</tt> to build an
--   expression in the form of "<tt>Size</tt> <tt>ComparisonOperator</tt>
--   size in bytes of <tt>FieldToMatch</tt> ". If that expression is true,
--   the <tt>SizeConstraint</tt> is considered to match. Valid values for
--   size are 0 - 21474836480 bytes (0 - 20 GB). If you specify
--   <tt>URI</tt> for the value of <tt>Type</tt> , the <i> in the URI
--   counts as one character. For example, the URI @</i>logo.jpg@ is nine
--   characters long.
scSize :: Lens' SizeConstraint Natural

-- | A complex type that contains <tt>SizeConstraint</tt> objects, which
--   specify the parts of web requests that you want AWS WAF to inspect the
--   size of. If a <tt>SizeConstraintSet</tt> contains more than one
--   <tt>SizeConstraint</tt> object, a request only needs to match one
--   constraint to be considered a match.
--   
--   <i>See:</i> <a>sizeConstraintSet</a> smart constructor.
data SizeConstraintSet

-- | Creates a value of <a>SizeConstraintSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scsName</a> - The name, if any, of the
--   <tt>SizeConstraintSet</tt> .</li>
--   <li><a>scsSizeConstraintSetId</a> - A unique identifier for a
--   <tt>SizeConstraintSet</tt> . You use <tt>SizeConstraintSetId</tt> to
--   get information about a <tt>SizeConstraintSet</tt> (see
--   <tt>GetSizeConstraintSet</tt> ), update a <tt>SizeConstraintSet</tt>
--   (see <tt>UpdateSizeConstraintSet</tt> ), insert a
--   <tt>SizeConstraintSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SizeConstraintSet</tt> from AWS WAF (see
--   <tt>DeleteSizeConstraintSet</tt> ). <tt>SizeConstraintSetId</tt> is
--   returned by <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .</li>
--   <li><a>scsSizeConstraints</a> - Specifies the parts of web requests
--   that you want to inspect the size of.</li>
--   </ul>
sizeConstraintSet :: Text -> SizeConstraintSet

-- | The name, if any, of the <tt>SizeConstraintSet</tt> .
scsName :: Lens' SizeConstraintSet (Maybe Text)

-- | A unique identifier for a <tt>SizeConstraintSet</tt> . You use
--   <tt>SizeConstraintSetId</tt> to get information about a
--   <tt>SizeConstraintSet</tt> (see <tt>GetSizeConstraintSet</tt> ),
--   update a <tt>SizeConstraintSet</tt> (see
--   <tt>UpdateSizeConstraintSet</tt> ), insert a
--   <tt>SizeConstraintSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SizeConstraintSet</tt> from AWS WAF (see
--   <tt>DeleteSizeConstraintSet</tt> ). <tt>SizeConstraintSetId</tt> is
--   returned by <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .
scsSizeConstraintSetId :: Lens' SizeConstraintSet Text

-- | Specifies the parts of web requests that you want to inspect the size
--   of.
scsSizeConstraints :: Lens' SizeConstraintSet [SizeConstraint]

-- | The <tt>Id</tt> and <tt>Name</tt> of a <tt>SizeConstraintSet</tt> .
--   
--   <i>See:</i> <a>sizeConstraintSetSummary</a> smart constructor.
data SizeConstraintSetSummary

-- | Creates a value of <a>SizeConstraintSetSummary</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scssSizeConstraintSetId</a> - A unique identifier for a
--   <tt>SizeConstraintSet</tt> . You use <tt>SizeConstraintSetId</tt> to
--   get information about a <tt>SizeConstraintSet</tt> (see
--   <tt>GetSizeConstraintSet</tt> ), update a <tt>SizeConstraintSet</tt>
--   (see <tt>UpdateSizeConstraintSet</tt> ), insert a
--   <tt>SizeConstraintSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SizeConstraintSet</tt> from AWS WAF (see
--   <tt>DeleteSizeConstraintSet</tt> ). <tt>SizeConstraintSetId</tt> is
--   returned by <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .</li>
--   <li><a>scssName</a> - The name of the <tt>SizeConstraintSet</tt> , if
--   any.</li>
--   </ul>
sizeConstraintSetSummary :: Text -> Text -> SizeConstraintSetSummary

-- | A unique identifier for a <tt>SizeConstraintSet</tt> . You use
--   <tt>SizeConstraintSetId</tt> to get information about a
--   <tt>SizeConstraintSet</tt> (see <tt>GetSizeConstraintSet</tt> ),
--   update a <tt>SizeConstraintSet</tt> (see
--   <tt>UpdateSizeConstraintSet</tt> ), insert a
--   <tt>SizeConstraintSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SizeConstraintSet</tt> from AWS WAF (see
--   <tt>DeleteSizeConstraintSet</tt> ). <tt>SizeConstraintSetId</tt> is
--   returned by <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .
scssSizeConstraintSetId :: Lens' SizeConstraintSetSummary Text

-- | The name of the <tt>SizeConstraintSet</tt> , if any.
scssName :: Lens' SizeConstraintSetSummary Text

-- | Specifies the part of a web request that you want to inspect the size
--   of and indicates whether you want to add the specification to a
--   <a>SizeConstraintSet</a> or delete it from a
--   <tt>SizeConstraintSet</tt> .
--   
--   <i>See:</i> <a>sizeConstraintSetUpdate</a> smart constructor.
data SizeConstraintSetUpdate

-- | Creates a value of <a>SizeConstraintSetUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scsuAction</a> - Specify <tt>INSERT</tt> to add a
--   <a>SizeConstraintSetUpdate</a> to a <a>SizeConstraintSet</a> . Use
--   <tt>DELETE</tt> to remove a <tt>SizeConstraintSetUpdate</tt> from a
--   <tt>SizeConstraintSet</tt> .</li>
--   <li><a>scsuSizeConstraint</a> - Specifies a constraint on the size of
--   a part of the web request. AWS WAF uses the <tt>Size</tt> ,
--   <tt>ComparisonOperator</tt> , and <tt>FieldToMatch</tt> to build an
--   expression in the form of "<tt>Size</tt> <tt>ComparisonOperator</tt>
--   size in bytes of <tt>FieldToMatch</tt> ". If that expression is true,
--   the <tt>SizeConstraint</tt> is considered to match.</li>
--   </ul>
sizeConstraintSetUpdate :: ChangeAction -> SizeConstraint -> SizeConstraintSetUpdate

-- | Specify <tt>INSERT</tt> to add a <a>SizeConstraintSetUpdate</a> to a
--   <a>SizeConstraintSet</a> . Use <tt>DELETE</tt> to remove a
--   <tt>SizeConstraintSetUpdate</tt> from a <tt>SizeConstraintSet</tt> .
scsuAction :: Lens' SizeConstraintSetUpdate ChangeAction

-- | Specifies a constraint on the size of a part of the web request. AWS
--   WAF uses the <tt>Size</tt> , <tt>ComparisonOperator</tt> , and
--   <tt>FieldToMatch</tt> to build an expression in the form of
--   "<tt>Size</tt> <tt>ComparisonOperator</tt> size in bytes of
--   <tt>FieldToMatch</tt> ". If that expression is true, the
--   <tt>SizeConstraint</tt> is considered to match.
scsuSizeConstraint :: Lens' SizeConstraintSetUpdate SizeConstraint

-- | A complex type that contains <tt>SqlInjectionMatchTuple</tt> objects,
--   which specify the parts of web requests that you want AWS WAF to
--   inspect for snippets of malicious SQL code and, if you want AWS WAF to
--   inspect a header, the name of the header. If a
--   <tt>SqlInjectionMatchSet</tt> contains more than one
--   <tt>SqlInjectionMatchTuple</tt> object, a request needs to include
--   snippets of SQL code in only one of the specified parts of the request
--   to be considered a match.
--   
--   <i>See:</i> <a>sqlInjectionMatchSet</a> smart constructor.
data SqlInjectionMatchSet

-- | Creates a value of <a>SqlInjectionMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>simsName</a> - The name, if any, of the
--   <tt>SqlInjectionMatchSet</tt> .</li>
--   <li><a>simsSqlInjectionMatchSetId</a> - A unique identifier for a
--   <tt>SqlInjectionMatchSet</tt> . You use
--   <tt>SqlInjectionMatchSetId</tt> to get information about a
--   <tt>SqlInjectionMatchSet</tt> (see <tt>GetSqlInjectionMatchSet</tt> ),
--   update a <tt>SqlInjectionMatchSet</tt> (see
--   <tt>UpdateSqlInjectionMatchSet</tt> ), insert a
--   <tt>SqlInjectionMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SqlInjectionMatchSet</tt> from AWS WAF (see
--   <tt>DeleteSqlInjectionMatchSet</tt> ). <tt>SqlInjectionMatchSetId</tt>
--   is returned by <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .</li>
--   <li><a>simsSqlInjectionMatchTuples</a> - Specifies the parts of web
--   requests that you want to inspect for snippets of malicious SQL
--   code.</li>
--   </ul>
sqlInjectionMatchSet :: Text -> SqlInjectionMatchSet

-- | The name, if any, of the <tt>SqlInjectionMatchSet</tt> .
simsName :: Lens' SqlInjectionMatchSet (Maybe Text)

-- | A unique identifier for a <tt>SqlInjectionMatchSet</tt> . You use
--   <tt>SqlInjectionMatchSetId</tt> to get information about a
--   <tt>SqlInjectionMatchSet</tt> (see <tt>GetSqlInjectionMatchSet</tt> ),
--   update a <tt>SqlInjectionMatchSet</tt> (see
--   <tt>UpdateSqlInjectionMatchSet</tt> ), insert a
--   <tt>SqlInjectionMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SqlInjectionMatchSet</tt> from AWS WAF (see
--   <tt>DeleteSqlInjectionMatchSet</tt> ). <tt>SqlInjectionMatchSetId</tt>
--   is returned by <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .
simsSqlInjectionMatchSetId :: Lens' SqlInjectionMatchSet Text

-- | Specifies the parts of web requests that you want to inspect for
--   snippets of malicious SQL code.
simsSqlInjectionMatchTuples :: Lens' SqlInjectionMatchSet [SqlInjectionMatchTuple]

-- | The <tt>Id</tt> and <tt>Name</tt> of a <tt>SqlInjectionMatchSet</tt> .
--   
--   <i>See:</i> <a>sqlInjectionMatchSetSummary</a> smart constructor.
data SqlInjectionMatchSetSummary

-- | Creates a value of <a>SqlInjectionMatchSetSummary</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>simssSqlInjectionMatchSetId</a> - A unique identifier for a
--   <tt>SqlInjectionMatchSet</tt> . You use
--   <tt>SqlInjectionMatchSetId</tt> to get information about a
--   <tt>SqlInjectionMatchSet</tt> (see <tt>GetSqlInjectionMatchSet</tt> ),
--   update a <tt>SqlInjectionMatchSet</tt> (see
--   <tt>UpdateSqlInjectionMatchSet</tt> ), insert a
--   <tt>SqlInjectionMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SqlInjectionMatchSet</tt> from AWS WAF (see
--   <tt>DeleteSqlInjectionMatchSet</tt> ). <tt>SqlInjectionMatchSetId</tt>
--   is returned by <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .</li>
--   <li><a>simssName</a> - The name of the <tt>SqlInjectionMatchSet</tt> ,
--   if any, specified by <tt>Id</tt> .</li>
--   </ul>
sqlInjectionMatchSetSummary :: Text -> Text -> SqlInjectionMatchSetSummary

-- | A unique identifier for a <tt>SqlInjectionMatchSet</tt> . You use
--   <tt>SqlInjectionMatchSetId</tt> to get information about a
--   <tt>SqlInjectionMatchSet</tt> (see <tt>GetSqlInjectionMatchSet</tt> ),
--   update a <tt>SqlInjectionMatchSet</tt> (see
--   <tt>UpdateSqlInjectionMatchSet</tt> ), insert a
--   <tt>SqlInjectionMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SqlInjectionMatchSet</tt> from AWS WAF (see
--   <tt>DeleteSqlInjectionMatchSet</tt> ). <tt>SqlInjectionMatchSetId</tt>
--   is returned by <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .
simssSqlInjectionMatchSetId :: Lens' SqlInjectionMatchSetSummary Text

-- | The name of the <tt>SqlInjectionMatchSet</tt> , if any, specified by
--   <tt>Id</tt> .
simssName :: Lens' SqlInjectionMatchSetSummary Text

-- | Specifies the part of a web request that you want to inspect for
--   snippets of malicious SQL code and indicates whether you want to add
--   the specification to a <a>SqlInjectionMatchSet</a> or delete it from a
--   <tt>SqlInjectionMatchSet</tt> .
--   
--   <i>See:</i> <a>sqlInjectionMatchSetUpdate</a> smart constructor.
data SqlInjectionMatchSetUpdate

-- | Creates a value of <a>SqlInjectionMatchSetUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>simsuAction</a> - Specify <tt>INSERT</tt> to add a
--   <a>SqlInjectionMatchSetUpdate</a> to a <a>SqlInjectionMatchSet</a> .
--   Use <tt>DELETE</tt> to remove a <tt>SqlInjectionMatchSetUpdate</tt>
--   from a <tt>SqlInjectionMatchSet</tt> .</li>
--   <li><a>simsuSqlInjectionMatchTuple</a> - Specifies the part of a web
--   request that you want AWS WAF to inspect for snippets of malicious SQL
--   code and, if you want AWS WAF to inspect a header, the name of the
--   header.</li>
--   </ul>
sqlInjectionMatchSetUpdate :: ChangeAction -> SqlInjectionMatchTuple -> SqlInjectionMatchSetUpdate

-- | Specify <tt>INSERT</tt> to add a <a>SqlInjectionMatchSetUpdate</a> to
--   a <a>SqlInjectionMatchSet</a> . Use <tt>DELETE</tt> to remove a
--   <tt>SqlInjectionMatchSetUpdate</tt> from a
--   <tt>SqlInjectionMatchSet</tt> .
simsuAction :: Lens' SqlInjectionMatchSetUpdate ChangeAction

-- | Specifies the part of a web request that you want AWS WAF to inspect
--   for snippets of malicious SQL code and, if you want AWS WAF to inspect
--   a header, the name of the header.
simsuSqlInjectionMatchTuple :: Lens' SqlInjectionMatchSetUpdate SqlInjectionMatchTuple

-- | Specifies the part of a web request that you want AWS WAF to inspect
--   for snippets of malicious SQL code and, if you want AWS WAF to inspect
--   a header, the name of the header.
--   
--   <i>See:</i> <a>sqlInjectionMatchTuple</a> smart constructor.
data SqlInjectionMatchTuple

-- | Creates a value of <a>SqlInjectionMatchTuple</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>simtFieldToMatch</a> - Specifies where in a web request to look
--   for snippets of malicious SQL code.</li>
--   <li><a>simtTextTransformation</a> - Text transformations eliminate
--   some of the unusual formatting that attackers use in web requests in
--   an effort to bypass AWS WAF. If you specify a transformation, AWS WAF
--   performs the transformation on <tt>FieldToMatch</tt> before inspecting
--   a request for a match. <b>CMD_LINE</b> When you're concerned that
--   attackers are injecting an operating system commandline command and
--   using unusual formatting to disguise some or all of the command, use
--   this option to perform the following transformations: * Delete the
--   following characters: " ' ^ * Delete spaces before the following
--   characters: / ( * Replace the following characters with a space: , ; *
--   Replace multiple spaces with one space * Convert uppercase letters
--   (A-Z) to lowercase (a-z) <b>COMPRESS_WHITE_SPACE</b> Use this option
--   to replace the following characters with a space character (decimal
--   32): * f, formfeed, decimal 12 * t, tab, decimal 9 * n, newline,
--   decimal 10 * r, carriage return, decimal 13 * v, vertical tab, decimal
--   11 * non-breaking space, decimal 160 <tt>COMPRESS_WHITE_SPACE</tt>
--   also replaces multiple spaces with one space.
--   <b>HTML_ENTITY_DECODE</b> Use this option to replace HTML-encoded
--   characters with unencoded characters. <tt>HTML_ENTITY_DECODE</tt>
--   performs the following operations: * Replaces
--   <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text
--   transformations.</li>
--   </ul>
sqlInjectionMatchTuple :: FieldToMatch -> TextTransformation -> SqlInjectionMatchTuple

-- | Specifies where in a web request to look for snippets of malicious SQL
--   code.
simtFieldToMatch :: Lens' SqlInjectionMatchTuple FieldToMatch

-- | Text transformations eliminate some of the unusual formatting that
--   attackers use in web requests in an effort to bypass AWS WAF. If you
--   specify a transformation, AWS WAF performs the transformation on
--   <tt>FieldToMatch</tt> before inspecting a request for a match.
--   <b>CMD_LINE</b> When you're concerned that attackers are injecting an
--   operating system commandline command and using unusual formatting to
--   disguise some or all of the command, use this option to perform the
--   following transformations: * Delete the following characters: " ' ^ *
--   Delete spaces before the following characters: / ( * Replace the
--   following characters with a space: , ; * Replace multiple spaces with
--   one space * Convert uppercase letters (A-Z) to lowercase (a-z)
--   <b>COMPRESS_WHITE_SPACE</b> Use this option to replace the following
--   characters with a space character (decimal 32): * f, formfeed, decimal
--   12 * t, tab, decimal 9 * n, newline, decimal 10 * r, carriage return,
--   decimal 13 * v, vertical tab, decimal 11 * non-breaking space, decimal
--   160 <tt>COMPRESS_WHITE_SPACE</tt> also replaces multiple spaces with
--   one space. <b>HTML_ENTITY_DECODE</b> Use this option to replace
--   HTML-encoded characters with unencoded characters.
--   <tt>HTML_ENTITY_DECODE</tt> performs the following operations: *
--   Replaces <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text transformations.
simtTextTransformation :: Lens' SqlInjectionMatchTuple TextTransformation

-- | A summary of the rule groups you are subscribed to.
--   
--   <i>See:</i> <a>subscribedRuleGroupSummary</a> smart constructor.
data SubscribedRuleGroupSummary

-- | Creates a value of <a>SubscribedRuleGroupSummary</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srgsRuleGroupId</a> - A unique identifier for a
--   <tt>RuleGroup</tt> .</li>
--   <li><a>srgsName</a> - A friendly name or description of the
--   <tt>RuleGroup</tt> . You can't change the name of a <tt>RuleGroup</tt>
--   after you create it.</li>
--   <li><a>srgsMetricName</a> - A friendly name or description for the
--   metrics for this <tt>RuleGroup</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change the name of the metric after you create
--   the <tt>RuleGroup</tt> .</li>
--   </ul>
subscribedRuleGroupSummary :: Text -> Text -> Text -> SubscribedRuleGroupSummary

-- | A unique identifier for a <tt>RuleGroup</tt> .
srgsRuleGroupId :: Lens' SubscribedRuleGroupSummary Text

-- | A friendly name or description of the <tt>RuleGroup</tt> . You can't
--   change the name of a <tt>RuleGroup</tt> after you create it.
srgsName :: Lens' SubscribedRuleGroupSummary Text

-- | A friendly name or description for the metrics for this
--   <tt>RuleGroup</tt> . The name can contain only alphanumeric characters
--   (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change
--   the name of the metric after you create the <tt>RuleGroup</tt> .
srgsMetricName :: Lens' SubscribedRuleGroupSummary Text

-- | In a <tt>GetSampledRequests</tt> request, the <tt>StartTime</tt> and
--   <tt>EndTime</tt> objects specify the time range for which you want AWS
--   WAF to return a sample of web requests.
--   
--   In a <tt>GetSampledRequests</tt> response, the <tt>StartTime</tt> and
--   <tt>EndTime</tt> objects specify the time range for which AWS WAF
--   actually returned a sample of web requests. AWS WAF gets the specified
--   number of requests from among the first 5,000 requests that your AWS
--   resource receives during the specified time period. If your resource
--   receives more than 5,000 requests during that period, AWS WAF stops
--   sampling after the 5,000th request. In that case, <tt>EndTime</tt> is
--   the time that AWS WAF received the 5,000th request.
--   
--   <i>See:</i> <a>timeWindow</a> smart constructor.
data TimeWindow

-- | Creates a value of <a>TimeWindow</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>twStartTime</a> - The beginning of the time range from which
--   you want <tt>GetSampledRequests</tt> to return a sample of the
--   requests that your AWS resource received. Specify the date and time in
--   the following format: <tt>"2016-09-27T14:50Z"</tt> . You can specify
--   any time range in the previous three hours.</li>
--   <li><a>twEndTime</a> - The end of the time range from which you want
--   <tt>GetSampledRequests</tt> to return a sample of the requests that
--   your AWS resource received. Specify the date and time in the following
--   format: <tt>"2016-09-27T14:50Z"</tt> . You can specify any time range
--   in the previous three hours.</li>
--   </ul>
timeWindow :: UTCTime -> UTCTime -> TimeWindow

-- | The beginning of the time range from which you want
--   <tt>GetSampledRequests</tt> to return a sample of the requests that
--   your AWS resource received. Specify the date and time in the following
--   format: <tt>"2016-09-27T14:50Z"</tt> . You can specify any time range
--   in the previous three hours.
twStartTime :: Lens' TimeWindow UTCTime

-- | The end of the time range from which you want
--   <tt>GetSampledRequests</tt> to return a sample of the requests that
--   your AWS resource received. Specify the date and time in the following
--   format: <tt>"2016-09-27T14:50Z"</tt> . You can specify any time range
--   in the previous three hours.
twEndTime :: Lens' TimeWindow UTCTime

-- | For the action that is associated with a rule in a <tt>WebACL</tt> ,
--   specifies the action that you want AWS WAF to perform when a web
--   request matches all of the conditions in a rule. For the default
--   action in a <tt>WebACL</tt> , specifies the action that you want AWS
--   WAF to take when a web request doesn't match all of the conditions in
--   any of the rules in a <tt>WebACL</tt> .
--   
--   <i>See:</i> <a>wafAction</a> smart constructor.
data WafAction

-- | Creates a value of <a>WafAction</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>waType</a> - Specifies how you want AWS WAF to respond to
--   requests that match the settings in a <tt>Rule</tt> . Valid settings
--   include the following: * <tt>ALLOW</tt> : AWS WAF allows requests *
--   <tt>BLOCK</tt> : AWS WAF blocks requests * <tt>COUNT</tt> : AWS WAF
--   increments a counter of the requests that match all of the conditions
--   in the rule. AWS WAF then continues to inspect the web request based
--   on the remaining rules in the web ACL. You can't specify
--   <tt>COUNT</tt> for the default action for a <tt>WebACL</tt> .</li>
--   </ul>
wafAction :: WafActionType -> WafAction

-- | Specifies how you want AWS WAF to respond to requests that match the
--   settings in a <tt>Rule</tt> . Valid settings include the following: *
--   <tt>ALLOW</tt> : AWS WAF allows requests * <tt>BLOCK</tt> : AWS WAF
--   blocks requests * <tt>COUNT</tt> : AWS WAF increments a counter of the
--   requests that match all of the conditions in the rule. AWS WAF then
--   continues to inspect the web request based on the remaining rules in
--   the web ACL. You can't specify <tt>COUNT</tt> for the default action
--   for a <tt>WebACL</tt> .
waType :: Lens' WafAction WafActionType

-- | The action to take if any rule within the <tt>RuleGroup</tt> matches a
--   request.
--   
--   <i>See:</i> <a>wafOverrideAction</a> smart constructor.
data WafOverrideAction

-- | Creates a value of <a>WafOverrideAction</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>woaType</a> - <tt>COUNT</tt> overrides the action specified by
--   the individual rule within a <tt>RuleGroup</tt> . If set to
--   <tt>NONE</tt> , the rule's action will take place.</li>
--   </ul>
wafOverrideAction :: WafOverrideActionType -> WafOverrideAction

-- | <tt>COUNT</tt> overrides the action specified by the individual rule
--   within a <tt>RuleGroup</tt> . If set to <tt>NONE</tt> , the rule's
--   action will take place.
woaType :: Lens' WafOverrideAction WafOverrideActionType

-- | Contains the <tt>Rules</tt> that identify the requests that you want
--   to allow, block, or count. In a <tt>WebACL</tt> , you also specify a
--   default action (<tt>ALLOW</tt> or <tt>BLOCK</tt> ), and the action for
--   each <tt>Rule</tt> that you add to a <tt>WebACL</tt> , for example,
--   block requests from specified IP addresses or block requests from
--   specified referrers. You also associate the <tt>WebACL</tt> with a
--   CloudFront distribution to identify the requests that you want AWS WAF
--   to filter. If you add more than one <tt>Rule</tt> to a <tt>WebACL</tt>
--   , a request needs to match only one of the specifications to be
--   allowed, blocked, or counted. For more information, see
--   <tt>UpdateWebACL</tt> .
--   
--   <i>See:</i> <a>webACL</a> smart constructor.
data WebACL

-- | Creates a value of <a>WebACL</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>waMetricName</a> - A friendly name or description for the
--   metrics for this <tt>WebACL</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change <tt>MetricName</tt> after you create the
--   <tt>WebACL</tt> .</li>
--   <li><a>waName</a> - A friendly name or description of the
--   <tt>WebACL</tt> . You can't change the name of a <tt>WebACL</tt> after
--   you create it.</li>
--   <li><a>waWebACLId</a> - A unique identifier for a <tt>WebACL</tt> .
--   You use <tt>WebACLId</tt> to get information about a <tt>WebACL</tt>
--   (see <tt>GetWebACL</tt> ), update a <tt>WebACL</tt> (see
--   <tt>UpdateWebACL</tt> ), and delete a <tt>WebACL</tt> from AWS WAF
--   (see <tt>DeleteWebACL</tt> ). <tt>WebACLId</tt> is returned by
--   <tt>CreateWebACL</tt> and by <tt>ListWebACLs</tt> .</li>
--   <li><a>waDefaultAction</a> - The action to perform if none of the
--   <tt>Rules</tt> contained in the <tt>WebACL</tt> match. The action is
--   specified by the <a>WafAction</a> object.</li>
--   <li><a>waRules</a> - An array that contains the action for each
--   <tt>Rule</tt> in a <tt>WebACL</tt> , the priority of the <tt>Rule</tt>
--   , and the ID of the <tt>Rule</tt> .</li>
--   </ul>
webACL :: Text -> WafAction -> WebACL

-- | A friendly name or description for the metrics for this
--   <tt>WebACL</tt> . The name can contain only alphanumeric characters
--   (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change
--   <tt>MetricName</tt> after you create the <tt>WebACL</tt> .
waMetricName :: Lens' WebACL (Maybe Text)

-- | A friendly name or description of the <tt>WebACL</tt> . You can't
--   change the name of a <tt>WebACL</tt> after you create it.
waName :: Lens' WebACL (Maybe Text)

-- | A unique identifier for a <tt>WebACL</tt> . You use <tt>WebACLId</tt>
--   to get information about a <tt>WebACL</tt> (see <tt>GetWebACL</tt> ),
--   update a <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), and delete a
--   <tt>WebACL</tt> from AWS WAF (see <tt>DeleteWebACL</tt> ).
--   <tt>WebACLId</tt> is returned by <tt>CreateWebACL</tt> and by
--   <tt>ListWebACLs</tt> .
waWebACLId :: Lens' WebACL Text

-- | The action to perform if none of the <tt>Rules</tt> contained in the
--   <tt>WebACL</tt> match. The action is specified by the <a>WafAction</a>
--   object.
waDefaultAction :: Lens' WebACL WafAction

-- | An array that contains the action for each <tt>Rule</tt> in a
--   <tt>WebACL</tt> , the priority of the <tt>Rule</tt> , and the ID of
--   the <tt>Rule</tt> .
waRules :: Lens' WebACL [ActivatedRule]

-- | Contains the identifier and the name or description of the
--   <a>WebACL</a> .
--   
--   <i>See:</i> <a>webACLSummary</a> smart constructor.
data WebACLSummary

-- | Creates a value of <a>WebACLSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>wasWebACLId</a> - A unique identifier for a <tt>WebACL</tt> .
--   You use <tt>WebACLId</tt> to get information about a <tt>WebACL</tt>
--   (see <tt>GetWebACL</tt> ), update a <tt>WebACL</tt> (see
--   <tt>UpdateWebACL</tt> ), and delete a <tt>WebACL</tt> from AWS WAF
--   (see <tt>DeleteWebACL</tt> ). <tt>WebACLId</tt> is returned by
--   <tt>CreateWebACL</tt> and by <tt>ListWebACLs</tt> .</li>
--   <li><a>wasName</a> - A friendly name or description of the
--   <a>WebACL</a> . You can't change the name of a <tt>WebACL</tt> after
--   you create it.</li>
--   </ul>
webACLSummary :: Text -> Text -> WebACLSummary

-- | A unique identifier for a <tt>WebACL</tt> . You use <tt>WebACLId</tt>
--   to get information about a <tt>WebACL</tt> (see <tt>GetWebACL</tt> ),
--   update a <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), and delete a
--   <tt>WebACL</tt> from AWS WAF (see <tt>DeleteWebACL</tt> ).
--   <tt>WebACLId</tt> is returned by <tt>CreateWebACL</tt> and by
--   <tt>ListWebACLs</tt> .
wasWebACLId :: Lens' WebACLSummary Text

-- | A friendly name or description of the <a>WebACL</a> . You can't change
--   the name of a <tt>WebACL</tt> after you create it.
wasName :: Lens' WebACLSummary Text

-- | Specifies whether to insert a <tt>Rule</tt> into or delete a
--   <tt>Rule</tt> from a <tt>WebACL</tt> .
--   
--   <i>See:</i> <a>webACLUpdate</a> smart constructor.
data WebACLUpdate

-- | Creates a value of <a>WebACLUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>wauAction</a> - Specifies whether to insert a <tt>Rule</tt>
--   into or delete a <tt>Rule</tt> from a <tt>WebACL</tt> .</li>
--   <li><a>wauActivatedRule</a> - The <tt>ActivatedRule</tt> object in an
--   <tt>UpdateWebACL</tt> request specifies a <tt>Rule</tt> that you want
--   to insert or delete, the priority of the <tt>Rule</tt> in the
--   <tt>WebACL</tt> , and the action that you want AWS WAF to take when a
--   web request matches the <tt>Rule</tt> (<tt>ALLOW</tt> , <tt>BLOCK</tt>
--   , or <tt>COUNT</tt> ).</li>
--   </ul>
webACLUpdate :: ChangeAction -> ActivatedRule -> WebACLUpdate

-- | Specifies whether to insert a <tt>Rule</tt> into or delete a
--   <tt>Rule</tt> from a <tt>WebACL</tt> .
wauAction :: Lens' WebACLUpdate ChangeAction

-- | The <tt>ActivatedRule</tt> object in an <tt>UpdateWebACL</tt> request
--   specifies a <tt>Rule</tt> that you want to insert or delete, the
--   priority of the <tt>Rule</tt> in the <tt>WebACL</tt> , and the action
--   that you want AWS WAF to take when a web request matches the
--   <tt>Rule</tt> (<tt>ALLOW</tt> , <tt>BLOCK</tt> , or <tt>COUNT</tt> ).
wauActivatedRule :: Lens' WebACLUpdate ActivatedRule

-- | A complex type that contains <tt>XssMatchTuple</tt> objects, which
--   specify the parts of web requests that you want AWS WAF to inspect for
--   cross-site scripting attacks and, if you want AWS WAF to inspect a
--   header, the name of the header. If a <tt>XssMatchSet</tt> contains
--   more than one <tt>XssMatchTuple</tt> object, a request needs to
--   include cross-site scripting attacks in only one of the specified
--   parts of the request to be considered a match.
--   
--   <i>See:</i> <a>xssMatchSet</a> smart constructor.
data XSSMatchSet

-- | Creates a value of <a>XSSMatchSet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>xmsName</a> - The name, if any, of the <tt>XssMatchSet</tt>
--   .</li>
--   <li><a>xmsXSSMatchSetId</a> - A unique identifier for an
--   <tt>XssMatchSet</tt> . You use <tt>XssMatchSetId</tt> to get
--   information about an <tt>XssMatchSet</tt> (see <tt>GetXssMatchSet</tt>
--   ), update an <tt>XssMatchSet</tt> (see <tt>UpdateXssMatchSet</tt> ),
--   insert an <tt>XssMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete an
--   <tt>XssMatchSet</tt> from AWS WAF (see <tt>DeleteXssMatchSet</tt> ).
--   <tt>XssMatchSetId</tt> is returned by <tt>CreateXssMatchSet</tt> and
--   by <tt>ListXssMatchSets</tt> .</li>
--   <li><a>xmsXSSMatchTuples</a> - Specifies the parts of web requests
--   that you want to inspect for cross-site scripting attacks.</li>
--   </ul>
xssMatchSet :: Text -> XSSMatchSet

-- | The name, if any, of the <tt>XssMatchSet</tt> .
xmsName :: Lens' XSSMatchSet (Maybe Text)

-- | A unique identifier for an <tt>XssMatchSet</tt> . You use
--   <tt>XssMatchSetId</tt> to get information about an
--   <tt>XssMatchSet</tt> (see <tt>GetXssMatchSet</tt> ), update an
--   <tt>XssMatchSet</tt> (see <tt>UpdateXssMatchSet</tt> ), insert an
--   <tt>XssMatchSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete an
--   <tt>XssMatchSet</tt> from AWS WAF (see <tt>DeleteXssMatchSet</tt> ).
--   <tt>XssMatchSetId</tt> is returned by <tt>CreateXssMatchSet</tt> and
--   by <tt>ListXssMatchSets</tt> .
xmsXSSMatchSetId :: Lens' XSSMatchSet Text

-- | Specifies the parts of web requests that you want to inspect for
--   cross-site scripting attacks.
xmsXSSMatchTuples :: Lens' XSSMatchSet [XSSMatchTuple]

-- | The <tt>Id</tt> and <tt>Name</tt> of an <tt>XssMatchSet</tt> .
--   
--   <i>See:</i> <a>xssMatchSetSummary</a> smart constructor.
data XSSMatchSetSummary

-- | Creates a value of <a>XSSMatchSetSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>xmssXSSMatchSetId</a> - A unique identifier for an
--   <tt>XssMatchSet</tt> . You use <tt>XssMatchSetId</tt> to get
--   information about a <tt>XssMatchSet</tt> (see <tt>GetXssMatchSet</tt>
--   ), update an <tt>XssMatchSet</tt> (see <tt>UpdateXssMatchSet</tt> ),
--   insert an <tt>XssMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete an
--   <tt>XssMatchSet</tt> from AWS WAF (see <tt>DeleteXssMatchSet</tt> ).
--   <tt>XssMatchSetId</tt> is returned by <tt>CreateXssMatchSet</tt> and
--   by <tt>ListXssMatchSets</tt> .</li>
--   <li><a>xmssName</a> - The name of the <tt>XssMatchSet</tt> , if any,
--   specified by <tt>Id</tt> .</li>
--   </ul>
xssMatchSetSummary :: Text -> Text -> XSSMatchSetSummary

-- | A unique identifier for an <tt>XssMatchSet</tt> . You use
--   <tt>XssMatchSetId</tt> to get information about a <tt>XssMatchSet</tt>
--   (see <tt>GetXssMatchSet</tt> ), update an <tt>XssMatchSet</tt> (see
--   <tt>UpdateXssMatchSet</tt> ), insert an <tt>XssMatchSet</tt> into a
--   <tt>Rule</tt> or delete one from a <tt>Rule</tt> (see
--   <tt>UpdateRule</tt> ), and delete an <tt>XssMatchSet</tt> from AWS WAF
--   (see <tt>DeleteXssMatchSet</tt> ). <tt>XssMatchSetId</tt> is returned
--   by <tt>CreateXssMatchSet</tt> and by <tt>ListXssMatchSets</tt> .
xmssXSSMatchSetId :: Lens' XSSMatchSetSummary Text

-- | The name of the <tt>XssMatchSet</tt> , if any, specified by
--   <tt>Id</tt> .
xmssName :: Lens' XSSMatchSetSummary Text

-- | Specifies the part of a web request that you want to inspect for
--   cross-site scripting attacks and indicates whether you want to add the
--   specification to an <tt>XssMatchSet</tt> or delete it from an
--   <tt>XssMatchSet</tt> .
--   
--   <i>See:</i> <a>xssMatchSetUpdate</a> smart constructor.
data XSSMatchSetUpdate

-- | Creates a value of <a>XSSMatchSetUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>xmsuAction</a> - Specify <tt>INSERT</tt> to add a
--   <tt>XssMatchSetUpdate</tt> to an <tt>XssMatchSet</tt> . Use
--   <tt>DELETE</tt> to remove a <tt>XssMatchSetUpdate</tt> from an
--   <tt>XssMatchSet</tt> .</li>
--   <li><a>xmsuXSSMatchTuple</a> - Specifies the part of a web request
--   that you want AWS WAF to inspect for cross-site scripting attacks and,
--   if you want AWS WAF to inspect a header, the name of the header.</li>
--   </ul>
xssMatchSetUpdate :: ChangeAction -> XSSMatchTuple -> XSSMatchSetUpdate

-- | Specify <tt>INSERT</tt> to add a <tt>XssMatchSetUpdate</tt> to an
--   <tt>XssMatchSet</tt> . Use <tt>DELETE</tt> to remove a
--   <tt>XssMatchSetUpdate</tt> from an <tt>XssMatchSet</tt> .
xmsuAction :: Lens' XSSMatchSetUpdate ChangeAction

-- | Specifies the part of a web request that you want AWS WAF to inspect
--   for cross-site scripting attacks and, if you want AWS WAF to inspect a
--   header, the name of the header.
xmsuXSSMatchTuple :: Lens' XSSMatchSetUpdate XSSMatchTuple

-- | Specifies the part of a web request that you want AWS WAF to inspect
--   for cross-site scripting attacks and, if you want AWS WAF to inspect a
--   header, the name of the header.
--   
--   <i>See:</i> <a>xssMatchTuple</a> smart constructor.
data XSSMatchTuple

-- | Creates a value of <a>XSSMatchTuple</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>xmtFieldToMatch</a> - Specifies where in a web request to look
--   for cross-site scripting attacks.</li>
--   <li><a>xmtTextTransformation</a> - Text transformations eliminate some
--   of the unusual formatting that attackers use in web requests in an
--   effort to bypass AWS WAF. If you specify a transformation, AWS WAF
--   performs the transformation on <tt>FieldToMatch</tt> before inspecting
--   a request for a match. <b>CMD_LINE</b> When you're concerned that
--   attackers are injecting an operating system commandline command and
--   using unusual formatting to disguise some or all of the command, use
--   this option to perform the following transformations: * Delete the
--   following characters: " ' ^ * Delete spaces before the following
--   characters: / ( * Replace the following characters with a space: , ; *
--   Replace multiple spaces with one space * Convert uppercase letters
--   (A-Z) to lowercase (a-z) <b>COMPRESS_WHITE_SPACE</b> Use this option
--   to replace the following characters with a space character (decimal
--   32): * f, formfeed, decimal 12 * t, tab, decimal 9 * n, newline,
--   decimal 10 * r, carriage return, decimal 13 * v, vertical tab, decimal
--   11 * non-breaking space, decimal 160 <tt>COMPRESS_WHITE_SPACE</tt>
--   also replaces multiple spaces with one space.
--   <b>HTML_ENTITY_DECODE</b> Use this option to replace HTML-encoded
--   characters with unencoded characters. <tt>HTML_ENTITY_DECODE</tt>
--   performs the following operations: * Replaces
--   <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text
--   transformations.</li>
--   </ul>
xssMatchTuple :: FieldToMatch -> TextTransformation -> XSSMatchTuple

-- | Specifies where in a web request to look for cross-site scripting
--   attacks.
xmtFieldToMatch :: Lens' XSSMatchTuple FieldToMatch

-- | Text transformations eliminate some of the unusual formatting that
--   attackers use in web requests in an effort to bypass AWS WAF. If you
--   specify a transformation, AWS WAF performs the transformation on
--   <tt>FieldToMatch</tt> before inspecting a request for a match.
--   <b>CMD_LINE</b> When you're concerned that attackers are injecting an
--   operating system commandline command and using unusual formatting to
--   disguise some or all of the command, use this option to perform the
--   following transformations: * Delete the following characters: " ' ^ *
--   Delete spaces before the following characters: / ( * Replace the
--   following characters with a space: , ; * Replace multiple spaces with
--   one space * Convert uppercase letters (A-Z) to lowercase (a-z)
--   <b>COMPRESS_WHITE_SPACE</b> Use this option to replace the following
--   characters with a space character (decimal 32): * f, formfeed, decimal
--   12 * t, tab, decimal 9 * n, newline, decimal 10 * r, carriage return,
--   decimal 13 * v, vertical tab, decimal 11 * non-breaking space, decimal
--   160 <tt>COMPRESS_WHITE_SPACE</tt> also replaces multiple spaces with
--   one space. <b>HTML_ENTITY_DECODE</b> Use this option to replace
--   HTML-encoded characters with unencoded characters.
--   <tt>HTML_ENTITY_DECODE</tt> performs the following operations: *
--   Replaces <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text transformations.
xmtTextTransformation :: Lens' XSSMatchTuple TextTransformation


-- | Attaches a IAM policy to the specified resource. The only supported
--   use for this action is to share a RuleGroup across accounts.
--   
--   The <tt>PutPermissionPolicy</tt> is subject to the following
--   restrictions:
--   
--   <ul>
--   <li>You can attach only one policy with each
--   <tt>PutPermissionPolicy</tt> request.</li>
--   <li>The policy must include an <tt>Effect</tt> , <tt>Action</tt> and
--   <tt>Principal</tt> .</li>
--   <li><tt>Effect</tt> must specify <tt>Allow</tt> .</li>
--   <li>The <tt>Action</tt> in the policy must be
--   <tt>waf:UpdateWebACL</tt> and <tt>waf-regional:UpdateWebACL</tt> . Any
--   extra or wildcard actions in the policy will be rejected.</li>
--   <li>The policy cannot include a <tt>Resource</tt> parameter.</li>
--   <li>The ARN in the request must be a valid WAF RuleGroup ARN and the
--   RuleGroup must exist in the same region.</li>
--   <li>The user making the request must be the owner of the
--   RuleGroup.</li>
--   <li>Your policy must be composed using IAM Policy version
--   2012-10-17.</li>
--   </ul>
--   
--   For more information, see <a>IAM Policies</a> .
--   
--   An example of a valid policy parameter is shown in the Examples
--   section below.
module Network.AWS.WAF.PutPermissionPolicy

-- | Creates a value of <a>PutPermissionPolicy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pppResourceARN</a> - The Amazon Resource Name (ARN) of the
--   RuleGroup to which you want to attach the policy.</li>
--   <li><a>pppPolicy</a> - The policy to attach to the specified
--   RuleGroup.</li>
--   </ul>
putPermissionPolicy :: Text -> Text -> PutPermissionPolicy

-- | <i>See:</i> <a>putPermissionPolicy</a> smart constructor.
data PutPermissionPolicy

-- | The Amazon Resource Name (ARN) of the RuleGroup to which you want to
--   attach the policy.
pppResourceARN :: Lens' PutPermissionPolicy Text

-- | The policy to attach to the specified RuleGroup.
pppPolicy :: Lens' PutPermissionPolicy Text

-- | Creates a value of <a>PutPermissionPolicyResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ppprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
putPermissionPolicyResponse :: Int -> PutPermissionPolicyResponse

-- | <i>See:</i> <a>putPermissionPolicyResponse</a> smart constructor.
data PutPermissionPolicyResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ppprsResponseStatus :: Lens' PutPermissionPolicyResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicyResponse
instance Data.Data.Data Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicyResponse
instance GHC.Show.Show Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicyResponse
instance GHC.Read.Read Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicyResponse
instance GHC.Classes.Eq Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicyResponse
instance GHC.Generics.Generic Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicy
instance Data.Data.Data Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicy
instance GHC.Show.Show Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicy
instance GHC.Read.Read Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicy
instance GHC.Classes.Eq Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicy
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicy
instance Control.DeepSeq.NFData Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicyResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicy
instance Control.DeepSeq.NFData Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicy
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicy
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicy
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicy
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.PutPermissionPolicy.PutPermissionPolicy


-- | Returns an array of <tt>XssMatchSet</tt> objects.
--   
--   This operation returns paginated results.
module Network.AWS.WAF.ListXSSMatchSets

-- | Creates a value of <a>ListXSSMatchSets</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lxmsNextMarker</a> - If you specify a value for <tt>Limit</tt>
--   and you have more <tt>XssMatchSet</tt> objects than the value of
--   <tt>Limit</tt> , AWS WAF returns a <tt>NextMarker</tt> value in the
--   response that allows you to list another group of
--   <tt>XssMatchSets</tt> . For the second and subsequent
--   <tt>ListXssMatchSets</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>XssMatchSets</tt> .</li>
--   <li><a>lxmsLimit</a> - Specifies the number of <tt>XssMatchSet</tt>
--   objects that you want AWS WAF to return for this request. If you have
--   more <tt>XssMatchSet</tt> objects than the number you specify for
--   <tt>Limit</tt> , the response includes a <tt>NextMarker</tt> value
--   that you can use to get another batch of <tt>Rules</tt> .</li>
--   </ul>
listXSSMatchSets :: ListXSSMatchSets

-- | A request to list the <tt>XssMatchSet</tt> objects created by the
--   current AWS account.
--   
--   <i>See:</i> <a>listXSSMatchSets</a> smart constructor.
data ListXSSMatchSets

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <tt>XssMatchSet</tt> objects than the value of <tt>Limit</tt> , AWS
--   WAF returns a <tt>NextMarker</tt> value in the response that allows
--   you to list another group of <tt>XssMatchSets</tt> . For the second
--   and subsequent <tt>ListXssMatchSets</tt> requests, specify the value
--   of <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>XssMatchSets</tt> .
lxmsNextMarker :: Lens' ListXSSMatchSets (Maybe Text)

-- | Specifies the number of <tt>XssMatchSet</tt> objects that you want AWS
--   WAF to return for this request. If you have more <tt>XssMatchSet</tt>
--   objects than the number you specify for <tt>Limit</tt> , the response
--   includes a <tt>NextMarker</tt> value that you can use to get another
--   batch of <tt>Rules</tt> .
lxmsLimit :: Lens' ListXSSMatchSets (Maybe Natural)

-- | Creates a value of <a>ListXSSMatchSetsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lxmsrsXSSMatchSets</a> - An array of
--   <tt>XssMatchSetSummary</tt> objects.</li>
--   <li><a>lxmsrsNextMarker</a> - If you have more <tt>XssMatchSet</tt>
--   objects than the number that you specified for <tt>Limit</tt> in the
--   request, the response includes a <tt>NextMarker</tt> value. To list
--   more <tt>XssMatchSet</tt> objects, submit another
--   <tt>ListXssMatchSets</tt> request, and specify the <tt>NextMarker</tt>
--   value from the response in the <tt>NextMarker</tt> value in the next
--   request.</li>
--   <li><a>lxmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listXSSMatchSetsResponse :: Int -> ListXSSMatchSetsResponse

-- | The response to a <tt>ListXssMatchSets</tt> request.
--   
--   <i>See:</i> <a>listXSSMatchSetsResponse</a> smart constructor.
data ListXSSMatchSetsResponse

-- | An array of <tt>XssMatchSetSummary</tt> objects.
lxmsrsXSSMatchSets :: Lens' ListXSSMatchSetsResponse [XSSMatchSetSummary]

-- | If you have more <tt>XssMatchSet</tt> objects than the number that you
--   specified for <tt>Limit</tt> in the request, the response includes a
--   <tt>NextMarker</tt> value. To list more <tt>XssMatchSet</tt> objects,
--   submit another <tt>ListXssMatchSets</tt> request, and specify the
--   <tt>NextMarker</tt> value from the response in the <tt>NextMarker</tt>
--   value in the next request.
lxmsrsNextMarker :: Lens' ListXSSMatchSetsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lxmsrsResponseStatus :: Lens' ListXSSMatchSetsResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSetsResponse
instance Data.Data.Data Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSetsResponse
instance GHC.Show.Show Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSetsResponse
instance GHC.Read.Read Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSetsResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSetsResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets
instance Data.Data.Data Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets
instance GHC.Show.Show Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets
instance GHC.Read.Read Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets
instance GHC.Classes.Eq Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSetsResponse
instance Network.AWS.Pager.AWSPager Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets


-- | Returns an array of <a>WebACLSummary</a> objects in the response.
--   
--   This operation returns paginated results.
module Network.AWS.WAF.ListWebACLs

-- | Creates a value of <a>ListWebACLs</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lwaNextMarker</a> - If you specify a value for <tt>Limit</tt>
--   and you have more <tt>WebACL</tt> objects than the number that you
--   specify for <tt>Limit</tt> , AWS WAF returns a <tt>NextMarker</tt>
--   value in the response that allows you to list another group of
--   <tt>WebACL</tt> objects. For the second and subsequent
--   <tt>ListWebACLs</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>WebACL</tt> objects.</li>
--   <li><a>lwaLimit</a> - Specifies the number of <tt>WebACL</tt> objects
--   that you want AWS WAF to return for this request. If you have more
--   <tt>WebACL</tt> objects than the number that you specify for
--   <tt>Limit</tt> , the response includes a <tt>NextMarker</tt> value
--   that you can use to get another batch of <tt>WebACL</tt> objects.</li>
--   </ul>
listWebACLs :: ListWebACLs

-- | <i>See:</i> <a>listWebACLs</a> smart constructor.
data ListWebACLs

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <tt>WebACL</tt> objects than the number that you specify for
--   <tt>Limit</tt> , AWS WAF returns a <tt>NextMarker</tt> value in the
--   response that allows you to list another group of <tt>WebACL</tt>
--   objects. For the second and subsequent <tt>ListWebACLs</tt> requests,
--   specify the value of <tt>NextMarker</tt> from the previous response to
--   get information about another batch of <tt>WebACL</tt> objects.
lwaNextMarker :: Lens' ListWebACLs (Maybe Text)

-- | Specifies the number of <tt>WebACL</tt> objects that you want AWS WAF
--   to return for this request. If you have more <tt>WebACL</tt> objects
--   than the number that you specify for <tt>Limit</tt> , the response
--   includes a <tt>NextMarker</tt> value that you can use to get another
--   batch of <tt>WebACL</tt> objects.
lwaLimit :: Lens' ListWebACLs (Maybe Natural)

-- | Creates a value of <a>ListWebACLsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lwarsWebACLs</a> - An array of <a>WebACLSummary</a>
--   objects.</li>
--   <li><a>lwarsNextMarker</a> - If you have more <tt>WebACL</tt> objects
--   than the number that you specified for <tt>Limit</tt> in the request,
--   the response includes a <tt>NextMarker</tt> value. To list more
--   <tt>WebACL</tt> objects, submit another <tt>ListWebACLs</tt> request,
--   and specify the <tt>NextMarker</tt> value from the response in the
--   <tt>NextMarker</tt> value in the next request.</li>
--   <li><a>lwarsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listWebACLsResponse :: Int -> ListWebACLsResponse

-- | <i>See:</i> <a>listWebACLsResponse</a> smart constructor.
data ListWebACLsResponse

-- | An array of <a>WebACLSummary</a> objects.
lwarsWebACLs :: Lens' ListWebACLsResponse [WebACLSummary]

-- | If you have more <tt>WebACL</tt> objects than the number that you
--   specified for <tt>Limit</tt> in the request, the response includes a
--   <tt>NextMarker</tt> value. To list more <tt>WebACL</tt> objects,
--   submit another <tt>ListWebACLs</tt> request, and specify the
--   <tt>NextMarker</tt> value from the response in the <tt>NextMarker</tt>
--   value in the next request.
lwarsNextMarker :: Lens' ListWebACLsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lwarsResponseStatus :: Lens' ListWebACLsResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListWebACLs.ListWebACLsResponse
instance Data.Data.Data Network.AWS.WAF.ListWebACLs.ListWebACLsResponse
instance GHC.Show.Show Network.AWS.WAF.ListWebACLs.ListWebACLsResponse
instance GHC.Read.Read Network.AWS.WAF.ListWebACLs.ListWebACLsResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListWebACLs.ListWebACLsResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListWebACLs.ListWebACLs
instance Data.Data.Data Network.AWS.WAF.ListWebACLs.ListWebACLs
instance GHC.Show.Show Network.AWS.WAF.ListWebACLs.ListWebACLs
instance GHC.Read.Read Network.AWS.WAF.ListWebACLs.ListWebACLs
instance GHC.Classes.Eq Network.AWS.WAF.ListWebACLs.ListWebACLs
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListWebACLs.ListWebACLs
instance Control.DeepSeq.NFData Network.AWS.WAF.ListWebACLs.ListWebACLsResponse
instance Network.AWS.Pager.AWSPager Network.AWS.WAF.ListWebACLs.ListWebACLs
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListWebACLs.ListWebACLs
instance Control.DeepSeq.NFData Network.AWS.WAF.ListWebACLs.ListWebACLs
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListWebACLs.ListWebACLs
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListWebACLs.ListWebACLs
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListWebACLs.ListWebACLs
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListWebACLs.ListWebACLs


-- | Returns an array of <a>RuleGroup</a> objects that you are subscribed
--   to.
module Network.AWS.WAF.ListSubscribedRuleGroups

-- | Creates a value of <a>ListSubscribedRuleGroups</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsrgNextMarker</a> - If you specify a value for <tt>Limit</tt>
--   and you have more <tt>ByteMatchSets</tt> subscribed rule groups than
--   the value of <tt>Limit</tt> , AWS WAF returns a <tt>NextMarker</tt>
--   value in the response that allows you to list another group of
--   subscribed rule groups. For the second and subsequent
--   <tt>ListSubscribedRuleGroupsRequest</tt> requests, specify the value
--   of <tt>NextMarker</tt> from the previous response to get information
--   about another batch of subscribed rule groups.</li>
--   <li><a>lsrgLimit</a> - Specifies the number of subscribed rule groups
--   that you want AWS WAF to return for this request. If you have more
--   objects than the number you specify for <tt>Limit</tt> , the response
--   includes a <tt>NextMarker</tt> value that you can use to get another
--   batch of objects.</li>
--   </ul>
listSubscribedRuleGroups :: ListSubscribedRuleGroups

-- | <i>See:</i> <a>listSubscribedRuleGroups</a> smart constructor.
data ListSubscribedRuleGroups

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <tt>ByteMatchSets</tt> subscribed rule groups than the value of
--   <tt>Limit</tt> , AWS WAF returns a <tt>NextMarker</tt> value in the
--   response that allows you to list another group of subscribed rule
--   groups. For the second and subsequent
--   <tt>ListSubscribedRuleGroupsRequest</tt> requests, specify the value
--   of <tt>NextMarker</tt> from the previous response to get information
--   about another batch of subscribed rule groups.
lsrgNextMarker :: Lens' ListSubscribedRuleGroups (Maybe Text)

-- | Specifies the number of subscribed rule groups that you want AWS WAF
--   to return for this request. If you have more objects than the number
--   you specify for <tt>Limit</tt> , the response includes a
--   <tt>NextMarker</tt> value that you can use to get another batch of
--   objects.
lsrgLimit :: Lens' ListSubscribedRuleGroups (Maybe Natural)

-- | Creates a value of <a>ListSubscribedRuleGroupsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsrgrsRuleGroups</a> - An array of <a>RuleGroup</a>
--   objects.</li>
--   <li><a>lsrgrsNextMarker</a> - If you have more objects than the number
--   that you specified for <tt>Limit</tt> in the request, the response
--   includes a <tt>NextMarker</tt> value. To list more objects, submit
--   another <tt>ListSubscribedRuleGroups</tt> request, and specify the
--   <tt>NextMarker</tt> value from the response in the <tt>NextMarker</tt>
--   value in the next request.</li>
--   <li><a>lsrgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listSubscribedRuleGroupsResponse :: Int -> ListSubscribedRuleGroupsResponse

-- | <i>See:</i> <a>listSubscribedRuleGroupsResponse</a> smart constructor.
data ListSubscribedRuleGroupsResponse

-- | An array of <a>RuleGroup</a> objects.
lsrgrsRuleGroups :: Lens' ListSubscribedRuleGroupsResponse [SubscribedRuleGroupSummary]

-- | If you have more objects than the number that you specified for
--   <tt>Limit</tt> in the request, the response includes a
--   <tt>NextMarker</tt> value. To list more objects, submit another
--   <tt>ListSubscribedRuleGroups</tt> request, and specify the
--   <tt>NextMarker</tt> value from the response in the <tt>NextMarker</tt>
--   value in the next request.
lsrgrsNextMarker :: Lens' ListSubscribedRuleGroupsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lsrgrsResponseStatus :: Lens' ListSubscribedRuleGroupsResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroupsResponse
instance Data.Data.Data Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroupsResponse
instance GHC.Show.Show Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroupsResponse
instance GHC.Read.Read Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroupsResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroupsResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroups
instance Data.Data.Data Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroups
instance GHC.Show.Show Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroups
instance GHC.Read.Read Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroups
instance GHC.Classes.Eq Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroups
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroups
instance Control.DeepSeq.NFData Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroupsResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroups
instance Control.DeepSeq.NFData Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroups
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroups
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroups
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroups
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListSubscribedRuleGroups.ListSubscribedRuleGroups


-- | Returns an array of <a>SqlInjectionMatchSet</a> objects.
--   
--   This operation returns paginated results.
module Network.AWS.WAF.ListSqlInjectionMatchSets

-- | Creates a value of <a>ListSqlInjectionMatchSets</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsimsNextMarker</a> - If you specify a value for <tt>Limit</tt>
--   and you have more <a>SqlInjectionMatchSet</a> objects than the value
--   of <tt>Limit</tt> , AWS WAF returns a <tt>NextMarker</tt> value in the
--   response that allows you to list another group of
--   <tt>SqlInjectionMatchSets</tt> . For the second and subsequent
--   <tt>ListSqlInjectionMatchSets</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>SqlInjectionMatchSets</tt> .</li>
--   <li><a>lsimsLimit</a> - Specifies the number of
--   <a>SqlInjectionMatchSet</a> objects that you want AWS WAF to return
--   for this request. If you have more <tt>SqlInjectionMatchSet</tt>
--   objects than the number you specify for <tt>Limit</tt> , the response
--   includes a <tt>NextMarker</tt> value that you can use to get another
--   batch of <tt>Rules</tt> .</li>
--   </ul>
listSqlInjectionMatchSets :: ListSqlInjectionMatchSets

-- | A request to list the <a>SqlInjectionMatchSet</a> objects created by
--   the current AWS account.
--   
--   <i>See:</i> <a>listSqlInjectionMatchSets</a> smart constructor.
data ListSqlInjectionMatchSets

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <a>SqlInjectionMatchSet</a> objects than the value of <tt>Limit</tt> ,
--   AWS WAF returns a <tt>NextMarker</tt> value in the response that
--   allows you to list another group of <tt>SqlInjectionMatchSets</tt> .
--   For the second and subsequent <tt>ListSqlInjectionMatchSets</tt>
--   requests, specify the value of <tt>NextMarker</tt> from the previous
--   response to get information about another batch of
--   <tt>SqlInjectionMatchSets</tt> .
lsimsNextMarker :: Lens' ListSqlInjectionMatchSets (Maybe Text)

-- | Specifies the number of <a>SqlInjectionMatchSet</a> objects that you
--   want AWS WAF to return for this request. If you have more
--   <tt>SqlInjectionMatchSet</tt> objects than the number you specify for
--   <tt>Limit</tt> , the response includes a <tt>NextMarker</tt> value
--   that you can use to get another batch of <tt>Rules</tt> .
lsimsLimit :: Lens' ListSqlInjectionMatchSets (Maybe Natural)

-- | Creates a value of <a>ListSqlInjectionMatchSetsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsimsrsNextMarker</a> - If you have more
--   <a>SqlInjectionMatchSet</a> objects than the number that you specified
--   for <tt>Limit</tt> in the request, the response includes a
--   <tt>NextMarker</tt> value. To list more <tt>SqlInjectionMatchSet</tt>
--   objects, submit another <tt>ListSqlInjectionMatchSets</tt> request,
--   and specify the <tt>NextMarker</tt> value from the response in the
--   <tt>NextMarker</tt> value in the next request.</li>
--   <li><a>lsimsrsSqlInjectionMatchSets</a> - An array of
--   <a>SqlInjectionMatchSetSummary</a> objects.</li>
--   <li><a>lsimsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listSqlInjectionMatchSetsResponse :: Int -> ListSqlInjectionMatchSetsResponse

-- | The response to a <a>ListSqlInjectionMatchSets</a> request.
--   
--   <i>See:</i> <a>listSqlInjectionMatchSetsResponse</a> smart
--   constructor.
data ListSqlInjectionMatchSetsResponse

-- | If you have more <a>SqlInjectionMatchSet</a> objects than the number
--   that you specified for <tt>Limit</tt> in the request, the response
--   includes a <tt>NextMarker</tt> value. To list more
--   <tt>SqlInjectionMatchSet</tt> objects, submit another
--   <tt>ListSqlInjectionMatchSets</tt> request, and specify the
--   <tt>NextMarker</tt> value from the response in the <tt>NextMarker</tt>
--   value in the next request.
lsimsrsNextMarker :: Lens' ListSqlInjectionMatchSetsResponse (Maybe Text)

-- | An array of <a>SqlInjectionMatchSetSummary</a> objects.
lsimsrsSqlInjectionMatchSets :: Lens' ListSqlInjectionMatchSetsResponse [SqlInjectionMatchSetSummary]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lsimsrsResponseStatus :: Lens' ListSqlInjectionMatchSetsResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSetsResponse
instance Data.Data.Data Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSetsResponse
instance GHC.Show.Show Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSetsResponse
instance GHC.Read.Read Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSetsResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSetsResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets
instance Data.Data.Data Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets
instance GHC.Show.Show Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets
instance GHC.Read.Read Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets
instance GHC.Classes.Eq Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSetsResponse
instance Network.AWS.Pager.AWSPager Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets


-- | Returns an array of <a>SizeConstraintSetSummary</a> objects.
--   
--   This operation returns paginated results.
module Network.AWS.WAF.ListSizeConstraintSets

-- | Creates a value of <a>ListSizeConstraintSets</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lscsNextMarker</a> - If you specify a value for <tt>Limit</tt>
--   and you have more <tt>SizeConstraintSets</tt> than the value of
--   <tt>Limit</tt> , AWS WAF returns a <tt>NextMarker</tt> value in the
--   response that allows you to list another group of
--   <tt>SizeConstraintSets</tt> . For the second and subsequent
--   <tt>ListSizeConstraintSets</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>SizeConstraintSets</tt> .</li>
--   <li><a>lscsLimit</a> - Specifies the number of
--   <tt>SizeConstraintSet</tt> objects that you want AWS WAF to return for
--   this request. If you have more <tt>SizeConstraintSets</tt> objects
--   than the number you specify for <tt>Limit</tt> , the response includes
--   a <tt>NextMarker</tt> value that you can use to get another batch of
--   <tt>SizeConstraintSet</tt> objects.</li>
--   </ul>
listSizeConstraintSets :: ListSizeConstraintSets

-- | <i>See:</i> <a>listSizeConstraintSets</a> smart constructor.
data ListSizeConstraintSets

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <tt>SizeConstraintSets</tt> than the value of <tt>Limit</tt> , AWS WAF
--   returns a <tt>NextMarker</tt> value in the response that allows you to
--   list another group of <tt>SizeConstraintSets</tt> . For the second and
--   subsequent <tt>ListSizeConstraintSets</tt> requests, specify the value
--   of <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>SizeConstraintSets</tt> .
lscsNextMarker :: Lens' ListSizeConstraintSets (Maybe Text)

-- | Specifies the number of <tt>SizeConstraintSet</tt> objects that you
--   want AWS WAF to return for this request. If you have more
--   <tt>SizeConstraintSets</tt> objects than the number you specify for
--   <tt>Limit</tt> , the response includes a <tt>NextMarker</tt> value
--   that you can use to get another batch of <tt>SizeConstraintSet</tt>
--   objects.
lscsLimit :: Lens' ListSizeConstraintSets (Maybe Natural)

-- | Creates a value of <a>ListSizeConstraintSetsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lscsrsSizeConstraintSets</a> - An array of
--   <a>SizeConstraintSetSummary</a> objects.</li>
--   <li><a>lscsrsNextMarker</a> - If you have more
--   <tt>SizeConstraintSet</tt> objects than the number that you specified
--   for <tt>Limit</tt> in the request, the response includes a
--   <tt>NextMarker</tt> value. To list more <tt>SizeConstraintSet</tt>
--   objects, submit another <tt>ListSizeConstraintSets</tt> request, and
--   specify the <tt>NextMarker</tt> value from the response in the
--   <tt>NextMarker</tt> value in the next request.</li>
--   <li><a>lscsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listSizeConstraintSetsResponse :: Int -> ListSizeConstraintSetsResponse

-- | <i>See:</i> <a>listSizeConstraintSetsResponse</a> smart constructor.
data ListSizeConstraintSetsResponse

-- | An array of <a>SizeConstraintSetSummary</a> objects.
lscsrsSizeConstraintSets :: Lens' ListSizeConstraintSetsResponse [SizeConstraintSetSummary]

-- | If you have more <tt>SizeConstraintSet</tt> objects than the number
--   that you specified for <tt>Limit</tt> in the request, the response
--   includes a <tt>NextMarker</tt> value. To list more
--   <tt>SizeConstraintSet</tt> objects, submit another
--   <tt>ListSizeConstraintSets</tt> request, and specify the
--   <tt>NextMarker</tt> value from the response in the <tt>NextMarker</tt>
--   value in the next request.
lscsrsNextMarker :: Lens' ListSizeConstraintSetsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lscsrsResponseStatus :: Lens' ListSizeConstraintSetsResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSetsResponse
instance Data.Data.Data Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSetsResponse
instance GHC.Show.Show Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSetsResponse
instance GHC.Read.Read Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSetsResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSetsResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets
instance Data.Data.Data Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets
instance GHC.Show.Show Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets
instance GHC.Read.Read Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets
instance GHC.Classes.Eq Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSetsResponse
instance Network.AWS.Pager.AWSPager Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets


-- | Returns an array of <a>RuleSummary</a> objects.
--   
--   This operation returns paginated results.
module Network.AWS.WAF.ListRules

-- | Creates a value of <a>ListRules</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lrNextMarker</a> - If you specify a value for <tt>Limit</tt>
--   and you have more <tt>Rules</tt> than the value of <tt>Limit</tt> ,
--   AWS WAF returns a <tt>NextMarker</tt> value in the response that
--   allows you to list another group of <tt>Rules</tt> . For the second
--   and subsequent <tt>ListRules</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>Rules</tt> .</li>
--   <li><a>lrLimit</a> - Specifies the number of <tt>Rules</tt> that you
--   want AWS WAF to return for this request. If you have more
--   <tt>Rules</tt> than the number that you specify for <tt>Limit</tt> ,
--   the response includes a <tt>NextMarker</tt> value that you can use to
--   get another batch of <tt>Rules</tt> .</li>
--   </ul>
listRules :: ListRules

-- | <i>See:</i> <a>listRules</a> smart constructor.
data ListRules

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <tt>Rules</tt> than the value of <tt>Limit</tt> , AWS WAF returns a
--   <tt>NextMarker</tt> value in the response that allows you to list
--   another group of <tt>Rules</tt> . For the second and subsequent
--   <tt>ListRules</tt> requests, specify the value of <tt>NextMarker</tt>
--   from the previous response to get information about another batch of
--   <tt>Rules</tt> .
lrNextMarker :: Lens' ListRules (Maybe Text)

-- | Specifies the number of <tt>Rules</tt> that you want AWS WAF to return
--   for this request. If you have more <tt>Rules</tt> than the number that
--   you specify for <tt>Limit</tt> , the response includes a
--   <tt>NextMarker</tt> value that you can use to get another batch of
--   <tt>Rules</tt> .
lrLimit :: Lens' ListRules (Maybe Natural)

-- | Creates a value of <a>ListRulesResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lrrsRules</a> - An array of <a>RuleSummary</a> objects.</li>
--   <li><a>lrrsNextMarker</a> - If you have more <tt>Rules</tt> than the
--   number that you specified for <tt>Limit</tt> in the request, the
--   response includes a <tt>NextMarker</tt> value. To list more
--   <tt>Rules</tt> , submit another <tt>ListRules</tt> request, and
--   specify the <tt>NextMarker</tt> value from the response in the
--   <tt>NextMarker</tt> value in the next request.</li>
--   <li><a>lrrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listRulesResponse :: Int -> ListRulesResponse

-- | <i>See:</i> <a>listRulesResponse</a> smart constructor.
data ListRulesResponse

-- | An array of <a>RuleSummary</a> objects.
lrrsRules :: Lens' ListRulesResponse [RuleSummary]

-- | If you have more <tt>Rules</tt> than the number that you specified for
--   <tt>Limit</tt> in the request, the response includes a
--   <tt>NextMarker</tt> value. To list more <tt>Rules</tt> , submit
--   another <tt>ListRules</tt> request, and specify the
--   <tt>NextMarker</tt> value from the response in the <tt>NextMarker</tt>
--   value in the next request.
lrrsNextMarker :: Lens' ListRulesResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lrrsResponseStatus :: Lens' ListRulesResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListRules.ListRulesResponse
instance Data.Data.Data Network.AWS.WAF.ListRules.ListRulesResponse
instance GHC.Show.Show Network.AWS.WAF.ListRules.ListRulesResponse
instance GHC.Read.Read Network.AWS.WAF.ListRules.ListRulesResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListRules.ListRulesResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListRules.ListRules
instance Data.Data.Data Network.AWS.WAF.ListRules.ListRules
instance GHC.Show.Show Network.AWS.WAF.ListRules.ListRules
instance GHC.Read.Read Network.AWS.WAF.ListRules.ListRules
instance GHC.Classes.Eq Network.AWS.WAF.ListRules.ListRules
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListRules.ListRules
instance Control.DeepSeq.NFData Network.AWS.WAF.ListRules.ListRulesResponse
instance Network.AWS.Pager.AWSPager Network.AWS.WAF.ListRules.ListRules
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListRules.ListRules
instance Control.DeepSeq.NFData Network.AWS.WAF.ListRules.ListRules
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListRules.ListRules
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListRules.ListRules
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListRules.ListRules
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListRules.ListRules


-- | Returns an array of <a>RuleGroup</a> objects.
module Network.AWS.WAF.ListRuleGroups

-- | Creates a value of <a>ListRuleGroups</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lrgNextMarker</a> - If you specify a value for <tt>Limit</tt>
--   and you have more <tt>RuleGroups</tt> than the value of <tt>Limit</tt>
--   , AWS WAF returns a <tt>NextMarker</tt> value in the response that
--   allows you to list another group of <tt>RuleGroups</tt> . For the
--   second and subsequent <tt>ListRuleGroups</tt> requests, specify the
--   value of <tt>NextMarker</tt> from the previous response to get
--   information about another batch of <tt>RuleGroups</tt> .</li>
--   <li><a>lrgLimit</a> - Specifies the number of <tt>RuleGroups</tt> that
--   you want AWS WAF to return for this request. If you have more
--   <tt>RuleGroups</tt> than the number that you specify for
--   <tt>Limit</tt> , the response includes a <tt>NextMarker</tt> value
--   that you can use to get another batch of <tt>RuleGroups</tt> .</li>
--   </ul>
listRuleGroups :: ListRuleGroups

-- | <i>See:</i> <a>listRuleGroups</a> smart constructor.
data ListRuleGroups

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <tt>RuleGroups</tt> than the value of <tt>Limit</tt> , AWS WAF returns
--   a <tt>NextMarker</tt> value in the response that allows you to list
--   another group of <tt>RuleGroups</tt> . For the second and subsequent
--   <tt>ListRuleGroups</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>RuleGroups</tt> .
lrgNextMarker :: Lens' ListRuleGroups (Maybe Text)

-- | Specifies the number of <tt>RuleGroups</tt> that you want AWS WAF to
--   return for this request. If you have more <tt>RuleGroups</tt> than the
--   number that you specify for <tt>Limit</tt> , the response includes a
--   <tt>NextMarker</tt> value that you can use to get another batch of
--   <tt>RuleGroups</tt> .
lrgLimit :: Lens' ListRuleGroups (Maybe Natural)

-- | Creates a value of <a>ListRuleGroupsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lrgrsRuleGroups</a> - An array of <a>RuleGroup</a>
--   objects.</li>
--   <li><a>lrgrsNextMarker</a> - If you have more <tt>RuleGroups</tt> than
--   the number that you specified for <tt>Limit</tt> in the request, the
--   response includes a <tt>NextMarker</tt> value. To list more
--   <tt>RuleGroups</tt> , submit another <tt>ListRuleGroups</tt> request,
--   and specify the <tt>NextMarker</tt> value from the response in the
--   <tt>NextMarker</tt> value in the next request.</li>
--   <li><a>lrgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listRuleGroupsResponse :: Int -> ListRuleGroupsResponse

-- | <i>See:</i> <a>listRuleGroupsResponse</a> smart constructor.
data ListRuleGroupsResponse

-- | An array of <a>RuleGroup</a> objects.
lrgrsRuleGroups :: Lens' ListRuleGroupsResponse [RuleGroupSummary]

-- | If you have more <tt>RuleGroups</tt> than the number that you
--   specified for <tt>Limit</tt> in the request, the response includes a
--   <tt>NextMarker</tt> value. To list more <tt>RuleGroups</tt> , submit
--   another <tt>ListRuleGroups</tt> request, and specify the
--   <tt>NextMarker</tt> value from the response in the <tt>NextMarker</tt>
--   value in the next request.
lrgrsNextMarker :: Lens' ListRuleGroupsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lrgrsResponseStatus :: Lens' ListRuleGroupsResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListRuleGroups.ListRuleGroupsResponse
instance Data.Data.Data Network.AWS.WAF.ListRuleGroups.ListRuleGroupsResponse
instance GHC.Show.Show Network.AWS.WAF.ListRuleGroups.ListRuleGroupsResponse
instance GHC.Read.Read Network.AWS.WAF.ListRuleGroups.ListRuleGroupsResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListRuleGroups.ListRuleGroupsResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListRuleGroups.ListRuleGroups
instance Data.Data.Data Network.AWS.WAF.ListRuleGroups.ListRuleGroups
instance GHC.Show.Show Network.AWS.WAF.ListRuleGroups.ListRuleGroups
instance GHC.Read.Read Network.AWS.WAF.ListRuleGroups.ListRuleGroups
instance GHC.Classes.Eq Network.AWS.WAF.ListRuleGroups.ListRuleGroups
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListRuleGroups.ListRuleGroups
instance Control.DeepSeq.NFData Network.AWS.WAF.ListRuleGroups.ListRuleGroupsResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListRuleGroups.ListRuleGroups
instance Control.DeepSeq.NFData Network.AWS.WAF.ListRuleGroups.ListRuleGroups
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListRuleGroups.ListRuleGroups
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListRuleGroups.ListRuleGroups
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListRuleGroups.ListRuleGroups
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListRuleGroups.ListRuleGroups


-- | Returns an array of <a>RegexPatternSetSummary</a> objects.
module Network.AWS.WAF.ListRegexPatternSets

-- | Creates a value of <a>ListRegexPatternSets</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lrpsNextMarker</a> - If you specify a value for <tt>Limit</tt>
--   and you have more <tt>RegexPatternSet</tt> objects than the value of
--   <tt>Limit</tt> , AWS WAF returns a <tt>NextMarker</tt> value in the
--   response that allows you to list another group of
--   <tt>RegexPatternSet</tt> objects. For the second and subsequent
--   <tt>ListRegexPatternSets</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>RegexPatternSet</tt> objects.</li>
--   <li><a>lrpsLimit</a> - Specifies the number of
--   <tt>RegexPatternSet</tt> objects that you want AWS WAF to return for
--   this request. If you have more <tt>RegexPatternSet</tt> objects than
--   the number you specify for <tt>Limit</tt> , the response includes a
--   <tt>NextMarker</tt> value that you can use to get another batch of
--   <tt>RegexPatternSet</tt> objects.</li>
--   </ul>
listRegexPatternSets :: ListRegexPatternSets

-- | <i>See:</i> <a>listRegexPatternSets</a> smart constructor.
data ListRegexPatternSets

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <tt>RegexPatternSet</tt> objects than the value of <tt>Limit</tt> ,
--   AWS WAF returns a <tt>NextMarker</tt> value in the response that
--   allows you to list another group of <tt>RegexPatternSet</tt> objects.
--   For the second and subsequent <tt>ListRegexPatternSets</tt> requests,
--   specify the value of <tt>NextMarker</tt> from the previous response to
--   get information about another batch of <tt>RegexPatternSet</tt>
--   objects.
lrpsNextMarker :: Lens' ListRegexPatternSets (Maybe Text)

-- | Specifies the number of <tt>RegexPatternSet</tt> objects that you want
--   AWS WAF to return for this request. If you have more
--   <tt>RegexPatternSet</tt> objects than the number you specify for
--   <tt>Limit</tt> , the response includes a <tt>NextMarker</tt> value
--   that you can use to get another batch of <tt>RegexPatternSet</tt>
--   objects.
lrpsLimit :: Lens' ListRegexPatternSets (Maybe Natural)

-- | Creates a value of <a>ListRegexPatternSetsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lrpsrsRegexPatternSets</a> - An array of
--   <a>RegexPatternSetSummary</a> objects.</li>
--   <li><a>lrpsrsNextMarker</a> - If you have more
--   <tt>RegexPatternSet</tt> objects than the number that you specified
--   for <tt>Limit</tt> in the request, the response includes a
--   <tt>NextMarker</tt> value. To list more <tt>RegexPatternSet</tt>
--   objects, submit another <tt>ListRegexPatternSets</tt> request, and
--   specify the <tt>NextMarker</tt> value from the response in the
--   <tt>NextMarker</tt> value in the next request.</li>
--   <li><a>lrpsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listRegexPatternSetsResponse :: Int -> ListRegexPatternSetsResponse

-- | <i>See:</i> <a>listRegexPatternSetsResponse</a> smart constructor.
data ListRegexPatternSetsResponse

-- | An array of <a>RegexPatternSetSummary</a> objects.
lrpsrsRegexPatternSets :: Lens' ListRegexPatternSetsResponse [RegexPatternSetSummary]

-- | If you have more <tt>RegexPatternSet</tt> objects than the number that
--   you specified for <tt>Limit</tt> in the request, the response includes
--   a <tt>NextMarker</tt> value. To list more <tt>RegexPatternSet</tt>
--   objects, submit another <tt>ListRegexPatternSets</tt> request, and
--   specify the <tt>NextMarker</tt> value from the response in the
--   <tt>NextMarker</tt> value in the next request.
lrpsrsNextMarker :: Lens' ListRegexPatternSetsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lrpsrsResponseStatus :: Lens' ListRegexPatternSetsResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSetsResponse
instance Data.Data.Data Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSetsResponse
instance GHC.Show.Show Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSetsResponse
instance GHC.Read.Read Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSetsResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSetsResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSets
instance Data.Data.Data Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSets
instance GHC.Show.Show Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSets
instance GHC.Read.Read Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSets
instance GHC.Classes.Eq Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSets
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSetsResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSets
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSets
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSets
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSets
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListRegexPatternSets.ListRegexPatternSets


-- | Returns an array of <a>RegexMatchSetSummary</a> objects.
module Network.AWS.WAF.ListRegexMatchSets

-- | Creates a value of <a>ListRegexMatchSets</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lrmsNextMarker</a> - If you specify a value for <tt>Limit</tt>
--   and you have more <tt>RegexMatchSet</tt> objects than the value of
--   <tt>Limit</tt> , AWS WAF returns a <tt>NextMarker</tt> value in the
--   response that allows you to list another group of
--   <tt>ByteMatchSets</tt> . For the second and subsequent
--   <tt>ListRegexMatchSets</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>RegexMatchSet</tt> objects.</li>
--   <li><a>lrmsLimit</a> - Specifies the number of <tt>RegexMatchSet</tt>
--   objects that you want AWS WAF to return for this request. If you have
--   more <tt>RegexMatchSet</tt> objects than the number you specify for
--   <tt>Limit</tt> , the response includes a <tt>NextMarker</tt> value
--   that you can use to get another batch of <tt>RegexMatchSet</tt>
--   objects.</li>
--   </ul>
listRegexMatchSets :: ListRegexMatchSets

-- | <i>See:</i> <a>listRegexMatchSets</a> smart constructor.
data ListRegexMatchSets

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <tt>RegexMatchSet</tt> objects than the value of <tt>Limit</tt> , AWS
--   WAF returns a <tt>NextMarker</tt> value in the response that allows
--   you to list another group of <tt>ByteMatchSets</tt> . For the second
--   and subsequent <tt>ListRegexMatchSets</tt> requests, specify the value
--   of <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>RegexMatchSet</tt> objects.
lrmsNextMarker :: Lens' ListRegexMatchSets (Maybe Text)

-- | Specifies the number of <tt>RegexMatchSet</tt> objects that you want
--   AWS WAF to return for this request. If you have more
--   <tt>RegexMatchSet</tt> objects than the number you specify for
--   <tt>Limit</tt> , the response includes a <tt>NextMarker</tt> value
--   that you can use to get another batch of <tt>RegexMatchSet</tt>
--   objects.
lrmsLimit :: Lens' ListRegexMatchSets (Maybe Natural)

-- | Creates a value of <a>ListRegexMatchSetsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lrmsrsRegexMatchSets</a> - An array of
--   <a>RegexMatchSetSummary</a> objects.</li>
--   <li><a>lrmsrsNextMarker</a> - If you have more <tt>RegexMatchSet</tt>
--   objects than the number that you specified for <tt>Limit</tt> in the
--   request, the response includes a <tt>NextMarker</tt> value. To list
--   more <tt>RegexMatchSet</tt> objects, submit another
--   <tt>ListRegexMatchSets</tt> request, and specify the
--   <tt>NextMarker</tt> value from the response in the <tt>NextMarker</tt>
--   value in the next request.</li>
--   <li><a>lrmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listRegexMatchSetsResponse :: Int -> ListRegexMatchSetsResponse

-- | <i>See:</i> <a>listRegexMatchSetsResponse</a> smart constructor.
data ListRegexMatchSetsResponse

-- | An array of <a>RegexMatchSetSummary</a> objects.
lrmsrsRegexMatchSets :: Lens' ListRegexMatchSetsResponse [RegexMatchSetSummary]

-- | If you have more <tt>RegexMatchSet</tt> objects than the number that
--   you specified for <tt>Limit</tt> in the request, the response includes
--   a <tt>NextMarker</tt> value. To list more <tt>RegexMatchSet</tt>
--   objects, submit another <tt>ListRegexMatchSets</tt> request, and
--   specify the <tt>NextMarker</tt> value from the response in the
--   <tt>NextMarker</tt> value in the next request.
lrmsrsNextMarker :: Lens' ListRegexMatchSetsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lrmsrsResponseStatus :: Lens' ListRegexMatchSetsResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSetsResponse
instance Data.Data.Data Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSetsResponse
instance GHC.Show.Show Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSetsResponse
instance GHC.Read.Read Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSetsResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSetsResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSets
instance Data.Data.Data Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSets
instance GHC.Show.Show Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSets
instance GHC.Read.Read Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSets
instance GHC.Classes.Eq Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSets
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSetsResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSets
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSets
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSets
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSets
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListRegexMatchSets.ListRegexMatchSets


-- | Returns an array of <a>RuleSummary</a> objects.
module Network.AWS.WAF.ListRateBasedRules

-- | Creates a value of <a>ListRateBasedRules</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lrbrNextMarker</a> - If you specify a value for <tt>Limit</tt>
--   and you have more <tt>Rules</tt> than the value of <tt>Limit</tt> ,
--   AWS WAF returns a <tt>NextMarker</tt> value in the response that
--   allows you to list another group of <tt>Rules</tt> . For the second
--   and subsequent <tt>ListRateBasedRules</tt> requests, specify the value
--   of <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>Rules</tt> .</li>
--   <li><a>lrbrLimit</a> - Specifies the number of <tt>Rules</tt> that you
--   want AWS WAF to return for this request. If you have more
--   <tt>Rules</tt> than the number that you specify for <tt>Limit</tt> ,
--   the response includes a <tt>NextMarker</tt> value that you can use to
--   get another batch of <tt>Rules</tt> .</li>
--   </ul>
listRateBasedRules :: ListRateBasedRules

-- | <i>See:</i> <a>listRateBasedRules</a> smart constructor.
data ListRateBasedRules

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <tt>Rules</tt> than the value of <tt>Limit</tt> , AWS WAF returns a
--   <tt>NextMarker</tt> value in the response that allows you to list
--   another group of <tt>Rules</tt> . For the second and subsequent
--   <tt>ListRateBasedRules</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>Rules</tt> .
lrbrNextMarker :: Lens' ListRateBasedRules (Maybe Text)

-- | Specifies the number of <tt>Rules</tt> that you want AWS WAF to return
--   for this request. If you have more <tt>Rules</tt> than the number that
--   you specify for <tt>Limit</tt> , the response includes a
--   <tt>NextMarker</tt> value that you can use to get another batch of
--   <tt>Rules</tt> .
lrbrLimit :: Lens' ListRateBasedRules (Maybe Natural)

-- | Creates a value of <a>ListRateBasedRulesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lrbrrsRules</a> - An array of <a>RuleSummary</a> objects.</li>
--   <li><a>lrbrrsNextMarker</a> - If you have more <tt>Rules</tt> than the
--   number that you specified for <tt>Limit</tt> in the request, the
--   response includes a <tt>NextMarker</tt> value. To list more
--   <tt>Rules</tt> , submit another <tt>ListRateBasedRules</tt> request,
--   and specify the <tt>NextMarker</tt> value from the response in the
--   <tt>NextMarker</tt> value in the next request.</li>
--   <li><a>lrbrrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listRateBasedRulesResponse :: Int -> ListRateBasedRulesResponse

-- | <i>See:</i> <a>listRateBasedRulesResponse</a> smart constructor.
data ListRateBasedRulesResponse

-- | An array of <a>RuleSummary</a> objects.
lrbrrsRules :: Lens' ListRateBasedRulesResponse [RuleSummary]

-- | If you have more <tt>Rules</tt> than the number that you specified for
--   <tt>Limit</tt> in the request, the response includes a
--   <tt>NextMarker</tt> value. To list more <tt>Rules</tt> , submit
--   another <tt>ListRateBasedRules</tt> request, and specify the
--   <tt>NextMarker</tt> value from the response in the <tt>NextMarker</tt>
--   value in the next request.
lrbrrsNextMarker :: Lens' ListRateBasedRulesResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lrbrrsResponseStatus :: Lens' ListRateBasedRulesResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListRateBasedRules.ListRateBasedRulesResponse
instance Data.Data.Data Network.AWS.WAF.ListRateBasedRules.ListRateBasedRulesResponse
instance GHC.Show.Show Network.AWS.WAF.ListRateBasedRules.ListRateBasedRulesResponse
instance GHC.Read.Read Network.AWS.WAF.ListRateBasedRules.ListRateBasedRulesResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListRateBasedRules.ListRateBasedRulesResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListRateBasedRules.ListRateBasedRules
instance Data.Data.Data Network.AWS.WAF.ListRateBasedRules.ListRateBasedRules
instance GHC.Show.Show Network.AWS.WAF.ListRateBasedRules.ListRateBasedRules
instance GHC.Read.Read Network.AWS.WAF.ListRateBasedRules.ListRateBasedRules
instance GHC.Classes.Eq Network.AWS.WAF.ListRateBasedRules.ListRateBasedRules
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListRateBasedRules.ListRateBasedRules
instance Control.DeepSeq.NFData Network.AWS.WAF.ListRateBasedRules.ListRateBasedRulesResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListRateBasedRules.ListRateBasedRules
instance Control.DeepSeq.NFData Network.AWS.WAF.ListRateBasedRules.ListRateBasedRules
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListRateBasedRules.ListRateBasedRules
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListRateBasedRules.ListRateBasedRules
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListRateBasedRules.ListRateBasedRules
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListRateBasedRules.ListRateBasedRules


-- | Returns an array of <a>IPSetSummary</a> objects in the response.
--   
--   This operation returns paginated results.
module Network.AWS.WAF.ListIPSets

-- | Creates a value of <a>ListIPSets</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lisNextMarker</a> - If you specify a value for <tt>Limit</tt>
--   and you have more <tt>IPSets</tt> than the value of <tt>Limit</tt> ,
--   AWS WAF returns a <tt>NextMarker</tt> value in the response that
--   allows you to list another group of <tt>IPSets</tt> . For the second
--   and subsequent <tt>ListIPSets</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>IPSets</tt> .</li>
--   <li><a>lisLimit</a> - Specifies the number of <tt>IPSet</tt> objects
--   that you want AWS WAF to return for this request. If you have more
--   <tt>IPSet</tt> objects than the number you specify for <tt>Limit</tt>
--   , the response includes a <tt>NextMarker</tt> value that you can use
--   to get another batch of <tt>IPSet</tt> objects.</li>
--   </ul>
listIPSets :: ListIPSets

-- | <i>See:</i> <a>listIPSets</a> smart constructor.
data ListIPSets

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <tt>IPSets</tt> than the value of <tt>Limit</tt> , AWS WAF returns a
--   <tt>NextMarker</tt> value in the response that allows you to list
--   another group of <tt>IPSets</tt> . For the second and subsequent
--   <tt>ListIPSets</tt> requests, specify the value of <tt>NextMarker</tt>
--   from the previous response to get information about another batch of
--   <tt>IPSets</tt> .
lisNextMarker :: Lens' ListIPSets (Maybe Text)

-- | Specifies the number of <tt>IPSet</tt> objects that you want AWS WAF
--   to return for this request. If you have more <tt>IPSet</tt> objects
--   than the number you specify for <tt>Limit</tt> , the response includes
--   a <tt>NextMarker</tt> value that you can use to get another batch of
--   <tt>IPSet</tt> objects.
lisLimit :: Lens' ListIPSets (Maybe Natural)

-- | Creates a value of <a>ListIPSetsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lisrsNextMarker</a> - If you have more <tt>IPSet</tt> objects
--   than the number that you specified for <tt>Limit</tt> in the request,
--   the response includes a <tt>NextMarker</tt> value. To list more
--   <tt>IPSet</tt> objects, submit another <tt>ListIPSets</tt> request,
--   and specify the <tt>NextMarker</tt> value from the response in the
--   <tt>NextMarker</tt> value in the next request.</li>
--   <li><a>lisrsIPSets</a> - An array of <a>IPSetSummary</a> objects.</li>
--   <li><a>lisrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listIPSetsResponse :: Int -> ListIPSetsResponse

-- | <i>See:</i> <a>listIPSetsResponse</a> smart constructor.
data ListIPSetsResponse

-- | If you have more <tt>IPSet</tt> objects than the number that you
--   specified for <tt>Limit</tt> in the request, the response includes a
--   <tt>NextMarker</tt> value. To list more <tt>IPSet</tt> objects, submit
--   another <tt>ListIPSets</tt> request, and specify the
--   <tt>NextMarker</tt> value from the response in the <tt>NextMarker</tt>
--   value in the next request.
lisrsNextMarker :: Lens' ListIPSetsResponse (Maybe Text)

-- | An array of <a>IPSetSummary</a> objects.
lisrsIPSets :: Lens' ListIPSetsResponse [IPSetSummary]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lisrsResponseStatus :: Lens' ListIPSetsResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListIPSets.ListIPSetsResponse
instance Data.Data.Data Network.AWS.WAF.ListIPSets.ListIPSetsResponse
instance GHC.Show.Show Network.AWS.WAF.ListIPSets.ListIPSetsResponse
instance GHC.Read.Read Network.AWS.WAF.ListIPSets.ListIPSetsResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListIPSets.ListIPSetsResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListIPSets.ListIPSets
instance Data.Data.Data Network.AWS.WAF.ListIPSets.ListIPSets
instance GHC.Show.Show Network.AWS.WAF.ListIPSets.ListIPSets
instance GHC.Read.Read Network.AWS.WAF.ListIPSets.ListIPSets
instance GHC.Classes.Eq Network.AWS.WAF.ListIPSets.ListIPSets
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListIPSets.ListIPSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListIPSets.ListIPSetsResponse
instance Network.AWS.Pager.AWSPager Network.AWS.WAF.ListIPSets.ListIPSets
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListIPSets.ListIPSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListIPSets.ListIPSets
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListIPSets.ListIPSets
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListIPSets.ListIPSets
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListIPSets.ListIPSets
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListIPSets.ListIPSets


-- | Returns an array of <a>GeoMatchSetSummary</a> objects in the response.
module Network.AWS.WAF.ListGeoMatchSets

-- | Creates a value of <a>ListGeoMatchSets</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lgmsNextMarker</a> - If you specify a value for <tt>Limit</tt>
--   and you have more <tt>GeoMatchSet</tt> s than the value of
--   <tt>Limit</tt> , AWS WAF returns a <tt>NextMarker</tt> value in the
--   response that allows you to list another group of <tt>GeoMatchSet</tt>
--   objects. For the second and subsequent <tt>ListGeoMatchSets</tt>
--   requests, specify the value of <tt>NextMarker</tt> from the previous
--   response to get information about another batch of
--   <tt>GeoMatchSet</tt> objects.</li>
--   <li><a>lgmsLimit</a> - Specifies the number of <tt>GeoMatchSet</tt>
--   objects that you want AWS WAF to return for this request. If you have
--   more <tt>GeoMatchSet</tt> objects than the number you specify for
--   <tt>Limit</tt> , the response includes a <tt>NextMarker</tt> value
--   that you can use to get another batch of <tt>GeoMatchSet</tt>
--   objects.</li>
--   </ul>
listGeoMatchSets :: ListGeoMatchSets

-- | <i>See:</i> <a>listGeoMatchSets</a> smart constructor.
data ListGeoMatchSets

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <tt>GeoMatchSet</tt> s than the value of <tt>Limit</tt> , AWS WAF
--   returns a <tt>NextMarker</tt> value in the response that allows you to
--   list another group of <tt>GeoMatchSet</tt> objects. For the second and
--   subsequent <tt>ListGeoMatchSets</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>GeoMatchSet</tt> objects.
lgmsNextMarker :: Lens' ListGeoMatchSets (Maybe Text)

-- | Specifies the number of <tt>GeoMatchSet</tt> objects that you want AWS
--   WAF to return for this request. If you have more <tt>GeoMatchSet</tt>
--   objects than the number you specify for <tt>Limit</tt> , the response
--   includes a <tt>NextMarker</tt> value that you can use to get another
--   batch of <tt>GeoMatchSet</tt> objects.
lgmsLimit :: Lens' ListGeoMatchSets (Maybe Natural)

-- | Creates a value of <a>ListGeoMatchSetsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lgmsrsGeoMatchSets</a> - An array of <a>GeoMatchSetSummary</a>
--   objects.</li>
--   <li><a>lgmsrsNextMarker</a> - If you have more <tt>GeoMatchSet</tt>
--   objects than the number that you specified for <tt>Limit</tt> in the
--   request, the response includes a <tt>NextMarker</tt> value. To list
--   more <tt>GeoMatchSet</tt> objects, submit another
--   <tt>ListGeoMatchSets</tt> request, and specify the <tt>NextMarker</tt>
--   value from the response in the <tt>NextMarker</tt> value in the next
--   request.</li>
--   <li><a>lgmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listGeoMatchSetsResponse :: Int -> ListGeoMatchSetsResponse

-- | <i>See:</i> <a>listGeoMatchSetsResponse</a> smart constructor.
data ListGeoMatchSetsResponse

-- | An array of <a>GeoMatchSetSummary</a> objects.
lgmsrsGeoMatchSets :: Lens' ListGeoMatchSetsResponse [GeoMatchSetSummary]

-- | If you have more <tt>GeoMatchSet</tt> objects than the number that you
--   specified for <tt>Limit</tt> in the request, the response includes a
--   <tt>NextMarker</tt> value. To list more <tt>GeoMatchSet</tt> objects,
--   submit another <tt>ListGeoMatchSets</tt> request, and specify the
--   <tt>NextMarker</tt> value from the response in the <tt>NextMarker</tt>
--   value in the next request.
lgmsrsNextMarker :: Lens' ListGeoMatchSetsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lgmsrsResponseStatus :: Lens' ListGeoMatchSetsResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSetsResponse
instance Data.Data.Data Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSetsResponse
instance GHC.Show.Show Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSetsResponse
instance GHC.Read.Read Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSetsResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSetsResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSets
instance Data.Data.Data Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSets
instance GHC.Show.Show Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSets
instance GHC.Read.Read Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSets
instance GHC.Classes.Eq Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSets
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSetsResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSets
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSets
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSets
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSets
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListGeoMatchSets.ListGeoMatchSets


-- | Returns an array of <a>ByteMatchSetSummary</a> objects.
--   
--   This operation returns paginated results.
module Network.AWS.WAF.ListByteMatchSets

-- | Creates a value of <a>ListByteMatchSets</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbmsNextMarker</a> - If you specify a value for <tt>Limit</tt>
--   and you have more <tt>ByteMatchSets</tt> than the value of
--   <tt>Limit</tt> , AWS WAF returns a <tt>NextMarker</tt> value in the
--   response that allows you to list another group of
--   <tt>ByteMatchSets</tt> . For the second and subsequent
--   <tt>ListByteMatchSets</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>ByteMatchSets</tt> .</li>
--   <li><a>lbmsLimit</a> - Specifies the number of <tt>ByteMatchSet</tt>
--   objects that you want AWS WAF to return for this request. If you have
--   more <tt>ByteMatchSets</tt> objects than the number you specify for
--   <tt>Limit</tt> , the response includes a <tt>NextMarker</tt> value
--   that you can use to get another batch of <tt>ByteMatchSet</tt>
--   objects.</li>
--   </ul>
listByteMatchSets :: ListByteMatchSets

-- | <i>See:</i> <a>listByteMatchSets</a> smart constructor.
data ListByteMatchSets

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <tt>ByteMatchSets</tt> than the value of <tt>Limit</tt> , AWS WAF
--   returns a <tt>NextMarker</tt> value in the response that allows you to
--   list another group of <tt>ByteMatchSets</tt> . For the second and
--   subsequent <tt>ListByteMatchSets</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>ByteMatchSets</tt> .
lbmsNextMarker :: Lens' ListByteMatchSets (Maybe Text)

-- | Specifies the number of <tt>ByteMatchSet</tt> objects that you want
--   AWS WAF to return for this request. If you have more
--   <tt>ByteMatchSets</tt> objects than the number you specify for
--   <tt>Limit</tt> , the response includes a <tt>NextMarker</tt> value
--   that you can use to get another batch of <tt>ByteMatchSet</tt>
--   objects.
lbmsLimit :: Lens' ListByteMatchSets (Maybe Natural)

-- | Creates a value of <a>ListByteMatchSetsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbmsrsByteMatchSets</a> - An array of
--   <a>ByteMatchSetSummary</a> objects.</li>
--   <li><a>lbmsrsNextMarker</a> - If you have more <tt>ByteMatchSet</tt>
--   objects than the number that you specified for <tt>Limit</tt> in the
--   request, the response includes a <tt>NextMarker</tt> value. To list
--   more <tt>ByteMatchSet</tt> objects, submit another
--   <tt>ListByteMatchSets</tt> request, and specify the
--   <tt>NextMarker</tt> value from the response in the <tt>NextMarker</tt>
--   value in the next request.</li>
--   <li><a>lbmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listByteMatchSetsResponse :: Int -> ListByteMatchSetsResponse

-- | <i>See:</i> <a>listByteMatchSetsResponse</a> smart constructor.
data ListByteMatchSetsResponse

-- | An array of <a>ByteMatchSetSummary</a> objects.
lbmsrsByteMatchSets :: Lens' ListByteMatchSetsResponse [ByteMatchSetSummary]

-- | If you have more <tt>ByteMatchSet</tt> objects than the number that
--   you specified for <tt>Limit</tt> in the request, the response includes
--   a <tt>NextMarker</tt> value. To list more <tt>ByteMatchSet</tt>
--   objects, submit another <tt>ListByteMatchSets</tt> request, and
--   specify the <tt>NextMarker</tt> value from the response in the
--   <tt>NextMarker</tt> value in the next request.
lbmsrsNextMarker :: Lens' ListByteMatchSetsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lbmsrsResponseStatus :: Lens' ListByteMatchSetsResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListByteMatchSets.ListByteMatchSetsResponse
instance Data.Data.Data Network.AWS.WAF.ListByteMatchSets.ListByteMatchSetsResponse
instance GHC.Show.Show Network.AWS.WAF.ListByteMatchSets.ListByteMatchSetsResponse
instance GHC.Read.Read Network.AWS.WAF.ListByteMatchSets.ListByteMatchSetsResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListByteMatchSets.ListByteMatchSetsResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets
instance Data.Data.Data Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets
instance GHC.Show.Show Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets
instance GHC.Read.Read Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets
instance GHC.Classes.Eq Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListByteMatchSets.ListByteMatchSetsResponse
instance Network.AWS.Pager.AWSPager Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets
instance Control.DeepSeq.NFData Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets


-- | Returns an array of <a>ActivatedRule</a> objects.
module Network.AWS.WAF.ListActivatedRulesInRuleGroup

-- | Creates a value of <a>ListActivatedRulesInRuleGroup</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>larirgRuleGroupId</a> - The <tt>RuleGroupId</tt> of the
--   <a>RuleGroup</a> for which you want to get a list of
--   <a>ActivatedRule</a> objects.</li>
--   <li><a>larirgNextMarker</a> - If you specify a value for
--   <tt>Limit</tt> and you have more <tt>ActivatedRules</tt> than the
--   value of <tt>Limit</tt> , AWS WAF returns a <tt>NextMarker</tt> value
--   in the response that allows you to list another group of
--   <tt>ActivatedRules</tt> . For the second and subsequent
--   <tt>ListActivatedRulesInRuleGroup</tt> requests, specify the value of
--   <tt>NextMarker</tt> from the previous response to get information
--   about another batch of <tt>ActivatedRules</tt> .</li>
--   <li><a>larirgLimit</a> - Specifies the number of
--   <tt>ActivatedRules</tt> that you want AWS WAF to return for this
--   request. If you have more <tt>ActivatedRules</tt> than the number that
--   you specify for <tt>Limit</tt> , the response includes a
--   <tt>NextMarker</tt> value that you can use to get another batch of
--   <tt>ActivatedRules</tt> .</li>
--   </ul>
listActivatedRulesInRuleGroup :: ListActivatedRulesInRuleGroup

-- | <i>See:</i> <a>listActivatedRulesInRuleGroup</a> smart constructor.
data ListActivatedRulesInRuleGroup

-- | The <tt>RuleGroupId</tt> of the <a>RuleGroup</a> for which you want to
--   get a list of <a>ActivatedRule</a> objects.
larirgRuleGroupId :: Lens' ListActivatedRulesInRuleGroup (Maybe Text)

-- | If you specify a value for <tt>Limit</tt> and you have more
--   <tt>ActivatedRules</tt> than the value of <tt>Limit</tt> , AWS WAF
--   returns a <tt>NextMarker</tt> value in the response that allows you to
--   list another group of <tt>ActivatedRules</tt> . For the second and
--   subsequent <tt>ListActivatedRulesInRuleGroup</tt> requests, specify
--   the value of <tt>NextMarker</tt> from the previous response to get
--   information about another batch of <tt>ActivatedRules</tt> .
larirgNextMarker :: Lens' ListActivatedRulesInRuleGroup (Maybe Text)

-- | Specifies the number of <tt>ActivatedRules</tt> that you want AWS WAF
--   to return for this request. If you have more <tt>ActivatedRules</tt>
--   than the number that you specify for <tt>Limit</tt> , the response
--   includes a <tt>NextMarker</tt> value that you can use to get another
--   batch of <tt>ActivatedRules</tt> .
larirgLimit :: Lens' ListActivatedRulesInRuleGroup (Maybe Natural)

-- | Creates a value of <a>ListActivatedRulesInRuleGroupResponse</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>larirgrsNextMarker</a> - If you have more
--   <tt>ActivatedRules</tt> than the number that you specified for
--   <tt>Limit</tt> in the request, the response includes a
--   <tt>NextMarker</tt> value. To list more <tt>ActivatedRules</tt> ,
--   submit another <tt>ListActivatedRulesInRuleGroup</tt> request, and
--   specify the <tt>NextMarker</tt> value from the response in the
--   <tt>NextMarker</tt> value in the next request.</li>
--   <li><a>larirgrsActivatedRules</a> - An array of
--   <tt>ActivatedRules</tt> objects.</li>
--   <li><a>larirgrsResponseStatus</a> - -- | The response status
--   code.</li>
--   </ul>
listActivatedRulesInRuleGroupResponse :: Int -> ListActivatedRulesInRuleGroupResponse

-- | <i>See:</i> <a>listActivatedRulesInRuleGroupResponse</a> smart
--   constructor.
data ListActivatedRulesInRuleGroupResponse

-- | If you have more <tt>ActivatedRules</tt> than the number that you
--   specified for <tt>Limit</tt> in the request, the response includes a
--   <tt>NextMarker</tt> value. To list more <tt>ActivatedRules</tt> ,
--   submit another <tt>ListActivatedRulesInRuleGroup</tt> request, and
--   specify the <tt>NextMarker</tt> value from the response in the
--   <tt>NextMarker</tt> value in the next request.
larirgrsNextMarker :: Lens' ListActivatedRulesInRuleGroupResponse (Maybe Text)

-- | An array of <tt>ActivatedRules</tt> objects.
larirgrsActivatedRules :: Lens' ListActivatedRulesInRuleGroupResponse [ActivatedRule]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
larirgrsResponseStatus :: Lens' ListActivatedRulesInRuleGroupResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroupResponse
instance Data.Data.Data Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroupResponse
instance GHC.Show.Show Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroupResponse
instance GHC.Read.Read Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroupResponse
instance GHC.Classes.Eq Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroupResponse
instance GHC.Generics.Generic Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroup
instance Data.Data.Data Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroup
instance GHC.Show.Show Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroup
instance GHC.Read.Read Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroup
instance GHC.Classes.Eq Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroup
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroup
instance Control.DeepSeq.NFData Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroupResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroup
instance Control.DeepSeq.NFData Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroup
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.ListActivatedRulesInRuleGroup.ListActivatedRulesInRuleGroup


-- | Returns the <tt>XssMatchSet</tt> that is specified by
--   <tt>XssMatchSetId</tt> .
module Network.AWS.WAF.GetXSSMatchSet

-- | Creates a value of <a>GetXSSMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gxmsXSSMatchSetId</a> - The <tt>XssMatchSetId</tt> of the
--   <tt>XssMatchSet</tt> that you want to get. <tt>XssMatchSetId</tt> is
--   returned by <tt>CreateXssMatchSet</tt> and by
--   <tt>ListXssMatchSets</tt> .</li>
--   </ul>
getXSSMatchSet :: Text -> GetXSSMatchSet

-- | A request to get an <tt>XssMatchSet</tt> .
--   
--   <i>See:</i> <a>getXSSMatchSet</a> smart constructor.
data GetXSSMatchSet

-- | The <tt>XssMatchSetId</tt> of the <tt>XssMatchSet</tt> that you want
--   to get. <tt>XssMatchSetId</tt> is returned by
--   <tt>CreateXssMatchSet</tt> and by <tt>ListXssMatchSets</tt> .
gxmsXSSMatchSetId :: Lens' GetXSSMatchSet Text

-- | Creates a value of <a>GetXSSMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gxmsrsXSSMatchSet</a> - Information about the
--   <tt>XssMatchSet</tt> that you specified in the <tt>GetXssMatchSet</tt>
--   request. For more information, see the following topics: *
--   <tt>XssMatchSet</tt> : Contains <tt>Name</tt> , <tt>XssMatchSetId</tt>
--   , and an array of <tt>XssMatchTuple</tt> objects *
--   <tt>XssMatchTuple</tt> : Each <tt>XssMatchTuple</tt> object contains
--   <tt>FieldToMatch</tt> and <tt>TextTransformation</tt> *
--   <a>FieldToMatch</a> : Contains <tt>Data</tt> and <tt>Type</tt></li>
--   <li><a>gxmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getXSSMatchSetResponse :: Int -> GetXSSMatchSetResponse

-- | The response to a <tt>GetXssMatchSet</tt> request.
--   
--   <i>See:</i> <a>getXSSMatchSetResponse</a> smart constructor.
data GetXSSMatchSetResponse

-- | Information about the <tt>XssMatchSet</tt> that you specified in the
--   <tt>GetXssMatchSet</tt> request. For more information, see the
--   following topics: * <tt>XssMatchSet</tt> : Contains <tt>Name</tt> ,
--   <tt>XssMatchSetId</tt> , and an array of <tt>XssMatchTuple</tt>
--   objects * <tt>XssMatchTuple</tt> : Each <tt>XssMatchTuple</tt> object
--   contains <tt>FieldToMatch</tt> and <tt>TextTransformation</tt> *
--   <a>FieldToMatch</a> : Contains <tt>Data</tt> and <tt>Type</tt>
gxmsrsXSSMatchSet :: Lens' GetXSSMatchSetResponse (Maybe XSSMatchSet)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
gxmsrsResponseStatus :: Lens' GetXSSMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSet
instance Data.Data.Data Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSet
instance GHC.Show.Show Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSet
instance GHC.Read.Read Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSet


-- | Returns the <a>WebACL</a> that is specified by <tt>WebACLId</tt> .
module Network.AWS.WAF.GetWebACL

-- | Creates a value of <a>GetWebACL</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gwaWebACLId</a> - The <tt>WebACLId</tt> of the <a>WebACL</a>
--   that you want to get. <tt>WebACLId</tt> is returned by
--   <tt>CreateWebACL</tt> and by <tt>ListWebACLs</tt> .</li>
--   </ul>
getWebACL :: Text -> GetWebACL

-- | <i>See:</i> <a>getWebACL</a> smart constructor.
data GetWebACL

-- | The <tt>WebACLId</tt> of the <a>WebACL</a> that you want to get.
--   <tt>WebACLId</tt> is returned by <tt>CreateWebACL</tt> and by
--   <tt>ListWebACLs</tt> .
gwaWebACLId :: Lens' GetWebACL Text

-- | Creates a value of <a>GetWebACLResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gwarsWebACL</a> - Information about the <a>WebACL</a> that you
--   specified in the <tt>GetWebACL</tt> request. For more information, see
--   the following topics: * <a>WebACL</a> : Contains
--   <tt>DefaultAction</tt> , <tt>MetricName</tt> , <tt>Name</tt> , an
--   array of <tt>Rule</tt> objects, and <tt>WebACLId</tt> *
--   <tt>DefaultAction</tt> (Data type is <a>WafAction</a> ): Contains
--   <tt>Type</tt> * <tt>Rules</tt> : Contains an array of
--   <tt>ActivatedRule</tt> objects, which contain <tt>Action</tt> ,
--   <tt>Priority</tt> , and <tt>RuleId</tt> * <tt>Action</tt> : Contains
--   <tt>Type</tt></li>
--   <li><a>gwarsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getWebACLResponse :: Int -> GetWebACLResponse

-- | <i>See:</i> <a>getWebACLResponse</a> smart constructor.
data GetWebACLResponse

-- | Information about the <a>WebACL</a> that you specified in the
--   <tt>GetWebACL</tt> request. For more information, see the following
--   topics: * <a>WebACL</a> : Contains <tt>DefaultAction</tt> ,
--   <tt>MetricName</tt> , <tt>Name</tt> , an array of <tt>Rule</tt>
--   objects, and <tt>WebACLId</tt> * <tt>DefaultAction</tt> (Data type is
--   <a>WafAction</a> ): Contains <tt>Type</tt> * <tt>Rules</tt> : Contains
--   an array of <tt>ActivatedRule</tt> objects, which contain
--   <tt>Action</tt> , <tt>Priority</tt> , and <tt>RuleId</tt> *
--   <tt>Action</tt> : Contains <tt>Type</tt>
gwarsWebACL :: Lens' GetWebACLResponse (Maybe WebACL)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
gwarsResponseStatus :: Lens' GetWebACLResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetWebACL.GetWebACLResponse
instance Data.Data.Data Network.AWS.WAF.GetWebACL.GetWebACLResponse
instance GHC.Show.Show Network.AWS.WAF.GetWebACL.GetWebACLResponse
instance GHC.Read.Read Network.AWS.WAF.GetWebACL.GetWebACLResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetWebACL.GetWebACLResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetWebACL.GetWebACL
instance Data.Data.Data Network.AWS.WAF.GetWebACL.GetWebACL
instance GHC.Show.Show Network.AWS.WAF.GetWebACL.GetWebACL
instance GHC.Read.Read Network.AWS.WAF.GetWebACL.GetWebACL
instance GHC.Classes.Eq Network.AWS.WAF.GetWebACL.GetWebACL
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetWebACL.GetWebACL
instance Control.DeepSeq.NFData Network.AWS.WAF.GetWebACL.GetWebACLResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetWebACL.GetWebACL
instance Control.DeepSeq.NFData Network.AWS.WAF.GetWebACL.GetWebACL
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetWebACL.GetWebACL
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetWebACL.GetWebACL
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetWebACL.GetWebACL
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetWebACL.GetWebACL


-- | Returns the <a>SqlInjectionMatchSet</a> that is specified by
--   <tt>SqlInjectionMatchSetId</tt> .
module Network.AWS.WAF.GetSqlInjectionMatchSet

-- | Creates a value of <a>GetSqlInjectionMatchSet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gsimsSqlInjectionMatchSetId</a> - The
--   <tt>SqlInjectionMatchSetId</tt> of the <a>SqlInjectionMatchSet</a>
--   that you want to get. <tt>SqlInjectionMatchSetId</tt> is returned by
--   <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .</li>
--   </ul>
getSqlInjectionMatchSet :: Text -> GetSqlInjectionMatchSet

-- | A request to get a <a>SqlInjectionMatchSet</a> .
--   
--   <i>See:</i> <a>getSqlInjectionMatchSet</a> smart constructor.
data GetSqlInjectionMatchSet

-- | The <tt>SqlInjectionMatchSetId</tt> of the <a>SqlInjectionMatchSet</a>
--   that you want to get. <tt>SqlInjectionMatchSetId</tt> is returned by
--   <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .
gsimsSqlInjectionMatchSetId :: Lens' GetSqlInjectionMatchSet Text

-- | Creates a value of <a>GetSqlInjectionMatchSetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gsimsrsSqlInjectionMatchSet</a> - Information about the
--   <a>SqlInjectionMatchSet</a> that you specified in the
--   <tt>GetSqlInjectionMatchSet</tt> request. For more information, see
--   the following topics: * <a>SqlInjectionMatchSet</a> : Contains
--   <tt>Name</tt> , <tt>SqlInjectionMatchSetId</tt> , and an array of
--   <tt>SqlInjectionMatchTuple</tt> objects *
--   <a>SqlInjectionMatchTuple</a> : Each <tt>SqlInjectionMatchTuple</tt>
--   object contains <tt>FieldToMatch</tt> and <tt>TextTransformation</tt>
--   * <a>FieldToMatch</a> : Contains <tt>Data</tt> and <tt>Type</tt></li>
--   <li><a>gsimsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getSqlInjectionMatchSetResponse :: Int -> GetSqlInjectionMatchSetResponse

-- | The response to a <a>GetSqlInjectionMatchSet</a> request.
--   
--   <i>See:</i> <a>getSqlInjectionMatchSetResponse</a> smart constructor.
data GetSqlInjectionMatchSetResponse

-- | Information about the <a>SqlInjectionMatchSet</a> that you specified
--   in the <tt>GetSqlInjectionMatchSet</tt> request. For more information,
--   see the following topics: * <a>SqlInjectionMatchSet</a> : Contains
--   <tt>Name</tt> , <tt>SqlInjectionMatchSetId</tt> , and an array of
--   <tt>SqlInjectionMatchTuple</tt> objects *
--   <a>SqlInjectionMatchTuple</a> : Each <tt>SqlInjectionMatchTuple</tt>
--   object contains <tt>FieldToMatch</tt> and <tt>TextTransformation</tt>
--   * <a>FieldToMatch</a> : Contains <tt>Data</tt> and <tt>Type</tt>
gsimsrsSqlInjectionMatchSet :: Lens' GetSqlInjectionMatchSetResponse (Maybe SqlInjectionMatchSet)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
gsimsrsResponseStatus :: Lens' GetSqlInjectionMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSet
instance Data.Data.Data Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSet
instance GHC.Show.Show Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSet
instance GHC.Read.Read Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSet


-- | Returns the <a>SizeConstraintSet</a> specified by
--   <tt>SizeConstraintSetId</tt> .
module Network.AWS.WAF.GetSizeConstraintSet

-- | Creates a value of <a>GetSizeConstraintSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gscsSizeConstraintSetId</a> - The <tt>SizeConstraintSetId</tt>
--   of the <a>SizeConstraintSet</a> that you want to get.
--   <tt>SizeConstraintSetId</tt> is returned by
--   <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .</li>
--   </ul>
getSizeConstraintSet :: Text -> GetSizeConstraintSet

-- | <i>See:</i> <a>getSizeConstraintSet</a> smart constructor.
data GetSizeConstraintSet

-- | The <tt>SizeConstraintSetId</tt> of the <a>SizeConstraintSet</a> that
--   you want to get. <tt>SizeConstraintSetId</tt> is returned by
--   <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .
gscsSizeConstraintSetId :: Lens' GetSizeConstraintSet Text

-- | Creates a value of <a>GetSizeConstraintSetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gscsrsSizeConstraintSet</a> - Information about the
--   <a>SizeConstraintSet</a> that you specified in the
--   <tt>GetSizeConstraintSet</tt> request. For more information, see the
--   following topics: * <a>SizeConstraintSet</a> : Contains
--   <tt>SizeConstraintSetId</tt> , <tt>SizeConstraints</tt> , and
--   <tt>Name</tt> * <tt>SizeConstraints</tt> : Contains an array of
--   <a>SizeConstraint</a> objects. Each <tt>SizeConstraint</tt> object
--   contains <a>FieldToMatch</a> , <tt>TextTransformation</tt> ,
--   <tt>ComparisonOperator</tt> , and <tt>Size</tt> * <a>FieldToMatch</a>
--   : Contains <tt>Data</tt> and <tt>Type</tt></li>
--   <li><a>gscsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getSizeConstraintSetResponse :: Int -> GetSizeConstraintSetResponse

-- | <i>See:</i> <a>getSizeConstraintSetResponse</a> smart constructor.
data GetSizeConstraintSetResponse

-- | Information about the <a>SizeConstraintSet</a> that you specified in
--   the <tt>GetSizeConstraintSet</tt> request. For more information, see
--   the following topics: * <a>SizeConstraintSet</a> : Contains
--   <tt>SizeConstraintSetId</tt> , <tt>SizeConstraints</tt> , and
--   <tt>Name</tt> * <tt>SizeConstraints</tt> : Contains an array of
--   <a>SizeConstraint</a> objects. Each <tt>SizeConstraint</tt> object
--   contains <a>FieldToMatch</a> , <tt>TextTransformation</tt> ,
--   <tt>ComparisonOperator</tt> , and <tt>Size</tt> * <a>FieldToMatch</a>
--   : Contains <tt>Data</tt> and <tt>Type</tt>
gscsrsSizeConstraintSet :: Lens' GetSizeConstraintSetResponse (Maybe SizeConstraintSet)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
gscsrsResponseStatus :: Lens' GetSizeConstraintSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSetResponse
instance Data.Data.Data Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSetResponse
instance GHC.Show.Show Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSetResponse
instance GHC.Read.Read Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSet
instance Data.Data.Data Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSet
instance GHC.Show.Show Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSet
instance GHC.Read.Read Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSet
instance GHC.Classes.Eq Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSet


-- | Gets detailed information about a specified number of requests--a
--   sample--that AWS WAF randomly selects from among the first 5,000
--   requests that your AWS resource received during a time range that you
--   choose. You can specify a sample size of up to 500 requests, and you
--   can specify any time range in the previous three hours.
--   
--   <tt>GetSampledRequests</tt> returns a time range, which is usually the
--   time range that you specified. However, if your resource (such as a
--   CloudFront distribution) received 5,000 requests before the specified
--   time range elapsed, <tt>GetSampledRequests</tt> returns an updated
--   time range. This new time range indicates the actual period during
--   which AWS WAF selected the requests in the sample.
module Network.AWS.WAF.GetSampledRequests

-- | Creates a value of <a>GetSampledRequests</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gsrWebACLId</a> - The <tt>WebACLId</tt> of the <tt>WebACL</tt>
--   for which you want <tt>GetSampledRequests</tt> to return a sample of
--   requests.</li>
--   <li><a>gsrRuleId</a> - <tt>RuleId</tt> is one of three values: * The
--   <tt>RuleId</tt> of the <tt>Rule</tt> or the <tt>RuleGroupId</tt> of
--   the <tt>RuleGroup</tt> for which you want <tt>GetSampledRequests</tt>
--   to return a sample of requests. * <tt>Default_Action</tt> , which
--   causes <tt>GetSampledRequests</tt> to return a sample of the requests
--   that didn't match any of the rules in the specified <tt>WebACL</tt>
--   .</li>
--   <li><a>gsrTimeWindow</a> - The start date and time and the end date
--   and time of the range for which you want <tt>GetSampledRequests</tt>
--   to return a sample of requests. Specify the date and time in the
--   following format: <tt>"2016-09-27T14:50Z"</tt> . You can specify any
--   time range in the previous three hours.</li>
--   <li><a>gsrMaxItems</a> - The number of requests that you want AWS WAF
--   to return from among the first 5,000 requests that your AWS resource
--   received during the time range. If your resource received fewer
--   requests than the value of <tt>MaxItems</tt> ,
--   <tt>GetSampledRequests</tt> returns information about all of
--   them.</li>
--   </ul>
getSampledRequests :: Text -> Text -> TimeWindow -> Natural -> GetSampledRequests

-- | <i>See:</i> <a>getSampledRequests</a> smart constructor.
data GetSampledRequests

-- | The <tt>WebACLId</tt> of the <tt>WebACL</tt> for which you want
--   <tt>GetSampledRequests</tt> to return a sample of requests.
gsrWebACLId :: Lens' GetSampledRequests Text

-- | <tt>RuleId</tt> is one of three values: * The <tt>RuleId</tt> of the
--   <tt>Rule</tt> or the <tt>RuleGroupId</tt> of the <tt>RuleGroup</tt>
--   for which you want <tt>GetSampledRequests</tt> to return a sample of
--   requests. * <tt>Default_Action</tt> , which causes
--   <tt>GetSampledRequests</tt> to return a sample of the requests that
--   didn't match any of the rules in the specified <tt>WebACL</tt> .
gsrRuleId :: Lens' GetSampledRequests Text

-- | The start date and time and the end date and time of the range for
--   which you want <tt>GetSampledRequests</tt> to return a sample of
--   requests. Specify the date and time in the following format:
--   <tt>"2016-09-27T14:50Z"</tt> . You can specify any time range in the
--   previous three hours.
gsrTimeWindow :: Lens' GetSampledRequests TimeWindow

-- | The number of requests that you want AWS WAF to return from among the
--   first 5,000 requests that your AWS resource received during the time
--   range. If your resource received fewer requests than the value of
--   <tt>MaxItems</tt> , <tt>GetSampledRequests</tt> returns information
--   about all of them.
gsrMaxItems :: Lens' GetSampledRequests Natural

-- | Creates a value of <a>GetSampledRequestsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gsrrsSampledRequests</a> - A complex type that contains
--   detailed information about each of the requests in the sample.</li>
--   <li><a>gsrrsPopulationSize</a> - The total number of requests from
--   which <tt>GetSampledRequests</tt> got a sample of <tt>MaxItems</tt>
--   requests. If <tt>PopulationSize</tt> is less than <tt>MaxItems</tt> ,
--   the sample includes every request that your AWS resource received
--   during the specified time range.</li>
--   <li><a>gsrrsTimeWindow</a> - Usually, <tt>TimeWindow</tt> is the time
--   range that you specified in the <tt>GetSampledRequests</tt> request.
--   However, if your AWS resource received more than 5,000 requests during
--   the time range that you specified in the request,
--   <tt>GetSampledRequests</tt> returns the time range for the first 5,000
--   requests.</li>
--   <li><a>gsrrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getSampledRequestsResponse :: Int -> GetSampledRequestsResponse

-- | <i>See:</i> <a>getSampledRequestsResponse</a> smart constructor.
data GetSampledRequestsResponse

-- | A complex type that contains detailed information about each of the
--   requests in the sample.
gsrrsSampledRequests :: Lens' GetSampledRequestsResponse [SampledHTTPRequest]

-- | The total number of requests from which <tt>GetSampledRequests</tt>
--   got a sample of <tt>MaxItems</tt> requests. If <tt>PopulationSize</tt>
--   is less than <tt>MaxItems</tt> , the sample includes every request
--   that your AWS resource received during the specified time range.
gsrrsPopulationSize :: Lens' GetSampledRequestsResponse (Maybe Integer)

-- | Usually, <tt>TimeWindow</tt> is the time range that you specified in
--   the <tt>GetSampledRequests</tt> request. However, if your AWS resource
--   received more than 5,000 requests during the time range that you
--   specified in the request, <tt>GetSampledRequests</tt> returns the time
--   range for the first 5,000 requests.
gsrrsTimeWindow :: Lens' GetSampledRequestsResponse (Maybe TimeWindow)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
gsrrsResponseStatus :: Lens' GetSampledRequestsResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetSampledRequests.GetSampledRequestsResponse
instance Data.Data.Data Network.AWS.WAF.GetSampledRequests.GetSampledRequestsResponse
instance GHC.Show.Show Network.AWS.WAF.GetSampledRequests.GetSampledRequestsResponse
instance GHC.Read.Read Network.AWS.WAF.GetSampledRequests.GetSampledRequestsResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetSampledRequests.GetSampledRequestsResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetSampledRequests.GetSampledRequests
instance Data.Data.Data Network.AWS.WAF.GetSampledRequests.GetSampledRequests
instance GHC.Show.Show Network.AWS.WAF.GetSampledRequests.GetSampledRequests
instance GHC.Read.Read Network.AWS.WAF.GetSampledRequests.GetSampledRequests
instance GHC.Classes.Eq Network.AWS.WAF.GetSampledRequests.GetSampledRequests
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetSampledRequests.GetSampledRequests
instance Control.DeepSeq.NFData Network.AWS.WAF.GetSampledRequests.GetSampledRequestsResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetSampledRequests.GetSampledRequests
instance Control.DeepSeq.NFData Network.AWS.WAF.GetSampledRequests.GetSampledRequests
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetSampledRequests.GetSampledRequests
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetSampledRequests.GetSampledRequests
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetSampledRequests.GetSampledRequests
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetSampledRequests.GetSampledRequests


-- | Returns the <a>RuleGroup</a> that is specified by the
--   <tt>RuleGroupId</tt> that you included in the <tt>GetRuleGroup</tt>
--   request.
--   
--   To view the rules in a rule group, use
--   <tt>ListActivatedRulesInRuleGroup</tt> .
module Network.AWS.WAF.GetRuleGroup

-- | Creates a value of <a>GetRuleGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grgRuleGroupId</a> - The <tt>RuleGroupId</tt> of the
--   <a>RuleGroup</a> that you want to get. <tt>RuleGroupId</tt> is
--   returned by <tt>CreateRuleGroup</tt> and by <tt>ListRuleGroups</tt>
--   .</li>
--   </ul>
getRuleGroup :: Text -> GetRuleGroup

-- | <i>See:</i> <a>getRuleGroup</a> smart constructor.
data GetRuleGroup

-- | The <tt>RuleGroupId</tt> of the <a>RuleGroup</a> that you want to get.
--   <tt>RuleGroupId</tt> is returned by <tt>CreateRuleGroup</tt> and by
--   <tt>ListRuleGroups</tt> .
grgRuleGroupId :: Lens' GetRuleGroup Text

-- | Creates a value of <a>GetRuleGroupResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grgrsRuleGroup</a> - Information about the <a>RuleGroup</a>
--   that you specified in the <tt>GetRuleGroup</tt> request.</li>
--   <li><a>grgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getRuleGroupResponse :: Int -> GetRuleGroupResponse

-- | <i>See:</i> <a>getRuleGroupResponse</a> smart constructor.
data GetRuleGroupResponse

-- | Information about the <a>RuleGroup</a> that you specified in the
--   <tt>GetRuleGroup</tt> request.
grgrsRuleGroup :: Lens' GetRuleGroupResponse (Maybe RuleGroup)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
grgrsResponseStatus :: Lens' GetRuleGroupResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetRuleGroup.GetRuleGroupResponse
instance Data.Data.Data Network.AWS.WAF.GetRuleGroup.GetRuleGroupResponse
instance GHC.Show.Show Network.AWS.WAF.GetRuleGroup.GetRuleGroupResponse
instance GHC.Read.Read Network.AWS.WAF.GetRuleGroup.GetRuleGroupResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetRuleGroup.GetRuleGroupResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetRuleGroup.GetRuleGroup
instance Data.Data.Data Network.AWS.WAF.GetRuleGroup.GetRuleGroup
instance GHC.Show.Show Network.AWS.WAF.GetRuleGroup.GetRuleGroup
instance GHC.Read.Read Network.AWS.WAF.GetRuleGroup.GetRuleGroup
instance GHC.Classes.Eq Network.AWS.WAF.GetRuleGroup.GetRuleGroup
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetRuleGroup.GetRuleGroup
instance Control.DeepSeq.NFData Network.AWS.WAF.GetRuleGroup.GetRuleGroupResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetRuleGroup.GetRuleGroup
instance Control.DeepSeq.NFData Network.AWS.WAF.GetRuleGroup.GetRuleGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetRuleGroup.GetRuleGroup
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetRuleGroup.GetRuleGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetRuleGroup.GetRuleGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetRuleGroup.GetRuleGroup


-- | Returns the <a>Rule</a> that is specified by the <tt>RuleId</tt> that
--   you included in the <tt>GetRule</tt> request.
module Network.AWS.WAF.GetRule

-- | Creates a value of <a>GetRule</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grRuleId</a> - The <tt>RuleId</tt> of the <a>Rule</a> that you
--   want to get. <tt>RuleId</tt> is returned by <tt>CreateRule</tt> and by
--   <tt>ListRules</tt> .</li>
--   </ul>
getRule :: Text -> GetRule

-- | <i>See:</i> <a>getRule</a> smart constructor.
data GetRule

-- | The <tt>RuleId</tt> of the <a>Rule</a> that you want to get.
--   <tt>RuleId</tt> is returned by <tt>CreateRule</tt> and by
--   <tt>ListRules</tt> .
grRuleId :: Lens' GetRule Text

-- | Creates a value of <a>GetRuleResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grrsRule</a> - Information about the <a>Rule</a> that you
--   specified in the <tt>GetRule</tt> request. For more information, see
--   the following topics: * <a>Rule</a> : Contains <tt>MetricName</tt> ,
--   <tt>Name</tt> , an array of <tt>Predicate</tt> objects, and
--   <tt>RuleId</tt> * <a>Predicate</a> : Each <tt>Predicate</tt> object
--   contains <tt>DataId</tt> , <tt>Negated</tt> , and <tt>Type</tt></li>
--   <li><a>grrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getRuleResponse :: Int -> GetRuleResponse

-- | <i>See:</i> <a>getRuleResponse</a> smart constructor.
data GetRuleResponse

-- | Information about the <a>Rule</a> that you specified in the
--   <tt>GetRule</tt> request. For more information, see the following
--   topics: * <a>Rule</a> : Contains <tt>MetricName</tt> , <tt>Name</tt> ,
--   an array of <tt>Predicate</tt> objects, and <tt>RuleId</tt> *
--   <a>Predicate</a> : Each <tt>Predicate</tt> object contains
--   <tt>DataId</tt> , <tt>Negated</tt> , and <tt>Type</tt>
grrsRule :: Lens' GetRuleResponse (Maybe Rule)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
grrsResponseStatus :: Lens' GetRuleResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetRule.GetRuleResponse
instance Data.Data.Data Network.AWS.WAF.GetRule.GetRuleResponse
instance GHC.Show.Show Network.AWS.WAF.GetRule.GetRuleResponse
instance GHC.Read.Read Network.AWS.WAF.GetRule.GetRuleResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetRule.GetRuleResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetRule.GetRule
instance Data.Data.Data Network.AWS.WAF.GetRule.GetRule
instance GHC.Show.Show Network.AWS.WAF.GetRule.GetRule
instance GHC.Read.Read Network.AWS.WAF.GetRule.GetRule
instance GHC.Classes.Eq Network.AWS.WAF.GetRule.GetRule
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetRule.GetRule
instance Control.DeepSeq.NFData Network.AWS.WAF.GetRule.GetRuleResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetRule.GetRule
instance Control.DeepSeq.NFData Network.AWS.WAF.GetRule.GetRule
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetRule.GetRule
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetRule.GetRule
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetRule.GetRule
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetRule.GetRule


-- | Returns the <a>RegexPatternSet</a> specified by
--   <tt>RegexPatternSetId</tt> .
module Network.AWS.WAF.GetRegexPatternSet

-- | Creates a value of <a>GetRegexPatternSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grpsRegexPatternSetId</a> - The <tt>RegexPatternSetId</tt> of
--   the <a>RegexPatternSet</a> that you want to get.
--   <tt>RegexPatternSetId</tt> is returned by
--   <tt>CreateRegexPatternSet</tt> and by <tt>ListRegexPatternSets</tt>
--   .</li>
--   </ul>
getRegexPatternSet :: Text -> GetRegexPatternSet

-- | <i>See:</i> <a>getRegexPatternSet</a> smart constructor.
data GetRegexPatternSet

-- | The <tt>RegexPatternSetId</tt> of the <a>RegexPatternSet</a> that you
--   want to get. <tt>RegexPatternSetId</tt> is returned by
--   <tt>CreateRegexPatternSet</tt> and by <tt>ListRegexPatternSets</tt> .
grpsRegexPatternSetId :: Lens' GetRegexPatternSet Text

-- | Creates a value of <a>GetRegexPatternSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grpsrsRegexPatternSet</a> - Information about the
--   <a>RegexPatternSet</a> that you specified in the
--   <tt>GetRegexPatternSet</tt> request, including the identifier of the
--   pattern set and the regular expression patterns you want AWS WAF to
--   search for.</li>
--   <li><a>grpsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getRegexPatternSetResponse :: Int -> GetRegexPatternSetResponse

-- | <i>See:</i> <a>getRegexPatternSetResponse</a> smart constructor.
data GetRegexPatternSetResponse

-- | Information about the <a>RegexPatternSet</a> that you specified in the
--   <tt>GetRegexPatternSet</tt> request, including the identifier of the
--   pattern set and the regular expression patterns you want AWS WAF to
--   search for.
grpsrsRegexPatternSet :: Lens' GetRegexPatternSetResponse (Maybe RegexPatternSet)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
grpsrsResponseStatus :: Lens' GetRegexPatternSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSetResponse
instance Data.Data.Data Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSetResponse
instance GHC.Show.Show Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSetResponse
instance GHC.Read.Read Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSet
instance Data.Data.Data Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSet
instance GHC.Show.Show Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSet
instance GHC.Read.Read Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSet
instance GHC.Classes.Eq Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetRegexPatternSet.GetRegexPatternSet


-- | Returns the <a>RegexMatchSet</a> specified by <tt>RegexMatchSetId</tt>
--   .
module Network.AWS.WAF.GetRegexMatchSet

-- | Creates a value of <a>GetRegexMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grmsRegexMatchSetId</a> - The <tt>RegexMatchSetId</tt> of the
--   <a>RegexMatchSet</a> that you want to get. <tt>RegexMatchSetId</tt> is
--   returned by <tt>CreateRegexMatchSet</tt> and by
--   <tt>ListRegexMatchSets</tt> .</li>
--   </ul>
getRegexMatchSet :: Text -> GetRegexMatchSet

-- | <i>See:</i> <a>getRegexMatchSet</a> smart constructor.
data GetRegexMatchSet

-- | The <tt>RegexMatchSetId</tt> of the <a>RegexMatchSet</a> that you want
--   to get. <tt>RegexMatchSetId</tt> is returned by
--   <tt>CreateRegexMatchSet</tt> and by <tt>ListRegexMatchSets</tt> .
grmsRegexMatchSetId :: Lens' GetRegexMatchSet Text

-- | Creates a value of <a>GetRegexMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grmsrsRegexMatchSet</a> - Information about the
--   <a>RegexMatchSet</a> that you specified in the
--   <tt>GetRegexMatchSet</tt> request. For more information, see
--   <a>RegexMatchTuple</a> .</li>
--   <li><a>grmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getRegexMatchSetResponse :: Int -> GetRegexMatchSetResponse

-- | <i>See:</i> <a>getRegexMatchSetResponse</a> smart constructor.
data GetRegexMatchSetResponse

-- | Information about the <a>RegexMatchSet</a> that you specified in the
--   <tt>GetRegexMatchSet</tt> request. For more information, see
--   <a>RegexMatchTuple</a> .
grmsrsRegexMatchSet :: Lens' GetRegexMatchSetResponse (Maybe RegexMatchSet)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
grmsrsResponseStatus :: Lens' GetRegexMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSet
instance Data.Data.Data Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSet
instance GHC.Show.Show Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSet
instance GHC.Read.Read Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetRegexMatchSet.GetRegexMatchSet


-- | Returns an array of IP addresses currently being blocked by the
--   <a>RateBasedRule</a> that is specified by the <tt>RuleId</tt> . The
--   maximum number of managed keys that will be blocked is 10,000. If more
--   than 10,000 addresses exceed the rate limit, the 10,000 addresses with
--   the highest rates will be blocked.
module Network.AWS.WAF.GetRateBasedRuleManagedKeys

-- | Creates a value of <a>GetRateBasedRuleManagedKeys</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grbrmkNextMarker</a> - A null value and not currently used. Do
--   not include this in your request.</li>
--   <li><a>grbrmkRuleId</a> - The <tt>RuleId</tt> of the
--   <a>RateBasedRule</a> for which you want to get a list of
--   <tt>ManagedKeys</tt> . <tt>RuleId</tt> is returned by
--   <tt>CreateRateBasedRule</tt> and by <tt>ListRateBasedRules</tt> .</li>
--   </ul>
getRateBasedRuleManagedKeys :: Text -> GetRateBasedRuleManagedKeys

-- | <i>See:</i> <a>getRateBasedRuleManagedKeys</a> smart constructor.
data GetRateBasedRuleManagedKeys

-- | A null value and not currently used. Do not include this in your
--   request.
grbrmkNextMarker :: Lens' GetRateBasedRuleManagedKeys (Maybe Text)

-- | The <tt>RuleId</tt> of the <a>RateBasedRule</a> for which you want to
--   get a list of <tt>ManagedKeys</tt> . <tt>RuleId</tt> is returned by
--   <tt>CreateRateBasedRule</tt> and by <tt>ListRateBasedRules</tt> .
grbrmkRuleId :: Lens' GetRateBasedRuleManagedKeys Text

-- | Creates a value of <a>GetRateBasedRuleManagedKeysResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grbrmkrsNextMarker</a> - A null value and not currently
--   used.</li>
--   <li><a>grbrmkrsManagedKeys</a> - An array of IP addresses that
--   currently are blocked by the specified <a>RateBasedRule</a> .</li>
--   <li><a>grbrmkrsResponseStatus</a> - -- | The response status
--   code.</li>
--   </ul>
getRateBasedRuleManagedKeysResponse :: Int -> GetRateBasedRuleManagedKeysResponse

-- | <i>See:</i> <a>getRateBasedRuleManagedKeysResponse</a> smart
--   constructor.
data GetRateBasedRuleManagedKeysResponse

-- | A null value and not currently used.
grbrmkrsNextMarker :: Lens' GetRateBasedRuleManagedKeysResponse (Maybe Text)

-- | An array of IP addresses that currently are blocked by the specified
--   <a>RateBasedRule</a> .
grbrmkrsManagedKeys :: Lens' GetRateBasedRuleManagedKeysResponse [Text]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
grbrmkrsResponseStatus :: Lens' GetRateBasedRuleManagedKeysResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeysResponse
instance Data.Data.Data Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeysResponse
instance GHC.Show.Show Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeysResponse
instance GHC.Read.Read Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeysResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeysResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeys
instance Data.Data.Data Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeys
instance GHC.Show.Show Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeys
instance GHC.Read.Read Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeys
instance GHC.Classes.Eq Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeys
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeys
instance Control.DeepSeq.NFData Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeysResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeys
instance Control.DeepSeq.NFData Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeys
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeys
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeys
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeys
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetRateBasedRuleManagedKeys.GetRateBasedRuleManagedKeys


-- | Returns the <a>RateBasedRule</a> that is specified by the
--   <tt>RuleId</tt> that you included in the <tt>GetRateBasedRule</tt>
--   request.
module Network.AWS.WAF.GetRateBasedRule

-- | Creates a value of <a>GetRateBasedRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grbrRuleId</a> - The <tt>RuleId</tt> of the
--   <a>RateBasedRule</a> that you want to get. <tt>RuleId</tt> is returned
--   by <tt>CreateRateBasedRule</tt> and by <tt>ListRateBasedRules</tt>
--   .</li>
--   </ul>
getRateBasedRule :: Text -> GetRateBasedRule

-- | <i>See:</i> <a>getRateBasedRule</a> smart constructor.
data GetRateBasedRule

-- | The <tt>RuleId</tt> of the <a>RateBasedRule</a> that you want to get.
--   <tt>RuleId</tt> is returned by <tt>CreateRateBasedRule</tt> and by
--   <tt>ListRateBasedRules</tt> .
grbrRuleId :: Lens' GetRateBasedRule Text

-- | Creates a value of <a>GetRateBasedRuleResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>grbrrsRule</a> - Information about the <a>RateBasedRule</a>
--   that you specified in the <tt>GetRateBasedRule</tt> request.</li>
--   <li><a>grbrrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getRateBasedRuleResponse :: Int -> GetRateBasedRuleResponse

-- | <i>See:</i> <a>getRateBasedRuleResponse</a> smart constructor.
data GetRateBasedRuleResponse

-- | Information about the <a>RateBasedRule</a> that you specified in the
--   <tt>GetRateBasedRule</tt> request.
grbrrsRule :: Lens' GetRateBasedRuleResponse (Maybe RateBasedRule)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
grbrrsResponseStatus :: Lens' GetRateBasedRuleResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetRateBasedRule.GetRateBasedRuleResponse
instance Data.Data.Data Network.AWS.WAF.GetRateBasedRule.GetRateBasedRuleResponse
instance GHC.Show.Show Network.AWS.WAF.GetRateBasedRule.GetRateBasedRuleResponse
instance GHC.Read.Read Network.AWS.WAF.GetRateBasedRule.GetRateBasedRuleResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetRateBasedRule.GetRateBasedRuleResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetRateBasedRule.GetRateBasedRule
instance Data.Data.Data Network.AWS.WAF.GetRateBasedRule.GetRateBasedRule
instance GHC.Show.Show Network.AWS.WAF.GetRateBasedRule.GetRateBasedRule
instance GHC.Read.Read Network.AWS.WAF.GetRateBasedRule.GetRateBasedRule
instance GHC.Classes.Eq Network.AWS.WAF.GetRateBasedRule.GetRateBasedRule
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetRateBasedRule.GetRateBasedRule
instance Control.DeepSeq.NFData Network.AWS.WAF.GetRateBasedRule.GetRateBasedRuleResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetRateBasedRule.GetRateBasedRule
instance Control.DeepSeq.NFData Network.AWS.WAF.GetRateBasedRule.GetRateBasedRule
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetRateBasedRule.GetRateBasedRule
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetRateBasedRule.GetRateBasedRule
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetRateBasedRule.GetRateBasedRule
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetRateBasedRule.GetRateBasedRule


-- | Returns the IAM policy attached to the RuleGroup.
module Network.AWS.WAF.GetPermissionPolicy

-- | Creates a value of <a>GetPermissionPolicy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gppResourceARN</a> - The Amazon Resource Name (ARN) of the
--   RuleGroup for which you want to get the policy.</li>
--   </ul>
getPermissionPolicy :: Text -> GetPermissionPolicy

-- | <i>See:</i> <a>getPermissionPolicy</a> smart constructor.
data GetPermissionPolicy

-- | The Amazon Resource Name (ARN) of the RuleGroup for which you want to
--   get the policy.
gppResourceARN :: Lens' GetPermissionPolicy Text

-- | Creates a value of <a>GetPermissionPolicyResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gpprsPolicy</a> - The IAM policy attached to the specified
--   RuleGroup.</li>
--   <li><a>gpprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getPermissionPolicyResponse :: Int -> GetPermissionPolicyResponse

-- | <i>See:</i> <a>getPermissionPolicyResponse</a> smart constructor.
data GetPermissionPolicyResponse

-- | The IAM policy attached to the specified RuleGroup.
gpprsPolicy :: Lens' GetPermissionPolicyResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
gpprsResponseStatus :: Lens' GetPermissionPolicyResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicyResponse
instance Data.Data.Data Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicyResponse
instance GHC.Show.Show Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicyResponse
instance GHC.Read.Read Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicyResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicyResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicy
instance Data.Data.Data Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicy
instance GHC.Show.Show Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicy
instance GHC.Read.Read Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicy
instance GHC.Classes.Eq Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicy
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicy
instance Control.DeepSeq.NFData Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicyResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicy
instance Control.DeepSeq.NFData Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicy
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicy
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicy
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicy
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetPermissionPolicy.GetPermissionPolicy


-- | Returns the <a>IPSet</a> that is specified by <tt>IPSetId</tt> .
module Network.AWS.WAF.GetIPSet

-- | Creates a value of <a>GetIPSet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gisIPSetId</a> - The <tt>IPSetId</tt> of the <a>IPSet</a> that
--   you want to get. <tt>IPSetId</tt> is returned by <tt>CreateIPSet</tt>
--   and by <tt>ListIPSets</tt> .</li>
--   </ul>
getIPSet :: Text -> GetIPSet

-- | <i>See:</i> <a>getIPSet</a> smart constructor.
data GetIPSet

-- | The <tt>IPSetId</tt> of the <a>IPSet</a> that you want to get.
--   <tt>IPSetId</tt> is returned by <tt>CreateIPSet</tt> and by
--   <tt>ListIPSets</tt> .
gisIPSetId :: Lens' GetIPSet Text

-- | Creates a value of <a>GetIPSetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gisrsIPSet</a> - Information about the <a>IPSet</a> that you
--   specified in the <tt>GetIPSet</tt> request. For more information, see
--   the following topics: * <a>IPSet</a> : Contains
--   <tt>IPSetDescriptors</tt> , <tt>IPSetId</tt> , and <tt>Name</tt> *
--   <tt>IPSetDescriptors</tt> : Contains an array of
--   <a>IPSetDescriptor</a> objects. Each <tt>IPSetDescriptor</tt> object
--   contains <tt>Type</tt> and <tt>Value</tt></li>
--   <li><a>gisrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getIPSetResponse :: Int -> GetIPSetResponse

-- | <i>See:</i> <a>getIPSetResponse</a> smart constructor.
data GetIPSetResponse

-- | Information about the <a>IPSet</a> that you specified in the
--   <tt>GetIPSet</tt> request. For more information, see the following
--   topics: * <a>IPSet</a> : Contains <tt>IPSetDescriptors</tt> ,
--   <tt>IPSetId</tt> , and <tt>Name</tt> * <tt>IPSetDescriptors</tt> :
--   Contains an array of <a>IPSetDescriptor</a> objects. Each
--   <tt>IPSetDescriptor</tt> object contains <tt>Type</tt> and
--   <tt>Value</tt>
gisrsIPSet :: Lens' GetIPSetResponse (Maybe IPSet)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
gisrsResponseStatus :: Lens' GetIPSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetIPSet.GetIPSetResponse
instance Data.Data.Data Network.AWS.WAF.GetIPSet.GetIPSetResponse
instance GHC.Show.Show Network.AWS.WAF.GetIPSet.GetIPSetResponse
instance GHC.Read.Read Network.AWS.WAF.GetIPSet.GetIPSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetIPSet.GetIPSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetIPSet.GetIPSet
instance Data.Data.Data Network.AWS.WAF.GetIPSet.GetIPSet
instance GHC.Show.Show Network.AWS.WAF.GetIPSet.GetIPSet
instance GHC.Read.Read Network.AWS.WAF.GetIPSet.GetIPSet
instance GHC.Classes.Eq Network.AWS.WAF.GetIPSet.GetIPSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetIPSet.GetIPSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetIPSet.GetIPSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetIPSet.GetIPSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetIPSet.GetIPSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetIPSet.GetIPSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetIPSet.GetIPSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetIPSet.GetIPSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetIPSet.GetIPSet


-- | Returns the <a>GeoMatchSet</a> that is specified by
--   <tt>GeoMatchSetId</tt> .
module Network.AWS.WAF.GetGeoMatchSet

-- | Creates a value of <a>GetGeoMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ggmsGeoMatchSetId</a> - The <tt>GeoMatchSetId</tt> of the
--   <a>GeoMatchSet</a> that you want to get. <tt>GeoMatchSetId</tt> is
--   returned by <tt>CreateGeoMatchSet</tt> and by
--   <tt>ListGeoMatchSets</tt> .</li>
--   </ul>
getGeoMatchSet :: Text -> GetGeoMatchSet

-- | <i>See:</i> <a>getGeoMatchSet</a> smart constructor.
data GetGeoMatchSet

-- | The <tt>GeoMatchSetId</tt> of the <a>GeoMatchSet</a> that you want to
--   get. <tt>GeoMatchSetId</tt> is returned by <tt>CreateGeoMatchSet</tt>
--   and by <tt>ListGeoMatchSets</tt> .
ggmsGeoMatchSetId :: Lens' GetGeoMatchSet Text

-- | Creates a value of <a>GetGeoMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ggmsrsGeoMatchSet</a> - Information about the
--   <a>GeoMatchSet</a> that you specified in the <tt>GetGeoMatchSet</tt>
--   request. This includes the <tt>Type</tt> , which for a
--   <tt>GeoMatchContraint</tt> is always <tt>Country</tt> , as well as the
--   <tt>Value</tt> , which is the identifier for a specific country.</li>
--   <li><a>ggmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getGeoMatchSetResponse :: Int -> GetGeoMatchSetResponse

-- | <i>See:</i> <a>getGeoMatchSetResponse</a> smart constructor.
data GetGeoMatchSetResponse

-- | Information about the <a>GeoMatchSet</a> that you specified in the
--   <tt>GetGeoMatchSet</tt> request. This includes the <tt>Type</tt> ,
--   which for a <tt>GeoMatchContraint</tt> is always <tt>Country</tt> , as
--   well as the <tt>Value</tt> , which is the identifier for a specific
--   country.
ggmsrsGeoMatchSet :: Lens' GetGeoMatchSetResponse (Maybe GeoMatchSet)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ggmsrsResponseStatus :: Lens' GetGeoMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSet
instance Data.Data.Data Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSet
instance GHC.Show.Show Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSet
instance GHC.Read.Read Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetGeoMatchSet.GetGeoMatchSet


-- | Returns the status of a <tt>ChangeToken</tt> that you got by calling
--   <tt>GetChangeToken</tt> . <tt>ChangeTokenStatus</tt> is one of the
--   following values:
--   
--   <ul>
--   <li><tt>PROVISIONED</tt> : You requested the change token by calling
--   <tt>GetChangeToken</tt> , but you haven't used it yet in a call to
--   create, update, or delete an AWS WAF object.</li>
--   <li><tt>PENDING</tt> : AWS WAF is propagating the create, update, or
--   delete request to all AWS WAF servers.</li>
--   <li><tt>IN_SYNC</tt> : Propagation is complete.</li>
--   </ul>
module Network.AWS.WAF.GetChangeTokenStatus

-- | Creates a value of <a>GetChangeTokenStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gctsChangeToken</a> - The change token for which you want to
--   get the status. This change token was previously returned in the
--   <tt>GetChangeToken</tt> response.</li>
--   </ul>
getChangeTokenStatus :: Text -> GetChangeTokenStatus

-- | <i>See:</i> <a>getChangeTokenStatus</a> smart constructor.
data GetChangeTokenStatus

-- | The change token for which you want to get the status. This change
--   token was previously returned in the <tt>GetChangeToken</tt> response.
gctsChangeToken :: Lens' GetChangeTokenStatus Text

-- | Creates a value of <a>GetChangeTokenStatusResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gctsrsChangeTokenStatus</a> - The status of the change
--   token.</li>
--   <li><a>gctsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getChangeTokenStatusResponse :: Int -> GetChangeTokenStatusResponse

-- | <i>See:</i> <a>getChangeTokenStatusResponse</a> smart constructor.
data GetChangeTokenStatusResponse

-- | The status of the change token.
gctsrsChangeTokenStatus :: Lens' GetChangeTokenStatusResponse (Maybe ChangeTokenStatus)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
gctsrsResponseStatus :: Lens' GetChangeTokenStatusResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatusResponse
instance Data.Data.Data Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatusResponse
instance GHC.Show.Show Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatusResponse
instance GHC.Read.Read Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatusResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatusResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatus
instance Data.Data.Data Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatus
instance GHC.Show.Show Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatus
instance GHC.Read.Read Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatus
instance GHC.Classes.Eq Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatus
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatus
instance Control.DeepSeq.NFData Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatusResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatus
instance Control.DeepSeq.NFData Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatus
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatus
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatus
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatus
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatus


-- | When you want to create, update, or delete AWS WAF objects, get a
--   change token and include the change token in the create, update, or
--   delete request. Change tokens ensure that your application doesn't
--   submit conflicting requests to AWS WAF.
--   
--   Each create, update, or delete request must use a unique change token.
--   If your application submits a <tt>GetChangeToken</tt> request and then
--   submits a second <tt>GetChangeToken</tt> request before submitting a
--   create, update, or delete request, the second <tt>GetChangeToken</tt>
--   request returns the same value as the first <tt>GetChangeToken</tt>
--   request.
--   
--   When you use a change token in a create, update, or delete request,
--   the status of the change token changes to <tt>PENDING</tt> , which
--   indicates that AWS WAF is propagating the change to all AWS WAF
--   servers. Use <tt>GetChangeTokenStatus</tt> to determine the status of
--   your change token.
module Network.AWS.WAF.GetChangeToken

-- | Creates a value of <a>GetChangeToken</a> with the minimum fields
--   required to make a request.
getChangeToken :: GetChangeToken

-- | <i>See:</i> <a>getChangeToken</a> smart constructor.
data GetChangeToken

-- | Creates a value of <a>GetChangeTokenResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gctrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   in the request. Use this value in a <tt>GetChangeTokenStatus</tt>
--   request to get the current status of the request.</li>
--   <li><a>gctrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getChangeTokenResponse :: Int -> GetChangeTokenResponse

-- | <i>See:</i> <a>getChangeTokenResponse</a> smart constructor.
data GetChangeTokenResponse

-- | The <tt>ChangeToken</tt> that you used in the request. Use this value
--   in a <tt>GetChangeTokenStatus</tt> request to get the current status
--   of the request.
gctrsChangeToken :: Lens' GetChangeTokenResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
gctrsResponseStatus :: Lens' GetChangeTokenResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetChangeToken.GetChangeTokenResponse
instance Data.Data.Data Network.AWS.WAF.GetChangeToken.GetChangeTokenResponse
instance GHC.Show.Show Network.AWS.WAF.GetChangeToken.GetChangeTokenResponse
instance GHC.Read.Read Network.AWS.WAF.GetChangeToken.GetChangeTokenResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetChangeToken.GetChangeTokenResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetChangeToken.GetChangeToken
instance Data.Data.Data Network.AWS.WAF.GetChangeToken.GetChangeToken
instance GHC.Show.Show Network.AWS.WAF.GetChangeToken.GetChangeToken
instance GHC.Read.Read Network.AWS.WAF.GetChangeToken.GetChangeToken
instance GHC.Classes.Eq Network.AWS.WAF.GetChangeToken.GetChangeToken
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetChangeToken.GetChangeToken
instance Control.DeepSeq.NFData Network.AWS.WAF.GetChangeToken.GetChangeTokenResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetChangeToken.GetChangeToken
instance Control.DeepSeq.NFData Network.AWS.WAF.GetChangeToken.GetChangeToken
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetChangeToken.GetChangeToken
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetChangeToken.GetChangeToken
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetChangeToken.GetChangeToken
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetChangeToken.GetChangeToken


-- | Returns the <a>ByteMatchSet</a> specified by <tt>ByteMatchSetId</tt> .
module Network.AWS.WAF.GetByteMatchSet

-- | Creates a value of <a>GetByteMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gbmsByteMatchSetId</a> - The <tt>ByteMatchSetId</tt> of the
--   <a>ByteMatchSet</a> that you want to get. <tt>ByteMatchSetId</tt> is
--   returned by <tt>CreateByteMatchSet</tt> and by
--   <tt>ListByteMatchSets</tt> .</li>
--   </ul>
getByteMatchSet :: Text -> GetByteMatchSet

-- | <i>See:</i> <a>getByteMatchSet</a> smart constructor.
data GetByteMatchSet

-- | The <tt>ByteMatchSetId</tt> of the <a>ByteMatchSet</a> that you want
--   to get. <tt>ByteMatchSetId</tt> is returned by
--   <tt>CreateByteMatchSet</tt> and by <tt>ListByteMatchSets</tt> .
gbmsByteMatchSetId :: Lens' GetByteMatchSet Text

-- | Creates a value of <a>GetByteMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gbmsrsByteMatchSet</a> - Information about the
--   <a>ByteMatchSet</a> that you specified in the <tt>GetByteMatchSet</tt>
--   request. For more information, see the following topics: *
--   <a>ByteMatchSet</a> : Contains <tt>ByteMatchSetId</tt> ,
--   <tt>ByteMatchTuples</tt> , and <tt>Name</tt> *
--   <tt>ByteMatchTuples</tt> : Contains an array of <a>ByteMatchTuple</a>
--   objects. Each <tt>ByteMatchTuple</tt> object contains
--   <a>FieldToMatch</a> , <tt>PositionalConstraint</tt> ,
--   <tt>TargetString</tt> , and <tt>TextTransformation</tt> *
--   <a>FieldToMatch</a> : Contains <tt>Data</tt> and <tt>Type</tt></li>
--   <li><a>gbmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
getByteMatchSetResponse :: Int -> GetByteMatchSetResponse

-- | <i>See:</i> <a>getByteMatchSetResponse</a> smart constructor.
data GetByteMatchSetResponse

-- | Information about the <a>ByteMatchSet</a> that you specified in the
--   <tt>GetByteMatchSet</tt> request. For more information, see the
--   following topics: * <a>ByteMatchSet</a> : Contains
--   <tt>ByteMatchSetId</tt> , <tt>ByteMatchTuples</tt> , and <tt>Name</tt>
--   * <tt>ByteMatchTuples</tt> : Contains an array of
--   <a>ByteMatchTuple</a> objects. Each <tt>ByteMatchTuple</tt> object
--   contains <a>FieldToMatch</a> , <tt>PositionalConstraint</tt> ,
--   <tt>TargetString</tt> , and <tt>TextTransformation</tt> *
--   <a>FieldToMatch</a> : Contains <tt>Data</tt> and <tt>Type</tt>
gbmsrsByteMatchSet :: Lens' GetByteMatchSetResponse (Maybe ByteMatchSet)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
gbmsrsResponseStatus :: Lens' GetByteMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.GetByteMatchSet.GetByteMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.GetByteMatchSet.GetByteMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.GetByteMatchSet.GetByteMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.GetByteMatchSet.GetByteMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.GetByteMatchSet.GetByteMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.GetByteMatchSet.GetByteMatchSet
instance Data.Data.Data Network.AWS.WAF.GetByteMatchSet.GetByteMatchSet
instance GHC.Show.Show Network.AWS.WAF.GetByteMatchSet.GetByteMatchSet
instance GHC.Read.Read Network.AWS.WAF.GetByteMatchSet.GetByteMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.GetByteMatchSet.GetByteMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.GetByteMatchSet.GetByteMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetByteMatchSet.GetByteMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.GetByteMatchSet.GetByteMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.GetByteMatchSet.GetByteMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.GetByteMatchSet.GetByteMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.GetByteMatchSet.GetByteMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.GetByteMatchSet.GetByteMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.GetByteMatchSet.GetByteMatchSet


-- | Permanently deletes an <tt>XssMatchSet</tt> . You can't delete an
--   <tt>XssMatchSet</tt> if it's still used in any <tt>Rules</tt> or if it
--   still contains any <tt>XssMatchTuple</tt> objects.
--   
--   If you just want to remove an <tt>XssMatchSet</tt> from a
--   <tt>Rule</tt> , use <tt>UpdateRule</tt> .
--   
--   To permanently delete an <tt>XssMatchSet</tt> from AWS WAF, perform
--   the following steps:
--   
--   <ul>
--   <li>Update the <tt>XssMatchSet</tt> to remove filters, if any. For
--   more information, see <tt>UpdateXssMatchSet</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>DeleteXssMatchSet</tt> request.</li>
--   <li>Submit a <tt>DeleteXssMatchSet</tt> request.</li>
--   </ul>
module Network.AWS.WAF.DeleteXSSMatchSet

-- | Creates a value of <a>DeleteXSSMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dxmsXSSMatchSetId</a> - The <tt>XssMatchSetId</tt> of the
--   <tt>XssMatchSet</tt> that you want to delete. <tt>XssMatchSetId</tt>
--   is returned by <tt>CreateXssMatchSet</tt> and by
--   <tt>ListXssMatchSets</tt> .</li>
--   <li><a>dxmsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
deleteXSSMatchSet :: Text -> Text -> DeleteXSSMatchSet

-- | A request to delete an <tt>XssMatchSet</tt> from AWS WAF.
--   
--   <i>See:</i> <a>deleteXSSMatchSet</a> smart constructor.
data DeleteXSSMatchSet

-- | The <tt>XssMatchSetId</tt> of the <tt>XssMatchSet</tt> that you want
--   to delete. <tt>XssMatchSetId</tt> is returned by
--   <tt>CreateXssMatchSet</tt> and by <tt>ListXssMatchSets</tt> .
dxmsXSSMatchSetId :: Lens' DeleteXSSMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
dxmsChangeToken :: Lens' DeleteXSSMatchSet Text

-- | Creates a value of <a>DeleteXSSMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dxmsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>DeleteXssMatchSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>dxmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteXSSMatchSetResponse :: Int -> DeleteXSSMatchSetResponse

-- | The response to a request to delete an <tt>XssMatchSet</tt> from AWS
--   WAF.
--   
--   <i>See:</i> <a>deleteXSSMatchSetResponse</a> smart constructor.
data DeleteXSSMatchSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>DeleteXssMatchSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
dxmsrsChangeToken :: Lens' DeleteXSSMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dxmsrsResponseStatus :: Lens' DeleteXSSMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSet
instance Data.Data.Data Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSet
instance GHC.Show.Show Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSet
instance GHC.Read.Read Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSet


-- | Permanently deletes a <a>WebACL</a> . You can't delete a
--   <tt>WebACL</tt> if it still contains any <tt>Rules</tt> .
--   
--   To delete a <tt>WebACL</tt> , perform the following steps:
--   
--   <ul>
--   <li>Update the <tt>WebACL</tt> to remove <tt>Rules</tt> , if any. For
--   more information, see <tt>UpdateWebACL</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>DeleteWebACL</tt> request.</li>
--   <li>Submit a <tt>DeleteWebACL</tt> request.</li>
--   </ul>
module Network.AWS.WAF.DeleteWebACL

-- | Creates a value of <a>DeleteWebACL</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dwaWebACLId</a> - The <tt>WebACLId</tt> of the <a>WebACL</a>
--   that you want to delete. <tt>WebACLId</tt> is returned by
--   <tt>CreateWebACL</tt> and by <tt>ListWebACLs</tt> .</li>
--   <li><a>dwaChangeToken</a> - The value returned by the most recent call
--   to <tt>GetChangeToken</tt> .</li>
--   </ul>
deleteWebACL :: Text -> Text -> DeleteWebACL

-- | <i>See:</i> <a>deleteWebACL</a> smart constructor.
data DeleteWebACL

-- | The <tt>WebACLId</tt> of the <a>WebACL</a> that you want to delete.
--   <tt>WebACLId</tt> is returned by <tt>CreateWebACL</tt> and by
--   <tt>ListWebACLs</tt> .
dwaWebACLId :: Lens' DeleteWebACL Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
dwaChangeToken :: Lens' DeleteWebACL Text

-- | Creates a value of <a>DeleteWebACLResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dwarsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>DeleteWebACL</tt> request. You can also use this
--   value to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>dwarsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteWebACLResponse :: Int -> DeleteWebACLResponse

-- | <i>See:</i> <a>deleteWebACLResponse</a> smart constructor.
data DeleteWebACLResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>DeleteWebACL</tt> request. You can also use this value to query
--   the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
dwarsChangeToken :: Lens' DeleteWebACLResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dwarsResponseStatus :: Lens' DeleteWebACLResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.DeleteWebACL.DeleteWebACLResponse
instance Data.Data.Data Network.AWS.WAF.DeleteWebACL.DeleteWebACLResponse
instance GHC.Show.Show Network.AWS.WAF.DeleteWebACL.DeleteWebACLResponse
instance GHC.Read.Read Network.AWS.WAF.DeleteWebACL.DeleteWebACLResponse
instance GHC.Classes.Eq Network.AWS.WAF.DeleteWebACL.DeleteWebACLResponse
instance GHC.Generics.Generic Network.AWS.WAF.DeleteWebACL.DeleteWebACL
instance Data.Data.Data Network.AWS.WAF.DeleteWebACL.DeleteWebACL
instance GHC.Show.Show Network.AWS.WAF.DeleteWebACL.DeleteWebACL
instance GHC.Read.Read Network.AWS.WAF.DeleteWebACL.DeleteWebACL
instance GHC.Classes.Eq Network.AWS.WAF.DeleteWebACL.DeleteWebACL
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.DeleteWebACL.DeleteWebACL
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteWebACL.DeleteWebACLResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.DeleteWebACL.DeleteWebACL
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteWebACL.DeleteWebACL
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.DeleteWebACL.DeleteWebACL
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.DeleteWebACL.DeleteWebACL
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.DeleteWebACL.DeleteWebACL
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.DeleteWebACL.DeleteWebACL


-- | Permanently deletes a <a>SqlInjectionMatchSet</a> . You can't delete a
--   <tt>SqlInjectionMatchSet</tt> if it's still used in any <tt>Rules</tt>
--   or if it still contains any <a>SqlInjectionMatchTuple</a> objects.
--   
--   If you just want to remove a <tt>SqlInjectionMatchSet</tt> from a
--   <tt>Rule</tt> , use <tt>UpdateRule</tt> .
--   
--   To permanently delete a <tt>SqlInjectionMatchSet</tt> from AWS WAF,
--   perform the following steps:
--   
--   <ul>
--   <li>Update the <tt>SqlInjectionMatchSet</tt> to remove filters, if
--   any. For more information, see <tt>UpdateSqlInjectionMatchSet</tt>
--   .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>DeleteSqlInjectionMatchSet</tt> request.</li>
--   <li>Submit a <tt>DeleteSqlInjectionMatchSet</tt> request.</li>
--   </ul>
module Network.AWS.WAF.DeleteSqlInjectionMatchSet

-- | Creates a value of <a>DeleteSqlInjectionMatchSet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsimsSqlInjectionMatchSetId</a> - The
--   <tt>SqlInjectionMatchSetId</tt> of the <a>SqlInjectionMatchSet</a>
--   that you want to delete. <tt>SqlInjectionMatchSetId</tt> is returned
--   by <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .</li>
--   <li><a>dsimsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
deleteSqlInjectionMatchSet :: Text -> Text -> DeleteSqlInjectionMatchSet

-- | A request to delete a <a>SqlInjectionMatchSet</a> from AWS WAF.
--   
--   <i>See:</i> <a>deleteSqlInjectionMatchSet</a> smart constructor.
data DeleteSqlInjectionMatchSet

-- | The <tt>SqlInjectionMatchSetId</tt> of the <a>SqlInjectionMatchSet</a>
--   that you want to delete. <tt>SqlInjectionMatchSetId</tt> is returned
--   by <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .
dsimsSqlInjectionMatchSetId :: Lens' DeleteSqlInjectionMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
dsimsChangeToken :: Lens' DeleteSqlInjectionMatchSet Text

-- | Creates a value of <a>DeleteSqlInjectionMatchSetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsimsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>DeleteSqlInjectionMatchSet</tt> request. You can
--   also use this value to query the status of the request. For more
--   information, see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>dsimsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteSqlInjectionMatchSetResponse :: Int -> DeleteSqlInjectionMatchSetResponse

-- | The response to a request to delete a <a>SqlInjectionMatchSet</a> from
--   AWS WAF.
--   
--   <i>See:</i> <a>deleteSqlInjectionMatchSetResponse</a> smart
--   constructor.
data DeleteSqlInjectionMatchSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>DeleteSqlInjectionMatchSet</tt> request. You can also use this
--   value to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
dsimsrsChangeToken :: Lens' DeleteSqlInjectionMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dsimsrsResponseStatus :: Lens' DeleteSqlInjectionMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSet
instance Data.Data.Data Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSet
instance GHC.Show.Show Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSet
instance GHC.Read.Read Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSet


-- | Permanently deletes a <a>SizeConstraintSet</a> . You can't delete a
--   <tt>SizeConstraintSet</tt> if it's still used in any <tt>Rules</tt> or
--   if it still includes any <a>SizeConstraint</a> objects (any filters).
--   
--   If you just want to remove a <tt>SizeConstraintSet</tt> from a
--   <tt>Rule</tt> , use <tt>UpdateRule</tt> .
--   
--   To permanently delete a <tt>SizeConstraintSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Update the <tt>SizeConstraintSet</tt> to remove filters, if any.
--   For more information, see <tt>UpdateSizeConstraintSet</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>DeleteSizeConstraintSet</tt> request.</li>
--   <li>Submit a <tt>DeleteSizeConstraintSet</tt> request.</li>
--   </ul>
module Network.AWS.WAF.DeleteSizeConstraintSet

-- | Creates a value of <a>DeleteSizeConstraintSet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dscsSizeConstraintSetId</a> - The <tt>SizeConstraintSetId</tt>
--   of the <a>SizeConstraintSet</a> that you want to delete.
--   <tt>SizeConstraintSetId</tt> is returned by
--   <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .</li>
--   <li><a>dscsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
deleteSizeConstraintSet :: Text -> Text -> DeleteSizeConstraintSet

-- | <i>See:</i> <a>deleteSizeConstraintSet</a> smart constructor.
data DeleteSizeConstraintSet

-- | The <tt>SizeConstraintSetId</tt> of the <a>SizeConstraintSet</a> that
--   you want to delete. <tt>SizeConstraintSetId</tt> is returned by
--   <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .
dscsSizeConstraintSetId :: Lens' DeleteSizeConstraintSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
dscsChangeToken :: Lens' DeleteSizeConstraintSet Text

-- | Creates a value of <a>DeleteSizeConstraintSetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dscsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>DeleteSizeConstraintSet</tt> request. You can also
--   use this value to query the status of the request. For more
--   information, see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>dscsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteSizeConstraintSetResponse :: Int -> DeleteSizeConstraintSetResponse

-- | <i>See:</i> <a>deleteSizeConstraintSetResponse</a> smart constructor.
data DeleteSizeConstraintSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>DeleteSizeConstraintSet</tt> request. You can also use this value
--   to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
dscsrsChangeToken :: Lens' DeleteSizeConstraintSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dscsrsResponseStatus :: Lens' DeleteSizeConstraintSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSetResponse
instance Data.Data.Data Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSetResponse
instance GHC.Show.Show Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSetResponse
instance GHC.Read.Read Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSet
instance Data.Data.Data Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSet
instance GHC.Show.Show Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSet
instance GHC.Read.Read Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSet
instance GHC.Classes.Eq Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSet


-- | Permanently deletes a <a>RuleGroup</a> . You can't delete a
--   <tt>RuleGroup</tt> if it's still used in any <tt>WebACL</tt> objects
--   or if it still includes any rules.
--   
--   If you just want to remove a <tt>RuleGroup</tt> from a <tt>WebACL</tt>
--   , use <tt>UpdateWebACL</tt> .
--   
--   To permanently delete a <tt>RuleGroup</tt> from AWS WAF, perform the
--   following steps:
--   
--   <ul>
--   <li>Update the <tt>RuleGroup</tt> to remove rules, if any. For more
--   information, see <tt>UpdateRuleGroup</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>DeleteRuleGroup</tt> request.</li>
--   <li>Submit a <tt>DeleteRuleGroup</tt> request.</li>
--   </ul>
module Network.AWS.WAF.DeleteRuleGroup

-- | Creates a value of <a>DeleteRuleGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drgRuleGroupId</a> - The <tt>RuleGroupId</tt> of the
--   <a>RuleGroup</a> that you want to delete. <tt>RuleGroupId</tt> is
--   returned by <tt>CreateRuleGroup</tt> and by <tt>ListRuleGroups</tt>
--   .</li>
--   <li><a>drgChangeToken</a> - The value returned by the most recent call
--   to <tt>GetChangeToken</tt> .</li>
--   </ul>
deleteRuleGroup :: Text -> Text -> DeleteRuleGroup

-- | <i>See:</i> <a>deleteRuleGroup</a> smart constructor.
data DeleteRuleGroup

-- | The <tt>RuleGroupId</tt> of the <a>RuleGroup</a> that you want to
--   delete. <tt>RuleGroupId</tt> is returned by <tt>CreateRuleGroup</tt>
--   and by <tt>ListRuleGroups</tt> .
drgRuleGroupId :: Lens' DeleteRuleGroup Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
drgChangeToken :: Lens' DeleteRuleGroup Text

-- | Creates a value of <a>DeleteRuleGroupResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drgrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>DeleteRuleGroup</tt> request. You can also use this
--   value to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>drgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteRuleGroupResponse :: Int -> DeleteRuleGroupResponse

-- | <i>See:</i> <a>deleteRuleGroupResponse</a> smart constructor.
data DeleteRuleGroupResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>DeleteRuleGroup</tt> request. You can also use this value to query
--   the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
drgrsChangeToken :: Lens' DeleteRuleGroupResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drgrsResponseStatus :: Lens' DeleteRuleGroupResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroupResponse
instance Data.Data.Data Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroupResponse
instance GHC.Show.Show Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroupResponse
instance GHC.Read.Read Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroupResponse
instance GHC.Classes.Eq Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroupResponse
instance GHC.Generics.Generic Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroup
instance Data.Data.Data Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroup
instance GHC.Show.Show Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroup
instance GHC.Read.Read Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroup
instance GHC.Classes.Eq Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroup
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroup
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroupResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroup
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroup
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.DeleteRuleGroup.DeleteRuleGroup


-- | Permanently deletes a <a>Rule</a> . You can't delete a <tt>Rule</tt>
--   if it's still used in any <tt>WebACL</tt> objects or if it still
--   includes any predicates, such as <tt>ByteMatchSet</tt> objects.
--   
--   If you just want to remove a <tt>Rule</tt> from a <tt>WebACL</tt> ,
--   use <tt>UpdateWebACL</tt> .
--   
--   To permanently delete a <tt>Rule</tt> from AWS WAF, perform the
--   following steps:
--   
--   <ul>
--   <li>Update the <tt>Rule</tt> to remove predicates, if any. For more
--   information, see <tt>UpdateRule</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a <tt>DeleteRule</tt>
--   request.</li>
--   <li>Submit a <tt>DeleteRule</tt> request.</li>
--   </ul>
module Network.AWS.WAF.DeleteRule

-- | Creates a value of <a>DeleteRule</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drRuleId</a> - The <tt>RuleId</tt> of the <a>Rule</a> that you
--   want to delete. <tt>RuleId</tt> is returned by <tt>CreateRule</tt> and
--   by <tt>ListRules</tt> .</li>
--   <li><a>drChangeToken</a> - The value returned by the most recent call
--   to <tt>GetChangeToken</tt> .</li>
--   </ul>
deleteRule :: Text -> Text -> DeleteRule

-- | <i>See:</i> <a>deleteRule</a> smart constructor.
data DeleteRule

-- | The <tt>RuleId</tt> of the <a>Rule</a> that you want to delete.
--   <tt>RuleId</tt> is returned by <tt>CreateRule</tt> and by
--   <tt>ListRules</tt> .
drRuleId :: Lens' DeleteRule Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
drChangeToken :: Lens' DeleteRule Text

-- | Creates a value of <a>DeleteRuleResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drrsChangeToken</a> - The <tt>ChangeToken</tt> that you used to
--   submit the <tt>DeleteRule</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>drrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteRuleResponse :: Int -> DeleteRuleResponse

-- | <i>See:</i> <a>deleteRuleResponse</a> smart constructor.
data DeleteRuleResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>DeleteRule</tt> request. You can also use this value to query the
--   status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
drrsChangeToken :: Lens' DeleteRuleResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drrsResponseStatus :: Lens' DeleteRuleResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.DeleteRule.DeleteRuleResponse
instance Data.Data.Data Network.AWS.WAF.DeleteRule.DeleteRuleResponse
instance GHC.Show.Show Network.AWS.WAF.DeleteRule.DeleteRuleResponse
instance GHC.Read.Read Network.AWS.WAF.DeleteRule.DeleteRuleResponse
instance GHC.Classes.Eq Network.AWS.WAF.DeleteRule.DeleteRuleResponse
instance GHC.Generics.Generic Network.AWS.WAF.DeleteRule.DeleteRule
instance Data.Data.Data Network.AWS.WAF.DeleteRule.DeleteRule
instance GHC.Show.Show Network.AWS.WAF.DeleteRule.DeleteRule
instance GHC.Read.Read Network.AWS.WAF.DeleteRule.DeleteRule
instance GHC.Classes.Eq Network.AWS.WAF.DeleteRule.DeleteRule
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.DeleteRule.DeleteRule
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteRule.DeleteRuleResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.DeleteRule.DeleteRule
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteRule.DeleteRule
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.DeleteRule.DeleteRule
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.DeleteRule.DeleteRule
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.DeleteRule.DeleteRule
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.DeleteRule.DeleteRule


-- | Permanently deletes a <a>RegexPatternSet</a> . You can't delete a
--   <tt>RegexPatternSet</tt> if it's still used in any
--   <tt>RegexMatchSet</tt> or if the <tt>RegexPatternSet</tt> is not
--   empty.
module Network.AWS.WAF.DeleteRegexPatternSet

-- | Creates a value of <a>DeleteRegexPatternSet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drpsRegexPatternSetId</a> - The <tt>RegexPatternSetId</tt> of
--   the <a>RegexPatternSet</a> that you want to delete.
--   <tt>RegexPatternSetId</tt> is returned by
--   <tt>CreateRegexPatternSet</tt> and by <tt>ListRegexPatternSets</tt>
--   .</li>
--   <li><a>drpsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
deleteRegexPatternSet :: Text -> Text -> DeleteRegexPatternSet

-- | <i>See:</i> <a>deleteRegexPatternSet</a> smart constructor.
data DeleteRegexPatternSet

-- | The <tt>RegexPatternSetId</tt> of the <a>RegexPatternSet</a> that you
--   want to delete. <tt>RegexPatternSetId</tt> is returned by
--   <tt>CreateRegexPatternSet</tt> and by <tt>ListRegexPatternSets</tt> .
drpsRegexPatternSetId :: Lens' DeleteRegexPatternSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
drpsChangeToken :: Lens' DeleteRegexPatternSet Text

-- | Creates a value of <a>DeleteRegexPatternSetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drpsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>DeleteRegexPatternSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>drpsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteRegexPatternSetResponse :: Int -> DeleteRegexPatternSetResponse

-- | <i>See:</i> <a>deleteRegexPatternSetResponse</a> smart constructor.
data DeleteRegexPatternSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>DeleteRegexPatternSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
drpsrsChangeToken :: Lens' DeleteRegexPatternSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drpsrsResponseStatus :: Lens' DeleteRegexPatternSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSetResponse
instance Data.Data.Data Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSetResponse
instance GHC.Show.Show Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSetResponse
instance GHC.Read.Read Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSet
instance Data.Data.Data Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSet
instance GHC.Show.Show Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSet
instance GHC.Read.Read Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSet
instance GHC.Classes.Eq Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.DeleteRegexPatternSet.DeleteRegexPatternSet


-- | Permanently deletes a <a>RegexMatchSet</a> . You can't delete a
--   <tt>RegexMatchSet</tt> if it's still used in any <tt>Rules</tt> or if
--   it still includes any <tt>RegexMatchTuples</tt> objects (any filters).
--   
--   If you just want to remove a <tt>RegexMatchSet</tt> from a
--   <tt>Rule</tt> , use <tt>UpdateRule</tt> .
--   
--   To permanently delete a <tt>RegexMatchSet</tt> , perform the following
--   steps:
--   
--   <ul>
--   <li>Update the <tt>RegexMatchSet</tt> to remove filters, if any. For
--   more information, see <tt>UpdateRegexMatchSet</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>DeleteRegexMatchSet</tt> request.</li>
--   <li>Submit a <tt>DeleteRegexMatchSet</tt> request.</li>
--   </ul>
module Network.AWS.WAF.DeleteRegexMatchSet

-- | Creates a value of <a>DeleteRegexMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drmsRegexMatchSetId</a> - The <tt>RegexMatchSetId</tt> of the
--   <a>RegexMatchSet</a> that you want to delete. <tt>RegexMatchSetId</tt>
--   is returned by <tt>CreateRegexMatchSet</tt> and by
--   <tt>ListRegexMatchSets</tt> .</li>
--   <li><a>drmsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
deleteRegexMatchSet :: Text -> Text -> DeleteRegexMatchSet

-- | <i>See:</i> <a>deleteRegexMatchSet</a> smart constructor.
data DeleteRegexMatchSet

-- | The <tt>RegexMatchSetId</tt> of the <a>RegexMatchSet</a> that you want
--   to delete. <tt>RegexMatchSetId</tt> is returned by
--   <tt>CreateRegexMatchSet</tt> and by <tt>ListRegexMatchSets</tt> .
drmsRegexMatchSetId :: Lens' DeleteRegexMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
drmsChangeToken :: Lens' DeleteRegexMatchSet Text

-- | Creates a value of <a>DeleteRegexMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drmsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>DeleteRegexMatchSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>drmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteRegexMatchSetResponse :: Int -> DeleteRegexMatchSetResponse

-- | <i>See:</i> <a>deleteRegexMatchSetResponse</a> smart constructor.
data DeleteRegexMatchSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>DeleteRegexMatchSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
drmsrsChangeToken :: Lens' DeleteRegexMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drmsrsResponseStatus :: Lens' DeleteRegexMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSet
instance Data.Data.Data Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSet
instance GHC.Show.Show Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSet
instance GHC.Read.Read Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.DeleteRegexMatchSet.DeleteRegexMatchSet


-- | Permanently deletes a <a>RateBasedRule</a> . You can't delete a rule
--   if it's still used in any <tt>WebACL</tt> objects or if it still
--   includes any predicates, such as <tt>ByteMatchSet</tt> objects.
--   
--   If you just want to remove a rule from a <tt>WebACL</tt> , use
--   <tt>UpdateWebACL</tt> .
--   
--   To permanently delete a <tt>RateBasedRule</tt> from AWS WAF, perform
--   the following steps:
--   
--   <ul>
--   <li>Update the <tt>RateBasedRule</tt> to remove predicates, if any.
--   For more information, see <tt>UpdateRateBasedRule</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>DeleteRateBasedRule</tt> request.</li>
--   <li>Submit a <tt>DeleteRateBasedRule</tt> request.</li>
--   </ul>
module Network.AWS.WAF.DeleteRateBasedRule

-- | Creates a value of <a>DeleteRateBasedRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drbrRuleId</a> - The <tt>RuleId</tt> of the
--   <a>RateBasedRule</a> that you want to delete. <tt>RuleId</tt> is
--   returned by <tt>CreateRateBasedRule</tt> and by
--   <tt>ListRateBasedRules</tt> .</li>
--   <li><a>drbrChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
deleteRateBasedRule :: Text -> Text -> DeleteRateBasedRule

-- | <i>See:</i> <a>deleteRateBasedRule</a> smart constructor.
data DeleteRateBasedRule

-- | The <tt>RuleId</tt> of the <a>RateBasedRule</a> that you want to
--   delete. <tt>RuleId</tt> is returned by <tt>CreateRateBasedRule</tt>
--   and by <tt>ListRateBasedRules</tt> .
drbrRuleId :: Lens' DeleteRateBasedRule Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
drbrChangeToken :: Lens' DeleteRateBasedRule Text

-- | Creates a value of <a>DeleteRateBasedRuleResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drbrrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>DeleteRateBasedRule</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>drbrrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteRateBasedRuleResponse :: Int -> DeleteRateBasedRuleResponse

-- | <i>See:</i> <a>deleteRateBasedRuleResponse</a> smart constructor.
data DeleteRateBasedRuleResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>DeleteRateBasedRule</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
drbrrsChangeToken :: Lens' DeleteRateBasedRuleResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drbrrsResponseStatus :: Lens' DeleteRateBasedRuleResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRuleResponse
instance Data.Data.Data Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRuleResponse
instance GHC.Show.Show Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRuleResponse
instance GHC.Read.Read Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRuleResponse
instance GHC.Classes.Eq Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRuleResponse
instance GHC.Generics.Generic Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRule
instance Data.Data.Data Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRule
instance GHC.Show.Show Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRule
instance GHC.Read.Read Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRule
instance GHC.Classes.Eq Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRule
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRule
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRuleResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRule
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRule
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRule
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRule
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRule
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.DeleteRateBasedRule.DeleteRateBasedRule


-- | Permanently deletes an IAM policy from the specified RuleGroup.
--   
--   The user making the request must be the owner of the RuleGroup.
module Network.AWS.WAF.DeletePermissionPolicy

-- | Creates a value of <a>DeletePermissionPolicy</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dppResourceARN</a> - The Amazon Resource Name (ARN) of the
--   RuleGroup from which you want to delete the policy. The user making
--   the request must be the owner of the RuleGroup.</li>
--   </ul>
deletePermissionPolicy :: Text -> DeletePermissionPolicy

-- | <i>See:</i> <a>deletePermissionPolicy</a> smart constructor.
data DeletePermissionPolicy

-- | The Amazon Resource Name (ARN) of the RuleGroup from which you want to
--   delete the policy. The user making the request must be the owner of
--   the RuleGroup.
dppResourceARN :: Lens' DeletePermissionPolicy Text

-- | Creates a value of <a>DeletePermissionPolicyResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dpprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deletePermissionPolicyResponse :: Int -> DeletePermissionPolicyResponse

-- | <i>See:</i> <a>deletePermissionPolicyResponse</a> smart constructor.
data DeletePermissionPolicyResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dpprsResponseStatus :: Lens' DeletePermissionPolicyResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicyResponse
instance Data.Data.Data Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicyResponse
instance GHC.Show.Show Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicyResponse
instance GHC.Read.Read Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicyResponse
instance GHC.Classes.Eq Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicyResponse
instance GHC.Generics.Generic Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicy
instance Data.Data.Data Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicy
instance GHC.Show.Show Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicy
instance GHC.Read.Read Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicy
instance GHC.Classes.Eq Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicy
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicy
instance Control.DeepSeq.NFData Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicyResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicy
instance Control.DeepSeq.NFData Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicy
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicy
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicy
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicy
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.DeletePermissionPolicy.DeletePermissionPolicy


-- | Permanently deletes an <a>IPSet</a> . You can't delete an
--   <tt>IPSet</tt> if it's still used in any <tt>Rules</tt> or if it still
--   includes any IP addresses.
--   
--   If you just want to remove an <tt>IPSet</tt> from a <tt>Rule</tt> ,
--   use <tt>UpdateRule</tt> .
--   
--   To permanently delete an <tt>IPSet</tt> from AWS WAF, perform the
--   following steps:
--   
--   <ul>
--   <li>Update the <tt>IPSet</tt> to remove IP address ranges, if any. For
--   more information, see <tt>UpdateIPSet</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>DeleteIPSet</tt> request.</li>
--   <li>Submit a <tt>DeleteIPSet</tt> request.</li>
--   </ul>
module Network.AWS.WAF.DeleteIPSet

-- | Creates a value of <a>DeleteIPSet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>disIPSetId</a> - The <tt>IPSetId</tt> of the <a>IPSet</a> that
--   you want to delete. <tt>IPSetId</tt> is returned by
--   <tt>CreateIPSet</tt> and by <tt>ListIPSets</tt> .</li>
--   <li><a>disChangeToken</a> - The value returned by the most recent call
--   to <tt>GetChangeToken</tt> .</li>
--   </ul>
deleteIPSet :: Text -> Text -> DeleteIPSet

-- | <i>See:</i> <a>deleteIPSet</a> smart constructor.
data DeleteIPSet

-- | The <tt>IPSetId</tt> of the <a>IPSet</a> that you want to delete.
--   <tt>IPSetId</tt> is returned by <tt>CreateIPSet</tt> and by
--   <tt>ListIPSets</tt> .
disIPSetId :: Lens' DeleteIPSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
disChangeToken :: Lens' DeleteIPSet Text

-- | Creates a value of <a>DeleteIPSetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>disrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>DeleteIPSet</tt> request. You can also use this
--   value to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>disrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteIPSetResponse :: Int -> DeleteIPSetResponse

-- | <i>See:</i> <a>deleteIPSetResponse</a> smart constructor.
data DeleteIPSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>DeleteIPSet</tt> request. You can also use this value to query the
--   status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
disrsChangeToken :: Lens' DeleteIPSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
disrsResponseStatus :: Lens' DeleteIPSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.DeleteIPSet.DeleteIPSetResponse
instance Data.Data.Data Network.AWS.WAF.DeleteIPSet.DeleteIPSetResponse
instance GHC.Show.Show Network.AWS.WAF.DeleteIPSet.DeleteIPSetResponse
instance GHC.Read.Read Network.AWS.WAF.DeleteIPSet.DeleteIPSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.DeleteIPSet.DeleteIPSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.DeleteIPSet.DeleteIPSet
instance Data.Data.Data Network.AWS.WAF.DeleteIPSet.DeleteIPSet
instance GHC.Show.Show Network.AWS.WAF.DeleteIPSet.DeleteIPSet
instance GHC.Read.Read Network.AWS.WAF.DeleteIPSet.DeleteIPSet
instance GHC.Classes.Eq Network.AWS.WAF.DeleteIPSet.DeleteIPSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.DeleteIPSet.DeleteIPSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteIPSet.DeleteIPSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.DeleteIPSet.DeleteIPSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteIPSet.DeleteIPSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.DeleteIPSet.DeleteIPSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.DeleteIPSet.DeleteIPSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.DeleteIPSet.DeleteIPSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.DeleteIPSet.DeleteIPSet


-- | Permanently deletes a <a>GeoMatchSet</a> . You can't delete a
--   <tt>GeoMatchSet</tt> if it's still used in any <tt>Rules</tt> or if it
--   still includes any countries.
--   
--   If you just want to remove a <tt>GeoMatchSet</tt> from a <tt>Rule</tt>
--   , use <tt>UpdateRule</tt> .
--   
--   To permanently delete a <tt>GeoMatchSet</tt> from AWS WAF, perform the
--   following steps:
--   
--   <ul>
--   <li>Update the <tt>GeoMatchSet</tt> to remove any countries. For more
--   information, see <tt>UpdateGeoMatchSet</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>DeleteGeoMatchSet</tt> request.</li>
--   <li>Submit a <tt>DeleteGeoMatchSet</tt> request.</li>
--   </ul>
module Network.AWS.WAF.DeleteGeoMatchSet

-- | Creates a value of <a>DeleteGeoMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dgmsGeoMatchSetId</a> - The <tt>GeoMatchSetID</tt> of the
--   <a>GeoMatchSet</a> that you want to delete. <tt>GeoMatchSetId</tt> is
--   returned by <tt>CreateGeoMatchSet</tt> and by
--   <tt>ListGeoMatchSets</tt> .</li>
--   <li><a>dgmsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
deleteGeoMatchSet :: Text -> Text -> DeleteGeoMatchSet

-- | <i>See:</i> <a>deleteGeoMatchSet</a> smart constructor.
data DeleteGeoMatchSet

-- | The <tt>GeoMatchSetID</tt> of the <a>GeoMatchSet</a> that you want to
--   delete. <tt>GeoMatchSetId</tt> is returned by
--   <tt>CreateGeoMatchSet</tt> and by <tt>ListGeoMatchSets</tt> .
dgmsGeoMatchSetId :: Lens' DeleteGeoMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
dgmsChangeToken :: Lens' DeleteGeoMatchSet Text

-- | Creates a value of <a>DeleteGeoMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dgmsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>DeleteGeoMatchSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>dgmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteGeoMatchSetResponse :: Int -> DeleteGeoMatchSetResponse

-- | <i>See:</i> <a>deleteGeoMatchSetResponse</a> smart constructor.
data DeleteGeoMatchSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>DeleteGeoMatchSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
dgmsrsChangeToken :: Lens' DeleteGeoMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dgmsrsResponseStatus :: Lens' DeleteGeoMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSet
instance Data.Data.Data Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSet
instance GHC.Show.Show Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSet
instance GHC.Read.Read Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.DeleteGeoMatchSet.DeleteGeoMatchSet


-- | Permanently deletes a <a>ByteMatchSet</a> . You can't delete a
--   <tt>ByteMatchSet</tt> if it's still used in any <tt>Rules</tt> or if
--   it still includes any <a>ByteMatchTuple</a> objects (any filters).
--   
--   If you just want to remove a <tt>ByteMatchSet</tt> from a
--   <tt>Rule</tt> , use <tt>UpdateRule</tt> .
--   
--   To permanently delete a <tt>ByteMatchSet</tt> , perform the following
--   steps:
--   
--   <ul>
--   <li>Update the <tt>ByteMatchSet</tt> to remove filters, if any. For
--   more information, see <tt>UpdateByteMatchSet</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>DeleteByteMatchSet</tt> request.</li>
--   <li>Submit a <tt>DeleteByteMatchSet</tt> request.</li>
--   </ul>
module Network.AWS.WAF.DeleteByteMatchSet

-- | Creates a value of <a>DeleteByteMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dbmsByteMatchSetId</a> - The <tt>ByteMatchSetId</tt> of the
--   <a>ByteMatchSet</a> that you want to delete. <tt>ByteMatchSetId</tt>
--   is returned by <tt>CreateByteMatchSet</tt> and by
--   <tt>ListByteMatchSets</tt> .</li>
--   <li><a>dbmsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
deleteByteMatchSet :: Text -> Text -> DeleteByteMatchSet

-- | <i>See:</i> <a>deleteByteMatchSet</a> smart constructor.
data DeleteByteMatchSet

-- | The <tt>ByteMatchSetId</tt> of the <a>ByteMatchSet</a> that you want
--   to delete. <tt>ByteMatchSetId</tt> is returned by
--   <tt>CreateByteMatchSet</tt> and by <tt>ListByteMatchSets</tt> .
dbmsByteMatchSetId :: Lens' DeleteByteMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
dbmsChangeToken :: Lens' DeleteByteMatchSet Text

-- | Creates a value of <a>DeleteByteMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dbmsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>DeleteByteMatchSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>dbmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteByteMatchSetResponse :: Int -> DeleteByteMatchSetResponse

-- | <i>See:</i> <a>deleteByteMatchSetResponse</a> smart constructor.
data DeleteByteMatchSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>DeleteByteMatchSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
dbmsrsChangeToken :: Lens' DeleteByteMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dbmsrsResponseStatus :: Lens' DeleteByteMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSet
instance Data.Data.Data Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSet
instance GHC.Show.Show Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSet
instance GHC.Read.Read Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSet


-- | Creates an <tt>XssMatchSet</tt> , which you use to allow, block, or
--   count requests that contain cross-site scripting attacks in the
--   specified part of web requests. AWS WAF searches for character
--   sequences that are likely to be malicious strings.
--   
--   To create and configure an <tt>XssMatchSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>CreateXssMatchSet</tt> request.</li>
--   <li>Submit a <tt>CreateXssMatchSet</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateXssMatchSet</tt> request.</li>
--   <li>Submit an <tt>UpdateXssMatchSet</tt> request to specify the parts
--   of web requests in which you want to allow, block, or count cross-site
--   scripting attacks.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.CreateXSSMatchSet

-- | Creates a value of <a>CreateXSSMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cxmsName</a> - A friendly name or description for the
--   <tt>XssMatchSet</tt> that you're creating. You can't change
--   <tt>Name</tt> after you create the <tt>XssMatchSet</tt> .</li>
--   <li><a>cxmsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
createXSSMatchSet :: Text -> Text -> CreateXSSMatchSet

-- | A request to create an <tt>XssMatchSet</tt> .
--   
--   <i>See:</i> <a>createXSSMatchSet</a> smart constructor.
data CreateXSSMatchSet

-- | A friendly name or description for the <tt>XssMatchSet</tt> that
--   you're creating. You can't change <tt>Name</tt> after you create the
--   <tt>XssMatchSet</tt> .
cxmsName :: Lens' CreateXSSMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
cxmsChangeToken :: Lens' CreateXSSMatchSet Text

-- | Creates a value of <a>CreateXSSMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cxmsrsXSSMatchSet</a> - An <tt>XssMatchSet</tt> .</li>
--   <li><a>cxmsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>CreateXssMatchSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>cxmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createXSSMatchSetResponse :: Int -> CreateXSSMatchSetResponse

-- | The response to a <tt>CreateXssMatchSet</tt> request.
--   
--   <i>See:</i> <a>createXSSMatchSetResponse</a> smart constructor.
data CreateXSSMatchSetResponse

-- | An <tt>XssMatchSet</tt> .
cxmsrsXSSMatchSet :: Lens' CreateXSSMatchSetResponse (Maybe XSSMatchSet)

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>CreateXssMatchSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
cxmsrsChangeToken :: Lens' CreateXSSMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
cxmsrsResponseStatus :: Lens' CreateXSSMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSet
instance Data.Data.Data Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSet
instance GHC.Show.Show Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSet
instance GHC.Read.Read Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSet


-- | Creates a <tt>WebACL</tt> , which contains the <tt>Rules</tt> that
--   identify the CloudFront web requests that you want to allow, block, or
--   count. AWS WAF evaluates <tt>Rules</tt> in order based on the value of
--   <tt>Priority</tt> for each <tt>Rule</tt> .
--   
--   You also specify a default action, either <tt>ALLOW</tt> or
--   <tt>BLOCK</tt> . If a web request doesn't match any of the
--   <tt>Rules</tt> in a <tt>WebACL</tt> , AWS WAF responds to the request
--   with the default action.
--   
--   To create and configure a <tt>WebACL</tt> , perform the following
--   steps:
--   
--   <ul>
--   <li>Create and update the <tt>ByteMatchSet</tt> objects and other
--   predicates that you want to include in <tt>Rules</tt> . For more
--   information, see <tt>CreateByteMatchSet</tt> ,
--   <tt>UpdateByteMatchSet</tt> , <tt>CreateIPSet</tt> ,
--   <tt>UpdateIPSet</tt> , <tt>CreateSqlInjectionMatchSet</tt> , and
--   <tt>UpdateSqlInjectionMatchSet</tt> .</li>
--   <li>Create and update the <tt>Rules</tt> that you want to include in
--   the <tt>WebACL</tt> . For more information, see <tt>CreateRule</tt>
--   and <tt>UpdateRule</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>CreateWebACL</tt> request.</li>
--   <li>Submit a <tt>CreateWebACL</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateWebACL</tt> request.</li>
--   <li>Submit an <tt>UpdateWebACL</tt> request to specify the
--   <tt>Rules</tt> that you want to include in the <tt>WebACL</tt> , to
--   specify the default action, and to associate the <tt>WebACL</tt> with
--   a CloudFront distribution.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API, see the <a>AWS
--   WAF Developer Guide</a> .
module Network.AWS.WAF.CreateWebACL

-- | Creates a value of <a>CreateWebACL</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cwaName</a> - A friendly name or description of the
--   <a>WebACL</a> . You can't change <tt>Name</tt> after you create the
--   <tt>WebACL</tt> .</li>
--   <li><a>cwaMetricName</a> - A friendly name or description for the
--   metrics for this <tt>WebACL</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change <tt>MetricName</tt> after you create the
--   <tt>WebACL</tt> .</li>
--   <li><a>cwaDefaultAction</a> - The action that you want AWS WAF to take
--   when a request doesn't match the criteria specified in any of the
--   <tt>Rule</tt> objects that are associated with the <tt>WebACL</tt>
--   .</li>
--   <li><a>cwaChangeToken</a> - The value returned by the most recent call
--   to <tt>GetChangeToken</tt> .</li>
--   </ul>
createWebACL :: Text -> Text -> WafAction -> Text -> CreateWebACL

-- | <i>See:</i> <a>createWebACL</a> smart constructor.
data CreateWebACL

-- | A friendly name or description of the <a>WebACL</a> . You can't change
--   <tt>Name</tt> after you create the <tt>WebACL</tt> .
cwaName :: Lens' CreateWebACL Text

-- | A friendly name or description for the metrics for this
--   <tt>WebACL</tt> . The name can contain only alphanumeric characters
--   (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change
--   <tt>MetricName</tt> after you create the <tt>WebACL</tt> .
cwaMetricName :: Lens' CreateWebACL Text

-- | The action that you want AWS WAF to take when a request doesn't match
--   the criteria specified in any of the <tt>Rule</tt> objects that are
--   associated with the <tt>WebACL</tt> .
cwaDefaultAction :: Lens' CreateWebACL WafAction

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
cwaChangeToken :: Lens' CreateWebACL Text

-- | Creates a value of <a>CreateWebACLResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cwarsWebACL</a> - The <a>WebACL</a> returned in the
--   <tt>CreateWebACL</tt> response.</li>
--   <li><a>cwarsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>CreateWebACL</tt> request. You can also use this
--   value to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>cwarsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createWebACLResponse :: Int -> CreateWebACLResponse

-- | <i>See:</i> <a>createWebACLResponse</a> smart constructor.
data CreateWebACLResponse

-- | The <a>WebACL</a> returned in the <tt>CreateWebACL</tt> response.
cwarsWebACL :: Lens' CreateWebACLResponse (Maybe WebACL)

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>CreateWebACL</tt> request. You can also use this value to query
--   the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
cwarsChangeToken :: Lens' CreateWebACLResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
cwarsResponseStatus :: Lens' CreateWebACLResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.CreateWebACL.CreateWebACLResponse
instance Data.Data.Data Network.AWS.WAF.CreateWebACL.CreateWebACLResponse
instance GHC.Show.Show Network.AWS.WAF.CreateWebACL.CreateWebACLResponse
instance GHC.Read.Read Network.AWS.WAF.CreateWebACL.CreateWebACLResponse
instance GHC.Classes.Eq Network.AWS.WAF.CreateWebACL.CreateWebACLResponse
instance GHC.Generics.Generic Network.AWS.WAF.CreateWebACL.CreateWebACL
instance Data.Data.Data Network.AWS.WAF.CreateWebACL.CreateWebACL
instance GHC.Show.Show Network.AWS.WAF.CreateWebACL.CreateWebACL
instance GHC.Read.Read Network.AWS.WAF.CreateWebACL.CreateWebACL
instance GHC.Classes.Eq Network.AWS.WAF.CreateWebACL.CreateWebACL
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.CreateWebACL.CreateWebACL
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateWebACL.CreateWebACLResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.CreateWebACL.CreateWebACL
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateWebACL.CreateWebACL
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.CreateWebACL.CreateWebACL
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.CreateWebACL.CreateWebACL
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.CreateWebACL.CreateWebACL
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.CreateWebACL.CreateWebACL


-- | Creates a <a>SqlInjectionMatchSet</a> , which you use to allow, block,
--   or count requests that contain snippets of SQL code in a specified
--   part of web requests. AWS WAF searches for character sequences that
--   are likely to be malicious strings.
--   
--   To create and configure a <tt>SqlInjectionMatchSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>CreateSqlInjectionMatchSet</tt> request.</li>
--   <li>Submit a <tt>CreateSqlInjectionMatchSet</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateSqlInjectionMatchSet</tt> request.</li>
--   <li>Submit an <tt>UpdateSqlInjectionMatchSet</tt> request to specify
--   the parts of web requests in which you want to allow, block, or count
--   malicious SQL code.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.CreateSqlInjectionMatchSet

-- | Creates a value of <a>CreateSqlInjectionMatchSet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csimsName</a> - A friendly name or description for the
--   <a>SqlInjectionMatchSet</a> that you're creating. You can't change
--   <tt>Name</tt> after you create the <tt>SqlInjectionMatchSet</tt>
--   .</li>
--   <li><a>csimsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
createSqlInjectionMatchSet :: Text -> Text -> CreateSqlInjectionMatchSet

-- | A request to create a <a>SqlInjectionMatchSet</a> .
--   
--   <i>See:</i> <a>createSqlInjectionMatchSet</a> smart constructor.
data CreateSqlInjectionMatchSet

-- | A friendly name or description for the <a>SqlInjectionMatchSet</a>
--   that you're creating. You can't change <tt>Name</tt> after you create
--   the <tt>SqlInjectionMatchSet</tt> .
csimsName :: Lens' CreateSqlInjectionMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
csimsChangeToken :: Lens' CreateSqlInjectionMatchSet Text

-- | Creates a value of <a>CreateSqlInjectionMatchSetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csimsrsSqlInjectionMatchSet</a> - A <a>SqlInjectionMatchSet</a>
--   .</li>
--   <li><a>csimsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>CreateSqlInjectionMatchSet</tt> request. You can
--   also use this value to query the status of the request. For more
--   information, see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>csimsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createSqlInjectionMatchSetResponse :: Int -> CreateSqlInjectionMatchSetResponse

-- | The response to a <tt>CreateSqlInjectionMatchSet</tt> request.
--   
--   <i>See:</i> <a>createSqlInjectionMatchSetResponse</a> smart
--   constructor.
data CreateSqlInjectionMatchSetResponse

-- | A <a>SqlInjectionMatchSet</a> .
csimsrsSqlInjectionMatchSet :: Lens' CreateSqlInjectionMatchSetResponse (Maybe SqlInjectionMatchSet)

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>CreateSqlInjectionMatchSet</tt> request. You can also use this
--   value to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
csimsrsChangeToken :: Lens' CreateSqlInjectionMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
csimsrsResponseStatus :: Lens' CreateSqlInjectionMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSet
instance Data.Data.Data Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSet
instance GHC.Show.Show Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSet
instance GHC.Read.Read Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSet


-- | Creates a <tt>SizeConstraintSet</tt> . You then use
--   <tt>UpdateSizeConstraintSet</tt> to identify the part of a web request
--   that you want AWS WAF to check for length, such as the length of the
--   <tt>User-Agent</tt> header or the length of the query string. For
--   example, you can create a <tt>SizeConstraintSet</tt> that matches any
--   requests that have a query string that is longer than 100 bytes. You
--   can then configure AWS WAF to reject those requests.
--   
--   To create and configure a <tt>SizeConstraintSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>CreateSizeConstraintSet</tt> request.</li>
--   <li>Submit a <tt>CreateSizeConstraintSet</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateSizeConstraintSet</tt> request.</li>
--   <li>Submit an <tt>UpdateSizeConstraintSet</tt> request to specify the
--   part of the request that you want AWS WAF to inspect (for example, the
--   header or the URI) and the value that you want AWS WAF to watch
--   for.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.CreateSizeConstraintSet

-- | Creates a value of <a>CreateSizeConstraintSet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cscsName</a> - A friendly name or description of the
--   <a>SizeConstraintSet</a> . You can't change <tt>Name</tt> after you
--   create a <tt>SizeConstraintSet</tt> .</li>
--   <li><a>cscsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
createSizeConstraintSet :: Text -> Text -> CreateSizeConstraintSet

-- | <i>See:</i> <a>createSizeConstraintSet</a> smart constructor.
data CreateSizeConstraintSet

-- | A friendly name or description of the <a>SizeConstraintSet</a> . You
--   can't change <tt>Name</tt> after you create a
--   <tt>SizeConstraintSet</tt> .
cscsName :: Lens' CreateSizeConstraintSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
cscsChangeToken :: Lens' CreateSizeConstraintSet Text

-- | Creates a value of <a>CreateSizeConstraintSetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cscsrsSizeConstraintSet</a> - A <a>SizeConstraintSet</a> that
--   contains no <tt>SizeConstraint</tt> objects.</li>
--   <li><a>cscsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>CreateSizeConstraintSet</tt> request. You can also
--   use this value to query the status of the request. For more
--   information, see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>cscsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createSizeConstraintSetResponse :: Int -> CreateSizeConstraintSetResponse

-- | <i>See:</i> <a>createSizeConstraintSetResponse</a> smart constructor.
data CreateSizeConstraintSetResponse

-- | A <a>SizeConstraintSet</a> that contains no <tt>SizeConstraint</tt>
--   objects.
cscsrsSizeConstraintSet :: Lens' CreateSizeConstraintSetResponse (Maybe SizeConstraintSet)

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>CreateSizeConstraintSet</tt> request. You can also use this value
--   to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
cscsrsChangeToken :: Lens' CreateSizeConstraintSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
cscsrsResponseStatus :: Lens' CreateSizeConstraintSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSetResponse
instance Data.Data.Data Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSetResponse
instance GHC.Show.Show Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSetResponse
instance GHC.Read.Read Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSet
instance Data.Data.Data Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSet
instance GHC.Show.Show Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSet
instance GHC.Read.Read Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSet
instance GHC.Classes.Eq Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSet


-- | Creates a <tt>RuleGroup</tt> . A rule group is a collection of
--   predefined rules that you add to a web ACL. You use
--   <tt>UpdateRuleGroup</tt> to add rules to the rule group.
--   
--   Rule groups are subject to the following limits:
--   
--   <ul>
--   <li>Three rule groups per account. You can request an increase to this
--   limit by contacting customer support.</li>
--   <li>One rule group per web ACL.</li>
--   <li>Ten rules per rule group.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.CreateRuleGroup

-- | Creates a value of <a>CreateRuleGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crgName</a> - A friendly name or description of the
--   <a>RuleGroup</a> . You can't change <tt>Name</tt> after you create a
--   <tt>RuleGroup</tt> .</li>
--   <li><a>crgMetricName</a> - A friendly name or description for the
--   metrics for this <tt>RuleGroup</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change the name of the metric after you create
--   the <tt>RuleGroup</tt> .</li>
--   <li><a>crgChangeToken</a> - The value returned by the most recent call
--   to <tt>GetChangeToken</tt> .</li>
--   </ul>
createRuleGroup :: Text -> Text -> Text -> CreateRuleGroup

-- | <i>See:</i> <a>createRuleGroup</a> smart constructor.
data CreateRuleGroup

-- | A friendly name or description of the <a>RuleGroup</a> . You can't
--   change <tt>Name</tt> after you create a <tt>RuleGroup</tt> .
crgName :: Lens' CreateRuleGroup Text

-- | A friendly name or description for the metrics for this
--   <tt>RuleGroup</tt> . The name can contain only alphanumeric characters
--   (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change
--   the name of the metric after you create the <tt>RuleGroup</tt> .
crgMetricName :: Lens' CreateRuleGroup Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
crgChangeToken :: Lens' CreateRuleGroup Text

-- | Creates a value of <a>CreateRuleGroupResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crgrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>CreateRuleGroup</tt> request. You can also use this
--   value to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>crgrsRuleGroup</a> - An empty <a>RuleGroup</a> .</li>
--   <li><a>crgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createRuleGroupResponse :: Int -> CreateRuleGroupResponse

-- | <i>See:</i> <a>createRuleGroupResponse</a> smart constructor.
data CreateRuleGroupResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>CreateRuleGroup</tt> request. You can also use this value to query
--   the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
crgrsChangeToken :: Lens' CreateRuleGroupResponse (Maybe Text)

-- | An empty <a>RuleGroup</a> .
crgrsRuleGroup :: Lens' CreateRuleGroupResponse (Maybe RuleGroup)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
crgrsResponseStatus :: Lens' CreateRuleGroupResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.CreateRuleGroup.CreateRuleGroupResponse
instance Data.Data.Data Network.AWS.WAF.CreateRuleGroup.CreateRuleGroupResponse
instance GHC.Show.Show Network.AWS.WAF.CreateRuleGroup.CreateRuleGroupResponse
instance GHC.Read.Read Network.AWS.WAF.CreateRuleGroup.CreateRuleGroupResponse
instance GHC.Classes.Eq Network.AWS.WAF.CreateRuleGroup.CreateRuleGroupResponse
instance GHC.Generics.Generic Network.AWS.WAF.CreateRuleGroup.CreateRuleGroup
instance Data.Data.Data Network.AWS.WAF.CreateRuleGroup.CreateRuleGroup
instance GHC.Show.Show Network.AWS.WAF.CreateRuleGroup.CreateRuleGroup
instance GHC.Read.Read Network.AWS.WAF.CreateRuleGroup.CreateRuleGroup
instance GHC.Classes.Eq Network.AWS.WAF.CreateRuleGroup.CreateRuleGroup
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.CreateRuleGroup.CreateRuleGroup
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateRuleGroup.CreateRuleGroupResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.CreateRuleGroup.CreateRuleGroup
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateRuleGroup.CreateRuleGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.CreateRuleGroup.CreateRuleGroup
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.CreateRuleGroup.CreateRuleGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.CreateRuleGroup.CreateRuleGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.CreateRuleGroup.CreateRuleGroup


-- | Creates a <tt>Rule</tt> , which contains the <tt>IPSet</tt> objects,
--   <tt>ByteMatchSet</tt> objects, and other predicates that identify the
--   requests that you want to block. If you add more than one predicate to
--   a <tt>Rule</tt> , a request must match all of the specifications to be
--   allowed or blocked. For example, suppose you add the following to a
--   <tt>Rule</tt> :
--   
--   <ul>
--   <li>An <tt>IPSet</tt> that matches the IP address
--   <tt>192.0.2.44/32</tt></li>
--   <li>A <tt>ByteMatchSet</tt> that matches <tt>BadBot</tt> in the
--   <tt>User-Agent</tt> header</li>
--   </ul>
--   
--   You then add the <tt>Rule</tt> to a <tt>WebACL</tt> and specify that
--   you want to blocks requests that satisfy the <tt>Rule</tt> . For a
--   request to be blocked, it must come from the IP address 192.0.2.44
--   <i>and</i> the <tt>User-Agent</tt> header in the request must contain
--   the value <tt>BadBot</tt> .
--   
--   To create and configure a <tt>Rule</tt> , perform the following steps:
--   
--   <ul>
--   <li>Create and update the predicates that you want to include in the
--   <tt>Rule</tt> . For more information, see <tt>CreateByteMatchSet</tt>
--   , <tt>CreateIPSet</tt> , and <tt>CreateSqlInjectionMatchSet</tt>
--   .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a <tt>CreateRule</tt>
--   request.</li>
--   <li>Submit a <tt>CreateRule</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateRule</tt> request.</li>
--   <li>Submit an <tt>UpdateRule</tt> request to specify the predicates
--   that you want to include in the <tt>Rule</tt> .</li>
--   <li>Create and update a <tt>WebACL</tt> that contains the
--   <tt>Rule</tt> . For more information, see <tt>CreateWebACL</tt> .</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.CreateRule

-- | Creates a value of <a>CreateRule</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crName</a> - A friendly name or description of the <a>Rule</a>
--   . You can't change the name of a <tt>Rule</tt> after you create
--   it.</li>
--   <li><a>crMetricName</a> - A friendly name or description for the
--   metrics for this <tt>Rule</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change the name of the metric after you create
--   the <tt>Rule</tt> .</li>
--   <li><a>crChangeToken</a> - The value returned by the most recent call
--   to <tt>GetChangeToken</tt> .</li>
--   </ul>
createRule :: Text -> Text -> Text -> CreateRule

-- | <i>See:</i> <a>createRule</a> smart constructor.
data CreateRule

-- | A friendly name or description of the <a>Rule</a> . You can't change
--   the name of a <tt>Rule</tt> after you create it.
crName :: Lens' CreateRule Text

-- | A friendly name or description for the metrics for this <tt>Rule</tt>
--   . The name can contain only alphanumeric characters (A-Z, a-z, 0-9);
--   the name can't contain whitespace. You can't change the name of the
--   metric after you create the <tt>Rule</tt> .
crMetricName :: Lens' CreateRule Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
crChangeToken :: Lens' CreateRule Text

-- | Creates a value of <a>CreateRuleResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crrsRule</a> - The <a>Rule</a> returned in the
--   <tt>CreateRule</tt> response.</li>
--   <li><a>crrsChangeToken</a> - The <tt>ChangeToken</tt> that you used to
--   submit the <tt>CreateRule</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>crrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createRuleResponse :: Int -> CreateRuleResponse

-- | <i>See:</i> <a>createRuleResponse</a> smart constructor.
data CreateRuleResponse

-- | The <a>Rule</a> returned in the <tt>CreateRule</tt> response.
crrsRule :: Lens' CreateRuleResponse (Maybe Rule)

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>CreateRule</tt> request. You can also use this value to query the
--   status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
crrsChangeToken :: Lens' CreateRuleResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
crrsResponseStatus :: Lens' CreateRuleResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.CreateRule.CreateRuleResponse
instance Data.Data.Data Network.AWS.WAF.CreateRule.CreateRuleResponse
instance GHC.Show.Show Network.AWS.WAF.CreateRule.CreateRuleResponse
instance GHC.Read.Read Network.AWS.WAF.CreateRule.CreateRuleResponse
instance GHC.Classes.Eq Network.AWS.WAF.CreateRule.CreateRuleResponse
instance GHC.Generics.Generic Network.AWS.WAF.CreateRule.CreateRule
instance Data.Data.Data Network.AWS.WAF.CreateRule.CreateRule
instance GHC.Show.Show Network.AWS.WAF.CreateRule.CreateRule
instance GHC.Read.Read Network.AWS.WAF.CreateRule.CreateRule
instance GHC.Classes.Eq Network.AWS.WAF.CreateRule.CreateRule
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.CreateRule.CreateRule
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateRule.CreateRuleResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.CreateRule.CreateRule
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateRule.CreateRule
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.CreateRule.CreateRule
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.CreateRule.CreateRule
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.CreateRule.CreateRule
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.CreateRule.CreateRule


-- | Creates a <tt>RegexPatternSet</tt> . You then use
--   <tt>UpdateRegexPatternSet</tt> to specify the regular expression
--   (regex) pattern that you want AWS WAF to search for, such as
--   <tt>B[a</tt>]dB[o0]t@ . You can then configure AWS WAF to reject those
--   requests.
--   
--   To create and configure a <tt>RegexPatternSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>CreateRegexPatternSet</tt> request.</li>
--   <li>Submit a <tt>CreateRegexPatternSet</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateRegexPatternSet</tt> request.</li>
--   <li>Submit an <tt>UpdateRegexPatternSet</tt> request to specify the
--   string that you want AWS WAF to watch for.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.CreateRegexPatternSet

-- | Creates a value of <a>CreateRegexPatternSet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crpsName</a> - A friendly name or description of the
--   <a>RegexPatternSet</a> . You can't change <tt>Name</tt> after you
--   create a <tt>RegexPatternSet</tt> .</li>
--   <li><a>crpsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
createRegexPatternSet :: Text -> Text -> CreateRegexPatternSet

-- | <i>See:</i> <a>createRegexPatternSet</a> smart constructor.
data CreateRegexPatternSet

-- | A friendly name or description of the <a>RegexPatternSet</a> . You
--   can't change <tt>Name</tt> after you create a <tt>RegexPatternSet</tt>
--   .
crpsName :: Lens' CreateRegexPatternSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
crpsChangeToken :: Lens' CreateRegexPatternSet Text

-- | Creates a value of <a>CreateRegexPatternSetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crpsrsRegexPatternSet</a> - A <a>RegexPatternSet</a> that
--   contains no objects.</li>
--   <li><a>crpsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>CreateRegexPatternSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>crpsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createRegexPatternSetResponse :: Int -> CreateRegexPatternSetResponse

-- | <i>See:</i> <a>createRegexPatternSetResponse</a> smart constructor.
data CreateRegexPatternSetResponse

-- | A <a>RegexPatternSet</a> that contains no objects.
crpsrsRegexPatternSet :: Lens' CreateRegexPatternSetResponse (Maybe RegexPatternSet)

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>CreateRegexPatternSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
crpsrsChangeToken :: Lens' CreateRegexPatternSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
crpsrsResponseStatus :: Lens' CreateRegexPatternSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSetResponse
instance Data.Data.Data Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSetResponse
instance GHC.Show.Show Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSetResponse
instance GHC.Read.Read Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSet
instance Data.Data.Data Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSet
instance GHC.Show.Show Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSet
instance GHC.Read.Read Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSet
instance GHC.Classes.Eq Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.CreateRegexPatternSet.CreateRegexPatternSet


-- | Creates a <a>RegexMatchSet</a> . You then use
--   <tt>UpdateRegexMatchSet</tt> to identify the part of a web request
--   that you want AWS WAF to inspect, such as the values of the
--   <tt>User-Agent</tt> header or the query string. For example, you can
--   create a <tt>RegexMatchSet</tt> that contains a
--   <tt>RegexMatchTuple</tt> that looks for any requests with
--   <tt>User-Agent</tt> headers that match a <tt>RegexPatternSet</tt> with
--   pattern <tt>B[a</tt>]dB[o0]t@ . You can then configure AWS WAF to
--   reject those requests.
--   
--   To create and configure a <tt>RegexMatchSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>CreateRegexMatchSet</tt> request.</li>
--   <li>Submit a <tt>CreateRegexMatchSet</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateRegexMatchSet</tt> request.</li>
--   <li>Submit an <tt>UpdateRegexMatchSet</tt> request to specify the part
--   of the request that you want AWS WAF to inspect (for example, the
--   header or the URI) and the value, using a <tt>RegexPatternSet</tt> ,
--   that you want AWS WAF to watch for.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.CreateRegexMatchSet

-- | Creates a value of <a>CreateRegexMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crmsName</a> - A friendly name or description of the
--   <a>RegexMatchSet</a> . You can't change <tt>Name</tt> after you create
--   a <tt>RegexMatchSet</tt> .</li>
--   <li><a>crmsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
createRegexMatchSet :: Text -> Text -> CreateRegexMatchSet

-- | <i>See:</i> <a>createRegexMatchSet</a> smart constructor.
data CreateRegexMatchSet

-- | A friendly name or description of the <a>RegexMatchSet</a> . You can't
--   change <tt>Name</tt> after you create a <tt>RegexMatchSet</tt> .
crmsName :: Lens' CreateRegexMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
crmsChangeToken :: Lens' CreateRegexMatchSet Text

-- | Creates a value of <a>CreateRegexMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crmsrsRegexMatchSet</a> - A <a>RegexMatchSet</a> that contains
--   no <tt>RegexMatchTuple</tt> objects.</li>
--   <li><a>crmsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>CreateRegexMatchSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>crmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createRegexMatchSetResponse :: Int -> CreateRegexMatchSetResponse

-- | <i>See:</i> <a>createRegexMatchSetResponse</a> smart constructor.
data CreateRegexMatchSetResponse

-- | A <a>RegexMatchSet</a> that contains no <tt>RegexMatchTuple</tt>
--   objects.
crmsrsRegexMatchSet :: Lens' CreateRegexMatchSetResponse (Maybe RegexMatchSet)

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>CreateRegexMatchSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
crmsrsChangeToken :: Lens' CreateRegexMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
crmsrsResponseStatus :: Lens' CreateRegexMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSet
instance Data.Data.Data Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSet
instance GHC.Show.Show Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSet
instance GHC.Read.Read Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.CreateRegexMatchSet.CreateRegexMatchSet


-- | Creates a <a>RateBasedRule</a> . The <tt>RateBasedRule</tt> contains a
--   <tt>RateLimit</tt> , which specifies the maximum number of requests
--   that AWS WAF allows from a specified IP address in a five-minute
--   period. The <tt>RateBasedRule</tt> also contains the <tt>IPSet</tt>
--   objects, <tt>ByteMatchSet</tt> objects, and other predicates that
--   identify the requests that you want to count or block if these
--   requests exceed the <tt>RateLimit</tt> .
--   
--   If you add more than one predicate to a <tt>RateBasedRule</tt> , a
--   request not only must exceed the <tt>RateLimit</tt> , but it also must
--   match all the specifications to be counted or blocked. For example,
--   suppose you add the following to a <tt>RateBasedRule</tt> :
--   
--   <ul>
--   <li>An <tt>IPSet</tt> that matches the IP address
--   <tt>192.0.2.44/32</tt></li>
--   <li>A <tt>ByteMatchSet</tt> that matches <tt>BadBot</tt> in the
--   <tt>User-Agent</tt> header</li>
--   </ul>
--   
--   Further, you specify a <tt>RateLimit</tt> of 15,000.
--   
--   You then add the <tt>RateBasedRule</tt> to a <tt>WebACL</tt> and
--   specify that you want to block requests that meet the conditions in
--   the rule. For a request to be blocked, it must come from the IP
--   address 192.0.2.44 <i>and</i> the <tt>User-Agent</tt> header in the
--   request must contain the value <tt>BadBot</tt> . Further, requests
--   that match these two conditions must be received at a rate of more
--   than 15,000 requests every five minutes. If both conditions are met
--   and the rate is exceeded, AWS WAF blocks the requests. If the rate
--   drops below 15,000 for a five-minute period, AWS WAF no longer blocks
--   the requests.
--   
--   As a second example, suppose you want to limit requests to a
--   particular page on your site. To do this, you could add the following
--   to a <tt>RateBasedRule</tt> :
--   
--   <ul>
--   <li>A <tt>ByteMatchSet</tt> with <tt>FieldToMatch</tt> of
--   <tt>URI</tt></li>
--   <li>A <tt>PositionalConstraint</tt> of <tt>STARTS_WITH</tt></li>
--   <li>A <tt>TargetString</tt> of <tt>login</tt></li>
--   </ul>
--   
--   Further, you specify a <tt>RateLimit</tt> of 15,000.
--   
--   By adding this <tt>RateBasedRule</tt> to a <tt>WebACL</tt> , you could
--   limit requests to your login page without affecting the rest of your
--   site.
--   
--   To create and configure a <tt>RateBasedRule</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Create and update the predicates that you want to include in the
--   rule. For more information, see <tt>CreateByteMatchSet</tt> ,
--   <tt>CreateIPSet</tt> , and <tt>CreateSqlInjectionMatchSet</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a <tt>CreateRule</tt>
--   request.</li>
--   <li>Submit a <tt>CreateRateBasedRule</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateRule</tt> request.</li>
--   <li>Submit an <tt>UpdateRateBasedRule</tt> request to specify the
--   predicates that you want to include in the rule.</li>
--   <li>Create and update a <tt>WebACL</tt> that contains the
--   <tt>RateBasedRule</tt> . For more information, see
--   <tt>CreateWebACL</tt> .</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.CreateRateBasedRule

-- | Creates a value of <a>CreateRateBasedRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crbrName</a> - A friendly name or description of the
--   <a>RateBasedRule</a> . You can't change the name of a
--   <tt>RateBasedRule</tt> after you create it.</li>
--   <li><a>crbrMetricName</a> - A friendly name or description for the
--   metrics for this <tt>RateBasedRule</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change the name of the metric after you create
--   the <tt>RateBasedRule</tt> .</li>
--   <li><a>crbrRateKey</a> - The field that AWS WAF uses to determine if
--   requests are likely arriving from a single source and thus subject to
--   rate monitoring. The only valid value for <tt>RateKey</tt> is
--   <tt>IP</tt> . <tt>IP</tt> indicates that requests that arrive from the
--   same IP address are subject to the <tt>RateLimit</tt> that is
--   specified in the <tt>RateBasedRule</tt> .</li>
--   <li><a>crbrRateLimit</a> - The maximum number of requests, which have
--   an identical value in the field that is specified by <tt>RateKey</tt>
--   , allowed in a five-minute period. If the number of requests exceeds
--   the <tt>RateLimit</tt> and the other predicates specified in the rule
--   are also met, AWS WAF triggers the action that is specified for this
--   rule.</li>
--   <li><a>crbrChangeToken</a> - The <tt>ChangeToken</tt> that you used to
--   submit the <tt>CreateRateBasedRule</tt> request. You can also use this
--   value to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .</li>
--   </ul>
createRateBasedRule :: Text -> Text -> RateKey -> Natural -> Text -> CreateRateBasedRule

-- | <i>See:</i> <a>createRateBasedRule</a> smart constructor.
data CreateRateBasedRule

-- | A friendly name or description of the <a>RateBasedRule</a> . You can't
--   change the name of a <tt>RateBasedRule</tt> after you create it.
crbrName :: Lens' CreateRateBasedRule Text

-- | A friendly name or description for the metrics for this
--   <tt>RateBasedRule</tt> . The name can contain only alphanumeric
--   characters (A-Z, a-z, 0-9); the name can't contain whitespace. You
--   can't change the name of the metric after you create the
--   <tt>RateBasedRule</tt> .
crbrMetricName :: Lens' CreateRateBasedRule Text

-- | The field that AWS WAF uses to determine if requests are likely
--   arriving from a single source and thus subject to rate monitoring. The
--   only valid value for <tt>RateKey</tt> is <tt>IP</tt> . <tt>IP</tt>
--   indicates that requests that arrive from the same IP address are
--   subject to the <tt>RateLimit</tt> that is specified in the
--   <tt>RateBasedRule</tt> .
crbrRateKey :: Lens' CreateRateBasedRule RateKey

-- | The maximum number of requests, which have an identical value in the
--   field that is specified by <tt>RateKey</tt> , allowed in a five-minute
--   period. If the number of requests exceeds the <tt>RateLimit</tt> and
--   the other predicates specified in the rule are also met, AWS WAF
--   triggers the action that is specified for this rule.
crbrRateLimit :: Lens' CreateRateBasedRule Natural

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>CreateRateBasedRule</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
crbrChangeToken :: Lens' CreateRateBasedRule Text

-- | Creates a value of <a>CreateRateBasedRuleResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crbrrsRule</a> - The <a>RateBasedRule</a> that is returned in
--   the <tt>CreateRateBasedRule</tt> response.</li>
--   <li><a>crbrrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>CreateRateBasedRule</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>crbrrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createRateBasedRuleResponse :: Int -> CreateRateBasedRuleResponse

-- | <i>See:</i> <a>createRateBasedRuleResponse</a> smart constructor.
data CreateRateBasedRuleResponse

-- | The <a>RateBasedRule</a> that is returned in the
--   <tt>CreateRateBasedRule</tt> response.
crbrrsRule :: Lens' CreateRateBasedRuleResponse (Maybe RateBasedRule)

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>CreateRateBasedRule</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
crbrrsChangeToken :: Lens' CreateRateBasedRuleResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
crbrrsResponseStatus :: Lens' CreateRateBasedRuleResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRuleResponse
instance Data.Data.Data Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRuleResponse
instance GHC.Show.Show Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRuleResponse
instance GHC.Read.Read Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRuleResponse
instance GHC.Classes.Eq Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRuleResponse
instance GHC.Generics.Generic Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRule
instance Data.Data.Data Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRule
instance GHC.Show.Show Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRule
instance GHC.Read.Read Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRule
instance GHC.Classes.Eq Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRule
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRule
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRuleResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRule
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRule
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRule
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRule
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRule
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.CreateRateBasedRule.CreateRateBasedRule


-- | Creates an <a>IPSet</a> , which you use to specify which web requests
--   you want to allow or block based on the IP addresses that the requests
--   originate from. For example, if you're receiving a lot of requests
--   from one or more individual IP addresses or one or more ranges of IP
--   addresses and you want to block the requests, you can create an
--   <tt>IPSet</tt> that contains those IP addresses and then configure AWS
--   WAF to block the requests.
--   
--   To create and configure an <tt>IPSet</tt> , perform the following
--   steps:
--   
--   <ul>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>CreateIPSet</tt> request.</li>
--   <li>Submit a <tt>CreateIPSet</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateIPSet</tt> request.</li>
--   <li>Submit an <tt>UpdateIPSet</tt> request to specify the IP addresses
--   that you want AWS WAF to watch for.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.CreateIPSet

-- | Creates a value of <a>CreateIPSet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cisName</a> - A friendly name or description of the
--   <a>IPSet</a> . You can't change <tt>Name</tt> after you create the
--   <tt>IPSet</tt> .</li>
--   <li><a>cisChangeToken</a> - The value returned by the most recent call
--   to <tt>GetChangeToken</tt> .</li>
--   </ul>
createIPSet :: Text -> Text -> CreateIPSet

-- | <i>See:</i> <a>createIPSet</a> smart constructor.
data CreateIPSet

-- | A friendly name or description of the <a>IPSet</a> . You can't change
--   <tt>Name</tt> after you create the <tt>IPSet</tt> .
cisName :: Lens' CreateIPSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
cisChangeToken :: Lens' CreateIPSet Text

-- | Creates a value of <a>CreateIPSetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cisrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>CreateIPSet</tt> request. You can also use this
--   value to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>cisrsIPSet</a> - The <a>IPSet</a> returned in the
--   <tt>CreateIPSet</tt> response.</li>
--   <li><a>cisrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createIPSetResponse :: Int -> CreateIPSetResponse

-- | <i>See:</i> <a>createIPSetResponse</a> smart constructor.
data CreateIPSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>CreateIPSet</tt> request. You can also use this value to query the
--   status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
cisrsChangeToken :: Lens' CreateIPSetResponse (Maybe Text)

-- | The <a>IPSet</a> returned in the <tt>CreateIPSet</tt> response.
cisrsIPSet :: Lens' CreateIPSetResponse (Maybe IPSet)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
cisrsResponseStatus :: Lens' CreateIPSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.CreateIPSet.CreateIPSetResponse
instance Data.Data.Data Network.AWS.WAF.CreateIPSet.CreateIPSetResponse
instance GHC.Show.Show Network.AWS.WAF.CreateIPSet.CreateIPSetResponse
instance GHC.Read.Read Network.AWS.WAF.CreateIPSet.CreateIPSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.CreateIPSet.CreateIPSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.CreateIPSet.CreateIPSet
instance Data.Data.Data Network.AWS.WAF.CreateIPSet.CreateIPSet
instance GHC.Show.Show Network.AWS.WAF.CreateIPSet.CreateIPSet
instance GHC.Read.Read Network.AWS.WAF.CreateIPSet.CreateIPSet
instance GHC.Classes.Eq Network.AWS.WAF.CreateIPSet.CreateIPSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.CreateIPSet.CreateIPSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateIPSet.CreateIPSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.CreateIPSet.CreateIPSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateIPSet.CreateIPSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.CreateIPSet.CreateIPSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.CreateIPSet.CreateIPSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.CreateIPSet.CreateIPSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.CreateIPSet.CreateIPSet


-- | Creates an <a>GeoMatchSet</a> , which you use to specify which web
--   requests you want to allow or block based on the country that the
--   requests originate from. For example, if you're receiving a lot of
--   requests from one or more countries and you want to block the
--   requests, you can create an <tt>GeoMatchSet</tt> that contains those
--   countries and then configure AWS WAF to block the requests.
--   
--   To create and configure a <tt>GeoMatchSet</tt> , perform the following
--   steps:
--   
--   <ul>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>CreateGeoMatchSet</tt> request.</li>
--   <li>Submit a <tt>CreateGeoMatchSet</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateGeoMatchSet</tt> request.</li>
--   <li>Submit an <tt>UpdateGeoMatchSetSet</tt> request to specify the
--   countries that you want AWS WAF to watch for.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.CreateGeoMatchSet

-- | Creates a value of <a>CreateGeoMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cgmsName</a> - A friendly name or description of the
--   <a>GeoMatchSet</a> . You can't change <tt>Name</tt> after you create
--   the <tt>GeoMatchSet</tt> .</li>
--   <li><a>cgmsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
createGeoMatchSet :: Text -> Text -> CreateGeoMatchSet

-- | <i>See:</i> <a>createGeoMatchSet</a> smart constructor.
data CreateGeoMatchSet

-- | A friendly name or description of the <a>GeoMatchSet</a> . You can't
--   change <tt>Name</tt> after you create the <tt>GeoMatchSet</tt> .
cgmsName :: Lens' CreateGeoMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
cgmsChangeToken :: Lens' CreateGeoMatchSet Text

-- | Creates a value of <a>CreateGeoMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cgmsrsGeoMatchSet</a> - The <a>GeoMatchSet</a> returned in the
--   <tt>CreateGeoMatchSet</tt> response. The <tt>GeoMatchSet</tt> contains
--   no <tt>GeoMatchConstraints</tt> .</li>
--   <li><a>cgmsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>CreateGeoMatchSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>cgmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createGeoMatchSetResponse :: Int -> CreateGeoMatchSetResponse

-- | <i>See:</i> <a>createGeoMatchSetResponse</a> smart constructor.
data CreateGeoMatchSetResponse

-- | The <a>GeoMatchSet</a> returned in the <tt>CreateGeoMatchSet</tt>
--   response. The <tt>GeoMatchSet</tt> contains no
--   <tt>GeoMatchConstraints</tt> .
cgmsrsGeoMatchSet :: Lens' CreateGeoMatchSetResponse (Maybe GeoMatchSet)

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>CreateGeoMatchSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
cgmsrsChangeToken :: Lens' CreateGeoMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
cgmsrsResponseStatus :: Lens' CreateGeoMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSet
instance Data.Data.Data Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSet
instance GHC.Show.Show Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSet
instance GHC.Read.Read Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.CreateGeoMatchSet.CreateGeoMatchSet


-- | Creates a <tt>ByteMatchSet</tt> . You then use
--   <tt>UpdateByteMatchSet</tt> to identify the part of a web request that
--   you want AWS WAF to inspect, such as the values of the
--   <tt>User-Agent</tt> header or the query string. For example, you can
--   create a <tt>ByteMatchSet</tt> that matches any requests with
--   <tt>User-Agent</tt> headers that contain the string <tt>BadBot</tt> .
--   You can then configure AWS WAF to reject those requests.
--   
--   To create and configure a <tt>ByteMatchSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of a
--   <tt>CreateByteMatchSet</tt> request.</li>
--   <li>Submit a <tt>CreateByteMatchSet</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateByteMatchSet</tt> request.</li>
--   <li>Submit an <tt>UpdateByteMatchSet</tt> request to specify the part
--   of the request that you want AWS WAF to inspect (for example, the
--   header or the URI) and the value that you want AWS WAF to watch
--   for.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.CreateByteMatchSet

-- | Creates a value of <a>CreateByteMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cbmsName</a> - A friendly name or description of the
--   <a>ByteMatchSet</a> . You can't change <tt>Name</tt> after you create
--   a <tt>ByteMatchSet</tt> .</li>
--   <li><a>cbmsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
createByteMatchSet :: Text -> Text -> CreateByteMatchSet

-- | <i>See:</i> <a>createByteMatchSet</a> smart constructor.
data CreateByteMatchSet

-- | A friendly name or description of the <a>ByteMatchSet</a> . You can't
--   change <tt>Name</tt> after you create a <tt>ByteMatchSet</tt> .
cbmsName :: Lens' CreateByteMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
cbmsChangeToken :: Lens' CreateByteMatchSet Text

-- | Creates a value of <a>CreateByteMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cbmsrsByteMatchSet</a> - A <a>ByteMatchSet</a> that contains no
--   <tt>ByteMatchTuple</tt> objects.</li>
--   <li><a>cbmsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>CreateByteMatchSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>cbmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createByteMatchSetResponse :: Int -> CreateByteMatchSetResponse

-- | <i>See:</i> <a>createByteMatchSetResponse</a> smart constructor.
data CreateByteMatchSetResponse

-- | A <a>ByteMatchSet</a> that contains no <tt>ByteMatchTuple</tt>
--   objects.
cbmsrsByteMatchSet :: Lens' CreateByteMatchSetResponse (Maybe ByteMatchSet)

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>CreateByteMatchSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
cbmsrsChangeToken :: Lens' CreateByteMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
cbmsrsResponseStatus :: Lens' CreateByteMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSet
instance Data.Data.Data Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSet
instance GHC.Show.Show Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSet
instance GHC.Read.Read Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSet


-- | Inserts or deletes <a>ByteMatchTuple</a> objects (filters) in a
--   <a>ByteMatchSet</a> . For each <tt>ByteMatchTuple</tt> object, you
--   specify the following values:
--   
--   <ul>
--   <li>Whether to insert or delete the object from the array. If you want
--   to change a <tt>ByteMatchSetUpdate</tt> object, you delete the
--   existing object and add a new one.</li>
--   <li>The part of a web request that you want AWS WAF to inspect, such
--   as a query string or the value of the <tt>User-Agent</tt> header.</li>
--   <li>The bytes (typically a string that corresponds with ASCII
--   characters) that you want AWS WAF to look for. For more information,
--   including how you specify the values for the AWS WAF API and the AWS
--   CLI or SDKs, see <tt>TargetString</tt> in the <a>ByteMatchTuple</a>
--   data type.</li>
--   <li>Where to look, such as at the beginning or the end of a query
--   string.</li>
--   <li>Whether to perform any conversions on the request, such as
--   converting it to lowercase, before inspecting it for the specified
--   string.</li>
--   </ul>
--   
--   For example, you can add a <tt>ByteMatchSetUpdate</tt> object that
--   matches web requests in which <tt>User-Agent</tt> headers contain the
--   string <tt>BadBot</tt> . You can then configure AWS WAF to block those
--   requests.
--   
--   To create and configure a <tt>ByteMatchSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Create a <tt>ByteMatchSet.</tt> For more information, see
--   <tt>CreateByteMatchSet</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateByteMatchSet</tt> request.</li>
--   <li>Submit an <tt>UpdateByteMatchSet</tt> request to specify the part
--   of the request that you want AWS WAF to inspect (for example, the
--   header or the URI) and the value that you want AWS WAF to watch
--   for.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.UpdateByteMatchSet

-- | Creates a value of <a>UpdateByteMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ubmsByteMatchSetId</a> - The <tt>ByteMatchSetId</tt> of the
--   <a>ByteMatchSet</a> that you want to update. <tt>ByteMatchSetId</tt>
--   is returned by <tt>CreateByteMatchSet</tt> and by
--   <tt>ListByteMatchSets</tt> .</li>
--   <li><a>ubmsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   <li><a>ubmsUpdates</a> - An array of <tt>ByteMatchSetUpdate</tt>
--   objects that you want to insert into or delete from a
--   <a>ByteMatchSet</a> . For more information, see the applicable data
--   types: * <a>ByteMatchSetUpdate</a> : Contains <tt>Action</tt> and
--   <tt>ByteMatchTuple</tt> * <a>ByteMatchTuple</a> : Contains
--   <tt>FieldToMatch</tt> , <tt>PositionalConstraint</tt> ,
--   <tt>TargetString</tt> , and <tt>TextTransformation</tt> *
--   <a>FieldToMatch</a> : Contains <tt>Data</tt> and <tt>Type</tt></li>
--   </ul>
updateByteMatchSet :: Text -> Text -> NonEmpty ByteMatchSetUpdate -> UpdateByteMatchSet

-- | <i>See:</i> <a>updateByteMatchSet</a> smart constructor.
data UpdateByteMatchSet

-- | The <tt>ByteMatchSetId</tt> of the <a>ByteMatchSet</a> that you want
--   to update. <tt>ByteMatchSetId</tt> is returned by
--   <tt>CreateByteMatchSet</tt> and by <tt>ListByteMatchSets</tt> .
ubmsByteMatchSetId :: Lens' UpdateByteMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
ubmsChangeToken :: Lens' UpdateByteMatchSet Text

-- | An array of <tt>ByteMatchSetUpdate</tt> objects that you want to
--   insert into or delete from a <a>ByteMatchSet</a> . For more
--   information, see the applicable data types: *
--   <a>ByteMatchSetUpdate</a> : Contains <tt>Action</tt> and
--   <tt>ByteMatchTuple</tt> * <a>ByteMatchTuple</a> : Contains
--   <tt>FieldToMatch</tt> , <tt>PositionalConstraint</tt> ,
--   <tt>TargetString</tt> , and <tt>TextTransformation</tt> *
--   <a>FieldToMatch</a> : Contains <tt>Data</tt> and <tt>Type</tt>
ubmsUpdates :: Lens' UpdateByteMatchSet (NonEmpty ByteMatchSetUpdate)

-- | Creates a value of <a>UpdateByteMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ubmsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>UpdateByteMatchSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>ubmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateByteMatchSetResponse :: Int -> UpdateByteMatchSetResponse

-- | <i>See:</i> <a>updateByteMatchSetResponse</a> smart constructor.
data UpdateByteMatchSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>UpdateByteMatchSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
ubmsrsChangeToken :: Lens' UpdateByteMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ubmsrsResponseStatus :: Lens' UpdateByteMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSet
instance Data.Data.Data Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSet
instance GHC.Show.Show Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSet
instance GHC.Read.Read Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSet


-- | Inserts or deletes <a>GeoMatchConstraint</a> objects in an
--   <tt>GeoMatchSet</tt> . For each <tt>GeoMatchConstraint</tt> object,
--   you specify the following values:
--   
--   <ul>
--   <li>Whether to insert or delete the object from the array. If you want
--   to change an <tt>GeoMatchConstraint</tt> object, you delete the
--   existing object and add a new one.</li>
--   <li>The <tt>Type</tt> . The only valid value for <tt>Type</tt> is
--   <tt>Country</tt> .</li>
--   <li>The <tt>Value</tt> , which is a two character code for the country
--   to add to the <tt>GeoMatchConstraint</tt> object. Valid codes are
--   listed in 'GeoMatchConstraint$Value' .</li>
--   </ul>
--   
--   To create and configure an <tt>GeoMatchSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Submit a <tt>CreateGeoMatchSet</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <a>UpdateGeoMatchSet</a> request.</li>
--   <li>Submit an <tt>UpdateGeoMatchSet</tt> request to specify the
--   country that you want AWS WAF to watch for.</li>
--   </ul>
--   
--   When you update an <tt>GeoMatchSet</tt> , you specify the country that
--   you want to add and/or the country that you want to delete. If you
--   want to change a country, you delete the existing country and add the
--   new one.
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.UpdateGeoMatchSet

-- | Creates a value of <a>UpdateGeoMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ugmsGeoMatchSetId</a> - The <tt>GeoMatchSetId</tt> of the
--   <a>GeoMatchSet</a> that you want to update. <tt>GeoMatchSetId</tt> is
--   returned by <tt>CreateGeoMatchSet</tt> and by
--   <tt>ListGeoMatchSets</tt> .</li>
--   <li><a>ugmsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   <li><a>ugmsUpdates</a> - An array of <tt>GeoMatchSetUpdate</tt>
--   objects that you want to insert into or delete from an
--   <a>GeoMatchSet</a> . For more information, see the applicable data
--   types: * <a>GeoMatchSetUpdate</a> : Contains <tt>Action</tt> and
--   <tt>GeoMatchConstraint</tt> * <a>GeoMatchConstraint</a> : Contains
--   <tt>Type</tt> and <tt>Value</tt> You can have only one <tt>Type</tt>
--   and <tt>Value</tt> per <tt>GeoMatchConstraint</tt> . To add multiple
--   countries, include multiple <tt>GeoMatchSetUpdate</tt> objects in your
--   request.</li>
--   </ul>
updateGeoMatchSet :: Text -> Text -> NonEmpty GeoMatchSetUpdate -> UpdateGeoMatchSet

-- | <i>See:</i> <a>updateGeoMatchSet</a> smart constructor.
data UpdateGeoMatchSet

-- | The <tt>GeoMatchSetId</tt> of the <a>GeoMatchSet</a> that you want to
--   update. <tt>GeoMatchSetId</tt> is returned by
--   <tt>CreateGeoMatchSet</tt> and by <tt>ListGeoMatchSets</tt> .
ugmsGeoMatchSetId :: Lens' UpdateGeoMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
ugmsChangeToken :: Lens' UpdateGeoMatchSet Text

-- | An array of <tt>GeoMatchSetUpdate</tt> objects that you want to insert
--   into or delete from an <a>GeoMatchSet</a> . For more information, see
--   the applicable data types: * <a>GeoMatchSetUpdate</a> : Contains
--   <tt>Action</tt> and <tt>GeoMatchConstraint</tt> *
--   <a>GeoMatchConstraint</a> : Contains <tt>Type</tt> and <tt>Value</tt>
--   You can have only one <tt>Type</tt> and <tt>Value</tt> per
--   <tt>GeoMatchConstraint</tt> . To add multiple countries, include
--   multiple <tt>GeoMatchSetUpdate</tt> objects in your request.
ugmsUpdates :: Lens' UpdateGeoMatchSet (NonEmpty GeoMatchSetUpdate)

-- | Creates a value of <a>UpdateGeoMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ugmsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>UpdateGeoMatchSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>ugmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateGeoMatchSetResponse :: Int -> UpdateGeoMatchSetResponse

-- | <i>See:</i> <a>updateGeoMatchSetResponse</a> smart constructor.
data UpdateGeoMatchSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>UpdateGeoMatchSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
ugmsrsChangeToken :: Lens' UpdateGeoMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ugmsrsResponseStatus :: Lens' UpdateGeoMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSet
instance Data.Data.Data Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSet
instance GHC.Show.Show Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSet
instance GHC.Read.Read Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.UpdateGeoMatchSet.UpdateGeoMatchSet


-- | Inserts or deletes <a>IPSetDescriptor</a> objects in an <tt>IPSet</tt>
--   . For each <tt>IPSetDescriptor</tt> object, you specify the following
--   values:
--   
--   <ul>
--   <li>Whether to insert or delete the object from the array. If you want
--   to change an <tt>IPSetDescriptor</tt> object, you delete the existing
--   object and add a new one.</li>
--   <li>The IP address version, <tt>IPv4</tt> or <tt>IPv6</tt> .</li>
--   <li>The IP address in CIDR notation, for example,
--   <tt>192.0.2.0/24</tt> (for the range of IP addresses from
--   <tt>192.0.2.0</tt> to <tt>192.0.2.255</tt> ) or <tt>192.0.2.44/32</tt>
--   (for the individual IP address <tt>192.0.2.44</tt> ).</li>
--   </ul>
--   
--   AWS WAF supports <i>8, </i>16, <i>24, and </i>32 IP address ranges for
--   IPv4, and <i>24, </i>32, <i>48, </i>56, <i>64 and </i>128 for IPv6.
--   For more information about CIDR notation, see the Wikipedia entry
--   <a>Classless Inter-Domain Routing</a> .
--   
--   IPv6 addresses can be represented using any of the following formats:
--   
--   <ul>
--   <li>1111:0000:0000:0000:0000:0000:0000:0111/128</li>
--   <li>1111:0:0:0:0:0:0:0111/128</li>
--   <li>1111::0111/128</li>
--   <li>1111::111/128</li>
--   </ul>
--   
--   You use an <tt>IPSet</tt> to specify which web requests you want to
--   allow or block based on the IP addresses that the requests originated
--   from. For example, if you're receiving a lot of requests from one or a
--   small number of IP addresses and you want to block the requests, you
--   can create an <tt>IPSet</tt> that specifies those IP addresses, and
--   then configure AWS WAF to block the requests.
--   
--   To create and configure an <tt>IPSet</tt> , perform the following
--   steps:
--   
--   <ul>
--   <li>Submit a <tt>CreateIPSet</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an <a>UpdateIPSet</a>
--   request.</li>
--   <li>Submit an <tt>UpdateIPSet</tt> request to specify the IP addresses
--   that you want AWS WAF to watch for.</li>
--   </ul>
--   
--   When you update an <tt>IPSet</tt> , you specify the IP addresses that
--   you want to add and/or the IP addresses that you want to delete. If
--   you want to change an IP address, you delete the existing IP address
--   and add the new one.
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.UpdateIPSet

-- | Creates a value of <a>UpdateIPSet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uisIPSetId</a> - The <tt>IPSetId</tt> of the <a>IPSet</a> that
--   you want to update. <tt>IPSetId</tt> is returned by
--   <tt>CreateIPSet</tt> and by <tt>ListIPSets</tt> .</li>
--   <li><a>uisChangeToken</a> - The value returned by the most recent call
--   to <tt>GetChangeToken</tt> .</li>
--   <li><a>uisUpdates</a> - An array of <tt>IPSetUpdate</tt> objects that
--   you want to insert into or delete from an <a>IPSet</a> . For more
--   information, see the applicable data types: * <a>IPSetUpdate</a> :
--   Contains <tt>Action</tt> and <tt>IPSetDescriptor</tt> *
--   <a>IPSetDescriptor</a> : Contains <tt>Type</tt> and
--   <tt>Value</tt></li>
--   </ul>
updateIPSet :: Text -> Text -> NonEmpty IPSetUpdate -> UpdateIPSet

-- | <i>See:</i> <a>updateIPSet</a> smart constructor.
data UpdateIPSet

-- | The <tt>IPSetId</tt> of the <a>IPSet</a> that you want to update.
--   <tt>IPSetId</tt> is returned by <tt>CreateIPSet</tt> and by
--   <tt>ListIPSets</tt> .
uisIPSetId :: Lens' UpdateIPSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
uisChangeToken :: Lens' UpdateIPSet Text

-- | An array of <tt>IPSetUpdate</tt> objects that you want to insert into
--   or delete from an <a>IPSet</a> . For more information, see the
--   applicable data types: * <a>IPSetUpdate</a> : Contains <tt>Action</tt>
--   and <tt>IPSetDescriptor</tt> * <a>IPSetDescriptor</a> : Contains
--   <tt>Type</tt> and <tt>Value</tt>
uisUpdates :: Lens' UpdateIPSet (NonEmpty IPSetUpdate)

-- | Creates a value of <a>UpdateIPSetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uisrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>UpdateIPSet</tt> request. You can also use this
--   value to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>uisrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateIPSetResponse :: Int -> UpdateIPSetResponse

-- | <i>See:</i> <a>updateIPSetResponse</a> smart constructor.
data UpdateIPSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>UpdateIPSet</tt> request. You can also use this value to query the
--   status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
uisrsChangeToken :: Lens' UpdateIPSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
uisrsResponseStatus :: Lens' UpdateIPSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.UpdateIPSet.UpdateIPSetResponse
instance Data.Data.Data Network.AWS.WAF.UpdateIPSet.UpdateIPSetResponse
instance GHC.Show.Show Network.AWS.WAF.UpdateIPSet.UpdateIPSetResponse
instance GHC.Read.Read Network.AWS.WAF.UpdateIPSet.UpdateIPSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.UpdateIPSet.UpdateIPSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.UpdateIPSet.UpdateIPSet
instance Data.Data.Data Network.AWS.WAF.UpdateIPSet.UpdateIPSet
instance GHC.Show.Show Network.AWS.WAF.UpdateIPSet.UpdateIPSet
instance GHC.Read.Read Network.AWS.WAF.UpdateIPSet.UpdateIPSet
instance GHC.Classes.Eq Network.AWS.WAF.UpdateIPSet.UpdateIPSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.UpdateIPSet.UpdateIPSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateIPSet.UpdateIPSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.UpdateIPSet.UpdateIPSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateIPSet.UpdateIPSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.UpdateIPSet.UpdateIPSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.UpdateIPSet.UpdateIPSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.UpdateIPSet.UpdateIPSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.UpdateIPSet.UpdateIPSet


-- | Inserts or deletes <a>Predicate</a> objects in a rule and updates the
--   <tt>RateLimit</tt> in the rule.
--   
--   Each <tt>Predicate</tt> object identifies a predicate, such as a
--   <a>ByteMatchSet</a> or an <a>IPSet</a> , that specifies the web
--   requests that you want to block or count. The <tt>RateLimit</tt>
--   specifies the number of requests every five minutes that triggers the
--   rule.
--   
--   If you add more than one predicate to a <tt>RateBasedRule</tt> , a
--   request must match all the predicates and exceed the
--   <tt>RateLimit</tt> to be counted or blocked. For example, suppose you
--   add the following to a <tt>RateBasedRule</tt> :
--   
--   <ul>
--   <li>An <tt>IPSet</tt> that matches the IP address
--   <tt>192.0.2.44/32</tt></li>
--   <li>A <tt>ByteMatchSet</tt> that matches <tt>BadBot</tt> in the
--   <tt>User-Agent</tt> header</li>
--   </ul>
--   
--   Further, you specify a <tt>RateLimit</tt> of 15,000.
--   
--   You then add the <tt>RateBasedRule</tt> to a <tt>WebACL</tt> and
--   specify that you want to block requests that satisfy the rule. For a
--   request to be blocked, it must come from the IP address 192.0.2.44
--   <i>and</i> the <tt>User-Agent</tt> header in the request must contain
--   the value <tt>BadBot</tt> . Further, requests that match these two
--   conditions much be received at a rate of more than 15,000 every five
--   minutes. If the rate drops below this limit, AWS WAF no longer blocks
--   the requests.
--   
--   As a second example, suppose you want to limit requests to a
--   particular page on your site. To do this, you could add the following
--   to a <tt>RateBasedRule</tt> :
--   
--   <ul>
--   <li>A <tt>ByteMatchSet</tt> with <tt>FieldToMatch</tt> of
--   <tt>URI</tt></li>
--   <li>A <tt>PositionalConstraint</tt> of <tt>STARTS_WITH</tt></li>
--   <li>A <tt>TargetString</tt> of <tt>login</tt></li>
--   </ul>
--   
--   Further, you specify a <tt>RateLimit</tt> of 15,000.
--   
--   By adding this <tt>RateBasedRule</tt> to a <tt>WebACL</tt> , you could
--   limit requests to your login page without affecting the rest of your
--   site.
module Network.AWS.WAF.UpdateRateBasedRule

-- | Creates a value of <a>UpdateRateBasedRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>urbrRuleId</a> - The <tt>RuleId</tt> of the
--   <tt>RateBasedRule</tt> that you want to update. <tt>RuleId</tt> is
--   returned by <tt>CreateRateBasedRule</tt> and by
--   <tt>ListRateBasedRules</tt> .</li>
--   <li><a>urbrChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   <li><a>urbrUpdates</a> - An array of <tt>RuleUpdate</tt> objects that
--   you want to insert into or delete from a <a>RateBasedRule</a> .</li>
--   <li><a>urbrRateLimit</a> - The maximum number of requests, which have
--   an identical value in the field specified by the <tt>RateKey</tt> ,
--   allowed in a five-minute period. If the number of requests exceeds the
--   <tt>RateLimit</tt> and the other predicates specified in the rule are
--   also met, AWS WAF triggers the action that is specified for this
--   rule.</li>
--   </ul>
updateRateBasedRule :: Text -> Text -> Natural -> UpdateRateBasedRule

-- | <i>See:</i> <a>updateRateBasedRule</a> smart constructor.
data UpdateRateBasedRule

-- | The <tt>RuleId</tt> of the <tt>RateBasedRule</tt> that you want to
--   update. <tt>RuleId</tt> is returned by <tt>CreateRateBasedRule</tt>
--   and by <tt>ListRateBasedRules</tt> .
urbrRuleId :: Lens' UpdateRateBasedRule Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
urbrChangeToken :: Lens' UpdateRateBasedRule Text

-- | An array of <tt>RuleUpdate</tt> objects that you want to insert into
--   or delete from a <a>RateBasedRule</a> .
urbrUpdates :: Lens' UpdateRateBasedRule [RuleUpdate]

-- | The maximum number of requests, which have an identical value in the
--   field specified by the <tt>RateKey</tt> , allowed in a five-minute
--   period. If the number of requests exceeds the <tt>RateLimit</tt> and
--   the other predicates specified in the rule are also met, AWS WAF
--   triggers the action that is specified for this rule.
urbrRateLimit :: Lens' UpdateRateBasedRule Natural

-- | Creates a value of <a>UpdateRateBasedRuleResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>urbrrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>UpdateRateBasedRule</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>urbrrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateRateBasedRuleResponse :: Int -> UpdateRateBasedRuleResponse

-- | <i>See:</i> <a>updateRateBasedRuleResponse</a> smart constructor.
data UpdateRateBasedRuleResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>UpdateRateBasedRule</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
urbrrsChangeToken :: Lens' UpdateRateBasedRuleResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
urbrrsResponseStatus :: Lens' UpdateRateBasedRuleResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRuleResponse
instance Data.Data.Data Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRuleResponse
instance GHC.Show.Show Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRuleResponse
instance GHC.Read.Read Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRuleResponse
instance GHC.Classes.Eq Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRuleResponse
instance GHC.Generics.Generic Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRule
instance Data.Data.Data Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRule
instance GHC.Show.Show Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRule
instance GHC.Read.Read Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRule
instance GHC.Classes.Eq Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRule
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRule
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRuleResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRule
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRule
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRule
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRule
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRule
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.UpdateRateBasedRule.UpdateRateBasedRule


-- | Inserts or deletes <a>RegexMatchTuple</a> objects (filters) in a
--   <a>RegexMatchSet</a> . For each <tt>RegexMatchSetUpdate</tt> object,
--   you specify the following values:
--   
--   <ul>
--   <li>Whether to insert or delete the object from the array. If you want
--   to change a <tt>RegexMatchSetUpdate</tt> object, you delete the
--   existing object and add a new one.</li>
--   <li>The part of a web request that you want AWS WAF to inspectupdate,
--   such as a query string or the value of the <tt>User-Agent</tt>
--   header.</li>
--   <li>The identifier of the pattern (a regular expression) that you want
--   AWS WAF to look for. For more information, see <a>RegexPatternSet</a>
--   .</li>
--   <li>Whether to perform any conversions on the request, such as
--   converting it to lowercase, before inspecting it for the specified
--   string.</li>
--   </ul>
--   
--   For example, you can create a <tt>RegexPatternSet</tt> that matches
--   any requests with <tt>User-Agent</tt> headers that contain the string
--   <tt>B[a</tt>]dB[o0]t@ . You can then configure AWS WAF to reject those
--   requests.
--   
--   To create and configure a <tt>RegexMatchSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Create a <tt>RegexMatchSet.</tt> For more information, see
--   <tt>CreateRegexMatchSet</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateRegexMatchSet</tt> request.</li>
--   <li>Submit an <tt>UpdateRegexMatchSet</tt> request to specify the part
--   of the request that you want AWS WAF to inspect (for example, the
--   header or the URI) and the identifier of the <tt>RegexPatternSet</tt>
--   that contain the regular expression patters you want AWS WAF to watch
--   for.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.UpdateRegexMatchSet

-- | Creates a value of <a>UpdateRegexMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>urmsRegexMatchSetId</a> - The <tt>RegexMatchSetId</tt> of the
--   <a>RegexMatchSet</a> that you want to update. <tt>RegexMatchSetId</tt>
--   is returned by <tt>CreateRegexMatchSet</tt> and by
--   <tt>ListRegexMatchSets</tt> .</li>
--   <li><a>urmsUpdates</a> - An array of <tt>RegexMatchSetUpdate</tt>
--   objects that you want to insert into or delete from a
--   <a>RegexMatchSet</a> . For more information, see
--   <a>RegexMatchTuple</a> .</li>
--   <li><a>urmsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
updateRegexMatchSet :: Text -> NonEmpty RegexMatchSetUpdate -> Text -> UpdateRegexMatchSet

-- | <i>See:</i> <a>updateRegexMatchSet</a> smart constructor.
data UpdateRegexMatchSet

-- | The <tt>RegexMatchSetId</tt> of the <a>RegexMatchSet</a> that you want
--   to update. <tt>RegexMatchSetId</tt> is returned by
--   <tt>CreateRegexMatchSet</tt> and by <tt>ListRegexMatchSets</tt> .
urmsRegexMatchSetId :: Lens' UpdateRegexMatchSet Text

-- | An array of <tt>RegexMatchSetUpdate</tt> objects that you want to
--   insert into or delete from a <a>RegexMatchSet</a> . For more
--   information, see <a>RegexMatchTuple</a> .
urmsUpdates :: Lens' UpdateRegexMatchSet (NonEmpty RegexMatchSetUpdate)

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
urmsChangeToken :: Lens' UpdateRegexMatchSet Text

-- | Creates a value of <a>UpdateRegexMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>urmsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>UpdateRegexMatchSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>urmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateRegexMatchSetResponse :: Int -> UpdateRegexMatchSetResponse

-- | <i>See:</i> <a>updateRegexMatchSetResponse</a> smart constructor.
data UpdateRegexMatchSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>UpdateRegexMatchSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
urmsrsChangeToken :: Lens' UpdateRegexMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
urmsrsResponseStatus :: Lens' UpdateRegexMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSet
instance Data.Data.Data Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSet
instance GHC.Show.Show Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSet
instance GHC.Read.Read Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.UpdateRegexMatchSet.UpdateRegexMatchSet


-- | Inserts or deletes <tt>RegexPatternString</tt> objects in a
--   <a>RegexPatternSet</a> . For each <tt>RegexPatternString</tt> object,
--   you specify the following values:
--   
--   <ul>
--   <li>Whether to insert or delete the <tt>RegexPatternString</tt> .</li>
--   <li>The regular expression pattern that you want to insert or delete.
--   For more information, see <a>RegexPatternSet</a> .</li>
--   </ul>
--   
--   For example, you can create a <tt>RegexPatternString</tt> such as
--   <tt>B[a</tt>]dB[o0]t<tt> . AWS WAF will match this
--   </tt>RegexPatternString@ to:
--   
--   <ul>
--   <li>BadBot</li>
--   <li>BadB0t</li>
--   <li>B@dBot</li>
--   <li>B@dB0t</li>
--   </ul>
--   
--   To create and configure a <tt>RegexPatternSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Create a <tt>RegexPatternSet.</tt> For more information, see
--   <tt>CreateRegexPatternSet</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateRegexPatternSet</tt> request.</li>
--   <li>Submit an <tt>UpdateRegexPatternSet</tt> request to specify the
--   regular expression pattern that you want AWS WAF to watch for.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.UpdateRegexPatternSet

-- | Creates a value of <a>UpdateRegexPatternSet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>urpsRegexPatternSetId</a> - The <tt>RegexPatternSetId</tt> of
--   the <a>RegexPatternSet</a> that you want to update.
--   <tt>RegexPatternSetId</tt> is returned by
--   <tt>CreateRegexPatternSet</tt> and by <tt>ListRegexPatternSets</tt>
--   .</li>
--   <li><a>urpsUpdates</a> - An array of <tt>RegexPatternSetUpdate</tt>
--   objects that you want to insert into or delete from a
--   <a>RegexPatternSet</a> .</li>
--   <li><a>urpsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   </ul>
updateRegexPatternSet :: Text -> NonEmpty RegexPatternSetUpdate -> Text -> UpdateRegexPatternSet

-- | <i>See:</i> <a>updateRegexPatternSet</a> smart constructor.
data UpdateRegexPatternSet

-- | The <tt>RegexPatternSetId</tt> of the <a>RegexPatternSet</a> that you
--   want to update. <tt>RegexPatternSetId</tt> is returned by
--   <tt>CreateRegexPatternSet</tt> and by <tt>ListRegexPatternSets</tt> .
urpsRegexPatternSetId :: Lens' UpdateRegexPatternSet Text

-- | An array of <tt>RegexPatternSetUpdate</tt> objects that you want to
--   insert into or delete from a <a>RegexPatternSet</a> .
urpsUpdates :: Lens' UpdateRegexPatternSet (NonEmpty RegexPatternSetUpdate)

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
urpsChangeToken :: Lens' UpdateRegexPatternSet Text

-- | Creates a value of <a>UpdateRegexPatternSetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>urpsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>UpdateRegexPatternSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>urpsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateRegexPatternSetResponse :: Int -> UpdateRegexPatternSetResponse

-- | <i>See:</i> <a>updateRegexPatternSetResponse</a> smart constructor.
data UpdateRegexPatternSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>UpdateRegexPatternSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
urpsrsChangeToken :: Lens' UpdateRegexPatternSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
urpsrsResponseStatus :: Lens' UpdateRegexPatternSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSetResponse
instance Data.Data.Data Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSetResponse
instance GHC.Show.Show Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSetResponse
instance GHC.Read.Read Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSet
instance Data.Data.Data Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSet
instance GHC.Show.Show Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSet
instance GHC.Read.Read Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSet
instance GHC.Classes.Eq Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.UpdateRegexPatternSet.UpdateRegexPatternSet


-- | Inserts or deletes <a>Predicate</a> objects in a <tt>Rule</tt> . Each
--   <tt>Predicate</tt> object identifies a predicate, such as a
--   <a>ByteMatchSet</a> or an <a>IPSet</a> , that specifies the web
--   requests that you want to allow, block, or count. If you add more than
--   one predicate to a <tt>Rule</tt> , a request must match all of the
--   specifications to be allowed, blocked, or counted. For example,
--   suppose you add the following to a <tt>Rule</tt> :
--   
--   <ul>
--   <li>A <tt>ByteMatchSet</tt> that matches the value <tt>BadBot</tt> in
--   the <tt>User-Agent</tt> header</li>
--   <li>An <tt>IPSet</tt> that matches the IP address
--   <tt>192.0.2.44</tt></li>
--   </ul>
--   
--   You then add the <tt>Rule</tt> to a <tt>WebACL</tt> and specify that
--   you want to block requests that satisfy the <tt>Rule</tt> . For a
--   request to be blocked, the <tt>User-Agent</tt> header in the request
--   must contain the value <tt>BadBot</tt> <i>and</i> the request must
--   originate from the IP address 192.0.2.44.
--   
--   To create and configure a <tt>Rule</tt> , perform the following steps:
--   
--   <ul>
--   <li>Create and update the predicates that you want to include in the
--   <tt>Rule</tt> .</li>
--   <li>Create the <tt>Rule</tt> . See <tt>CreateRule</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an <a>UpdateRule</a>
--   request.</li>
--   <li>Submit an <tt>UpdateRule</tt> request to add predicates to the
--   <tt>Rule</tt> .</li>
--   <li>Create and update a <tt>WebACL</tt> that contains the
--   <tt>Rule</tt> . See <tt>CreateWebACL</tt> .</li>
--   </ul>
--   
--   If you want to replace one <tt>ByteMatchSet</tt> or <tt>IPSet</tt>
--   with another, you delete the existing one and add the new one.
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.UpdateRule

-- | Creates a value of <a>UpdateRule</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>urRuleId</a> - The <tt>RuleId</tt> of the <tt>Rule</tt> that
--   you want to update. <tt>RuleId</tt> is returned by <tt>CreateRule</tt>
--   and by <tt>ListRules</tt> .</li>
--   <li><a>urChangeToken</a> - The value returned by the most recent call
--   to <tt>GetChangeToken</tt> .</li>
--   <li><a>urUpdates</a> - An array of <tt>RuleUpdate</tt> objects that
--   you want to insert into or delete from a <a>Rule</a> . For more
--   information, see the applicable data types: * <a>RuleUpdate</a> :
--   Contains <tt>Action</tt> and <tt>Predicate</tt> * <a>Predicate</a> :
--   Contains <tt>DataId</tt> , <tt>Negated</tt> , and <tt>Type</tt> *
--   <a>FieldToMatch</a> : Contains <tt>Data</tt> and <tt>Type</tt></li>
--   </ul>
updateRule :: Text -> Text -> UpdateRule

-- | <i>See:</i> <a>updateRule</a> smart constructor.
data UpdateRule

-- | The <tt>RuleId</tt> of the <tt>Rule</tt> that you want to update.
--   <tt>RuleId</tt> is returned by <tt>CreateRule</tt> and by
--   <tt>ListRules</tt> .
urRuleId :: Lens' UpdateRule Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
urChangeToken :: Lens' UpdateRule Text

-- | An array of <tt>RuleUpdate</tt> objects that you want to insert into
--   or delete from a <a>Rule</a> . For more information, see the
--   applicable data types: * <a>RuleUpdate</a> : Contains <tt>Action</tt>
--   and <tt>Predicate</tt> * <a>Predicate</a> : Contains <tt>DataId</tt> ,
--   <tt>Negated</tt> , and <tt>Type</tt> * <a>FieldToMatch</a> : Contains
--   <tt>Data</tt> and <tt>Type</tt>
urUpdates :: Lens' UpdateRule [RuleUpdate]

-- | Creates a value of <a>UpdateRuleResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>urrsChangeToken</a> - The <tt>ChangeToken</tt> that you used to
--   submit the <tt>UpdateRule</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>urrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateRuleResponse :: Int -> UpdateRuleResponse

-- | <i>See:</i> <a>updateRuleResponse</a> smart constructor.
data UpdateRuleResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>UpdateRule</tt> request. You can also use this value to query the
--   status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
urrsChangeToken :: Lens' UpdateRuleResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
urrsResponseStatus :: Lens' UpdateRuleResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.UpdateRule.UpdateRuleResponse
instance Data.Data.Data Network.AWS.WAF.UpdateRule.UpdateRuleResponse
instance GHC.Show.Show Network.AWS.WAF.UpdateRule.UpdateRuleResponse
instance GHC.Read.Read Network.AWS.WAF.UpdateRule.UpdateRuleResponse
instance GHC.Classes.Eq Network.AWS.WAF.UpdateRule.UpdateRuleResponse
instance GHC.Generics.Generic Network.AWS.WAF.UpdateRule.UpdateRule
instance Data.Data.Data Network.AWS.WAF.UpdateRule.UpdateRule
instance GHC.Show.Show Network.AWS.WAF.UpdateRule.UpdateRule
instance GHC.Read.Read Network.AWS.WAF.UpdateRule.UpdateRule
instance GHC.Classes.Eq Network.AWS.WAF.UpdateRule.UpdateRule
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.UpdateRule.UpdateRule
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateRule.UpdateRuleResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.UpdateRule.UpdateRule
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateRule.UpdateRule
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.UpdateRule.UpdateRule
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.UpdateRule.UpdateRule
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.UpdateRule.UpdateRule
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.UpdateRule.UpdateRule


-- | Inserts or deletes <a>ActivatedRule</a> objects in a
--   <tt>RuleGroup</tt> .
--   
--   You can only insert <tt>REGULAR</tt> rules into a rule group.
--   
--   You can have a maximum of ten rules per rule group.
--   
--   To create and configure a <tt>RuleGroup</tt> , perform the following
--   steps:
--   
--   <ul>
--   <li>Create and update the <tt>Rules</tt> that you want to include in
--   the <tt>RuleGroup</tt> . See <tt>CreateRule</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <a>UpdateRuleGroup</a> request.</li>
--   <li>Submit an <tt>UpdateRuleGroup</tt> request to add <tt>Rules</tt>
--   to the <tt>RuleGroup</tt> .</li>
--   <li>Create and update a <tt>WebACL</tt> that contains the
--   <tt>RuleGroup</tt> . See <tt>CreateWebACL</tt> .</li>
--   </ul>
--   
--   If you want to replace one <tt>Rule</tt> with another, you delete the
--   existing one and add the new one.
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.UpdateRuleGroup

-- | Creates a value of <a>UpdateRuleGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>urgRuleGroupId</a> - The <tt>RuleGroupId</tt> of the
--   <a>RuleGroup</a> that you want to update. <tt>RuleGroupId</tt> is
--   returned by <tt>CreateRuleGroup</tt> and by <tt>ListRuleGroups</tt>
--   .</li>
--   <li><a>urgUpdates</a> - An array of <tt>RuleGroupUpdate</tt> objects
--   that you want to insert into or delete from a <a>RuleGroup</a> . You
--   can only insert <tt>REGULAR</tt> rules into a rule group.
--   <tt>ActivatedRule|OverrideAction</tt> applies only when updating or
--   adding a <tt>RuleGroup</tt> to a <tt>WebACL</tt> . In this case you do
--   not use <tt>ActivatedRule|Action</tt> . For all other update requests,
--   <tt>ActivatedRule|Action</tt> is used instead of
--   <tt>ActivatedRule|OverrideAction</tt> .</li>
--   <li><a>urgChangeToken</a> - The value returned by the most recent call
--   to <tt>GetChangeToken</tt> .</li>
--   </ul>
updateRuleGroup :: Text -> NonEmpty RuleGroupUpdate -> Text -> UpdateRuleGroup

-- | <i>See:</i> <a>updateRuleGroup</a> smart constructor.
data UpdateRuleGroup

-- | The <tt>RuleGroupId</tt> of the <a>RuleGroup</a> that you want to
--   update. <tt>RuleGroupId</tt> is returned by <tt>CreateRuleGroup</tt>
--   and by <tt>ListRuleGroups</tt> .
urgRuleGroupId :: Lens' UpdateRuleGroup Text

-- | An array of <tt>RuleGroupUpdate</tt> objects that you want to insert
--   into or delete from a <a>RuleGroup</a> . You can only insert
--   <tt>REGULAR</tt> rules into a rule group.
--   <tt>ActivatedRule|OverrideAction</tt> applies only when updating or
--   adding a <tt>RuleGroup</tt> to a <tt>WebACL</tt> . In this case you do
--   not use <tt>ActivatedRule|Action</tt> . For all other update requests,
--   <tt>ActivatedRule|Action</tt> is used instead of
--   <tt>ActivatedRule|OverrideAction</tt> .
urgUpdates :: Lens' UpdateRuleGroup (NonEmpty RuleGroupUpdate)

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
urgChangeToken :: Lens' UpdateRuleGroup Text

-- | Creates a value of <a>UpdateRuleGroupResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>urgrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>UpdateRuleGroup</tt> request. You can also use this
--   value to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>urgrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateRuleGroupResponse :: Int -> UpdateRuleGroupResponse

-- | <i>See:</i> <a>updateRuleGroupResponse</a> smart constructor.
data UpdateRuleGroupResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>UpdateRuleGroup</tt> request. You can also use this value to query
--   the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
urgrsChangeToken :: Lens' UpdateRuleGroupResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
urgrsResponseStatus :: Lens' UpdateRuleGroupResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroupResponse
instance Data.Data.Data Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroupResponse
instance GHC.Show.Show Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroupResponse
instance GHC.Read.Read Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroupResponse
instance GHC.Classes.Eq Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroupResponse
instance GHC.Generics.Generic Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroup
instance Data.Data.Data Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroup
instance GHC.Show.Show Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroup
instance GHC.Read.Read Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroup
instance GHC.Classes.Eq Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroup
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroup
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroupResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroup
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroup
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroup
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroup
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroup
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.UpdateRuleGroup.UpdateRuleGroup


-- | Inserts or deletes <a>SizeConstraint</a> objects (filters) in a
--   <a>SizeConstraintSet</a> . For each <tt>SizeConstraint</tt> object,
--   you specify the following values:
--   
--   <ul>
--   <li>Whether to insert or delete the object from the array. If you want
--   to change a <tt>SizeConstraintSetUpdate</tt> object, you delete the
--   existing object and add a new one.</li>
--   <li>The part of a web request that you want AWS WAF to evaluate, such
--   as the length of a query string or the length of the
--   <tt>User-Agent</tt> header.</li>
--   <li>Whether to perform any transformations on the request, such as
--   converting it to lowercase, before checking its length. Note that
--   transformations of the request body are not supported because the AWS
--   resource forwards only the first <tt>8192</tt> bytes of your request
--   to AWS WAF.</li>
--   <li>A <tt>ComparisonOperator</tt> used for evaluating the selected
--   part of the request against the specified <tt>Size</tt> , such as
--   equals, greater than, less than, and so on.</li>
--   <li>The length, in bytes, that you want AWS WAF to watch for in
--   selected part of the request. The length is computed after applying
--   the transformation.</li>
--   </ul>
--   
--   For example, you can add a <tt>SizeConstraintSetUpdate</tt> object
--   that matches web requests in which the length of the
--   <tt>User-Agent</tt> header is greater than 100 bytes. You can then
--   configure AWS WAF to block those requests.
--   
--   To create and configure a <tt>SizeConstraintSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Create a <tt>SizeConstraintSet.</tt> For more information, see
--   <tt>CreateSizeConstraintSet</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateSizeConstraintSet</tt> request.</li>
--   <li>Submit an <tt>UpdateSizeConstraintSet</tt> request to specify the
--   part of the request that you want AWS WAF to inspect (for example, the
--   header or the URI) and the value that you want AWS WAF to watch
--   for.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.UpdateSizeConstraintSet

-- | Creates a value of <a>UpdateSizeConstraintSet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uscsSizeConstraintSetId</a> - The <tt>SizeConstraintSetId</tt>
--   of the <a>SizeConstraintSet</a> that you want to update.
--   <tt>SizeConstraintSetId</tt> is returned by
--   <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .</li>
--   <li><a>uscsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   <li><a>uscsUpdates</a> - An array of <tt>SizeConstraintSetUpdate</tt>
--   objects that you want to insert into or delete from a
--   <a>SizeConstraintSet</a> . For more information, see the applicable
--   data types: * <a>SizeConstraintSetUpdate</a> : Contains
--   <tt>Action</tt> and <tt>SizeConstraint</tt> * <a>SizeConstraint</a> :
--   Contains <tt>FieldToMatch</tt> , <tt>TextTransformation</tt> ,
--   <tt>ComparisonOperator</tt> , and <tt>Size</tt> * <a>FieldToMatch</a>
--   : Contains <tt>Data</tt> and <tt>Type</tt></li>
--   </ul>
updateSizeConstraintSet :: Text -> Text -> NonEmpty SizeConstraintSetUpdate -> UpdateSizeConstraintSet

-- | <i>See:</i> <a>updateSizeConstraintSet</a> smart constructor.
data UpdateSizeConstraintSet

-- | The <tt>SizeConstraintSetId</tt> of the <a>SizeConstraintSet</a> that
--   you want to update. <tt>SizeConstraintSetId</tt> is returned by
--   <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .
uscsSizeConstraintSetId :: Lens' UpdateSizeConstraintSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
uscsChangeToken :: Lens' UpdateSizeConstraintSet Text

-- | An array of <tt>SizeConstraintSetUpdate</tt> objects that you want to
--   insert into or delete from a <a>SizeConstraintSet</a> . For more
--   information, see the applicable data types: *
--   <a>SizeConstraintSetUpdate</a> : Contains <tt>Action</tt> and
--   <tt>SizeConstraint</tt> * <a>SizeConstraint</a> : Contains
--   <tt>FieldToMatch</tt> , <tt>TextTransformation</tt> ,
--   <tt>ComparisonOperator</tt> , and <tt>Size</tt> * <a>FieldToMatch</a>
--   : Contains <tt>Data</tt> and <tt>Type</tt>
uscsUpdates :: Lens' UpdateSizeConstraintSet (NonEmpty SizeConstraintSetUpdate)

-- | Creates a value of <a>UpdateSizeConstraintSetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uscsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>UpdateSizeConstraintSet</tt> request. You can also
--   use this value to query the status of the request. For more
--   information, see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>uscsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateSizeConstraintSetResponse :: Int -> UpdateSizeConstraintSetResponse

-- | <i>See:</i> <a>updateSizeConstraintSetResponse</a> smart constructor.
data UpdateSizeConstraintSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>UpdateSizeConstraintSet</tt> request. You can also use this value
--   to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
uscsrsChangeToken :: Lens' UpdateSizeConstraintSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
uscsrsResponseStatus :: Lens' UpdateSizeConstraintSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSetResponse
instance Data.Data.Data Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSetResponse
instance GHC.Show.Show Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSetResponse
instance GHC.Read.Read Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSet
instance Data.Data.Data Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSet
instance GHC.Show.Show Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSet
instance GHC.Read.Read Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSet
instance GHC.Classes.Eq Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSet


-- | Inserts or deletes <a>SqlInjectionMatchTuple</a> objects (filters) in
--   a <a>SqlInjectionMatchSet</a> . For each
--   <tt>SqlInjectionMatchTuple</tt> object, you specify the following
--   values:
--   
--   <ul>
--   <li><tt>Action</tt> : Whether to insert the object into or delete the
--   object from the array. To change a <tt>SqlInjectionMatchTuple</tt> ,
--   you delete the existing object and add a new one.</li>
--   <li><tt>FieldToMatch</tt> : The part of web requests that you want AWS
--   WAF to inspect and, if you want AWS WAF to inspect a header, the name
--   of the header.</li>
--   <li><tt>TextTransformation</tt> : Which text transformation, if any,
--   to perform on the web request before inspecting the request for
--   snippets of malicious SQL code.</li>
--   </ul>
--   
--   You use <tt>SqlInjectionMatchSet</tt> objects to specify which
--   CloudFront requests you want to allow, block, or count. For example,
--   if you're receiving requests that contain snippets of SQL code in the
--   query string and you want to block the requests, you can create a
--   <tt>SqlInjectionMatchSet</tt> with the applicable settings, and then
--   configure AWS WAF to block the requests.
--   
--   To create and configure a <tt>SqlInjectionMatchSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Submit a <tt>CreateSqlInjectionMatchSet</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateIPSet</tt> request.</li>
--   <li>Submit an <tt>UpdateSqlInjectionMatchSet</tt> request to specify
--   the parts of web requests that you want AWS WAF to inspect for
--   snippets of SQL code.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.UpdateSqlInjectionMatchSet

-- | Creates a value of <a>UpdateSqlInjectionMatchSet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>usimsSqlInjectionMatchSetId</a> - The
--   <tt>SqlInjectionMatchSetId</tt> of the <tt>SqlInjectionMatchSet</tt>
--   that you want to update. <tt>SqlInjectionMatchSetId</tt> is returned
--   by <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .</li>
--   <li><a>usimsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   <li><a>usimsUpdates</a> - An array of
--   <tt>SqlInjectionMatchSetUpdate</tt> objects that you want to insert
--   into or delete from a <a>SqlInjectionMatchSet</a> . For more
--   information, see the applicable data types: *
--   <a>SqlInjectionMatchSetUpdate</a> : Contains <tt>Action</tt> and
--   <tt>SqlInjectionMatchTuple</tt> * <a>SqlInjectionMatchTuple</a> :
--   Contains <tt>FieldToMatch</tt> and <tt>TextTransformation</tt> *
--   <a>FieldToMatch</a> : Contains <tt>Data</tt> and <tt>Type</tt></li>
--   </ul>
updateSqlInjectionMatchSet :: Text -> Text -> NonEmpty SqlInjectionMatchSetUpdate -> UpdateSqlInjectionMatchSet

-- | A request to update a <a>SqlInjectionMatchSet</a> .
--   
--   <i>See:</i> <a>updateSqlInjectionMatchSet</a> smart constructor.
data UpdateSqlInjectionMatchSet

-- | The <tt>SqlInjectionMatchSetId</tt> of the
--   <tt>SqlInjectionMatchSet</tt> that you want to update.
--   <tt>SqlInjectionMatchSetId</tt> is returned by
--   <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .
usimsSqlInjectionMatchSetId :: Lens' UpdateSqlInjectionMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
usimsChangeToken :: Lens' UpdateSqlInjectionMatchSet Text

-- | An array of <tt>SqlInjectionMatchSetUpdate</tt> objects that you want
--   to insert into or delete from a <a>SqlInjectionMatchSet</a> . For more
--   information, see the applicable data types: *
--   <a>SqlInjectionMatchSetUpdate</a> : Contains <tt>Action</tt> and
--   <tt>SqlInjectionMatchTuple</tt> * <a>SqlInjectionMatchTuple</a> :
--   Contains <tt>FieldToMatch</tt> and <tt>TextTransformation</tt> *
--   <a>FieldToMatch</a> : Contains <tt>Data</tt> and <tt>Type</tt>
usimsUpdates :: Lens' UpdateSqlInjectionMatchSet (NonEmpty SqlInjectionMatchSetUpdate)

-- | Creates a value of <a>UpdateSqlInjectionMatchSetResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>usimsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>UpdateSqlInjectionMatchSet</tt> request. You can
--   also use this value to query the status of the request. For more
--   information, see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>usimsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateSqlInjectionMatchSetResponse :: Int -> UpdateSqlInjectionMatchSetResponse

-- | The response to an <tt>UpdateSqlInjectionMatchSets</tt> request.
--   
--   <i>See:</i> <a>updateSqlInjectionMatchSetResponse</a> smart
--   constructor.
data UpdateSqlInjectionMatchSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>UpdateSqlInjectionMatchSet</tt> request. You can also use this
--   value to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
usimsrsChangeToken :: Lens' UpdateSqlInjectionMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
usimsrsResponseStatus :: Lens' UpdateSqlInjectionMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSet
instance Data.Data.Data Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSet
instance GHC.Show.Show Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSet
instance GHC.Read.Read Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSet


-- | Inserts or deletes <a>ActivatedRule</a> objects in a <tt>WebACL</tt> .
--   Each <tt>Rule</tt> identifies web requests that you want to allow,
--   block, or count. When you update a <tt>WebACL</tt> , you specify the
--   following values:
--   
--   <ul>
--   <li>A default action for the <tt>WebACL</tt> , either <tt>ALLOW</tt>
--   or <tt>BLOCK</tt> . AWS WAF performs the default action if a request
--   doesn't match the criteria in any of the <tt>Rules</tt> in a
--   <tt>WebACL</tt> .</li>
--   <li>The <tt>Rules</tt> that you want to add and/or delete. If you want
--   to replace one <tt>Rule</tt> with another, you delete the existing
--   <tt>Rule</tt> and add the new one.</li>
--   <li>For each <tt>Rule</tt> , whether you want AWS WAF to allow
--   requests, block requests, or count requests that match the conditions
--   in the <tt>Rule</tt> .</li>
--   <li>The order in which you want AWS WAF to evaluate the <tt>Rules</tt>
--   in a <tt>WebACL</tt> . If you add more than one <tt>Rule</tt> to a
--   <tt>WebACL</tt> , AWS WAF evaluates each request against the
--   <tt>Rules</tt> in order based on the value of <tt>Priority</tt> . (The
--   <tt>Rule</tt> that has the lowest value for <tt>Priority</tt> is
--   evaluated first.) When a web request matches all of the predicates
--   (such as <tt>ByteMatchSets</tt> and <tt>IPSets</tt> ) in a
--   <tt>Rule</tt> , AWS WAF immediately takes the corresponding action,
--   allow or block, and doesn't evaluate the request against the remaining
--   <tt>Rules</tt> in the <tt>WebACL</tt> , if any.</li>
--   </ul>
--   
--   To create and configure a <tt>WebACL</tt> , perform the following
--   steps:
--   
--   <ul>
--   <li>Create and update the predicates that you want to include in
--   <tt>Rules</tt> . For more information, see <tt>CreateByteMatchSet</tt>
--   , <tt>UpdateByteMatchSet</tt> , <tt>CreateIPSet</tt> ,
--   <tt>UpdateIPSet</tt> , <tt>CreateSqlInjectionMatchSet</tt> , and
--   <tt>UpdateSqlInjectionMatchSet</tt> .</li>
--   <li>Create and update the <tt>Rules</tt> that you want to include in
--   the <tt>WebACL</tt> . For more information, see <tt>CreateRule</tt>
--   and <tt>UpdateRule</tt> .</li>
--   <li>Create a <tt>WebACL</tt> . See <tt>CreateWebACL</tt> .</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <a>UpdateWebACL</a> request.</li>
--   <li>Submit an <tt>UpdateWebACL</tt> request to specify the
--   <tt>Rules</tt> that you want to include in the <tt>WebACL</tt> , to
--   specify the default action, and to associate the <tt>WebACL</tt> with
--   a CloudFront distribution.</li>
--   </ul>
--   
--   Be aware that if you try to add a RATE_BASED rule to a web ACL without
--   setting the rule type when first creating the rule, the
--   <a>UpdateWebACL</a> request will fail because the request tries to add
--   a REGULAR rule (the default rule type) with the specified ID, which
--   does not exist.
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.UpdateWebACL

-- | Creates a value of <a>UpdateWebACL</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uwaUpdates</a> - An array of updates to make to the
--   <a>WebACL</a> . An array of <tt>WebACLUpdate</tt> objects that you
--   want to insert into or delete from a <a>WebACL</a> . For more
--   information, see the applicable data types: * <a>WebACLUpdate</a> :
--   Contains <tt>Action</tt> and <tt>ActivatedRule</tt> *
--   <a>ActivatedRule</a> : Contains <tt>Action</tt> ,
--   <tt>OverrideAction</tt> , <tt>Priority</tt> , <tt>RuleId</tt> , and
--   <tt>Type</tt> . <tt>ActivatedRule|OverrideAction</tt> applies only
--   when updating or adding a <tt>RuleGroup</tt> to a <tt>WebACL</tt> . In
--   this case you do not use <tt>ActivatedRule|Action</tt> . For all other
--   update requests, <tt>ActivatedRule|Action</tt> is used instead of
--   <tt>ActivatedRule|OverrideAction</tt> . * <a>WafAction</a> : Contains
--   <tt>Type</tt></li>
--   <li><a>uwaDefaultAction</a> - A default action for the web ACL, either
--   ALLOW or BLOCK. AWS WAF performs the default action if a request
--   doesn't match the criteria in any of the rules in a web ACL.</li>
--   <li><a>uwaWebACLId</a> - The <tt>WebACLId</tt> of the <a>WebACL</a>
--   that you want to update. <tt>WebACLId</tt> is returned by
--   <tt>CreateWebACL</tt> and by <tt>ListWebACLs</tt> .</li>
--   <li><a>uwaChangeToken</a> - The value returned by the most recent call
--   to <tt>GetChangeToken</tt> .</li>
--   </ul>
updateWebACL :: Text -> Text -> UpdateWebACL

-- | <i>See:</i> <a>updateWebACL</a> smart constructor.
data UpdateWebACL

-- | An array of updates to make to the <a>WebACL</a> . An array of
--   <tt>WebACLUpdate</tt> objects that you want to insert into or delete
--   from a <a>WebACL</a> . For more information, see the applicable data
--   types: * <a>WebACLUpdate</a> : Contains <tt>Action</tt> and
--   <tt>ActivatedRule</tt> * <a>ActivatedRule</a> : Contains
--   <tt>Action</tt> , <tt>OverrideAction</tt> , <tt>Priority</tt> ,
--   <tt>RuleId</tt> , and <tt>Type</tt> .
--   <tt>ActivatedRule|OverrideAction</tt> applies only when updating or
--   adding a <tt>RuleGroup</tt> to a <tt>WebACL</tt> . In this case you do
--   not use <tt>ActivatedRule|Action</tt> . For all other update requests,
--   <tt>ActivatedRule|Action</tt> is used instead of
--   <tt>ActivatedRule|OverrideAction</tt> . * <a>WafAction</a> : Contains
--   <tt>Type</tt>
uwaUpdates :: Lens' UpdateWebACL [WebACLUpdate]

-- | A default action for the web ACL, either ALLOW or BLOCK. AWS WAF
--   performs the default action if a request doesn't match the criteria in
--   any of the rules in a web ACL.
uwaDefaultAction :: Lens' UpdateWebACL (Maybe WafAction)

-- | The <tt>WebACLId</tt> of the <a>WebACL</a> that you want to update.
--   <tt>WebACLId</tt> is returned by <tt>CreateWebACL</tt> and by
--   <tt>ListWebACLs</tt> .
uwaWebACLId :: Lens' UpdateWebACL Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
uwaChangeToken :: Lens' UpdateWebACL Text

-- | Creates a value of <a>UpdateWebACLResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uwarsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>UpdateWebACL</tt> request. You can also use this
--   value to query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>uwarsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateWebACLResponse :: Int -> UpdateWebACLResponse

-- | <i>See:</i> <a>updateWebACLResponse</a> smart constructor.
data UpdateWebACLResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>UpdateWebACL</tt> request. You can also use this value to query
--   the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
uwarsChangeToken :: Lens' UpdateWebACLResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
uwarsResponseStatus :: Lens' UpdateWebACLResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.UpdateWebACL.UpdateWebACLResponse
instance Data.Data.Data Network.AWS.WAF.UpdateWebACL.UpdateWebACLResponse
instance GHC.Show.Show Network.AWS.WAF.UpdateWebACL.UpdateWebACLResponse
instance GHC.Read.Read Network.AWS.WAF.UpdateWebACL.UpdateWebACLResponse
instance GHC.Classes.Eq Network.AWS.WAF.UpdateWebACL.UpdateWebACLResponse
instance GHC.Generics.Generic Network.AWS.WAF.UpdateWebACL.UpdateWebACL
instance Data.Data.Data Network.AWS.WAF.UpdateWebACL.UpdateWebACL
instance GHC.Show.Show Network.AWS.WAF.UpdateWebACL.UpdateWebACL
instance GHC.Read.Read Network.AWS.WAF.UpdateWebACL.UpdateWebACL
instance GHC.Classes.Eq Network.AWS.WAF.UpdateWebACL.UpdateWebACL
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.UpdateWebACL.UpdateWebACL
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateWebACL.UpdateWebACLResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.UpdateWebACL.UpdateWebACL
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateWebACL.UpdateWebACL
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.UpdateWebACL.UpdateWebACL
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.UpdateWebACL.UpdateWebACL
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.UpdateWebACL.UpdateWebACL
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.UpdateWebACL.UpdateWebACL


-- | Inserts or deletes <tt>XssMatchTuple</tt> objects (filters) in an
--   <tt>XssMatchSet</tt> . For each <tt>XssMatchTuple</tt> object, you
--   specify the following values:
--   
--   <ul>
--   <li><tt>Action</tt> : Whether to insert the object into or delete the
--   object from the array. To change a <tt>XssMatchTuple</tt> , you delete
--   the existing object and add a new one.</li>
--   <li><tt>FieldToMatch</tt> : The part of web requests that you want AWS
--   WAF to inspect and, if you want AWS WAF to inspect a header, the name
--   of the header.</li>
--   <li><tt>TextTransformation</tt> : Which text transformation, if any,
--   to perform on the web request before inspecting the request for
--   cross-site scripting attacks.</li>
--   </ul>
--   
--   You use <tt>XssMatchSet</tt> objects to specify which CloudFront
--   requests you want to allow, block, or count. For example, if you're
--   receiving requests that contain cross-site scripting attacks in the
--   request body and you want to block the requests, you can create an
--   <tt>XssMatchSet</tt> with the applicable settings, and then configure
--   AWS WAF to block the requests.
--   
--   To create and configure an <tt>XssMatchSet</tt> , perform the
--   following steps:
--   
--   <ul>
--   <li>Submit a <tt>CreateXssMatchSet</tt> request.</li>
--   <li>Use <tt>GetChangeToken</tt> to get the change token that you
--   provide in the <tt>ChangeToken</tt> parameter of an
--   <tt>UpdateIPSet</tt> request.</li>
--   <li>Submit an <tt>UpdateXssMatchSet</tt> request to specify the parts
--   of web requests that you want AWS WAF to inspect for cross-site
--   scripting attacks.</li>
--   </ul>
--   
--   For more information about how to use the AWS WAF API to allow or
--   block HTTP requests, see the <a>AWS WAF Developer Guide</a> .
module Network.AWS.WAF.UpdateXSSMatchSet

-- | Creates a value of <a>UpdateXSSMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uxmsXSSMatchSetId</a> - The <tt>XssMatchSetId</tt> of the
--   <tt>XssMatchSet</tt> that you want to update. <tt>XssMatchSetId</tt>
--   is returned by <tt>CreateXssMatchSet</tt> and by
--   <tt>ListXssMatchSets</tt> .</li>
--   <li><a>uxmsChangeToken</a> - The value returned by the most recent
--   call to <tt>GetChangeToken</tt> .</li>
--   <li><a>uxmsUpdates</a> - An array of <tt>XssMatchSetUpdate</tt>
--   objects that you want to insert into or delete from a
--   <tt>XssMatchSet</tt> . For more information, see the applicable data
--   types: * <tt>XssMatchSetUpdate</tt> : Contains <tt>Action</tt> and
--   <tt>XssMatchTuple</tt> * <tt>XssMatchTuple</tt> : Contains
--   <tt>FieldToMatch</tt> and <tt>TextTransformation</tt> *
--   <a>FieldToMatch</a> : Contains <tt>Data</tt> and <tt>Type</tt></li>
--   </ul>
updateXSSMatchSet :: Text -> Text -> NonEmpty XSSMatchSetUpdate -> UpdateXSSMatchSet

-- | A request to update an <tt>XssMatchSet</tt> .
--   
--   <i>See:</i> <a>updateXSSMatchSet</a> smart constructor.
data UpdateXSSMatchSet

-- | The <tt>XssMatchSetId</tt> of the <tt>XssMatchSet</tt> that you want
--   to update. <tt>XssMatchSetId</tt> is returned by
--   <tt>CreateXssMatchSet</tt> and by <tt>ListXssMatchSets</tt> .
uxmsXSSMatchSetId :: Lens' UpdateXSSMatchSet Text

-- | The value returned by the most recent call to <tt>GetChangeToken</tt>
--   .
uxmsChangeToken :: Lens' UpdateXSSMatchSet Text

-- | An array of <tt>XssMatchSetUpdate</tt> objects that you want to insert
--   into or delete from a <tt>XssMatchSet</tt> . For more information, see
--   the applicable data types: * <tt>XssMatchSetUpdate</tt> : Contains
--   <tt>Action</tt> and <tt>XssMatchTuple</tt> * <tt>XssMatchTuple</tt> :
--   Contains <tt>FieldToMatch</tt> and <tt>TextTransformation</tt> *
--   <a>FieldToMatch</a> : Contains <tt>Data</tt> and <tt>Type</tt>
uxmsUpdates :: Lens' UpdateXSSMatchSet (NonEmpty XSSMatchSetUpdate)

-- | Creates a value of <a>UpdateXSSMatchSetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uxmsrsChangeToken</a> - The <tt>ChangeToken</tt> that you used
--   to submit the <tt>UpdateXssMatchSet</tt> request. You can also use
--   this value to query the status of the request. For more information,
--   see <tt>GetChangeTokenStatus</tt> .</li>
--   <li><a>uxmsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateXSSMatchSetResponse :: Int -> UpdateXSSMatchSetResponse

-- | The response to an <tt>UpdateXssMatchSets</tt> request.
--   
--   <i>See:</i> <a>updateXSSMatchSetResponse</a> smart constructor.
data UpdateXSSMatchSetResponse

-- | The <tt>ChangeToken</tt> that you used to submit the
--   <tt>UpdateXssMatchSet</tt> request. You can also use this value to
--   query the status of the request. For more information, see
--   <tt>GetChangeTokenStatus</tt> .
uxmsrsChangeToken :: Lens' UpdateXSSMatchSetResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
uxmsrsResponseStatus :: Lens' UpdateXSSMatchSetResponse Int
instance GHC.Generics.Generic Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSetResponse
instance Data.Data.Data Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSetResponse
instance GHC.Show.Show Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSetResponse
instance GHC.Read.Read Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSetResponse
instance GHC.Classes.Eq Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSetResponse
instance GHC.Generics.Generic Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSet
instance Data.Data.Data Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSet
instance GHC.Show.Show Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSet
instance GHC.Read.Read Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSet
instance GHC.Classes.Eq Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSet
instance Network.AWS.Types.AWSRequest Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSetResponse
instance Data.Hashable.Class.Hashable Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSet
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSet
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSet
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSet
instance Network.AWS.Data.Path.ToPath Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSet
instance Network.AWS.Data.Query.ToQuery Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSet


module Network.AWS.WAF.Waiters


-- | This is the <i>AWS WAF API Reference</i> for using AWS WAF with Amazon
--   CloudFront. The AWS WAF actions and data types listed in the reference
--   are available for protecting Amazon CloudFront distributions. You can
--   use these actions and data types via the endpoint
--   <i>waf.amazonaws.com</i> . This guide is for developers who need
--   detailed information about the AWS WAF API actions, data types, and
--   errors. For detailed information about AWS WAF features and an
--   overview of how to use the AWS WAF API, see the <a>AWS WAF Developer
--   Guide</a> .
module Network.AWS.WAF

-- | API version <tt>2015-08-24</tt> of the Amazon WAF SDK configuration.
waf :: Service

-- | The operation failed because you tried to create, update, or delete an
--   object by using an invalid account identifier.
_WAFInvalidAccountException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified subscription does not exist.
_WAFSubscriptionNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because you tried to delete an object that is
--   still in use. For example:
--   
--   <ul>
--   <li>You tried to delete a <tt>ByteMatchSet</tt> that is still
--   referenced by a <tt>Rule</tt> .</li>
--   <li>You tried to delete a <tt>Rule</tt> that is still referenced by a
--   <tt>WebACL</tt> .</li>
--   </ul>
_WAFReferencedItemException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The regular expression (regex) you specified in
--   <tt>RegexPatternString</tt> is invalid.
_WAFInvalidRegexPatternException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because there was nothing to do. For example:
--   
--   <ul>
--   <li>You tried to remove a <tt>Rule</tt> from a <tt>WebACL</tt> , but
--   the <tt>Rule</tt> isn't in the specified <tt>WebACL</tt> .</li>
--   <li>You tried to remove an IP address from an <tt>IPSet</tt> , but the
--   IP address isn't in the specified <tt>IPSet</tt> .</li>
--   <li>You tried to remove a <tt>ByteMatchTuple</tt> from a
--   <tt>ByteMatchSet</tt> , but the <tt>ByteMatchTuple</tt> isn't in the
--   specified <tt>WebACL</tt> .</li>
--   <li>You tried to add a <tt>Rule</tt> to a <tt>WebACL</tt> , but the
--   <tt>Rule</tt> already exists in the specified <tt>WebACL</tt> .</li>
--   <li>You tried to add an IP address to an <tt>IPSet</tt> , but the IP
--   address already exists in the specified <tt>IPSet</tt> .</li>
--   <li>You tried to add a <tt>ByteMatchTuple</tt> to a
--   <tt>ByteMatchSet</tt> , but the <tt>ByteMatchTuple</tt> already exists
--   in the specified <tt>WebACL</tt> .</li>
--   </ul>
_WAFInvalidOperationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because the referenced object doesn't exist.
_WAFNonexistentItemException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because AWS WAF didn't recognize a parameter in
--   the request. For example:
--   
--   <ul>
--   <li>You specified an invalid parameter name.</li>
--   <li>You specified an invalid value.</li>
--   <li>You tried to update an object (<tt>ByteMatchSet</tt> ,
--   <tt>IPSet</tt> , <tt>Rule</tt> , or <tt>WebACL</tt> ) using an action
--   other than <tt>INSERT</tt> or <tt>DELETE</tt> .</li>
--   <li>You tried to create a <tt>WebACL</tt> with a
--   <tt>DefaultAction</tt> <tt>Type</tt> other than <tt>ALLOW</tt> ,
--   <tt>BLOCK</tt> , or <tt>COUNT</tt> .</li>
--   <li>You tried to create a <tt>RateBasedRule</tt> with a
--   <tt>RateKey</tt> value other than <tt>IP</tt> .</li>
--   <li>You tried to update a <tt>WebACL</tt> with a <tt>WafAction</tt>
--   <tt>Type</tt> other than <tt>ALLOW</tt> , <tt>BLOCK</tt> , or
--   <tt>COUNT</tt> .</li>
--   <li>You tried to update a <tt>ByteMatchSet</tt> with a
--   <tt>FieldToMatch</tt> <tt>Type</tt> other than HEADER, METHOD,
--   QUERY_STRING, URI, or BODY.</li>
--   <li>You tried to update a <tt>ByteMatchSet</tt> with a <tt>Field</tt>
--   of <tt>HEADER</tt> but no value for <tt>Data</tt> .</li>
--   <li>Your request references an ARN that is malformed, or corresponds
--   to a resource with which a web ACL cannot be associated.</li>
--   </ul>
_WAFInvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation exceeds a resource limit, for example, the maximum
--   number of <tt>WebACL</tt> objects that you can create for an AWS
--   account. For more information, see <a>Limits</a> in the <i>AWS WAF
--   Developer Guide</i> .
_WAFLimitsExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because the specified policy is not in the proper
--   format.
--   
--   The policy is subject to the following restrictions:
--   
--   <ul>
--   <li>You can attach only one policy with each
--   <tt>PutPermissionPolicy</tt> request.</li>
--   <li>The policy must include an <tt>Effect</tt> , <tt>Action</tt> and
--   <tt>Principal</tt> .</li>
--   <li><tt>Effect</tt> must specify <tt>Allow</tt> .</li>
--   <li>The <tt>Action</tt> in the policy must be
--   <tt>waf:UpdateWebACL</tt> or <tt>waf-regional:UpdateWebACL</tt> . Any
--   extra or wildcard actions in the policy will be rejected.</li>
--   <li>The policy cannot include a <tt>Resource</tt> parameter.</li>
--   <li>The ARN in the request must be a valid WAF RuleGroup ARN and the
--   RuleGroup must exist in the same region.</li>
--   <li>The user making the request must be the owner of the
--   RuleGroup.</li>
--   <li>Your policy must be composed using IAM Policy version
--   2012-10-17.</li>
--   </ul>
_WAFInvalidPermissionPolicyException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because you tried to create, update, or delete an
--   object by using a change token that has already been used.
_WAFStaleDataException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because of a system problem, even though the
--   request was valid. Retry your request.
_WAFInternalErrorException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because you tried to add an object to or delete
--   an object from another object that doesn't exist. For example:
--   
--   <ul>
--   <li>You tried to add a <tt>Rule</tt> to or delete a <tt>Rule</tt> from
--   a <tt>WebACL</tt> that doesn't exist.</li>
--   <li>You tried to add a <tt>ByteMatchSet</tt> to or delete a
--   <tt>ByteMatchSet</tt> from a <tt>Rule</tt> that doesn't exist.</li>
--   <li>You tried to add an IP address to or delete an IP address from an
--   <tt>IPSet</tt> that doesn't exist.</li>
--   <li>You tried to add a <tt>ByteMatchTuple</tt> to or delete a
--   <tt>ByteMatchTuple</tt> from a <tt>ByteMatchSet</tt> that doesn't
--   exist.</li>
--   </ul>
_WAFNonexistentContainerException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The name specified is invalid.
_WAFDisallowedNameException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The operation failed because you tried to delete an object that isn't
--   empty. For example:
--   
--   <ul>
--   <li>You tried to delete a <tt>WebACL</tt> that still contains one or
--   more <tt>Rule</tt> objects.</li>
--   <li>You tried to delete a <tt>Rule</tt> that still contains one or
--   more <tt>ByteMatchSet</tt> objects or other predicates.</li>
--   <li>You tried to delete a <tt>ByteMatchSet</tt> that contains one or
--   more <tt>ByteMatchTuple</tt> objects.</li>
--   <li>You tried to delete an <tt>IPSet</tt> that references one or more
--   IP addresses.</li>
--   </ul>
_WAFNonEmptyEntityException :: AsError a => Getting (First ServiceError) a ServiceError
data ChangeAction
Delete :: ChangeAction
Insert :: ChangeAction
data ChangeTokenStatus
Insync :: ChangeTokenStatus
Pending :: ChangeTokenStatus
Provisioned :: ChangeTokenStatus
data ComparisonOperator
EQ' :: ComparisonOperator
GE :: ComparisonOperator
GT' :: ComparisonOperator
LE :: ComparisonOperator
LT' :: ComparisonOperator
NE :: ComparisonOperator
data GeoMatchConstraintType
Country :: GeoMatchConstraintType
data GeoMatchConstraintValue
GMCVAD :: GeoMatchConstraintValue
GMCVAE :: GeoMatchConstraintValue
GMCVAF :: GeoMatchConstraintValue
GMCVAG :: GeoMatchConstraintValue
GMCVAI :: GeoMatchConstraintValue
GMCVAL :: GeoMatchConstraintValue
GMCVAM :: GeoMatchConstraintValue
GMCVAO :: GeoMatchConstraintValue
GMCVAQ :: GeoMatchConstraintValue
GMCVAR :: GeoMatchConstraintValue
GMCVAS :: GeoMatchConstraintValue
GMCVAT :: GeoMatchConstraintValue
GMCVAU :: GeoMatchConstraintValue
GMCVAW :: GeoMatchConstraintValue
GMCVAX :: GeoMatchConstraintValue
GMCVAZ :: GeoMatchConstraintValue
GMCVBA :: GeoMatchConstraintValue
GMCVBB :: GeoMatchConstraintValue
GMCVBD :: GeoMatchConstraintValue
GMCVBE :: GeoMatchConstraintValue
GMCVBF :: GeoMatchConstraintValue
GMCVBG :: GeoMatchConstraintValue
GMCVBH :: GeoMatchConstraintValue
GMCVBI :: GeoMatchConstraintValue
GMCVBJ :: GeoMatchConstraintValue
GMCVBL :: GeoMatchConstraintValue
GMCVBM :: GeoMatchConstraintValue
GMCVBN :: GeoMatchConstraintValue
GMCVBO :: GeoMatchConstraintValue
GMCVBQ :: GeoMatchConstraintValue
GMCVBR :: GeoMatchConstraintValue
GMCVBS :: GeoMatchConstraintValue
GMCVBT :: GeoMatchConstraintValue
GMCVBV :: GeoMatchConstraintValue
GMCVBW :: GeoMatchConstraintValue
GMCVBY :: GeoMatchConstraintValue
GMCVBZ :: GeoMatchConstraintValue
GMCVCA :: GeoMatchConstraintValue
GMCVCC :: GeoMatchConstraintValue
GMCVCD :: GeoMatchConstraintValue
GMCVCF :: GeoMatchConstraintValue
GMCVCG :: GeoMatchConstraintValue
GMCVCH :: GeoMatchConstraintValue
GMCVCI :: GeoMatchConstraintValue
GMCVCK :: GeoMatchConstraintValue
GMCVCL :: GeoMatchConstraintValue
GMCVCM :: GeoMatchConstraintValue
GMCVCN :: GeoMatchConstraintValue
GMCVCO :: GeoMatchConstraintValue
GMCVCR :: GeoMatchConstraintValue
GMCVCU :: GeoMatchConstraintValue
GMCVCV :: GeoMatchConstraintValue
GMCVCW :: GeoMatchConstraintValue
GMCVCX :: GeoMatchConstraintValue
GMCVCY :: GeoMatchConstraintValue
GMCVCZ :: GeoMatchConstraintValue
GMCVDE :: GeoMatchConstraintValue
GMCVDJ :: GeoMatchConstraintValue
GMCVDK :: GeoMatchConstraintValue
GMCVDM :: GeoMatchConstraintValue
GMCVDO :: GeoMatchConstraintValue
GMCVDZ :: GeoMatchConstraintValue
GMCVEC :: GeoMatchConstraintValue
GMCVEE :: GeoMatchConstraintValue
GMCVEG :: GeoMatchConstraintValue
GMCVEH :: GeoMatchConstraintValue
GMCVER :: GeoMatchConstraintValue
GMCVES :: GeoMatchConstraintValue
GMCVET :: GeoMatchConstraintValue
GMCVFI :: GeoMatchConstraintValue
GMCVFJ :: GeoMatchConstraintValue
GMCVFK :: GeoMatchConstraintValue
GMCVFM :: GeoMatchConstraintValue
GMCVFO :: GeoMatchConstraintValue
GMCVFR :: GeoMatchConstraintValue
GMCVGA :: GeoMatchConstraintValue
GMCVGB :: GeoMatchConstraintValue
GMCVGD :: GeoMatchConstraintValue
GMCVGE :: GeoMatchConstraintValue
GMCVGF :: GeoMatchConstraintValue
GMCVGG :: GeoMatchConstraintValue
GMCVGH :: GeoMatchConstraintValue
GMCVGI :: GeoMatchConstraintValue
GMCVGL :: GeoMatchConstraintValue
GMCVGM :: GeoMatchConstraintValue
GMCVGN :: GeoMatchConstraintValue
GMCVGP :: GeoMatchConstraintValue
GMCVGQ :: GeoMatchConstraintValue
GMCVGR :: GeoMatchConstraintValue
GMCVGS :: GeoMatchConstraintValue
GMCVGT' :: GeoMatchConstraintValue
GMCVGU :: GeoMatchConstraintValue
GMCVGW :: GeoMatchConstraintValue
GMCVGY :: GeoMatchConstraintValue
GMCVHK :: GeoMatchConstraintValue
GMCVHM :: GeoMatchConstraintValue
GMCVHN :: GeoMatchConstraintValue
GMCVHR :: GeoMatchConstraintValue
GMCVHT :: GeoMatchConstraintValue
GMCVHU :: GeoMatchConstraintValue
GMCVIE :: GeoMatchConstraintValue
GMCVIL :: GeoMatchConstraintValue
GMCVIM :: GeoMatchConstraintValue
GMCVIN :: GeoMatchConstraintValue
GMCVIO :: GeoMatchConstraintValue
GMCVIQ :: GeoMatchConstraintValue
GMCVIR :: GeoMatchConstraintValue
GMCVIS :: GeoMatchConstraintValue
GMCVIT :: GeoMatchConstraintValue
GMCVId :: GeoMatchConstraintValue
GMCVJE :: GeoMatchConstraintValue
GMCVJM :: GeoMatchConstraintValue
GMCVJO :: GeoMatchConstraintValue
GMCVJP :: GeoMatchConstraintValue
GMCVKE :: GeoMatchConstraintValue
GMCVKG :: GeoMatchConstraintValue
GMCVKH :: GeoMatchConstraintValue
GMCVKI :: GeoMatchConstraintValue
GMCVKM :: GeoMatchConstraintValue
GMCVKN :: GeoMatchConstraintValue
GMCVKP :: GeoMatchConstraintValue
GMCVKR :: GeoMatchConstraintValue
GMCVKW :: GeoMatchConstraintValue
GMCVKY :: GeoMatchConstraintValue
GMCVKZ :: GeoMatchConstraintValue
GMCVLA :: GeoMatchConstraintValue
GMCVLB :: GeoMatchConstraintValue
GMCVLC :: GeoMatchConstraintValue
GMCVLI :: GeoMatchConstraintValue
GMCVLK :: GeoMatchConstraintValue
GMCVLR :: GeoMatchConstraintValue
GMCVLS :: GeoMatchConstraintValue
GMCVLT' :: GeoMatchConstraintValue
GMCVLU :: GeoMatchConstraintValue
GMCVLV :: GeoMatchConstraintValue
GMCVLY :: GeoMatchConstraintValue
GMCVMA :: GeoMatchConstraintValue
GMCVMC :: GeoMatchConstraintValue
GMCVMD :: GeoMatchConstraintValue
GMCVME :: GeoMatchConstraintValue
GMCVMF :: GeoMatchConstraintValue
GMCVMG :: GeoMatchConstraintValue
GMCVMH :: GeoMatchConstraintValue
GMCVMK :: GeoMatchConstraintValue
GMCVML :: GeoMatchConstraintValue
GMCVMM :: GeoMatchConstraintValue
GMCVMN :: GeoMatchConstraintValue
GMCVMO :: GeoMatchConstraintValue
GMCVMP :: GeoMatchConstraintValue
GMCVMQ :: GeoMatchConstraintValue
GMCVMR :: GeoMatchConstraintValue
GMCVMS :: GeoMatchConstraintValue
GMCVMT :: GeoMatchConstraintValue
GMCVMU :: GeoMatchConstraintValue
GMCVMV :: GeoMatchConstraintValue
GMCVMW :: GeoMatchConstraintValue
GMCVMX :: GeoMatchConstraintValue
GMCVMY :: GeoMatchConstraintValue
GMCVMZ :: GeoMatchConstraintValue
GMCVNA :: GeoMatchConstraintValue
GMCVNC :: GeoMatchConstraintValue
GMCVNE :: GeoMatchConstraintValue
GMCVNF :: GeoMatchConstraintValue
GMCVNG :: GeoMatchConstraintValue
GMCVNI :: GeoMatchConstraintValue
GMCVNL :: GeoMatchConstraintValue
GMCVNO :: GeoMatchConstraintValue
GMCVNP :: GeoMatchConstraintValue
GMCVNR :: GeoMatchConstraintValue
GMCVNU :: GeoMatchConstraintValue
GMCVNZ :: GeoMatchConstraintValue
GMCVOM :: GeoMatchConstraintValue
GMCVPA :: GeoMatchConstraintValue
GMCVPE :: GeoMatchConstraintValue
GMCVPF :: GeoMatchConstraintValue
GMCVPG :: GeoMatchConstraintValue
GMCVPH :: GeoMatchConstraintValue
GMCVPK :: GeoMatchConstraintValue
GMCVPL :: GeoMatchConstraintValue
GMCVPM :: GeoMatchConstraintValue
GMCVPN :: GeoMatchConstraintValue
GMCVPR :: GeoMatchConstraintValue
GMCVPS :: GeoMatchConstraintValue
GMCVPT :: GeoMatchConstraintValue
GMCVPW :: GeoMatchConstraintValue
GMCVPY :: GeoMatchConstraintValue
GMCVQA :: GeoMatchConstraintValue
GMCVRE :: GeoMatchConstraintValue
GMCVRO :: GeoMatchConstraintValue
GMCVRS :: GeoMatchConstraintValue
GMCVRU :: GeoMatchConstraintValue
GMCVRW :: GeoMatchConstraintValue
GMCVSA :: GeoMatchConstraintValue
GMCVSB :: GeoMatchConstraintValue
GMCVSC :: GeoMatchConstraintValue
GMCVSD :: GeoMatchConstraintValue
GMCVSE :: GeoMatchConstraintValue
GMCVSG :: GeoMatchConstraintValue
GMCVSH :: GeoMatchConstraintValue
GMCVSI :: GeoMatchConstraintValue
GMCVSJ :: GeoMatchConstraintValue
GMCVSK :: GeoMatchConstraintValue
GMCVSL :: GeoMatchConstraintValue
GMCVSM :: GeoMatchConstraintValue
GMCVSN :: GeoMatchConstraintValue
GMCVSO :: GeoMatchConstraintValue
GMCVSR :: GeoMatchConstraintValue
GMCVSS :: GeoMatchConstraintValue
GMCVST :: GeoMatchConstraintValue
GMCVSV :: GeoMatchConstraintValue
GMCVSX :: GeoMatchConstraintValue
GMCVSY :: GeoMatchConstraintValue
GMCVSZ :: GeoMatchConstraintValue
GMCVTC :: GeoMatchConstraintValue
GMCVTD :: GeoMatchConstraintValue
GMCVTF :: GeoMatchConstraintValue
GMCVTG :: GeoMatchConstraintValue
GMCVTH :: GeoMatchConstraintValue
GMCVTJ :: GeoMatchConstraintValue
GMCVTK :: GeoMatchConstraintValue
GMCVTL :: GeoMatchConstraintValue
GMCVTM :: GeoMatchConstraintValue
GMCVTN :: GeoMatchConstraintValue
GMCVTO :: GeoMatchConstraintValue
GMCVTR :: GeoMatchConstraintValue
GMCVTT :: GeoMatchConstraintValue
GMCVTV :: GeoMatchConstraintValue
GMCVTW :: GeoMatchConstraintValue
GMCVTZ :: GeoMatchConstraintValue
GMCVUA :: GeoMatchConstraintValue
GMCVUG :: GeoMatchConstraintValue
GMCVUM :: GeoMatchConstraintValue
GMCVUS :: GeoMatchConstraintValue
GMCVUY :: GeoMatchConstraintValue
GMCVUZ :: GeoMatchConstraintValue
GMCVVA :: GeoMatchConstraintValue
GMCVVC :: GeoMatchConstraintValue
GMCVVE :: GeoMatchConstraintValue
GMCVVG :: GeoMatchConstraintValue
GMCVVI :: GeoMatchConstraintValue
GMCVVN :: GeoMatchConstraintValue
GMCVVU :: GeoMatchConstraintValue
GMCVWF :: GeoMatchConstraintValue
GMCVWS :: GeoMatchConstraintValue
GMCVYE :: GeoMatchConstraintValue
GMCVYT :: GeoMatchConstraintValue
GMCVZA :: GeoMatchConstraintValue
GMCVZM :: GeoMatchConstraintValue
GMCVZW :: GeoMatchConstraintValue
data IPSetDescriptorType
IPV4 :: IPSetDescriptorType
IPV6 :: IPSetDescriptorType
data MatchFieldType
Body :: MatchFieldType
Header :: MatchFieldType
Method :: MatchFieldType
QueryString :: MatchFieldType
URI :: MatchFieldType
data PositionalConstraint
Contains :: PositionalConstraint
ContainsWord :: PositionalConstraint
EndsWith :: PositionalConstraint
Exactly :: PositionalConstraint
StartsWith :: PositionalConstraint
data PredicateType
ByteMatch :: PredicateType
GeoMatch :: PredicateType
IPMatch :: PredicateType
RegexMatch :: PredicateType
SizeConstraint :: PredicateType
SqlInjectionMatch :: PredicateType
XSSMatch :: PredicateType
data RateKey
IP :: RateKey
data TextTransformation
CmdLine :: TextTransformation
CompressWhiteSpace :: TextTransformation
HTMLEntityDecode :: TextTransformation
Lowercase :: TextTransformation
None :: TextTransformation
URLDecode :: TextTransformation
data WafActionType
Allow :: WafActionType
Block :: WafActionType
Count :: WafActionType
data WafOverrideActionType
WOATCount :: WafOverrideActionType
WOATNone :: WafOverrideActionType
data WafRuleType
Group :: WafRuleType
RateBased :: WafRuleType
Regular :: WafRuleType

-- | The <tt>ActivatedRule</tt> object in an <tt>UpdateWebACL</tt> request
--   specifies a <tt>Rule</tt> that you want to insert or delete, the
--   priority of the <tt>Rule</tt> in the <tt>WebACL</tt> , and the action
--   that you want AWS WAF to take when a web request matches the
--   <tt>Rule</tt> (<tt>ALLOW</tt> , <tt>BLOCK</tt> , or <tt>COUNT</tt> ).
--   
--   To specify whether to insert or delete a <tt>Rule</tt> , use the
--   <tt>Action</tt> parameter in the <a>WebACLUpdate</a> data type.
--   
--   <i>See:</i> <a>activatedRule</a> smart constructor.
data ActivatedRule

-- | Creates a value of <a>ActivatedRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>arOverrideAction</a> - Use the <tt>OverrideAction</tt> to test
--   your <tt>RuleGroup</tt> . Any rule in a <tt>RuleGroup</tt> can
--   potentially block a request. If you set the <tt>OverrideAction</tt> to
--   <tt>None</tt> , the <tt>RuleGroup</tt> will block a request if any
--   individual rule in the <tt>RuleGroup</tt> matches the request and is
--   configured to block that request. However if you first want to test
--   the <tt>RuleGroup</tt> , set the <tt>OverrideAction</tt> to
--   <tt>Count</tt> . The <tt>RuleGroup</tt> will then override any block
--   action specified by individual rules contained within the group.
--   Instead of blocking matching requests, those requests will be counted.
--   You can view a record of counted requests using
--   <tt>GetSampledRequests</tt> . <tt>ActivatedRule|OverrideAction</tt>
--   applies only when updating or adding a <tt>RuleGroup</tt> to a
--   <tt>WebACL</tt> . In this case you do not use
--   <tt>ActivatedRule|Action</tt> . For all other update requests,
--   <tt>ActivatedRule|Action</tt> is used instead of
--   <tt>ActivatedRule|OverrideAction</tt> .</li>
--   <li><a>arAction</a> - Specifies the action that CloudFront or AWS WAF
--   takes when a web request matches the conditions in the <tt>Rule</tt> .
--   Valid values for <tt>Action</tt> include the following: *
--   <tt>ALLOW</tt> : CloudFront responds with the requested object. *
--   <tt>BLOCK</tt> : CloudFront responds with an HTTP 403 (Forbidden)
--   status code. * <tt>COUNT</tt> : AWS WAF increments a counter of
--   requests that match the conditions in the rule and then continues to
--   inspect the web request based on the remaining rules in the web ACL.
--   <tt>ActivatedRule|OverrideAction</tt> applies only when updating or
--   adding a <tt>RuleGroup</tt> to a <tt>WebACL</tt> . In this case you do
--   not use <tt>ActivatedRule|Action</tt> . For all other update requests,
--   <tt>ActivatedRule|Action</tt> is used instead of
--   <tt>ActivatedRule|OverrideAction</tt> .</li>
--   <li><a>arType</a> - The rule type, either <tt>REGULAR</tt> , as
--   defined by <a>Rule</a> , <tt>RATE_BASED</tt> , as defined by
--   <a>RateBasedRule</a> , or <tt>GROUP</tt> , as defined by
--   <a>RuleGroup</a> . The default is REGULAR. Although this field is
--   optional, be aware that if you try to add a RATE_BASED rule to a web
--   ACL without setting the type, the <tt>UpdateWebACL</tt> request will
--   fail because the request tries to add a REGULAR rule with the
--   specified ID, which does not exist.</li>
--   <li><a>arPriority</a> - Specifies the order in which the
--   <tt>Rules</tt> in a <tt>WebACL</tt> are evaluated. Rules with a lower
--   value for <tt>Priority</tt> are evaluated before <tt>Rules</tt> with a
--   higher value. The value must be a unique integer. If you add multiple
--   <tt>Rules</tt> to a <tt>WebACL</tt> , the values don't need to be
--   consecutive.</li>
--   <li><a>arRuleId</a> - The <tt>RuleId</tt> for a <tt>Rule</tt> . You
--   use <tt>RuleId</tt> to get more information about a <tt>Rule</tt> (see
--   <tt>GetRule</tt> ), update a <tt>Rule</tt> (see <tt>UpdateRule</tt> ),
--   insert a <tt>Rule</tt> into a <tt>WebACL</tt> or delete a one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>Rule</tt> from AWS WAF (see <tt>DeleteRule</tt> ). <tt>RuleId</tt>
--   is returned by <tt>CreateRule</tt> and by <tt>ListRules</tt> .</li>
--   </ul>
activatedRule :: Int -> Text -> ActivatedRule

-- | Use the <tt>OverrideAction</tt> to test your <tt>RuleGroup</tt> . Any
--   rule in a <tt>RuleGroup</tt> can potentially block a request. If you
--   set the <tt>OverrideAction</tt> to <tt>None</tt> , the
--   <tt>RuleGroup</tt> will block a request if any individual rule in the
--   <tt>RuleGroup</tt> matches the request and is configured to block that
--   request. However if you first want to test the <tt>RuleGroup</tt> ,
--   set the <tt>OverrideAction</tt> to <tt>Count</tt> . The
--   <tt>RuleGroup</tt> will then override any block action specified by
--   individual rules contained within the group. Instead of blocking
--   matching requests, those requests will be counted. You can view a
--   record of counted requests using <tt>GetSampledRequests</tt> .
--   <tt>ActivatedRule|OverrideAction</tt> applies only when updating or
--   adding a <tt>RuleGroup</tt> to a <tt>WebACL</tt> . In this case you do
--   not use <tt>ActivatedRule|Action</tt> . For all other update requests,
--   <tt>ActivatedRule|Action</tt> is used instead of
--   <tt>ActivatedRule|OverrideAction</tt> .
arOverrideAction :: Lens' ActivatedRule (Maybe WafOverrideAction)

-- | Specifies the action that CloudFront or AWS WAF takes when a web
--   request matches the conditions in the <tt>Rule</tt> . Valid values for
--   <tt>Action</tt> include the following: * <tt>ALLOW</tt> : CloudFront
--   responds with the requested object. * <tt>BLOCK</tt> : CloudFront
--   responds with an HTTP 403 (Forbidden) status code. * <tt>COUNT</tt> :
--   AWS WAF increments a counter of requests that match the conditions in
--   the rule and then continues to inspect the web request based on the
--   remaining rules in the web ACL. <tt>ActivatedRule|OverrideAction</tt>
--   applies only when updating or adding a <tt>RuleGroup</tt> to a
--   <tt>WebACL</tt> . In this case you do not use
--   <tt>ActivatedRule|Action</tt> . For all other update requests,
--   <tt>ActivatedRule|Action</tt> is used instead of
--   <tt>ActivatedRule|OverrideAction</tt> .
arAction :: Lens' ActivatedRule (Maybe WafAction)

-- | The rule type, either <tt>REGULAR</tt> , as defined by <a>Rule</a> ,
--   <tt>RATE_BASED</tt> , as defined by <a>RateBasedRule</a> , or
--   <tt>GROUP</tt> , as defined by <a>RuleGroup</a> . The default is
--   REGULAR. Although this field is optional, be aware that if you try to
--   add a RATE_BASED rule to a web ACL without setting the type, the
--   <tt>UpdateWebACL</tt> request will fail because the request tries to
--   add a REGULAR rule with the specified ID, which does not exist.
arType :: Lens' ActivatedRule (Maybe WafRuleType)

-- | Specifies the order in which the <tt>Rules</tt> in a <tt>WebACL</tt>
--   are evaluated. Rules with a lower value for <tt>Priority</tt> are
--   evaluated before <tt>Rules</tt> with a higher value. The value must be
--   a unique integer. If you add multiple <tt>Rules</tt> to a
--   <tt>WebACL</tt> , the values don't need to be consecutive.
arPriority :: Lens' ActivatedRule Int

-- | The <tt>RuleId</tt> for a <tt>Rule</tt> . You use <tt>RuleId</tt> to
--   get more information about a <tt>Rule</tt> (see <tt>GetRule</tt> ),
--   update a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), insert a
--   <tt>Rule</tt> into a <tt>WebACL</tt> or delete a one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>Rule</tt> from AWS WAF (see <tt>DeleteRule</tt> ). <tt>RuleId</tt>
--   is returned by <tt>CreateRule</tt> and by <tt>ListRules</tt> .
arRuleId :: Lens' ActivatedRule Text

-- | In a <tt>GetByteMatchSet</tt> request, <tt>ByteMatchSet</tt> is a
--   complex type that contains the <tt>ByteMatchSetId</tt> and
--   <tt>Name</tt> of a <tt>ByteMatchSet</tt> , and the values that you
--   specified when you updated the <tt>ByteMatchSet</tt> .
--   
--   A complex type that contains <tt>ByteMatchTuple</tt> objects, which
--   specify the parts of web requests that you want AWS WAF to inspect and
--   the values that you want AWS WAF to search for. If a
--   <tt>ByteMatchSet</tt> contains more than one <tt>ByteMatchTuple</tt>
--   object, a request needs to match the settings in only one
--   <tt>ByteMatchTuple</tt> to be considered a match.
--   
--   <i>See:</i> <a>byteMatchSet</a> smart constructor.
data ByteMatchSet

-- | Creates a value of <a>ByteMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bmsName</a> - A friendly name or description of the
--   <a>ByteMatchSet</a> . You can't change <tt>Name</tt> after you create
--   a <tt>ByteMatchSet</tt> .</li>
--   <li><a>bmsByteMatchSetId</a> - The <tt>ByteMatchSetId</tt> for a
--   <tt>ByteMatchSet</tt> . You use <tt>ByteMatchSetId</tt> to get
--   information about a <tt>ByteMatchSet</tt> (see
--   <tt>GetByteMatchSet</tt> ), update a <tt>ByteMatchSet</tt> (see
--   <tt>UpdateByteMatchSet</tt> ), insert a <tt>ByteMatchSet</tt> into a
--   <tt>Rule</tt> or delete one from a <tt>Rule</tt> (see
--   <tt>UpdateRule</tt> ), and delete a <tt>ByteMatchSet</tt> from AWS WAF
--   (see <tt>DeleteByteMatchSet</tt> ). <tt>ByteMatchSetId</tt> is
--   returned by <tt>CreateByteMatchSet</tt> and by
--   <tt>ListByteMatchSets</tt> .</li>
--   <li><a>bmsByteMatchTuples</a> - Specifies the bytes (typically a
--   string that corresponds with ASCII characters) that you want AWS WAF
--   to search for in web requests, the location in requests that you want
--   AWS WAF to search, and other settings.</li>
--   </ul>
byteMatchSet :: Text -> ByteMatchSet

-- | A friendly name or description of the <a>ByteMatchSet</a> . You can't
--   change <tt>Name</tt> after you create a <tt>ByteMatchSet</tt> .
bmsName :: Lens' ByteMatchSet (Maybe Text)

-- | The <tt>ByteMatchSetId</tt> for a <tt>ByteMatchSet</tt> . You use
--   <tt>ByteMatchSetId</tt> to get information about a
--   <tt>ByteMatchSet</tt> (see <tt>GetByteMatchSet</tt> ), update a
--   <tt>ByteMatchSet</tt> (see <tt>UpdateByteMatchSet</tt> ), insert a
--   <tt>ByteMatchSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>ByteMatchSet</tt> from AWS WAF (see <tt>DeleteByteMatchSet</tt> ).
--   <tt>ByteMatchSetId</tt> is returned by <tt>CreateByteMatchSet</tt> and
--   by <tt>ListByteMatchSets</tt> .
bmsByteMatchSetId :: Lens' ByteMatchSet Text

-- | Specifies the bytes (typically a string that corresponds with ASCII
--   characters) that you want AWS WAF to search for in web requests, the
--   location in requests that you want AWS WAF to search, and other
--   settings.
bmsByteMatchTuples :: Lens' ByteMatchSet [ByteMatchTuple]

-- | Returned by <tt>ListByteMatchSets</tt> . Each
--   <tt>ByteMatchSetSummary</tt> object includes the <tt>Name</tt> and
--   <tt>ByteMatchSetId</tt> for one <a>ByteMatchSet</a> .
--   
--   <i>See:</i> <a>byteMatchSetSummary</a> smart constructor.
data ByteMatchSetSummary

-- | Creates a value of <a>ByteMatchSetSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bmssByteMatchSetId</a> - The <tt>ByteMatchSetId</tt> for a
--   <tt>ByteMatchSet</tt> . You use <tt>ByteMatchSetId</tt> to get
--   information about a <tt>ByteMatchSet</tt> , update a
--   <tt>ByteMatchSet</tt> , remove a <tt>ByteMatchSet</tt> from a
--   <tt>Rule</tt> , and delete a <tt>ByteMatchSet</tt> from AWS WAF.
--   <tt>ByteMatchSetId</tt> is returned by <tt>CreateByteMatchSet</tt> and
--   by <tt>ListByteMatchSets</tt> .</li>
--   <li><a>bmssName</a> - A friendly name or description of the
--   <a>ByteMatchSet</a> . You can't change <tt>Name</tt> after you create
--   a <tt>ByteMatchSet</tt> .</li>
--   </ul>
byteMatchSetSummary :: Text -> Text -> ByteMatchSetSummary

-- | The <tt>ByteMatchSetId</tt> for a <tt>ByteMatchSet</tt> . You use
--   <tt>ByteMatchSetId</tt> to get information about a
--   <tt>ByteMatchSet</tt> , update a <tt>ByteMatchSet</tt> , remove a
--   <tt>ByteMatchSet</tt> from a <tt>Rule</tt> , and delete a
--   <tt>ByteMatchSet</tt> from AWS WAF. <tt>ByteMatchSetId</tt> is
--   returned by <tt>CreateByteMatchSet</tt> and by
--   <tt>ListByteMatchSets</tt> .
bmssByteMatchSetId :: Lens' ByteMatchSetSummary Text

-- | A friendly name or description of the <a>ByteMatchSet</a> . You can't
--   change <tt>Name</tt> after you create a <tt>ByteMatchSet</tt> .
bmssName :: Lens' ByteMatchSetSummary Text

-- | In an <tt>UpdateByteMatchSet</tt> request, <tt>ByteMatchSetUpdate</tt>
--   specifies whether to insert or delete a <a>ByteMatchTuple</a> and
--   includes the settings for the <tt>ByteMatchTuple</tt> .
--   
--   <i>See:</i> <a>byteMatchSetUpdate</a> smart constructor.
data ByteMatchSetUpdate

-- | Creates a value of <a>ByteMatchSetUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bmsuAction</a> - Specifies whether to insert or delete a
--   <a>ByteMatchTuple</a> .</li>
--   <li><a>bmsuByteMatchTuple</a> - Information about the part of a web
--   request that you want AWS WAF to inspect and the value that you want
--   AWS WAF to search for. If you specify <tt>DELETE</tt> for the value of
--   <tt>Action</tt> , the <tt>ByteMatchTuple</tt> values must exactly
--   match the values in the <tt>ByteMatchTuple</tt> that you want to
--   delete from the <tt>ByteMatchSet</tt> .</li>
--   </ul>
byteMatchSetUpdate :: ChangeAction -> ByteMatchTuple -> ByteMatchSetUpdate

-- | Specifies whether to insert or delete a <a>ByteMatchTuple</a> .
bmsuAction :: Lens' ByteMatchSetUpdate ChangeAction

-- | Information about the part of a web request that you want AWS WAF to
--   inspect and the value that you want AWS WAF to search for. If you
--   specify <tt>DELETE</tt> for the value of <tt>Action</tt> , the
--   <tt>ByteMatchTuple</tt> values must exactly match the values in the
--   <tt>ByteMatchTuple</tt> that you want to delete from the
--   <tt>ByteMatchSet</tt> .
bmsuByteMatchTuple :: Lens' ByteMatchSetUpdate ByteMatchTuple

-- | The bytes (typically a string that corresponds with ASCII characters)
--   that you want AWS WAF to search for in web requests, the location in
--   requests that you want AWS WAF to search, and other settings.
--   
--   <i>See:</i> <a>byteMatchTuple</a> smart constructor.
data ByteMatchTuple

-- | Creates a value of <a>ByteMatchTuple</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bmtFieldToMatch</a> - The part of a web request that you want
--   AWS WAF to search, such as a specified header or a query string. For
--   more information, see <a>FieldToMatch</a> .</li>
--   <li><a>bmtTargetString</a> - The value that you want AWS WAF to search
--   for. AWS WAF searches for the specified string in the part of web
--   requests that you specified in <tt>FieldToMatch</tt> . The maximum
--   length of the value is 50 bytes. Valid values depend on the values
--   that you specified for <tt>FieldToMatch</tt> : * <tt>HEADER</tt> : The
--   value that you want AWS WAF to search for in the request header that
--   you specified in <a>FieldToMatch</a> , for example, the value of the
--   <tt>User-Agent</tt> or <tt>Referer</tt> header. * <tt>METHOD</tt> :
--   The HTTP method, which indicates the type of operation specified in
--   the request. CloudFront supports the following methods:
--   <tt>DELETE</tt> , <tt>GET</tt> , <tt>HEAD</tt> , <tt>OPTIONS</tt> ,
--   <tt>PATCH</tt> , <tt>POST</tt> , and <tt>PUT</tt> . *
--   <tt>QUERY_STRING</tt> : The value that you want AWS WAF to search for
--   in the query string, which is the part of a URL that appears after a
--   <tt>?</tt> character. * <tt>URI</tt> : The value that you want AWS WAF
--   to search for in the part of a URL that identifies a resource, for
--   example, <tt><i>images</i>daily-ad.jpg</tt> . * <tt>BODY</tt> : The
--   part of a request that contains any additional data that you want to
--   send to your web server as the HTTP request body, such as data from a
--   form. The request body immediately follows the request headers. Note
--   that only the first <tt>8192</tt> bytes of the request body are
--   forwarded to AWS WAF for inspection. To allow or block requests based
--   on the length of the body, you can create a size constraint set. For
--   more information, see <tt>CreateSizeConstraintSet</tt> . If
--   <tt>TargetString</tt> includes alphabetic characters A-Z and a-z, note
--   that the value is case sensitive. <b>If you're using the AWS WAF
--   API</b> Specify a base64-encoded version of the value. The maximum
--   length of the value before you base64-encode it is 50 bytes. For
--   example, suppose the value of <tt>Type</tt> is <tt>HEADER</tt> and the
--   value of <tt>Data</tt> is <tt>User-Agent</tt> . If you want to search
--   the <tt>User-Agent</tt> header for the value <tt>BadBot</tt> , you
--   base64-encode <tt>BadBot</tt> using MIME base64 encoding and include
--   the resulting value, <tt>QmFkQm90</tt> , in the value of
--   <tt>TargetString</tt> . <b>If you're using the AWS CLI or one of the
--   AWS SDKs</b> The value that you want AWS WAF to search for. The SDK
--   automatically base64 encodes the value.-- <i>Note:</i> This
--   <tt>Lens</tt> automatically encodes and decodes Base64 data. The
--   underlying isomorphism will encode to Base64 representation during
--   serialisation, and decode from Base64 representation during
--   deserialisation. This <tt>Lens</tt> accepts and returns only raw
--   unencoded data.</li>
--   <li><a>bmtTextTransformation</a> - Text transformations eliminate some
--   of the unusual formatting that attackers use in web requests in an
--   effort to bypass AWS WAF. If you specify a transformation, AWS WAF
--   performs the transformation on <tt>TargetString</tt> before inspecting
--   a request for a match. <b>CMD_LINE</b> When you're concerned that
--   attackers are injecting an operating system commandline command and
--   using unusual formatting to disguise some or all of the command, use
--   this option to perform the following transformations: * Delete the
--   following characters: " ' ^ * Delete spaces before the following
--   characters: / ( * Replace the following characters with a space: , ; *
--   Replace multiple spaces with one space * Convert uppercase letters
--   (A-Z) to lowercase (a-z) <b>COMPRESS_WHITE_SPACE</b> Use this option
--   to replace the following characters with a space character (decimal
--   32): * f, formfeed, decimal 12 * t, tab, decimal 9 * n, newline,
--   decimal 10 * r, carriage return, decimal 13 * v, vertical tab, decimal
--   11 * non-breaking space, decimal 160 <tt>COMPRESS_WHITE_SPACE</tt>
--   also replaces multiple spaces with one space.
--   <b>HTML_ENTITY_DECODE</b> Use this option to replace HTML-encoded
--   characters with unencoded characters. <tt>HTML_ENTITY_DECODE</tt>
--   performs the following operations: * Replaces
--   <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text
--   transformations.</li>
--   <li><a>bmtPositionalConstraint</a> - Within the portion of a web
--   request that you want to search (for example, in the query string, if
--   any), specify where you want AWS WAF to search. Valid values include
--   the following: <b>CONTAINS</b> The specified part of the web request
--   must include the value of <tt>TargetString</tt> , but the location
--   doesn't matter. <b>CONTAINS_WORD</b> The specified part of the web
--   request must include the value of <tt>TargetString</tt> , and
--   <tt>TargetString</tt> must contain only alphanumeric characters or
--   underscore (A-Z, a-z, 0-9, or _). In addition, <tt>TargetString</tt>
--   must be a word, which means one of the following: *
--   <tt>TargetString</tt> exactly matches the value of the specified part
--   of the web request, such as the value of a header. *
--   <tt>TargetString</tt> is at the beginning of the specified part of the
--   web request and is followed by a character other than an alphanumeric
--   character or underscore (_), for example, <tt>BadBot;</tt> . *
--   <tt>TargetString</tt> is at the end of the specified part of the web
--   request and is preceded by a character other than an alphanumeric
--   character or underscore (_), for example, <tt>;BadBot</tt> . *
--   <tt>TargetString</tt> is in the middle of the specified part of the
--   web request and is preceded and followed by characters other than
--   alphanumeric characters or underscore (_), for example,
--   <tt>-BadBot;</tt> . <b>EXACTLY</b> The value of the specified part of
--   the web request must exactly match the value of <tt>TargetString</tt>
--   . <b>STARTS_WITH</b> The value of <tt>TargetString</tt> must appear at
--   the beginning of the specified part of the web request.
--   <b>ENDS_WITH</b> The value of <tt>TargetString</tt> must appear at the
--   end of the specified part of the web request.</li>
--   </ul>
byteMatchTuple :: FieldToMatch -> ByteString -> TextTransformation -> PositionalConstraint -> ByteMatchTuple

-- | The part of a web request that you want AWS WAF to search, such as a
--   specified header or a query string. For more information, see
--   <a>FieldToMatch</a> .
bmtFieldToMatch :: Lens' ByteMatchTuple FieldToMatch

-- | The value that you want AWS WAF to search for. AWS WAF searches for
--   the specified string in the part of web requests that you specified in
--   <tt>FieldToMatch</tt> . The maximum length of the value is 50 bytes.
--   Valid values depend on the values that you specified for
--   <tt>FieldToMatch</tt> : * <tt>HEADER</tt> : The value that you want
--   AWS WAF to search for in the request header that you specified in
--   <a>FieldToMatch</a> , for example, the value of the
--   <tt>User-Agent</tt> or <tt>Referer</tt> header. * <tt>METHOD</tt> :
--   The HTTP method, which indicates the type of operation specified in
--   the request. CloudFront supports the following methods:
--   <tt>DELETE</tt> , <tt>GET</tt> , <tt>HEAD</tt> , <tt>OPTIONS</tt> ,
--   <tt>PATCH</tt> , <tt>POST</tt> , and <tt>PUT</tt> . *
--   <tt>QUERY_STRING</tt> : The value that you want AWS WAF to search for
--   in the query string, which is the part of a URL that appears after a
--   <tt>?</tt> character. * <tt>URI</tt> : The value that you want AWS WAF
--   to search for in the part of a URL that identifies a resource, for
--   example, <tt><i>images</i>daily-ad.jpg</tt> . * <tt>BODY</tt> : The
--   part of a request that contains any additional data that you want to
--   send to your web server as the HTTP request body, such as data from a
--   form. The request body immediately follows the request headers. Note
--   that only the first <tt>8192</tt> bytes of the request body are
--   forwarded to AWS WAF for inspection. To allow or block requests based
--   on the length of the body, you can create a size constraint set. For
--   more information, see <tt>CreateSizeConstraintSet</tt> . If
--   <tt>TargetString</tt> includes alphabetic characters A-Z and a-z, note
--   that the value is case sensitive. <b>If you're using the AWS WAF
--   API</b> Specify a base64-encoded version of the value. The maximum
--   length of the value before you base64-encode it is 50 bytes. For
--   example, suppose the value of <tt>Type</tt> is <tt>HEADER</tt> and the
--   value of <tt>Data</tt> is <tt>User-Agent</tt> . If you want to search
--   the <tt>User-Agent</tt> header for the value <tt>BadBot</tt> , you
--   base64-encode <tt>BadBot</tt> using MIME base64 encoding and include
--   the resulting value, <tt>QmFkQm90</tt> , in the value of
--   <tt>TargetString</tt> . <b>If you're using the AWS CLI or one of the
--   AWS SDKs</b> The value that you want AWS WAF to search for. The SDK
--   automatically base64 encodes the value.-- <i>Note:</i> This
--   <tt>Lens</tt> automatically encodes and decodes Base64 data. The
--   underlying isomorphism will encode to Base64 representation during
--   serialisation, and decode from Base64 representation during
--   deserialisation. This <tt>Lens</tt> accepts and returns only raw
--   unencoded data.
bmtTargetString :: Lens' ByteMatchTuple ByteString

-- | Text transformations eliminate some of the unusual formatting that
--   attackers use in web requests in an effort to bypass AWS WAF. If you
--   specify a transformation, AWS WAF performs the transformation on
--   <tt>TargetString</tt> before inspecting a request for a match.
--   <b>CMD_LINE</b> When you're concerned that attackers are injecting an
--   operating system commandline command and using unusual formatting to
--   disguise some or all of the command, use this option to perform the
--   following transformations: * Delete the following characters: " ' ^ *
--   Delete spaces before the following characters: / ( * Replace the
--   following characters with a space: , ; * Replace multiple spaces with
--   one space * Convert uppercase letters (A-Z) to lowercase (a-z)
--   <b>COMPRESS_WHITE_SPACE</b> Use this option to replace the following
--   characters with a space character (decimal 32): * f, formfeed, decimal
--   12 * t, tab, decimal 9 * n, newline, decimal 10 * r, carriage return,
--   decimal 13 * v, vertical tab, decimal 11 * non-breaking space, decimal
--   160 <tt>COMPRESS_WHITE_SPACE</tt> also replaces multiple spaces with
--   one space. <b>HTML_ENTITY_DECODE</b> Use this option to replace
--   HTML-encoded characters with unencoded characters.
--   <tt>HTML_ENTITY_DECODE</tt> performs the following operations: *
--   Replaces <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text transformations.
bmtTextTransformation :: Lens' ByteMatchTuple TextTransformation

-- | Within the portion of a web request that you want to search (for
--   example, in the query string, if any), specify where you want AWS WAF
--   to search. Valid values include the following: <b>CONTAINS</b> The
--   specified part of the web request must include the value of
--   <tt>TargetString</tt> , but the location doesn't matter.
--   <b>CONTAINS_WORD</b> The specified part of the web request must
--   include the value of <tt>TargetString</tt> , and <tt>TargetString</tt>
--   must contain only alphanumeric characters or underscore (A-Z, a-z,
--   0-9, or _). In addition, <tt>TargetString</tt> must be a word, which
--   means one of the following: * <tt>TargetString</tt> exactly matches
--   the value of the specified part of the web request, such as the value
--   of a header. * <tt>TargetString</tt> is at the beginning of the
--   specified part of the web request and is followed by a character other
--   than an alphanumeric character or underscore (_), for example,
--   <tt>BadBot;</tt> . * <tt>TargetString</tt> is at the end of the
--   specified part of the web request and is preceded by a character other
--   than an alphanumeric character or underscore (_), for example,
--   <tt>;BadBot</tt> . * <tt>TargetString</tt> is in the middle of the
--   specified part of the web request and is preceded and followed by
--   characters other than alphanumeric characters or underscore (_), for
--   example, <tt>-BadBot;</tt> . <b>EXACTLY</b> The value of the specified
--   part of the web request must exactly match the value of
--   <tt>TargetString</tt> . <b>STARTS_WITH</b> The value of
--   <tt>TargetString</tt> must appear at the beginning of the specified
--   part of the web request. <b>ENDS_WITH</b> The value of
--   <tt>TargetString</tt> must appear at the end of the specified part of
--   the web request.
bmtPositionalConstraint :: Lens' ByteMatchTuple PositionalConstraint

-- | Specifies where in a web request to look for <tt>TargetString</tt> .
--   
--   <i>See:</i> <a>fieldToMatch</a> smart constructor.
data FieldToMatch

-- | Creates a value of <a>FieldToMatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ftmData</a> - When the value of <tt>Type</tt> is
--   <tt>HEADER</tt> , enter the name of the header that you want AWS WAF
--   to search, for example, <tt>User-Agent</tt> or <tt>Referer</tt> . If
--   the value of <tt>Type</tt> is any other value, omit <tt>Data</tt> .
--   The name of the header is not case sensitive.</li>
--   <li><a>ftmType</a> - The part of the web request that you want AWS WAF
--   to search for a specified string. Parts of a request that you can
--   search include the following: * <tt>HEADER</tt> : A specified request
--   header, for example, the value of the <tt>User-Agent</tt> or
--   <tt>Referer</tt> header. If you choose <tt>HEADER</tt> for the type,
--   specify the name of the header in <tt>Data</tt> . * <tt>METHOD</tt> :
--   The HTTP method, which indicated the type of operation that the
--   request is asking the origin to perform. Amazon CloudFront supports
--   the following methods: <tt>DELETE</tt> , <tt>GET</tt> , <tt>HEAD</tt>
--   , <tt>OPTIONS</tt> , <tt>PATCH</tt> , <tt>POST</tt> , and <tt>PUT</tt>
--   . * <tt>QUERY_STRING</tt> : A query string, which is the part of a URL
--   that appears after a <tt>?</tt> character, if any. * <tt>URI</tt> :
--   The part of a web request that identifies a resource, for example,
--   <tt><i>images</i>daily-ad.jpg</tt> . * <tt>BODY</tt> : The part of a
--   request that contains any additional data that you want to send to
--   your web server as the HTTP request body, such as data from a form.
--   The request body immediately follows the request headers. Note that
--   only the first <tt>8192</tt> bytes of the request body are forwarded
--   to AWS WAF for inspection. To allow or block requests based on the
--   length of the body, you can create a size constraint set. For more
--   information, see <tt>CreateSizeConstraintSet</tt> .</li>
--   </ul>
fieldToMatch :: MatchFieldType -> FieldToMatch

-- | When the value of <tt>Type</tt> is <tt>HEADER</tt> , enter the name of
--   the header that you want AWS WAF to search, for example,
--   <tt>User-Agent</tt> or <tt>Referer</tt> . If the value of
--   <tt>Type</tt> is any other value, omit <tt>Data</tt> . The name of the
--   header is not case sensitive.
ftmData :: Lens' FieldToMatch (Maybe Text)

-- | The part of the web request that you want AWS WAF to search for a
--   specified string. Parts of a request that you can search include the
--   following: * <tt>HEADER</tt> : A specified request header, for
--   example, the value of the <tt>User-Agent</tt> or <tt>Referer</tt>
--   header. If you choose <tt>HEADER</tt> for the type, specify the name
--   of the header in <tt>Data</tt> . * <tt>METHOD</tt> : The HTTP method,
--   which indicated the type of operation that the request is asking the
--   origin to perform. Amazon CloudFront supports the following methods:
--   <tt>DELETE</tt> , <tt>GET</tt> , <tt>HEAD</tt> , <tt>OPTIONS</tt> ,
--   <tt>PATCH</tt> , <tt>POST</tt> , and <tt>PUT</tt> . *
--   <tt>QUERY_STRING</tt> : A query string, which is the part of a URL
--   that appears after a <tt>?</tt> character, if any. * <tt>URI</tt> :
--   The part of a web request that identifies a resource, for example,
--   <tt><i>images</i>daily-ad.jpg</tt> . * <tt>BODY</tt> : The part of a
--   request that contains any additional data that you want to send to
--   your web server as the HTTP request body, such as data from a form.
--   The request body immediately follows the request headers. Note that
--   only the first <tt>8192</tt> bytes of the request body are forwarded
--   to AWS WAF for inspection. To allow or block requests based on the
--   length of the body, you can create a size constraint set. For more
--   information, see <tt>CreateSizeConstraintSet</tt> .
ftmType :: Lens' FieldToMatch MatchFieldType

-- | The country from which web requests originate that you want AWS WAF to
--   search for.
--   
--   <i>See:</i> <a>geoMatchConstraint</a> smart constructor.
data GeoMatchConstraint

-- | Creates a value of <a>GeoMatchConstraint</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gmcType</a> - The type of geographical area you want AWS WAF to
--   search for. Currently <tt>Country</tt> is the only valid value.</li>
--   <li><a>gmcValue</a> - The country that you want AWS WAF to search
--   for.</li>
--   </ul>
geoMatchConstraint :: GeoMatchConstraintType -> GeoMatchConstraintValue -> GeoMatchConstraint

-- | The type of geographical area you want AWS WAF to search for.
--   Currently <tt>Country</tt> is the only valid value.
gmcType :: Lens' GeoMatchConstraint GeoMatchConstraintType

-- | The country that you want AWS WAF to search for.
gmcValue :: Lens' GeoMatchConstraint GeoMatchConstraintValue

-- | Contains one or more countries that AWS WAF will search for.
--   
--   <i>See:</i> <a>geoMatchSet</a> smart constructor.
data GeoMatchSet

-- | Creates a value of <a>GeoMatchSet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gmsName</a> - A friendly name or description of the
--   <a>GeoMatchSet</a> . You can't change the name of an
--   <tt>GeoMatchSet</tt> after you create it.</li>
--   <li><a>gmsGeoMatchSetId</a> - The <tt>GeoMatchSetId</tt> for an
--   <tt>GeoMatchSet</tt> . You use <tt>GeoMatchSetId</tt> to get
--   information about a <tt>GeoMatchSet</tt> (see <a>GeoMatchSet</a> ),
--   update a <tt>GeoMatchSet</tt> (see <tt>UpdateGeoMatchSet</tt> ),
--   insert a <tt>GeoMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>GeoMatchSet</tt> from AWS WAF (see <tt>DeleteGeoMatchSet</tt> ).
--   <tt>GeoMatchSetId</tt> is returned by <tt>CreateGeoMatchSet</tt> and
--   by <tt>ListGeoMatchSets</tt> .</li>
--   <li><a>gmsGeoMatchConstraints</a> - An array of
--   <a>GeoMatchConstraint</a> objects, which contain the country that you
--   want AWS WAF to search for.</li>
--   </ul>
geoMatchSet :: Text -> GeoMatchSet

-- | A friendly name or description of the <a>GeoMatchSet</a> . You can't
--   change the name of an <tt>GeoMatchSet</tt> after you create it.
gmsName :: Lens' GeoMatchSet (Maybe Text)

-- | The <tt>GeoMatchSetId</tt> for an <tt>GeoMatchSet</tt> . You use
--   <tt>GeoMatchSetId</tt> to get information about a <tt>GeoMatchSet</tt>
--   (see <a>GeoMatchSet</a> ), update a <tt>GeoMatchSet</tt> (see
--   <tt>UpdateGeoMatchSet</tt> ), insert a <tt>GeoMatchSet</tt> into a
--   <tt>Rule</tt> or delete one from a <tt>Rule</tt> (see
--   <tt>UpdateRule</tt> ), and delete a <tt>GeoMatchSet</tt> from AWS WAF
--   (see <tt>DeleteGeoMatchSet</tt> ). <tt>GeoMatchSetId</tt> is returned
--   by <tt>CreateGeoMatchSet</tt> and by <tt>ListGeoMatchSets</tt> .
gmsGeoMatchSetId :: Lens' GeoMatchSet Text

-- | An array of <a>GeoMatchConstraint</a> objects, which contain the
--   country that you want AWS WAF to search for.
gmsGeoMatchConstraints :: Lens' GeoMatchSet [GeoMatchConstraint]

-- | Contains the identifier and the name of the <tt>GeoMatchSet</tt> .
--   
--   <i>See:</i> <a>geoMatchSetSummary</a> smart constructor.
data GeoMatchSetSummary

-- | Creates a value of <a>GeoMatchSetSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gmssGeoMatchSetId</a> - The <tt>GeoMatchSetId</tt> for an
--   <a>GeoMatchSet</a> . You can use <tt>GeoMatchSetId</tt> in a
--   <tt>GetGeoMatchSet</tt> request to get detailed information about an
--   <a>GeoMatchSet</a> .</li>
--   <li><a>gmssName</a> - A friendly name or description of the
--   <a>GeoMatchSet</a> . You can't change the name of an
--   <tt>GeoMatchSet</tt> after you create it.</li>
--   </ul>
geoMatchSetSummary :: Text -> Text -> GeoMatchSetSummary

-- | The <tt>GeoMatchSetId</tt> for an <a>GeoMatchSet</a> . You can use
--   <tt>GeoMatchSetId</tt> in a <tt>GetGeoMatchSet</tt> request to get
--   detailed information about an <a>GeoMatchSet</a> .
gmssGeoMatchSetId :: Lens' GeoMatchSetSummary Text

-- | A friendly name or description of the <a>GeoMatchSet</a> . You can't
--   change the name of an <tt>GeoMatchSet</tt> after you create it.
gmssName :: Lens' GeoMatchSetSummary Text

-- | Specifies the type of update to perform to an <a>GeoMatchSet</a> with
--   <tt>UpdateGeoMatchSet</tt> .
--   
--   <i>See:</i> <a>geoMatchSetUpdate</a> smart constructor.
data GeoMatchSetUpdate

-- | Creates a value of <a>GeoMatchSetUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gmsuAction</a> - Specifies whether to insert or delete a
--   country with <tt>UpdateGeoMatchSet</tt> .</li>
--   <li><a>gmsuGeoMatchConstraint</a> - The country from which web
--   requests originate that you want AWS WAF to search for.</li>
--   </ul>
geoMatchSetUpdate :: ChangeAction -> GeoMatchConstraint -> GeoMatchSetUpdate

-- | Specifies whether to insert or delete a country with
--   <tt>UpdateGeoMatchSet</tt> .
gmsuAction :: Lens' GeoMatchSetUpdate ChangeAction

-- | The country from which web requests originate that you want AWS WAF to
--   search for.
gmsuGeoMatchConstraint :: Lens' GeoMatchSetUpdate GeoMatchConstraint

-- | The response from a <tt>GetSampledRequests</tt> request includes an
--   <tt>HTTPHeader</tt> complex type that appears as <tt>Headers</tt> in
--   the response syntax. <tt>HTTPHeader</tt> contains the names and values
--   of all of the headers that appear in one of the web requests that were
--   returned by <tt>GetSampledRequests</tt> .
--   
--   <i>See:</i> <a>hTTPHeader</a> smart constructor.
data HTTPHeader

-- | Creates a value of <a>HTTPHeader</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httphValue</a> - The value of one of the headers in the sampled
--   web request.</li>
--   <li><a>httphName</a> - The name of one of the headers in the sampled
--   web request.</li>
--   </ul>
hTTPHeader :: HTTPHeader

-- | The value of one of the headers in the sampled web request.
httphValue :: Lens' HTTPHeader (Maybe Text)

-- | The name of one of the headers in the sampled web request.
httphName :: Lens' HTTPHeader (Maybe Text)

-- | The response from a <tt>GetSampledRequests</tt> request includes an
--   <tt>HTTPRequest</tt> complex type that appears as <tt>Request</tt> in
--   the response syntax. <tt>HTTPRequest</tt> contains information about
--   one of the web requests that were returned by
--   <tt>GetSampledRequests</tt> .
--   
--   <i>See:</i> <a>hTTPRequest</a> smart constructor.
data HTTPRequest

-- | Creates a value of <a>HTTPRequest</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httprHTTPVersion</a> - The HTTP version specified in the
--   sampled web request, for example, <tt>HTTP/1.1</tt> .</li>
--   <li><a>httprCountry</a> - The two-letter country code for the country
--   that the request originated from. For a current list of country codes,
--   see the Wikipedia entry <a>ISO 3166-1 alpha-2</a> .</li>
--   <li><a>httprURI</a> - The part of a web request that identifies the
--   resource, for example, <tt><i>images</i>daily-ad.jpg</tt> .</li>
--   <li><a>httprHeaders</a> - A complex type that contains two values for
--   each header in the sampled web request: the name of the header and the
--   value of the header.</li>
--   <li><a>httprMethod</a> - The HTTP method specified in the sampled web
--   request. CloudFront supports the following methods: <tt>DELETE</tt> ,
--   <tt>GET</tt> , <tt>HEAD</tt> , <tt>OPTIONS</tt> , <tt>PATCH</tt> ,
--   <tt>POST</tt> , and <tt>PUT</tt> .</li>
--   <li><a>httprClientIP</a> - The IP address that the request originated
--   from. If the <tt>WebACL</tt> is associated with a CloudFront
--   distribution, this is the value of one of the following fields in
--   CloudFront access logs: * <tt>c-ip</tt> , if the viewer did not use an
--   HTTP proxy or a load balancer to send the request *
--   <tt>x-forwarded-for</tt> , if the viewer did use an HTTP proxy or a
--   load balancer to send the request</li>
--   </ul>
hTTPRequest :: HTTPRequest

-- | The HTTP version specified in the sampled web request, for example,
--   <tt>HTTP/1.1</tt> .
httprHTTPVersion :: Lens' HTTPRequest (Maybe Text)

-- | The two-letter country code for the country that the request
--   originated from. For a current list of country codes, see the
--   Wikipedia entry <a>ISO 3166-1 alpha-2</a> .
httprCountry :: Lens' HTTPRequest (Maybe Text)

-- | The part of a web request that identifies the resource, for example,
--   <tt><i>images</i>daily-ad.jpg</tt> .
httprURI :: Lens' HTTPRequest (Maybe Text)

-- | A complex type that contains two values for each header in the sampled
--   web request: the name of the header and the value of the header.
httprHeaders :: Lens' HTTPRequest [HTTPHeader]

-- | The HTTP method specified in the sampled web request. CloudFront
--   supports the following methods: <tt>DELETE</tt> , <tt>GET</tt> ,
--   <tt>HEAD</tt> , <tt>OPTIONS</tt> , <tt>PATCH</tt> , <tt>POST</tt> ,
--   and <tt>PUT</tt> .
httprMethod :: Lens' HTTPRequest (Maybe Text)

-- | The IP address that the request originated from. If the
--   <tt>WebACL</tt> is associated with a CloudFront distribution, this is
--   the value of one of the following fields in CloudFront access logs: *
--   <tt>c-ip</tt> , if the viewer did not use an HTTP proxy or a load
--   balancer to send the request * <tt>x-forwarded-for</tt> , if the
--   viewer did use an HTTP proxy or a load balancer to send the request
httprClientIP :: Lens' HTTPRequest (Maybe Text)

-- | Contains one or more IP addresses or blocks of IP addresses specified
--   in Classless Inter-Domain Routing (CIDR) notation. AWS WAF supports
--   <i>8, </i>16, <i>24, and </i>32 IP address ranges for IPv4, and <i>24,
--   </i>32, <i>48, </i>56, <i>64 and </i>128 for IPv6.
--   
--   To specify an individual IP address, you specify the four-part IP
--   address followed by a <tt>/32</tt> , for example, 192.0.2.0<i>31. To
--   block a range of IP addresses, you can specify a @</i>128<tt> ,
--   </tt><i>64<tt> , </tt></i>56<tt> , </tt><i>48<tt> , </tt></i>32<tt> ,
--   </tt><i>24<tt> , </tt></i>16<tt> , or </tt><i>8@ CIDR. For more
--   information about CIDR notation, see the Wikipedia entry
--   &lt;https:</i><i>en.wikipedia.org</i>wiki/Classless_Inter-Domain_Routing
--   Classless Inter-Domain Routing&gt; .
--   
--   <i>See:</i> <a>ipSet</a> smart constructor.
data IPSet

-- | Creates a value of <a>IPSet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>isName</a> - A friendly name or description of the <a>IPSet</a>
--   . You can't change the name of an <tt>IPSet</tt> after you create
--   it.</li>
--   <li><a>isIPSetId</a> - The <tt>IPSetId</tt> for an <tt>IPSet</tt> .
--   You use <tt>IPSetId</tt> to get information about an <tt>IPSet</tt>
--   (see <tt>GetIPSet</tt> ), update an <tt>IPSet</tt> (see
--   <tt>UpdateIPSet</tt> ), insert an <tt>IPSet</tt> into a <tt>Rule</tt>
--   or delete one from a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and
--   delete an <tt>IPSet</tt> from AWS WAF (see <tt>DeleteIPSet</tt> ).
--   <tt>IPSetId</tt> is returned by <tt>CreateIPSet</tt> and by
--   <tt>ListIPSets</tt> .</li>
--   <li><a>isIPSetDescriptors</a> - The IP address type (<tt>IPV4</tt> or
--   <tt>IPV6</tt> ) and the IP address range (in CIDR notation) that web
--   requests originate from. If the <tt>WebACL</tt> is associated with a
--   CloudFront distribution and the viewer did not use an HTTP proxy or a
--   load balancer to send the request, this is the value of the c-ip field
--   in the CloudFront access logs.</li>
--   </ul>
ipSet :: Text -> IPSet

-- | A friendly name or description of the <a>IPSet</a> . You can't change
--   the name of an <tt>IPSet</tt> after you create it.
isName :: Lens' IPSet (Maybe Text)

-- | The <tt>IPSetId</tt> for an <tt>IPSet</tt> . You use <tt>IPSetId</tt>
--   to get information about an <tt>IPSet</tt> (see <tt>GetIPSet</tt> ),
--   update an <tt>IPSet</tt> (see <tt>UpdateIPSet</tt> ), insert an
--   <tt>IPSet</tt> into a <tt>Rule</tt> or delete one from a <tt>Rule</tt>
--   (see <tt>UpdateRule</tt> ), and delete an <tt>IPSet</tt> from AWS WAF
--   (see <tt>DeleteIPSet</tt> ). <tt>IPSetId</tt> is returned by
--   <tt>CreateIPSet</tt> and by <tt>ListIPSets</tt> .
isIPSetId :: Lens' IPSet Text

-- | The IP address type (<tt>IPV4</tt> or <tt>IPV6</tt> ) and the IP
--   address range (in CIDR notation) that web requests originate from. If
--   the <tt>WebACL</tt> is associated with a CloudFront distribution and
--   the viewer did not use an HTTP proxy or a load balancer to send the
--   request, this is the value of the c-ip field in the CloudFront access
--   logs.
isIPSetDescriptors :: Lens' IPSet [IPSetDescriptor]

-- | Specifies the IP address type (<tt>IPV4</tt> or <tt>IPV6</tt> ) and
--   the IP address range (in CIDR format) that web requests originate
--   from.
--   
--   <i>See:</i> <a>ipSetDescriptor</a> smart constructor.
data IPSetDescriptor

-- | Creates a value of <a>IPSetDescriptor</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>isdType</a> - Specify <tt>IPV4</tt> or <tt>IPV6</tt> .</li>
--   <li><a>isdValue</a> - Specify an IPv4 address by using CIDR notation.
--   For example: * To configure AWS WAF to allow, block, or count requests
--   that originated from the IP address 192.0.2.44, specify
--   <tt>192.0.2.44/32</tt> . * To configure AWS WAF to allow, block, or
--   count requests that originated from IP addresses from 192.0.2.0 to
--   192.0.2.255, specify <tt>192.0.2.0/24</tt> . For more information
--   about CIDR notation, see the Wikipedia entry <a>Classless Inter-Domain
--   Routing</a> . Specify an IPv6 address by using CIDR notation. For
--   example: * To configure AWS WAF to allow, block, or count requests
--   that originated from the IP address
--   1111:0000:0000:0000:0000:0000:0000:0111, specify
--   <tt>1111:0000:0000:0000:0000:0000:0000:0111/128</tt> . * To configure
--   AWS WAF to allow, block, or count requests that originated from IP
--   addresses 1111:0000:0000:0000:0000:0000:0000:0000 to
--   1111:0000:0000:0000:ffff:ffff:ffff:ffff, specify
--   <tt>1111:0000:0000:0000:0000:0000:0000:0000/64</tt> .</li>
--   </ul>
ipSetDescriptor :: IPSetDescriptorType -> Text -> IPSetDescriptor

-- | Specify <tt>IPV4</tt> or <tt>IPV6</tt> .
isdType :: Lens' IPSetDescriptor IPSetDescriptorType

-- | Specify an IPv4 address by using CIDR notation. For example: * To
--   configure AWS WAF to allow, block, or count requests that originated
--   from the IP address 192.0.2.44, specify <tt>192.0.2.44/32</tt> . * To
--   configure AWS WAF to allow, block, or count requests that originated
--   from IP addresses from 192.0.2.0 to 192.0.2.255, specify
--   <tt>192.0.2.0/24</tt> . For more information about CIDR notation, see
--   the Wikipedia entry <a>Classless Inter-Domain Routing</a> . Specify an
--   IPv6 address by using CIDR notation. For example: * To configure AWS
--   WAF to allow, block, or count requests that originated from the IP
--   address 1111:0000:0000:0000:0000:0000:0000:0111, specify
--   <tt>1111:0000:0000:0000:0000:0000:0000:0111/128</tt> . * To configure
--   AWS WAF to allow, block, or count requests that originated from IP
--   addresses 1111:0000:0000:0000:0000:0000:0000:0000 to
--   1111:0000:0000:0000:ffff:ffff:ffff:ffff, specify
--   <tt>1111:0000:0000:0000:0000:0000:0000:0000/64</tt> .
isdValue :: Lens' IPSetDescriptor Text

-- | Contains the identifier and the name of the <tt>IPSet</tt> .
--   
--   <i>See:</i> <a>ipSetSummary</a> smart constructor.
data IPSetSummary

-- | Creates a value of <a>IPSetSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>issIPSetId</a> - The <tt>IPSetId</tt> for an <a>IPSet</a> . You
--   can use <tt>IPSetId</tt> in a <tt>GetIPSet</tt> request to get
--   detailed information about an <a>IPSet</a> .</li>
--   <li><a>issName</a> - A friendly name or description of the
--   <a>IPSet</a> . You can't change the name of an <tt>IPSet</tt> after
--   you create it.</li>
--   </ul>
ipSetSummary :: Text -> Text -> IPSetSummary

-- | The <tt>IPSetId</tt> for an <a>IPSet</a> . You can use
--   <tt>IPSetId</tt> in a <tt>GetIPSet</tt> request to get detailed
--   information about an <a>IPSet</a> .
issIPSetId :: Lens' IPSetSummary Text

-- | A friendly name or description of the <a>IPSet</a> . You can't change
--   the name of an <tt>IPSet</tt> after you create it.
issName :: Lens' IPSetSummary Text

-- | Specifies the type of update to perform to an <a>IPSet</a> with
--   <tt>UpdateIPSet</tt> .
--   
--   <i>See:</i> <a>ipSetUpdate</a> smart constructor.
data IPSetUpdate

-- | Creates a value of <a>IPSetUpdate</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>isuAction</a> - Specifies whether to insert or delete an IP
--   address with <tt>UpdateIPSet</tt> .</li>
--   <li><a>isuIPSetDescriptor</a> - The IP address type (<tt>IPV4</tt> or
--   <tt>IPV6</tt> ) and the IP address range (in CIDR notation) that web
--   requests originate from.</li>
--   </ul>
ipSetUpdate :: ChangeAction -> IPSetDescriptor -> IPSetUpdate

-- | Specifies whether to insert or delete an IP address with
--   <tt>UpdateIPSet</tt> .
isuAction :: Lens' IPSetUpdate ChangeAction

-- | The IP address type (<tt>IPV4</tt> or <tt>IPV6</tt> ) and the IP
--   address range (in CIDR notation) that web requests originate from.
isuIPSetDescriptor :: Lens' IPSetUpdate IPSetDescriptor

-- | Specifies the <a>ByteMatchSet</a> , <a>IPSet</a> ,
--   <a>SqlInjectionMatchSet</a> , <tt>XssMatchSet</tt> ,
--   <a>RegexMatchSet</a> , <a>GeoMatchSet</a> , and
--   <a>SizeConstraintSet</a> objects that you want to add to a
--   <tt>Rule</tt> and, for each object, indicates whether you want to
--   negate the settings, for example, requests that do NOT originate from
--   the IP address 192.0.2.44.
--   
--   <i>See:</i> <a>predicate</a> smart constructor.
data Predicate

-- | Creates a value of <a>Predicate</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pNegated</a> - Set <tt>Negated</tt> to <tt>False</tt> if you
--   want AWS WAF to allow, block, or count requests based on the settings
--   in the specified <a>ByteMatchSet</a> , <a>IPSet</a> ,
--   <a>SqlInjectionMatchSet</a> , <tt>XssMatchSet</tt> ,
--   <a>RegexMatchSet</a> , <a>GeoMatchSet</a> , or
--   <a>SizeConstraintSet</a> . For example, if an <tt>IPSet</tt> includes
--   the IP address <tt>192.0.2.44</tt> , AWS WAF will allow or block
--   requests based on that IP address. Set <tt>Negated</tt> to
--   <tt>True</tt> if you want AWS WAF to allow or block a request based on
--   the negation of the settings in the <a>ByteMatchSet</a> , <a>IPSet</a>
--   , <a>SqlInjectionMatchSet</a> , <tt>XssMatchSet</tt> ,
--   <a>RegexMatchSet</a> , <a>GeoMatchSet</a> , or
--   <a>SizeConstraintSet</a> . For example, if an <tt>IPSet</tt> includes
--   the IP address <tt>192.0.2.44</tt> , AWS WAF will allow, block, or
--   count requests based on all IP addresses <i>except</i>
--   <tt>192.0.2.44</tt> .</li>
--   <li><a>pType</a> - The type of predicate in a <tt>Rule</tt> , such as
--   <tt>ByteMatchSet</tt> or <tt>IPSet</tt> .</li>
--   <li><a>pDataId</a> - A unique identifier for a predicate in a
--   <tt>Rule</tt> , such as <tt>ByteMatchSetId</tt> or <tt>IPSetId</tt> .
--   The ID is returned by the corresponding <tt>Create</tt> or
--   <tt>List</tt> command.</li>
--   </ul>
predicate :: Bool -> PredicateType -> Text -> Predicate

-- | Set <tt>Negated</tt> to <tt>False</tt> if you want AWS WAF to allow,
--   block, or count requests based on the settings in the specified
--   <a>ByteMatchSet</a> , <a>IPSet</a> , <a>SqlInjectionMatchSet</a> ,
--   <tt>XssMatchSet</tt> , <a>RegexMatchSet</a> , <a>GeoMatchSet</a> , or
--   <a>SizeConstraintSet</a> . For example, if an <tt>IPSet</tt> includes
--   the IP address <tt>192.0.2.44</tt> , AWS WAF will allow or block
--   requests based on that IP address. Set <tt>Negated</tt> to
--   <tt>True</tt> if you want AWS WAF to allow or block a request based on
--   the negation of the settings in the <a>ByteMatchSet</a> , <a>IPSet</a>
--   , <a>SqlInjectionMatchSet</a> , <tt>XssMatchSet</tt> ,
--   <a>RegexMatchSet</a> , <a>GeoMatchSet</a> , or
--   <a>SizeConstraintSet</a> . For example, if an <tt>IPSet</tt> includes
--   the IP address <tt>192.0.2.44</tt> , AWS WAF will allow, block, or
--   count requests based on all IP addresses <i>except</i>
--   <tt>192.0.2.44</tt> .
pNegated :: Lens' Predicate Bool

-- | The type of predicate in a <tt>Rule</tt> , such as
--   <tt>ByteMatchSet</tt> or <tt>IPSet</tt> .
pType :: Lens' Predicate PredicateType

-- | A unique identifier for a predicate in a <tt>Rule</tt> , such as
--   <tt>ByteMatchSetId</tt> or <tt>IPSetId</tt> . The ID is returned by
--   the corresponding <tt>Create</tt> or <tt>List</tt> command.
pDataId :: Lens' Predicate Text

-- | A <tt>RateBasedRule</tt> is identical to a regular <a>Rule</a> , with
--   one addition: a <tt>RateBasedRule</tt> counts the number of requests
--   that arrive from a specified IP address every five minutes. For
--   example, based on recent requests that you've seen from an attacker,
--   you might create a <tt>RateBasedRule</tt> that includes the following
--   conditions:
--   
--   <ul>
--   <li>The requests come from 192.0.2.44.</li>
--   <li>They contain the value <tt>BadBot</tt> in the <tt>User-Agent</tt>
--   header.</li>
--   </ul>
--   
--   In the rule, you also define the rate limit as 15,000.
--   
--   Requests that meet both of these conditions and exceed 15,000 requests
--   every five minutes trigger the rule's action (block or count), which
--   is defined in the web ACL.
--   
--   <i>See:</i> <a>rateBasedRule</a> smart constructor.
data RateBasedRule

-- | Creates a value of <a>RateBasedRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rbrMetricName</a> - A friendly name or description for the
--   metrics for a <tt>RateBasedRule</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change the name of the metric after you create
--   the <tt>RateBasedRule</tt> .</li>
--   <li><a>rbrName</a> - A friendly name or description for a
--   <tt>RateBasedRule</tt> . You can't change the name of a
--   <tt>RateBasedRule</tt> after you create it.</li>
--   <li><a>rbrRuleId</a> - A unique identifier for a
--   <tt>RateBasedRule</tt> . You use <tt>RuleId</tt> to get more
--   information about a <tt>RateBasedRule</tt> (see
--   <tt>GetRateBasedRule</tt> ), update a <tt>RateBasedRule</tt> (see
--   <tt>UpdateRateBasedRule</tt> ), insert a <tt>RateBasedRule</tt> into a
--   <tt>WebACL</tt> or delete one from a <tt>WebACL</tt> (see
--   <tt>UpdateWebACL</tt> ), or delete a <tt>RateBasedRule</tt> from AWS
--   WAF (see <tt>DeleteRateBasedRule</tt> ).</li>
--   <li><a>rbrMatchPredicates</a> - The <tt>Predicates</tt> object
--   contains one <tt>Predicate</tt> element for each <a>ByteMatchSet</a> ,
--   <a>IPSet</a> , or <a>SqlInjectionMatchSet</a> object that you want to
--   include in a <tt>RateBasedRule</tt> .</li>
--   <li><a>rbrRateKey</a> - The field that AWS WAF uses to determine if
--   requests are likely arriving from single source and thus subject to
--   rate monitoring. The only valid value for <tt>RateKey</tt> is
--   <tt>IP</tt> . <tt>IP</tt> indicates that requests arriving from the
--   same IP address are subject to the <tt>RateLimit</tt> that is
--   specified in the <tt>RateBasedRule</tt> .</li>
--   <li><a>rbrRateLimit</a> - The maximum number of requests, which have
--   an identical value in the field specified by the <tt>RateKey</tt> ,
--   allowed in a five-minute period. If the number of requests exceeds the
--   <tt>RateLimit</tt> and the other predicates specified in the rule are
--   also met, AWS WAF triggers the action that is specified for this
--   rule.</li>
--   </ul>
rateBasedRule :: Text -> RateKey -> Natural -> RateBasedRule

-- | A friendly name or description for the metrics for a
--   <tt>RateBasedRule</tt> . The name can contain only alphanumeric
--   characters (A-Z, a-z, 0-9); the name can't contain whitespace. You
--   can't change the name of the metric after you create the
--   <tt>RateBasedRule</tt> .
rbrMetricName :: Lens' RateBasedRule (Maybe Text)

-- | A friendly name or description for a <tt>RateBasedRule</tt> . You
--   can't change the name of a <tt>RateBasedRule</tt> after you create it.
rbrName :: Lens' RateBasedRule (Maybe Text)

-- | A unique identifier for a <tt>RateBasedRule</tt> . You use
--   <tt>RuleId</tt> to get more information about a <tt>RateBasedRule</tt>
--   (see <tt>GetRateBasedRule</tt> ), update a <tt>RateBasedRule</tt> (see
--   <tt>UpdateRateBasedRule</tt> ), insert a <tt>RateBasedRule</tt> into a
--   <tt>WebACL</tt> or delete one from a <tt>WebACL</tt> (see
--   <tt>UpdateWebACL</tt> ), or delete a <tt>RateBasedRule</tt> from AWS
--   WAF (see <tt>DeleteRateBasedRule</tt> ).
rbrRuleId :: Lens' RateBasedRule Text

-- | The <tt>Predicates</tt> object contains one <tt>Predicate</tt> element
--   for each <a>ByteMatchSet</a> , <a>IPSet</a> , or
--   <a>SqlInjectionMatchSet</a> object that you want to include in a
--   <tt>RateBasedRule</tt> .
rbrMatchPredicates :: Lens' RateBasedRule [Predicate]

-- | The field that AWS WAF uses to determine if requests are likely
--   arriving from single source and thus subject to rate monitoring. The
--   only valid value for <tt>RateKey</tt> is <tt>IP</tt> . <tt>IP</tt>
--   indicates that requests arriving from the same IP address are subject
--   to the <tt>RateLimit</tt> that is specified in the
--   <tt>RateBasedRule</tt> .
rbrRateKey :: Lens' RateBasedRule RateKey

-- | The maximum number of requests, which have an identical value in the
--   field specified by the <tt>RateKey</tt> , allowed in a five-minute
--   period. If the number of requests exceeds the <tt>RateLimit</tt> and
--   the other predicates specified in the rule are also met, AWS WAF
--   triggers the action that is specified for this rule.
rbrRateLimit :: Lens' RateBasedRule Natural

-- | In a <tt>GetRegexMatchSet</tt> request, <tt>RegexMatchSet</tt> is a
--   complex type that contains the <tt>RegexMatchSetId</tt> and
--   <tt>Name</tt> of a <tt>RegexMatchSet</tt> , and the values that you
--   specified when you updated the <tt>RegexMatchSet</tt> .
--   
--   The values are contained in a <tt>RegexMatchTuple</tt> object, which
--   specify the parts of web requests that you want AWS WAF to inspect and
--   the values that you want AWS WAF to search for. If a
--   <tt>RegexMatchSet</tt> contains more than one <tt>RegexMatchTuple</tt>
--   object, a request needs to match the settings in only one
--   <tt>ByteMatchTuple</tt> to be considered a match.
--   
--   <i>See:</i> <a>regexMatchSet</a> smart constructor.
data RegexMatchSet

-- | Creates a value of <a>RegexMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmsName</a> - A friendly name or description of the
--   <a>RegexMatchSet</a> . You can't change <tt>Name</tt> after you create
--   a <tt>RegexMatchSet</tt> .</li>
--   <li><a>rmsRegexMatchTuples</a> - Contains an array of
--   <a>RegexMatchTuple</a> objects. Each <tt>RegexMatchTuple</tt> object
--   contains: * The part of a web request that you want AWS WAF to
--   inspect, such as a query string or the value of the
--   <tt>User-Agent</tt> header. * The identifier of the pattern (a regular
--   expression) that you want AWS WAF to look for. For more information,
--   see <a>RegexPatternSet</a> . * Whether to perform any conversions on
--   the request, such as converting it to lowercase, before inspecting it
--   for the specified string.</li>
--   <li><a>rmsRegexMatchSetId</a> - The <tt>RegexMatchSetId</tt> for a
--   <tt>RegexMatchSet</tt> . You use <tt>RegexMatchSetId</tt> to get
--   information about a <tt>RegexMatchSet</tt> (see
--   <tt>GetRegexMatchSet</tt> ), update a <tt>RegexMatchSet</tt> (see
--   <tt>UpdateRegexMatchSet</tt> ), insert a <tt>RegexMatchSet</tt> into a
--   <tt>Rule</tt> or delete one from a <tt>Rule</tt> (see
--   <tt>UpdateRule</tt> ), and delete a <tt>RegexMatchSet</tt> from AWS
--   WAF (see <tt>DeleteRegexMatchSet</tt> ). <tt>RegexMatchSetId</tt> is
--   returned by <tt>CreateRegexMatchSet</tt> and by
--   <tt>ListRegexMatchSets</tt> .</li>
--   </ul>
regexMatchSet :: RegexMatchSet

-- | A friendly name or description of the <a>RegexMatchSet</a> . You can't
--   change <tt>Name</tt> after you create a <tt>RegexMatchSet</tt> .
rmsName :: Lens' RegexMatchSet (Maybe Text)

-- | Contains an array of <a>RegexMatchTuple</a> objects. Each
--   <tt>RegexMatchTuple</tt> object contains: * The part of a web request
--   that you want AWS WAF to inspect, such as a query string or the value
--   of the <tt>User-Agent</tt> header. * The identifier of the pattern (a
--   regular expression) that you want AWS WAF to look for. For more
--   information, see <a>RegexPatternSet</a> . * Whether to perform any
--   conversions on the request, such as converting it to lowercase, before
--   inspecting it for the specified string.
rmsRegexMatchTuples :: Lens' RegexMatchSet [RegexMatchTuple]

-- | The <tt>RegexMatchSetId</tt> for a <tt>RegexMatchSet</tt> . You use
--   <tt>RegexMatchSetId</tt> to get information about a
--   <tt>RegexMatchSet</tt> (see <tt>GetRegexMatchSet</tt> ), update a
--   <tt>RegexMatchSet</tt> (see <tt>UpdateRegexMatchSet</tt> ), insert a
--   <tt>RegexMatchSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>RegexMatchSet</tt> from AWS WAF (see <tt>DeleteRegexMatchSet</tt>
--   ). <tt>RegexMatchSetId</tt> is returned by
--   <tt>CreateRegexMatchSet</tt> and by <tt>ListRegexMatchSets</tt> .
rmsRegexMatchSetId :: Lens' RegexMatchSet (Maybe Text)

-- | Returned by <tt>ListRegexMatchSets</tt> . Each
--   <tt>RegexMatchSetSummary</tt> object includes the <tt>Name</tt> and
--   <tt>RegexMatchSetId</tt> for one <a>RegexMatchSet</a> .
--   
--   <i>See:</i> <a>regexMatchSetSummary</a> smart constructor.
data RegexMatchSetSummary

-- | Creates a value of <a>RegexMatchSetSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmssRegexMatchSetId</a> - The <tt>RegexMatchSetId</tt> for a
--   <tt>RegexMatchSet</tt> . You use <tt>RegexMatchSetId</tt> to get
--   information about a <tt>RegexMatchSet</tt> , update a
--   <tt>RegexMatchSet</tt> , remove a <tt>RegexMatchSet</tt> from a
--   <tt>Rule</tt> , and delete a <tt>RegexMatchSet</tt> from AWS WAF.
--   <tt>RegexMatchSetId</tt> is returned by <tt>CreateRegexMatchSet</tt>
--   and by <tt>ListRegexMatchSets</tt> .</li>
--   <li><a>rmssName</a> - A friendly name or description of the
--   <a>RegexMatchSet</a> . You can't change <tt>Name</tt> after you create
--   a <tt>RegexMatchSet</tt> .</li>
--   </ul>
regexMatchSetSummary :: Text -> Text -> RegexMatchSetSummary

-- | The <tt>RegexMatchSetId</tt> for a <tt>RegexMatchSet</tt> . You use
--   <tt>RegexMatchSetId</tt> to get information about a
--   <tt>RegexMatchSet</tt> , update a <tt>RegexMatchSet</tt> , remove a
--   <tt>RegexMatchSet</tt> from a <tt>Rule</tt> , and delete a
--   <tt>RegexMatchSet</tt> from AWS WAF. <tt>RegexMatchSetId</tt> is
--   returned by <tt>CreateRegexMatchSet</tt> and by
--   <tt>ListRegexMatchSets</tt> .
rmssRegexMatchSetId :: Lens' RegexMatchSetSummary Text

-- | A friendly name or description of the <a>RegexMatchSet</a> . You can't
--   change <tt>Name</tt> after you create a <tt>RegexMatchSet</tt> .
rmssName :: Lens' RegexMatchSetSummary Text

-- | In an <tt>UpdateRegexMatchSet</tt> request,
--   <tt>RegexMatchSetUpdate</tt> specifies whether to insert or delete a
--   <a>RegexMatchTuple</a> and includes the settings for the
--   <tt>RegexMatchTuple</tt> .
--   
--   <i>See:</i> <a>regexMatchSetUpdate</a> smart constructor.
data RegexMatchSetUpdate

-- | Creates a value of <a>RegexMatchSetUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmsuAction</a> - Specifies whether to insert or delete a
--   <a>RegexMatchTuple</a> .</li>
--   <li><a>rmsuRegexMatchTuple</a> - Information about the part of a web
--   request that you want AWS WAF to inspect and the identifier of the
--   regular expression (regex) pattern that you want AWS WAF to search
--   for. If you specify <tt>DELETE</tt> for the value of <tt>Action</tt> ,
--   the <tt>RegexMatchTuple</tt> values must exactly match the values in
--   the <tt>RegexMatchTuple</tt> that you want to delete from the
--   <tt>RegexMatchSet</tt> .</li>
--   </ul>
regexMatchSetUpdate :: ChangeAction -> RegexMatchTuple -> RegexMatchSetUpdate

-- | Specifies whether to insert or delete a <a>RegexMatchTuple</a> .
rmsuAction :: Lens' RegexMatchSetUpdate ChangeAction

-- | Information about the part of a web request that you want AWS WAF to
--   inspect and the identifier of the regular expression (regex) pattern
--   that you want AWS WAF to search for. If you specify <tt>DELETE</tt>
--   for the value of <tt>Action</tt> , the <tt>RegexMatchTuple</tt> values
--   must exactly match the values in the <tt>RegexMatchTuple</tt> that you
--   want to delete from the <tt>RegexMatchSet</tt> .
rmsuRegexMatchTuple :: Lens' RegexMatchSetUpdate RegexMatchTuple

-- | The regular expression pattern that you want AWS WAF to search for in
--   web requests, the location in requests that you want AWS WAF to
--   search, and other settings. Each <tt>RegexMatchTuple</tt> object
--   contains:
--   
--   <ul>
--   <li>The part of a web request that you want AWS WAF to inspect, such
--   as a query string or the value of the <tt>User-Agent</tt> header.</li>
--   <li>The identifier of the pattern (a regular expression) that you want
--   AWS WAF to look for. For more information, see <a>RegexPatternSet</a>
--   .</li>
--   <li>Whether to perform any conversions on the request, such as
--   converting it to lowercase, before inspecting it for the specified
--   string.</li>
--   </ul>
--   
--   <i>See:</i> <a>regexMatchTuple</a> smart constructor.
data RegexMatchTuple

-- | Creates a value of <a>RegexMatchTuple</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmtFieldToMatch</a> - Specifies where in a web request to look
--   for the <tt>RegexPatternSet</tt> .</li>
--   <li><a>rmtTextTransformation</a> - Text transformations eliminate some
--   of the unusual formatting that attackers use in web requests in an
--   effort to bypass AWS WAF. If you specify a transformation, AWS WAF
--   performs the transformation on <tt>RegexPatternSet</tt> before
--   inspecting a request for a match. <b>CMD_LINE</b> When you're
--   concerned that attackers are injecting an operating system commandline
--   command and using unusual formatting to disguise some or all of the
--   command, use this option to perform the following transformations: *
--   Delete the following characters: " ' ^ * Delete spaces before the
--   following characters: / ( * Replace the following characters with a
--   space: , ; * Replace multiple spaces with one space * Convert
--   uppercase letters (A-Z) to lowercase (a-z) <b>COMPRESS_WHITE_SPACE</b>
--   Use this option to replace the following characters with a space
--   character (decimal 32): * f, formfeed, decimal 12 * t, tab, decimal 9
--   * n, newline, decimal 10 * r, carriage return, decimal 13 * v,
--   vertical tab, decimal 11 * non-breaking space, decimal 160
--   <tt>COMPRESS_WHITE_SPACE</tt> also replaces multiple spaces with one
--   space. <b>HTML_ENTITY_DECODE</b> Use this option to replace
--   HTML-encoded characters with unencoded characters.
--   <tt>HTML_ENTITY_DECODE</tt> performs the following operations: *
--   Replaces <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text
--   transformations.</li>
--   <li><a>rmtRegexPatternSetId</a> - The <tt>RegexPatternSetId</tt> for a
--   <tt>RegexPatternSet</tt> . You use <tt>RegexPatternSetId</tt> to get
--   information about a <tt>RegexPatternSet</tt> (see
--   <tt>GetRegexPatternSet</tt> ), update a <tt>RegexPatternSet</tt> (see
--   <tt>UpdateRegexPatternSet</tt> ), insert a <tt>RegexPatternSet</tt>
--   into a <tt>RegexMatchSet</tt> or delete one from a
--   <tt>RegexMatchSet</tt> (see <tt>UpdateRegexMatchSet</tt> ), and delete
--   an <tt>RegexPatternSet</tt> from AWS WAF (see
--   <tt>DeleteRegexPatternSet</tt> ). <tt>RegexPatternSetId</tt> is
--   returned by <tt>CreateRegexPatternSet</tt> and by
--   <tt>ListRegexPatternSets</tt> .</li>
--   </ul>
regexMatchTuple :: FieldToMatch -> TextTransformation -> Text -> RegexMatchTuple

-- | Specifies where in a web request to look for the
--   <tt>RegexPatternSet</tt> .
rmtFieldToMatch :: Lens' RegexMatchTuple FieldToMatch

-- | Text transformations eliminate some of the unusual formatting that
--   attackers use in web requests in an effort to bypass AWS WAF. If you
--   specify a transformation, AWS WAF performs the transformation on
--   <tt>RegexPatternSet</tt> before inspecting a request for a match.
--   <b>CMD_LINE</b> When you're concerned that attackers are injecting an
--   operating system commandline command and using unusual formatting to
--   disguise some or all of the command, use this option to perform the
--   following transformations: * Delete the following characters: " ' ^ *
--   Delete spaces before the following characters: / ( * Replace the
--   following characters with a space: , ; * Replace multiple spaces with
--   one space * Convert uppercase letters (A-Z) to lowercase (a-z)
--   <b>COMPRESS_WHITE_SPACE</b> Use this option to replace the following
--   characters with a space character (decimal 32): * f, formfeed, decimal
--   12 * t, tab, decimal 9 * n, newline, decimal 10 * r, carriage return,
--   decimal 13 * v, vertical tab, decimal 11 * non-breaking space, decimal
--   160 <tt>COMPRESS_WHITE_SPACE</tt> also replaces multiple spaces with
--   one space. <b>HTML_ENTITY_DECODE</b> Use this option to replace
--   HTML-encoded characters with unencoded characters.
--   <tt>HTML_ENTITY_DECODE</tt> performs the following operations: *
--   Replaces <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text transformations.
rmtTextTransformation :: Lens' RegexMatchTuple TextTransformation

-- | The <tt>RegexPatternSetId</tt> for a <tt>RegexPatternSet</tt> . You
--   use <tt>RegexPatternSetId</tt> to get information about a
--   <tt>RegexPatternSet</tt> (see <tt>GetRegexPatternSet</tt> ), update a
--   <tt>RegexPatternSet</tt> (see <tt>UpdateRegexPatternSet</tt> ), insert
--   a <tt>RegexPatternSet</tt> into a <tt>RegexMatchSet</tt> or delete one
--   from a <tt>RegexMatchSet</tt> (see <tt>UpdateRegexMatchSet</tt> ), and
--   delete an <tt>RegexPatternSet</tt> from AWS WAF (see
--   <tt>DeleteRegexPatternSet</tt> ). <tt>RegexPatternSetId</tt> is
--   returned by <tt>CreateRegexPatternSet</tt> and by
--   <tt>ListRegexPatternSets</tt> .
rmtRegexPatternSetId :: Lens' RegexMatchTuple Text

-- | The <tt>RegexPatternSet</tt> specifies the regular expression (regex)
--   pattern that you want AWS WAF to search for, such as
--   <tt>B[a</tt>]dB[o0]t@ . You can then configure AWS WAF to reject those
--   requests.
--   
--   <i>See:</i> <a>regexPatternSet</a> smart constructor.
data RegexPatternSet

-- | Creates a value of <a>RegexPatternSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rpsName</a> - A friendly name or description of the
--   <a>RegexPatternSet</a> . You can't change <tt>Name</tt> after you
--   create a <tt>RegexPatternSet</tt> .</li>
--   <li><a>rpsRegexPatternSetId</a> - The identifier for the
--   <tt>RegexPatternSet</tt> . You use <tt>RegexPatternSetId</tt> to get
--   information about a <tt>RegexPatternSet</tt> , update a
--   <tt>RegexPatternSet</tt> , remove a <tt>RegexPatternSet</tt> from a
--   <tt>RegexMatchSet</tt> , and delete a <tt>RegexPatternSet</tt> from
--   AWS WAF. <tt>RegexMatchSetId</tt> is returned by
--   <tt>CreateRegexPatternSet</tt> and by <tt>ListRegexPatternSets</tt>
--   .</li>
--   <li><a>rpsRegexPatternStrings</a> - Specifies the regular expression
--   (regex) patterns that you want AWS WAF to search for, such as
--   <tt>B[a</tt>]dB[o0]t@ .</li>
--   </ul>
regexPatternSet :: Text -> RegexPatternSet

-- | A friendly name or description of the <a>RegexPatternSet</a> . You
--   can't change <tt>Name</tt> after you create a <tt>RegexPatternSet</tt>
--   .
rpsName :: Lens' RegexPatternSet (Maybe Text)

-- | The identifier for the <tt>RegexPatternSet</tt> . You use
--   <tt>RegexPatternSetId</tt> to get information about a
--   <tt>RegexPatternSet</tt> , update a <tt>RegexPatternSet</tt> , remove
--   a <tt>RegexPatternSet</tt> from a <tt>RegexMatchSet</tt> , and delete
--   a <tt>RegexPatternSet</tt> from AWS WAF. <tt>RegexMatchSetId</tt> is
--   returned by <tt>CreateRegexPatternSet</tt> and by
--   <tt>ListRegexPatternSets</tt> .
rpsRegexPatternSetId :: Lens' RegexPatternSet Text

-- | Specifies the regular expression (regex) patterns that you want AWS
--   WAF to search for, such as <tt>B[a</tt>]dB[o0]t@ .
rpsRegexPatternStrings :: Lens' RegexPatternSet [Text]

-- | Returned by <tt>ListRegexPatternSets</tt> . Each
--   <tt>RegexPatternSetSummary</tt> object includes the <tt>Name</tt> and
--   <tt>RegexPatternSetId</tt> for one <a>RegexPatternSet</a> .
--   
--   <i>See:</i> <a>regexPatternSetSummary</a> smart constructor.
data RegexPatternSetSummary

-- | Creates a value of <a>RegexPatternSetSummary</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rpssRegexPatternSetId</a> - The <tt>RegexPatternSetId</tt> for
--   a <tt>RegexPatternSet</tt> . You use <tt>RegexPatternSetId</tt> to get
--   information about a <tt>RegexPatternSet</tt> , update a
--   <tt>RegexPatternSet</tt> , remove a <tt>RegexPatternSet</tt> from a
--   <tt>RegexMatchSet</tt> , and delete a <tt>RegexPatternSet</tt> from
--   AWS WAF. <tt>RegexPatternSetId</tt> is returned by
--   <tt>CreateRegexPatternSet</tt> and by <tt>ListRegexPatternSets</tt>
--   .</li>
--   <li><a>rpssName</a> - A friendly name or description of the
--   <a>RegexPatternSet</a> . You can't change <tt>Name</tt> after you
--   create a <tt>RegexPatternSet</tt> .</li>
--   </ul>
regexPatternSetSummary :: Text -> Text -> RegexPatternSetSummary

-- | The <tt>RegexPatternSetId</tt> for a <tt>RegexPatternSet</tt> . You
--   use <tt>RegexPatternSetId</tt> to get information about a
--   <tt>RegexPatternSet</tt> , update a <tt>RegexPatternSet</tt> , remove
--   a <tt>RegexPatternSet</tt> from a <tt>RegexMatchSet</tt> , and delete
--   a <tt>RegexPatternSet</tt> from AWS WAF. <tt>RegexPatternSetId</tt> is
--   returned by <tt>CreateRegexPatternSet</tt> and by
--   <tt>ListRegexPatternSets</tt> .
rpssRegexPatternSetId :: Lens' RegexPatternSetSummary Text

-- | A friendly name or description of the <a>RegexPatternSet</a> . You
--   can't change <tt>Name</tt> after you create a <tt>RegexPatternSet</tt>
--   .
rpssName :: Lens' RegexPatternSetSummary Text

-- | In an <tt>UpdateRegexPatternSet</tt> request,
--   <tt>RegexPatternSetUpdate</tt> specifies whether to insert or delete a
--   <tt>RegexPatternString</tt> and includes the settings for the
--   <tt>RegexPatternString</tt> .
--   
--   <i>See:</i> <a>regexPatternSetUpdate</a> smart constructor.
data RegexPatternSetUpdate

-- | Creates a value of <a>RegexPatternSetUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rpsuAction</a> - Specifies whether to insert or delete a
--   <tt>RegexPatternString</tt> .</li>
--   <li><a>rpsuRegexPatternString</a> - Specifies the regular expression
--   (regex) pattern that you want AWS WAF to search for, such as
--   <tt>B[a</tt>]dB[o0]t@ .</li>
--   </ul>
regexPatternSetUpdate :: ChangeAction -> Text -> RegexPatternSetUpdate

-- | Specifies whether to insert or delete a <tt>RegexPatternString</tt> .
rpsuAction :: Lens' RegexPatternSetUpdate ChangeAction

-- | Specifies the regular expression (regex) pattern that you want AWS WAF
--   to search for, such as <tt>B[a</tt>]dB[o0]t@ .
rpsuRegexPatternString :: Lens' RegexPatternSetUpdate Text

-- | A combination of <a>ByteMatchSet</a> , <a>IPSet</a> , and/or
--   <a>SqlInjectionMatchSet</a> objects that identify the web requests
--   that you want to allow, block, or count. For example, you might create
--   a <tt>Rule</tt> that includes the following predicates:
--   
--   <ul>
--   <li>An <tt>IPSet</tt> that causes AWS WAF to search for web requests
--   that originate from the IP address <tt>192.0.2.44</tt></li>
--   <li>A <tt>ByteMatchSet</tt> that causes AWS WAF to search for web
--   requests for which the value of the <tt>User-Agent</tt> header is
--   <tt>BadBot</tt> .</li>
--   </ul>
--   
--   To match the settings in this <tt>Rule</tt> , a request must originate
--   from <tt>192.0.2.44</tt> AND include a <tt>User-Agent</tt> header for
--   which the value is <tt>BadBot</tt> .
--   
--   <i>See:</i> <a>rule</a> smart constructor.
data Rule

-- | Creates a value of <a>Rule</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rMetricName</a> - A friendly name or description for the
--   metrics for this <tt>Rule</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change <tt>MetricName</tt> after you create the
--   <tt>Rule</tt> .</li>
--   <li><a>rName</a> - The friendly name or description for the
--   <tt>Rule</tt> . You can't change the name of a <tt>Rule</tt> after you
--   create it.</li>
--   <li><a>rRuleId</a> - A unique identifier for a <tt>Rule</tt> . You use
--   <tt>RuleId</tt> to get more information about a <tt>Rule</tt> (see
--   <tt>GetRule</tt> ), update a <tt>Rule</tt> (see <tt>UpdateRule</tt> ),
--   insert a <tt>Rule</tt> into a <tt>WebACL</tt> or delete a one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>Rule</tt> from AWS WAF (see <tt>DeleteRule</tt> ). <tt>RuleId</tt>
--   is returned by <tt>CreateRule</tt> and by <tt>ListRules</tt> .</li>
--   <li><a>rPredicates</a> - The <tt>Predicates</tt> object contains one
--   <tt>Predicate</tt> element for each <a>ByteMatchSet</a> , <a>IPSet</a>
--   , or <a>SqlInjectionMatchSet</a> object that you want to include in a
--   <tt>Rule</tt> .</li>
--   </ul>
rule :: Text -> Rule

-- | A friendly name or description for the metrics for this <tt>Rule</tt>
--   . The name can contain only alphanumeric characters (A-Z, a-z, 0-9);
--   the name can't contain whitespace. You can't change
--   <tt>MetricName</tt> after you create the <tt>Rule</tt> .
rMetricName :: Lens' Rule (Maybe Text)

-- | The friendly name or description for the <tt>Rule</tt> . You can't
--   change the name of a <tt>Rule</tt> after you create it.
rName :: Lens' Rule (Maybe Text)

-- | A unique identifier for a <tt>Rule</tt> . You use <tt>RuleId</tt> to
--   get more information about a <tt>Rule</tt> (see <tt>GetRule</tt> ),
--   update a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), insert a
--   <tt>Rule</tt> into a <tt>WebACL</tt> or delete a one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>Rule</tt> from AWS WAF (see <tt>DeleteRule</tt> ). <tt>RuleId</tt>
--   is returned by <tt>CreateRule</tt> and by <tt>ListRules</tt> .
rRuleId :: Lens' Rule Text

-- | The <tt>Predicates</tt> object contains one <tt>Predicate</tt> element
--   for each <a>ByteMatchSet</a> , <a>IPSet</a> , or
--   <a>SqlInjectionMatchSet</a> object that you want to include in a
--   <tt>Rule</tt> .
rPredicates :: Lens' Rule [Predicate]

-- | A collection of predefined rules that you can add to a web ACL.
--   
--   Rule groups are subject to the following limits:
--   
--   <ul>
--   <li>Three rule groups per account. You can request an increase to this
--   limit by contacting customer support.</li>
--   <li>One rule group per web ACL.</li>
--   <li>Ten rules per rule group.</li>
--   </ul>
--   
--   <i>See:</i> <a>ruleGroup</a> smart constructor.
data RuleGroup

-- | Creates a value of <a>RuleGroup</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgMetricName</a> - A friendly name or description for the
--   metrics for this <tt>RuleGroup</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change the name of the metric after you create
--   the <tt>RuleGroup</tt> .</li>
--   <li><a>rgName</a> - The friendly name or description for the
--   <tt>RuleGroup</tt> . You can't change the name of a <tt>RuleGroup</tt>
--   after you create it.</li>
--   <li><a>rgRuleGroupId</a> - A unique identifier for a
--   <tt>RuleGroup</tt> . You use <tt>RuleGroupId</tt> to get more
--   information about a <tt>RuleGroup</tt> (see <tt>GetRuleGroup</tt> ),
--   update a <tt>RuleGroup</tt> (see <tt>UpdateRuleGroup</tt> ), insert a
--   <tt>RuleGroup</tt> into a <tt>WebACL</tt> or delete a one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>RuleGroup</tt> from AWS WAF (see <tt>DeleteRuleGroup</tt> ).
--   <tt>RuleGroupId</tt> is returned by <tt>CreateRuleGroup</tt> and by
--   <tt>ListRuleGroups</tt> .</li>
--   </ul>
ruleGroup :: Text -> RuleGroup

-- | A friendly name or description for the metrics for this
--   <tt>RuleGroup</tt> . The name can contain only alphanumeric characters
--   (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change
--   the name of the metric after you create the <tt>RuleGroup</tt> .
rgMetricName :: Lens' RuleGroup (Maybe Text)

-- | The friendly name or description for the <tt>RuleGroup</tt> . You
--   can't change the name of a <tt>RuleGroup</tt> after you create it.
rgName :: Lens' RuleGroup (Maybe Text)

-- | A unique identifier for a <tt>RuleGroup</tt> . You use
--   <tt>RuleGroupId</tt> to get more information about a
--   <tt>RuleGroup</tt> (see <tt>GetRuleGroup</tt> ), update a
--   <tt>RuleGroup</tt> (see <tt>UpdateRuleGroup</tt> ), insert a
--   <tt>RuleGroup</tt> into a <tt>WebACL</tt> or delete a one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>RuleGroup</tt> from AWS WAF (see <tt>DeleteRuleGroup</tt> ).
--   <tt>RuleGroupId</tt> is returned by <tt>CreateRuleGroup</tt> and by
--   <tt>ListRuleGroups</tt> .
rgRuleGroupId :: Lens' RuleGroup Text

-- | Contains the identifier and the friendly name or description of the
--   <tt>RuleGroup</tt> .
--   
--   <i>See:</i> <a>ruleGroupSummary</a> smart constructor.
data RuleGroupSummary

-- | Creates a value of <a>RuleGroupSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgsRuleGroupId</a> - A unique identifier for a
--   <tt>RuleGroup</tt> . You use <tt>RuleGroupId</tt> to get more
--   information about a <tt>RuleGroup</tt> (see <tt>GetRuleGroup</tt> ),
--   update a <tt>RuleGroup</tt> (see <tt>UpdateRuleGroup</tt> ), insert a
--   <tt>RuleGroup</tt> into a <tt>WebACL</tt> or delete one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>RuleGroup</tt> from AWS WAF (see <tt>DeleteRuleGroup</tt> ).
--   <tt>RuleGroupId</tt> is returned by <tt>CreateRuleGroup</tt> and by
--   <tt>ListRuleGroups</tt> .</li>
--   <li><a>rgsName</a> - A friendly name or description of the
--   <a>RuleGroup</a> . You can't change the name of a <tt>RuleGroup</tt>
--   after you create it.</li>
--   </ul>
ruleGroupSummary :: Text -> Text -> RuleGroupSummary

-- | A unique identifier for a <tt>RuleGroup</tt> . You use
--   <tt>RuleGroupId</tt> to get more information about a
--   <tt>RuleGroup</tt> (see <tt>GetRuleGroup</tt> ), update a
--   <tt>RuleGroup</tt> (see <tt>UpdateRuleGroup</tt> ), insert a
--   <tt>RuleGroup</tt> into a <tt>WebACL</tt> or delete one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>RuleGroup</tt> from AWS WAF (see <tt>DeleteRuleGroup</tt> ).
--   <tt>RuleGroupId</tt> is returned by <tt>CreateRuleGroup</tt> and by
--   <tt>ListRuleGroups</tt> .
rgsRuleGroupId :: Lens' RuleGroupSummary Text

-- | A friendly name or description of the <a>RuleGroup</a> . You can't
--   change the name of a <tt>RuleGroup</tt> after you create it.
rgsName :: Lens' RuleGroupSummary Text

-- | Specifies an <tt>ActivatedRule</tt> and indicates whether you want to
--   add it to a <tt>RuleGroup</tt> or delete it from a <tt>RuleGroup</tt>
--   .
--   
--   <i>See:</i> <a>ruleGroupUpdate</a> smart constructor.
data RuleGroupUpdate

-- | Creates a value of <a>RuleGroupUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rguAction</a> - Specify <tt>INSERT</tt> to add an
--   <tt>ActivatedRule</tt> to a <tt>RuleGroup</tt> . Use <tt>DELETE</tt>
--   to remove an <tt>ActivatedRule</tt> from a <tt>RuleGroup</tt> .</li>
--   <li><a>rguActivatedRule</a> - The <tt>ActivatedRule</tt> object
--   specifies a <tt>Rule</tt> that you want to insert or delete, the
--   priority of the <tt>Rule</tt> in the <tt>WebACL</tt> , and the action
--   that you want AWS WAF to take when a web request matches the
--   <tt>Rule</tt> (<tt>ALLOW</tt> , <tt>BLOCK</tt> , or <tt>COUNT</tt>
--   ).</li>
--   </ul>
ruleGroupUpdate :: ChangeAction -> ActivatedRule -> RuleGroupUpdate

-- | Specify <tt>INSERT</tt> to add an <tt>ActivatedRule</tt> to a
--   <tt>RuleGroup</tt> . Use <tt>DELETE</tt> to remove an
--   <tt>ActivatedRule</tt> from a <tt>RuleGroup</tt> .
rguAction :: Lens' RuleGroupUpdate ChangeAction

-- | The <tt>ActivatedRule</tt> object specifies a <tt>Rule</tt> that you
--   want to insert or delete, the priority of the <tt>Rule</tt> in the
--   <tt>WebACL</tt> , and the action that you want AWS WAF to take when a
--   web request matches the <tt>Rule</tt> (<tt>ALLOW</tt> , <tt>BLOCK</tt>
--   , or <tt>COUNT</tt> ).
rguActivatedRule :: Lens' RuleGroupUpdate ActivatedRule

-- | Contains the identifier and the friendly name or description of the
--   <tt>Rule</tt> .
--   
--   <i>See:</i> <a>ruleSummary</a> smart constructor.
data RuleSummary

-- | Creates a value of <a>RuleSummary</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rsRuleId</a> - A unique identifier for a <tt>Rule</tt> . You
--   use <tt>RuleId</tt> to get more information about a <tt>Rule</tt> (see
--   <tt>GetRule</tt> ), update a <tt>Rule</tt> (see <tt>UpdateRule</tt> ),
--   insert a <tt>Rule</tt> into a <tt>WebACL</tt> or delete one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>Rule</tt> from AWS WAF (see <tt>DeleteRule</tt> ). <tt>RuleId</tt>
--   is returned by <tt>CreateRule</tt> and by <tt>ListRules</tt> .</li>
--   <li><a>rsName</a> - A friendly name or description of the <a>Rule</a>
--   . You can't change the name of a <tt>Rule</tt> after you create
--   it.</li>
--   </ul>
ruleSummary :: Text -> Text -> RuleSummary

-- | A unique identifier for a <tt>Rule</tt> . You use <tt>RuleId</tt> to
--   get more information about a <tt>Rule</tt> (see <tt>GetRule</tt> ),
--   update a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), insert a
--   <tt>Rule</tt> into a <tt>WebACL</tt> or delete one from a
--   <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), or delete a
--   <tt>Rule</tt> from AWS WAF (see <tt>DeleteRule</tt> ). <tt>RuleId</tt>
--   is returned by <tt>CreateRule</tt> and by <tt>ListRules</tt> .
rsRuleId :: Lens' RuleSummary Text

-- | A friendly name or description of the <a>Rule</a> . You can't change
--   the name of a <tt>Rule</tt> after you create it.
rsName :: Lens' RuleSummary Text

-- | Specifies a <tt>Predicate</tt> (such as an <tt>IPSet</tt> ) and
--   indicates whether you want to add it to a <tt>Rule</tt> or delete it
--   from a <tt>Rule</tt> .
--   
--   <i>See:</i> <a>ruleUpdate</a> smart constructor.
data RuleUpdate

-- | Creates a value of <a>RuleUpdate</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ruAction</a> - Specify <tt>INSERT</tt> to add a
--   <tt>Predicate</tt> to a <tt>Rule</tt> . Use <tt>DELETE</tt> to remove
--   a <tt>Predicate</tt> from a <tt>Rule</tt> .</li>
--   <li><a>ruPredicate</a> - The ID of the <tt>Predicate</tt> (such as an
--   <tt>IPSet</tt> ) that you want to add to a <tt>Rule</tt> .</li>
--   </ul>
ruleUpdate :: ChangeAction -> Predicate -> RuleUpdate

-- | Specify <tt>INSERT</tt> to add a <tt>Predicate</tt> to a <tt>Rule</tt>
--   . Use <tt>DELETE</tt> to remove a <tt>Predicate</tt> from a
--   <tt>Rule</tt> .
ruAction :: Lens' RuleUpdate ChangeAction

-- | The ID of the <tt>Predicate</tt> (such as an <tt>IPSet</tt> ) that you
--   want to add to a <tt>Rule</tt> .
ruPredicate :: Lens' RuleUpdate Predicate

-- | The response from a <tt>GetSampledRequests</tt> request includes a
--   <tt>SampledHTTPRequests</tt> complex type that appears as
--   <tt>SampledRequests</tt> in the response syntax.
--   <tt>SampledHTTPRequests</tt> contains one <tt>SampledHTTPRequest</tt>
--   object for each web request that is returned by
--   <tt>GetSampledRequests</tt> .
--   
--   <i>See:</i> <a>sampledHTTPRequest</a> smart constructor.
data SampledHTTPRequest

-- | Creates a value of <a>SampledHTTPRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>shttprRuleWithinRuleGroup</a> - This value is returned if the
--   <tt>GetSampledRequests</tt> request specifies the ID of a
--   <tt>RuleGroup</tt> rather than the ID of an individual rule.
--   <tt>RuleWithinRuleGroup</tt> is the rule within the specified
--   <tt>RuleGroup</tt> that matched the request listed in the
--   response.</li>
--   <li><a>shttprAction</a> - The action for the <tt>Rule</tt> that the
--   request matched: <tt>ALLOW</tt> , <tt>BLOCK</tt> , or <tt>COUNT</tt>
--   .</li>
--   <li><a>shttprTimestamp</a> - The time at which AWS WAF received the
--   request from your AWS resource, in Unix time format (in seconds).</li>
--   <li><a>shttprRequest</a> - A complex type that contains detailed
--   information about the request.</li>
--   <li><a>shttprWeight</a> - A value that indicates how one result in the
--   response relates proportionally to other results in the response. A
--   result that has a weight of <tt>2</tt> represents roughly twice as
--   many CloudFront web requests as a result that has a weight of
--   <tt>1</tt> .</li>
--   </ul>
sampledHTTPRequest :: HTTPRequest -> Natural -> SampledHTTPRequest

-- | This value is returned if the <tt>GetSampledRequests</tt> request
--   specifies the ID of a <tt>RuleGroup</tt> rather than the ID of an
--   individual rule. <tt>RuleWithinRuleGroup</tt> is the rule within the
--   specified <tt>RuleGroup</tt> that matched the request listed in the
--   response.
shttprRuleWithinRuleGroup :: Lens' SampledHTTPRequest (Maybe Text)

-- | The action for the <tt>Rule</tt> that the request matched:
--   <tt>ALLOW</tt> , <tt>BLOCK</tt> , or <tt>COUNT</tt> .
shttprAction :: Lens' SampledHTTPRequest (Maybe Text)

-- | The time at which AWS WAF received the request from your AWS resource,
--   in Unix time format (in seconds).
shttprTimestamp :: Lens' SampledHTTPRequest (Maybe UTCTime)

-- | A complex type that contains detailed information about the request.
shttprRequest :: Lens' SampledHTTPRequest HTTPRequest

-- | A value that indicates how one result in the response relates
--   proportionally to other results in the response. A result that has a
--   weight of <tt>2</tt> represents roughly twice as many CloudFront web
--   requests as a result that has a weight of <tt>1</tt> .
shttprWeight :: Lens' SampledHTTPRequest Natural

-- | Specifies a constraint on the size of a part of the web request. AWS
--   WAF uses the <tt>Size</tt> , <tt>ComparisonOperator</tt> , and
--   <tt>FieldToMatch</tt> to build an expression in the form of
--   "<tt>Size</tt> <tt>ComparisonOperator</tt> size in bytes of
--   <tt>FieldToMatch</tt> ". If that expression is true, the
--   <tt>SizeConstraint</tt> is considered to match.
--   
--   <i>See:</i> <a>sizeConstraint</a> smart constructor.
data SizeConstraint

-- | Creates a value of <a>SizeConstraint</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scFieldToMatch</a> - Specifies where in a web request to look
--   for the size constraint.</li>
--   <li><a>scTextTransformation</a> - Text transformations eliminate some
--   of the unusual formatting that attackers use in web requests in an
--   effort to bypass AWS WAF. If you specify a transformation, AWS WAF
--   performs the transformation on <tt>FieldToMatch</tt> before inspecting
--   a request for a match. Note that if you choose <tt>BODY</tt> for the
--   value of <tt>Type</tt> , you must choose <tt>NONE</tt> for
--   <tt>TextTransformation</tt> because CloudFront forwards only the first
--   8192 bytes for inspection. <b>NONE</b> Specify <tt>NONE</tt> if you
--   don't want to perform any text transformations. <b>CMD_LINE</b> When
--   you're concerned that attackers are injecting an operating system
--   command line command and using unusual formatting to disguise some or
--   all of the command, use this option to perform the following
--   transformations: * Delete the following characters: " ' ^ * Delete
--   spaces before the following characters: / ( * Replace the following
--   characters with a space: , ; * Replace multiple spaces with one space
--   * Convert uppercase letters (A-Z) to lowercase (a-z)
--   <b>COMPRESS_WHITE_SPACE</b> Use this option to replace the following
--   characters with a space character (decimal 32): * f, formfeed, decimal
--   12 * t, tab, decimal 9 * n, newline, decimal 10 * r, carriage return,
--   decimal 13 * v, vertical tab, decimal 11 * non-breaking space, decimal
--   160 <tt>COMPRESS_WHITE_SPACE</tt> also replaces multiple spaces with
--   one space. <b>HTML_ENTITY_DECODE</b> Use this option to replace
--   HTML-encoded characters with unencoded characters.
--   <tt>HTML_ENTITY_DECODE</tt> performs the following operations: *
--   Replaces <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value.</li>
--   <li><a>scComparisonOperator</a> - The type of comparison you want AWS
--   WAF to perform. AWS WAF uses this in combination with the provided
--   <tt>Size</tt> and <tt>FieldToMatch</tt> to build an expression in the
--   form of "<tt>Size</tt> <tt>ComparisonOperator</tt> size in bytes of
--   <tt>FieldToMatch</tt> ". If that expression is true, the
--   <tt>SizeConstraint</tt> is considered to match. <b>EQ</b> : Used to
--   test if the <tt>Size</tt> is equal to the size of the
--   <tt>FieldToMatch</tt> <b>NE</b> : Used to test if the <tt>Size</tt> is
--   not equal to the size of the <tt>FieldToMatch</tt> <b>LE</b> : Used to
--   test if the <tt>Size</tt> is less than or equal to the size of the
--   <tt>FieldToMatch</tt> <b>LT</b> : Used to test if the <tt>Size</tt> is
--   strictly less than the size of the <tt>FieldToMatch</tt> <b>GE</b> :
--   Used to test if the <tt>Size</tt> is greater than or equal to the size
--   of the <tt>FieldToMatch</tt> <b>GT</b> : Used to test if the
--   <tt>Size</tt> is strictly greater than the size of the
--   <tt>FieldToMatch</tt></li>
--   <li><a>scSize</a> - The size in bytes that you want AWS WAF to compare
--   against the size of the specified <tt>FieldToMatch</tt> . AWS WAF uses
--   this in combination with <tt>ComparisonOperator</tt> and
--   <tt>FieldToMatch</tt> to build an expression in the form of
--   "<tt>Size</tt> <tt>ComparisonOperator</tt> size in bytes of
--   <tt>FieldToMatch</tt> ". If that expression is true, the
--   <tt>SizeConstraint</tt> is considered to match. Valid values for size
--   are 0 - 21474836480 bytes (0 - 20 GB). If you specify <tt>URI</tt> for
--   the value of <tt>Type</tt> , the <i> in the URI counts as one
--   character. For example, the URI @</i>logo.jpg@ is nine characters
--   long.</li>
--   </ul>
sizeConstraint :: FieldToMatch -> TextTransformation -> ComparisonOperator -> Natural -> SizeConstraint

-- | Specifies where in a web request to look for the size constraint.
scFieldToMatch :: Lens' SizeConstraint FieldToMatch

-- | Text transformations eliminate some of the unusual formatting that
--   attackers use in web requests in an effort to bypass AWS WAF. If you
--   specify a transformation, AWS WAF performs the transformation on
--   <tt>FieldToMatch</tt> before inspecting a request for a match. Note
--   that if you choose <tt>BODY</tt> for the value of <tt>Type</tt> , you
--   must choose <tt>NONE</tt> for <tt>TextTransformation</tt> because
--   CloudFront forwards only the first 8192 bytes for inspection.
--   <b>NONE</b> Specify <tt>NONE</tt> if you don't want to perform any
--   text transformations. <b>CMD_LINE</b> When you're concerned that
--   attackers are injecting an operating system command line command and
--   using unusual formatting to disguise some or all of the command, use
--   this option to perform the following transformations: * Delete the
--   following characters: " ' ^ * Delete spaces before the following
--   characters: / ( * Replace the following characters with a space: , ; *
--   Replace multiple spaces with one space * Convert uppercase letters
--   (A-Z) to lowercase (a-z) <b>COMPRESS_WHITE_SPACE</b> Use this option
--   to replace the following characters with a space character (decimal
--   32): * f, formfeed, decimal 12 * t, tab, decimal 9 * n, newline,
--   decimal 10 * r, carriage return, decimal 13 * v, vertical tab, decimal
--   11 * non-breaking space, decimal 160 <tt>COMPRESS_WHITE_SPACE</tt>
--   also replaces multiple spaces with one space.
--   <b>HTML_ENTITY_DECODE</b> Use this option to replace HTML-encoded
--   characters with unencoded characters. <tt>HTML_ENTITY_DECODE</tt>
--   performs the following operations: * Replaces
--   <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value.
scTextTransformation :: Lens' SizeConstraint TextTransformation

-- | The type of comparison you want AWS WAF to perform. AWS WAF uses this
--   in combination with the provided <tt>Size</tt> and
--   <tt>FieldToMatch</tt> to build an expression in the form of
--   "<tt>Size</tt> <tt>ComparisonOperator</tt> size in bytes of
--   <tt>FieldToMatch</tt> ". If that expression is true, the
--   <tt>SizeConstraint</tt> is considered to match. <b>EQ</b> : Used to
--   test if the <tt>Size</tt> is equal to the size of the
--   <tt>FieldToMatch</tt> <b>NE</b> : Used to test if the <tt>Size</tt> is
--   not equal to the size of the <tt>FieldToMatch</tt> <b>LE</b> : Used to
--   test if the <tt>Size</tt> is less than or equal to the size of the
--   <tt>FieldToMatch</tt> <b>LT</b> : Used to test if the <tt>Size</tt> is
--   strictly less than the size of the <tt>FieldToMatch</tt> <b>GE</b> :
--   Used to test if the <tt>Size</tt> is greater than or equal to the size
--   of the <tt>FieldToMatch</tt> <b>GT</b> : Used to test if the
--   <tt>Size</tt> is strictly greater than the size of the
--   <tt>FieldToMatch</tt>
scComparisonOperator :: Lens' SizeConstraint ComparisonOperator

-- | The size in bytes that you want AWS WAF to compare against the size of
--   the specified <tt>FieldToMatch</tt> . AWS WAF uses this in combination
--   with <tt>ComparisonOperator</tt> and <tt>FieldToMatch</tt> to build an
--   expression in the form of "<tt>Size</tt> <tt>ComparisonOperator</tt>
--   size in bytes of <tt>FieldToMatch</tt> ". If that expression is true,
--   the <tt>SizeConstraint</tt> is considered to match. Valid values for
--   size are 0 - 21474836480 bytes (0 - 20 GB). If you specify
--   <tt>URI</tt> for the value of <tt>Type</tt> , the <i> in the URI
--   counts as one character. For example, the URI @</i>logo.jpg@ is nine
--   characters long.
scSize :: Lens' SizeConstraint Natural

-- | A complex type that contains <tt>SizeConstraint</tt> objects, which
--   specify the parts of web requests that you want AWS WAF to inspect the
--   size of. If a <tt>SizeConstraintSet</tt> contains more than one
--   <tt>SizeConstraint</tt> object, a request only needs to match one
--   constraint to be considered a match.
--   
--   <i>See:</i> <a>sizeConstraintSet</a> smart constructor.
data SizeConstraintSet

-- | Creates a value of <a>SizeConstraintSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scsName</a> - The name, if any, of the
--   <tt>SizeConstraintSet</tt> .</li>
--   <li><a>scsSizeConstraintSetId</a> - A unique identifier for a
--   <tt>SizeConstraintSet</tt> . You use <tt>SizeConstraintSetId</tt> to
--   get information about a <tt>SizeConstraintSet</tt> (see
--   <tt>GetSizeConstraintSet</tt> ), update a <tt>SizeConstraintSet</tt>
--   (see <tt>UpdateSizeConstraintSet</tt> ), insert a
--   <tt>SizeConstraintSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SizeConstraintSet</tt> from AWS WAF (see
--   <tt>DeleteSizeConstraintSet</tt> ). <tt>SizeConstraintSetId</tt> is
--   returned by <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .</li>
--   <li><a>scsSizeConstraints</a> - Specifies the parts of web requests
--   that you want to inspect the size of.</li>
--   </ul>
sizeConstraintSet :: Text -> SizeConstraintSet

-- | The name, if any, of the <tt>SizeConstraintSet</tt> .
scsName :: Lens' SizeConstraintSet (Maybe Text)

-- | A unique identifier for a <tt>SizeConstraintSet</tt> . You use
--   <tt>SizeConstraintSetId</tt> to get information about a
--   <tt>SizeConstraintSet</tt> (see <tt>GetSizeConstraintSet</tt> ),
--   update a <tt>SizeConstraintSet</tt> (see
--   <tt>UpdateSizeConstraintSet</tt> ), insert a
--   <tt>SizeConstraintSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SizeConstraintSet</tt> from AWS WAF (see
--   <tt>DeleteSizeConstraintSet</tt> ). <tt>SizeConstraintSetId</tt> is
--   returned by <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .
scsSizeConstraintSetId :: Lens' SizeConstraintSet Text

-- | Specifies the parts of web requests that you want to inspect the size
--   of.
scsSizeConstraints :: Lens' SizeConstraintSet [SizeConstraint]

-- | The <tt>Id</tt> and <tt>Name</tt> of a <tt>SizeConstraintSet</tt> .
--   
--   <i>See:</i> <a>sizeConstraintSetSummary</a> smart constructor.
data SizeConstraintSetSummary

-- | Creates a value of <a>SizeConstraintSetSummary</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scssSizeConstraintSetId</a> - A unique identifier for a
--   <tt>SizeConstraintSet</tt> . You use <tt>SizeConstraintSetId</tt> to
--   get information about a <tt>SizeConstraintSet</tt> (see
--   <tt>GetSizeConstraintSet</tt> ), update a <tt>SizeConstraintSet</tt>
--   (see <tt>UpdateSizeConstraintSet</tt> ), insert a
--   <tt>SizeConstraintSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SizeConstraintSet</tt> from AWS WAF (see
--   <tt>DeleteSizeConstraintSet</tt> ). <tt>SizeConstraintSetId</tt> is
--   returned by <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .</li>
--   <li><a>scssName</a> - The name of the <tt>SizeConstraintSet</tt> , if
--   any.</li>
--   </ul>
sizeConstraintSetSummary :: Text -> Text -> SizeConstraintSetSummary

-- | A unique identifier for a <tt>SizeConstraintSet</tt> . You use
--   <tt>SizeConstraintSetId</tt> to get information about a
--   <tt>SizeConstraintSet</tt> (see <tt>GetSizeConstraintSet</tt> ),
--   update a <tt>SizeConstraintSet</tt> (see
--   <tt>UpdateSizeConstraintSet</tt> ), insert a
--   <tt>SizeConstraintSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SizeConstraintSet</tt> from AWS WAF (see
--   <tt>DeleteSizeConstraintSet</tt> ). <tt>SizeConstraintSetId</tt> is
--   returned by <tt>CreateSizeConstraintSet</tt> and by
--   <tt>ListSizeConstraintSets</tt> .
scssSizeConstraintSetId :: Lens' SizeConstraintSetSummary Text

-- | The name of the <tt>SizeConstraintSet</tt> , if any.
scssName :: Lens' SizeConstraintSetSummary Text

-- | Specifies the part of a web request that you want to inspect the size
--   of and indicates whether you want to add the specification to a
--   <a>SizeConstraintSet</a> or delete it from a
--   <tt>SizeConstraintSet</tt> .
--   
--   <i>See:</i> <a>sizeConstraintSetUpdate</a> smart constructor.
data SizeConstraintSetUpdate

-- | Creates a value of <a>SizeConstraintSetUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scsuAction</a> - Specify <tt>INSERT</tt> to add a
--   <a>SizeConstraintSetUpdate</a> to a <a>SizeConstraintSet</a> . Use
--   <tt>DELETE</tt> to remove a <tt>SizeConstraintSetUpdate</tt> from a
--   <tt>SizeConstraintSet</tt> .</li>
--   <li><a>scsuSizeConstraint</a> - Specifies a constraint on the size of
--   a part of the web request. AWS WAF uses the <tt>Size</tt> ,
--   <tt>ComparisonOperator</tt> , and <tt>FieldToMatch</tt> to build an
--   expression in the form of "<tt>Size</tt> <tt>ComparisonOperator</tt>
--   size in bytes of <tt>FieldToMatch</tt> ". If that expression is true,
--   the <tt>SizeConstraint</tt> is considered to match.</li>
--   </ul>
sizeConstraintSetUpdate :: ChangeAction -> SizeConstraint -> SizeConstraintSetUpdate

-- | Specify <tt>INSERT</tt> to add a <a>SizeConstraintSetUpdate</a> to a
--   <a>SizeConstraintSet</a> . Use <tt>DELETE</tt> to remove a
--   <tt>SizeConstraintSetUpdate</tt> from a <tt>SizeConstraintSet</tt> .
scsuAction :: Lens' SizeConstraintSetUpdate ChangeAction

-- | Specifies a constraint on the size of a part of the web request. AWS
--   WAF uses the <tt>Size</tt> , <tt>ComparisonOperator</tt> , and
--   <tt>FieldToMatch</tt> to build an expression in the form of
--   "<tt>Size</tt> <tt>ComparisonOperator</tt> size in bytes of
--   <tt>FieldToMatch</tt> ". If that expression is true, the
--   <tt>SizeConstraint</tt> is considered to match.
scsuSizeConstraint :: Lens' SizeConstraintSetUpdate SizeConstraint

-- | A complex type that contains <tt>SqlInjectionMatchTuple</tt> objects,
--   which specify the parts of web requests that you want AWS WAF to
--   inspect for snippets of malicious SQL code and, if you want AWS WAF to
--   inspect a header, the name of the header. If a
--   <tt>SqlInjectionMatchSet</tt> contains more than one
--   <tt>SqlInjectionMatchTuple</tt> object, a request needs to include
--   snippets of SQL code in only one of the specified parts of the request
--   to be considered a match.
--   
--   <i>See:</i> <a>sqlInjectionMatchSet</a> smart constructor.
data SqlInjectionMatchSet

-- | Creates a value of <a>SqlInjectionMatchSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>simsName</a> - The name, if any, of the
--   <tt>SqlInjectionMatchSet</tt> .</li>
--   <li><a>simsSqlInjectionMatchSetId</a> - A unique identifier for a
--   <tt>SqlInjectionMatchSet</tt> . You use
--   <tt>SqlInjectionMatchSetId</tt> to get information about a
--   <tt>SqlInjectionMatchSet</tt> (see <tt>GetSqlInjectionMatchSet</tt> ),
--   update a <tt>SqlInjectionMatchSet</tt> (see
--   <tt>UpdateSqlInjectionMatchSet</tt> ), insert a
--   <tt>SqlInjectionMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SqlInjectionMatchSet</tt> from AWS WAF (see
--   <tt>DeleteSqlInjectionMatchSet</tt> ). <tt>SqlInjectionMatchSetId</tt>
--   is returned by <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .</li>
--   <li><a>simsSqlInjectionMatchTuples</a> - Specifies the parts of web
--   requests that you want to inspect for snippets of malicious SQL
--   code.</li>
--   </ul>
sqlInjectionMatchSet :: Text -> SqlInjectionMatchSet

-- | The name, if any, of the <tt>SqlInjectionMatchSet</tt> .
simsName :: Lens' SqlInjectionMatchSet (Maybe Text)

-- | A unique identifier for a <tt>SqlInjectionMatchSet</tt> . You use
--   <tt>SqlInjectionMatchSetId</tt> to get information about a
--   <tt>SqlInjectionMatchSet</tt> (see <tt>GetSqlInjectionMatchSet</tt> ),
--   update a <tt>SqlInjectionMatchSet</tt> (see
--   <tt>UpdateSqlInjectionMatchSet</tt> ), insert a
--   <tt>SqlInjectionMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SqlInjectionMatchSet</tt> from AWS WAF (see
--   <tt>DeleteSqlInjectionMatchSet</tt> ). <tt>SqlInjectionMatchSetId</tt>
--   is returned by <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .
simsSqlInjectionMatchSetId :: Lens' SqlInjectionMatchSet Text

-- | Specifies the parts of web requests that you want to inspect for
--   snippets of malicious SQL code.
simsSqlInjectionMatchTuples :: Lens' SqlInjectionMatchSet [SqlInjectionMatchTuple]

-- | The <tt>Id</tt> and <tt>Name</tt> of a <tt>SqlInjectionMatchSet</tt> .
--   
--   <i>See:</i> <a>sqlInjectionMatchSetSummary</a> smart constructor.
data SqlInjectionMatchSetSummary

-- | Creates a value of <a>SqlInjectionMatchSetSummary</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>simssSqlInjectionMatchSetId</a> - A unique identifier for a
--   <tt>SqlInjectionMatchSet</tt> . You use
--   <tt>SqlInjectionMatchSetId</tt> to get information about a
--   <tt>SqlInjectionMatchSet</tt> (see <tt>GetSqlInjectionMatchSet</tt> ),
--   update a <tt>SqlInjectionMatchSet</tt> (see
--   <tt>UpdateSqlInjectionMatchSet</tt> ), insert a
--   <tt>SqlInjectionMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SqlInjectionMatchSet</tt> from AWS WAF (see
--   <tt>DeleteSqlInjectionMatchSet</tt> ). <tt>SqlInjectionMatchSetId</tt>
--   is returned by <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .</li>
--   <li><a>simssName</a> - The name of the <tt>SqlInjectionMatchSet</tt> ,
--   if any, specified by <tt>Id</tt> .</li>
--   </ul>
sqlInjectionMatchSetSummary :: Text -> Text -> SqlInjectionMatchSetSummary

-- | A unique identifier for a <tt>SqlInjectionMatchSet</tt> . You use
--   <tt>SqlInjectionMatchSetId</tt> to get information about a
--   <tt>SqlInjectionMatchSet</tt> (see <tt>GetSqlInjectionMatchSet</tt> ),
--   update a <tt>SqlInjectionMatchSet</tt> (see
--   <tt>UpdateSqlInjectionMatchSet</tt> ), insert a
--   <tt>SqlInjectionMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete a
--   <tt>SqlInjectionMatchSet</tt> from AWS WAF (see
--   <tt>DeleteSqlInjectionMatchSet</tt> ). <tt>SqlInjectionMatchSetId</tt>
--   is returned by <tt>CreateSqlInjectionMatchSet</tt> and by
--   <tt>ListSqlInjectionMatchSets</tt> .
simssSqlInjectionMatchSetId :: Lens' SqlInjectionMatchSetSummary Text

-- | The name of the <tt>SqlInjectionMatchSet</tt> , if any, specified by
--   <tt>Id</tt> .
simssName :: Lens' SqlInjectionMatchSetSummary Text

-- | Specifies the part of a web request that you want to inspect for
--   snippets of malicious SQL code and indicates whether you want to add
--   the specification to a <a>SqlInjectionMatchSet</a> or delete it from a
--   <tt>SqlInjectionMatchSet</tt> .
--   
--   <i>See:</i> <a>sqlInjectionMatchSetUpdate</a> smart constructor.
data SqlInjectionMatchSetUpdate

-- | Creates a value of <a>SqlInjectionMatchSetUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>simsuAction</a> - Specify <tt>INSERT</tt> to add a
--   <a>SqlInjectionMatchSetUpdate</a> to a <a>SqlInjectionMatchSet</a> .
--   Use <tt>DELETE</tt> to remove a <tt>SqlInjectionMatchSetUpdate</tt>
--   from a <tt>SqlInjectionMatchSet</tt> .</li>
--   <li><a>simsuSqlInjectionMatchTuple</a> - Specifies the part of a web
--   request that you want AWS WAF to inspect for snippets of malicious SQL
--   code and, if you want AWS WAF to inspect a header, the name of the
--   header.</li>
--   </ul>
sqlInjectionMatchSetUpdate :: ChangeAction -> SqlInjectionMatchTuple -> SqlInjectionMatchSetUpdate

-- | Specify <tt>INSERT</tt> to add a <a>SqlInjectionMatchSetUpdate</a> to
--   a <a>SqlInjectionMatchSet</a> . Use <tt>DELETE</tt> to remove a
--   <tt>SqlInjectionMatchSetUpdate</tt> from a
--   <tt>SqlInjectionMatchSet</tt> .
simsuAction :: Lens' SqlInjectionMatchSetUpdate ChangeAction

-- | Specifies the part of a web request that you want AWS WAF to inspect
--   for snippets of malicious SQL code and, if you want AWS WAF to inspect
--   a header, the name of the header.
simsuSqlInjectionMatchTuple :: Lens' SqlInjectionMatchSetUpdate SqlInjectionMatchTuple

-- | Specifies the part of a web request that you want AWS WAF to inspect
--   for snippets of malicious SQL code and, if you want AWS WAF to inspect
--   a header, the name of the header.
--   
--   <i>See:</i> <a>sqlInjectionMatchTuple</a> smart constructor.
data SqlInjectionMatchTuple

-- | Creates a value of <a>SqlInjectionMatchTuple</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>simtFieldToMatch</a> - Specifies where in a web request to look
--   for snippets of malicious SQL code.</li>
--   <li><a>simtTextTransformation</a> - Text transformations eliminate
--   some of the unusual formatting that attackers use in web requests in
--   an effort to bypass AWS WAF. If you specify a transformation, AWS WAF
--   performs the transformation on <tt>FieldToMatch</tt> before inspecting
--   a request for a match. <b>CMD_LINE</b> When you're concerned that
--   attackers are injecting an operating system commandline command and
--   using unusual formatting to disguise some or all of the command, use
--   this option to perform the following transformations: * Delete the
--   following characters: " ' ^ * Delete spaces before the following
--   characters: / ( * Replace the following characters with a space: , ; *
--   Replace multiple spaces with one space * Convert uppercase letters
--   (A-Z) to lowercase (a-z) <b>COMPRESS_WHITE_SPACE</b> Use this option
--   to replace the following characters with a space character (decimal
--   32): * f, formfeed, decimal 12 * t, tab, decimal 9 * n, newline,
--   decimal 10 * r, carriage return, decimal 13 * v, vertical tab, decimal
--   11 * non-breaking space, decimal 160 <tt>COMPRESS_WHITE_SPACE</tt>
--   also replaces multiple spaces with one space.
--   <b>HTML_ENTITY_DECODE</b> Use this option to replace HTML-encoded
--   characters with unencoded characters. <tt>HTML_ENTITY_DECODE</tt>
--   performs the following operations: * Replaces
--   <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text
--   transformations.</li>
--   </ul>
sqlInjectionMatchTuple :: FieldToMatch -> TextTransformation -> SqlInjectionMatchTuple

-- | Specifies where in a web request to look for snippets of malicious SQL
--   code.
simtFieldToMatch :: Lens' SqlInjectionMatchTuple FieldToMatch

-- | Text transformations eliminate some of the unusual formatting that
--   attackers use in web requests in an effort to bypass AWS WAF. If you
--   specify a transformation, AWS WAF performs the transformation on
--   <tt>FieldToMatch</tt> before inspecting a request for a match.
--   <b>CMD_LINE</b> When you're concerned that attackers are injecting an
--   operating system commandline command and using unusual formatting to
--   disguise some or all of the command, use this option to perform the
--   following transformations: * Delete the following characters: " ' ^ *
--   Delete spaces before the following characters: / ( * Replace the
--   following characters with a space: , ; * Replace multiple spaces with
--   one space * Convert uppercase letters (A-Z) to lowercase (a-z)
--   <b>COMPRESS_WHITE_SPACE</b> Use this option to replace the following
--   characters with a space character (decimal 32): * f, formfeed, decimal
--   12 * t, tab, decimal 9 * n, newline, decimal 10 * r, carriage return,
--   decimal 13 * v, vertical tab, decimal 11 * non-breaking space, decimal
--   160 <tt>COMPRESS_WHITE_SPACE</tt> also replaces multiple spaces with
--   one space. <b>HTML_ENTITY_DECODE</b> Use this option to replace
--   HTML-encoded characters with unencoded characters.
--   <tt>HTML_ENTITY_DECODE</tt> performs the following operations: *
--   Replaces <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text transformations.
simtTextTransformation :: Lens' SqlInjectionMatchTuple TextTransformation

-- | A summary of the rule groups you are subscribed to.
--   
--   <i>See:</i> <a>subscribedRuleGroupSummary</a> smart constructor.
data SubscribedRuleGroupSummary

-- | Creates a value of <a>SubscribedRuleGroupSummary</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srgsRuleGroupId</a> - A unique identifier for a
--   <tt>RuleGroup</tt> .</li>
--   <li><a>srgsName</a> - A friendly name or description of the
--   <tt>RuleGroup</tt> . You can't change the name of a <tt>RuleGroup</tt>
--   after you create it.</li>
--   <li><a>srgsMetricName</a> - A friendly name or description for the
--   metrics for this <tt>RuleGroup</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change the name of the metric after you create
--   the <tt>RuleGroup</tt> .</li>
--   </ul>
subscribedRuleGroupSummary :: Text -> Text -> Text -> SubscribedRuleGroupSummary

-- | A unique identifier for a <tt>RuleGroup</tt> .
srgsRuleGroupId :: Lens' SubscribedRuleGroupSummary Text

-- | A friendly name or description of the <tt>RuleGroup</tt> . You can't
--   change the name of a <tt>RuleGroup</tt> after you create it.
srgsName :: Lens' SubscribedRuleGroupSummary Text

-- | A friendly name or description for the metrics for this
--   <tt>RuleGroup</tt> . The name can contain only alphanumeric characters
--   (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change
--   the name of the metric after you create the <tt>RuleGroup</tt> .
srgsMetricName :: Lens' SubscribedRuleGroupSummary Text

-- | In a <tt>GetSampledRequests</tt> request, the <tt>StartTime</tt> and
--   <tt>EndTime</tt> objects specify the time range for which you want AWS
--   WAF to return a sample of web requests.
--   
--   In a <tt>GetSampledRequests</tt> response, the <tt>StartTime</tt> and
--   <tt>EndTime</tt> objects specify the time range for which AWS WAF
--   actually returned a sample of web requests. AWS WAF gets the specified
--   number of requests from among the first 5,000 requests that your AWS
--   resource receives during the specified time period. If your resource
--   receives more than 5,000 requests during that period, AWS WAF stops
--   sampling after the 5,000th request. In that case, <tt>EndTime</tt> is
--   the time that AWS WAF received the 5,000th request.
--   
--   <i>See:</i> <a>timeWindow</a> smart constructor.
data TimeWindow

-- | Creates a value of <a>TimeWindow</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>twStartTime</a> - The beginning of the time range from which
--   you want <tt>GetSampledRequests</tt> to return a sample of the
--   requests that your AWS resource received. Specify the date and time in
--   the following format: <tt>"2016-09-27T14:50Z"</tt> . You can specify
--   any time range in the previous three hours.</li>
--   <li><a>twEndTime</a> - The end of the time range from which you want
--   <tt>GetSampledRequests</tt> to return a sample of the requests that
--   your AWS resource received. Specify the date and time in the following
--   format: <tt>"2016-09-27T14:50Z"</tt> . You can specify any time range
--   in the previous three hours.</li>
--   </ul>
timeWindow :: UTCTime -> UTCTime -> TimeWindow

-- | The beginning of the time range from which you want
--   <tt>GetSampledRequests</tt> to return a sample of the requests that
--   your AWS resource received. Specify the date and time in the following
--   format: <tt>"2016-09-27T14:50Z"</tt> . You can specify any time range
--   in the previous three hours.
twStartTime :: Lens' TimeWindow UTCTime

-- | The end of the time range from which you want
--   <tt>GetSampledRequests</tt> to return a sample of the requests that
--   your AWS resource received. Specify the date and time in the following
--   format: <tt>"2016-09-27T14:50Z"</tt> . You can specify any time range
--   in the previous three hours.
twEndTime :: Lens' TimeWindow UTCTime

-- | For the action that is associated with a rule in a <tt>WebACL</tt> ,
--   specifies the action that you want AWS WAF to perform when a web
--   request matches all of the conditions in a rule. For the default
--   action in a <tt>WebACL</tt> , specifies the action that you want AWS
--   WAF to take when a web request doesn't match all of the conditions in
--   any of the rules in a <tt>WebACL</tt> .
--   
--   <i>See:</i> <a>wafAction</a> smart constructor.
data WafAction

-- | Creates a value of <a>WafAction</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>waType</a> - Specifies how you want AWS WAF to respond to
--   requests that match the settings in a <tt>Rule</tt> . Valid settings
--   include the following: * <tt>ALLOW</tt> : AWS WAF allows requests *
--   <tt>BLOCK</tt> : AWS WAF blocks requests * <tt>COUNT</tt> : AWS WAF
--   increments a counter of the requests that match all of the conditions
--   in the rule. AWS WAF then continues to inspect the web request based
--   on the remaining rules in the web ACL. You can't specify
--   <tt>COUNT</tt> for the default action for a <tt>WebACL</tt> .</li>
--   </ul>
wafAction :: WafActionType -> WafAction

-- | Specifies how you want AWS WAF to respond to requests that match the
--   settings in a <tt>Rule</tt> . Valid settings include the following: *
--   <tt>ALLOW</tt> : AWS WAF allows requests * <tt>BLOCK</tt> : AWS WAF
--   blocks requests * <tt>COUNT</tt> : AWS WAF increments a counter of the
--   requests that match all of the conditions in the rule. AWS WAF then
--   continues to inspect the web request based on the remaining rules in
--   the web ACL. You can't specify <tt>COUNT</tt> for the default action
--   for a <tt>WebACL</tt> .
waType :: Lens' WafAction WafActionType

-- | The action to take if any rule within the <tt>RuleGroup</tt> matches a
--   request.
--   
--   <i>See:</i> <a>wafOverrideAction</a> smart constructor.
data WafOverrideAction

-- | Creates a value of <a>WafOverrideAction</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>woaType</a> - <tt>COUNT</tt> overrides the action specified by
--   the individual rule within a <tt>RuleGroup</tt> . If set to
--   <tt>NONE</tt> , the rule's action will take place.</li>
--   </ul>
wafOverrideAction :: WafOverrideActionType -> WafOverrideAction

-- | <tt>COUNT</tt> overrides the action specified by the individual rule
--   within a <tt>RuleGroup</tt> . If set to <tt>NONE</tt> , the rule's
--   action will take place.
woaType :: Lens' WafOverrideAction WafOverrideActionType

-- | Contains the <tt>Rules</tt> that identify the requests that you want
--   to allow, block, or count. In a <tt>WebACL</tt> , you also specify a
--   default action (<tt>ALLOW</tt> or <tt>BLOCK</tt> ), and the action for
--   each <tt>Rule</tt> that you add to a <tt>WebACL</tt> , for example,
--   block requests from specified IP addresses or block requests from
--   specified referrers. You also associate the <tt>WebACL</tt> with a
--   CloudFront distribution to identify the requests that you want AWS WAF
--   to filter. If you add more than one <tt>Rule</tt> to a <tt>WebACL</tt>
--   , a request needs to match only one of the specifications to be
--   allowed, blocked, or counted. For more information, see
--   <tt>UpdateWebACL</tt> .
--   
--   <i>See:</i> <a>webACL</a> smart constructor.
data WebACL

-- | Creates a value of <a>WebACL</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>waMetricName</a> - A friendly name or description for the
--   metrics for this <tt>WebACL</tt> . The name can contain only
--   alphanumeric characters (A-Z, a-z, 0-9); the name can't contain
--   whitespace. You can't change <tt>MetricName</tt> after you create the
--   <tt>WebACL</tt> .</li>
--   <li><a>waName</a> - A friendly name or description of the
--   <tt>WebACL</tt> . You can't change the name of a <tt>WebACL</tt> after
--   you create it.</li>
--   <li><a>waWebACLId</a> - A unique identifier for a <tt>WebACL</tt> .
--   You use <tt>WebACLId</tt> to get information about a <tt>WebACL</tt>
--   (see <tt>GetWebACL</tt> ), update a <tt>WebACL</tt> (see
--   <tt>UpdateWebACL</tt> ), and delete a <tt>WebACL</tt> from AWS WAF
--   (see <tt>DeleteWebACL</tt> ). <tt>WebACLId</tt> is returned by
--   <tt>CreateWebACL</tt> and by <tt>ListWebACLs</tt> .</li>
--   <li><a>waDefaultAction</a> - The action to perform if none of the
--   <tt>Rules</tt> contained in the <tt>WebACL</tt> match. The action is
--   specified by the <a>WafAction</a> object.</li>
--   <li><a>waRules</a> - An array that contains the action for each
--   <tt>Rule</tt> in a <tt>WebACL</tt> , the priority of the <tt>Rule</tt>
--   , and the ID of the <tt>Rule</tt> .</li>
--   </ul>
webACL :: Text -> WafAction -> WebACL

-- | A friendly name or description for the metrics for this
--   <tt>WebACL</tt> . The name can contain only alphanumeric characters
--   (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change
--   <tt>MetricName</tt> after you create the <tt>WebACL</tt> .
waMetricName :: Lens' WebACL (Maybe Text)

-- | A friendly name or description of the <tt>WebACL</tt> . You can't
--   change the name of a <tt>WebACL</tt> after you create it.
waName :: Lens' WebACL (Maybe Text)

-- | A unique identifier for a <tt>WebACL</tt> . You use <tt>WebACLId</tt>
--   to get information about a <tt>WebACL</tt> (see <tt>GetWebACL</tt> ),
--   update a <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), and delete a
--   <tt>WebACL</tt> from AWS WAF (see <tt>DeleteWebACL</tt> ).
--   <tt>WebACLId</tt> is returned by <tt>CreateWebACL</tt> and by
--   <tt>ListWebACLs</tt> .
waWebACLId :: Lens' WebACL Text

-- | The action to perform if none of the <tt>Rules</tt> contained in the
--   <tt>WebACL</tt> match. The action is specified by the <a>WafAction</a>
--   object.
waDefaultAction :: Lens' WebACL WafAction

-- | An array that contains the action for each <tt>Rule</tt> in a
--   <tt>WebACL</tt> , the priority of the <tt>Rule</tt> , and the ID of
--   the <tt>Rule</tt> .
waRules :: Lens' WebACL [ActivatedRule]

-- | Contains the identifier and the name or description of the
--   <a>WebACL</a> .
--   
--   <i>See:</i> <a>webACLSummary</a> smart constructor.
data WebACLSummary

-- | Creates a value of <a>WebACLSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>wasWebACLId</a> - A unique identifier for a <tt>WebACL</tt> .
--   You use <tt>WebACLId</tt> to get information about a <tt>WebACL</tt>
--   (see <tt>GetWebACL</tt> ), update a <tt>WebACL</tt> (see
--   <tt>UpdateWebACL</tt> ), and delete a <tt>WebACL</tt> from AWS WAF
--   (see <tt>DeleteWebACL</tt> ). <tt>WebACLId</tt> is returned by
--   <tt>CreateWebACL</tt> and by <tt>ListWebACLs</tt> .</li>
--   <li><a>wasName</a> - A friendly name or description of the
--   <a>WebACL</a> . You can't change the name of a <tt>WebACL</tt> after
--   you create it.</li>
--   </ul>
webACLSummary :: Text -> Text -> WebACLSummary

-- | A unique identifier for a <tt>WebACL</tt> . You use <tt>WebACLId</tt>
--   to get information about a <tt>WebACL</tt> (see <tt>GetWebACL</tt> ),
--   update a <tt>WebACL</tt> (see <tt>UpdateWebACL</tt> ), and delete a
--   <tt>WebACL</tt> from AWS WAF (see <tt>DeleteWebACL</tt> ).
--   <tt>WebACLId</tt> is returned by <tt>CreateWebACL</tt> and by
--   <tt>ListWebACLs</tt> .
wasWebACLId :: Lens' WebACLSummary Text

-- | A friendly name or description of the <a>WebACL</a> . You can't change
--   the name of a <tt>WebACL</tt> after you create it.
wasName :: Lens' WebACLSummary Text

-- | Specifies whether to insert a <tt>Rule</tt> into or delete a
--   <tt>Rule</tt> from a <tt>WebACL</tt> .
--   
--   <i>See:</i> <a>webACLUpdate</a> smart constructor.
data WebACLUpdate

-- | Creates a value of <a>WebACLUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>wauAction</a> - Specifies whether to insert a <tt>Rule</tt>
--   into or delete a <tt>Rule</tt> from a <tt>WebACL</tt> .</li>
--   <li><a>wauActivatedRule</a> - The <tt>ActivatedRule</tt> object in an
--   <tt>UpdateWebACL</tt> request specifies a <tt>Rule</tt> that you want
--   to insert or delete, the priority of the <tt>Rule</tt> in the
--   <tt>WebACL</tt> , and the action that you want AWS WAF to take when a
--   web request matches the <tt>Rule</tt> (<tt>ALLOW</tt> , <tt>BLOCK</tt>
--   , or <tt>COUNT</tt> ).</li>
--   </ul>
webACLUpdate :: ChangeAction -> ActivatedRule -> WebACLUpdate

-- | Specifies whether to insert a <tt>Rule</tt> into or delete a
--   <tt>Rule</tt> from a <tt>WebACL</tt> .
wauAction :: Lens' WebACLUpdate ChangeAction

-- | The <tt>ActivatedRule</tt> object in an <tt>UpdateWebACL</tt> request
--   specifies a <tt>Rule</tt> that you want to insert or delete, the
--   priority of the <tt>Rule</tt> in the <tt>WebACL</tt> , and the action
--   that you want AWS WAF to take when a web request matches the
--   <tt>Rule</tt> (<tt>ALLOW</tt> , <tt>BLOCK</tt> , or <tt>COUNT</tt> ).
wauActivatedRule :: Lens' WebACLUpdate ActivatedRule

-- | A complex type that contains <tt>XssMatchTuple</tt> objects, which
--   specify the parts of web requests that you want AWS WAF to inspect for
--   cross-site scripting attacks and, if you want AWS WAF to inspect a
--   header, the name of the header. If a <tt>XssMatchSet</tt> contains
--   more than one <tt>XssMatchTuple</tt> object, a request needs to
--   include cross-site scripting attacks in only one of the specified
--   parts of the request to be considered a match.
--   
--   <i>See:</i> <a>xssMatchSet</a> smart constructor.
data XSSMatchSet

-- | Creates a value of <a>XSSMatchSet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>xmsName</a> - The name, if any, of the <tt>XssMatchSet</tt>
--   .</li>
--   <li><a>xmsXSSMatchSetId</a> - A unique identifier for an
--   <tt>XssMatchSet</tt> . You use <tt>XssMatchSetId</tt> to get
--   information about an <tt>XssMatchSet</tt> (see <tt>GetXssMatchSet</tt>
--   ), update an <tt>XssMatchSet</tt> (see <tt>UpdateXssMatchSet</tt> ),
--   insert an <tt>XssMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete an
--   <tt>XssMatchSet</tt> from AWS WAF (see <tt>DeleteXssMatchSet</tt> ).
--   <tt>XssMatchSetId</tt> is returned by <tt>CreateXssMatchSet</tt> and
--   by <tt>ListXssMatchSets</tt> .</li>
--   <li><a>xmsXSSMatchTuples</a> - Specifies the parts of web requests
--   that you want to inspect for cross-site scripting attacks.</li>
--   </ul>
xssMatchSet :: Text -> XSSMatchSet

-- | The name, if any, of the <tt>XssMatchSet</tt> .
xmsName :: Lens' XSSMatchSet (Maybe Text)

-- | A unique identifier for an <tt>XssMatchSet</tt> . You use
--   <tt>XssMatchSetId</tt> to get information about an
--   <tt>XssMatchSet</tt> (see <tt>GetXssMatchSet</tt> ), update an
--   <tt>XssMatchSet</tt> (see <tt>UpdateXssMatchSet</tt> ), insert an
--   <tt>XssMatchSet</tt> into a <tt>Rule</tt> or delete one from a
--   <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete an
--   <tt>XssMatchSet</tt> from AWS WAF (see <tt>DeleteXssMatchSet</tt> ).
--   <tt>XssMatchSetId</tt> is returned by <tt>CreateXssMatchSet</tt> and
--   by <tt>ListXssMatchSets</tt> .
xmsXSSMatchSetId :: Lens' XSSMatchSet Text

-- | Specifies the parts of web requests that you want to inspect for
--   cross-site scripting attacks.
xmsXSSMatchTuples :: Lens' XSSMatchSet [XSSMatchTuple]

-- | The <tt>Id</tt> and <tt>Name</tt> of an <tt>XssMatchSet</tt> .
--   
--   <i>See:</i> <a>xssMatchSetSummary</a> smart constructor.
data XSSMatchSetSummary

-- | Creates a value of <a>XSSMatchSetSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>xmssXSSMatchSetId</a> - A unique identifier for an
--   <tt>XssMatchSet</tt> . You use <tt>XssMatchSetId</tt> to get
--   information about a <tt>XssMatchSet</tt> (see <tt>GetXssMatchSet</tt>
--   ), update an <tt>XssMatchSet</tt> (see <tt>UpdateXssMatchSet</tt> ),
--   insert an <tt>XssMatchSet</tt> into a <tt>Rule</tt> or delete one from
--   a <tt>Rule</tt> (see <tt>UpdateRule</tt> ), and delete an
--   <tt>XssMatchSet</tt> from AWS WAF (see <tt>DeleteXssMatchSet</tt> ).
--   <tt>XssMatchSetId</tt> is returned by <tt>CreateXssMatchSet</tt> and
--   by <tt>ListXssMatchSets</tt> .</li>
--   <li><a>xmssName</a> - The name of the <tt>XssMatchSet</tt> , if any,
--   specified by <tt>Id</tt> .</li>
--   </ul>
xssMatchSetSummary :: Text -> Text -> XSSMatchSetSummary

-- | A unique identifier for an <tt>XssMatchSet</tt> . You use
--   <tt>XssMatchSetId</tt> to get information about a <tt>XssMatchSet</tt>
--   (see <tt>GetXssMatchSet</tt> ), update an <tt>XssMatchSet</tt> (see
--   <tt>UpdateXssMatchSet</tt> ), insert an <tt>XssMatchSet</tt> into a
--   <tt>Rule</tt> or delete one from a <tt>Rule</tt> (see
--   <tt>UpdateRule</tt> ), and delete an <tt>XssMatchSet</tt> from AWS WAF
--   (see <tt>DeleteXssMatchSet</tt> ). <tt>XssMatchSetId</tt> is returned
--   by <tt>CreateXssMatchSet</tt> and by <tt>ListXssMatchSets</tt> .
xmssXSSMatchSetId :: Lens' XSSMatchSetSummary Text

-- | The name of the <tt>XssMatchSet</tt> , if any, specified by
--   <tt>Id</tt> .
xmssName :: Lens' XSSMatchSetSummary Text

-- | Specifies the part of a web request that you want to inspect for
--   cross-site scripting attacks and indicates whether you want to add the
--   specification to an <tt>XssMatchSet</tt> or delete it from an
--   <tt>XssMatchSet</tt> .
--   
--   <i>See:</i> <a>xssMatchSetUpdate</a> smart constructor.
data XSSMatchSetUpdate

-- | Creates a value of <a>XSSMatchSetUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>xmsuAction</a> - Specify <tt>INSERT</tt> to add a
--   <tt>XssMatchSetUpdate</tt> to an <tt>XssMatchSet</tt> . Use
--   <tt>DELETE</tt> to remove a <tt>XssMatchSetUpdate</tt> from an
--   <tt>XssMatchSet</tt> .</li>
--   <li><a>xmsuXSSMatchTuple</a> - Specifies the part of a web request
--   that you want AWS WAF to inspect for cross-site scripting attacks and,
--   if you want AWS WAF to inspect a header, the name of the header.</li>
--   </ul>
xssMatchSetUpdate :: ChangeAction -> XSSMatchTuple -> XSSMatchSetUpdate

-- | Specify <tt>INSERT</tt> to add a <tt>XssMatchSetUpdate</tt> to an
--   <tt>XssMatchSet</tt> . Use <tt>DELETE</tt> to remove a
--   <tt>XssMatchSetUpdate</tt> from an <tt>XssMatchSet</tt> .
xmsuAction :: Lens' XSSMatchSetUpdate ChangeAction

-- | Specifies the part of a web request that you want AWS WAF to inspect
--   for cross-site scripting attacks and, if you want AWS WAF to inspect a
--   header, the name of the header.
xmsuXSSMatchTuple :: Lens' XSSMatchSetUpdate XSSMatchTuple

-- | Specifies the part of a web request that you want AWS WAF to inspect
--   for cross-site scripting attacks and, if you want AWS WAF to inspect a
--   header, the name of the header.
--   
--   <i>See:</i> <a>xssMatchTuple</a> smart constructor.
data XSSMatchTuple

-- | Creates a value of <a>XSSMatchTuple</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>xmtFieldToMatch</a> - Specifies where in a web request to look
--   for cross-site scripting attacks.</li>
--   <li><a>xmtTextTransformation</a> - Text transformations eliminate some
--   of the unusual formatting that attackers use in web requests in an
--   effort to bypass AWS WAF. If you specify a transformation, AWS WAF
--   performs the transformation on <tt>FieldToMatch</tt> before inspecting
--   a request for a match. <b>CMD_LINE</b> When you're concerned that
--   attackers are injecting an operating system commandline command and
--   using unusual formatting to disguise some or all of the command, use
--   this option to perform the following transformations: * Delete the
--   following characters: " ' ^ * Delete spaces before the following
--   characters: / ( * Replace the following characters with a space: , ; *
--   Replace multiple spaces with one space * Convert uppercase letters
--   (A-Z) to lowercase (a-z) <b>COMPRESS_WHITE_SPACE</b> Use this option
--   to replace the following characters with a space character (decimal
--   32): * f, formfeed, decimal 12 * t, tab, decimal 9 * n, newline,
--   decimal 10 * r, carriage return, decimal 13 * v, vertical tab, decimal
--   11 * non-breaking space, decimal 160 <tt>COMPRESS_WHITE_SPACE</tt>
--   also replaces multiple spaces with one space.
--   <b>HTML_ENTITY_DECODE</b> Use this option to replace HTML-encoded
--   characters with unencoded characters. <tt>HTML_ENTITY_DECODE</tt>
--   performs the following operations: * Replaces
--   <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text
--   transformations.</li>
--   </ul>
xssMatchTuple :: FieldToMatch -> TextTransformation -> XSSMatchTuple

-- | Specifies where in a web request to look for cross-site scripting
--   attacks.
xmtFieldToMatch :: Lens' XSSMatchTuple FieldToMatch

-- | Text transformations eliminate some of the unusual formatting that
--   attackers use in web requests in an effort to bypass AWS WAF. If you
--   specify a transformation, AWS WAF performs the transformation on
--   <tt>FieldToMatch</tt> before inspecting a request for a match.
--   <b>CMD_LINE</b> When you're concerned that attackers are injecting an
--   operating system commandline command and using unusual formatting to
--   disguise some or all of the command, use this option to perform the
--   following transformations: * Delete the following characters: " ' ^ *
--   Delete spaces before the following characters: / ( * Replace the
--   following characters with a space: , ; * Replace multiple spaces with
--   one space * Convert uppercase letters (A-Z) to lowercase (a-z)
--   <b>COMPRESS_WHITE_SPACE</b> Use this option to replace the following
--   characters with a space character (decimal 32): * f, formfeed, decimal
--   12 * t, tab, decimal 9 * n, newline, decimal 10 * r, carriage return,
--   decimal 13 * v, vertical tab, decimal 11 * non-breaking space, decimal
--   160 <tt>COMPRESS_WHITE_SPACE</tt> also replaces multiple spaces with
--   one space. <b>HTML_ENTITY_DECODE</b> Use this option to replace
--   HTML-encoded characters with unencoded characters.
--   <tt>HTML_ENTITY_DECODE</tt> performs the following operations: *
--   Replaces <tt>(ampersand)quot;</tt> with <tt>"</tt> * Replaces
--   <tt>(ampersand)nbsp;</tt> with a non-breaking space, decimal 160 *
--   Replaces <tt>(ampersand)lt;</tt> with a "less than" symbol * Replaces
--   <tt>(ampersand)gt;</tt> with <tt>&gt;</tt> * Replaces characters that
--   are represented in hexadecimal format, <tt>(ampersand)#xhhhh;</tt> ,
--   with the corresponding characters * Replaces characters that are
--   represented in decimal format, <tt>(ampersand)#nnnn;</tt> , with the
--   corresponding characters <b>LOWERCASE</b> Use this option to convert
--   uppercase letters (A-Z) to lowercase (a-z). <b>URL_DECODE</b> Use this
--   option to decode a URL-encoded value. <b>NONE</b> Specify
--   <tt>NONE</tt> if you don't want to perform any text transformations.
xmtTextTransformation :: Lens' XSSMatchTuple TextTransformation
