amazonka-route53-0.0.5: gen/Network/AWS/Route53/ChangeResourceRecordSets.hs
{-# 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 <brendan.g.hay@gmail.com>
-- 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 <brendan.g.hay@gmail.com>
-- 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 <http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/RRSchanges.html#RRSchanges_API Creating, Changing, and Deleting Resource Record Sets Using the Route 53 API> 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.
--
-- <http://docs.aws.amazon.com/Route53/latest/APIReference/API_ChangeResourceRecordSets.html>
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"