{-# 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.Chime.ListPhoneNumbers
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Lists the phone numbers for the specified Amazon Chime account, Amazon
-- Chime user, Amazon Chime Voice Connector, or Amazon Chime Voice
-- Connector group.
module Amazonka.Chime.ListPhoneNumbers
  ( -- * Creating a Request
    ListPhoneNumbers (..),
    newListPhoneNumbers,

    -- * Request Lenses
    listPhoneNumbers_filterName,
    listPhoneNumbers_filterValue,
    listPhoneNumbers_maxResults,
    listPhoneNumbers_nextToken,
    listPhoneNumbers_productType,
    listPhoneNumbers_status,

    -- * Destructuring the Response
    ListPhoneNumbersResponse (..),
    newListPhoneNumbersResponse,

    -- * Response Lenses
    listPhoneNumbersResponse_nextToken,
    listPhoneNumbersResponse_phoneNumbers,
    listPhoneNumbersResponse_httpStatus,
  )
where

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

-- | /See:/ 'newListPhoneNumbers' smart constructor.
data ListPhoneNumbers = ListPhoneNumbers'
  { -- | The filter to use to limit the number of results.
    ListPhoneNumbers -> Maybe PhoneNumberAssociationName
filterName :: Prelude.Maybe PhoneNumberAssociationName,
    -- | The value to use for the filter.
    ListPhoneNumbers -> Maybe Text
filterValue :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of results to return in a single call.
    ListPhoneNumbers -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token to use to retrieve the next page of results.
    ListPhoneNumbers -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The phone number product type.
    ListPhoneNumbers -> Maybe PhoneNumberProductType
productType :: Prelude.Maybe PhoneNumberProductType,
    -- | The phone number status.
    ListPhoneNumbers -> Maybe PhoneNumberStatus
status :: Prelude.Maybe PhoneNumberStatus
  }
  deriving (ListPhoneNumbers -> ListPhoneNumbers -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListPhoneNumbers -> ListPhoneNumbers -> Bool
$c/= :: ListPhoneNumbers -> ListPhoneNumbers -> Bool
== :: ListPhoneNumbers -> ListPhoneNumbers -> Bool
$c== :: ListPhoneNumbers -> ListPhoneNumbers -> Bool
Prelude.Eq, ReadPrec [ListPhoneNumbers]
ReadPrec ListPhoneNumbers
Int -> ReadS ListPhoneNumbers
ReadS [ListPhoneNumbers]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListPhoneNumbers]
$creadListPrec :: ReadPrec [ListPhoneNumbers]
readPrec :: ReadPrec ListPhoneNumbers
$creadPrec :: ReadPrec ListPhoneNumbers
readList :: ReadS [ListPhoneNumbers]
$creadList :: ReadS [ListPhoneNumbers]
readsPrec :: Int -> ReadS ListPhoneNumbers
$creadsPrec :: Int -> ReadS ListPhoneNumbers
Prelude.Read, Int -> ListPhoneNumbers -> ShowS
[ListPhoneNumbers] -> ShowS
ListPhoneNumbers -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListPhoneNumbers] -> ShowS
$cshowList :: [ListPhoneNumbers] -> ShowS
show :: ListPhoneNumbers -> String
$cshow :: ListPhoneNumbers -> String
showsPrec :: Int -> ListPhoneNumbers -> ShowS
$cshowsPrec :: Int -> ListPhoneNumbers -> ShowS
Prelude.Show, forall x. Rep ListPhoneNumbers x -> ListPhoneNumbers
forall x. ListPhoneNumbers -> Rep ListPhoneNumbers x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListPhoneNumbers x -> ListPhoneNumbers
$cfrom :: forall x. ListPhoneNumbers -> Rep ListPhoneNumbers x
Prelude.Generic)

-- |
-- Create a value of 'ListPhoneNumbers' 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:
--
-- 'filterName', 'listPhoneNumbers_filterName' - The filter to use to limit the number of results.
--
-- 'filterValue', 'listPhoneNumbers_filterValue' - The value to use for the filter.
--
-- 'maxResults', 'listPhoneNumbers_maxResults' - The maximum number of results to return in a single call.
--
-- 'nextToken', 'listPhoneNumbers_nextToken' - The token to use to retrieve the next page of results.
--
-- 'productType', 'listPhoneNumbers_productType' - The phone number product type.
--
-- 'status', 'listPhoneNumbers_status' - The phone number status.
newListPhoneNumbers ::
  ListPhoneNumbers
newListPhoneNumbers :: ListPhoneNumbers
newListPhoneNumbers =
  ListPhoneNumbers'
    { $sel:filterName:ListPhoneNumbers' :: Maybe PhoneNumberAssociationName
filterName = forall a. Maybe a
Prelude.Nothing,
      $sel:filterValue:ListPhoneNumbers' :: Maybe Text
filterValue = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:ListPhoneNumbers' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListPhoneNumbers' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:productType:ListPhoneNumbers' :: Maybe PhoneNumberProductType
productType = forall a. Maybe a
Prelude.Nothing,
      $sel:status:ListPhoneNumbers' :: Maybe PhoneNumberStatus
status = forall a. Maybe a
Prelude.Nothing
    }

-- | The filter to use to limit the number of results.
listPhoneNumbers_filterName :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe PhoneNumberAssociationName)
listPhoneNumbers_filterName :: Lens' ListPhoneNumbers (Maybe PhoneNumberAssociationName)
listPhoneNumbers_filterName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPhoneNumbers' {Maybe PhoneNumberAssociationName
filterName :: Maybe PhoneNumberAssociationName
$sel:filterName:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe PhoneNumberAssociationName
filterName} -> Maybe PhoneNumberAssociationName
filterName) (\s :: ListPhoneNumbers
s@ListPhoneNumbers' {} Maybe PhoneNumberAssociationName
a -> ListPhoneNumbers
s {$sel:filterName:ListPhoneNumbers' :: Maybe PhoneNumberAssociationName
filterName = Maybe PhoneNumberAssociationName
a} :: ListPhoneNumbers)

-- | The value to use for the filter.
listPhoneNumbers_filterValue :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe Prelude.Text)
listPhoneNumbers_filterValue :: Lens' ListPhoneNumbers (Maybe Text)
listPhoneNumbers_filterValue = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPhoneNumbers' {Maybe Text
filterValue :: Maybe Text
$sel:filterValue:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe Text
filterValue} -> Maybe Text
filterValue) (\s :: ListPhoneNumbers
s@ListPhoneNumbers' {} Maybe Text
a -> ListPhoneNumbers
s {$sel:filterValue:ListPhoneNumbers' :: Maybe Text
filterValue = Maybe Text
a} :: ListPhoneNumbers)

-- | The maximum number of results to return in a single call.
listPhoneNumbers_maxResults :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe Prelude.Natural)
listPhoneNumbers_maxResults :: Lens' ListPhoneNumbers (Maybe Natural)
listPhoneNumbers_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPhoneNumbers' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: ListPhoneNumbers
s@ListPhoneNumbers' {} Maybe Natural
a -> ListPhoneNumbers
s {$sel:maxResults:ListPhoneNumbers' :: Maybe Natural
maxResults = Maybe Natural
a} :: ListPhoneNumbers)

-- | The token to use to retrieve the next page of results.
listPhoneNumbers_nextToken :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe Prelude.Text)
listPhoneNumbers_nextToken :: Lens' ListPhoneNumbers (Maybe Text)
listPhoneNumbers_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPhoneNumbers' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListPhoneNumbers
s@ListPhoneNumbers' {} Maybe Text
a -> ListPhoneNumbers
s {$sel:nextToken:ListPhoneNumbers' :: Maybe Text
nextToken = Maybe Text
a} :: ListPhoneNumbers)

-- | The phone number product type.
listPhoneNumbers_productType :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe PhoneNumberProductType)
listPhoneNumbers_productType :: Lens' ListPhoneNumbers (Maybe PhoneNumberProductType)
listPhoneNumbers_productType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPhoneNumbers' {Maybe PhoneNumberProductType
productType :: Maybe PhoneNumberProductType
$sel:productType:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe PhoneNumberProductType
productType} -> Maybe PhoneNumberProductType
productType) (\s :: ListPhoneNumbers
s@ListPhoneNumbers' {} Maybe PhoneNumberProductType
a -> ListPhoneNumbers
s {$sel:productType:ListPhoneNumbers' :: Maybe PhoneNumberProductType
productType = Maybe PhoneNumberProductType
a} :: ListPhoneNumbers)

-- | The phone number status.
listPhoneNumbers_status :: Lens.Lens' ListPhoneNumbers (Prelude.Maybe PhoneNumberStatus)
listPhoneNumbers_status :: Lens' ListPhoneNumbers (Maybe PhoneNumberStatus)
listPhoneNumbers_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPhoneNumbers' {Maybe PhoneNumberStatus
status :: Maybe PhoneNumberStatus
$sel:status:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe PhoneNumberStatus
status} -> Maybe PhoneNumberStatus
status) (\s :: ListPhoneNumbers
s@ListPhoneNumbers' {} Maybe PhoneNumberStatus
a -> ListPhoneNumbers
s {$sel:status:ListPhoneNumbers' :: Maybe PhoneNumberStatus
status = Maybe PhoneNumberStatus
a} :: ListPhoneNumbers)

instance Core.AWSRequest ListPhoneNumbers where
  type
    AWSResponse ListPhoneNumbers =
      ListPhoneNumbersResponse
  request :: (Service -> Service)
-> ListPhoneNumbers -> Request ListPhoneNumbers
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ListPhoneNumbers
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse ListPhoneNumbers)))
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 [PhoneNumber] -> Int -> ListPhoneNumbersResponse
ListPhoneNumbersResponse'
            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
"PhoneNumbers" 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 ListPhoneNumbers where
  hashWithSalt :: Int -> ListPhoneNumbers -> Int
hashWithSalt Int
_salt ListPhoneNumbers' {Maybe Natural
Maybe Text
Maybe PhoneNumberAssociationName
Maybe PhoneNumberProductType
Maybe PhoneNumberStatus
status :: Maybe PhoneNumberStatus
productType :: Maybe PhoneNumberProductType
nextToken :: Maybe Text
maxResults :: Maybe Natural
filterValue :: Maybe Text
filterName :: Maybe PhoneNumberAssociationName
$sel:status:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe PhoneNumberStatus
$sel:productType:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe PhoneNumberProductType
$sel:nextToken:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe Text
$sel:maxResults:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe Natural
$sel:filterValue:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe Text
$sel:filterName:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe PhoneNumberAssociationName
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PhoneNumberAssociationName
filterName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
filterValue
      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 PhoneNumberProductType
productType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PhoneNumberStatus
status

instance Prelude.NFData ListPhoneNumbers where
  rnf :: ListPhoneNumbers -> ()
rnf ListPhoneNumbers' {Maybe Natural
Maybe Text
Maybe PhoneNumberAssociationName
Maybe PhoneNumberProductType
Maybe PhoneNumberStatus
status :: Maybe PhoneNumberStatus
productType :: Maybe PhoneNumberProductType
nextToken :: Maybe Text
maxResults :: Maybe Natural
filterValue :: Maybe Text
filterName :: Maybe PhoneNumberAssociationName
$sel:status:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe PhoneNumberStatus
$sel:productType:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe PhoneNumberProductType
$sel:nextToken:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe Text
$sel:maxResults:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe Natural
$sel:filterValue:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe Text
$sel:filterName:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe PhoneNumberAssociationName
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe PhoneNumberAssociationName
filterName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
filterValue
      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 PhoneNumberProductType
productType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PhoneNumberStatus
status

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

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

instance Data.ToQuery ListPhoneNumbers where
  toQuery :: ListPhoneNumbers -> QueryString
toQuery ListPhoneNumbers' {Maybe Natural
Maybe Text
Maybe PhoneNumberAssociationName
Maybe PhoneNumberProductType
Maybe PhoneNumberStatus
status :: Maybe PhoneNumberStatus
productType :: Maybe PhoneNumberProductType
nextToken :: Maybe Text
maxResults :: Maybe Natural
filterValue :: Maybe Text
filterName :: Maybe PhoneNumberAssociationName
$sel:status:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe PhoneNumberStatus
$sel:productType:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe PhoneNumberProductType
$sel:nextToken:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe Text
$sel:maxResults:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe Natural
$sel:filterValue:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe Text
$sel:filterName:ListPhoneNumbers' :: ListPhoneNumbers -> Maybe PhoneNumberAssociationName
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"filter-name" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe PhoneNumberAssociationName
filterName,
        ByteString
"filter-value" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
filterValue,
        ByteString
"max-results" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
maxResults,
        ByteString
"next-token" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
        ByteString
"product-type" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe PhoneNumberProductType
productType,
        ByteString
"status" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe PhoneNumberStatus
status
      ]

-- | /See:/ 'newListPhoneNumbersResponse' smart constructor.
data ListPhoneNumbersResponse = ListPhoneNumbersResponse'
  { -- | The token to use to retrieve the next page of results.
    ListPhoneNumbersResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The phone number details.
    ListPhoneNumbersResponse -> Maybe [PhoneNumber]
phoneNumbers :: Prelude.Maybe [PhoneNumber],
    -- | The response's http status code.
    ListPhoneNumbersResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListPhoneNumbersResponse -> ListPhoneNumbersResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListPhoneNumbersResponse -> ListPhoneNumbersResponse -> Bool
$c/= :: ListPhoneNumbersResponse -> ListPhoneNumbersResponse -> Bool
== :: ListPhoneNumbersResponse -> ListPhoneNumbersResponse -> Bool
$c== :: ListPhoneNumbersResponse -> ListPhoneNumbersResponse -> Bool
Prelude.Eq, Int -> ListPhoneNumbersResponse -> ShowS
[ListPhoneNumbersResponse] -> ShowS
ListPhoneNumbersResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListPhoneNumbersResponse] -> ShowS
$cshowList :: [ListPhoneNumbersResponse] -> ShowS
show :: ListPhoneNumbersResponse -> String
$cshow :: ListPhoneNumbersResponse -> String
showsPrec :: Int -> ListPhoneNumbersResponse -> ShowS
$cshowsPrec :: Int -> ListPhoneNumbersResponse -> ShowS
Prelude.Show, forall x.
Rep ListPhoneNumbersResponse x -> ListPhoneNumbersResponse
forall x.
ListPhoneNumbersResponse -> Rep ListPhoneNumbersResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListPhoneNumbersResponse x -> ListPhoneNumbersResponse
$cfrom :: forall x.
ListPhoneNumbersResponse -> Rep ListPhoneNumbersResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListPhoneNumbersResponse' 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', 'listPhoneNumbersResponse_nextToken' - The token to use to retrieve the next page of results.
--
-- 'phoneNumbers', 'listPhoneNumbersResponse_phoneNumbers' - The phone number details.
--
-- 'httpStatus', 'listPhoneNumbersResponse_httpStatus' - The response's http status code.
newListPhoneNumbersResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListPhoneNumbersResponse
newListPhoneNumbersResponse :: Int -> ListPhoneNumbersResponse
newListPhoneNumbersResponse Int
pHttpStatus_ =
  ListPhoneNumbersResponse'
    { $sel:nextToken:ListPhoneNumbersResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:phoneNumbers:ListPhoneNumbersResponse' :: Maybe [PhoneNumber]
phoneNumbers = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListPhoneNumbersResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The token to use to retrieve the next page of results.
listPhoneNumbersResponse_nextToken :: Lens.Lens' ListPhoneNumbersResponse (Prelude.Maybe Prelude.Text)
listPhoneNumbersResponse_nextToken :: Lens' ListPhoneNumbersResponse (Maybe Text)
listPhoneNumbersResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPhoneNumbersResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListPhoneNumbersResponse' :: ListPhoneNumbersResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListPhoneNumbersResponse
s@ListPhoneNumbersResponse' {} Maybe Text
a -> ListPhoneNumbersResponse
s {$sel:nextToken:ListPhoneNumbersResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListPhoneNumbersResponse)

-- | The phone number details.
listPhoneNumbersResponse_phoneNumbers :: Lens.Lens' ListPhoneNumbersResponse (Prelude.Maybe [PhoneNumber])
listPhoneNumbersResponse_phoneNumbers :: Lens' ListPhoneNumbersResponse (Maybe [PhoneNumber])
listPhoneNumbersResponse_phoneNumbers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPhoneNumbersResponse' {Maybe [PhoneNumber]
phoneNumbers :: Maybe [PhoneNumber]
$sel:phoneNumbers:ListPhoneNumbersResponse' :: ListPhoneNumbersResponse -> Maybe [PhoneNumber]
phoneNumbers} -> Maybe [PhoneNumber]
phoneNumbers) (\s :: ListPhoneNumbersResponse
s@ListPhoneNumbersResponse' {} Maybe [PhoneNumber]
a -> ListPhoneNumbersResponse
s {$sel:phoneNumbers:ListPhoneNumbersResponse' :: Maybe [PhoneNumber]
phoneNumbers = Maybe [PhoneNumber]
a} :: ListPhoneNumbersResponse) 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.
listPhoneNumbersResponse_httpStatus :: Lens.Lens' ListPhoneNumbersResponse Prelude.Int
listPhoneNumbersResponse_httpStatus :: Lens' ListPhoneNumbersResponse Int
listPhoneNumbersResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPhoneNumbersResponse' {Int
httpStatus :: Int
$sel:httpStatus:ListPhoneNumbersResponse' :: ListPhoneNumbersResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: ListPhoneNumbersResponse
s@ListPhoneNumbersResponse' {} Int
a -> ListPhoneNumbersResponse
s {$sel:httpStatus:ListPhoneNumbersResponse' :: Int
httpStatus = Int
a} :: ListPhoneNumbersResponse)

instance Prelude.NFData ListPhoneNumbersResponse where
  rnf :: ListPhoneNumbersResponse -> ()
rnf ListPhoneNumbersResponse' {Int
Maybe [PhoneNumber]
Maybe Text
httpStatus :: Int
phoneNumbers :: Maybe [PhoneNumber]
nextToken :: Maybe Text
$sel:httpStatus:ListPhoneNumbersResponse' :: ListPhoneNumbersResponse -> Int
$sel:phoneNumbers:ListPhoneNumbersResponse' :: ListPhoneNumbersResponse -> Maybe [PhoneNumber]
$sel:nextToken:ListPhoneNumbersResponse' :: ListPhoneNumbersResponse -> 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 [PhoneNumber]
phoneNumbers
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus