{-# 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.Route53.ChangeResourceRecordSets -- 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. -- | Use this action to create or change your authoritative DNS information. To -- use this action, send a 'POST' request to the '2013-04-01/hostedzone//hosted ZoneID//rrset resource. The request body must include an XML document with a 'ChangeResourceRecordSetsRequest' element. -- -- Changes are a list of change items and are considered transactional. For -- more information on transactional changes, also known as change batches, see in the /Amazon Route 53 Developer Guide/. -- -- Due to the nature of transactional changes, you cannot delete the same -- resource record set more than once in a single change batch. If you attempt -- to delete the same change batch more than once, Route 53 returns an 'InvalidChangeBatch' error. In response to a 'ChangeResourceRecordSets' request, your DNS data is -- changed on all Route 53 DNS servers. Initially, the status of a change is 'PENDING'. This means the change has not yet propagated to all the authoritative Route -- 53 DNS servers. When the change is propagated to all hosts, the change -- returns a status of 'INSYNC'. -- -- Note the following limitations on a 'ChangeResourceRecordSets' request: -- -- - A request cannot contain more than 100 Change elements. -- -- - A request cannot contain more than 1000 ResourceRecord elements. -- -- The sum of the number of characters (including spaces) in all 'Value' elements -- in a request cannot exceed 32,000 characters. -- -- module Network.AWS.Route53.ChangeResourceRecordSets ( -- * Request ChangeResourceRecordSets -- ** Request constructor , changeResourceRecordSets -- ** Request lenses , crrsChangeBatch , crrsHostedZoneId -- * Response , ChangeResourceRecordSetsResponse -- ** Response constructor , changeResourceRecordSetsResponse -- ** Response lenses , crrsrChangeInfo ) where import Network.AWS.Prelude import Network.AWS.Request.RestXML import Network.AWS.Route53.Types import qualified GHC.Exts data ChangeResourceRecordSets = ChangeResourceRecordSets { _crrsChangeBatch :: ChangeBatch , _crrsHostedZoneId :: Text } deriving (Eq, Show) -- | 'ChangeResourceRecordSets' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'crrsChangeBatch' @::@ 'ChangeBatch' -- -- * 'crrsHostedZoneId' @::@ 'Text' -- changeResourceRecordSets :: Text -- ^ 'crrsHostedZoneId' -> ChangeBatch -- ^ 'crrsChangeBatch' -> ChangeResourceRecordSets changeResourceRecordSets p1 p2 = ChangeResourceRecordSets { _crrsHostedZoneId = p1 , _crrsChangeBatch = p2 } -- | A complex type that contains an optional comment and the 'Changes' element. crrsChangeBatch :: Lens' ChangeResourceRecordSets ChangeBatch crrsChangeBatch = lens _crrsChangeBatch (\s a -> s { _crrsChangeBatch = a }) -- | The ID of the hosted zone that contains the resource record sets that you -- want to change. crrsHostedZoneId :: Lens' ChangeResourceRecordSets Text crrsHostedZoneId = lens _crrsHostedZoneId (\s a -> s { _crrsHostedZoneId = a }) newtype ChangeResourceRecordSetsResponse = ChangeResourceRecordSetsResponse { _crrsrChangeInfo :: ChangeInfo } deriving (Eq, Show) -- | 'ChangeResourceRecordSetsResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'crrsrChangeInfo' @::@ 'ChangeInfo' -- changeResourceRecordSetsResponse :: ChangeInfo -- ^ 'crrsrChangeInfo' -> ChangeResourceRecordSetsResponse changeResourceRecordSetsResponse p1 = ChangeResourceRecordSetsResponse { _crrsrChangeInfo = p1 } -- | A complex type that contains information about changes made to your hosted -- zone. -- -- This element contains an ID that you use when performing a 'GetChange' action -- to get detailed information about the change. crrsrChangeInfo :: Lens' ChangeResourceRecordSetsResponse ChangeInfo crrsrChangeInfo = lens _crrsrChangeInfo (\s a -> s { _crrsrChangeInfo = a }) instance ToPath ChangeResourceRecordSets where toPath ChangeResourceRecordSets{..} = mconcat [ "/2013-04-01/hostedzone/" , toText _crrsHostedZoneId , "/rrset/" ] instance ToQuery ChangeResourceRecordSets where toQuery = const mempty instance ToHeaders ChangeResourceRecordSets instance ToXMLRoot ChangeResourceRecordSets where toXMLRoot ChangeResourceRecordSets{..} = namespaced ns "ChangeResourceRecordSets" [ "ChangeBatch" =@ _crrsChangeBatch ] instance ToXML ChangeResourceRecordSets instance AWSRequest ChangeResourceRecordSets where type Sv ChangeResourceRecordSets = Route53 type Rs ChangeResourceRecordSets = ChangeResourceRecordSetsResponse request = post response = xmlResponse instance FromXML ChangeResourceRecordSetsResponse where parseXML x = ChangeResourceRecordSetsResponse <$> x .@ "ChangeInfo"