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


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.
_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 has been modified by
--   another client. You can retry the request.
_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 SubResourceType
IP :: SubResourceType
URL :: SubResourceType

-- | 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 the format
--   2016-12-16T13:50Z.</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>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 the format
--   2016-12-16T13:50Z.</li>
--   </ul>
attackDetail :: AttackDetail

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

-- | The time the attack started, in the format 2016-12-16T13:50Z.
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]

-- | 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 the format 2016-12-16T13:50Z.
adEndTime :: Lens' AttackDetail (Maybe UTCTime)

-- | 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 the format
--   2016-12-16T13:50Z.</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 the format
--   2016-12-16T13:50Z.</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 the format 2016-12-16T13:50Z.
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 the format 2016-12-16T13:50Z.
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, for example, SNMP
--   reflection or SYN flood.</li>
--   </ul>
attackVectorDescription :: Text -> AttackVectorDescription

-- | The attack type, for example, SNMP reflection or SYN flood.
avdVectorType :: Lens' AttackVectorDescription 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 the
--   format "2016-12-16T13:50Z".</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 the format "2016-12-16T13:50Z".
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 the format
--   2016-12-16T13:50Z.</li>
--   <li><a>trToExclusive</a> - The end time, in the format
--   2016-12-16T15:50Z.</li>
--   </ul>
timeRange :: TimeRange

-- | The start time, in the format 2016-12-16T13:50Z.
trFromInclusive :: Lens' TimeRange (Maybe UTCTime)

-- | The end time, in the format 2016-12-16T15:50Z.
trToExclusive :: Lens' TimeRange (Maybe UTCTime)


module Network.AWS.Shield.Waiters


-- | Lists all <a>Protection</a> objects for the account.
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 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
instance Control.DeepSeq.NFData Network.AWS.Shield.ListProtections.ListProtectionsResponse


-- | 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 time period for the attacks.</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.</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 time period for the attacks.
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.
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 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
instance Control.DeepSeq.NFData Network.AWS.Shield.ListAttacks.ListAttacksResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.Shield.DescribeSubscription.DescribeSubscriptionResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.Shield.DescribeProtection.DescribeProtectionResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.Shield.DescribeAttack.DescribeAttackResponse


-- | Removes AWS Shield Advanced from an account.
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 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
instance Control.DeepSeq.NFData Network.AWS.Shield.DeleteSubscription.DeleteSubscriptionResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.Shield.DeleteProtection.DeleteProtectionResponse


-- | 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 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
instance Control.DeepSeq.NFData Network.AWS.Shield.CreateSubscription.CreateSubscriptionResponse


-- | Enables AWS Shield Advanced for a specific AWS resource. The resource
--   can be an Amazon CloudFront distribution, Elastic Load Balancing load
--   balancer, 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.</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.
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 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
instance Control.DeepSeq.NFData Network.AWS.Shield.CreateProtection.CreateProtectionResponse


-- | <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.
_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 has been modified by
--   another client. You can retry the request.
_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 SubResourceType
IP :: SubResourceType
URL :: SubResourceType

-- | 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 the format
--   2016-12-16T13:50Z.</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>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 the format
--   2016-12-16T13:50Z.</li>
--   </ul>
attackDetail :: AttackDetail

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

-- | The time the attack started, in the format 2016-12-16T13:50Z.
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]

-- | 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 the format 2016-12-16T13:50Z.
adEndTime :: Lens' AttackDetail (Maybe UTCTime)

-- | 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 the format
--   2016-12-16T13:50Z.</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 the format
--   2016-12-16T13:50Z.</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 the format 2016-12-16T13:50Z.
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 the format 2016-12-16T13:50Z.
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, for example, SNMP
--   reflection or SYN flood.</li>
--   </ul>
attackVectorDescription :: Text -> AttackVectorDescription

-- | The attack type, for example, SNMP reflection or SYN flood.
avdVectorType :: Lens' AttackVectorDescription 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 the
--   format "2016-12-16T13:50Z".</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 the format "2016-12-16T13:50Z".
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 the format
--   2016-12-16T13:50Z.</li>
--   <li><a>trToExclusive</a> - The end time, in the format
--   2016-12-16T15:50Z.</li>
--   </ul>
timeRange :: TimeRange

-- | The start time, in the format 2016-12-16T13:50Z.
trFromInclusive :: Lens' TimeRange (Maybe UTCTime)

-- | The end time, in the format 2016-12-16T15:50Z.
trToExclusive :: Lens' TimeRange (Maybe UTCTime)
