{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.CertificateManager.Types.Product -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- module Network.AWS.CertificateManager.Types.Product where import Network.AWS.CertificateManager.Types.Sum import Network.AWS.Lens import Network.AWS.Prelude -- | This structure is returned in the response object of the -- < DescribeCertificate> action. -- -- /See:/ 'certificateDetail' smart constructor. data CertificateDetail = CertificateDetail' { _cdSubject :: !(Maybe Text) , _cdStatus :: !(Maybe CertificateStatus) , _cdSubjectAlternativeNames :: !(Maybe (List1 Text)) , _cdInUseBy :: !(Maybe [Text]) , _cdCreatedAt :: !(Maybe POSIX) , _cdCertificateARN :: !(Maybe Text) , _cdSerial :: !(Maybe Text) , _cdRevokedAt :: !(Maybe POSIX) , _cdNotBefore :: !(Maybe POSIX) , _cdRevocationReason :: !(Maybe RevocationReason) , _cdDomainName :: !(Maybe Text) , _cdKeyAlgorithm :: !(Maybe KeyAlgorithm) , _cdIssuedAt :: !(Maybe POSIX) , _cdSignatureAlgorithm :: !(Maybe Text) , _cdDomainValidationOptions :: !(Maybe (List1 DomainValidation)) , _cdIssuer :: !(Maybe Text) , _cdNotAfter :: !(Maybe POSIX) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CertificateDetail' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cdSubject' -- -- * 'cdStatus' -- -- * 'cdSubjectAlternativeNames' -- -- * 'cdInUseBy' -- -- * 'cdCreatedAt' -- -- * 'cdCertificateARN' -- -- * 'cdSerial' -- -- * 'cdRevokedAt' -- -- * 'cdNotBefore' -- -- * 'cdRevocationReason' -- -- * 'cdDomainName' -- -- * 'cdKeyAlgorithm' -- -- * 'cdIssuedAt' -- -- * 'cdSignatureAlgorithm' -- -- * 'cdDomainValidationOptions' -- -- * 'cdIssuer' -- -- * 'cdNotAfter' certificateDetail :: CertificateDetail certificateDetail = CertificateDetail' { _cdSubject = Nothing , _cdStatus = Nothing , _cdSubjectAlternativeNames = Nothing , _cdInUseBy = Nothing , _cdCreatedAt = Nothing , _cdCertificateARN = Nothing , _cdSerial = Nothing , _cdRevokedAt = Nothing , _cdNotBefore = Nothing , _cdRevocationReason = Nothing , _cdDomainName = Nothing , _cdKeyAlgorithm = Nothing , _cdIssuedAt = Nothing , _cdSignatureAlgorithm = Nothing , _cdDomainValidationOptions = Nothing , _cdIssuer = Nothing , _cdNotAfter = Nothing } -- | The X.500 distinguished name of the entity associated with the public -- key contained in the certificate. cdSubject :: Lens' CertificateDetail (Maybe Text) cdSubject = lens _cdSubject (\ s a -> s{_cdSubject = a}); -- | A 'CertificateStatus' enumeration value that can contain one of the -- following: -- -- - PENDING_VALIDATION -- -- - ISSUED -- -- - INACTIVE -- -- - EXPIRED -- -- - REVOKED -- -- - FAILED -- -- - VALIDATION_TIMED_OUT -- cdStatus :: Lens' CertificateDetail (Maybe CertificateStatus) cdStatus = lens _cdStatus (\ s a -> s{_cdStatus = a}); -- | One or more domain names (subject alternative names) included in the -- certificate request. After the certificate is issued, this list includes -- the domain names bound to the public key contained in the certificate. -- The subject alternative names include the canonical domain name (CN) of -- the certificate and additional domain names that can be used to connect -- to the website. cdSubjectAlternativeNames :: Lens' CertificateDetail (Maybe (NonEmpty Text)) cdSubjectAlternativeNames = lens _cdSubjectAlternativeNames (\ s a -> s{_cdSubjectAlternativeNames = a}) . mapping _List1; -- | List that identifies ARNs that are using the certificate. A single ACM -- Certificate can be used by multiple AWS resources. cdInUseBy :: Lens' CertificateDetail [Text] cdInUseBy = lens _cdInUseBy (\ s a -> s{_cdInUseBy = a}) . _Default . _Coerce; -- | Time at which the certificate was requested. cdCreatedAt :: Lens' CertificateDetail (Maybe UTCTime) cdCreatedAt = lens _cdCreatedAt (\ s a -> s{_cdCreatedAt = a}) . mapping _Time; -- | Amazon Resource Name (ARN) of the certificate. This is of the form: -- -- 'arn:aws:acm:region:123456789012:certificate\/12345678-1234-1234-1234-123456789012' -- -- For more information about ARNs, see -- . cdCertificateARN :: Lens' CertificateDetail (Maybe Text) cdCertificateARN = lens _cdCertificateARN (\ s a -> s{_cdCertificateARN = a}); -- | String that contains the serial number of the certificate. cdSerial :: Lens' CertificateDetail (Maybe Text) cdSerial = lens _cdSerial (\ s a -> s{_cdSerial = a}); -- | The time, if any, at which the certificate was revoked. This value -- exists only if the certificate has been revoked. cdRevokedAt :: Lens' CertificateDetail (Maybe UTCTime) cdRevokedAt = lens _cdRevokedAt (\ s a -> s{_cdRevokedAt = a}) . mapping _Time; -- | Time before which the certificate is not valid. cdNotBefore :: Lens' CertificateDetail (Maybe UTCTime) cdNotBefore = lens _cdNotBefore (\ s a -> s{_cdNotBefore = a}) . mapping _Time; -- | A 'RevocationReason' enumeration value that indicates why the -- certificate was revoked. This value exists only if the certificate has -- been revoked. This can be one of the following vales: -- -- - UNSPECIFIED -- -- - KEY_COMPROMISE -- -- - CA_COMPROMISE -- -- - AFFILIATION_CHANGED -- -- - SUPERCEDED -- -- - CESSATION_OF_OPERATION -- -- - CERTIFICATE_HOLD -- -- - REMOVE_FROM_CRL -- -- - PRIVILEGE_WITHDRAWN -- -- - A_A_COMPROMISE -- cdRevocationReason :: Lens' CertificateDetail (Maybe RevocationReason) cdRevocationReason = lens _cdRevocationReason (\ s a -> s{_cdRevocationReason = a}); -- | Fully qualified domain name (FQDN), such as www.example.com or -- example.com, for the certificate. cdDomainName :: Lens' CertificateDetail (Maybe Text) cdDomainName = lens _cdDomainName (\ s a -> s{_cdDomainName = a}); -- | Asymmetric algorithm used to generate the public and private key pair. -- Currently the only supported value is 'RSA_2048'. cdKeyAlgorithm :: Lens' CertificateDetail (Maybe KeyAlgorithm) cdKeyAlgorithm = lens _cdKeyAlgorithm (\ s a -> s{_cdKeyAlgorithm = a}); -- | Time at which the certificate was issued. cdIssuedAt :: Lens' CertificateDetail (Maybe UTCTime) cdIssuedAt = lens _cdIssuedAt (\ s a -> s{_cdIssuedAt = a}) . mapping _Time; -- | Algorithm used to generate a signature. Currently the only supported -- value is 'SHA256WITHRSA'. cdSignatureAlgorithm :: Lens' CertificateDetail (Maybe Text) cdSignatureAlgorithm = lens _cdSignatureAlgorithm (\ s a -> s{_cdSignatureAlgorithm = a}); -- | References a < DomainValidation> structure that contains the domain name -- in the certificate and the email address that can be used for -- validation. cdDomainValidationOptions :: Lens' CertificateDetail (Maybe (NonEmpty DomainValidation)) cdDomainValidationOptions = lens _cdDomainValidationOptions (\ s a -> s{_cdDomainValidationOptions = a}) . mapping _List1; -- | The X.500 distinguished name of the CA that issued and signed the -- certificate. cdIssuer :: Lens' CertificateDetail (Maybe Text) cdIssuer = lens _cdIssuer (\ s a -> s{_cdIssuer = a}); -- | Time after which the certificate is not valid. cdNotAfter :: Lens' CertificateDetail (Maybe UTCTime) cdNotAfter = lens _cdNotAfter (\ s a -> s{_cdNotAfter = a}) . mapping _Time; instance FromJSON CertificateDetail where parseJSON = withObject "CertificateDetail" (\ x -> CertificateDetail' <$> (x .:? "Subject") <*> (x .:? "Status") <*> (x .:? "SubjectAlternativeNames") <*> (x .:? "InUseBy" .!= mempty) <*> (x .:? "CreatedAt") <*> (x .:? "CertificateArn") <*> (x .:? "Serial") <*> (x .:? "RevokedAt") <*> (x .:? "NotBefore") <*> (x .:? "RevocationReason") <*> (x .:? "DomainName") <*> (x .:? "KeyAlgorithm") <*> (x .:? "IssuedAt") <*> (x .:? "SignatureAlgorithm") <*> (x .:? "DomainValidationOptions") <*> (x .:? "Issuer") <*> (x .:? "NotAfter")) instance Hashable CertificateDetail instance NFData CertificateDetail -- | This structure is returned in the response object of < ListCertificates> -- action. -- -- /See:/ 'certificateSummary' smart constructor. data CertificateSummary = CertificateSummary' { _csCertificateARN :: !(Maybe Text) , _csDomainName :: !(Maybe Text) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CertificateSummary' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'csCertificateARN' -- -- * 'csDomainName' certificateSummary :: CertificateSummary certificateSummary = CertificateSummary' { _csCertificateARN = Nothing , _csDomainName = Nothing } -- | Amazon Resource Name (ARN) of the certificate. This is of the form: -- -- 'arn:aws:acm:region:123456789012:certificate\/12345678-1234-1234-1234-123456789012' -- -- For more information about ARNs, see -- . csCertificateARN :: Lens' CertificateSummary (Maybe Text) csCertificateARN = lens _csCertificateARN (\ s a -> s{_csCertificateARN = a}); -- | Fully qualified domain name (FQDN), such as www.example.com or -- example.com, for the certificate. csDomainName :: Lens' CertificateSummary (Maybe Text) csDomainName = lens _csDomainName (\ s a -> s{_csDomainName = a}); instance FromJSON CertificateSummary where parseJSON = withObject "CertificateSummary" (\ x -> CertificateSummary' <$> (x .:? "CertificateArn") <*> (x .:? "DomainName")) instance Hashable CertificateSummary instance NFData CertificateSummary -- | Structure that contains the domain name, the base validation domain to -- which validation email is sent, and the email addresses used to validate -- the domain identity. -- -- /See:/ 'domainValidation' smart constructor. data DomainValidation = DomainValidation' { _dvValidationEmails :: !(Maybe [Text]) , _dvValidationDomain :: !(Maybe Text) , _dvDomainName :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'DomainValidation' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'dvValidationEmails' -- -- * 'dvValidationDomain' -- -- * 'dvDomainName' domainValidation :: Text -- ^ 'dvDomainName' -> DomainValidation domainValidation pDomainName_ = DomainValidation' { _dvValidationEmails = Nothing , _dvValidationDomain = Nothing , _dvDomainName = pDomainName_ } -- | A list of contact address for the domain registrant. dvValidationEmails :: Lens' DomainValidation [Text] dvValidationEmails = lens _dvValidationEmails (\ s a -> s{_dvValidationEmails = a}) . _Default . _Coerce; -- | The base validation domain that acts as the suffix of the email -- addresses that are used to send the emails. dvValidationDomain :: Lens' DomainValidation (Maybe Text) dvValidationDomain = lens _dvValidationDomain (\ s a -> s{_dvValidationDomain = a}); -- | Fully Qualified Domain Name (FQDN) of the form -- 'www.example.com or ''example.com' dvDomainName :: Lens' DomainValidation Text dvDomainName = lens _dvDomainName (\ s a -> s{_dvDomainName = a}); instance FromJSON DomainValidation where parseJSON = withObject "DomainValidation" (\ x -> DomainValidation' <$> (x .:? "ValidationEmails" .!= mempty) <*> (x .:? "ValidationDomain") <*> (x .: "DomainName")) instance Hashable DomainValidation instance NFData DomainValidation -- | This structure is used in the request object of the -- < RequestCertificate> action. -- -- /See:/ 'domainValidationOption' smart constructor. data DomainValidationOption = DomainValidationOption' { _dvoDomainName :: !Text , _dvoValidationDomain :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'DomainValidationOption' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'dvoDomainName' -- -- * 'dvoValidationDomain' domainValidationOption :: Text -- ^ 'dvoDomainName' -> Text -- ^ 'dvoValidationDomain' -> DomainValidationOption domainValidationOption pDomainName_ pValidationDomain_ = DomainValidationOption' { _dvoDomainName = pDomainName_ , _dvoValidationDomain = pValidationDomain_ } -- | Fully Qualified Domain Name (FQDN) of the certificate being requested. dvoDomainName :: Lens' DomainValidationOption Text dvoDomainName = lens _dvoDomainName (\ s a -> s{_dvoDomainName = a}); -- | The domain to which validation email is sent. This is the base -- validation domain that will act as the suffix of the email addresses. -- This must be the same as the 'DomainName' value or a superdomain of the -- 'DomainName' value. For example, if you requested a certificate for -- 'site.subdomain.example.com' and specify a __ValidationDomain__ of -- 'subdomain.example.com', ACM sends email to the domain registrant, -- technical contact, and administrative contact in WHOIS for the base -- domain and the following five addresses: -- -- - admin\'subdomain.example.com -- -- - administrator\'subdomain.example.com -- -- - hostmaster\'subdomain.example.com -- -- - postmaster\'subdomain.example.com -- -- - webmaster\'subdomain.example.com -- dvoValidationDomain :: Lens' DomainValidationOption Text dvoValidationDomain = lens _dvoValidationDomain (\ s a -> s{_dvoValidationDomain = a}); instance Hashable DomainValidationOption instance NFData DomainValidationOption instance ToJSON DomainValidationOption where toJSON DomainValidationOption'{..} = object (catMaybes [Just ("DomainName" .= _dvoDomainName), Just ("ValidationDomain" .= _dvoValidationDomain)]) -- | A key-value pair that identifies or specifies metadata about an ACM -- resource. -- -- /See:/ 'tag' smart constructor. data Tag = Tag' { _tagValue :: !(Maybe Text) , _tagKey :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Tag' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'tagValue' -- -- * 'tagKey' tag :: Text -- ^ 'tagKey' -> Tag tag pKey_ = Tag' { _tagValue = Nothing , _tagKey = pKey_ } -- | The value of the tag. tagValue :: Lens' Tag (Maybe Text) tagValue = lens _tagValue (\ s a -> s{_tagValue = a}); -- | The key of the tag. tagKey :: Lens' Tag Text tagKey = lens _tagKey (\ s a -> s{_tagKey = a}); instance FromJSON Tag where parseJSON = withObject "Tag" (\ x -> Tag' <$> (x .:? "Value") <*> (x .: "Key")) instance Hashable Tag instance NFData Tag instance ToJSON Tag where toJSON Tag'{..} = object (catMaybes [("Value" .=) <$> _tagValue, Just ("Key" .= _tagKey)])