{-# 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.ChimeSdkVoice.SearchAvailablePhoneNumbers
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- -- | Undocumented operation.
module Amazonka.ChimeSdkVoice.SearchAvailablePhoneNumbers
  ( -- * Creating a Request
    SearchAvailablePhoneNumbers (..),
    newSearchAvailablePhoneNumbers,

    -- * Request Lenses
    searchAvailablePhoneNumbers_areaCode,
    searchAvailablePhoneNumbers_city,
    searchAvailablePhoneNumbers_country,
    searchAvailablePhoneNumbers_maxResults,
    searchAvailablePhoneNumbers_nextToken,
    searchAvailablePhoneNumbers_phoneNumberType,
    searchAvailablePhoneNumbers_state,
    searchAvailablePhoneNumbers_tollFreePrefix,

    -- * Destructuring the Response
    SearchAvailablePhoneNumbersResponse (..),
    newSearchAvailablePhoneNumbersResponse,

    -- * Response Lenses
    searchAvailablePhoneNumbersResponse_e164PhoneNumbers,
    searchAvailablePhoneNumbersResponse_nextToken,
    searchAvailablePhoneNumbersResponse_httpStatus,
  )
where

import Amazonka.ChimeSdkVoice.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:/ 'newSearchAvailablePhoneNumbers' smart constructor.
data SearchAvailablePhoneNumbers = SearchAvailablePhoneNumbers'
  { SearchAvailablePhoneNumbers -> Maybe Text
areaCode :: Prelude.Maybe Prelude.Text,
    SearchAvailablePhoneNumbers -> Maybe Text
city :: Prelude.Maybe Prelude.Text,
    SearchAvailablePhoneNumbers -> Maybe Text
country :: Prelude.Maybe Prelude.Text,
    SearchAvailablePhoneNumbers -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    SearchAvailablePhoneNumbers -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    SearchAvailablePhoneNumbers -> Maybe PhoneNumberType
phoneNumberType :: Prelude.Maybe PhoneNumberType,
    SearchAvailablePhoneNumbers -> Maybe Text
state :: Prelude.Maybe Prelude.Text,
    SearchAvailablePhoneNumbers -> Maybe Text
tollFreePrefix :: Prelude.Maybe Prelude.Text
  }
  deriving (SearchAvailablePhoneNumbers -> SearchAvailablePhoneNumbers -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SearchAvailablePhoneNumbers -> SearchAvailablePhoneNumbers -> Bool
$c/= :: SearchAvailablePhoneNumbers -> SearchAvailablePhoneNumbers -> Bool
== :: SearchAvailablePhoneNumbers -> SearchAvailablePhoneNumbers -> Bool
$c== :: SearchAvailablePhoneNumbers -> SearchAvailablePhoneNumbers -> Bool
Prelude.Eq, ReadPrec [SearchAvailablePhoneNumbers]
ReadPrec SearchAvailablePhoneNumbers
Int -> ReadS SearchAvailablePhoneNumbers
ReadS [SearchAvailablePhoneNumbers]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SearchAvailablePhoneNumbers]
$creadListPrec :: ReadPrec [SearchAvailablePhoneNumbers]
readPrec :: ReadPrec SearchAvailablePhoneNumbers
$creadPrec :: ReadPrec SearchAvailablePhoneNumbers
readList :: ReadS [SearchAvailablePhoneNumbers]
$creadList :: ReadS [SearchAvailablePhoneNumbers]
readsPrec :: Int -> ReadS SearchAvailablePhoneNumbers
$creadsPrec :: Int -> ReadS SearchAvailablePhoneNumbers
Prelude.Read, Int -> SearchAvailablePhoneNumbers -> ShowS
[SearchAvailablePhoneNumbers] -> ShowS
SearchAvailablePhoneNumbers -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SearchAvailablePhoneNumbers] -> ShowS
$cshowList :: [SearchAvailablePhoneNumbers] -> ShowS
show :: SearchAvailablePhoneNumbers -> String
$cshow :: SearchAvailablePhoneNumbers -> String
showsPrec :: Int -> SearchAvailablePhoneNumbers -> ShowS
$cshowsPrec :: Int -> SearchAvailablePhoneNumbers -> ShowS
Prelude.Show, forall x.
Rep SearchAvailablePhoneNumbers x -> SearchAvailablePhoneNumbers
forall x.
SearchAvailablePhoneNumbers -> Rep SearchAvailablePhoneNumbers x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep SearchAvailablePhoneNumbers x -> SearchAvailablePhoneNumbers
$cfrom :: forall x.
SearchAvailablePhoneNumbers -> Rep SearchAvailablePhoneNumbers x
Prelude.Generic)

-- |
-- Create a value of 'SearchAvailablePhoneNumbers' 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:
--
-- 'areaCode', 'searchAvailablePhoneNumbers_areaCode' - Undocumented member.
--
-- 'city', 'searchAvailablePhoneNumbers_city' - Undocumented member.
--
-- 'country', 'searchAvailablePhoneNumbers_country' - Undocumented member.
--
-- 'maxResults', 'searchAvailablePhoneNumbers_maxResults' - Undocumented member.
--
-- 'nextToken', 'searchAvailablePhoneNumbers_nextToken' - Undocumented member.
--
-- 'phoneNumberType', 'searchAvailablePhoneNumbers_phoneNumberType' - Undocumented member.
--
-- 'state', 'searchAvailablePhoneNumbers_state' - Undocumented member.
--
-- 'tollFreePrefix', 'searchAvailablePhoneNumbers_tollFreePrefix' - Undocumented member.
newSearchAvailablePhoneNumbers ::
  SearchAvailablePhoneNumbers
newSearchAvailablePhoneNumbers :: SearchAvailablePhoneNumbers
newSearchAvailablePhoneNumbers =
  SearchAvailablePhoneNumbers'
    { $sel:areaCode:SearchAvailablePhoneNumbers' :: Maybe Text
areaCode =
        forall a. Maybe a
Prelude.Nothing,
      $sel:city:SearchAvailablePhoneNumbers' :: Maybe Text
city = forall a. Maybe a
Prelude.Nothing,
      $sel:country:SearchAvailablePhoneNumbers' :: Maybe Text
country = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:SearchAvailablePhoneNumbers' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:SearchAvailablePhoneNumbers' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:phoneNumberType:SearchAvailablePhoneNumbers' :: Maybe PhoneNumberType
phoneNumberType = forall a. Maybe a
Prelude.Nothing,
      $sel:state:SearchAvailablePhoneNumbers' :: Maybe Text
state = forall a. Maybe a
Prelude.Nothing,
      $sel:tollFreePrefix:SearchAvailablePhoneNumbers' :: Maybe Text
tollFreePrefix = forall a. Maybe a
Prelude.Nothing
    }

-- | Undocumented member.
searchAvailablePhoneNumbers_areaCode :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
searchAvailablePhoneNumbers_areaCode :: Lens' SearchAvailablePhoneNumbers (Maybe Text)
searchAvailablePhoneNumbers_areaCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchAvailablePhoneNumbers' {Maybe Text
areaCode :: Maybe Text
$sel:areaCode:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
areaCode} -> Maybe Text
areaCode) (\s :: SearchAvailablePhoneNumbers
s@SearchAvailablePhoneNumbers' {} Maybe Text
a -> SearchAvailablePhoneNumbers
s {$sel:areaCode:SearchAvailablePhoneNumbers' :: Maybe Text
areaCode = Maybe Text
a} :: SearchAvailablePhoneNumbers)

-- | Undocumented member.
searchAvailablePhoneNumbers_city :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
searchAvailablePhoneNumbers_city :: Lens' SearchAvailablePhoneNumbers (Maybe Text)
searchAvailablePhoneNumbers_city = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchAvailablePhoneNumbers' {Maybe Text
city :: Maybe Text
$sel:city:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
city} -> Maybe Text
city) (\s :: SearchAvailablePhoneNumbers
s@SearchAvailablePhoneNumbers' {} Maybe Text
a -> SearchAvailablePhoneNumbers
s {$sel:city:SearchAvailablePhoneNumbers' :: Maybe Text
city = Maybe Text
a} :: SearchAvailablePhoneNumbers)

-- | Undocumented member.
searchAvailablePhoneNumbers_country :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
searchAvailablePhoneNumbers_country :: Lens' SearchAvailablePhoneNumbers (Maybe Text)
searchAvailablePhoneNumbers_country = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchAvailablePhoneNumbers' {Maybe Text
country :: Maybe Text
$sel:country:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
country} -> Maybe Text
country) (\s :: SearchAvailablePhoneNumbers
s@SearchAvailablePhoneNumbers' {} Maybe Text
a -> SearchAvailablePhoneNumbers
s {$sel:country:SearchAvailablePhoneNumbers' :: Maybe Text
country = Maybe Text
a} :: SearchAvailablePhoneNumbers)

-- | Undocumented member.
searchAvailablePhoneNumbers_maxResults :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Natural)
searchAvailablePhoneNumbers_maxResults :: Lens' SearchAvailablePhoneNumbers (Maybe Natural)
searchAvailablePhoneNumbers_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchAvailablePhoneNumbers' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: SearchAvailablePhoneNumbers
s@SearchAvailablePhoneNumbers' {} Maybe Natural
a -> SearchAvailablePhoneNumbers
s {$sel:maxResults:SearchAvailablePhoneNumbers' :: Maybe Natural
maxResults = Maybe Natural
a} :: SearchAvailablePhoneNumbers)

-- | Undocumented member.
searchAvailablePhoneNumbers_nextToken :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
searchAvailablePhoneNumbers_nextToken :: Lens' SearchAvailablePhoneNumbers (Maybe Text)
searchAvailablePhoneNumbers_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchAvailablePhoneNumbers' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: SearchAvailablePhoneNumbers
s@SearchAvailablePhoneNumbers' {} Maybe Text
a -> SearchAvailablePhoneNumbers
s {$sel:nextToken:SearchAvailablePhoneNumbers' :: Maybe Text
nextToken = Maybe Text
a} :: SearchAvailablePhoneNumbers)

-- | Undocumented member.
searchAvailablePhoneNumbers_phoneNumberType :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe PhoneNumberType)
searchAvailablePhoneNumbers_phoneNumberType :: Lens' SearchAvailablePhoneNumbers (Maybe PhoneNumberType)
searchAvailablePhoneNumbers_phoneNumberType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchAvailablePhoneNumbers' {Maybe PhoneNumberType
phoneNumberType :: Maybe PhoneNumberType
$sel:phoneNumberType:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe PhoneNumberType
phoneNumberType} -> Maybe PhoneNumberType
phoneNumberType) (\s :: SearchAvailablePhoneNumbers
s@SearchAvailablePhoneNumbers' {} Maybe PhoneNumberType
a -> SearchAvailablePhoneNumbers
s {$sel:phoneNumberType:SearchAvailablePhoneNumbers' :: Maybe PhoneNumberType
phoneNumberType = Maybe PhoneNumberType
a} :: SearchAvailablePhoneNumbers)

-- | Undocumented member.
searchAvailablePhoneNumbers_state :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
searchAvailablePhoneNumbers_state :: Lens' SearchAvailablePhoneNumbers (Maybe Text)
searchAvailablePhoneNumbers_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchAvailablePhoneNumbers' {Maybe Text
state :: Maybe Text
$sel:state:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
state} -> Maybe Text
state) (\s :: SearchAvailablePhoneNumbers
s@SearchAvailablePhoneNumbers' {} Maybe Text
a -> SearchAvailablePhoneNumbers
s {$sel:state:SearchAvailablePhoneNumbers' :: Maybe Text
state = Maybe Text
a} :: SearchAvailablePhoneNumbers)

-- | Undocumented member.
searchAvailablePhoneNumbers_tollFreePrefix :: Lens.Lens' SearchAvailablePhoneNumbers (Prelude.Maybe Prelude.Text)
searchAvailablePhoneNumbers_tollFreePrefix :: Lens' SearchAvailablePhoneNumbers (Maybe Text)
searchAvailablePhoneNumbers_tollFreePrefix = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchAvailablePhoneNumbers' {Maybe Text
tollFreePrefix :: Maybe Text
$sel:tollFreePrefix:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
tollFreePrefix} -> Maybe Text
tollFreePrefix) (\s :: SearchAvailablePhoneNumbers
s@SearchAvailablePhoneNumbers' {} Maybe Text
a -> SearchAvailablePhoneNumbers
s {$sel:tollFreePrefix:SearchAvailablePhoneNumbers' :: Maybe Text
tollFreePrefix = Maybe Text
a} :: SearchAvailablePhoneNumbers)

instance Core.AWSRequest SearchAvailablePhoneNumbers where
  type
    AWSResponse SearchAvailablePhoneNumbers =
      SearchAvailablePhoneNumbersResponse
  request :: (Service -> Service)
-> SearchAvailablePhoneNumbers
-> Request SearchAvailablePhoneNumbers
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 SearchAvailablePhoneNumbers
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse SearchAvailablePhoneNumbers)))
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 [Sensitive Text]
-> Maybe Text -> Int -> SearchAvailablePhoneNumbersResponse
SearchAvailablePhoneNumbersResponse'
            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
"E164PhoneNumbers"
                            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.<*> (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.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable SearchAvailablePhoneNumbers where
  hashWithSalt :: Int -> SearchAvailablePhoneNumbers -> Int
hashWithSalt Int
_salt SearchAvailablePhoneNumbers' {Maybe Natural
Maybe Text
Maybe PhoneNumberType
tollFreePrefix :: Maybe Text
state :: Maybe Text
phoneNumberType :: Maybe PhoneNumberType
nextToken :: Maybe Text
maxResults :: Maybe Natural
country :: Maybe Text
city :: Maybe Text
areaCode :: Maybe Text
$sel:tollFreePrefix:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:state:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:phoneNumberType:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe PhoneNumberType
$sel:nextToken:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:maxResults:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Natural
$sel:country:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:city:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:areaCode:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
areaCode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
city
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
country
      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 PhoneNumberType
phoneNumberType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
state
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
tollFreePrefix

instance Prelude.NFData SearchAvailablePhoneNumbers where
  rnf :: SearchAvailablePhoneNumbers -> ()
rnf SearchAvailablePhoneNumbers' {Maybe Natural
Maybe Text
Maybe PhoneNumberType
tollFreePrefix :: Maybe Text
state :: Maybe Text
phoneNumberType :: Maybe PhoneNumberType
nextToken :: Maybe Text
maxResults :: Maybe Natural
country :: Maybe Text
city :: Maybe Text
areaCode :: Maybe Text
$sel:tollFreePrefix:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:state:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:phoneNumberType:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe PhoneNumberType
$sel:nextToken:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:maxResults:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Natural
$sel:country:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:city:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:areaCode:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
areaCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
city
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
country
      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 PhoneNumberType
phoneNumberType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
state
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
tollFreePrefix

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

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

instance Data.ToQuery SearchAvailablePhoneNumbers where
  toQuery :: SearchAvailablePhoneNumbers -> QueryString
toQuery SearchAvailablePhoneNumbers' {Maybe Natural
Maybe Text
Maybe PhoneNumberType
tollFreePrefix :: Maybe Text
state :: Maybe Text
phoneNumberType :: Maybe PhoneNumberType
nextToken :: Maybe Text
maxResults :: Maybe Natural
country :: Maybe Text
city :: Maybe Text
areaCode :: Maybe Text
$sel:tollFreePrefix:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:state:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:phoneNumberType:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe PhoneNumberType
$sel:nextToken:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:maxResults:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Natural
$sel:country:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:city:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
$sel:areaCode:SearchAvailablePhoneNumbers' :: SearchAvailablePhoneNumbers -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"area-code" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
areaCode,
        ByteString
"city" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
city,
        ByteString
"country" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
country,
        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
"phone-number-type" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe PhoneNumberType
phoneNumberType,
        ByteString
"state" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
state,
        ByteString
"toll-free-prefix" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
tollFreePrefix,
        QueryString
"type=phone-numbers"
      ]

-- | /See:/ 'newSearchAvailablePhoneNumbersResponse' smart constructor.
data SearchAvailablePhoneNumbersResponse = SearchAvailablePhoneNumbersResponse'
  { SearchAvailablePhoneNumbersResponse -> Maybe [Sensitive Text]
e164PhoneNumbers :: Prelude.Maybe [Data.Sensitive Prelude.Text],
    SearchAvailablePhoneNumbersResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    SearchAvailablePhoneNumbersResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (SearchAvailablePhoneNumbersResponse
-> SearchAvailablePhoneNumbersResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SearchAvailablePhoneNumbersResponse
-> SearchAvailablePhoneNumbersResponse -> Bool
$c/= :: SearchAvailablePhoneNumbersResponse
-> SearchAvailablePhoneNumbersResponse -> Bool
== :: SearchAvailablePhoneNumbersResponse
-> SearchAvailablePhoneNumbersResponse -> Bool
$c== :: SearchAvailablePhoneNumbersResponse
-> SearchAvailablePhoneNumbersResponse -> Bool
Prelude.Eq, Int -> SearchAvailablePhoneNumbersResponse -> ShowS
[SearchAvailablePhoneNumbersResponse] -> ShowS
SearchAvailablePhoneNumbersResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SearchAvailablePhoneNumbersResponse] -> ShowS
$cshowList :: [SearchAvailablePhoneNumbersResponse] -> ShowS
show :: SearchAvailablePhoneNumbersResponse -> String
$cshow :: SearchAvailablePhoneNumbersResponse -> String
showsPrec :: Int -> SearchAvailablePhoneNumbersResponse -> ShowS
$cshowsPrec :: Int -> SearchAvailablePhoneNumbersResponse -> ShowS
Prelude.Show, forall x.
Rep SearchAvailablePhoneNumbersResponse x
-> SearchAvailablePhoneNumbersResponse
forall x.
SearchAvailablePhoneNumbersResponse
-> Rep SearchAvailablePhoneNumbersResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep SearchAvailablePhoneNumbersResponse x
-> SearchAvailablePhoneNumbersResponse
$cfrom :: forall x.
SearchAvailablePhoneNumbersResponse
-> Rep SearchAvailablePhoneNumbersResponse x
Prelude.Generic)

-- |
-- Create a value of 'SearchAvailablePhoneNumbersResponse' 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:
--
-- 'e164PhoneNumbers', 'searchAvailablePhoneNumbersResponse_e164PhoneNumbers' - Undocumented member.
--
-- 'nextToken', 'searchAvailablePhoneNumbersResponse_nextToken' - Undocumented member.
--
-- 'httpStatus', 'searchAvailablePhoneNumbersResponse_httpStatus' - The response's http status code.
newSearchAvailablePhoneNumbersResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  SearchAvailablePhoneNumbersResponse
newSearchAvailablePhoneNumbersResponse :: Int -> SearchAvailablePhoneNumbersResponse
newSearchAvailablePhoneNumbersResponse Int
pHttpStatus_ =
  SearchAvailablePhoneNumbersResponse'
    { $sel:e164PhoneNumbers:SearchAvailablePhoneNumbersResponse' :: Maybe [Sensitive Text]
e164PhoneNumbers =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:SearchAvailablePhoneNumbersResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:SearchAvailablePhoneNumbersResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Undocumented member.
searchAvailablePhoneNumbersResponse_e164PhoneNumbers :: Lens.Lens' SearchAvailablePhoneNumbersResponse (Prelude.Maybe [Prelude.Text])
searchAvailablePhoneNumbersResponse_e164PhoneNumbers :: Lens' SearchAvailablePhoneNumbersResponse (Maybe [Text])
searchAvailablePhoneNumbersResponse_e164PhoneNumbers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchAvailablePhoneNumbersResponse' {Maybe [Sensitive Text]
e164PhoneNumbers :: Maybe [Sensitive Text]
$sel:e164PhoneNumbers:SearchAvailablePhoneNumbersResponse' :: SearchAvailablePhoneNumbersResponse -> Maybe [Sensitive Text]
e164PhoneNumbers} -> Maybe [Sensitive Text]
e164PhoneNumbers) (\s :: SearchAvailablePhoneNumbersResponse
s@SearchAvailablePhoneNumbersResponse' {} Maybe [Sensitive Text]
a -> SearchAvailablePhoneNumbersResponse
s {$sel:e164PhoneNumbers:SearchAvailablePhoneNumbersResponse' :: Maybe [Sensitive Text]
e164PhoneNumbers = Maybe [Sensitive Text]
a} :: SearchAvailablePhoneNumbersResponse) 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

-- | Undocumented member.
searchAvailablePhoneNumbersResponse_nextToken :: Lens.Lens' SearchAvailablePhoneNumbersResponse (Prelude.Maybe Prelude.Text)
searchAvailablePhoneNumbersResponse_nextToken :: Lens' SearchAvailablePhoneNumbersResponse (Maybe Text)
searchAvailablePhoneNumbersResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchAvailablePhoneNumbersResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:SearchAvailablePhoneNumbersResponse' :: SearchAvailablePhoneNumbersResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: SearchAvailablePhoneNumbersResponse
s@SearchAvailablePhoneNumbersResponse' {} Maybe Text
a -> SearchAvailablePhoneNumbersResponse
s {$sel:nextToken:SearchAvailablePhoneNumbersResponse' :: Maybe Text
nextToken = Maybe Text
a} :: SearchAvailablePhoneNumbersResponse)

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

instance
  Prelude.NFData
    SearchAvailablePhoneNumbersResponse
  where
  rnf :: SearchAvailablePhoneNumbersResponse -> ()
rnf SearchAvailablePhoneNumbersResponse' {Int
Maybe [Sensitive Text]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
e164PhoneNumbers :: Maybe [Sensitive Text]
$sel:httpStatus:SearchAvailablePhoneNumbersResponse' :: SearchAvailablePhoneNumbersResponse -> Int
$sel:nextToken:SearchAvailablePhoneNumbersResponse' :: SearchAvailablePhoneNumbersResponse -> Maybe Text
$sel:e164PhoneNumbers:SearchAvailablePhoneNumbersResponse' :: SearchAvailablePhoneNumbersResponse -> Maybe [Sensitive Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Sensitive Text]
e164PhoneNumbers
      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 Int
httpStatus