{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module Network.AWS.FMS.Types.Product where
import Network.AWS.FMS.Types.Sum
import Network.AWS.Lens
import Network.AWS.Prelude
data ComplianceViolator = ComplianceViolator'
{ _cvResourceId :: !(Maybe Text)
, _cvResourceType :: !(Maybe Text)
, _cvViolationReason :: !(Maybe ViolationReason)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
complianceViolator
:: ComplianceViolator
complianceViolator =
ComplianceViolator'
{ _cvResourceId = Nothing
, _cvResourceType = Nothing
, _cvViolationReason = Nothing
}
cvResourceId :: Lens' ComplianceViolator (Maybe Text)
cvResourceId = lens _cvResourceId (\ s a -> s{_cvResourceId = a})
cvResourceType :: Lens' ComplianceViolator (Maybe Text)
cvResourceType = lens _cvResourceType (\ s a -> s{_cvResourceType = a})
cvViolationReason :: Lens' ComplianceViolator (Maybe ViolationReason)
cvViolationReason = lens _cvViolationReason (\ s a -> s{_cvViolationReason = a})
instance FromJSON ComplianceViolator where
parseJSON
= withObject "ComplianceViolator"
(\ x ->
ComplianceViolator' <$>
(x .:? "ResourceId") <*> (x .:? "ResourceType") <*>
(x .:? "ViolationReason"))
instance Hashable ComplianceViolator where
instance NFData ComplianceViolator where
data EvaluationResult = EvaluationResult'
{ _erViolatorCount :: !(Maybe Nat)
, _erComplianceStatus :: !(Maybe PolicyComplianceStatusType)
, _erEvaluationLimitExceeded :: !(Maybe Bool)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
evaluationResult
:: EvaluationResult
evaluationResult =
EvaluationResult'
{ _erViolatorCount = Nothing
, _erComplianceStatus = Nothing
, _erEvaluationLimitExceeded = Nothing
}
erViolatorCount :: Lens' EvaluationResult (Maybe Natural)
erViolatorCount = lens _erViolatorCount (\ s a -> s{_erViolatorCount = a}) . mapping _Nat
erComplianceStatus :: Lens' EvaluationResult (Maybe PolicyComplianceStatusType)
erComplianceStatus = lens _erComplianceStatus (\ s a -> s{_erComplianceStatus = a})
erEvaluationLimitExceeded :: Lens' EvaluationResult (Maybe Bool)
erEvaluationLimitExceeded = lens _erEvaluationLimitExceeded (\ s a -> s{_erEvaluationLimitExceeded = a})
instance FromJSON EvaluationResult where
parseJSON
= withObject "EvaluationResult"
(\ x ->
EvaluationResult' <$>
(x .:? "ViolatorCount") <*>
(x .:? "ComplianceStatus")
<*> (x .:? "EvaluationLimitExceeded"))
instance Hashable EvaluationResult where
instance NFData EvaluationResult where
data Policy = Policy'
{ _pPolicyId :: !(Maybe Text)
, _pResourceTags :: !(Maybe [ResourceTag])
, _pPolicyUpdateToken :: !(Maybe Text)
, _pPolicyName :: !Text
, _pSecurityServicePolicyData :: !SecurityServicePolicyData
, _pResourceType :: !Text
, _pExcludeResourceTags :: !Bool
, _pRemediationEnabled :: !Bool
} deriving (Eq, Read, Show, Data, Typeable, Generic)
policy
:: Text
-> SecurityServicePolicyData
-> Text
-> Bool
-> Bool
-> Policy
policy pPolicyName_ pSecurityServicePolicyData_ pResourceType_ pExcludeResourceTags_ pRemediationEnabled_ =
Policy'
{ _pPolicyId = Nothing
, _pResourceTags = Nothing
, _pPolicyUpdateToken = Nothing
, _pPolicyName = pPolicyName_
, _pSecurityServicePolicyData = pSecurityServicePolicyData_
, _pResourceType = pResourceType_
, _pExcludeResourceTags = pExcludeResourceTags_
, _pRemediationEnabled = pRemediationEnabled_
}
pPolicyId :: Lens' Policy (Maybe Text)
pPolicyId = lens _pPolicyId (\ s a -> s{_pPolicyId = a})
pResourceTags :: Lens' Policy [ResourceTag]
pResourceTags = lens _pResourceTags (\ s a -> s{_pResourceTags = a}) . _Default . _Coerce
pPolicyUpdateToken :: Lens' Policy (Maybe Text)
pPolicyUpdateToken = lens _pPolicyUpdateToken (\ s a -> s{_pPolicyUpdateToken = a})
pPolicyName :: Lens' Policy Text
pPolicyName = lens _pPolicyName (\ s a -> s{_pPolicyName = a})
pSecurityServicePolicyData :: Lens' Policy SecurityServicePolicyData
pSecurityServicePolicyData = lens _pSecurityServicePolicyData (\ s a -> s{_pSecurityServicePolicyData = a})
pResourceType :: Lens' Policy Text
pResourceType = lens _pResourceType (\ s a -> s{_pResourceType = a})
pExcludeResourceTags :: Lens' Policy Bool
pExcludeResourceTags = lens _pExcludeResourceTags (\ s a -> s{_pExcludeResourceTags = a})
pRemediationEnabled :: Lens' Policy Bool
pRemediationEnabled = lens _pRemediationEnabled (\ s a -> s{_pRemediationEnabled = a})
instance FromJSON Policy where
parseJSON
= withObject "Policy"
(\ x ->
Policy' <$>
(x .:? "PolicyId") <*>
(x .:? "ResourceTags" .!= mempty)
<*> (x .:? "PolicyUpdateToken")
<*> (x .: "PolicyName")
<*> (x .: "SecurityServicePolicyData")
<*> (x .: "ResourceType")
<*> (x .: "ExcludeResourceTags")
<*> (x .: "RemediationEnabled"))
instance Hashable Policy where
instance NFData Policy where
instance ToJSON Policy where
toJSON Policy'{..}
= object
(catMaybes
[("PolicyId" .=) <$> _pPolicyId,
("ResourceTags" .=) <$> _pResourceTags,
("PolicyUpdateToken" .=) <$> _pPolicyUpdateToken,
Just ("PolicyName" .= _pPolicyName),
Just
("SecurityServicePolicyData" .=
_pSecurityServicePolicyData),
Just ("ResourceType" .= _pResourceType),
Just
("ExcludeResourceTags" .= _pExcludeResourceTags),
Just ("RemediationEnabled" .= _pRemediationEnabled)])
data PolicyComplianceDetail = PolicyComplianceDetail'
{ _pcdExpiredAt :: !(Maybe POSIX)
, _pcdPolicyId :: !(Maybe Text)
, _pcdViolators :: !(Maybe [ComplianceViolator])
, _pcdEvaluationLimitExceeded :: !(Maybe Bool)
, _pcdPolicyOwner :: !(Maybe Text)
, _pcdMemberAccount :: !(Maybe Text)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
policyComplianceDetail
:: PolicyComplianceDetail
policyComplianceDetail =
PolicyComplianceDetail'
{ _pcdExpiredAt = Nothing
, _pcdPolicyId = Nothing
, _pcdViolators = Nothing
, _pcdEvaluationLimitExceeded = Nothing
, _pcdPolicyOwner = Nothing
, _pcdMemberAccount = Nothing
}
pcdExpiredAt :: Lens' PolicyComplianceDetail (Maybe UTCTime)
pcdExpiredAt = lens _pcdExpiredAt (\ s a -> s{_pcdExpiredAt = a}) . mapping _Time
pcdPolicyId :: Lens' PolicyComplianceDetail (Maybe Text)
pcdPolicyId = lens _pcdPolicyId (\ s a -> s{_pcdPolicyId = a})
pcdViolators :: Lens' PolicyComplianceDetail [ComplianceViolator]
pcdViolators = lens _pcdViolators (\ s a -> s{_pcdViolators = a}) . _Default . _Coerce
pcdEvaluationLimitExceeded :: Lens' PolicyComplianceDetail (Maybe Bool)
pcdEvaluationLimitExceeded = lens _pcdEvaluationLimitExceeded (\ s a -> s{_pcdEvaluationLimitExceeded = a})
pcdPolicyOwner :: Lens' PolicyComplianceDetail (Maybe Text)
pcdPolicyOwner = lens _pcdPolicyOwner (\ s a -> s{_pcdPolicyOwner = a})
pcdMemberAccount :: Lens' PolicyComplianceDetail (Maybe Text)
pcdMemberAccount = lens _pcdMemberAccount (\ s a -> s{_pcdMemberAccount = a})
instance FromJSON PolicyComplianceDetail where
parseJSON
= withObject "PolicyComplianceDetail"
(\ x ->
PolicyComplianceDetail' <$>
(x .:? "ExpiredAt") <*> (x .:? "PolicyId") <*>
(x .:? "Violators" .!= mempty)
<*> (x .:? "EvaluationLimitExceeded")
<*> (x .:? "PolicyOwner")
<*> (x .:? "MemberAccount"))
instance Hashable PolicyComplianceDetail where
instance NFData PolicyComplianceDetail where
data PolicyComplianceStatus = PolicyComplianceStatus'
{ _pcsEvaluationResults :: !(Maybe [EvaluationResult])
, _pcsLastUpdated :: !(Maybe POSIX)
, _pcsPolicyName :: !(Maybe Text)
, _pcsPolicyId :: !(Maybe Text)
, _pcsPolicyOwner :: !(Maybe Text)
, _pcsMemberAccount :: !(Maybe Text)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
policyComplianceStatus
:: PolicyComplianceStatus
policyComplianceStatus =
PolicyComplianceStatus'
{ _pcsEvaluationResults = Nothing
, _pcsLastUpdated = Nothing
, _pcsPolicyName = Nothing
, _pcsPolicyId = Nothing
, _pcsPolicyOwner = Nothing
, _pcsMemberAccount = Nothing
}
pcsEvaluationResults :: Lens' PolicyComplianceStatus [EvaluationResult]
pcsEvaluationResults = lens _pcsEvaluationResults (\ s a -> s{_pcsEvaluationResults = a}) . _Default . _Coerce
pcsLastUpdated :: Lens' PolicyComplianceStatus (Maybe UTCTime)
pcsLastUpdated = lens _pcsLastUpdated (\ s a -> s{_pcsLastUpdated = a}) . mapping _Time
pcsPolicyName :: Lens' PolicyComplianceStatus (Maybe Text)
pcsPolicyName = lens _pcsPolicyName (\ s a -> s{_pcsPolicyName = a})
pcsPolicyId :: Lens' PolicyComplianceStatus (Maybe Text)
pcsPolicyId = lens _pcsPolicyId (\ s a -> s{_pcsPolicyId = a})
pcsPolicyOwner :: Lens' PolicyComplianceStatus (Maybe Text)
pcsPolicyOwner = lens _pcsPolicyOwner (\ s a -> s{_pcsPolicyOwner = a})
pcsMemberAccount :: Lens' PolicyComplianceStatus (Maybe Text)
pcsMemberAccount = lens _pcsMemberAccount (\ s a -> s{_pcsMemberAccount = a})
instance FromJSON PolicyComplianceStatus where
parseJSON
= withObject "PolicyComplianceStatus"
(\ x ->
PolicyComplianceStatus' <$>
(x .:? "EvaluationResults" .!= mempty) <*>
(x .:? "LastUpdated")
<*> (x .:? "PolicyName")
<*> (x .:? "PolicyId")
<*> (x .:? "PolicyOwner")
<*> (x .:? "MemberAccount"))
instance Hashable PolicyComplianceStatus where
instance NFData PolicyComplianceStatus where
data PolicySummary = PolicySummary'
{ _psPolicyName :: !(Maybe Text)
, _psRemediationEnabled :: !(Maybe Bool)
, _psResourceType :: !(Maybe Text)
, _psPolicyId :: !(Maybe Text)
, _psPolicyARN :: !(Maybe Text)
, _psSecurityServiceType :: !(Maybe SecurityServiceType)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
policySummary
:: PolicySummary
policySummary =
PolicySummary'
{ _psPolicyName = Nothing
, _psRemediationEnabled = Nothing
, _psResourceType = Nothing
, _psPolicyId = Nothing
, _psPolicyARN = Nothing
, _psSecurityServiceType = Nothing
}
psPolicyName :: Lens' PolicySummary (Maybe Text)
psPolicyName = lens _psPolicyName (\ s a -> s{_psPolicyName = a})
psRemediationEnabled :: Lens' PolicySummary (Maybe Bool)
psRemediationEnabled = lens _psRemediationEnabled (\ s a -> s{_psRemediationEnabled = a})
psResourceType :: Lens' PolicySummary (Maybe Text)
psResourceType = lens _psResourceType (\ s a -> s{_psResourceType = a})
psPolicyId :: Lens' PolicySummary (Maybe Text)
psPolicyId = lens _psPolicyId (\ s a -> s{_psPolicyId = a})
psPolicyARN :: Lens' PolicySummary (Maybe Text)
psPolicyARN = lens _psPolicyARN (\ s a -> s{_psPolicyARN = a})
psSecurityServiceType :: Lens' PolicySummary (Maybe SecurityServiceType)
psSecurityServiceType = lens _psSecurityServiceType (\ s a -> s{_psSecurityServiceType = a})
instance FromJSON PolicySummary where
parseJSON
= withObject "PolicySummary"
(\ x ->
PolicySummary' <$>
(x .:? "PolicyName") <*> (x .:? "RemediationEnabled")
<*> (x .:? "ResourceType")
<*> (x .:? "PolicyId")
<*> (x .:? "PolicyArn")
<*> (x .:? "SecurityServiceType"))
instance Hashable PolicySummary where
instance NFData PolicySummary where
data ResourceTag = ResourceTag'
{ _rtValue :: !(Maybe Text)
, _rtKey :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
resourceTag
:: Text
-> ResourceTag
resourceTag pKey_ = ResourceTag' {_rtValue = Nothing, _rtKey = pKey_}
rtValue :: Lens' ResourceTag (Maybe Text)
rtValue = lens _rtValue (\ s a -> s{_rtValue = a})
rtKey :: Lens' ResourceTag Text
rtKey = lens _rtKey (\ s a -> s{_rtKey = a})
instance FromJSON ResourceTag where
parseJSON
= withObject "ResourceTag"
(\ x ->
ResourceTag' <$> (x .:? "Value") <*> (x .: "Key"))
instance Hashable ResourceTag where
instance NFData ResourceTag where
instance ToJSON ResourceTag where
toJSON ResourceTag'{..}
= object
(catMaybes
[("Value" .=) <$> _rtValue, Just ("Key" .= _rtKey)])
data SecurityServicePolicyData = SecurityServicePolicyData'
{ _sspdManagedServiceData :: !(Maybe Text)
, _sspdType :: !SecurityServiceType
} deriving (Eq, Read, Show, Data, Typeable, Generic)
securityServicePolicyData
:: SecurityServiceType
-> SecurityServicePolicyData
securityServicePolicyData pType_ =
SecurityServicePolicyData'
{_sspdManagedServiceData = Nothing, _sspdType = pType_}
sspdManagedServiceData :: Lens' SecurityServicePolicyData (Maybe Text)
sspdManagedServiceData = lens _sspdManagedServiceData (\ s a -> s{_sspdManagedServiceData = a})
sspdType :: Lens' SecurityServicePolicyData SecurityServiceType
sspdType = lens _sspdType (\ s a -> s{_sspdType = a})
instance FromJSON SecurityServicePolicyData where
parseJSON
= withObject "SecurityServicePolicyData"
(\ x ->
SecurityServicePolicyData' <$>
(x .:? "ManagedServiceData") <*> (x .: "Type"))
instance Hashable SecurityServicePolicyData where
instance NFData SecurityServicePolicyData where
instance ToJSON SecurityServicePolicyData where
toJSON SecurityServicePolicyData'{..}
= object
(catMaybes
[("ManagedServiceData" .=) <$>
_sspdManagedServiceData,
Just ("Type" .= _sspdType)])