{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Module : Network.AWS.Route53Domains.TransferDomain -- Copyright : (c) 2013-2014 Brendan Hay -- License : This Source Code Form is subject to the terms of -- the Mozilla Public License, v. 2.0. -- A copy of the MPL can be found in the LICENSE file or -- you can obtain it at http://mozilla.org/MPL/2.0/. -- Maintainer : Brendan Hay -- Stability : experimental -- Portability : non-portable (GHC extensions) -- -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | This operation transfers a domain from another registrar to Amazon Route 53. -- When the transfer is complete, the domain is registered with the AWS -- registrar partner, Gandi. -- -- For transfer requirements, a detailed procedure, and information about -- viewing the status of a domain transfer, see in the Amazon Route 53 Developer Guide. -- -- If the registrar for your domain is also the DNS service provider for the -- domain, we highly recommend that you consider transferring your DNS service -- to Amazon Route 53 or to another DNS service provider before you transfer -- your registration. Some registrars provide free DNS service when you purchase -- a domain registration. When you transfer the registration, the previous -- registrar will not renew your domain registration and could end your DNS -- service at any time. -- -- Caution! If the registrar for your domain is also the DNS service provider -- for the domain and you don't transfer DNS service to another provider, your -- website, email, and the web applications associated with the domain might -- become unavailable. If the transfer is successful, this method returns an -- operation ID that you can use to track the progress and completion of the -- action. If the transfer doesn't complete successfully, the domain registrant -- will be notified by email. -- -- module Network.AWS.Route53Domains.TransferDomain ( -- * Request TransferDomain -- ** Request constructor , transferDomain -- ** Request lenses , tdAdminContact , tdAuthCode , tdAutoRenew , tdDomainName , tdDurationInYears , tdIdnLangCode , tdNameservers , tdPrivacyProtectAdminContact , tdPrivacyProtectRegistrantContact , tdPrivacyProtectTechContact , tdRegistrantContact , tdTechContact -- * Response , TransferDomainResponse -- ** Response constructor , transferDomainResponse -- ** Response lenses , tdrOperationId ) where import Network.AWS.Data (Object) import Network.AWS.Prelude import Network.AWS.Request.JSON import Network.AWS.Route53Domains.Types import qualified GHC.Exts data TransferDomain = TransferDomain { _tdAdminContact :: ContactDetail , _tdAuthCode :: Maybe (Sensitive Text) , _tdAutoRenew :: Maybe Bool , _tdDomainName :: Text , _tdDurationInYears :: Nat , _tdIdnLangCode :: Maybe Text , _tdNameservers :: List "Nameservers" Nameserver , _tdPrivacyProtectAdminContact :: Maybe Bool , _tdPrivacyProtectRegistrantContact :: Maybe Bool , _tdPrivacyProtectTechContact :: Maybe Bool , _tdRegistrantContact :: ContactDetail , _tdTechContact :: ContactDetail } deriving (Eq, Read, Show) -- | 'TransferDomain' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'tdAdminContact' @::@ 'ContactDetail' -- -- * 'tdAuthCode' @::@ 'Maybe' 'Text' -- -- * 'tdAutoRenew' @::@ 'Maybe' 'Bool' -- -- * 'tdDomainName' @::@ 'Text' -- -- * 'tdDurationInYears' @::@ 'Natural' -- -- * 'tdIdnLangCode' @::@ 'Maybe' 'Text' -- -- * 'tdNameservers' @::@ ['Nameserver'] -- -- * 'tdPrivacyProtectAdminContact' @::@ 'Maybe' 'Bool' -- -- * 'tdPrivacyProtectRegistrantContact' @::@ 'Maybe' 'Bool' -- -- * 'tdPrivacyProtectTechContact' @::@ 'Maybe' 'Bool' -- -- * 'tdRegistrantContact' @::@ 'ContactDetail' -- -- * 'tdTechContact' @::@ 'ContactDetail' -- transferDomain :: Text -- ^ 'tdDomainName' -> Natural -- ^ 'tdDurationInYears' -> ContactDetail -- ^ 'tdAdminContact' -> ContactDetail -- ^ 'tdRegistrantContact' -> ContactDetail -- ^ 'tdTechContact' -> TransferDomain transferDomain p1 p2 p3 p4 p5 = TransferDomain { _tdDomainName = p1 , _tdDurationInYears = withIso _Nat (const id) p2 , _tdAdminContact = p3 , _tdRegistrantContact = p4 , _tdTechContact = p5 , _tdIdnLangCode = Nothing , _tdNameservers = mempty , _tdAuthCode = Nothing , _tdAutoRenew = Nothing , _tdPrivacyProtectAdminContact = Nothing , _tdPrivacyProtectRegistrantContact = Nothing , _tdPrivacyProtectTechContact = Nothing } -- | Provides detailed contact information. -- -- Type: Complex -- -- Children: 'FirstName', 'MiddleName', 'LastName', 'ContactType', 'OrganizationName', 'AddressLine1', 'AddressLine2', 'City', 'State', 'CountryCode', 'ZipCode', 'PhoneNumber', 'Email', 'Fax', 'ExtraParams' -- -- Required: Yes tdAdminContact :: Lens' TransferDomain ContactDetail tdAdminContact = lens _tdAdminContact (\s a -> s { _tdAdminContact = a }) -- | The authorization code for the domain. You get this value from the current -- registrar. -- -- Type: String -- -- Required: Yes tdAuthCode :: Lens' TransferDomain (Maybe Text) tdAuthCode = lens _tdAuthCode (\s a -> s { _tdAuthCode = a }) . mapping _Sensitive -- | Indicates whether the domain will be automatically renewed (true) or not -- (false). Autorenewal only takes effect after the account is charged. -- -- Type: Boolean -- -- Valid values: 'true' | 'false' -- -- Default: true -- -- Required: No tdAutoRenew :: Lens' TransferDomain (Maybe Bool) tdAutoRenew = lens _tdAutoRenew (\s a -> s { _tdAutoRenew = a }) -- | 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 tdDomainName :: Lens' TransferDomain Text tdDomainName = lens _tdDomainName (\s a -> s { _tdDomainName = a }) -- | The number of years the domain will be registered. Domains are registered for -- a minimum of one year. The maximum period depends on the top-level domain. -- -- Type: Integer -- -- Default: 1 -- -- Valid values: Integer from 1 to 10 -- -- Required: Yes tdDurationInYears :: Lens' TransferDomain Natural tdDurationInYears = lens _tdDurationInYears (\s a -> s { _tdDurationInYears = a }) . _Nat -- | Reserved for future use. tdIdnLangCode :: Lens' TransferDomain (Maybe Text) tdIdnLangCode = lens _tdIdnLangCode (\s a -> s { _tdIdnLangCode = a }) -- | Contains details for the host and glue IP addresses. -- -- Type: Complex -- -- Children: 'GlueIps', 'Name' -- -- Required: No tdNameservers :: Lens' TransferDomain [Nameserver] tdNameservers = lens _tdNameservers (\s a -> s { _tdNameservers = a }) . _List -- | Whether you want to conceal contact information from WHOIS queries. If you -- specify true, WHOIS ("who is") queries will return contact information for -- our registrar partner, Gandi, instead of the contact information that you -- enter. -- -- Type: Boolean -- -- Default: 'true' -- -- Valid values: 'true' | 'false' -- -- Required: No tdPrivacyProtectAdminContact :: Lens' TransferDomain (Maybe Bool) tdPrivacyProtectAdminContact = lens _tdPrivacyProtectAdminContact (\s a -> s { _tdPrivacyProtectAdminContact = a }) -- | Whether you want to conceal contact information from WHOIS queries. If you -- specify true, WHOIS ("who is") queries will return contact information for -- our registrar partner, Gandi, instead of the contact information that you -- enter. -- -- Type: Boolean -- -- Default: 'true' -- -- Valid values: 'true' | 'false' -- -- Required: No tdPrivacyProtectRegistrantContact :: Lens' TransferDomain (Maybe Bool) tdPrivacyProtectRegistrantContact = lens _tdPrivacyProtectRegistrantContact (\s a -> s { _tdPrivacyProtectRegistrantContact = a }) -- | Whether you want to conceal contact information from WHOIS queries. If you -- specify true, WHOIS ("who is") queries will return contact information for -- our registrar partner, Gandi, instead of the contact information that you -- enter. -- -- Type: Boolean -- -- Default: 'true' -- -- Valid values: 'true' | 'false' -- -- Required: No tdPrivacyProtectTechContact :: Lens' TransferDomain (Maybe Bool) tdPrivacyProtectTechContact = lens _tdPrivacyProtectTechContact (\s a -> s { _tdPrivacyProtectTechContact = a }) -- | Provides detailed contact information. -- -- Type: Complex -- -- Children: 'FirstName', 'MiddleName', 'LastName', 'ContactType', 'OrganizationName', 'AddressLine1', 'AddressLine2', 'City', 'State', 'CountryCode', 'ZipCode', 'PhoneNumber', 'Email', 'Fax', 'ExtraParams' -- -- Required: Yes tdRegistrantContact :: Lens' TransferDomain ContactDetail tdRegistrantContact = lens _tdRegistrantContact (\s a -> s { _tdRegistrantContact = a }) -- | Provides detailed contact information. -- -- Type: Complex -- -- Children: 'FirstName', 'MiddleName', 'LastName', 'ContactType', 'OrganizationName', 'AddressLine1', 'AddressLine2', 'City', 'State', 'CountryCode', 'ZipCode', 'PhoneNumber', 'Email', 'Fax', 'ExtraParams' -- -- Required: Yes tdTechContact :: Lens' TransferDomain ContactDetail tdTechContact = lens _tdTechContact (\s a -> s { _tdTechContact = a }) newtype TransferDomainResponse = TransferDomainResponse { _tdrOperationId :: Text } deriving (Eq, Ord, Read, Show, Monoid, IsString) -- | 'TransferDomainResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'tdrOperationId' @::@ 'Text' -- transferDomainResponse :: Text -- ^ 'tdrOperationId' -> TransferDomainResponse transferDomainResponse p1 = TransferDomainResponse { _tdrOperationId = p1 } -- | Identifier for tracking the progress of the request. To use this ID to query -- the operation status, use GetOperationDetail. -- -- Type: String -- -- Default: None -- -- Constraints: Maximum 255 characters. tdrOperationId :: Lens' TransferDomainResponse Text tdrOperationId = lens _tdrOperationId (\s a -> s { _tdrOperationId = a }) instance ToPath TransferDomain where toPath = const "/" instance ToQuery TransferDomain where toQuery = const mempty instance ToHeaders TransferDomain instance ToJSON TransferDomain where toJSON TransferDomain{..} = object [ "DomainName" .= _tdDomainName , "IdnLangCode" .= _tdIdnLangCode , "DurationInYears" .= _tdDurationInYears , "Nameservers" .= _tdNameservers , "AuthCode" .= _tdAuthCode , "AutoRenew" .= _tdAutoRenew , "AdminContact" .= _tdAdminContact , "RegistrantContact" .= _tdRegistrantContact , "TechContact" .= _tdTechContact , "PrivacyProtectAdminContact" .= _tdPrivacyProtectAdminContact , "PrivacyProtectRegistrantContact" .= _tdPrivacyProtectRegistrantContact , "PrivacyProtectTechContact" .= _tdPrivacyProtectTechContact ] instance AWSRequest TransferDomain where type Sv TransferDomain = Route53Domains type Rs TransferDomain = TransferDomainResponse request = post "TransferDomain" response = jsonResponse instance FromJSON TransferDomainResponse where parseJSON = withObject "TransferDomainResponse" $ \o -> TransferDomainResponse <$> o .: "OperationId"