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


-- | Amazon Shield 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.Shield</a> or <a>the AWS documentation</a> to get
--   started.
@package amazonka-shield
@version 1.6.1


module Network.AWS.Shield.Types

-- | API version <tt>2016-06-02</tt> of the Amazon Shield SDK
--   configuration.
shield :: Service

-- | Exception that indicates that the resource is invalid. You might not
--   have access to the resource, or the resource might not exist.
_InvalidResourceException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception that indicates that the parameters passed to the API are
--   invalid.
_InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception that indicates that the operation would exceed a limit.
--   
--   <tt>Type</tt> is the type of limit that would be exceeded.
--   
--   <tt>Limit</tt> is the threshold that would be exceeded.
_LimitsExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception that indicates that a problem occurred with the service
--   infrastructure. You can retry the request.
_InternalErrorException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception indicating the specified resource already exists.
_ResourceAlreadyExistsException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception that indicates that the protection state has been modified
--   by another client. You can retry the request.
_OptimisticLockException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception that indicates that the operation would not cause any change
--   to occur.
_InvalidOperationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception that indicates that the subscription you are trying to
--   delete has not yet completed the 1-year commitment. You cannot delete
--   this subscription.
_LockedSubscriptionException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception indicating the specified resource does not exist.
_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
data AttackLayer
Application :: AttackLayer
Network :: AttackLayer
data AttackPropertyIdentifier
DestinationURL :: AttackPropertyIdentifier
Referrer :: AttackPropertyIdentifier
SourceASN :: AttackPropertyIdentifier
SourceCountry :: AttackPropertyIdentifier
SourceIPAddress :: AttackPropertyIdentifier
SourceUserAgent :: AttackPropertyIdentifier
data SubResourceType
IP :: SubResourceType
URL :: SubResourceType
data SubscriptionState
Active :: SubscriptionState
Inactive :: SubscriptionState
data Unit
Bits :: Unit
Bytes :: Unit
Packets :: Unit
Requests :: Unit

-- | The details of a DDoS attack.
--   
--   <i>See:</i> <a>attackDetail</a> smart constructor.
data AttackDetail

-- | Creates a value of <a>AttackDetail</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adAttackId</a> - The unique identifier (ID) of the attack.</li>
--   <li><a>adStartTime</a> - The time the attack started, in Unix time in
--   seconds. For more information see <a>timestamp</a> .</li>
--   <li><a>adSubResources</a> - If applicable, additional detail about the
--   resource being attacked, for example, IP address or URL.</li>
--   <li><a>adMitigations</a> - List of mitigation actions taken for the
--   attack.</li>
--   <li><a>adAttackProperties</a> - The array of <a>AttackProperty</a>
--   objects.</li>
--   <li><a>adAttackCounters</a> - List of counters that describe the
--   attack for the specified time period.</li>
--   <li><a>adResourceARN</a> - The ARN (Amazon Resource Name) of the
--   resource that was attacked.</li>
--   <li><a>adEndTime</a> - The time the attack ended, in Unix time in
--   seconds. For more information see <a>timestamp</a> .</li>
--   </ul>
attackDetail :: AttackDetail

-- | The unique identifier (ID) of the attack.
adAttackId :: Lens' AttackDetail (Maybe Text)

-- | The time the attack started, in Unix time in seconds. For more
--   information see <a>timestamp</a> .
adStartTime :: Lens' AttackDetail (Maybe UTCTime)

-- | If applicable, additional detail about the resource being attacked,
--   for example, IP address or URL.
adSubResources :: Lens' AttackDetail [SubResourceSummary]

-- | List of mitigation actions taken for the attack.
adMitigations :: Lens' AttackDetail [Mitigation]

-- | The array of <a>AttackProperty</a> objects.
adAttackProperties :: Lens' AttackDetail [AttackProperty]

-- | List of counters that describe the attack for the specified time
--   period.
adAttackCounters :: Lens' AttackDetail [SummarizedCounter]

-- | The ARN (Amazon Resource Name) of the resource that was attacked.
adResourceARN :: Lens' AttackDetail (Maybe Text)

-- | The time the attack ended, in Unix time in seconds. For more
--   information see <a>timestamp</a> .
adEndTime :: Lens' AttackDetail (Maybe UTCTime)

-- | Details of the described attack.
--   
--   <i>See:</i> <a>attackProperty</a> smart constructor.
data AttackProperty

-- | Creates a value of <a>AttackProperty</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apAttackLayer</a> - The type of DDoS event that was observed.
--   <tt>NETWORK</tt> indicates layer 3 and layer 4 events and
--   <tt>APPLICATION</tt> indicates layer 7 events.</li>
--   <li><a>apTopContributors</a> - The array of <a>Contributor</a> objects
--   that includes the top five contributors to an attack.</li>
--   <li><a>apAttackPropertyIdentifier</a> - Defines the DDoS attack
--   property information that is provided.</li>
--   <li><a>apTotal</a> - The total contributions made to this attack by
--   all contributors, not just the five listed in the
--   <tt>TopContributors</tt> list.</li>
--   <li><a>apUnit</a> - The unit of the <tt>Value</tt> of the
--   contributions.</li>
--   </ul>
attackProperty :: AttackProperty

-- | The type of DDoS event that was observed. <tt>NETWORK</tt> indicates
--   layer 3 and layer 4 events and <tt>APPLICATION</tt> indicates layer 7
--   events.
apAttackLayer :: Lens' AttackProperty (Maybe AttackLayer)

-- | The array of <a>Contributor</a> objects that includes the top five
--   contributors to an attack.
apTopContributors :: Lens' AttackProperty [Contributor]

-- | Defines the DDoS attack property information that is provided.
apAttackPropertyIdentifier :: Lens' AttackProperty (Maybe AttackPropertyIdentifier)

-- | The total contributions made to this attack by all contributors, not
--   just the five listed in the <tt>TopContributors</tt> list.
apTotal :: Lens' AttackProperty (Maybe Integer)

-- | The unit of the <tt>Value</tt> of the contributions.
apUnit :: Lens' AttackProperty (Maybe Unit)

-- | Summarizes all DDoS attacks for a specified time period.
--   
--   <i>See:</i> <a>attackSummary</a> smart constructor.
data AttackSummary

-- | Creates a value of <a>AttackSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>asAttackVectors</a> - The list of attacks for a specified time
--   period.</li>
--   <li><a>asAttackId</a> - The unique identifier (ID) of the attack.</li>
--   <li><a>asStartTime</a> - The start time of the attack, in Unix time in
--   seconds. For more information see <a>timestamp</a> .</li>
--   <li><a>asResourceARN</a> - The ARN (Amazon Resource Name) of the
--   resource that was attacked.</li>
--   <li><a>asEndTime</a> - The end time of the attack, in Unix time in
--   seconds. For more information see <a>timestamp</a> .</li>
--   </ul>
attackSummary :: AttackSummary

-- | The list of attacks for a specified time period.
asAttackVectors :: Lens' AttackSummary [AttackVectorDescription]

-- | The unique identifier (ID) of the attack.
asAttackId :: Lens' AttackSummary (Maybe Text)

-- | The start time of the attack, in Unix time in seconds. For more
--   information see <a>timestamp</a> .
asStartTime :: Lens' AttackSummary (Maybe UTCTime)

-- | The ARN (Amazon Resource Name) of the resource that was attacked.
asResourceARN :: Lens' AttackSummary (Maybe Text)

-- | The end time of the attack, in Unix time in seconds. For more
--   information see <a>timestamp</a> .
asEndTime :: Lens' AttackSummary (Maybe UTCTime)

-- | Describes the attack.
--   
--   <i>See:</i> <a>attackVectorDescription</a> smart constructor.
data AttackVectorDescription

-- | Creates a value of <a>AttackVectorDescription</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>avdVectorType</a> - The attack type. Valid values: *
--   UDP_TRAFFIC * UDP_FRAGMENT * GENERIC_UDP_REFLECTION * DNS_REFLECTION *
--   NTP_REFLECTION * CHARGEN_REFLECTION * SSDP_REFLECTION * PORT_MAPPER *
--   RIP_REFLECTION * SNMP_REFLECTION * MSSQL_REFLECTION *
--   NET_BIOS_REFLECTION * SYN_FLOOD * ACK_FLOOD * REQUEST_FLOOD</li>
--   </ul>
attackVectorDescription :: Text -> AttackVectorDescription

-- | The attack type. Valid values: * UDP_TRAFFIC * UDP_FRAGMENT *
--   GENERIC_UDP_REFLECTION * DNS_REFLECTION * NTP_REFLECTION *
--   CHARGEN_REFLECTION * SSDP_REFLECTION * PORT_MAPPER * RIP_REFLECTION *
--   SNMP_REFLECTION * MSSQL_REFLECTION * NET_BIOS_REFLECTION * SYN_FLOOD *
--   ACK_FLOOD * REQUEST_FLOOD
avdVectorType :: Lens' AttackVectorDescription Text

-- | A contributor to the attack and their contribution.
--   
--   <i>See:</i> <a>contributor</a> smart constructor.
data Contributor

-- | Creates a value of <a>Contributor</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cValue</a> - The contribution of this contributor expressed in
--   <a>Protection</a> units. For example <tt>10,000</tt> .</li>
--   <li><a>cName</a> - The name of the contributor. This is dependent on
--   the <tt>AttackPropertyIdentifier</tt> . For example, if the
--   <tt>AttackPropertyIdentifier</tt> is <tt>SOURCE_COUNTRY</tt> , the
--   <tt>Name</tt> could be <tt>United States</tt> .</li>
--   </ul>
contributor :: Contributor

-- | The contribution of this contributor expressed in <a>Protection</a>
--   units. For example <tt>10,000</tt> .
cValue :: Lens' Contributor (Maybe Integer)

-- | The name of the contributor. This is dependent on the
--   <tt>AttackPropertyIdentifier</tt> . For example, if the
--   <tt>AttackPropertyIdentifier</tt> is <tt>SOURCE_COUNTRY</tt> , the
--   <tt>Name</tt> could be <tt>United States</tt> .
cName :: Lens' Contributor (Maybe Text)

-- | The mitigation applied to a DDoS attack.
--   
--   <i>See:</i> <a>mitigation</a> smart constructor.
data Mitigation

-- | Creates a value of <a>Mitigation</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mMitigationName</a> - The name of the mitigation taken for this
--   attack.</li>
--   </ul>
mitigation :: Mitigation

-- | The name of the mitigation taken for this attack.
mMitigationName :: Lens' Mitigation (Maybe Text)

-- | An object that represents a resource that is under DDoS protection.
--   
--   <i>See:</i> <a>protection</a> smart constructor.
data Protection

-- | Creates a value of <a>Protection</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pResourceARN</a> - The ARN (Amazon Resource Name) of the AWS
--   resource that is protected.</li>
--   <li><a>pName</a> - The friendly name of the protection. For example,
--   <tt>My CloudFront distributions</tt> .</li>
--   <li><a>pId</a> - The unique identifier (ID) of the protection.</li>
--   </ul>
protection :: Protection

-- | The ARN (Amazon Resource Name) of the AWS resource that is protected.
pResourceARN :: Lens' Protection (Maybe Text)

-- | The friendly name of the protection. For example, <tt>My CloudFront
--   distributions</tt> .
pName :: Lens' Protection (Maybe Text)

-- | The unique identifier (ID) of the protection.
pId :: Lens' Protection (Maybe Text)

-- | The attack information for the specified SubResource.
--   
--   <i>See:</i> <a>subResourceSummary</a> smart constructor.
data SubResourceSummary

-- | Creates a value of <a>SubResourceSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srsCounters</a> - The counters that describe the details of the
--   attack.</li>
--   <li><a>srsAttackVectors</a> - The list of attack types and associated
--   counters.</li>
--   <li><a>srsId</a> - The unique identifier (ID) of the
--   <tt>SubResource</tt> .</li>
--   <li><a>srsType</a> - The <tt>SubResource</tt> type.</li>
--   </ul>
subResourceSummary :: SubResourceSummary

-- | The counters that describe the details of the attack.
srsCounters :: Lens' SubResourceSummary [SummarizedCounter]

-- | The list of attack types and associated counters.
srsAttackVectors :: Lens' SubResourceSummary [SummarizedAttackVector]

-- | The unique identifier (ID) of the <tt>SubResource</tt> .
srsId :: Lens' SubResourceSummary (Maybe Text)

-- | The <tt>SubResource</tt> type.
srsType :: Lens' SubResourceSummary (Maybe SubResourceType)

-- | Information about the AWS Shield Advanced subscription for an account.
--   
--   <i>See:</i> <a>subscription</a> smart constructor.
data Subscription

-- | Creates a value of <a>Subscription</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sTimeCommitmentInSeconds</a> - The length, in seconds, of the
--   AWS Shield Advanced subscription for the account.</li>
--   <li><a>sStartTime</a> - The start time of the subscription, in Unix
--   time in seconds. For more information see <a>timestamp</a> .</li>
--   </ul>
subscription :: Subscription

-- | The length, in seconds, of the AWS Shield Advanced subscription for
--   the account.
sTimeCommitmentInSeconds :: Lens' Subscription (Maybe Natural)

-- | The start time of the subscription, in Unix time in seconds. For more
--   information see <a>timestamp</a> .
sStartTime :: Lens' Subscription (Maybe UTCTime)

-- | A summary of information about the attack.
--   
--   <i>See:</i> <a>summarizedAttackVector</a> smart constructor.
data SummarizedAttackVector

-- | Creates a value of <a>SummarizedAttackVector</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>savVectorCounters</a> - The list of counters that describe the
--   details of the attack.</li>
--   <li><a>savVectorType</a> - The attack type, for example, SNMP
--   reflection or SYN flood.</li>
--   </ul>
summarizedAttackVector :: Text -> SummarizedAttackVector

-- | The list of counters that describe the details of the attack.
savVectorCounters :: Lens' SummarizedAttackVector [SummarizedCounter]

-- | The attack type, for example, SNMP reflection or SYN flood.
savVectorType :: Lens' SummarizedAttackVector Text

-- | The counter that describes a DDoS attack.
--   
--   <i>See:</i> <a>summarizedCounter</a> smart constructor.
data SummarizedCounter

-- | Creates a value of <a>SummarizedCounter</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scMax</a> - The maximum value of the counter for a specified
--   time period.</li>
--   <li><a>scAverage</a> - The average value of the counter for a
--   specified time period.</li>
--   <li><a>scN</a> - The number of counters for a specified time
--   period.</li>
--   <li><a>scName</a> - The counter name.</li>
--   <li><a>scSum</a> - The total of counter values for a specified time
--   period.</li>
--   <li><a>scUnit</a> - The unit of the counters.</li>
--   </ul>
summarizedCounter :: SummarizedCounter

-- | The maximum value of the counter for a specified time period.
scMax :: Lens' SummarizedCounter (Maybe Double)

-- | The average value of the counter for a specified time period.
scAverage :: Lens' SummarizedCounter (Maybe Double)

-- | The number of counters for a specified time period.
scN :: Lens' SummarizedCounter (Maybe Int)

-- | The counter name.
scName :: Lens' SummarizedCounter (Maybe Text)

-- | The total of counter values for a specified time period.
scSum :: Lens' SummarizedCounter (Maybe Double)

-- | The unit of the counters.
scUnit :: Lens' SummarizedCounter (Maybe Text)

-- | The time range.
--   
--   <i>See:</i> <a>timeRange</a> smart constructor.
data TimeRange

-- | Creates a value of <a>TimeRange</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>trFromInclusive</a> - The start time, in Unix time in seconds.
--   For more information see <a>timestamp</a> .</li>
--   <li><a>trToExclusive</a> - The end time, in Unix time in seconds. For
--   more information see <a>timestamp</a> .</li>
--   </ul>
timeRange :: TimeRange

-- | The start time, in Unix time in seconds. For more information see
--   <a>timestamp</a> .
trFromInclusive :: Lens' TimeRange (Maybe UTCTime)

-- | The end time, in Unix time in seconds. For more information see
--   <a>timestamp</a> .
trToExclusive :: Lens' TimeRange (Maybe UTCTime)


-- | Lists all <a>Protection</a> objects for the account.
--   
--   This operation returns paginated results.
module Network.AWS.Shield.ListProtections

-- | Creates a value of <a>ListProtections</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lpNextToken</a> - The <tt>ListProtectionsRequest.NextToken</tt>
--   value from a previous call to <tt>ListProtections</tt> . Pass null if
--   this is the first call.</li>
--   <li><a>lpMaxResults</a> - The maximum number of <a>Protection</a>
--   objects to be returned. If this is left blank the first 20 results
--   will be returned.</li>
--   </ul>
listProtections :: ListProtections

-- | <i>See:</i> <a>listProtections</a> smart constructor.
data ListProtections

-- | The <tt>ListProtectionsRequest.NextToken</tt> value from a previous
--   call to <tt>ListProtections</tt> . Pass null if this is the first
--   call.
lpNextToken :: Lens' ListProtections (Maybe Text)

-- | The maximum number of <a>Protection</a> objects to be returned. If
--   this is left blank the first 20 results will be returned.
lpMaxResults :: Lens' ListProtections (Maybe Natural)

-- | Creates a value of <a>ListProtectionsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lprsProtections</a> - The array of enabled <a>Protection</a>
--   objects.</li>
--   <li><a>lprsNextToken</a> - If you specify a value for
--   <tt>MaxResults</tt> and you have more Protections than the value of
--   MaxResults, AWS Shield Advanced returns a NextToken value in the
--   response that allows you to list another group of Protections. For the
--   second and subsequent ListProtections requests, specify the value of
--   NextToken from the previous response to get information about another
--   batch of Protections.</li>
--   <li><a>lprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listProtectionsResponse :: Int -> ListProtectionsResponse

-- | <i>See:</i> <a>listProtectionsResponse</a> smart constructor.
data ListProtectionsResponse

-- | The array of enabled <a>Protection</a> objects.
lprsProtections :: Lens' ListProtectionsResponse [Protection]

-- | If you specify a value for <tt>MaxResults</tt> and you have more
--   Protections than the value of MaxResults, AWS Shield Advanced returns
--   a NextToken value in the response that allows you to list another
--   group of Protections. For the second and subsequent ListProtections
--   requests, specify the value of NextToken from the previous response to
--   get information about another batch of Protections.
lprsNextToken :: Lens' ListProtectionsResponse (Maybe Text)

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


-- | Returns all ongoing DDoS attacks or all DDoS attacks during a
--   specified time period.
module Network.AWS.Shield.ListAttacks

-- | Creates a value of <a>ListAttacks</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>laStartTime</a> - The start of the time period for the attacks.
--   This is a <tt>timestamp</tt> type. The sample request above indicates
--   a <tt>number</tt> type because the default used by WAF is Unix time in
--   seconds. However any valid <a>timestamp format</a> is allowed.</li>
--   <li><a>laResourceARNs</a> - The ARN (Amazon Resource Name) of the
--   resource that was attacked. If this is left blank, all applicable
--   resources for this account will be included.</li>
--   <li><a>laNextToken</a> - The <tt>ListAttacksRequest.NextMarker</tt>
--   value from a previous call to <tt>ListAttacksRequest</tt> . Pass null
--   if this is the first call.</li>
--   <li><a>laEndTime</a> - The end of the time period for the attacks.
--   This is a <tt>timestamp</tt> type. The sample request above indicates
--   a <tt>number</tt> type because the default used by WAF is Unix time in
--   seconds. However any valid <a>timestamp format</a> is allowed.</li>
--   <li><a>laMaxResults</a> - The maximum number of <a>AttackSummary</a>
--   objects to be returned. If this is left blank, the first 20 results
--   will be returned.</li>
--   </ul>
listAttacks :: ListAttacks

-- | <i>See:</i> <a>listAttacks</a> smart constructor.
data ListAttacks

-- | The start of the time period for the attacks. This is a
--   <tt>timestamp</tt> type. The sample request above indicates a
--   <tt>number</tt> type because the default used by WAF is Unix time in
--   seconds. However any valid <a>timestamp format</a> is allowed.
laStartTime :: Lens' ListAttacks (Maybe TimeRange)

-- | The ARN (Amazon Resource Name) of the resource that was attacked. If
--   this is left blank, all applicable resources for this account will be
--   included.
laResourceARNs :: Lens' ListAttacks [Text]

-- | The <tt>ListAttacksRequest.NextMarker</tt> value from a previous call
--   to <tt>ListAttacksRequest</tt> . Pass null if this is the first call.
laNextToken :: Lens' ListAttacks (Maybe Text)

-- | The end of the time period for the attacks. This is a
--   <tt>timestamp</tt> type. The sample request above indicates a
--   <tt>number</tt> type because the default used by WAF is Unix time in
--   seconds. However any valid <a>timestamp format</a> is allowed.
laEndTime :: Lens' ListAttacks (Maybe TimeRange)

-- | The maximum number of <a>AttackSummary</a> objects to be returned. If
--   this is left blank, the first 20 results will be returned.
laMaxResults :: Lens' ListAttacks (Maybe Natural)

-- | Creates a value of <a>ListAttacksResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>larsAttackSummaries</a> - The attack information for the
--   specified time range.</li>
--   <li><a>larsNextToken</a> - The token returned by a previous call to
--   indicate that there is more data available. If not null, more results
--   are available. Pass this value for the <tt>NextMarker</tt> parameter
--   in a subsequent call to <tt>ListAttacks</tt> to retrieve the next set
--   of items.</li>
--   <li><a>larsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listAttacksResponse :: Int -> ListAttacksResponse

-- | <i>See:</i> <a>listAttacksResponse</a> smart constructor.
data ListAttacksResponse

-- | The attack information for the specified time range.
larsAttackSummaries :: Lens' ListAttacksResponse [AttackSummary]

-- | The token returned by a previous call to indicate that there is more
--   data available. If not null, more results are available. Pass this
--   value for the <tt>NextMarker</tt> parameter in a subsequent call to
--   <tt>ListAttacks</tt> to retrieve the next set of items.
larsNextToken :: Lens' ListAttacksResponse (Maybe Text)

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


-- | Returns the <tt>SubscriptionState</tt> , either <tt>Active</tt> or
--   <tt>Inactive</tt> .
module Network.AWS.Shield.GetSubscriptionState

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

-- | <i>See:</i> <a>getSubscriptionState</a> smart constructor.
data GetSubscriptionState

-- | Creates a value of <a>GetSubscriptionStateResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gssrsResponseStatus</a> - -- | The response status code.</li>
--   <li><a>gssrsSubscriptionState</a> - The status of the
--   subscription.</li>
--   </ul>
getSubscriptionStateResponse :: Int -> SubscriptionState -> GetSubscriptionStateResponse

-- | <i>See:</i> <a>getSubscriptionStateResponse</a> smart constructor.
data GetSubscriptionStateResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
gssrsResponseStatus :: Lens' GetSubscriptionStateResponse Int

-- | The status of the subscription.
gssrsSubscriptionState :: Lens' GetSubscriptionStateResponse SubscriptionState
instance GHC.Generics.Generic Network.AWS.Shield.GetSubscriptionState.GetSubscriptionStateResponse
instance Data.Data.Data Network.AWS.Shield.GetSubscriptionState.GetSubscriptionStateResponse
instance GHC.Show.Show Network.AWS.Shield.GetSubscriptionState.GetSubscriptionStateResponse
instance GHC.Read.Read Network.AWS.Shield.GetSubscriptionState.GetSubscriptionStateResponse
instance GHC.Classes.Eq Network.AWS.Shield.GetSubscriptionState.GetSubscriptionStateResponse
instance GHC.Generics.Generic Network.AWS.Shield.GetSubscriptionState.GetSubscriptionState
instance Data.Data.Data Network.AWS.Shield.GetSubscriptionState.GetSubscriptionState
instance GHC.Show.Show Network.AWS.Shield.GetSubscriptionState.GetSubscriptionState
instance GHC.Read.Read Network.AWS.Shield.GetSubscriptionState.GetSubscriptionState
instance GHC.Classes.Eq Network.AWS.Shield.GetSubscriptionState.GetSubscriptionState
instance Network.AWS.Types.AWSRequest Network.AWS.Shield.GetSubscriptionState.GetSubscriptionState
instance Control.DeepSeq.NFData Network.AWS.Shield.GetSubscriptionState.GetSubscriptionStateResponse
instance Data.Hashable.Class.Hashable Network.AWS.Shield.GetSubscriptionState.GetSubscriptionState
instance Control.DeepSeq.NFData Network.AWS.Shield.GetSubscriptionState.GetSubscriptionState
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Shield.GetSubscriptionState.GetSubscriptionState
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Shield.GetSubscriptionState.GetSubscriptionState
instance Network.AWS.Data.Path.ToPath Network.AWS.Shield.GetSubscriptionState.GetSubscriptionState
instance Network.AWS.Data.Query.ToQuery Network.AWS.Shield.GetSubscriptionState.GetSubscriptionState


-- | Provides details about the AWS Shield Advanced subscription for an
--   account.
module Network.AWS.Shield.DescribeSubscription

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

-- | <i>See:</i> <a>describeSubscription</a> smart constructor.
data DescribeSubscription

-- | Creates a value of <a>DescribeSubscriptionResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsrsSubscription</a> - The AWS Shield Advanced subscription
--   details for an account.</li>
--   <li><a>dsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeSubscriptionResponse :: Int -> DescribeSubscriptionResponse

-- | <i>See:</i> <a>describeSubscriptionResponse</a> smart constructor.
data DescribeSubscriptionResponse

-- | The AWS Shield Advanced subscription details for an account.
dsrsSubscription :: Lens' DescribeSubscriptionResponse (Maybe Subscription)

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


-- | Lists the details of a <a>Protection</a> object.
module Network.AWS.Shield.DescribeProtection

-- | Creates a value of <a>DescribeProtection</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dpProtectionId</a> - The unique identifier (ID) for the
--   <a>Protection</a> object that is described.</li>
--   </ul>
describeProtection :: Text -> DescribeProtection

-- | <i>See:</i> <a>describeProtection</a> smart constructor.
data DescribeProtection

-- | The unique identifier (ID) for the <a>Protection</a> object that is
--   described.
dpProtectionId :: Lens' DescribeProtection Text

-- | Creates a value of <a>DescribeProtectionResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dprsProtection</a> - The <a>Protection</a> object that is
--   described.</li>
--   <li><a>dprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeProtectionResponse :: Int -> DescribeProtectionResponse

-- | <i>See:</i> <a>describeProtectionResponse</a> smart constructor.
data DescribeProtectionResponse

-- | The <a>Protection</a> object that is described.
dprsProtection :: Lens' DescribeProtectionResponse (Maybe Protection)

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


-- | Describes the details of a DDoS attack.
module Network.AWS.Shield.DescribeAttack

-- | Creates a value of <a>DescribeAttack</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daAttackId</a> - The unique identifier (ID) for the attack that
--   to be described.</li>
--   </ul>
describeAttack :: Text -> DescribeAttack

-- | <i>See:</i> <a>describeAttack</a> smart constructor.
data DescribeAttack

-- | The unique identifier (ID) for the attack that to be described.
daAttackId :: Lens' DescribeAttack Text

-- | Creates a value of <a>DescribeAttackResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>darsAttack</a> - The attack that is described.</li>
--   <li><a>darsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeAttackResponse :: Int -> DescribeAttackResponse

-- | <i>See:</i> <a>describeAttackResponse</a> smart constructor.
data DescribeAttackResponse

-- | The attack that is described.
darsAttack :: Lens' DescribeAttackResponse (Maybe AttackDetail)

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


-- | Removes AWS Shield Advanced from an account. AWS Shield Advanced
--   requires a 1-year subscription commitment. You cannot delete a
--   subscription prior to the completion of that commitment.
module Network.AWS.Shield.DeleteSubscription

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

-- | <i>See:</i> <a>deleteSubscription</a> smart constructor.
data DeleteSubscription

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

-- | <i>See:</i> <a>deleteSubscriptionResponse</a> smart constructor.
data DeleteSubscriptionResponse

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


-- | Deletes an AWS Shield Advanced <a>Protection</a> .
module Network.AWS.Shield.DeleteProtection

-- | Creates a value of <a>DeleteProtection</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dProtectionId</a> - The unique identifier (ID) for the
--   <a>Protection</a> object to be deleted.</li>
--   </ul>
deleteProtection :: Text -> DeleteProtection

-- | <i>See:</i> <a>deleteProtection</a> smart constructor.
data DeleteProtection

-- | The unique identifier (ID) for the <a>Protection</a> object to be
--   deleted.
dProtectionId :: Lens' DeleteProtection Text

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

-- | <i>See:</i> <a>deleteProtectionResponse</a> smart constructor.
data DeleteProtectionResponse

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


-- | Activates AWS Shield Advanced for an account.
module Network.AWS.Shield.CreateSubscription

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

-- | <i>See:</i> <a>createSubscription</a> smart constructor.
data CreateSubscription

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

-- | <i>See:</i> <a>createSubscriptionResponse</a> smart constructor.
data CreateSubscriptionResponse

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


-- | Enables AWS Shield Advanced for a specific AWS resource. The resource
--   can be an Amazon CloudFront distribution, Elastic Load Balancing load
--   balancer, Elastic IP Address, or an Amazon Route 53 hosted zone.
module Network.AWS.Shield.CreateProtection

-- | Creates a value of <a>CreateProtection</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpName</a> - Friendly name for the <tt>Protection</tt> you are
--   creating.</li>
--   <li><a>cpResourceARN</a> - The ARN (Amazon Resource Name) of the
--   resource to be protected. The ARN should be in one of the following
--   formats: * For an Application Load Balancer:
--   <tt>arn:aws:elasticloadbalancing:<i>region</i> :<i>account-id</i>
--   :loadbalancer<i>app</i><i>load-balancer-name</i>
--   /<i>load-balancer-id</i> </tt> * For an Elastic Load Balancer (Classic
--   Load Balancer): <tt>arn:aws:elasticloadbalancing:<i>region</i>
--   :<i>account-id</i> :loadbalancer/<i>load-balancer-name</i> </tt> * For
--   AWS CloudFront distribution: <tt>arn:aws:cloudfront::<i>account-id</i>
--   :distribution/<i>distribution-id</i> </tt> * For Amazon Route 53:
--   <tt>arn:aws:route53::<i>account-id</i>
--   :hostedzone/<i>hosted-zone-id</i> </tt> * For an Elastic IP address:
--   <tt>arn:aws:ec2:<i>region</i> :<i>account-id</i>
--   :eip-allocation/<i>allocation-id</i> </tt></li>
--   </ul>
createProtection :: Text -> Text -> CreateProtection

-- | <i>See:</i> <a>createProtection</a> smart constructor.
data CreateProtection

-- | Friendly name for the <tt>Protection</tt> you are creating.
cpName :: Lens' CreateProtection Text

-- | The ARN (Amazon Resource Name) of the resource to be protected. The
--   ARN should be in one of the following formats: * For an Application
--   Load Balancer: <tt>arn:aws:elasticloadbalancing:<i>region</i>
--   :<i>account-id</i> :loadbalancer<i>app</i><i>load-balancer-name</i>
--   /<i>load-balancer-id</i> </tt> * For an Elastic Load Balancer (Classic
--   Load Balancer): <tt>arn:aws:elasticloadbalancing:<i>region</i>
--   :<i>account-id</i> :loadbalancer/<i>load-balancer-name</i> </tt> * For
--   AWS CloudFront distribution: <tt>arn:aws:cloudfront::<i>account-id</i>
--   :distribution/<i>distribution-id</i> </tt> * For Amazon Route 53:
--   <tt>arn:aws:route53::<i>account-id</i>
--   :hostedzone/<i>hosted-zone-id</i> </tt> * For an Elastic IP address:
--   <tt>arn:aws:ec2:<i>region</i> :<i>account-id</i>
--   :eip-allocation/<i>allocation-id</i> </tt>
cpResourceARN :: Lens' CreateProtection Text

-- | Creates a value of <a>CreateProtectionResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cprsProtectionId</a> - The unique identifier (ID) for the
--   <a>Protection</a> object that is created.</li>
--   <li><a>cprsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createProtectionResponse :: Int -> CreateProtectionResponse

-- | <i>See:</i> <a>createProtectionResponse</a> smart constructor.
data CreateProtectionResponse

-- | The unique identifier (ID) for the <a>Protection</a> object that is
--   created.
cprsProtectionId :: Lens' CreateProtectionResponse (Maybe Text)

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


module Network.AWS.Shield.Waiters


-- | <b>AWS Shield Advanced</b>
--   
--   This is the <i>AWS Shield Advanced API Reference</i> . This guide is
--   for developers who need detailed information about the AWS Shield
--   Advanced API actions, data types, and errors. For detailed information
--   about AWS WAF and AWS Shield Advanced features and an overview of how
--   to use the AWS WAF and AWS Shield Advanced APIs, see the <a>AWS WAF
--   and AWS Shield Developer Guide</a> .
module Network.AWS.Shield

-- | API version <tt>2016-06-02</tt> of the Amazon Shield SDK
--   configuration.
shield :: Service

-- | Exception that indicates that the resource is invalid. You might not
--   have access to the resource, or the resource might not exist.
_InvalidResourceException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception that indicates that the parameters passed to the API are
--   invalid.
_InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception that indicates that the operation would exceed a limit.
--   
--   <tt>Type</tt> is the type of limit that would be exceeded.
--   
--   <tt>Limit</tt> is the threshold that would be exceeded.
_LimitsExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception that indicates that a problem occurred with the service
--   infrastructure. You can retry the request.
_InternalErrorException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception indicating the specified resource already exists.
_ResourceAlreadyExistsException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception that indicates that the protection state has been modified
--   by another client. You can retry the request.
_OptimisticLockException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception that indicates that the operation would not cause any change
--   to occur.
_InvalidOperationException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception that indicates that the subscription you are trying to
--   delete has not yet completed the 1-year commitment. You cannot delete
--   this subscription.
_LockedSubscriptionException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Exception indicating the specified resource does not exist.
_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
data AttackLayer
Application :: AttackLayer
Network :: AttackLayer
data AttackPropertyIdentifier
DestinationURL :: AttackPropertyIdentifier
Referrer :: AttackPropertyIdentifier
SourceASN :: AttackPropertyIdentifier
SourceCountry :: AttackPropertyIdentifier
SourceIPAddress :: AttackPropertyIdentifier
SourceUserAgent :: AttackPropertyIdentifier
data SubResourceType
IP :: SubResourceType
URL :: SubResourceType
data SubscriptionState
Active :: SubscriptionState
Inactive :: SubscriptionState
data Unit
Bits :: Unit
Bytes :: Unit
Packets :: Unit
Requests :: Unit

-- | The details of a DDoS attack.
--   
--   <i>See:</i> <a>attackDetail</a> smart constructor.
data AttackDetail

-- | Creates a value of <a>AttackDetail</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adAttackId</a> - The unique identifier (ID) of the attack.</li>
--   <li><a>adStartTime</a> - The time the attack started, in Unix time in
--   seconds. For more information see <a>timestamp</a> .</li>
--   <li><a>adSubResources</a> - If applicable, additional detail about the
--   resource being attacked, for example, IP address or URL.</li>
--   <li><a>adMitigations</a> - List of mitigation actions taken for the
--   attack.</li>
--   <li><a>adAttackProperties</a> - The array of <a>AttackProperty</a>
--   objects.</li>
--   <li><a>adAttackCounters</a> - List of counters that describe the
--   attack for the specified time period.</li>
--   <li><a>adResourceARN</a> - The ARN (Amazon Resource Name) of the
--   resource that was attacked.</li>
--   <li><a>adEndTime</a> - The time the attack ended, in Unix time in
--   seconds. For more information see <a>timestamp</a> .</li>
--   </ul>
attackDetail :: AttackDetail

-- | The unique identifier (ID) of the attack.
adAttackId :: Lens' AttackDetail (Maybe Text)

-- | The time the attack started, in Unix time in seconds. For more
--   information see <a>timestamp</a> .
adStartTime :: Lens' AttackDetail (Maybe UTCTime)

-- | If applicable, additional detail about the resource being attacked,
--   for example, IP address or URL.
adSubResources :: Lens' AttackDetail [SubResourceSummary]

-- | List of mitigation actions taken for the attack.
adMitigations :: Lens' AttackDetail [Mitigation]

-- | The array of <a>AttackProperty</a> objects.
adAttackProperties :: Lens' AttackDetail [AttackProperty]

-- | List of counters that describe the attack for the specified time
--   period.
adAttackCounters :: Lens' AttackDetail [SummarizedCounter]

-- | The ARN (Amazon Resource Name) of the resource that was attacked.
adResourceARN :: Lens' AttackDetail (Maybe Text)

-- | The time the attack ended, in Unix time in seconds. For more
--   information see <a>timestamp</a> .
adEndTime :: Lens' AttackDetail (Maybe UTCTime)

-- | Details of the described attack.
--   
--   <i>See:</i> <a>attackProperty</a> smart constructor.
data AttackProperty

-- | Creates a value of <a>AttackProperty</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apAttackLayer</a> - The type of DDoS event that was observed.
--   <tt>NETWORK</tt> indicates layer 3 and layer 4 events and
--   <tt>APPLICATION</tt> indicates layer 7 events.</li>
--   <li><a>apTopContributors</a> - The array of <a>Contributor</a> objects
--   that includes the top five contributors to an attack.</li>
--   <li><a>apAttackPropertyIdentifier</a> - Defines the DDoS attack
--   property information that is provided.</li>
--   <li><a>apTotal</a> - The total contributions made to this attack by
--   all contributors, not just the five listed in the
--   <tt>TopContributors</tt> list.</li>
--   <li><a>apUnit</a> - The unit of the <tt>Value</tt> of the
--   contributions.</li>
--   </ul>
attackProperty :: AttackProperty

-- | The type of DDoS event that was observed. <tt>NETWORK</tt> indicates
--   layer 3 and layer 4 events and <tt>APPLICATION</tt> indicates layer 7
--   events.
apAttackLayer :: Lens' AttackProperty (Maybe AttackLayer)

-- | The array of <a>Contributor</a> objects that includes the top five
--   contributors to an attack.
apTopContributors :: Lens' AttackProperty [Contributor]

-- | Defines the DDoS attack property information that is provided.
apAttackPropertyIdentifier :: Lens' AttackProperty (Maybe AttackPropertyIdentifier)

-- | The total contributions made to this attack by all contributors, not
--   just the five listed in the <tt>TopContributors</tt> list.
apTotal :: Lens' AttackProperty (Maybe Integer)

-- | The unit of the <tt>Value</tt> of the contributions.
apUnit :: Lens' AttackProperty (Maybe Unit)

-- | Summarizes all DDoS attacks for a specified time period.
--   
--   <i>See:</i> <a>attackSummary</a> smart constructor.
data AttackSummary

-- | Creates a value of <a>AttackSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>asAttackVectors</a> - The list of attacks for a specified time
--   period.</li>
--   <li><a>asAttackId</a> - The unique identifier (ID) of the attack.</li>
--   <li><a>asStartTime</a> - The start time of the attack, in Unix time in
--   seconds. For more information see <a>timestamp</a> .</li>
--   <li><a>asResourceARN</a> - The ARN (Amazon Resource Name) of the
--   resource that was attacked.</li>
--   <li><a>asEndTime</a> - The end time of the attack, in Unix time in
--   seconds. For more information see <a>timestamp</a> .</li>
--   </ul>
attackSummary :: AttackSummary

-- | The list of attacks for a specified time period.
asAttackVectors :: Lens' AttackSummary [AttackVectorDescription]

-- | The unique identifier (ID) of the attack.
asAttackId :: Lens' AttackSummary (Maybe Text)

-- | The start time of the attack, in Unix time in seconds. For more
--   information see <a>timestamp</a> .
asStartTime :: Lens' AttackSummary (Maybe UTCTime)

-- | The ARN (Amazon Resource Name) of the resource that was attacked.
asResourceARN :: Lens' AttackSummary (Maybe Text)

-- | The end time of the attack, in Unix time in seconds. For more
--   information see <a>timestamp</a> .
asEndTime :: Lens' AttackSummary (Maybe UTCTime)

-- | Describes the attack.
--   
--   <i>See:</i> <a>attackVectorDescription</a> smart constructor.
data AttackVectorDescription

-- | Creates a value of <a>AttackVectorDescription</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>avdVectorType</a> - The attack type. Valid values: *
--   UDP_TRAFFIC * UDP_FRAGMENT * GENERIC_UDP_REFLECTION * DNS_REFLECTION *
--   NTP_REFLECTION * CHARGEN_REFLECTION * SSDP_REFLECTION * PORT_MAPPER *
--   RIP_REFLECTION * SNMP_REFLECTION * MSSQL_REFLECTION *
--   NET_BIOS_REFLECTION * SYN_FLOOD * ACK_FLOOD * REQUEST_FLOOD</li>
--   </ul>
attackVectorDescription :: Text -> AttackVectorDescription

-- | The attack type. Valid values: * UDP_TRAFFIC * UDP_FRAGMENT *
--   GENERIC_UDP_REFLECTION * DNS_REFLECTION * NTP_REFLECTION *
--   CHARGEN_REFLECTION * SSDP_REFLECTION * PORT_MAPPER * RIP_REFLECTION *
--   SNMP_REFLECTION * MSSQL_REFLECTION * NET_BIOS_REFLECTION * SYN_FLOOD *
--   ACK_FLOOD * REQUEST_FLOOD
avdVectorType :: Lens' AttackVectorDescription Text

-- | A contributor to the attack and their contribution.
--   
--   <i>See:</i> <a>contributor</a> smart constructor.
data Contributor

-- | Creates a value of <a>Contributor</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cValue</a> - The contribution of this contributor expressed in
--   <a>Protection</a> units. For example <tt>10,000</tt> .</li>
--   <li><a>cName</a> - The name of the contributor. This is dependent on
--   the <tt>AttackPropertyIdentifier</tt> . For example, if the
--   <tt>AttackPropertyIdentifier</tt> is <tt>SOURCE_COUNTRY</tt> , the
--   <tt>Name</tt> could be <tt>United States</tt> .</li>
--   </ul>
contributor :: Contributor

-- | The contribution of this contributor expressed in <a>Protection</a>
--   units. For example <tt>10,000</tt> .
cValue :: Lens' Contributor (Maybe Integer)

-- | The name of the contributor. This is dependent on the
--   <tt>AttackPropertyIdentifier</tt> . For example, if the
--   <tt>AttackPropertyIdentifier</tt> is <tt>SOURCE_COUNTRY</tt> , the
--   <tt>Name</tt> could be <tt>United States</tt> .
cName :: Lens' Contributor (Maybe Text)

-- | The mitigation applied to a DDoS attack.
--   
--   <i>See:</i> <a>mitigation</a> smart constructor.
data Mitigation

-- | Creates a value of <a>Mitigation</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mMitigationName</a> - The name of the mitigation taken for this
--   attack.</li>
--   </ul>
mitigation :: Mitigation

-- | The name of the mitigation taken for this attack.
mMitigationName :: Lens' Mitigation (Maybe Text)

-- | An object that represents a resource that is under DDoS protection.
--   
--   <i>See:</i> <a>protection</a> smart constructor.
data Protection

-- | Creates a value of <a>Protection</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pResourceARN</a> - The ARN (Amazon Resource Name) of the AWS
--   resource that is protected.</li>
--   <li><a>pName</a> - The friendly name of the protection. For example,
--   <tt>My CloudFront distributions</tt> .</li>
--   <li><a>pId</a> - The unique identifier (ID) of the protection.</li>
--   </ul>
protection :: Protection

-- | The ARN (Amazon Resource Name) of the AWS resource that is protected.
pResourceARN :: Lens' Protection (Maybe Text)

-- | The friendly name of the protection. For example, <tt>My CloudFront
--   distributions</tt> .
pName :: Lens' Protection (Maybe Text)

-- | The unique identifier (ID) of the protection.
pId :: Lens' Protection (Maybe Text)

-- | The attack information for the specified SubResource.
--   
--   <i>See:</i> <a>subResourceSummary</a> smart constructor.
data SubResourceSummary

-- | Creates a value of <a>SubResourceSummary</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srsCounters</a> - The counters that describe the details of the
--   attack.</li>
--   <li><a>srsAttackVectors</a> - The list of attack types and associated
--   counters.</li>
--   <li><a>srsId</a> - The unique identifier (ID) of the
--   <tt>SubResource</tt> .</li>
--   <li><a>srsType</a> - The <tt>SubResource</tt> type.</li>
--   </ul>
subResourceSummary :: SubResourceSummary

-- | The counters that describe the details of the attack.
srsCounters :: Lens' SubResourceSummary [SummarizedCounter]

-- | The list of attack types and associated counters.
srsAttackVectors :: Lens' SubResourceSummary [SummarizedAttackVector]

-- | The unique identifier (ID) of the <tt>SubResource</tt> .
srsId :: Lens' SubResourceSummary (Maybe Text)

-- | The <tt>SubResource</tt> type.
srsType :: Lens' SubResourceSummary (Maybe SubResourceType)

-- | Information about the AWS Shield Advanced subscription for an account.
--   
--   <i>See:</i> <a>subscription</a> smart constructor.
data Subscription

-- | Creates a value of <a>Subscription</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sTimeCommitmentInSeconds</a> - The length, in seconds, of the
--   AWS Shield Advanced subscription for the account.</li>
--   <li><a>sStartTime</a> - The start time of the subscription, in Unix
--   time in seconds. For more information see <a>timestamp</a> .</li>
--   </ul>
subscription :: Subscription

-- | The length, in seconds, of the AWS Shield Advanced subscription for
--   the account.
sTimeCommitmentInSeconds :: Lens' Subscription (Maybe Natural)

-- | The start time of the subscription, in Unix time in seconds. For more
--   information see <a>timestamp</a> .
sStartTime :: Lens' Subscription (Maybe UTCTime)

-- | A summary of information about the attack.
--   
--   <i>See:</i> <a>summarizedAttackVector</a> smart constructor.
data SummarizedAttackVector

-- | Creates a value of <a>SummarizedAttackVector</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>savVectorCounters</a> - The list of counters that describe the
--   details of the attack.</li>
--   <li><a>savVectorType</a> - The attack type, for example, SNMP
--   reflection or SYN flood.</li>
--   </ul>
summarizedAttackVector :: Text -> SummarizedAttackVector

-- | The list of counters that describe the details of the attack.
savVectorCounters :: Lens' SummarizedAttackVector [SummarizedCounter]

-- | The attack type, for example, SNMP reflection or SYN flood.
savVectorType :: Lens' SummarizedAttackVector Text

-- | The counter that describes a DDoS attack.
--   
--   <i>See:</i> <a>summarizedCounter</a> smart constructor.
data SummarizedCounter

-- | Creates a value of <a>SummarizedCounter</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scMax</a> - The maximum value of the counter for a specified
--   time period.</li>
--   <li><a>scAverage</a> - The average value of the counter for a
--   specified time period.</li>
--   <li><a>scN</a> - The number of counters for a specified time
--   period.</li>
--   <li><a>scName</a> - The counter name.</li>
--   <li><a>scSum</a> - The total of counter values for a specified time
--   period.</li>
--   <li><a>scUnit</a> - The unit of the counters.</li>
--   </ul>
summarizedCounter :: SummarizedCounter

-- | The maximum value of the counter for a specified time period.
scMax :: Lens' SummarizedCounter (Maybe Double)

-- | The average value of the counter for a specified time period.
scAverage :: Lens' SummarizedCounter (Maybe Double)

-- | The number of counters for a specified time period.
scN :: Lens' SummarizedCounter (Maybe Int)

-- | The counter name.
scName :: Lens' SummarizedCounter (Maybe Text)

-- | The total of counter values for a specified time period.
scSum :: Lens' SummarizedCounter (Maybe Double)

-- | The unit of the counters.
scUnit :: Lens' SummarizedCounter (Maybe Text)

-- | The time range.
--   
--   <i>See:</i> <a>timeRange</a> smart constructor.
data TimeRange

-- | Creates a value of <a>TimeRange</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>trFromInclusive</a> - The start time, in Unix time in seconds.
--   For more information see <a>timestamp</a> .</li>
--   <li><a>trToExclusive</a> - The end time, in Unix time in seconds. For
--   more information see <a>timestamp</a> .</li>
--   </ul>
timeRange :: TimeRange

-- | The start time, in Unix time in seconds. For more information see
--   <a>timestamp</a> .
trFromInclusive :: Lens' TimeRange (Maybe UTCTime)

-- | The end time, in Unix time in seconds. For more information see
--   <a>timestamp</a> .
trToExclusive :: Lens' TimeRange (Maybe UTCTime)
