{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.Route53Domains.GetDomainDetail -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- This operation returns detailed information about the domain. The domain\'s contact information is also returned as part of the output. module Network.AWS.Route53Domains.GetDomainDetail ( -- * Creating a Request getDomainDetail , GetDomainDetail -- * Request Lenses , gddDomainName -- * Destructuring the Response , getDomainDetailResponse , GetDomainDetailResponse -- * Response Lenses , gddrsTechPrivacy , gddrsDNSSec , gddrsWhoIsServer , gddrsRegistryDomainId , gddrsRegistrantPrivacy , gddrsUpdatedDate , gddrsAdminPrivacy , gddrsAutoRenew , gddrsAbuseContactPhone , gddrsRegistrarURL , gddrsAbuseContactEmail , gddrsExpirationDate , gddrsCreationDate , gddrsRegistrarName , gddrsReseller , gddrsStatusList , gddrsResponseStatus , gddrsDomainName , gddrsNameservers , gddrsAdminContact , gddrsRegistrantContact , gddrsTechContact ) where import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response import Network.AWS.Route53Domains.Types import Network.AWS.Route53Domains.Types.Product -- | The GetDomainDetail request includes the following element. -- -- /See:/ 'getDomainDetail' smart constructor. newtype GetDomainDetail = GetDomainDetail' { _gddDomainName :: Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'GetDomainDetail' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'gddDomainName' getDomainDetail :: Text -- ^ 'gddDomainName' -> GetDomainDetail getDomainDetail pDomainName_ = GetDomainDetail' { _gddDomainName = pDomainName_ } -- | The name of a domain. -- -- Type: String -- -- Default: None -- -- Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported. -- -- Required: Yes gddDomainName :: Lens' GetDomainDetail Text gddDomainName = lens _gddDomainName (\ s a -> s{_gddDomainName = a}); instance AWSRequest GetDomainDetail where type Rs GetDomainDetail = GetDomainDetailResponse request = postJSON route53Domains response = receiveJSON (\ s h x -> GetDomainDetailResponse' <$> (x .?> "TechPrivacy") <*> (x .?> "DnsSec") <*> (x .?> "WhoIsServer") <*> (x .?> "RegistryDomainId") <*> (x .?> "RegistrantPrivacy") <*> (x .?> "UpdatedDate") <*> (x .?> "AdminPrivacy") <*> (x .?> "AutoRenew") <*> (x .?> "AbuseContactPhone") <*> (x .?> "RegistrarUrl") <*> (x .?> "AbuseContactEmail") <*> (x .?> "ExpirationDate") <*> (x .?> "CreationDate") <*> (x .?> "RegistrarName") <*> (x .?> "Reseller") <*> (x .?> "StatusList" .!@ mempty) <*> (pure (fromEnum s)) <*> (x .:> "DomainName") <*> (x .?> "Nameservers" .!@ mempty) <*> (x .:> "AdminContact") <*> (x .:> "RegistrantContact") <*> (x .:> "TechContact")) instance Hashable GetDomainDetail instance NFData GetDomainDetail instance ToHeaders GetDomainDetail where toHeaders = const (mconcat ["X-Amz-Target" =# ("Route53Domains_v20140515.GetDomainDetail" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON GetDomainDetail where toJSON GetDomainDetail'{..} = object (catMaybes [Just ("DomainName" .= _gddDomainName)]) instance ToPath GetDomainDetail where toPath = const "/" instance ToQuery GetDomainDetail where toQuery = const mempty -- | The GetDomainDetail response includes the following elements. -- -- /See:/ 'getDomainDetailResponse' smart constructor. data GetDomainDetailResponse = GetDomainDetailResponse' { _gddrsTechPrivacy :: !(Maybe Bool) , _gddrsDNSSec :: !(Maybe Text) , _gddrsWhoIsServer :: !(Maybe Text) , _gddrsRegistryDomainId :: !(Maybe Text) , _gddrsRegistrantPrivacy :: !(Maybe Bool) , _gddrsUpdatedDate :: !(Maybe POSIX) , _gddrsAdminPrivacy :: !(Maybe Bool) , _gddrsAutoRenew :: !(Maybe Bool) , _gddrsAbuseContactPhone :: !(Maybe Text) , _gddrsRegistrarURL :: !(Maybe Text) , _gddrsAbuseContactEmail :: !(Maybe Text) , _gddrsExpirationDate :: !(Maybe POSIX) , _gddrsCreationDate :: !(Maybe POSIX) , _gddrsRegistrarName :: !(Maybe Text) , _gddrsReseller :: !(Maybe Text) , _gddrsStatusList :: !(Maybe [Text]) , _gddrsResponseStatus :: !Int , _gddrsDomainName :: !Text , _gddrsNameservers :: ![Nameserver] , _gddrsAdminContact :: !(Sensitive ContactDetail) , _gddrsRegistrantContact :: !(Sensitive ContactDetail) , _gddrsTechContact :: !(Sensitive ContactDetail) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'GetDomainDetailResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'gddrsTechPrivacy' -- -- * 'gddrsDNSSec' -- -- * 'gddrsWhoIsServer' -- -- * 'gddrsRegistryDomainId' -- -- * 'gddrsRegistrantPrivacy' -- -- * 'gddrsUpdatedDate' -- -- * 'gddrsAdminPrivacy' -- -- * 'gddrsAutoRenew' -- -- * 'gddrsAbuseContactPhone' -- -- * 'gddrsRegistrarURL' -- -- * 'gddrsAbuseContactEmail' -- -- * 'gddrsExpirationDate' -- -- * 'gddrsCreationDate' -- -- * 'gddrsRegistrarName' -- -- * 'gddrsReseller' -- -- * 'gddrsStatusList' -- -- * 'gddrsResponseStatus' -- -- * 'gddrsDomainName' -- -- * 'gddrsNameservers' -- -- * 'gddrsAdminContact' -- -- * 'gddrsRegistrantContact' -- -- * 'gddrsTechContact' getDomainDetailResponse :: Int -- ^ 'gddrsResponseStatus' -> Text -- ^ 'gddrsDomainName' -> ContactDetail -- ^ 'gddrsAdminContact' -> ContactDetail -- ^ 'gddrsRegistrantContact' -> ContactDetail -- ^ 'gddrsTechContact' -> GetDomainDetailResponse getDomainDetailResponse pResponseStatus_ pDomainName_ pAdminContact_ pRegistrantContact_ pTechContact_ = GetDomainDetailResponse' { _gddrsTechPrivacy = Nothing , _gddrsDNSSec = Nothing , _gddrsWhoIsServer = Nothing , _gddrsRegistryDomainId = Nothing , _gddrsRegistrantPrivacy = Nothing , _gddrsUpdatedDate = Nothing , _gddrsAdminPrivacy = Nothing , _gddrsAutoRenew = Nothing , _gddrsAbuseContactPhone = Nothing , _gddrsRegistrarURL = Nothing , _gddrsAbuseContactEmail = Nothing , _gddrsExpirationDate = Nothing , _gddrsCreationDate = Nothing , _gddrsRegistrarName = Nothing , _gddrsReseller = Nothing , _gddrsStatusList = Nothing , _gddrsResponseStatus = pResponseStatus_ , _gddrsDomainName = pDomainName_ , _gddrsNameservers = mempty , _gddrsAdminContact = _Sensitive # pAdminContact_ , _gddrsRegistrantContact = _Sensitive # pRegistrantContact_ , _gddrsTechContact = _Sensitive # pTechContact_ } -- | Specifies whether contact information for the tech contact is concealed from WHOIS queries. If the value is 'true', WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. -- -- Type: Boolean gddrsTechPrivacy :: Lens' GetDomainDetailResponse (Maybe Bool) gddrsTechPrivacy = lens _gddrsTechPrivacy (\ s a -> s{_gddrsTechPrivacy = a}); -- | Reserved for future use. gddrsDNSSec :: Lens' GetDomainDetailResponse (Maybe Text) gddrsDNSSec = lens _gddrsDNSSec (\ s a -> s{_gddrsDNSSec = a}); -- | The fully qualified name of the WHOIS server that can answer the WHOIS query for the domain. -- -- Type: String gddrsWhoIsServer :: Lens' GetDomainDetailResponse (Maybe Text) gddrsWhoIsServer = lens _gddrsWhoIsServer (\ s a -> s{_gddrsWhoIsServer = a}); -- | Reserved for future use. gddrsRegistryDomainId :: Lens' GetDomainDetailResponse (Maybe Text) gddrsRegistryDomainId = lens _gddrsRegistryDomainId (\ s a -> s{_gddrsRegistryDomainId = a}); -- | Specifies whether contact information for the registrant contact is concealed from WHOIS queries. If the value is 'true', WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. -- -- Type: Boolean gddrsRegistrantPrivacy :: Lens' GetDomainDetailResponse (Maybe Bool) gddrsRegistrantPrivacy = lens _gddrsRegistrantPrivacy (\ s a -> s{_gddrsRegistrantPrivacy = a}); -- | The last updated date of the domain as found in the response to a WHOIS query. The date format is Unix time. gddrsUpdatedDate :: Lens' GetDomainDetailResponse (Maybe UTCTime) gddrsUpdatedDate = lens _gddrsUpdatedDate (\ s a -> s{_gddrsUpdatedDate = a}) . mapping _Time; -- | Specifies whether contact information for the admin contact is concealed from WHOIS queries. If the value is 'true', WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter. -- -- Type: Boolean gddrsAdminPrivacy :: Lens' GetDomainDetailResponse (Maybe Bool) gddrsAdminPrivacy = lens _gddrsAdminPrivacy (\ s a -> s{_gddrsAdminPrivacy = a}); -- | Specifies whether the domain registration is set to renew automatically. -- -- Type: Boolean gddrsAutoRenew :: Lens' GetDomainDetailResponse (Maybe Bool) gddrsAutoRenew = lens _gddrsAutoRenew (\ s a -> s{_gddrsAutoRenew = a}); -- | Phone number for reporting abuse. -- -- Type: String gddrsAbuseContactPhone :: Lens' GetDomainDetailResponse (Maybe Text) gddrsAbuseContactPhone = lens _gddrsAbuseContactPhone (\ s a -> s{_gddrsAbuseContactPhone = a}); -- | Web address of the registrar. -- -- Type: String gddrsRegistrarURL :: Lens' GetDomainDetailResponse (Maybe Text) gddrsRegistrarURL = lens _gddrsRegistrarURL (\ s a -> s{_gddrsRegistrarURL = a}); -- | Email address to contact to report incorrect contact information for a domain, to report that the domain is being used to send spam, to report that someone is cybersquatting on a domain name, or report some other type of abuse. -- -- Type: String gddrsAbuseContactEmail :: Lens' GetDomainDetailResponse (Maybe Text) gddrsAbuseContactEmail = lens _gddrsAbuseContactEmail (\ s a -> s{_gddrsAbuseContactEmail = a}); -- | The date when the registration for the domain is set to expire. The date format is Unix time. gddrsExpirationDate :: Lens' GetDomainDetailResponse (Maybe UTCTime) gddrsExpirationDate = lens _gddrsExpirationDate (\ s a -> s{_gddrsExpirationDate = a}) . mapping _Time; -- | The date when the domain was created as found in the response to a WHOIS query. The date format is Unix time. gddrsCreationDate :: Lens' GetDomainDetailResponse (Maybe UTCTime) gddrsCreationDate = lens _gddrsCreationDate (\ s a -> s{_gddrsCreationDate = a}) . mapping _Time; -- | Name of the registrar of the domain as identified in the registry. Amazon Route 53 domains are registered by registrar Gandi. The value is '\"GANDI SAS\"'. -- -- Type: String gddrsRegistrarName :: Lens' GetDomainDetailResponse (Maybe Text) gddrsRegistrarName = lens _gddrsRegistrarName (\ s a -> s{_gddrsRegistrarName = a}); -- | Reseller of the domain. Domains registered or transferred using Amazon Route 53 domains will have '\"Amazon\"' as the reseller. -- -- Type: String gddrsReseller :: Lens' GetDomainDetailResponse (Maybe Text) gddrsReseller = lens _gddrsReseller (\ s a -> s{_gddrsReseller = a}); -- | An array of domain name status codes, also known as Extensible Provisioning Protocol (EPP) status codes. -- -- ICANN, the organization that maintains a central database of domain names, has developed a set of domain name status codes that tell you the status of a variety of operations on a domain name, for example, registering a domain name, transferring a domain name to another registrar, renewing the registration for a domain name, and so on. All registrars use this same set of status codes. -- -- For a current list of domain name status codes and an explanation of what each code means, go to the and search for 'epp status codes'. (Search on the ICANN website; web searches sometimes return an old version of the document.) -- -- Type: Array of String gddrsStatusList :: Lens' GetDomainDetailResponse [Text] gddrsStatusList = lens _gddrsStatusList (\ s a -> s{_gddrsStatusList = a}) . _Default . _Coerce; -- | The response status code. gddrsResponseStatus :: Lens' GetDomainDetailResponse Int gddrsResponseStatus = lens _gddrsResponseStatus (\ s a -> s{_gddrsResponseStatus = a}); -- | The name of a domain. -- -- Type: String gddrsDomainName :: Lens' GetDomainDetailResponse Text gddrsDomainName = lens _gddrsDomainName (\ s a -> s{_gddrsDomainName = a}); -- | The name of the domain. -- -- Type: String gddrsNameservers :: Lens' GetDomainDetailResponse [Nameserver] gddrsNameservers = lens _gddrsNameservers (\ s a -> s{_gddrsNameservers = a}) . _Coerce; -- | Provides details about the domain administrative contact. -- -- Type: Complex -- -- Children: 'FirstName', 'MiddleName', 'LastName', 'ContactType', 'OrganizationName', 'AddressLine1', 'AddressLine2', 'City', 'State', 'CountryCode', 'ZipCode', 'PhoneNumber', 'Email', 'Fax', 'ExtraParams' gddrsAdminContact :: Lens' GetDomainDetailResponse ContactDetail gddrsAdminContact = lens _gddrsAdminContact (\ s a -> s{_gddrsAdminContact = a}) . _Sensitive; -- | Provides details about the domain registrant. -- -- Type: Complex -- -- Children: 'FirstName', 'MiddleName', 'LastName', 'ContactType', 'OrganizationName', 'AddressLine1', 'AddressLine2', 'City', 'State', 'CountryCode', 'ZipCode', 'PhoneNumber', 'Email', 'Fax', 'ExtraParams' gddrsRegistrantContact :: Lens' GetDomainDetailResponse ContactDetail gddrsRegistrantContact = lens _gddrsRegistrantContact (\ s a -> s{_gddrsRegistrantContact = a}) . _Sensitive; -- | Provides details about the domain technical contact. -- -- Type: Complex -- -- Children: 'FirstName', 'MiddleName', 'LastName', 'ContactType', 'OrganizationName', 'AddressLine1', 'AddressLine2', 'City', 'State', 'CountryCode', 'ZipCode', 'PhoneNumber', 'Email', 'Fax', 'ExtraParams' gddrsTechContact :: Lens' GetDomainDetailResponse ContactDetail gddrsTechContact = lens _gddrsTechContact (\ s a -> s{_gddrsTechContact = a}) . _Sensitive; instance NFData GetDomainDetailResponse