{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Neptune.ModifyDBClusterSnapshotAttribute
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Adds an attribute and values to, or removes an attribute and values
-- from, a manual DB cluster snapshot.
--
-- To share a manual DB cluster snapshot with other Amazon accounts,
-- specify @restore@ as the @AttributeName@ and use the @ValuesToAdd@
-- parameter to add a list of IDs of the Amazon accounts that are
-- authorized to restore the manual DB cluster snapshot. Use the value
-- @all@ to make the manual DB cluster snapshot public, which means that it
-- can be copied or restored by all Amazon accounts. Do not add the @all@
-- value for any manual DB cluster snapshots that contain private
-- information that you don\'t want available to all Amazon accounts. If a
-- manual DB cluster snapshot is encrypted, it can be shared, but only by
-- specifying a list of authorized Amazon account IDs for the @ValuesToAdd@
-- parameter. You can\'t use @all@ as a value for that parameter in this
-- case.
--
-- To view which Amazon accounts have access to copy or restore a manual DB
-- cluster snapshot, or whether a manual DB cluster snapshot public or
-- private, use the DescribeDBClusterSnapshotAttributes API action.
module Amazonka.Neptune.ModifyDBClusterSnapshotAttribute
  ( -- * Creating a Request
    ModifyDBClusterSnapshotAttribute (..),
    newModifyDBClusterSnapshotAttribute,

    -- * Request Lenses
    modifyDBClusterSnapshotAttribute_valuesToAdd,
    modifyDBClusterSnapshotAttribute_valuesToRemove,
    modifyDBClusterSnapshotAttribute_dbClusterSnapshotIdentifier,
    modifyDBClusterSnapshotAttribute_attributeName,

    -- * Destructuring the Response
    ModifyDBClusterSnapshotAttributeResponse (..),
    newModifyDBClusterSnapshotAttributeResponse,

    -- * Response Lenses
    modifyDBClusterSnapshotAttributeResponse_dbClusterSnapshotAttributesResult,
    modifyDBClusterSnapshotAttributeResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Neptune.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newModifyDBClusterSnapshotAttribute' smart constructor.
data ModifyDBClusterSnapshotAttribute = ModifyDBClusterSnapshotAttribute'
  { -- | A list of DB cluster snapshot attributes to add to the attribute
    -- specified by @AttributeName@.
    --
    -- To authorize other Amazon accounts to copy or restore a manual DB
    -- cluster snapshot, set this list to include one or more Amazon account
    -- IDs, or @all@ to make the manual DB cluster snapshot restorable by any
    -- Amazon account. Do not add the @all@ value for any manual DB cluster
    -- snapshots that contain private information that you don\'t want
    -- available to all Amazon accounts.
    ModifyDBClusterSnapshotAttribute -> Maybe [Text]
valuesToAdd :: Prelude.Maybe [Prelude.Text],
    -- | A list of DB cluster snapshot attributes to remove from the attribute
    -- specified by @AttributeName@.
    --
    -- To remove authorization for other Amazon accounts to copy or restore a
    -- manual DB cluster snapshot, set this list to include one or more Amazon
    -- account identifiers, or @all@ to remove authorization for any Amazon
    -- account to copy or restore the DB cluster snapshot. If you specify
    -- @all@, an Amazon account whose account ID is explicitly added to the
    -- @restore@ attribute can still copy or restore a manual DB cluster
    -- snapshot.
    ModifyDBClusterSnapshotAttribute -> Maybe [Text]
valuesToRemove :: Prelude.Maybe [Prelude.Text],
    -- | The identifier for the DB cluster snapshot to modify the attributes for.
    ModifyDBClusterSnapshotAttribute -> Text
dbClusterSnapshotIdentifier :: Prelude.Text,
    -- | The name of the DB cluster snapshot attribute to modify.
    --
    -- To manage authorization for other Amazon accounts to copy or restore a
    -- manual DB cluster snapshot, set this value to @restore@.
    ModifyDBClusterSnapshotAttribute -> Text
attributeName :: Prelude.Text
  }
  deriving (ModifyDBClusterSnapshotAttribute
-> ModifyDBClusterSnapshotAttribute -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyDBClusterSnapshotAttribute
-> ModifyDBClusterSnapshotAttribute -> Bool
$c/= :: ModifyDBClusterSnapshotAttribute
-> ModifyDBClusterSnapshotAttribute -> Bool
== :: ModifyDBClusterSnapshotAttribute
-> ModifyDBClusterSnapshotAttribute -> Bool
$c== :: ModifyDBClusterSnapshotAttribute
-> ModifyDBClusterSnapshotAttribute -> Bool
Prelude.Eq, ReadPrec [ModifyDBClusterSnapshotAttribute]
ReadPrec ModifyDBClusterSnapshotAttribute
Int -> ReadS ModifyDBClusterSnapshotAttribute
ReadS [ModifyDBClusterSnapshotAttribute]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifyDBClusterSnapshotAttribute]
$creadListPrec :: ReadPrec [ModifyDBClusterSnapshotAttribute]
readPrec :: ReadPrec ModifyDBClusterSnapshotAttribute
$creadPrec :: ReadPrec ModifyDBClusterSnapshotAttribute
readList :: ReadS [ModifyDBClusterSnapshotAttribute]
$creadList :: ReadS [ModifyDBClusterSnapshotAttribute]
readsPrec :: Int -> ReadS ModifyDBClusterSnapshotAttribute
$creadsPrec :: Int -> ReadS ModifyDBClusterSnapshotAttribute
Prelude.Read, Int -> ModifyDBClusterSnapshotAttribute -> ShowS
[ModifyDBClusterSnapshotAttribute] -> ShowS
ModifyDBClusterSnapshotAttribute -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyDBClusterSnapshotAttribute] -> ShowS
$cshowList :: [ModifyDBClusterSnapshotAttribute] -> ShowS
show :: ModifyDBClusterSnapshotAttribute -> String
$cshow :: ModifyDBClusterSnapshotAttribute -> String
showsPrec :: Int -> ModifyDBClusterSnapshotAttribute -> ShowS
$cshowsPrec :: Int -> ModifyDBClusterSnapshotAttribute -> ShowS
Prelude.Show, forall x.
Rep ModifyDBClusterSnapshotAttribute x
-> ModifyDBClusterSnapshotAttribute
forall x.
ModifyDBClusterSnapshotAttribute
-> Rep ModifyDBClusterSnapshotAttribute x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ModifyDBClusterSnapshotAttribute x
-> ModifyDBClusterSnapshotAttribute
$cfrom :: forall x.
ModifyDBClusterSnapshotAttribute
-> Rep ModifyDBClusterSnapshotAttribute x
Prelude.Generic)

-- |
-- Create a value of 'ModifyDBClusterSnapshotAttribute' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'valuesToAdd', 'modifyDBClusterSnapshotAttribute_valuesToAdd' - A list of DB cluster snapshot attributes to add to the attribute
-- specified by @AttributeName@.
--
-- To authorize other Amazon accounts to copy or restore a manual DB
-- cluster snapshot, set this list to include one or more Amazon account
-- IDs, or @all@ to make the manual DB cluster snapshot restorable by any
-- Amazon account. Do not add the @all@ value for any manual DB cluster
-- snapshots that contain private information that you don\'t want
-- available to all Amazon accounts.
--
-- 'valuesToRemove', 'modifyDBClusterSnapshotAttribute_valuesToRemove' - A list of DB cluster snapshot attributes to remove from the attribute
-- specified by @AttributeName@.
--
-- To remove authorization for other Amazon accounts to copy or restore a
-- manual DB cluster snapshot, set this list to include one or more Amazon
-- account identifiers, or @all@ to remove authorization for any Amazon
-- account to copy or restore the DB cluster snapshot. If you specify
-- @all@, an Amazon account whose account ID is explicitly added to the
-- @restore@ attribute can still copy or restore a manual DB cluster
-- snapshot.
--
-- 'dbClusterSnapshotIdentifier', 'modifyDBClusterSnapshotAttribute_dbClusterSnapshotIdentifier' - The identifier for the DB cluster snapshot to modify the attributes for.
--
-- 'attributeName', 'modifyDBClusterSnapshotAttribute_attributeName' - The name of the DB cluster snapshot attribute to modify.
--
-- To manage authorization for other Amazon accounts to copy or restore a
-- manual DB cluster snapshot, set this value to @restore@.
newModifyDBClusterSnapshotAttribute ::
  -- | 'dbClusterSnapshotIdentifier'
  Prelude.Text ->
  -- | 'attributeName'
  Prelude.Text ->
  ModifyDBClusterSnapshotAttribute
newModifyDBClusterSnapshotAttribute :: Text -> Text -> ModifyDBClusterSnapshotAttribute
newModifyDBClusterSnapshotAttribute
  Text
pDBClusterSnapshotIdentifier_
  Text
pAttributeName_ =
    ModifyDBClusterSnapshotAttribute'
      { $sel:valuesToAdd:ModifyDBClusterSnapshotAttribute' :: Maybe [Text]
valuesToAdd =
          forall a. Maybe a
Prelude.Nothing,
        $sel:valuesToRemove:ModifyDBClusterSnapshotAttribute' :: Maybe [Text]
valuesToRemove = forall a. Maybe a
Prelude.Nothing,
        $sel:dbClusterSnapshotIdentifier:ModifyDBClusterSnapshotAttribute' :: Text
dbClusterSnapshotIdentifier =
          Text
pDBClusterSnapshotIdentifier_,
        $sel:attributeName:ModifyDBClusterSnapshotAttribute' :: Text
attributeName = Text
pAttributeName_
      }

-- | A list of DB cluster snapshot attributes to add to the attribute
-- specified by @AttributeName@.
--
-- To authorize other Amazon accounts to copy or restore a manual DB
-- cluster snapshot, set this list to include one or more Amazon account
-- IDs, or @all@ to make the manual DB cluster snapshot restorable by any
-- Amazon account. Do not add the @all@ value for any manual DB cluster
-- snapshots that contain private information that you don\'t want
-- available to all Amazon accounts.
modifyDBClusterSnapshotAttribute_valuesToAdd :: Lens.Lens' ModifyDBClusterSnapshotAttribute (Prelude.Maybe [Prelude.Text])
modifyDBClusterSnapshotAttribute_valuesToAdd :: Lens' ModifyDBClusterSnapshotAttribute (Maybe [Text])
modifyDBClusterSnapshotAttribute_valuesToAdd = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyDBClusterSnapshotAttribute' {Maybe [Text]
valuesToAdd :: Maybe [Text]
$sel:valuesToAdd:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Maybe [Text]
valuesToAdd} -> Maybe [Text]
valuesToAdd) (\s :: ModifyDBClusterSnapshotAttribute
s@ModifyDBClusterSnapshotAttribute' {} Maybe [Text]
a -> ModifyDBClusterSnapshotAttribute
s {$sel:valuesToAdd:ModifyDBClusterSnapshotAttribute' :: Maybe [Text]
valuesToAdd = Maybe [Text]
a} :: ModifyDBClusterSnapshotAttribute) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A list of DB cluster snapshot attributes to remove from the attribute
-- specified by @AttributeName@.
--
-- To remove authorization for other Amazon accounts to copy or restore a
-- manual DB cluster snapshot, set this list to include one or more Amazon
-- account identifiers, or @all@ to remove authorization for any Amazon
-- account to copy or restore the DB cluster snapshot. If you specify
-- @all@, an Amazon account whose account ID is explicitly added to the
-- @restore@ attribute can still copy or restore a manual DB cluster
-- snapshot.
modifyDBClusterSnapshotAttribute_valuesToRemove :: Lens.Lens' ModifyDBClusterSnapshotAttribute (Prelude.Maybe [Prelude.Text])
modifyDBClusterSnapshotAttribute_valuesToRemove :: Lens' ModifyDBClusterSnapshotAttribute (Maybe [Text])
modifyDBClusterSnapshotAttribute_valuesToRemove = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyDBClusterSnapshotAttribute' {Maybe [Text]
valuesToRemove :: Maybe [Text]
$sel:valuesToRemove:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Maybe [Text]
valuesToRemove} -> Maybe [Text]
valuesToRemove) (\s :: ModifyDBClusterSnapshotAttribute
s@ModifyDBClusterSnapshotAttribute' {} Maybe [Text]
a -> ModifyDBClusterSnapshotAttribute
s {$sel:valuesToRemove:ModifyDBClusterSnapshotAttribute' :: Maybe [Text]
valuesToRemove = Maybe [Text]
a} :: ModifyDBClusterSnapshotAttribute) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The identifier for the DB cluster snapshot to modify the attributes for.
modifyDBClusterSnapshotAttribute_dbClusterSnapshotIdentifier :: Lens.Lens' ModifyDBClusterSnapshotAttribute Prelude.Text
modifyDBClusterSnapshotAttribute_dbClusterSnapshotIdentifier :: Lens' ModifyDBClusterSnapshotAttribute Text
modifyDBClusterSnapshotAttribute_dbClusterSnapshotIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyDBClusterSnapshotAttribute' {Text
dbClusterSnapshotIdentifier :: Text
$sel:dbClusterSnapshotIdentifier:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Text
dbClusterSnapshotIdentifier} -> Text
dbClusterSnapshotIdentifier) (\s :: ModifyDBClusterSnapshotAttribute
s@ModifyDBClusterSnapshotAttribute' {} Text
a -> ModifyDBClusterSnapshotAttribute
s {$sel:dbClusterSnapshotIdentifier:ModifyDBClusterSnapshotAttribute' :: Text
dbClusterSnapshotIdentifier = Text
a} :: ModifyDBClusterSnapshotAttribute)

-- | The name of the DB cluster snapshot attribute to modify.
--
-- To manage authorization for other Amazon accounts to copy or restore a
-- manual DB cluster snapshot, set this value to @restore@.
modifyDBClusterSnapshotAttribute_attributeName :: Lens.Lens' ModifyDBClusterSnapshotAttribute Prelude.Text
modifyDBClusterSnapshotAttribute_attributeName :: Lens' ModifyDBClusterSnapshotAttribute Text
modifyDBClusterSnapshotAttribute_attributeName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyDBClusterSnapshotAttribute' {Text
attributeName :: Text
$sel:attributeName:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Text
attributeName} -> Text
attributeName) (\s :: ModifyDBClusterSnapshotAttribute
s@ModifyDBClusterSnapshotAttribute' {} Text
a -> ModifyDBClusterSnapshotAttribute
s {$sel:attributeName:ModifyDBClusterSnapshotAttribute' :: Text
attributeName = Text
a} :: ModifyDBClusterSnapshotAttribute)

instance
  Core.AWSRequest
    ModifyDBClusterSnapshotAttribute
  where
  type
    AWSResponse ModifyDBClusterSnapshotAttribute =
      ModifyDBClusterSnapshotAttributeResponse
  request :: (Service -> Service)
-> ModifyDBClusterSnapshotAttribute
-> Request ModifyDBClusterSnapshotAttribute
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ModifyDBClusterSnapshotAttribute
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse ModifyDBClusterSnapshotAttribute)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"ModifyDBClusterSnapshotAttributeResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe DBClusterSnapshotAttributesResult
-> Int -> ModifyDBClusterSnapshotAttributeResponse
ModifyDBClusterSnapshotAttributeResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DBClusterSnapshotAttributesResult")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance
  Prelude.Hashable
    ModifyDBClusterSnapshotAttribute
  where
  hashWithSalt :: Int -> ModifyDBClusterSnapshotAttribute -> Int
hashWithSalt
    Int
_salt
    ModifyDBClusterSnapshotAttribute' {Maybe [Text]
Text
attributeName :: Text
dbClusterSnapshotIdentifier :: Text
valuesToRemove :: Maybe [Text]
valuesToAdd :: Maybe [Text]
$sel:attributeName:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Text
$sel:dbClusterSnapshotIdentifier:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Text
$sel:valuesToRemove:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Maybe [Text]
$sel:valuesToAdd:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Maybe [Text]
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
valuesToAdd
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
valuesToRemove
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
dbClusterSnapshotIdentifier
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
attributeName

instance
  Prelude.NFData
    ModifyDBClusterSnapshotAttribute
  where
  rnf :: ModifyDBClusterSnapshotAttribute -> ()
rnf ModifyDBClusterSnapshotAttribute' {Maybe [Text]
Text
attributeName :: Text
dbClusterSnapshotIdentifier :: Text
valuesToRemove :: Maybe [Text]
valuesToAdd :: Maybe [Text]
$sel:attributeName:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Text
$sel:dbClusterSnapshotIdentifier:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Text
$sel:valuesToRemove:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Maybe [Text]
$sel:valuesToAdd:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
valuesToAdd
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
valuesToRemove
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
dbClusterSnapshotIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
attributeName

instance
  Data.ToHeaders
    ModifyDBClusterSnapshotAttribute
  where
  toHeaders :: ModifyDBClusterSnapshotAttribute -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath ModifyDBClusterSnapshotAttribute where
  toPath :: ModifyDBClusterSnapshotAttribute -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance
  Data.ToQuery
    ModifyDBClusterSnapshotAttribute
  where
  toQuery :: ModifyDBClusterSnapshotAttribute -> QueryString
toQuery ModifyDBClusterSnapshotAttribute' {Maybe [Text]
Text
attributeName :: Text
dbClusterSnapshotIdentifier :: Text
valuesToRemove :: Maybe [Text]
valuesToAdd :: Maybe [Text]
$sel:attributeName:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Text
$sel:dbClusterSnapshotIdentifier:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Text
$sel:valuesToRemove:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Maybe [Text]
$sel:valuesToAdd:ModifyDBClusterSnapshotAttribute' :: ModifyDBClusterSnapshotAttribute -> Maybe [Text]
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"ModifyDBClusterSnapshotAttribute" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2014-10-31" :: Prelude.ByteString),
        ByteString
"ValuesToAdd"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"AttributeValue"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
valuesToAdd
            ),
        ByteString
"ValuesToRemove"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"AttributeValue"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
valuesToRemove
            ),
        ByteString
"DBClusterSnapshotIdentifier"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
dbClusterSnapshotIdentifier,
        ByteString
"AttributeName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
attributeName
      ]

-- | /See:/ 'newModifyDBClusterSnapshotAttributeResponse' smart constructor.
data ModifyDBClusterSnapshotAttributeResponse = ModifyDBClusterSnapshotAttributeResponse'
  { ModifyDBClusterSnapshotAttributeResponse
-> Maybe DBClusterSnapshotAttributesResult
dbClusterSnapshotAttributesResult :: Prelude.Maybe DBClusterSnapshotAttributesResult,
    -- | The response's http status code.
    ModifyDBClusterSnapshotAttributeResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ModifyDBClusterSnapshotAttributeResponse
-> ModifyDBClusterSnapshotAttributeResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyDBClusterSnapshotAttributeResponse
-> ModifyDBClusterSnapshotAttributeResponse -> Bool
$c/= :: ModifyDBClusterSnapshotAttributeResponse
-> ModifyDBClusterSnapshotAttributeResponse -> Bool
== :: ModifyDBClusterSnapshotAttributeResponse
-> ModifyDBClusterSnapshotAttributeResponse -> Bool
$c== :: ModifyDBClusterSnapshotAttributeResponse
-> ModifyDBClusterSnapshotAttributeResponse -> Bool
Prelude.Eq, ReadPrec [ModifyDBClusterSnapshotAttributeResponse]
ReadPrec ModifyDBClusterSnapshotAttributeResponse
Int -> ReadS ModifyDBClusterSnapshotAttributeResponse
ReadS [ModifyDBClusterSnapshotAttributeResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifyDBClusterSnapshotAttributeResponse]
$creadListPrec :: ReadPrec [ModifyDBClusterSnapshotAttributeResponse]
readPrec :: ReadPrec ModifyDBClusterSnapshotAttributeResponse
$creadPrec :: ReadPrec ModifyDBClusterSnapshotAttributeResponse
readList :: ReadS [ModifyDBClusterSnapshotAttributeResponse]
$creadList :: ReadS [ModifyDBClusterSnapshotAttributeResponse]
readsPrec :: Int -> ReadS ModifyDBClusterSnapshotAttributeResponse
$creadsPrec :: Int -> ReadS ModifyDBClusterSnapshotAttributeResponse
Prelude.Read, Int -> ModifyDBClusterSnapshotAttributeResponse -> ShowS
[ModifyDBClusterSnapshotAttributeResponse] -> ShowS
ModifyDBClusterSnapshotAttributeResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyDBClusterSnapshotAttributeResponse] -> ShowS
$cshowList :: [ModifyDBClusterSnapshotAttributeResponse] -> ShowS
show :: ModifyDBClusterSnapshotAttributeResponse -> String
$cshow :: ModifyDBClusterSnapshotAttributeResponse -> String
showsPrec :: Int -> ModifyDBClusterSnapshotAttributeResponse -> ShowS
$cshowsPrec :: Int -> ModifyDBClusterSnapshotAttributeResponse -> ShowS
Prelude.Show, forall x.
Rep ModifyDBClusterSnapshotAttributeResponse x
-> ModifyDBClusterSnapshotAttributeResponse
forall x.
ModifyDBClusterSnapshotAttributeResponse
-> Rep ModifyDBClusterSnapshotAttributeResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ModifyDBClusterSnapshotAttributeResponse x
-> ModifyDBClusterSnapshotAttributeResponse
$cfrom :: forall x.
ModifyDBClusterSnapshotAttributeResponse
-> Rep ModifyDBClusterSnapshotAttributeResponse x
Prelude.Generic)

-- |
-- Create a value of 'ModifyDBClusterSnapshotAttributeResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'dbClusterSnapshotAttributesResult', 'modifyDBClusterSnapshotAttributeResponse_dbClusterSnapshotAttributesResult' - Undocumented member.
--
-- 'httpStatus', 'modifyDBClusterSnapshotAttributeResponse_httpStatus' - The response's http status code.
newModifyDBClusterSnapshotAttributeResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ModifyDBClusterSnapshotAttributeResponse
newModifyDBClusterSnapshotAttributeResponse :: Int -> ModifyDBClusterSnapshotAttributeResponse
newModifyDBClusterSnapshotAttributeResponse
  Int
pHttpStatus_ =
    ModifyDBClusterSnapshotAttributeResponse'
      { $sel:dbClusterSnapshotAttributesResult:ModifyDBClusterSnapshotAttributeResponse' :: Maybe DBClusterSnapshotAttributesResult
dbClusterSnapshotAttributesResult =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:ModifyDBClusterSnapshotAttributeResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | Undocumented member.
modifyDBClusterSnapshotAttributeResponse_dbClusterSnapshotAttributesResult :: Lens.Lens' ModifyDBClusterSnapshotAttributeResponse (Prelude.Maybe DBClusterSnapshotAttributesResult)
modifyDBClusterSnapshotAttributeResponse_dbClusterSnapshotAttributesResult :: Lens'
  ModifyDBClusterSnapshotAttributeResponse
  (Maybe DBClusterSnapshotAttributesResult)
modifyDBClusterSnapshotAttributeResponse_dbClusterSnapshotAttributesResult = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyDBClusterSnapshotAttributeResponse' {Maybe DBClusterSnapshotAttributesResult
dbClusterSnapshotAttributesResult :: Maybe DBClusterSnapshotAttributesResult
$sel:dbClusterSnapshotAttributesResult:ModifyDBClusterSnapshotAttributeResponse' :: ModifyDBClusterSnapshotAttributeResponse
-> Maybe DBClusterSnapshotAttributesResult
dbClusterSnapshotAttributesResult} -> Maybe DBClusterSnapshotAttributesResult
dbClusterSnapshotAttributesResult) (\s :: ModifyDBClusterSnapshotAttributeResponse
s@ModifyDBClusterSnapshotAttributeResponse' {} Maybe DBClusterSnapshotAttributesResult
a -> ModifyDBClusterSnapshotAttributeResponse
s {$sel:dbClusterSnapshotAttributesResult:ModifyDBClusterSnapshotAttributeResponse' :: Maybe DBClusterSnapshotAttributesResult
dbClusterSnapshotAttributesResult = Maybe DBClusterSnapshotAttributesResult
a} :: ModifyDBClusterSnapshotAttributeResponse)

-- | The response's http status code.
modifyDBClusterSnapshotAttributeResponse_httpStatus :: Lens.Lens' ModifyDBClusterSnapshotAttributeResponse Prelude.Int
modifyDBClusterSnapshotAttributeResponse_httpStatus :: Lens' ModifyDBClusterSnapshotAttributeResponse Int
modifyDBClusterSnapshotAttributeResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyDBClusterSnapshotAttributeResponse' {Int
httpStatus :: Int
$sel:httpStatus:ModifyDBClusterSnapshotAttributeResponse' :: ModifyDBClusterSnapshotAttributeResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: ModifyDBClusterSnapshotAttributeResponse
s@ModifyDBClusterSnapshotAttributeResponse' {} Int
a -> ModifyDBClusterSnapshotAttributeResponse
s {$sel:httpStatus:ModifyDBClusterSnapshotAttributeResponse' :: Int
httpStatus = Int
a} :: ModifyDBClusterSnapshotAttributeResponse)

instance
  Prelude.NFData
    ModifyDBClusterSnapshotAttributeResponse
  where
  rnf :: ModifyDBClusterSnapshotAttributeResponse -> ()
rnf ModifyDBClusterSnapshotAttributeResponse' {Int
Maybe DBClusterSnapshotAttributesResult
httpStatus :: Int
dbClusterSnapshotAttributesResult :: Maybe DBClusterSnapshotAttributesResult
$sel:httpStatus:ModifyDBClusterSnapshotAttributeResponse' :: ModifyDBClusterSnapshotAttributeResponse -> Int
$sel:dbClusterSnapshotAttributesResult:ModifyDBClusterSnapshotAttributeResponse' :: ModifyDBClusterSnapshotAttributeResponse
-> Maybe DBClusterSnapshotAttributesResult
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DBClusterSnapshotAttributesResult
dbClusterSnapshotAttributesResult
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus