{-# 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.PinpointSmsVoiceV2.UpdatePool
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates the configuration of an existing pool. You can update the
-- opt-out list, enable or disable two-way messaging, change the
-- @TwoWayChannelArn@, enable or disable self-managed opt-outs, enable or
-- disable deletion protection, and enable or disable shared routes.
module Amazonka.PinpointSmsVoiceV2.UpdatePool
  ( -- * Creating a Request
    UpdatePool (..),
    newUpdatePool,

    -- * Request Lenses
    updatePool_deletionProtectionEnabled,
    updatePool_optOutListName,
    updatePool_selfManagedOptOutsEnabled,
    updatePool_sharedRoutesEnabled,
    updatePool_twoWayChannelArn,
    updatePool_twoWayEnabled,
    updatePool_poolId,

    -- * Destructuring the Response
    UpdatePoolResponse (..),
    newUpdatePoolResponse,

    -- * Response Lenses
    updatePoolResponse_createdTimestamp,
    updatePoolResponse_deletionProtectionEnabled,
    updatePoolResponse_messageType,
    updatePoolResponse_optOutListName,
    updatePoolResponse_poolArn,
    updatePoolResponse_poolId,
    updatePoolResponse_selfManagedOptOutsEnabled,
    updatePoolResponse_sharedRoutesEnabled,
    updatePoolResponse_status,
    updatePoolResponse_twoWayChannelArn,
    updatePoolResponse_twoWayEnabled,
    updatePoolResponse_httpStatus,
  )
where

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

-- | /See:/ 'newUpdatePool' smart constructor.
data UpdatePool = UpdatePool'
  { -- | When set to true the pool can\'t be deleted.
    UpdatePool -> Maybe Bool
deletionProtectionEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The OptOutList to associate with the pool. Valid values are either
    -- OptOutListName or OptOutListArn.
    UpdatePool -> Maybe Text
optOutListName :: Prelude.Maybe Prelude.Text,
    -- | By default this is set to false. When an end recipient sends a message
    -- that begins with HELP or STOP to one of your dedicated numbers, Amazon
    -- Pinpoint automatically replies with a customizable message and adds the
    -- end recipient to the OptOutList. When set to true you\'re responsible
    -- for responding to HELP and STOP requests. You\'re also responsible for
    -- tracking and honoring opt-out requests.
    UpdatePool -> Maybe Bool
selfManagedOptOutsEnabled :: Prelude.Maybe Prelude.Bool,
    -- | Indicates whether shared routes are enabled for the pool.
    UpdatePool -> Maybe Bool
sharedRoutesEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The Amazon Resource Name (ARN) of the two way channel.
    UpdatePool -> Maybe Text
twoWayChannelArn :: Prelude.Maybe Prelude.Text,
    -- | By default this is set to false. When set to true you can receive
    -- incoming text messages from your end recipients.
    UpdatePool -> Maybe Bool
twoWayEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The unique identifier of the pool to update. Valid values are either the
    -- PoolId or PoolArn.
    UpdatePool -> Text
poolId :: Prelude.Text
  }
  deriving (UpdatePool -> UpdatePool -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdatePool -> UpdatePool -> Bool
$c/= :: UpdatePool -> UpdatePool -> Bool
== :: UpdatePool -> UpdatePool -> Bool
$c== :: UpdatePool -> UpdatePool -> Bool
Prelude.Eq, ReadPrec [UpdatePool]
ReadPrec UpdatePool
Int -> ReadS UpdatePool
ReadS [UpdatePool]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdatePool]
$creadListPrec :: ReadPrec [UpdatePool]
readPrec :: ReadPrec UpdatePool
$creadPrec :: ReadPrec UpdatePool
readList :: ReadS [UpdatePool]
$creadList :: ReadS [UpdatePool]
readsPrec :: Int -> ReadS UpdatePool
$creadsPrec :: Int -> ReadS UpdatePool
Prelude.Read, Int -> UpdatePool -> ShowS
[UpdatePool] -> ShowS
UpdatePool -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdatePool] -> ShowS
$cshowList :: [UpdatePool] -> ShowS
show :: UpdatePool -> String
$cshow :: UpdatePool -> String
showsPrec :: Int -> UpdatePool -> ShowS
$cshowsPrec :: Int -> UpdatePool -> ShowS
Prelude.Show, forall x. Rep UpdatePool x -> UpdatePool
forall x. UpdatePool -> Rep UpdatePool x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdatePool x -> UpdatePool
$cfrom :: forall x. UpdatePool -> Rep UpdatePool x
Prelude.Generic)

-- |
-- Create a value of 'UpdatePool' 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:
--
-- 'deletionProtectionEnabled', 'updatePool_deletionProtectionEnabled' - When set to true the pool can\'t be deleted.
--
-- 'optOutListName', 'updatePool_optOutListName' - The OptOutList to associate with the pool. Valid values are either
-- OptOutListName or OptOutListArn.
--
-- 'selfManagedOptOutsEnabled', 'updatePool_selfManagedOptOutsEnabled' - By default this is set to false. When an end recipient sends a message
-- that begins with HELP or STOP to one of your dedicated numbers, Amazon
-- Pinpoint automatically replies with a customizable message and adds the
-- end recipient to the OptOutList. When set to true you\'re responsible
-- for responding to HELP and STOP requests. You\'re also responsible for
-- tracking and honoring opt-out requests.
--
-- 'sharedRoutesEnabled', 'updatePool_sharedRoutesEnabled' - Indicates whether shared routes are enabled for the pool.
--
-- 'twoWayChannelArn', 'updatePool_twoWayChannelArn' - The Amazon Resource Name (ARN) of the two way channel.
--
-- 'twoWayEnabled', 'updatePool_twoWayEnabled' - By default this is set to false. When set to true you can receive
-- incoming text messages from your end recipients.
--
-- 'poolId', 'updatePool_poolId' - The unique identifier of the pool to update. Valid values are either the
-- PoolId or PoolArn.
newUpdatePool ::
  -- | 'poolId'
  Prelude.Text ->
  UpdatePool
newUpdatePool :: Text -> UpdatePool
newUpdatePool Text
pPoolId_ =
  UpdatePool'
    { $sel:deletionProtectionEnabled:UpdatePool' :: Maybe Bool
deletionProtectionEnabled =
        forall a. Maybe a
Prelude.Nothing,
      $sel:optOutListName:UpdatePool' :: Maybe Text
optOutListName = forall a. Maybe a
Prelude.Nothing,
      $sel:selfManagedOptOutsEnabled:UpdatePool' :: Maybe Bool
selfManagedOptOutsEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:sharedRoutesEnabled:UpdatePool' :: Maybe Bool
sharedRoutesEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:twoWayChannelArn:UpdatePool' :: Maybe Text
twoWayChannelArn = forall a. Maybe a
Prelude.Nothing,
      $sel:twoWayEnabled:UpdatePool' :: Maybe Bool
twoWayEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:poolId:UpdatePool' :: Text
poolId = Text
pPoolId_
    }

-- | When set to true the pool can\'t be deleted.
updatePool_deletionProtectionEnabled :: Lens.Lens' UpdatePool (Prelude.Maybe Prelude.Bool)
updatePool_deletionProtectionEnabled :: Lens' UpdatePool (Maybe Bool)
updatePool_deletionProtectionEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePool' {Maybe Bool
deletionProtectionEnabled :: Maybe Bool
$sel:deletionProtectionEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
deletionProtectionEnabled} -> Maybe Bool
deletionProtectionEnabled) (\s :: UpdatePool
s@UpdatePool' {} Maybe Bool
a -> UpdatePool
s {$sel:deletionProtectionEnabled:UpdatePool' :: Maybe Bool
deletionProtectionEnabled = Maybe Bool
a} :: UpdatePool)

-- | The OptOutList to associate with the pool. Valid values are either
-- OptOutListName or OptOutListArn.
updatePool_optOutListName :: Lens.Lens' UpdatePool (Prelude.Maybe Prelude.Text)
updatePool_optOutListName :: Lens' UpdatePool (Maybe Text)
updatePool_optOutListName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePool' {Maybe Text
optOutListName :: Maybe Text
$sel:optOutListName:UpdatePool' :: UpdatePool -> Maybe Text
optOutListName} -> Maybe Text
optOutListName) (\s :: UpdatePool
s@UpdatePool' {} Maybe Text
a -> UpdatePool
s {$sel:optOutListName:UpdatePool' :: Maybe Text
optOutListName = Maybe Text
a} :: UpdatePool)

-- | By default this is set to false. When an end recipient sends a message
-- that begins with HELP or STOP to one of your dedicated numbers, Amazon
-- Pinpoint automatically replies with a customizable message and adds the
-- end recipient to the OptOutList. When set to true you\'re responsible
-- for responding to HELP and STOP requests. You\'re also responsible for
-- tracking and honoring opt-out requests.
updatePool_selfManagedOptOutsEnabled :: Lens.Lens' UpdatePool (Prelude.Maybe Prelude.Bool)
updatePool_selfManagedOptOutsEnabled :: Lens' UpdatePool (Maybe Bool)
updatePool_selfManagedOptOutsEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePool' {Maybe Bool
selfManagedOptOutsEnabled :: Maybe Bool
$sel:selfManagedOptOutsEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
selfManagedOptOutsEnabled} -> Maybe Bool
selfManagedOptOutsEnabled) (\s :: UpdatePool
s@UpdatePool' {} Maybe Bool
a -> UpdatePool
s {$sel:selfManagedOptOutsEnabled:UpdatePool' :: Maybe Bool
selfManagedOptOutsEnabled = Maybe Bool
a} :: UpdatePool)

-- | Indicates whether shared routes are enabled for the pool.
updatePool_sharedRoutesEnabled :: Lens.Lens' UpdatePool (Prelude.Maybe Prelude.Bool)
updatePool_sharedRoutesEnabled :: Lens' UpdatePool (Maybe Bool)
updatePool_sharedRoutesEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePool' {Maybe Bool
sharedRoutesEnabled :: Maybe Bool
$sel:sharedRoutesEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
sharedRoutesEnabled} -> Maybe Bool
sharedRoutesEnabled) (\s :: UpdatePool
s@UpdatePool' {} Maybe Bool
a -> UpdatePool
s {$sel:sharedRoutesEnabled:UpdatePool' :: Maybe Bool
sharedRoutesEnabled = Maybe Bool
a} :: UpdatePool)

-- | The Amazon Resource Name (ARN) of the two way channel.
updatePool_twoWayChannelArn :: Lens.Lens' UpdatePool (Prelude.Maybe Prelude.Text)
updatePool_twoWayChannelArn :: Lens' UpdatePool (Maybe Text)
updatePool_twoWayChannelArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePool' {Maybe Text
twoWayChannelArn :: Maybe Text
$sel:twoWayChannelArn:UpdatePool' :: UpdatePool -> Maybe Text
twoWayChannelArn} -> Maybe Text
twoWayChannelArn) (\s :: UpdatePool
s@UpdatePool' {} Maybe Text
a -> UpdatePool
s {$sel:twoWayChannelArn:UpdatePool' :: Maybe Text
twoWayChannelArn = Maybe Text
a} :: UpdatePool)

-- | By default this is set to false. When set to true you can receive
-- incoming text messages from your end recipients.
updatePool_twoWayEnabled :: Lens.Lens' UpdatePool (Prelude.Maybe Prelude.Bool)
updatePool_twoWayEnabled :: Lens' UpdatePool (Maybe Bool)
updatePool_twoWayEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePool' {Maybe Bool
twoWayEnabled :: Maybe Bool
$sel:twoWayEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
twoWayEnabled} -> Maybe Bool
twoWayEnabled) (\s :: UpdatePool
s@UpdatePool' {} Maybe Bool
a -> UpdatePool
s {$sel:twoWayEnabled:UpdatePool' :: Maybe Bool
twoWayEnabled = Maybe Bool
a} :: UpdatePool)

-- | The unique identifier of the pool to update. Valid values are either the
-- PoolId or PoolArn.
updatePool_poolId :: Lens.Lens' UpdatePool Prelude.Text
updatePool_poolId :: Lens' UpdatePool Text
updatePool_poolId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePool' {Text
poolId :: Text
$sel:poolId:UpdatePool' :: UpdatePool -> Text
poolId} -> Text
poolId) (\s :: UpdatePool
s@UpdatePool' {} Text
a -> UpdatePool
s {$sel:poolId:UpdatePool' :: Text
poolId = Text
a} :: UpdatePool)

instance Core.AWSRequest UpdatePool where
  type AWSResponse UpdatePool = UpdatePoolResponse
  request :: (Service -> Service) -> UpdatePool -> Request UpdatePool
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdatePool
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse UpdatePool)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe POSIX
-> Maybe Bool
-> Maybe MessageType
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe PoolStatus
-> Maybe Text
-> Maybe Bool
-> Int
-> UpdatePoolResponse
UpdatePoolResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"CreatedTimestamp")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"DeletionProtectionEnabled")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"MessageType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"OptOutListName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"PoolArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"PoolId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"SelfManagedOptOutsEnabled")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"SharedRoutesEnabled")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Status")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"TwoWayChannelArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"TwoWayEnabled")
            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 UpdatePool where
  hashWithSalt :: Int -> UpdatePool -> Int
hashWithSalt Int
_salt UpdatePool' {Maybe Bool
Maybe Text
Text
poolId :: Text
twoWayEnabled :: Maybe Bool
twoWayChannelArn :: Maybe Text
sharedRoutesEnabled :: Maybe Bool
selfManagedOptOutsEnabled :: Maybe Bool
optOutListName :: Maybe Text
deletionProtectionEnabled :: Maybe Bool
$sel:poolId:UpdatePool' :: UpdatePool -> Text
$sel:twoWayEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
$sel:twoWayChannelArn:UpdatePool' :: UpdatePool -> Maybe Text
$sel:sharedRoutesEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
$sel:selfManagedOptOutsEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
$sel:optOutListName:UpdatePool' :: UpdatePool -> Maybe Text
$sel:deletionProtectionEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
deletionProtectionEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
optOutListName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
selfManagedOptOutsEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
sharedRoutesEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
twoWayChannelArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
twoWayEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
poolId

instance Prelude.NFData UpdatePool where
  rnf :: UpdatePool -> ()
rnf UpdatePool' {Maybe Bool
Maybe Text
Text
poolId :: Text
twoWayEnabled :: Maybe Bool
twoWayChannelArn :: Maybe Text
sharedRoutesEnabled :: Maybe Bool
selfManagedOptOutsEnabled :: Maybe Bool
optOutListName :: Maybe Text
deletionProtectionEnabled :: Maybe Bool
$sel:poolId:UpdatePool' :: UpdatePool -> Text
$sel:twoWayEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
$sel:twoWayChannelArn:UpdatePool' :: UpdatePool -> Maybe Text
$sel:sharedRoutesEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
$sel:selfManagedOptOutsEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
$sel:optOutListName:UpdatePool' :: UpdatePool -> Maybe Text
$sel:deletionProtectionEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
deletionProtectionEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
optOutListName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
selfManagedOptOutsEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
sharedRoutesEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
twoWayChannelArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
twoWayEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
poolId

instance Data.ToHeaders UpdatePool where
  toHeaders :: UpdatePool -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"PinpointSMSVoiceV2.UpdatePool" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdatePool where
  toJSON :: UpdatePool -> Value
toJSON UpdatePool' {Maybe Bool
Maybe Text
Text
poolId :: Text
twoWayEnabled :: Maybe Bool
twoWayChannelArn :: Maybe Text
sharedRoutesEnabled :: Maybe Bool
selfManagedOptOutsEnabled :: Maybe Bool
optOutListName :: Maybe Text
deletionProtectionEnabled :: Maybe Bool
$sel:poolId:UpdatePool' :: UpdatePool -> Text
$sel:twoWayEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
$sel:twoWayChannelArn:UpdatePool' :: UpdatePool -> Maybe Text
$sel:sharedRoutesEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
$sel:selfManagedOptOutsEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
$sel:optOutListName:UpdatePool' :: UpdatePool -> Maybe Text
$sel:deletionProtectionEnabled:UpdatePool' :: UpdatePool -> Maybe Bool
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"DeletionProtectionEnabled" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
deletionProtectionEnabled,
            (Key
"OptOutListName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
optOutListName,
            (Key
"SelfManagedOptOutsEnabled" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
selfManagedOptOutsEnabled,
            (Key
"SharedRoutesEnabled" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
sharedRoutesEnabled,
            (Key
"TwoWayChannelArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
twoWayChannelArn,
            (Key
"TwoWayEnabled" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
twoWayEnabled,
            forall a. a -> Maybe a
Prelude.Just (Key
"PoolId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
poolId)
          ]
      )

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

instance Data.ToQuery UpdatePool where
  toQuery :: UpdatePool -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newUpdatePoolResponse' smart constructor.
data UpdatePoolResponse = UpdatePoolResponse'
  { -- | The time when the pool was created, in
    -- <https://www.epochconverter.com/ UNIX epoch time> format.
    UpdatePoolResponse -> Maybe POSIX
createdTimestamp :: Prelude.Maybe Data.POSIX,
    -- | When set to true the pool can\'t be deleted.
    UpdatePoolResponse -> Maybe Bool
deletionProtectionEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The type of message for the pool to use.
    UpdatePoolResponse -> Maybe MessageType
messageType :: Prelude.Maybe MessageType,
    -- | The name of the OptOutList associated with the pool.
    UpdatePoolResponse -> Maybe Text
optOutListName :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the pool.
    UpdatePoolResponse -> Maybe Text
poolArn :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier of the pool.
    UpdatePoolResponse -> Maybe Text
poolId :: Prelude.Maybe Prelude.Text,
    -- | When an end recipient sends a message that begins with HELP or STOP to
    -- one of your dedicated numbers, Amazon Pinpoint automatically replies
    -- with a customizable message and adds the end recipient to the
    -- OptOutList. When set to true you\'re responsible for responding to HELP
    -- and STOP requests. You\'re also responsible for tracking and honoring
    -- opt-out requests.
    UpdatePoolResponse -> Maybe Bool
selfManagedOptOutsEnabled :: Prelude.Maybe Prelude.Bool,
    -- | Indicates whether shared routes are enabled for the pool.
    UpdatePoolResponse -> Maybe Bool
sharedRoutesEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The current status of the pool update request.
    UpdatePoolResponse -> Maybe PoolStatus
status :: Prelude.Maybe PoolStatus,
    -- | The Amazon Resource Name (ARN) of the two way channel.
    UpdatePoolResponse -> Maybe Text
twoWayChannelArn :: Prelude.Maybe Prelude.Text,
    -- | By default this is set to false. When set to true you can receive
    -- incoming text messages from your end recipients.
    UpdatePoolResponse -> Maybe Bool
twoWayEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The response's http status code.
    UpdatePoolResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdatePoolResponse -> UpdatePoolResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdatePoolResponse -> UpdatePoolResponse -> Bool
$c/= :: UpdatePoolResponse -> UpdatePoolResponse -> Bool
== :: UpdatePoolResponse -> UpdatePoolResponse -> Bool
$c== :: UpdatePoolResponse -> UpdatePoolResponse -> Bool
Prelude.Eq, ReadPrec [UpdatePoolResponse]
ReadPrec UpdatePoolResponse
Int -> ReadS UpdatePoolResponse
ReadS [UpdatePoolResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdatePoolResponse]
$creadListPrec :: ReadPrec [UpdatePoolResponse]
readPrec :: ReadPrec UpdatePoolResponse
$creadPrec :: ReadPrec UpdatePoolResponse
readList :: ReadS [UpdatePoolResponse]
$creadList :: ReadS [UpdatePoolResponse]
readsPrec :: Int -> ReadS UpdatePoolResponse
$creadsPrec :: Int -> ReadS UpdatePoolResponse
Prelude.Read, Int -> UpdatePoolResponse -> ShowS
[UpdatePoolResponse] -> ShowS
UpdatePoolResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdatePoolResponse] -> ShowS
$cshowList :: [UpdatePoolResponse] -> ShowS
show :: UpdatePoolResponse -> String
$cshow :: UpdatePoolResponse -> String
showsPrec :: Int -> UpdatePoolResponse -> ShowS
$cshowsPrec :: Int -> UpdatePoolResponse -> ShowS
Prelude.Show, forall x. Rep UpdatePoolResponse x -> UpdatePoolResponse
forall x. UpdatePoolResponse -> Rep UpdatePoolResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdatePoolResponse x -> UpdatePoolResponse
$cfrom :: forall x. UpdatePoolResponse -> Rep UpdatePoolResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdatePoolResponse' 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:
--
-- 'createdTimestamp', 'updatePoolResponse_createdTimestamp' - The time when the pool was created, in
-- <https://www.epochconverter.com/ UNIX epoch time> format.
--
-- 'deletionProtectionEnabled', 'updatePoolResponse_deletionProtectionEnabled' - When set to true the pool can\'t be deleted.
--
-- 'messageType', 'updatePoolResponse_messageType' - The type of message for the pool to use.
--
-- 'optOutListName', 'updatePoolResponse_optOutListName' - The name of the OptOutList associated with the pool.
--
-- 'poolArn', 'updatePoolResponse_poolArn' - The ARN of the pool.
--
-- 'poolId', 'updatePoolResponse_poolId' - The unique identifier of the pool.
--
-- 'selfManagedOptOutsEnabled', 'updatePoolResponse_selfManagedOptOutsEnabled' - When an end recipient sends a message that begins with HELP or STOP to
-- one of your dedicated numbers, Amazon Pinpoint automatically replies
-- with a customizable message and adds the end recipient to the
-- OptOutList. When set to true you\'re responsible for responding to HELP
-- and STOP requests. You\'re also responsible for tracking and honoring
-- opt-out requests.
--
-- 'sharedRoutesEnabled', 'updatePoolResponse_sharedRoutesEnabled' - Indicates whether shared routes are enabled for the pool.
--
-- 'status', 'updatePoolResponse_status' - The current status of the pool update request.
--
-- 'twoWayChannelArn', 'updatePoolResponse_twoWayChannelArn' - The Amazon Resource Name (ARN) of the two way channel.
--
-- 'twoWayEnabled', 'updatePoolResponse_twoWayEnabled' - By default this is set to false. When set to true you can receive
-- incoming text messages from your end recipients.
--
-- 'httpStatus', 'updatePoolResponse_httpStatus' - The response's http status code.
newUpdatePoolResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdatePoolResponse
newUpdatePoolResponse :: Int -> UpdatePoolResponse
newUpdatePoolResponse Int
pHttpStatus_ =
  UpdatePoolResponse'
    { $sel:createdTimestamp:UpdatePoolResponse' :: Maybe POSIX
createdTimestamp =
        forall a. Maybe a
Prelude.Nothing,
      $sel:deletionProtectionEnabled:UpdatePoolResponse' :: Maybe Bool
deletionProtectionEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:messageType:UpdatePoolResponse' :: Maybe MessageType
messageType = forall a. Maybe a
Prelude.Nothing,
      $sel:optOutListName:UpdatePoolResponse' :: Maybe Text
optOutListName = forall a. Maybe a
Prelude.Nothing,
      $sel:poolArn:UpdatePoolResponse' :: Maybe Text
poolArn = forall a. Maybe a
Prelude.Nothing,
      $sel:poolId:UpdatePoolResponse' :: Maybe Text
poolId = forall a. Maybe a
Prelude.Nothing,
      $sel:selfManagedOptOutsEnabled:UpdatePoolResponse' :: Maybe Bool
selfManagedOptOutsEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:sharedRoutesEnabled:UpdatePoolResponse' :: Maybe Bool
sharedRoutesEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:status:UpdatePoolResponse' :: Maybe PoolStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:twoWayChannelArn:UpdatePoolResponse' :: Maybe Text
twoWayChannelArn = forall a. Maybe a
Prelude.Nothing,
      $sel:twoWayEnabled:UpdatePoolResponse' :: Maybe Bool
twoWayEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdatePoolResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The time when the pool was created, in
-- <https://www.epochconverter.com/ UNIX epoch time> format.
updatePoolResponse_createdTimestamp :: Lens.Lens' UpdatePoolResponse (Prelude.Maybe Prelude.UTCTime)
updatePoolResponse_createdTimestamp :: Lens' UpdatePoolResponse (Maybe UTCTime)
updatePoolResponse_createdTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePoolResponse' {Maybe POSIX
createdTimestamp :: Maybe POSIX
$sel:createdTimestamp:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe POSIX
createdTimestamp} -> Maybe POSIX
createdTimestamp) (\s :: UpdatePoolResponse
s@UpdatePoolResponse' {} Maybe POSIX
a -> UpdatePoolResponse
s {$sel:createdTimestamp:UpdatePoolResponse' :: Maybe POSIX
createdTimestamp = Maybe POSIX
a} :: UpdatePoolResponse) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | When set to true the pool can\'t be deleted.
updatePoolResponse_deletionProtectionEnabled :: Lens.Lens' UpdatePoolResponse (Prelude.Maybe Prelude.Bool)
updatePoolResponse_deletionProtectionEnabled :: Lens' UpdatePoolResponse (Maybe Bool)
updatePoolResponse_deletionProtectionEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePoolResponse' {Maybe Bool
deletionProtectionEnabled :: Maybe Bool
$sel:deletionProtectionEnabled:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Bool
deletionProtectionEnabled} -> Maybe Bool
deletionProtectionEnabled) (\s :: UpdatePoolResponse
s@UpdatePoolResponse' {} Maybe Bool
a -> UpdatePoolResponse
s {$sel:deletionProtectionEnabled:UpdatePoolResponse' :: Maybe Bool
deletionProtectionEnabled = Maybe Bool
a} :: UpdatePoolResponse)

-- | The type of message for the pool to use.
updatePoolResponse_messageType :: Lens.Lens' UpdatePoolResponse (Prelude.Maybe MessageType)
updatePoolResponse_messageType :: Lens' UpdatePoolResponse (Maybe MessageType)
updatePoolResponse_messageType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePoolResponse' {Maybe MessageType
messageType :: Maybe MessageType
$sel:messageType:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe MessageType
messageType} -> Maybe MessageType
messageType) (\s :: UpdatePoolResponse
s@UpdatePoolResponse' {} Maybe MessageType
a -> UpdatePoolResponse
s {$sel:messageType:UpdatePoolResponse' :: Maybe MessageType
messageType = Maybe MessageType
a} :: UpdatePoolResponse)

-- | The name of the OptOutList associated with the pool.
updatePoolResponse_optOutListName :: Lens.Lens' UpdatePoolResponse (Prelude.Maybe Prelude.Text)
updatePoolResponse_optOutListName :: Lens' UpdatePoolResponse (Maybe Text)
updatePoolResponse_optOutListName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePoolResponse' {Maybe Text
optOutListName :: Maybe Text
$sel:optOutListName:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Text
optOutListName} -> Maybe Text
optOutListName) (\s :: UpdatePoolResponse
s@UpdatePoolResponse' {} Maybe Text
a -> UpdatePoolResponse
s {$sel:optOutListName:UpdatePoolResponse' :: Maybe Text
optOutListName = Maybe Text
a} :: UpdatePoolResponse)

-- | The ARN of the pool.
updatePoolResponse_poolArn :: Lens.Lens' UpdatePoolResponse (Prelude.Maybe Prelude.Text)
updatePoolResponse_poolArn :: Lens' UpdatePoolResponse (Maybe Text)
updatePoolResponse_poolArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePoolResponse' {Maybe Text
poolArn :: Maybe Text
$sel:poolArn:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Text
poolArn} -> Maybe Text
poolArn) (\s :: UpdatePoolResponse
s@UpdatePoolResponse' {} Maybe Text
a -> UpdatePoolResponse
s {$sel:poolArn:UpdatePoolResponse' :: Maybe Text
poolArn = Maybe Text
a} :: UpdatePoolResponse)

-- | The unique identifier of the pool.
updatePoolResponse_poolId :: Lens.Lens' UpdatePoolResponse (Prelude.Maybe Prelude.Text)
updatePoolResponse_poolId :: Lens' UpdatePoolResponse (Maybe Text)
updatePoolResponse_poolId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePoolResponse' {Maybe Text
poolId :: Maybe Text
$sel:poolId:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Text
poolId} -> Maybe Text
poolId) (\s :: UpdatePoolResponse
s@UpdatePoolResponse' {} Maybe Text
a -> UpdatePoolResponse
s {$sel:poolId:UpdatePoolResponse' :: Maybe Text
poolId = Maybe Text
a} :: UpdatePoolResponse)

-- | When an end recipient sends a message that begins with HELP or STOP to
-- one of your dedicated numbers, Amazon Pinpoint automatically replies
-- with a customizable message and adds the end recipient to the
-- OptOutList. When set to true you\'re responsible for responding to HELP
-- and STOP requests. You\'re also responsible for tracking and honoring
-- opt-out requests.
updatePoolResponse_selfManagedOptOutsEnabled :: Lens.Lens' UpdatePoolResponse (Prelude.Maybe Prelude.Bool)
updatePoolResponse_selfManagedOptOutsEnabled :: Lens' UpdatePoolResponse (Maybe Bool)
updatePoolResponse_selfManagedOptOutsEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePoolResponse' {Maybe Bool
selfManagedOptOutsEnabled :: Maybe Bool
$sel:selfManagedOptOutsEnabled:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Bool
selfManagedOptOutsEnabled} -> Maybe Bool
selfManagedOptOutsEnabled) (\s :: UpdatePoolResponse
s@UpdatePoolResponse' {} Maybe Bool
a -> UpdatePoolResponse
s {$sel:selfManagedOptOutsEnabled:UpdatePoolResponse' :: Maybe Bool
selfManagedOptOutsEnabled = Maybe Bool
a} :: UpdatePoolResponse)

-- | Indicates whether shared routes are enabled for the pool.
updatePoolResponse_sharedRoutesEnabled :: Lens.Lens' UpdatePoolResponse (Prelude.Maybe Prelude.Bool)
updatePoolResponse_sharedRoutesEnabled :: Lens' UpdatePoolResponse (Maybe Bool)
updatePoolResponse_sharedRoutesEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePoolResponse' {Maybe Bool
sharedRoutesEnabled :: Maybe Bool
$sel:sharedRoutesEnabled:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Bool
sharedRoutesEnabled} -> Maybe Bool
sharedRoutesEnabled) (\s :: UpdatePoolResponse
s@UpdatePoolResponse' {} Maybe Bool
a -> UpdatePoolResponse
s {$sel:sharedRoutesEnabled:UpdatePoolResponse' :: Maybe Bool
sharedRoutesEnabled = Maybe Bool
a} :: UpdatePoolResponse)

-- | The current status of the pool update request.
updatePoolResponse_status :: Lens.Lens' UpdatePoolResponse (Prelude.Maybe PoolStatus)
updatePoolResponse_status :: Lens' UpdatePoolResponse (Maybe PoolStatus)
updatePoolResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePoolResponse' {Maybe PoolStatus
status :: Maybe PoolStatus
$sel:status:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe PoolStatus
status} -> Maybe PoolStatus
status) (\s :: UpdatePoolResponse
s@UpdatePoolResponse' {} Maybe PoolStatus
a -> UpdatePoolResponse
s {$sel:status:UpdatePoolResponse' :: Maybe PoolStatus
status = Maybe PoolStatus
a} :: UpdatePoolResponse)

-- | The Amazon Resource Name (ARN) of the two way channel.
updatePoolResponse_twoWayChannelArn :: Lens.Lens' UpdatePoolResponse (Prelude.Maybe Prelude.Text)
updatePoolResponse_twoWayChannelArn :: Lens' UpdatePoolResponse (Maybe Text)
updatePoolResponse_twoWayChannelArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePoolResponse' {Maybe Text
twoWayChannelArn :: Maybe Text
$sel:twoWayChannelArn:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Text
twoWayChannelArn} -> Maybe Text
twoWayChannelArn) (\s :: UpdatePoolResponse
s@UpdatePoolResponse' {} Maybe Text
a -> UpdatePoolResponse
s {$sel:twoWayChannelArn:UpdatePoolResponse' :: Maybe Text
twoWayChannelArn = Maybe Text
a} :: UpdatePoolResponse)

-- | By default this is set to false. When set to true you can receive
-- incoming text messages from your end recipients.
updatePoolResponse_twoWayEnabled :: Lens.Lens' UpdatePoolResponse (Prelude.Maybe Prelude.Bool)
updatePoolResponse_twoWayEnabled :: Lens' UpdatePoolResponse (Maybe Bool)
updatePoolResponse_twoWayEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdatePoolResponse' {Maybe Bool
twoWayEnabled :: Maybe Bool
$sel:twoWayEnabled:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Bool
twoWayEnabled} -> Maybe Bool
twoWayEnabled) (\s :: UpdatePoolResponse
s@UpdatePoolResponse' {} Maybe Bool
a -> UpdatePoolResponse
s {$sel:twoWayEnabled:UpdatePoolResponse' :: Maybe Bool
twoWayEnabled = Maybe Bool
a} :: UpdatePoolResponse)

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

instance Prelude.NFData UpdatePoolResponse where
  rnf :: UpdatePoolResponse -> ()
rnf UpdatePoolResponse' {Int
Maybe Bool
Maybe Text
Maybe POSIX
Maybe MessageType
Maybe PoolStatus
httpStatus :: Int
twoWayEnabled :: Maybe Bool
twoWayChannelArn :: Maybe Text
status :: Maybe PoolStatus
sharedRoutesEnabled :: Maybe Bool
selfManagedOptOutsEnabled :: Maybe Bool
poolId :: Maybe Text
poolArn :: Maybe Text
optOutListName :: Maybe Text
messageType :: Maybe MessageType
deletionProtectionEnabled :: Maybe Bool
createdTimestamp :: Maybe POSIX
$sel:httpStatus:UpdatePoolResponse' :: UpdatePoolResponse -> Int
$sel:twoWayEnabled:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Bool
$sel:twoWayChannelArn:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Text
$sel:status:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe PoolStatus
$sel:sharedRoutesEnabled:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Bool
$sel:selfManagedOptOutsEnabled:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Bool
$sel:poolId:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Text
$sel:poolArn:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Text
$sel:optOutListName:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Text
$sel:messageType:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe MessageType
$sel:deletionProtectionEnabled:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe Bool
$sel:createdTimestamp:UpdatePoolResponse' :: UpdatePoolResponse -> Maybe POSIX
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
deletionProtectionEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MessageType
messageType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
optOutListName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
poolArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
poolId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
selfManagedOptOutsEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
sharedRoutesEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PoolStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
twoWayChannelArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
twoWayEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus