{-# 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.DescribeOptedOutNumbers
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the specified opted out destination numbers or all opted out
-- destination numbers in an opt-out list.
--
-- If you specify opted out numbers, the output includes information for
-- only the specified opted out numbers. If you specify filters, the output
-- includes information for only those opted out numbers that meet the
-- filter criteria. If you don\'t specify opted out numbers or filters, the
-- output includes information for all opted out destination numbers in
-- your opt-out list.
--
-- If you specify an opted out number that isn\'t valid, an Error is
-- returned.
--
-- This operation returns paginated results.
module Amazonka.PinpointSmsVoiceV2.DescribeOptedOutNumbers
  ( -- * Creating a Request
    DescribeOptedOutNumbers (..),
    newDescribeOptedOutNumbers,

    -- * Request Lenses
    describeOptedOutNumbers_filters,
    describeOptedOutNumbers_maxResults,
    describeOptedOutNumbers_nextToken,
    describeOptedOutNumbers_optedOutNumbers,
    describeOptedOutNumbers_optOutListName,

    -- * Destructuring the Response
    DescribeOptedOutNumbersResponse (..),
    newDescribeOptedOutNumbersResponse,

    -- * Response Lenses
    describeOptedOutNumbersResponse_nextToken,
    describeOptedOutNumbersResponse_optOutListArn,
    describeOptedOutNumbersResponse_optOutListName,
    describeOptedOutNumbersResponse_optedOutNumbers,
    describeOptedOutNumbersResponse_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:/ 'newDescribeOptedOutNumbers' smart constructor.
data DescribeOptedOutNumbers = DescribeOptedOutNumbers'
  { -- | An array of OptedOutFilter objects to filter the results on.
    DescribeOptedOutNumbers -> Maybe [OptedOutFilter]
filters :: Prelude.Maybe [OptedOutFilter],
    -- | The maximum number of results to return per each request.
    DescribeOptedOutNumbers -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token to be used for the next set of paginated results. You don\'t
    -- need to supply a value for this field in the initial request.
    DescribeOptedOutNumbers -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | An array of phone numbers to search for in the OptOutList.
    DescribeOptedOutNumbers -> Maybe [Text]
optedOutNumbers :: Prelude.Maybe [Prelude.Text],
    -- | The OptOutListName or OptOutListArn of the OptOutList. You can use
    -- DescribeOptOutLists to find the values for OptOutListName and
    -- OptOutListArn.
    DescribeOptedOutNumbers -> Text
optOutListName :: Prelude.Text
  }
  deriving (DescribeOptedOutNumbers -> DescribeOptedOutNumbers -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeOptedOutNumbers -> DescribeOptedOutNumbers -> Bool
$c/= :: DescribeOptedOutNumbers -> DescribeOptedOutNumbers -> Bool
== :: DescribeOptedOutNumbers -> DescribeOptedOutNumbers -> Bool
$c== :: DescribeOptedOutNumbers -> DescribeOptedOutNumbers -> Bool
Prelude.Eq, ReadPrec [DescribeOptedOutNumbers]
ReadPrec DescribeOptedOutNumbers
Int -> ReadS DescribeOptedOutNumbers
ReadS [DescribeOptedOutNumbers]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeOptedOutNumbers]
$creadListPrec :: ReadPrec [DescribeOptedOutNumbers]
readPrec :: ReadPrec DescribeOptedOutNumbers
$creadPrec :: ReadPrec DescribeOptedOutNumbers
readList :: ReadS [DescribeOptedOutNumbers]
$creadList :: ReadS [DescribeOptedOutNumbers]
readsPrec :: Int -> ReadS DescribeOptedOutNumbers
$creadsPrec :: Int -> ReadS DescribeOptedOutNumbers
Prelude.Read, Int -> DescribeOptedOutNumbers -> ShowS
[DescribeOptedOutNumbers] -> ShowS
DescribeOptedOutNumbers -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeOptedOutNumbers] -> ShowS
$cshowList :: [DescribeOptedOutNumbers] -> ShowS
show :: DescribeOptedOutNumbers -> String
$cshow :: DescribeOptedOutNumbers -> String
showsPrec :: Int -> DescribeOptedOutNumbers -> ShowS
$cshowsPrec :: Int -> DescribeOptedOutNumbers -> ShowS
Prelude.Show, forall x. Rep DescribeOptedOutNumbers x -> DescribeOptedOutNumbers
forall x. DescribeOptedOutNumbers -> Rep DescribeOptedOutNumbers x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeOptedOutNumbers x -> DescribeOptedOutNumbers
$cfrom :: forall x. DescribeOptedOutNumbers -> Rep DescribeOptedOutNumbers x
Prelude.Generic)

-- |
-- Create a value of 'DescribeOptedOutNumbers' 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:
--
-- 'filters', 'describeOptedOutNumbers_filters' - An array of OptedOutFilter objects to filter the results on.
--
-- 'maxResults', 'describeOptedOutNumbers_maxResults' - The maximum number of results to return per each request.
--
-- 'nextToken', 'describeOptedOutNumbers_nextToken' - The token to be used for the next set of paginated results. You don\'t
-- need to supply a value for this field in the initial request.
--
-- 'optedOutNumbers', 'describeOptedOutNumbers_optedOutNumbers' - An array of phone numbers to search for in the OptOutList.
--
-- 'optOutListName', 'describeOptedOutNumbers_optOutListName' - The OptOutListName or OptOutListArn of the OptOutList. You can use
-- DescribeOptOutLists to find the values for OptOutListName and
-- OptOutListArn.
newDescribeOptedOutNumbers ::
  -- | 'optOutListName'
  Prelude.Text ->
  DescribeOptedOutNumbers
newDescribeOptedOutNumbers :: Text -> DescribeOptedOutNumbers
newDescribeOptedOutNumbers Text
pOptOutListName_ =
  DescribeOptedOutNumbers'
    { $sel:filters:DescribeOptedOutNumbers' :: Maybe [OptedOutFilter]
filters = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:DescribeOptedOutNumbers' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeOptedOutNumbers' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:optedOutNumbers:DescribeOptedOutNumbers' :: Maybe [Text]
optedOutNumbers = forall a. Maybe a
Prelude.Nothing,
      $sel:optOutListName:DescribeOptedOutNumbers' :: Text
optOutListName = Text
pOptOutListName_
    }

-- | An array of OptedOutFilter objects to filter the results on.
describeOptedOutNumbers_filters :: Lens.Lens' DescribeOptedOutNumbers (Prelude.Maybe [OptedOutFilter])
describeOptedOutNumbers_filters :: Lens' DescribeOptedOutNumbers (Maybe [OptedOutFilter])
describeOptedOutNumbers_filters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOptedOutNumbers' {Maybe [OptedOutFilter]
filters :: Maybe [OptedOutFilter]
$sel:filters:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe [OptedOutFilter]
filters} -> Maybe [OptedOutFilter]
filters) (\s :: DescribeOptedOutNumbers
s@DescribeOptedOutNumbers' {} Maybe [OptedOutFilter]
a -> DescribeOptedOutNumbers
s {$sel:filters:DescribeOptedOutNumbers' :: Maybe [OptedOutFilter]
filters = Maybe [OptedOutFilter]
a} :: DescribeOptedOutNumbers) 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 maximum number of results to return per each request.
describeOptedOutNumbers_maxResults :: Lens.Lens' DescribeOptedOutNumbers (Prelude.Maybe Prelude.Natural)
describeOptedOutNumbers_maxResults :: Lens' DescribeOptedOutNumbers (Maybe Natural)
describeOptedOutNumbers_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOptedOutNumbers' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeOptedOutNumbers
s@DescribeOptedOutNumbers' {} Maybe Natural
a -> DescribeOptedOutNumbers
s {$sel:maxResults:DescribeOptedOutNumbers' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeOptedOutNumbers)

-- | The token to be used for the next set of paginated results. You don\'t
-- need to supply a value for this field in the initial request.
describeOptedOutNumbers_nextToken :: Lens.Lens' DescribeOptedOutNumbers (Prelude.Maybe Prelude.Text)
describeOptedOutNumbers_nextToken :: Lens' DescribeOptedOutNumbers (Maybe Text)
describeOptedOutNumbers_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOptedOutNumbers' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeOptedOutNumbers
s@DescribeOptedOutNumbers' {} Maybe Text
a -> DescribeOptedOutNumbers
s {$sel:nextToken:DescribeOptedOutNumbers' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeOptedOutNumbers)

-- | An array of phone numbers to search for in the OptOutList.
describeOptedOutNumbers_optedOutNumbers :: Lens.Lens' DescribeOptedOutNumbers (Prelude.Maybe [Prelude.Text])
describeOptedOutNumbers_optedOutNumbers :: Lens' DescribeOptedOutNumbers (Maybe [Text])
describeOptedOutNumbers_optedOutNumbers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOptedOutNumbers' {Maybe [Text]
optedOutNumbers :: Maybe [Text]
$sel:optedOutNumbers:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe [Text]
optedOutNumbers} -> Maybe [Text]
optedOutNumbers) (\s :: DescribeOptedOutNumbers
s@DescribeOptedOutNumbers' {} Maybe [Text]
a -> DescribeOptedOutNumbers
s {$sel:optedOutNumbers:DescribeOptedOutNumbers' :: Maybe [Text]
optedOutNumbers = Maybe [Text]
a} :: DescribeOptedOutNumbers) 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 OptOutListName or OptOutListArn of the OptOutList. You can use
-- DescribeOptOutLists to find the values for OptOutListName and
-- OptOutListArn.
describeOptedOutNumbers_optOutListName :: Lens.Lens' DescribeOptedOutNumbers Prelude.Text
describeOptedOutNumbers_optOutListName :: Lens' DescribeOptedOutNumbers Text
describeOptedOutNumbers_optOutListName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOptedOutNumbers' {Text
optOutListName :: Text
$sel:optOutListName:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Text
optOutListName} -> Text
optOutListName) (\s :: DescribeOptedOutNumbers
s@DescribeOptedOutNumbers' {} Text
a -> DescribeOptedOutNumbers
s {$sel:optOutListName:DescribeOptedOutNumbers' :: Text
optOutListName = Text
a} :: DescribeOptedOutNumbers)

instance Core.AWSPager DescribeOptedOutNumbers where
  page :: DescribeOptedOutNumbers
-> AWSResponse DescribeOptedOutNumbers
-> Maybe DescribeOptedOutNumbers
page DescribeOptedOutNumbers
rq AWSResponse DescribeOptedOutNumbers
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeOptedOutNumbers
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeOptedOutNumbersResponse (Maybe Text)
describeOptedOutNumbersResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeOptedOutNumbers
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeOptedOutNumbersResponse (Maybe [OptedOutNumberInformation])
describeOptedOutNumbersResponse_optedOutNumbers
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeOptedOutNumbers
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeOptedOutNumbers (Maybe Text)
describeOptedOutNumbers_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeOptedOutNumbers
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeOptedOutNumbersResponse (Maybe Text)
describeOptedOutNumbersResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeOptedOutNumbers where
  type
    AWSResponse DescribeOptedOutNumbers =
      DescribeOptedOutNumbersResponse
  request :: (Service -> Service)
-> DescribeOptedOutNumbers -> Request DescribeOptedOutNumbers
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 DescribeOptedOutNumbers
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeOptedOutNumbers)))
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 Text
-> Maybe Text
-> Maybe Text
-> Maybe [OptedOutNumberInformation]
-> Int
-> DescribeOptedOutNumbersResponse
DescribeOptedOutNumbersResponse'
            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
"NextToken")
            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
"OptedOutNumbers"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            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 DescribeOptedOutNumbers where
  hashWithSalt :: Int -> DescribeOptedOutNumbers -> Int
hashWithSalt Int
_salt DescribeOptedOutNumbers' {Maybe Natural
Maybe [Text]
Maybe [OptedOutFilter]
Maybe Text
Text
optOutListName :: Text
optedOutNumbers :: Maybe [Text]
nextToken :: Maybe Text
maxResults :: Maybe Natural
filters :: Maybe [OptedOutFilter]
$sel:optOutListName:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Text
$sel:optedOutNumbers:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe [Text]
$sel:nextToken:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe Text
$sel:maxResults:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe Natural
$sel:filters:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe [OptedOutFilter]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [OptedOutFilter]
filters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
optedOutNumbers
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
optOutListName

instance Prelude.NFData DescribeOptedOutNumbers where
  rnf :: DescribeOptedOutNumbers -> ()
rnf DescribeOptedOutNumbers' {Maybe Natural
Maybe [Text]
Maybe [OptedOutFilter]
Maybe Text
Text
optOutListName :: Text
optedOutNumbers :: Maybe [Text]
nextToken :: Maybe Text
maxResults :: Maybe Natural
filters :: Maybe [OptedOutFilter]
$sel:optOutListName:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Text
$sel:optedOutNumbers:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe [Text]
$sel:nextToken:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe Text
$sel:maxResults:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe Natural
$sel:filters:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe [OptedOutFilter]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [OptedOutFilter]
filters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
optedOutNumbers
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
optOutListName

instance Data.ToHeaders DescribeOptedOutNumbers where
  toHeaders :: DescribeOptedOutNumbers -> 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.DescribeOptedOutNumbers" ::
                          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 DescribeOptedOutNumbers where
  toJSON :: DescribeOptedOutNumbers -> Value
toJSON DescribeOptedOutNumbers' {Maybe Natural
Maybe [Text]
Maybe [OptedOutFilter]
Maybe Text
Text
optOutListName :: Text
optedOutNumbers :: Maybe [Text]
nextToken :: Maybe Text
maxResults :: Maybe Natural
filters :: Maybe [OptedOutFilter]
$sel:optOutListName:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Text
$sel:optedOutNumbers:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe [Text]
$sel:nextToken:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe Text
$sel:maxResults:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe Natural
$sel:filters:DescribeOptedOutNumbers' :: DescribeOptedOutNumbers -> Maybe [OptedOutFilter]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Filters" 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 [OptedOutFilter]
filters,
            (Key
"MaxResults" 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 Natural
maxResults,
            (Key
"NextToken" 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
nextToken,
            (Key
"OptedOutNumbers" 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]
optedOutNumbers,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"OptOutListName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
optOutListName)
          ]
      )

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

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

-- | /See:/ 'newDescribeOptedOutNumbersResponse' smart constructor.
data DescribeOptedOutNumbersResponse = DescribeOptedOutNumbersResponse'
  { -- | The token to be used for the next set of paginated results. If this
    -- field is empty then there are no more results.
    DescribeOptedOutNumbersResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the OptOutList.
    DescribeOptedOutNumbersResponse -> Maybe Text
optOutListArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the OptOutList.
    DescribeOptedOutNumbersResponse -> Maybe Text
optOutListName :: Prelude.Maybe Prelude.Text,
    -- | An array of OptedOutNumbersInformation objects that provide information
    -- about the requested OptedOutNumbers.
    DescribeOptedOutNumbersResponse
-> Maybe [OptedOutNumberInformation]
optedOutNumbers :: Prelude.Maybe [OptedOutNumberInformation],
    -- | The response's http status code.
    DescribeOptedOutNumbersResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeOptedOutNumbersResponse
-> DescribeOptedOutNumbersResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeOptedOutNumbersResponse
-> DescribeOptedOutNumbersResponse -> Bool
$c/= :: DescribeOptedOutNumbersResponse
-> DescribeOptedOutNumbersResponse -> Bool
== :: DescribeOptedOutNumbersResponse
-> DescribeOptedOutNumbersResponse -> Bool
$c== :: DescribeOptedOutNumbersResponse
-> DescribeOptedOutNumbersResponse -> Bool
Prelude.Eq, ReadPrec [DescribeOptedOutNumbersResponse]
ReadPrec DescribeOptedOutNumbersResponse
Int -> ReadS DescribeOptedOutNumbersResponse
ReadS [DescribeOptedOutNumbersResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeOptedOutNumbersResponse]
$creadListPrec :: ReadPrec [DescribeOptedOutNumbersResponse]
readPrec :: ReadPrec DescribeOptedOutNumbersResponse
$creadPrec :: ReadPrec DescribeOptedOutNumbersResponse
readList :: ReadS [DescribeOptedOutNumbersResponse]
$creadList :: ReadS [DescribeOptedOutNumbersResponse]
readsPrec :: Int -> ReadS DescribeOptedOutNumbersResponse
$creadsPrec :: Int -> ReadS DescribeOptedOutNumbersResponse
Prelude.Read, Int -> DescribeOptedOutNumbersResponse -> ShowS
[DescribeOptedOutNumbersResponse] -> ShowS
DescribeOptedOutNumbersResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeOptedOutNumbersResponse] -> ShowS
$cshowList :: [DescribeOptedOutNumbersResponse] -> ShowS
show :: DescribeOptedOutNumbersResponse -> String
$cshow :: DescribeOptedOutNumbersResponse -> String
showsPrec :: Int -> DescribeOptedOutNumbersResponse -> ShowS
$cshowsPrec :: Int -> DescribeOptedOutNumbersResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeOptedOutNumbersResponse x
-> DescribeOptedOutNumbersResponse
forall x.
DescribeOptedOutNumbersResponse
-> Rep DescribeOptedOutNumbersResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeOptedOutNumbersResponse x
-> DescribeOptedOutNumbersResponse
$cfrom :: forall x.
DescribeOptedOutNumbersResponse
-> Rep DescribeOptedOutNumbersResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeOptedOutNumbersResponse' 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:
--
-- 'nextToken', 'describeOptedOutNumbersResponse_nextToken' - The token to be used for the next set of paginated results. If this
-- field is empty then there are no more results.
--
-- 'optOutListArn', 'describeOptedOutNumbersResponse_optOutListArn' - The Amazon Resource Name (ARN) of the OptOutList.
--
-- 'optOutListName', 'describeOptedOutNumbersResponse_optOutListName' - The name of the OptOutList.
--
-- 'optedOutNumbers', 'describeOptedOutNumbersResponse_optedOutNumbers' - An array of OptedOutNumbersInformation objects that provide information
-- about the requested OptedOutNumbers.
--
-- 'httpStatus', 'describeOptedOutNumbersResponse_httpStatus' - The response's http status code.
newDescribeOptedOutNumbersResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeOptedOutNumbersResponse
newDescribeOptedOutNumbersResponse :: Int -> DescribeOptedOutNumbersResponse
newDescribeOptedOutNumbersResponse Int
pHttpStatus_ =
  DescribeOptedOutNumbersResponse'
    { $sel:nextToken:DescribeOptedOutNumbersResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:optOutListArn:DescribeOptedOutNumbersResponse' :: Maybe Text
optOutListArn = forall a. Maybe a
Prelude.Nothing,
      $sel:optOutListName:DescribeOptedOutNumbersResponse' :: Maybe Text
optOutListName = forall a. Maybe a
Prelude.Nothing,
      $sel:optedOutNumbers:DescribeOptedOutNumbersResponse' :: Maybe [OptedOutNumberInformation]
optedOutNumbers = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeOptedOutNumbersResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The token to be used for the next set of paginated results. If this
-- field is empty then there are no more results.
describeOptedOutNumbersResponse_nextToken :: Lens.Lens' DescribeOptedOutNumbersResponse (Prelude.Maybe Prelude.Text)
describeOptedOutNumbersResponse_nextToken :: Lens' DescribeOptedOutNumbersResponse (Maybe Text)
describeOptedOutNumbersResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOptedOutNumbersResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeOptedOutNumbersResponse' :: DescribeOptedOutNumbersResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeOptedOutNumbersResponse
s@DescribeOptedOutNumbersResponse' {} Maybe Text
a -> DescribeOptedOutNumbersResponse
s {$sel:nextToken:DescribeOptedOutNumbersResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeOptedOutNumbersResponse)

-- | The Amazon Resource Name (ARN) of the OptOutList.
describeOptedOutNumbersResponse_optOutListArn :: Lens.Lens' DescribeOptedOutNumbersResponse (Prelude.Maybe Prelude.Text)
describeOptedOutNumbersResponse_optOutListArn :: Lens' DescribeOptedOutNumbersResponse (Maybe Text)
describeOptedOutNumbersResponse_optOutListArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOptedOutNumbersResponse' {Maybe Text
optOutListArn :: Maybe Text
$sel:optOutListArn:DescribeOptedOutNumbersResponse' :: DescribeOptedOutNumbersResponse -> Maybe Text
optOutListArn} -> Maybe Text
optOutListArn) (\s :: DescribeOptedOutNumbersResponse
s@DescribeOptedOutNumbersResponse' {} Maybe Text
a -> DescribeOptedOutNumbersResponse
s {$sel:optOutListArn:DescribeOptedOutNumbersResponse' :: Maybe Text
optOutListArn = Maybe Text
a} :: DescribeOptedOutNumbersResponse)

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

-- | An array of OptedOutNumbersInformation objects that provide information
-- about the requested OptedOutNumbers.
describeOptedOutNumbersResponse_optedOutNumbers :: Lens.Lens' DescribeOptedOutNumbersResponse (Prelude.Maybe [OptedOutNumberInformation])
describeOptedOutNumbersResponse_optedOutNumbers :: Lens'
  DescribeOptedOutNumbersResponse (Maybe [OptedOutNumberInformation])
describeOptedOutNumbersResponse_optedOutNumbers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOptedOutNumbersResponse' {Maybe [OptedOutNumberInformation]
optedOutNumbers :: Maybe [OptedOutNumberInformation]
$sel:optedOutNumbers:DescribeOptedOutNumbersResponse' :: DescribeOptedOutNumbersResponse
-> Maybe [OptedOutNumberInformation]
optedOutNumbers} -> Maybe [OptedOutNumberInformation]
optedOutNumbers) (\s :: DescribeOptedOutNumbersResponse
s@DescribeOptedOutNumbersResponse' {} Maybe [OptedOutNumberInformation]
a -> DescribeOptedOutNumbersResponse
s {$sel:optedOutNumbers:DescribeOptedOutNumbersResponse' :: Maybe [OptedOutNumberInformation]
optedOutNumbers = Maybe [OptedOutNumberInformation]
a} :: DescribeOptedOutNumbersResponse) 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 response's http status code.
describeOptedOutNumbersResponse_httpStatus :: Lens.Lens' DescribeOptedOutNumbersResponse Prelude.Int
describeOptedOutNumbersResponse_httpStatus :: Lens' DescribeOptedOutNumbersResponse Int
describeOptedOutNumbersResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeOptedOutNumbersResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeOptedOutNumbersResponse' :: DescribeOptedOutNumbersResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeOptedOutNumbersResponse
s@DescribeOptedOutNumbersResponse' {} Int
a -> DescribeOptedOutNumbersResponse
s {$sel:httpStatus:DescribeOptedOutNumbersResponse' :: Int
httpStatus = Int
a} :: DescribeOptedOutNumbersResponse)

instance
  Prelude.NFData
    DescribeOptedOutNumbersResponse
  where
  rnf :: DescribeOptedOutNumbersResponse -> ()
rnf DescribeOptedOutNumbersResponse' {Int
Maybe [OptedOutNumberInformation]
Maybe Text
httpStatus :: Int
optedOutNumbers :: Maybe [OptedOutNumberInformation]
optOutListName :: Maybe Text
optOutListArn :: Maybe Text
nextToken :: Maybe Text
$sel:httpStatus:DescribeOptedOutNumbersResponse' :: DescribeOptedOutNumbersResponse -> Int
$sel:optedOutNumbers:DescribeOptedOutNumbersResponse' :: DescribeOptedOutNumbersResponse
-> Maybe [OptedOutNumberInformation]
$sel:optOutListName:DescribeOptedOutNumbersResponse' :: DescribeOptedOutNumbersResponse -> Maybe Text
$sel:optOutListArn:DescribeOptedOutNumbersResponse' :: DescribeOptedOutNumbersResponse -> Maybe Text
$sel:nextToken:DescribeOptedOutNumbersResponse' :: DescribeOptedOutNumbersResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      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 [OptedOutNumberInformation]
optedOutNumbers
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus