{-# 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.DeleteOptedOutNumber
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes an existing opted out destination phone number from the
-- specified opt-out list.
--
-- Each destination phone number can only be deleted once every 30 days.
--
-- If the specified destination phone number doesn\'t exist or if the
-- opt-out list doesn\'t exist, an Error is returned.
module Amazonka.PinpointSmsVoiceV2.DeleteOptedOutNumber
  ( -- * Creating a Request
    DeleteOptedOutNumber (..),
    newDeleteOptedOutNumber,

    -- * Request Lenses
    deleteOptedOutNumber_optOutListName,
    deleteOptedOutNumber_optedOutNumber,

    -- * Destructuring the Response
    DeleteOptedOutNumberResponse (..),
    newDeleteOptedOutNumberResponse,

    -- * Response Lenses
    deleteOptedOutNumberResponse_endUserOptedOut,
    deleteOptedOutNumberResponse_optOutListArn,
    deleteOptedOutNumberResponse_optOutListName,
    deleteOptedOutNumberResponse_optedOutNumber,
    deleteOptedOutNumberResponse_optedOutTimestamp,
    deleteOptedOutNumberResponse_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:/ 'newDeleteOptedOutNumber' smart constructor.
data DeleteOptedOutNumber = DeleteOptedOutNumber'
  { -- | The OptOutListName or OptOutListArn to remove the phone number from.
    DeleteOptedOutNumber -> Text
optOutListName :: Prelude.Text,
    -- | The phone number, in E.164 format, to remove from the OptOutList.
    DeleteOptedOutNumber -> Text
optedOutNumber :: Prelude.Text
  }
  deriving (DeleteOptedOutNumber -> DeleteOptedOutNumber -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteOptedOutNumber -> DeleteOptedOutNumber -> Bool
$c/= :: DeleteOptedOutNumber -> DeleteOptedOutNumber -> Bool
== :: DeleteOptedOutNumber -> DeleteOptedOutNumber -> Bool
$c== :: DeleteOptedOutNumber -> DeleteOptedOutNumber -> Bool
Prelude.Eq, ReadPrec [DeleteOptedOutNumber]
ReadPrec DeleteOptedOutNumber
Int -> ReadS DeleteOptedOutNumber
ReadS [DeleteOptedOutNumber]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteOptedOutNumber]
$creadListPrec :: ReadPrec [DeleteOptedOutNumber]
readPrec :: ReadPrec DeleteOptedOutNumber
$creadPrec :: ReadPrec DeleteOptedOutNumber
readList :: ReadS [DeleteOptedOutNumber]
$creadList :: ReadS [DeleteOptedOutNumber]
readsPrec :: Int -> ReadS DeleteOptedOutNumber
$creadsPrec :: Int -> ReadS DeleteOptedOutNumber
Prelude.Read, Int -> DeleteOptedOutNumber -> ShowS
[DeleteOptedOutNumber] -> ShowS
DeleteOptedOutNumber -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteOptedOutNumber] -> ShowS
$cshowList :: [DeleteOptedOutNumber] -> ShowS
show :: DeleteOptedOutNumber -> String
$cshow :: DeleteOptedOutNumber -> String
showsPrec :: Int -> DeleteOptedOutNumber -> ShowS
$cshowsPrec :: Int -> DeleteOptedOutNumber -> ShowS
Prelude.Show, forall x. Rep DeleteOptedOutNumber x -> DeleteOptedOutNumber
forall x. DeleteOptedOutNumber -> Rep DeleteOptedOutNumber x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteOptedOutNumber x -> DeleteOptedOutNumber
$cfrom :: forall x. DeleteOptedOutNumber -> Rep DeleteOptedOutNumber x
Prelude.Generic)

-- |
-- Create a value of 'DeleteOptedOutNumber' 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:
--
-- 'optOutListName', 'deleteOptedOutNumber_optOutListName' - The OptOutListName or OptOutListArn to remove the phone number from.
--
-- 'optedOutNumber', 'deleteOptedOutNumber_optedOutNumber' - The phone number, in E.164 format, to remove from the OptOutList.
newDeleteOptedOutNumber ::
  -- | 'optOutListName'
  Prelude.Text ->
  -- | 'optedOutNumber'
  Prelude.Text ->
  DeleteOptedOutNumber
newDeleteOptedOutNumber :: Text -> Text -> DeleteOptedOutNumber
newDeleteOptedOutNumber
  Text
pOptOutListName_
  Text
pOptedOutNumber_ =
    DeleteOptedOutNumber'
      { $sel:optOutListName:DeleteOptedOutNumber' :: Text
optOutListName =
          Text
pOptOutListName_,
        $sel:optedOutNumber:DeleteOptedOutNumber' :: Text
optedOutNumber = Text
pOptedOutNumber_
      }

-- | The OptOutListName or OptOutListArn to remove the phone number from.
deleteOptedOutNumber_optOutListName :: Lens.Lens' DeleteOptedOutNumber Prelude.Text
deleteOptedOutNumber_optOutListName :: Lens' DeleteOptedOutNumber Text
deleteOptedOutNumber_optOutListName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteOptedOutNumber' {Text
optOutListName :: Text
$sel:optOutListName:DeleteOptedOutNumber' :: DeleteOptedOutNumber -> Text
optOutListName} -> Text
optOutListName) (\s :: DeleteOptedOutNumber
s@DeleteOptedOutNumber' {} Text
a -> DeleteOptedOutNumber
s {$sel:optOutListName:DeleteOptedOutNumber' :: Text
optOutListName = Text
a} :: DeleteOptedOutNumber)

-- | The phone number, in E.164 format, to remove from the OptOutList.
deleteOptedOutNumber_optedOutNumber :: Lens.Lens' DeleteOptedOutNumber Prelude.Text
deleteOptedOutNumber_optedOutNumber :: Lens' DeleteOptedOutNumber Text
deleteOptedOutNumber_optedOutNumber = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteOptedOutNumber' {Text
optedOutNumber :: Text
$sel:optedOutNumber:DeleteOptedOutNumber' :: DeleteOptedOutNumber -> Text
optedOutNumber} -> Text
optedOutNumber) (\s :: DeleteOptedOutNumber
s@DeleteOptedOutNumber' {} Text
a -> DeleteOptedOutNumber
s {$sel:optedOutNumber:DeleteOptedOutNumber' :: Text
optedOutNumber = Text
a} :: DeleteOptedOutNumber)

instance Core.AWSRequest DeleteOptedOutNumber where
  type
    AWSResponse DeleteOptedOutNumber =
      DeleteOptedOutNumberResponse
  request :: (Service -> Service)
-> DeleteOptedOutNumber -> Request DeleteOptedOutNumber
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 DeleteOptedOutNumber
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteOptedOutNumber)))
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 Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Int
-> DeleteOptedOutNumberResponse
DeleteOptedOutNumberResponse'
            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
"EndUserOptedOut")
            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
"OptOutListArn")
            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
"OptedOutNumber")
            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
"OptedOutTimestamp")
            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 DeleteOptedOutNumber where
  hashWithSalt :: Int -> DeleteOptedOutNumber -> Int
hashWithSalt Int
_salt DeleteOptedOutNumber' {Text
optedOutNumber :: Text
optOutListName :: Text
$sel:optedOutNumber:DeleteOptedOutNumber' :: DeleteOptedOutNumber -> Text
$sel:optOutListName:DeleteOptedOutNumber' :: DeleteOptedOutNumber -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
optOutListName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
optedOutNumber

instance Prelude.NFData DeleteOptedOutNumber where
  rnf :: DeleteOptedOutNumber -> ()
rnf DeleteOptedOutNumber' {Text
optedOutNumber :: Text
optOutListName :: Text
$sel:optedOutNumber:DeleteOptedOutNumber' :: DeleteOptedOutNumber -> Text
$sel:optOutListName:DeleteOptedOutNumber' :: DeleteOptedOutNumber -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
optOutListName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
optedOutNumber

instance Data.ToHeaders DeleteOptedOutNumber where
  toHeaders :: DeleteOptedOutNumber -> 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.DeleteOptedOutNumber" ::
                          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 DeleteOptedOutNumber where
  toJSON :: DeleteOptedOutNumber -> Value
toJSON DeleteOptedOutNumber' {Text
optedOutNumber :: Text
optOutListName :: Text
$sel:optedOutNumber:DeleteOptedOutNumber' :: DeleteOptedOutNumber -> Text
$sel:optOutListName:DeleteOptedOutNumber' :: DeleteOptedOutNumber -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              (Key
"OptOutListName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
optOutListName),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"OptedOutNumber" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
optedOutNumber)
          ]
      )

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

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

-- | /See:/ 'newDeleteOptedOutNumberResponse' smart constructor.
data DeleteOptedOutNumberResponse = DeleteOptedOutNumberResponse'
  { -- | This is true if it was the end user who requested their phone number be
    -- removed.
    DeleteOptedOutNumberResponse -> Maybe Bool
endUserOptedOut :: Prelude.Maybe Prelude.Bool,
    -- | The OptOutListArn that the phone number was removed from.
    DeleteOptedOutNumberResponse -> Maybe Text
optOutListArn :: Prelude.Maybe Prelude.Text,
    -- | The OptOutListName that the phone number was removed from.
    DeleteOptedOutNumberResponse -> Maybe Text
optOutListName :: Prelude.Maybe Prelude.Text,
    -- | The phone number that was removed from the OptOutList.
    DeleteOptedOutNumberResponse -> Maybe Text
optedOutNumber :: Prelude.Maybe Prelude.Text,
    -- | The time that the number was removed at, in
    -- <https://www.epochconverter.com/ UNIX epoch time> format.
    DeleteOptedOutNumberResponse -> Maybe POSIX
optedOutTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The response's http status code.
    DeleteOptedOutNumberResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DeleteOptedOutNumberResponse
-> DeleteOptedOutNumberResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteOptedOutNumberResponse
-> DeleteOptedOutNumberResponse -> Bool
$c/= :: DeleteOptedOutNumberResponse
-> DeleteOptedOutNumberResponse -> Bool
== :: DeleteOptedOutNumberResponse
-> DeleteOptedOutNumberResponse -> Bool
$c== :: DeleteOptedOutNumberResponse
-> DeleteOptedOutNumberResponse -> Bool
Prelude.Eq, ReadPrec [DeleteOptedOutNumberResponse]
ReadPrec DeleteOptedOutNumberResponse
Int -> ReadS DeleteOptedOutNumberResponse
ReadS [DeleteOptedOutNumberResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteOptedOutNumberResponse]
$creadListPrec :: ReadPrec [DeleteOptedOutNumberResponse]
readPrec :: ReadPrec DeleteOptedOutNumberResponse
$creadPrec :: ReadPrec DeleteOptedOutNumberResponse
readList :: ReadS [DeleteOptedOutNumberResponse]
$creadList :: ReadS [DeleteOptedOutNumberResponse]
readsPrec :: Int -> ReadS DeleteOptedOutNumberResponse
$creadsPrec :: Int -> ReadS DeleteOptedOutNumberResponse
Prelude.Read, Int -> DeleteOptedOutNumberResponse -> ShowS
[DeleteOptedOutNumberResponse] -> ShowS
DeleteOptedOutNumberResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteOptedOutNumberResponse] -> ShowS
$cshowList :: [DeleteOptedOutNumberResponse] -> ShowS
show :: DeleteOptedOutNumberResponse -> String
$cshow :: DeleteOptedOutNumberResponse -> String
showsPrec :: Int -> DeleteOptedOutNumberResponse -> ShowS
$cshowsPrec :: Int -> DeleteOptedOutNumberResponse -> ShowS
Prelude.Show, forall x.
Rep DeleteOptedOutNumberResponse x -> DeleteOptedOutNumberResponse
forall x.
DeleteOptedOutNumberResponse -> Rep DeleteOptedOutNumberResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteOptedOutNumberResponse x -> DeleteOptedOutNumberResponse
$cfrom :: forall x.
DeleteOptedOutNumberResponse -> Rep DeleteOptedOutNumberResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteOptedOutNumberResponse' 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:
--
-- 'endUserOptedOut', 'deleteOptedOutNumberResponse_endUserOptedOut' - This is true if it was the end user who requested their phone number be
-- removed.
--
-- 'optOutListArn', 'deleteOptedOutNumberResponse_optOutListArn' - The OptOutListArn that the phone number was removed from.
--
-- 'optOutListName', 'deleteOptedOutNumberResponse_optOutListName' - The OptOutListName that the phone number was removed from.
--
-- 'optedOutNumber', 'deleteOptedOutNumberResponse_optedOutNumber' - The phone number that was removed from the OptOutList.
--
-- 'optedOutTimestamp', 'deleteOptedOutNumberResponse_optedOutTimestamp' - The time that the number was removed at, in
-- <https://www.epochconverter.com/ UNIX epoch time> format.
--
-- 'httpStatus', 'deleteOptedOutNumberResponse_httpStatus' - The response's http status code.
newDeleteOptedOutNumberResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteOptedOutNumberResponse
newDeleteOptedOutNumberResponse :: Int -> DeleteOptedOutNumberResponse
newDeleteOptedOutNumberResponse Int
pHttpStatus_ =
  DeleteOptedOutNumberResponse'
    { $sel:endUserOptedOut:DeleteOptedOutNumberResponse' :: Maybe Bool
endUserOptedOut =
        forall a. Maybe a
Prelude.Nothing,
      $sel:optOutListArn:DeleteOptedOutNumberResponse' :: Maybe Text
optOutListArn = forall a. Maybe a
Prelude.Nothing,
      $sel:optOutListName:DeleteOptedOutNumberResponse' :: Maybe Text
optOutListName = forall a. Maybe a
Prelude.Nothing,
      $sel:optedOutNumber:DeleteOptedOutNumberResponse' :: Maybe Text
optedOutNumber = forall a. Maybe a
Prelude.Nothing,
      $sel:optedOutTimestamp:DeleteOptedOutNumberResponse' :: Maybe POSIX
optedOutTimestamp = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DeleteOptedOutNumberResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | This is true if it was the end user who requested their phone number be
-- removed.
deleteOptedOutNumberResponse_endUserOptedOut :: Lens.Lens' DeleteOptedOutNumberResponse (Prelude.Maybe Prelude.Bool)
deleteOptedOutNumberResponse_endUserOptedOut :: Lens' DeleteOptedOutNumberResponse (Maybe Bool)
deleteOptedOutNumberResponse_endUserOptedOut = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteOptedOutNumberResponse' {Maybe Bool
endUserOptedOut :: Maybe Bool
$sel:endUserOptedOut:DeleteOptedOutNumberResponse' :: DeleteOptedOutNumberResponse -> Maybe Bool
endUserOptedOut} -> Maybe Bool
endUserOptedOut) (\s :: DeleteOptedOutNumberResponse
s@DeleteOptedOutNumberResponse' {} Maybe Bool
a -> DeleteOptedOutNumberResponse
s {$sel:endUserOptedOut:DeleteOptedOutNumberResponse' :: Maybe Bool
endUserOptedOut = Maybe Bool
a} :: DeleteOptedOutNumberResponse)

-- | The OptOutListArn that the phone number was removed from.
deleteOptedOutNumberResponse_optOutListArn :: Lens.Lens' DeleteOptedOutNumberResponse (Prelude.Maybe Prelude.Text)
deleteOptedOutNumberResponse_optOutListArn :: Lens' DeleteOptedOutNumberResponse (Maybe Text)
deleteOptedOutNumberResponse_optOutListArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteOptedOutNumberResponse' {Maybe Text
optOutListArn :: Maybe Text
$sel:optOutListArn:DeleteOptedOutNumberResponse' :: DeleteOptedOutNumberResponse -> Maybe Text
optOutListArn} -> Maybe Text
optOutListArn) (\s :: DeleteOptedOutNumberResponse
s@DeleteOptedOutNumberResponse' {} Maybe Text
a -> DeleteOptedOutNumberResponse
s {$sel:optOutListArn:DeleteOptedOutNumberResponse' :: Maybe Text
optOutListArn = Maybe Text
a} :: DeleteOptedOutNumberResponse)

-- | The OptOutListName that the phone number was removed from.
deleteOptedOutNumberResponse_optOutListName :: Lens.Lens' DeleteOptedOutNumberResponse (Prelude.Maybe Prelude.Text)
deleteOptedOutNumberResponse_optOutListName :: Lens' DeleteOptedOutNumberResponse (Maybe Text)
deleteOptedOutNumberResponse_optOutListName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteOptedOutNumberResponse' {Maybe Text
optOutListName :: Maybe Text
$sel:optOutListName:DeleteOptedOutNumberResponse' :: DeleteOptedOutNumberResponse -> Maybe Text
optOutListName} -> Maybe Text
optOutListName) (\s :: DeleteOptedOutNumberResponse
s@DeleteOptedOutNumberResponse' {} Maybe Text
a -> DeleteOptedOutNumberResponse
s {$sel:optOutListName:DeleteOptedOutNumberResponse' :: Maybe Text
optOutListName = Maybe Text
a} :: DeleteOptedOutNumberResponse)

-- | The phone number that was removed from the OptOutList.
deleteOptedOutNumberResponse_optedOutNumber :: Lens.Lens' DeleteOptedOutNumberResponse (Prelude.Maybe Prelude.Text)
deleteOptedOutNumberResponse_optedOutNumber :: Lens' DeleteOptedOutNumberResponse (Maybe Text)
deleteOptedOutNumberResponse_optedOutNumber = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteOptedOutNumberResponse' {Maybe Text
optedOutNumber :: Maybe Text
$sel:optedOutNumber:DeleteOptedOutNumberResponse' :: DeleteOptedOutNumberResponse -> Maybe Text
optedOutNumber} -> Maybe Text
optedOutNumber) (\s :: DeleteOptedOutNumberResponse
s@DeleteOptedOutNumberResponse' {} Maybe Text
a -> DeleteOptedOutNumberResponse
s {$sel:optedOutNumber:DeleteOptedOutNumberResponse' :: Maybe Text
optedOutNumber = Maybe Text
a} :: DeleteOptedOutNumberResponse)

-- | The time that the number was removed at, in
-- <https://www.epochconverter.com/ UNIX epoch time> format.
deleteOptedOutNumberResponse_optedOutTimestamp :: Lens.Lens' DeleteOptedOutNumberResponse (Prelude.Maybe Prelude.UTCTime)
deleteOptedOutNumberResponse_optedOutTimestamp :: Lens' DeleteOptedOutNumberResponse (Maybe UTCTime)
deleteOptedOutNumberResponse_optedOutTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteOptedOutNumberResponse' {Maybe POSIX
optedOutTimestamp :: Maybe POSIX
$sel:optedOutTimestamp:DeleteOptedOutNumberResponse' :: DeleteOptedOutNumberResponse -> Maybe POSIX
optedOutTimestamp} -> Maybe POSIX
optedOutTimestamp) (\s :: DeleteOptedOutNumberResponse
s@DeleteOptedOutNumberResponse' {} Maybe POSIX
a -> DeleteOptedOutNumberResponse
s {$sel:optedOutTimestamp:DeleteOptedOutNumberResponse' :: Maybe POSIX
optedOutTimestamp = Maybe POSIX
a} :: DeleteOptedOutNumberResponse) 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

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

instance Prelude.NFData DeleteOptedOutNumberResponse where
  rnf :: DeleteOptedOutNumberResponse -> ()
rnf DeleteOptedOutNumberResponse' {Int
Maybe Bool
Maybe Text
Maybe POSIX
httpStatus :: Int
optedOutTimestamp :: Maybe POSIX
optedOutNumber :: Maybe Text
optOutListName :: Maybe Text
optOutListArn :: Maybe Text
endUserOptedOut :: Maybe Bool
$sel:httpStatus:DeleteOptedOutNumberResponse' :: DeleteOptedOutNumberResponse -> Int
$sel:optedOutTimestamp:DeleteOptedOutNumberResponse' :: DeleteOptedOutNumberResponse -> Maybe POSIX
$sel:optedOutNumber:DeleteOptedOutNumberResponse' :: DeleteOptedOutNumberResponse -> Maybe Text
$sel:optOutListName:DeleteOptedOutNumberResponse' :: DeleteOptedOutNumberResponse -> Maybe Text
$sel:optOutListArn:DeleteOptedOutNumberResponse' :: DeleteOptedOutNumberResponse -> Maybe Text
$sel:endUserOptedOut:DeleteOptedOutNumberResponse' :: DeleteOptedOutNumberResponse -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
endUserOptedOut
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
optOutListArn
      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
optedOutNumber
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
optedOutTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus