-- 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.4.5


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 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 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 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, QUERY_STRING,
--   or URI.</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>
--   </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 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 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
IPMatch :: PredicateType
SizeConstraint :: PredicateType
SqlInjectionMatch :: PredicateType
XSSMatch :: PredicateType
data TextTransformation
CmdLine :: TextTransformation
CompressWhiteSpace :: TextTransformation
HTMLEntityDecode :: TextTransformation
Lowercase :: TextTransformation
None :: TextTransformation
URLDecode :: TextTransformation
data WafActionType
Allow :: WafActionType
Block :: WafActionType
Count :: WafActionType

-- | 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>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>
--   <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.</li>
--   </ul>
activatedRule :: Int -> Text -> WafAction -> ActivatedRule

-- | 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

-- | 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.
arAction :: Lens' ActivatedRule WafAction

-- | 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 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. 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>24<tt> , a </tt><i>16<tt> , or a
--   </tt></i>8<tt> CIDR. For more information about CIDR notation, perform
--   an Internet search on </tt>cidr notation@ .
--   
--   <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> )
--   and the IP address range (in CIDR notation) that web requests
--   originate 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>
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> ) and the IP address range (in CIDR
--   notation) that web requests originate 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
isIPSetDescriptors :: Lens' IPSet [IPSetDescriptor]

-- | Specifies the IP address type (<tt>IPV4</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> .</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> . AWS WAF supports only
--   <i>8, </i>16, <i>24, and </i>32 IP addresses. For more information
--   about CIDR notation, see the Wikipedia entry <a>Classless Inter-Domain
--   Routing</a> .</li>
--   </ul>
ipSetDescriptor :: IPSetDescriptorType -> Text -> IPSetDescriptor

-- | Specify <tt>IPV4</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> . AWS WAF supports only <i>8, </i>16, <i>24, and
--   </i>32 IP addresses. For more information about CIDR notation, see the
--   Wikipedia entry <a>Classless Inter-Domain Routing</a> .
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> )
--   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> ) 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> , 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> , 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> , 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> , 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> , 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 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> - Undocumented member.</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

-- | Undocumented member.
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]

-- | 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>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

-- | 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> - Undocumented member.</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

-- | Undocumented member.
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> - Undocumented member.</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

-- | Undocumented member.
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

-- | 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. 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. 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. 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. 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

-- | 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> - Undocumented member.</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

-- | Undocumented member.
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> - Undocumented member.</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

-- | Undocumented member.
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> - Undocumented member.</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

-- | Undocumented member.
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


-- | 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 -> 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 [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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateByteMatchSet.UpdateByteMatchSetResponse


-- | 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> .</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 more information about CIDR notation, see the Wikipedia entry
--   <a>Classless Inter-Domain Routing</a> .
--   
--   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 -> 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 [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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateIPSet.UpdateIPSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateRule.UpdateRuleResponse


-- | 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 -> 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 [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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateSizeConstraintSet.UpdateSizeConstraintSetResponse


-- | 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 -> 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 [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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateSqlInjectionMatchSet.UpdateSqlInjectionMatchSetResponse


-- | 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>
--   <li>The CloudFront distribution that you want to associate with the
--   <tt>WebACL</tt> .</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>
--   
--   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>Priority</tt> ,
--   and <tt>RuleId</tt> * <a>WafAction</a> : Contains <tt>Type</tt></li>
--   <li><a>uwaDefaultAction</a> - Undocumented member.</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>Priority</tt> , and <tt>RuleId</tt> *
--   <a>WafAction</a> : Contains <tt>Type</tt>
uwaUpdates :: Lens' UpdateWebACL [WebACLUpdate]

-- | Undocumented member.
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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateWebACL.UpdateWebACLResponse


-- | 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 -> 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 [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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.UpdateXSSMatchSet.UpdateXSSMatchSetResponse


module Network.AWS.WAF.Waiters


-- | 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.Pager.AWSPager Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSets
instance Network.AWS.Types.AWSRequest 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
instance Control.DeepSeq.NFData Network.AWS.WAF.ListXSSMatchSets.ListXSSMatchSetsResponse


-- | 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.Pager.AWSPager Network.AWS.WAF.ListWebACLs.ListWebACLs
instance Network.AWS.Types.AWSRequest 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
instance Control.DeepSeq.NFData Network.AWS.WAF.ListWebACLs.ListWebACLsResponse


-- | 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.Pager.AWSPager Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSets
instance Network.AWS.Types.AWSRequest 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
instance Control.DeepSeq.NFData Network.AWS.WAF.ListSqlInjectionMatchSets.ListSqlInjectionMatchSetsResponse


-- | 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.Pager.AWSPager Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSets
instance Network.AWS.Types.AWSRequest 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
instance Control.DeepSeq.NFData Network.AWS.WAF.ListSizeConstraintSets.ListSizeConstraintSetsResponse


-- | 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.Pager.AWSPager Network.AWS.WAF.ListRules.ListRules
instance Network.AWS.Types.AWSRequest 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
instance Control.DeepSeq.NFData Network.AWS.WAF.ListRules.ListRulesResponse


-- | 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>ByteMatchSets</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>ByteMatchSets</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.Pager.AWSPager Network.AWS.WAF.ListIPSets.ListIPSets
instance Network.AWS.Types.AWSRequest 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
instance Control.DeepSeq.NFData Network.AWS.WAF.ListIPSets.ListIPSetsResponse


-- | 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.Pager.AWSPager Network.AWS.WAF.ListByteMatchSets.ListByteMatchSets
instance Network.AWS.Types.AWSRequest 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
instance Control.DeepSeq.NFData Network.AWS.WAF.ListByteMatchSets.ListByteMatchSetsResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.GetXSSMatchSet.GetXSSMatchSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.GetWebACL.GetWebACLResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.GetSqlInjectionMatchSet.GetSqlInjectionMatchSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.GetSizeConstraintSet.GetSizeConstraintSetResponse


-- | 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 100 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 two values: * The
--   <tt>RuleId</tt> of the <tt>Rule</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 Unix time
--   format (in seconds). 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 two values: * The <tt>RuleId</tt> of the
--   <tt>Rule</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 Unix time format (in seconds).
--   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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.GetSampledRequests.GetSampledRequestsResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.GetRule.GetRuleResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.GetIPSet.GetIPSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.GetChangeTokenStatus.GetChangeTokenStatusResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.GetChangeToken.GetChangeTokenResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.GetByteMatchSet.GetByteMatchSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteXSSMatchSet.DeleteXSSMatchSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteWebACL.DeleteWebACLResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteSqlInjectionMatchSet.DeleteSqlInjectionMatchSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteSizeConstraintSet.DeleteSizeConstraintSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteRule.DeleteRuleResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteIPSet.DeleteIPSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.DeleteByteMatchSet.DeleteByteMatchSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateXSSMatchSet.CreateXSSMatchSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateWebACL.CreateWebACLResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateSqlInjectionMatchSet.CreateSqlInjectionMatchSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateSizeConstraintSet.CreateSizeConstraintSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateRule.CreateRuleResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateIPSet.CreateIPSetResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.WAF.CreateByteMatchSet.CreateByteMatchSetResponse


-- | This is the <i>AWS WAF API Reference</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 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 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 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, QUERY_STRING,
--   or URI.</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>
--   </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 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 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
IPMatch :: PredicateType
SizeConstraint :: PredicateType
SqlInjectionMatch :: PredicateType
XSSMatch :: PredicateType
data TextTransformation
CmdLine :: TextTransformation
CompressWhiteSpace :: TextTransformation
HTMLEntityDecode :: TextTransformation
Lowercase :: TextTransformation
None :: TextTransformation
URLDecode :: TextTransformation
data WafActionType
Allow :: WafActionType
Block :: WafActionType
Count :: WafActionType

-- | 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>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>
--   <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.</li>
--   </ul>
activatedRule :: Int -> Text -> WafAction -> ActivatedRule

-- | 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

-- | 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.
arAction :: Lens' ActivatedRule WafAction

-- | 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 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. 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>24<tt> , a </tt><i>16<tt> , or a
--   </tt></i>8<tt> CIDR. For more information about CIDR notation, perform
--   an Internet search on </tt>cidr notation@ .
--   
--   <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> )
--   and the IP address range (in CIDR notation) that web requests
--   originate 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>
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> ) and the IP address range (in CIDR
--   notation) that web requests originate 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
isIPSetDescriptors :: Lens' IPSet [IPSetDescriptor]

-- | Specifies the IP address type (<tt>IPV4</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> .</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> . AWS WAF supports only
--   <i>8, </i>16, <i>24, and </i>32 IP addresses. For more information
--   about CIDR notation, see the Wikipedia entry <a>Classless Inter-Domain
--   Routing</a> .</li>
--   </ul>
ipSetDescriptor :: IPSetDescriptorType -> Text -> IPSetDescriptor

-- | Specify <tt>IPV4</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> . AWS WAF supports only <i>8, </i>16, <i>24, and
--   </i>32 IP addresses. For more information about CIDR notation, see the
--   Wikipedia entry <a>Classless Inter-Domain Routing</a> .
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> )
--   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> ) 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> , 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> , 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> , 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> , 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> , 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 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> - Undocumented member.</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

-- | Undocumented member.
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]

-- | 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>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

-- | 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> - Undocumented member.</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

-- | Undocumented member.
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> - Undocumented member.</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

-- | Undocumented member.
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

-- | 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. 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. 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. 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. 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

-- | 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> - Undocumented member.</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

-- | Undocumented member.
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> - Undocumented member.</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

-- | Undocumented member.
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> - Undocumented member.</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

-- | Undocumented member.
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
