{-# 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.AlexaBusiness.CreateConferenceProvider
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Adds a new conference provider under the user\'s AWS account.
module Amazonka.AlexaBusiness.CreateConferenceProvider
  ( -- * Creating a Request
    CreateConferenceProvider (..),
    newCreateConferenceProvider,

    -- * Request Lenses
    createConferenceProvider_clientRequestToken,
    createConferenceProvider_iPDialIn,
    createConferenceProvider_pSTNDialIn,
    createConferenceProvider_tags,
    createConferenceProvider_conferenceProviderName,
    createConferenceProvider_conferenceProviderType,
    createConferenceProvider_meetingSetting,

    -- * Destructuring the Response
    CreateConferenceProviderResponse (..),
    newCreateConferenceProviderResponse,

    -- * Response Lenses
    createConferenceProviderResponse_conferenceProviderArn,
    createConferenceProviderResponse_httpStatus,
  )
where

import Amazonka.AlexaBusiness.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:/ 'newCreateConferenceProvider' smart constructor.
data CreateConferenceProvider = CreateConferenceProvider'
  { -- | The request token of the client.
    CreateConferenceProvider -> Maybe Text
clientRequestToken :: Prelude.Maybe Prelude.Text,
    -- | The IP endpoint and protocol for calling.
    CreateConferenceProvider -> Maybe IPDialIn
iPDialIn :: Prelude.Maybe IPDialIn,
    -- | The information for PSTN conferencing.
    CreateConferenceProvider -> Maybe PSTNDialIn
pSTNDialIn :: Prelude.Maybe PSTNDialIn,
    -- | The tags to be added to the specified resource. Do not provide system
    -- tags.
    CreateConferenceProvider -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The name of the conference provider.
    CreateConferenceProvider -> Text
conferenceProviderName :: Prelude.Text,
    -- | Represents a type within a list of predefined types.
    CreateConferenceProvider -> ConferenceProviderType
conferenceProviderType :: ConferenceProviderType,
    -- | The meeting settings for the conference provider.
    CreateConferenceProvider -> MeetingSetting
meetingSetting :: MeetingSetting
  }
  deriving (CreateConferenceProvider -> CreateConferenceProvider -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateConferenceProvider -> CreateConferenceProvider -> Bool
$c/= :: CreateConferenceProvider -> CreateConferenceProvider -> Bool
== :: CreateConferenceProvider -> CreateConferenceProvider -> Bool
$c== :: CreateConferenceProvider -> CreateConferenceProvider -> Bool
Prelude.Eq, ReadPrec [CreateConferenceProvider]
ReadPrec CreateConferenceProvider
Int -> ReadS CreateConferenceProvider
ReadS [CreateConferenceProvider]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateConferenceProvider]
$creadListPrec :: ReadPrec [CreateConferenceProvider]
readPrec :: ReadPrec CreateConferenceProvider
$creadPrec :: ReadPrec CreateConferenceProvider
readList :: ReadS [CreateConferenceProvider]
$creadList :: ReadS [CreateConferenceProvider]
readsPrec :: Int -> ReadS CreateConferenceProvider
$creadsPrec :: Int -> ReadS CreateConferenceProvider
Prelude.Read, Int -> CreateConferenceProvider -> ShowS
[CreateConferenceProvider] -> ShowS
CreateConferenceProvider -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateConferenceProvider] -> ShowS
$cshowList :: [CreateConferenceProvider] -> ShowS
show :: CreateConferenceProvider -> String
$cshow :: CreateConferenceProvider -> String
showsPrec :: Int -> CreateConferenceProvider -> ShowS
$cshowsPrec :: Int -> CreateConferenceProvider -> ShowS
Prelude.Show, forall x.
Rep CreateConferenceProvider x -> CreateConferenceProvider
forall x.
CreateConferenceProvider -> Rep CreateConferenceProvider x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateConferenceProvider x -> CreateConferenceProvider
$cfrom :: forall x.
CreateConferenceProvider -> Rep CreateConferenceProvider x
Prelude.Generic)

-- |
-- Create a value of 'CreateConferenceProvider' 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:
--
-- 'clientRequestToken', 'createConferenceProvider_clientRequestToken' - The request token of the client.
--
-- 'iPDialIn', 'createConferenceProvider_iPDialIn' - The IP endpoint and protocol for calling.
--
-- 'pSTNDialIn', 'createConferenceProvider_pSTNDialIn' - The information for PSTN conferencing.
--
-- 'tags', 'createConferenceProvider_tags' - The tags to be added to the specified resource. Do not provide system
-- tags.
--
-- 'conferenceProviderName', 'createConferenceProvider_conferenceProviderName' - The name of the conference provider.
--
-- 'conferenceProviderType', 'createConferenceProvider_conferenceProviderType' - Represents a type within a list of predefined types.
--
-- 'meetingSetting', 'createConferenceProvider_meetingSetting' - The meeting settings for the conference provider.
newCreateConferenceProvider ::
  -- | 'conferenceProviderName'
  Prelude.Text ->
  -- | 'conferenceProviderType'
  ConferenceProviderType ->
  -- | 'meetingSetting'
  MeetingSetting ->
  CreateConferenceProvider
newCreateConferenceProvider :: Text
-> ConferenceProviderType
-> MeetingSetting
-> CreateConferenceProvider
newCreateConferenceProvider
  Text
pConferenceProviderName_
  ConferenceProviderType
pConferenceProviderType_
  MeetingSetting
pMeetingSetting_ =
    CreateConferenceProvider'
      { $sel:clientRequestToken:CreateConferenceProvider' :: Maybe Text
clientRequestToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:iPDialIn:CreateConferenceProvider' :: Maybe IPDialIn
iPDialIn = forall a. Maybe a
Prelude.Nothing,
        $sel:pSTNDialIn:CreateConferenceProvider' :: Maybe PSTNDialIn
pSTNDialIn = forall a. Maybe a
Prelude.Nothing,
        $sel:tags:CreateConferenceProvider' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:conferenceProviderName:CreateConferenceProvider' :: Text
conferenceProviderName = Text
pConferenceProviderName_,
        $sel:conferenceProviderType:CreateConferenceProvider' :: ConferenceProviderType
conferenceProviderType = ConferenceProviderType
pConferenceProviderType_,
        $sel:meetingSetting:CreateConferenceProvider' :: MeetingSetting
meetingSetting = MeetingSetting
pMeetingSetting_
      }

-- | The request token of the client.
createConferenceProvider_clientRequestToken :: Lens.Lens' CreateConferenceProvider (Prelude.Maybe Prelude.Text)
createConferenceProvider_clientRequestToken :: Lens' CreateConferenceProvider (Maybe Text)
createConferenceProvider_clientRequestToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateConferenceProvider' {Maybe Text
clientRequestToken :: Maybe Text
$sel:clientRequestToken:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe Text
clientRequestToken} -> Maybe Text
clientRequestToken) (\s :: CreateConferenceProvider
s@CreateConferenceProvider' {} Maybe Text
a -> CreateConferenceProvider
s {$sel:clientRequestToken:CreateConferenceProvider' :: Maybe Text
clientRequestToken = Maybe Text
a} :: CreateConferenceProvider)

-- | The IP endpoint and protocol for calling.
createConferenceProvider_iPDialIn :: Lens.Lens' CreateConferenceProvider (Prelude.Maybe IPDialIn)
createConferenceProvider_iPDialIn :: Lens' CreateConferenceProvider (Maybe IPDialIn)
createConferenceProvider_iPDialIn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateConferenceProvider' {Maybe IPDialIn
iPDialIn :: Maybe IPDialIn
$sel:iPDialIn:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe IPDialIn
iPDialIn} -> Maybe IPDialIn
iPDialIn) (\s :: CreateConferenceProvider
s@CreateConferenceProvider' {} Maybe IPDialIn
a -> CreateConferenceProvider
s {$sel:iPDialIn:CreateConferenceProvider' :: Maybe IPDialIn
iPDialIn = Maybe IPDialIn
a} :: CreateConferenceProvider)

-- | The information for PSTN conferencing.
createConferenceProvider_pSTNDialIn :: Lens.Lens' CreateConferenceProvider (Prelude.Maybe PSTNDialIn)
createConferenceProvider_pSTNDialIn :: Lens' CreateConferenceProvider (Maybe PSTNDialIn)
createConferenceProvider_pSTNDialIn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateConferenceProvider' {Maybe PSTNDialIn
pSTNDialIn :: Maybe PSTNDialIn
$sel:pSTNDialIn:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe PSTNDialIn
pSTNDialIn} -> Maybe PSTNDialIn
pSTNDialIn) (\s :: CreateConferenceProvider
s@CreateConferenceProvider' {} Maybe PSTNDialIn
a -> CreateConferenceProvider
s {$sel:pSTNDialIn:CreateConferenceProvider' :: Maybe PSTNDialIn
pSTNDialIn = Maybe PSTNDialIn
a} :: CreateConferenceProvider)

-- | The tags to be added to the specified resource. Do not provide system
-- tags.
createConferenceProvider_tags :: Lens.Lens' CreateConferenceProvider (Prelude.Maybe [Tag])
createConferenceProvider_tags :: Lens' CreateConferenceProvider (Maybe [Tag])
createConferenceProvider_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateConferenceProvider' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateConferenceProvider
s@CreateConferenceProvider' {} Maybe [Tag]
a -> CreateConferenceProvider
s {$sel:tags:CreateConferenceProvider' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateConferenceProvider) 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 name of the conference provider.
createConferenceProvider_conferenceProviderName :: Lens.Lens' CreateConferenceProvider Prelude.Text
createConferenceProvider_conferenceProviderName :: Lens' CreateConferenceProvider Text
createConferenceProvider_conferenceProviderName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateConferenceProvider' {Text
conferenceProviderName :: Text
$sel:conferenceProviderName:CreateConferenceProvider' :: CreateConferenceProvider -> Text
conferenceProviderName} -> Text
conferenceProviderName) (\s :: CreateConferenceProvider
s@CreateConferenceProvider' {} Text
a -> CreateConferenceProvider
s {$sel:conferenceProviderName:CreateConferenceProvider' :: Text
conferenceProviderName = Text
a} :: CreateConferenceProvider)

-- | Represents a type within a list of predefined types.
createConferenceProvider_conferenceProviderType :: Lens.Lens' CreateConferenceProvider ConferenceProviderType
createConferenceProvider_conferenceProviderType :: Lens' CreateConferenceProvider ConferenceProviderType
createConferenceProvider_conferenceProviderType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateConferenceProvider' {ConferenceProviderType
conferenceProviderType :: ConferenceProviderType
$sel:conferenceProviderType:CreateConferenceProvider' :: CreateConferenceProvider -> ConferenceProviderType
conferenceProviderType} -> ConferenceProviderType
conferenceProviderType) (\s :: CreateConferenceProvider
s@CreateConferenceProvider' {} ConferenceProviderType
a -> CreateConferenceProvider
s {$sel:conferenceProviderType:CreateConferenceProvider' :: ConferenceProviderType
conferenceProviderType = ConferenceProviderType
a} :: CreateConferenceProvider)

-- | The meeting settings for the conference provider.
createConferenceProvider_meetingSetting :: Lens.Lens' CreateConferenceProvider MeetingSetting
createConferenceProvider_meetingSetting :: Lens' CreateConferenceProvider MeetingSetting
createConferenceProvider_meetingSetting = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateConferenceProvider' {MeetingSetting
meetingSetting :: MeetingSetting
$sel:meetingSetting:CreateConferenceProvider' :: CreateConferenceProvider -> MeetingSetting
meetingSetting} -> MeetingSetting
meetingSetting) (\s :: CreateConferenceProvider
s@CreateConferenceProvider' {} MeetingSetting
a -> CreateConferenceProvider
s {$sel:meetingSetting:CreateConferenceProvider' :: MeetingSetting
meetingSetting = MeetingSetting
a} :: CreateConferenceProvider)

instance Core.AWSRequest CreateConferenceProvider where
  type
    AWSResponse CreateConferenceProvider =
      CreateConferenceProviderResponse
  request :: (Service -> Service)
-> CreateConferenceProvider -> Request CreateConferenceProvider
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 CreateConferenceProvider
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateConferenceProvider)))
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 -> Int -> CreateConferenceProviderResponse
CreateConferenceProviderResponse'
            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
"ConferenceProviderArn")
            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 CreateConferenceProvider where
  hashWithSalt :: Int -> CreateConferenceProvider -> Int
hashWithSalt Int
_salt CreateConferenceProvider' {Maybe [Tag]
Maybe Text
Maybe IPDialIn
Maybe PSTNDialIn
Text
ConferenceProviderType
MeetingSetting
meetingSetting :: MeetingSetting
conferenceProviderType :: ConferenceProviderType
conferenceProviderName :: Text
tags :: Maybe [Tag]
pSTNDialIn :: Maybe PSTNDialIn
iPDialIn :: Maybe IPDialIn
clientRequestToken :: Maybe Text
$sel:meetingSetting:CreateConferenceProvider' :: CreateConferenceProvider -> MeetingSetting
$sel:conferenceProviderType:CreateConferenceProvider' :: CreateConferenceProvider -> ConferenceProviderType
$sel:conferenceProviderName:CreateConferenceProvider' :: CreateConferenceProvider -> Text
$sel:tags:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe [Tag]
$sel:pSTNDialIn:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe PSTNDialIn
$sel:iPDialIn:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe IPDialIn
$sel:clientRequestToken:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientRequestToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe IPDialIn
iPDialIn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PSTNDialIn
pSTNDialIn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
conferenceProviderName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ConferenceProviderType
conferenceProviderType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` MeetingSetting
meetingSetting

instance Prelude.NFData CreateConferenceProvider where
  rnf :: CreateConferenceProvider -> ()
rnf CreateConferenceProvider' {Maybe [Tag]
Maybe Text
Maybe IPDialIn
Maybe PSTNDialIn
Text
ConferenceProviderType
MeetingSetting
meetingSetting :: MeetingSetting
conferenceProviderType :: ConferenceProviderType
conferenceProviderName :: Text
tags :: Maybe [Tag]
pSTNDialIn :: Maybe PSTNDialIn
iPDialIn :: Maybe IPDialIn
clientRequestToken :: Maybe Text
$sel:meetingSetting:CreateConferenceProvider' :: CreateConferenceProvider -> MeetingSetting
$sel:conferenceProviderType:CreateConferenceProvider' :: CreateConferenceProvider -> ConferenceProviderType
$sel:conferenceProviderName:CreateConferenceProvider' :: CreateConferenceProvider -> Text
$sel:tags:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe [Tag]
$sel:pSTNDialIn:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe PSTNDialIn
$sel:iPDialIn:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe IPDialIn
$sel:clientRequestToken:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientRequestToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe IPDialIn
iPDialIn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PSTNDialIn
pSTNDialIn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
conferenceProviderName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ConferenceProviderType
conferenceProviderType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf MeetingSetting
meetingSetting

instance Data.ToHeaders CreateConferenceProvider where
  toHeaders :: CreateConferenceProvider -> 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
"AlexaForBusiness.CreateConferenceProvider" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON CreateConferenceProvider where
  toJSON :: CreateConferenceProvider -> Value
toJSON CreateConferenceProvider' {Maybe [Tag]
Maybe Text
Maybe IPDialIn
Maybe PSTNDialIn
Text
ConferenceProviderType
MeetingSetting
meetingSetting :: MeetingSetting
conferenceProviderType :: ConferenceProviderType
conferenceProviderName :: Text
tags :: Maybe [Tag]
pSTNDialIn :: Maybe PSTNDialIn
iPDialIn :: Maybe IPDialIn
clientRequestToken :: Maybe Text
$sel:meetingSetting:CreateConferenceProvider' :: CreateConferenceProvider -> MeetingSetting
$sel:conferenceProviderType:CreateConferenceProvider' :: CreateConferenceProvider -> ConferenceProviderType
$sel:conferenceProviderName:CreateConferenceProvider' :: CreateConferenceProvider -> Text
$sel:tags:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe [Tag]
$sel:pSTNDialIn:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe PSTNDialIn
$sel:iPDialIn:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe IPDialIn
$sel:clientRequestToken:CreateConferenceProvider' :: CreateConferenceProvider -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ClientRequestToken" 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
clientRequestToken,
            (Key
"IPDialIn" 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 IPDialIn
iPDialIn,
            (Key
"PSTNDialIn" 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 PSTNDialIn
pSTNDialIn,
            (Key
"Tags" 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 [Tag]
tags,
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"ConferenceProviderName"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
conferenceProviderName
              ),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"ConferenceProviderType"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ConferenceProviderType
conferenceProviderType
              ),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"MeetingSetting" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= MeetingSetting
meetingSetting)
          ]
      )

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

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

-- | /See:/ 'newCreateConferenceProviderResponse' smart constructor.
data CreateConferenceProviderResponse = CreateConferenceProviderResponse'
  { -- | The ARN of the newly-created conference provider.
    CreateConferenceProviderResponse -> Maybe Text
conferenceProviderArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateConferenceProviderResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateConferenceProviderResponse
-> CreateConferenceProviderResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateConferenceProviderResponse
-> CreateConferenceProviderResponse -> Bool
$c/= :: CreateConferenceProviderResponse
-> CreateConferenceProviderResponse -> Bool
== :: CreateConferenceProviderResponse
-> CreateConferenceProviderResponse -> Bool
$c== :: CreateConferenceProviderResponse
-> CreateConferenceProviderResponse -> Bool
Prelude.Eq, ReadPrec [CreateConferenceProviderResponse]
ReadPrec CreateConferenceProviderResponse
Int -> ReadS CreateConferenceProviderResponse
ReadS [CreateConferenceProviderResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateConferenceProviderResponse]
$creadListPrec :: ReadPrec [CreateConferenceProviderResponse]
readPrec :: ReadPrec CreateConferenceProviderResponse
$creadPrec :: ReadPrec CreateConferenceProviderResponse
readList :: ReadS [CreateConferenceProviderResponse]
$creadList :: ReadS [CreateConferenceProviderResponse]
readsPrec :: Int -> ReadS CreateConferenceProviderResponse
$creadsPrec :: Int -> ReadS CreateConferenceProviderResponse
Prelude.Read, Int -> CreateConferenceProviderResponse -> ShowS
[CreateConferenceProviderResponse] -> ShowS
CreateConferenceProviderResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateConferenceProviderResponse] -> ShowS
$cshowList :: [CreateConferenceProviderResponse] -> ShowS
show :: CreateConferenceProviderResponse -> String
$cshow :: CreateConferenceProviderResponse -> String
showsPrec :: Int -> CreateConferenceProviderResponse -> ShowS
$cshowsPrec :: Int -> CreateConferenceProviderResponse -> ShowS
Prelude.Show, forall x.
Rep CreateConferenceProviderResponse x
-> CreateConferenceProviderResponse
forall x.
CreateConferenceProviderResponse
-> Rep CreateConferenceProviderResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateConferenceProviderResponse x
-> CreateConferenceProviderResponse
$cfrom :: forall x.
CreateConferenceProviderResponse
-> Rep CreateConferenceProviderResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateConferenceProviderResponse' 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:
--
-- 'conferenceProviderArn', 'createConferenceProviderResponse_conferenceProviderArn' - The ARN of the newly-created conference provider.
--
-- 'httpStatus', 'createConferenceProviderResponse_httpStatus' - The response's http status code.
newCreateConferenceProviderResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateConferenceProviderResponse
newCreateConferenceProviderResponse :: Int -> CreateConferenceProviderResponse
newCreateConferenceProviderResponse Int
pHttpStatus_ =
  CreateConferenceProviderResponse'
    { $sel:conferenceProviderArn:CreateConferenceProviderResponse' :: Maybe Text
conferenceProviderArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateConferenceProviderResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ARN of the newly-created conference provider.
createConferenceProviderResponse_conferenceProviderArn :: Lens.Lens' CreateConferenceProviderResponse (Prelude.Maybe Prelude.Text)
createConferenceProviderResponse_conferenceProviderArn :: Lens' CreateConferenceProviderResponse (Maybe Text)
createConferenceProviderResponse_conferenceProviderArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateConferenceProviderResponse' {Maybe Text
conferenceProviderArn :: Maybe Text
$sel:conferenceProviderArn:CreateConferenceProviderResponse' :: CreateConferenceProviderResponse -> Maybe Text
conferenceProviderArn} -> Maybe Text
conferenceProviderArn) (\s :: CreateConferenceProviderResponse
s@CreateConferenceProviderResponse' {} Maybe Text
a -> CreateConferenceProviderResponse
s {$sel:conferenceProviderArn:CreateConferenceProviderResponse' :: Maybe Text
conferenceProviderArn = Maybe Text
a} :: CreateConferenceProviderResponse)

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

instance
  Prelude.NFData
    CreateConferenceProviderResponse
  where
  rnf :: CreateConferenceProviderResponse -> ()
rnf CreateConferenceProviderResponse' {Int
Maybe Text
httpStatus :: Int
conferenceProviderArn :: Maybe Text
$sel:httpStatus:CreateConferenceProviderResponse' :: CreateConferenceProviderResponse -> Int
$sel:conferenceProviderArn:CreateConferenceProviderResponse' :: CreateConferenceProviderResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
conferenceProviderArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus