{-# 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.ChimeSDKMessaging.CreateChannelMembership
-- 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 user to a channel. The @InvitedBy@ field in @ChannelMembership@
-- is derived from the request header. A channel member can:
--
-- -   List messages
--
-- -   Send messages
--
-- -   Receive messages
--
-- -   Edit their own messages
--
-- -   Leave the channel
--
-- Privacy settings impact this action as follows:
--
-- -   Public Channels: You do not need to be a member to list messages,
--     but you must be a member to send messages.
--
-- -   Private Channels: You must be a member to list or send messages.
--
-- The @x-amz-chime-bearer@ request header is mandatory. Use the
-- @AppInstanceUserArn@ of the user that makes the API call as the value in
-- the header.
module Amazonka.ChimeSDKMessaging.CreateChannelMembership
  ( -- * Creating a Request
    CreateChannelMembership (..),
    newCreateChannelMembership,

    -- * Request Lenses
    createChannelMembership_subChannelId,
    createChannelMembership_channelArn,
    createChannelMembership_memberArn,
    createChannelMembership_type,
    createChannelMembership_chimeBearer,

    -- * Destructuring the Response
    CreateChannelMembershipResponse (..),
    newCreateChannelMembershipResponse,

    -- * Response Lenses
    createChannelMembershipResponse_channelArn,
    createChannelMembershipResponse_member,
    createChannelMembershipResponse_subChannelId,
    createChannelMembershipResponse_httpStatus,
  )
where

import Amazonka.ChimeSDKMessaging.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:/ 'newCreateChannelMembership' smart constructor.
data CreateChannelMembership = CreateChannelMembership'
  { -- | The ID of the SubChannel in the request.
    --
    -- Only required when creating membership in a SubChannel for a moderator
    -- in an elastic channel.
    CreateChannelMembership -> Maybe Text
subChannelId :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the channel to which you\'re adding users.
    CreateChannelMembership -> Text
channelArn :: Prelude.Text,
    -- | The @AppInstanceUserArn@ of the member you want to add to the channel.
    CreateChannelMembership -> Text
memberArn :: Prelude.Text,
    -- | The membership type of a user, @DEFAULT@ or @HIDDEN@. Default members
    -- are always returned as part of @ListChannelMemberships@. Hidden members
    -- are only returned if the type filter in @ListChannelMemberships@ equals
    -- @HIDDEN@. Otherwise hidden members are not returned. This is only
    -- supported by moderators.
    CreateChannelMembership -> ChannelMembershipType
type' :: ChannelMembershipType,
    -- | The @AppInstanceUserArn@ of the user that makes the API call.
    CreateChannelMembership -> Text
chimeBearer :: Prelude.Text
  }
  deriving (CreateChannelMembership -> CreateChannelMembership -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateChannelMembership -> CreateChannelMembership -> Bool
$c/= :: CreateChannelMembership -> CreateChannelMembership -> Bool
== :: CreateChannelMembership -> CreateChannelMembership -> Bool
$c== :: CreateChannelMembership -> CreateChannelMembership -> Bool
Prelude.Eq, ReadPrec [CreateChannelMembership]
ReadPrec CreateChannelMembership
Int -> ReadS CreateChannelMembership
ReadS [CreateChannelMembership]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateChannelMembership]
$creadListPrec :: ReadPrec [CreateChannelMembership]
readPrec :: ReadPrec CreateChannelMembership
$creadPrec :: ReadPrec CreateChannelMembership
readList :: ReadS [CreateChannelMembership]
$creadList :: ReadS [CreateChannelMembership]
readsPrec :: Int -> ReadS CreateChannelMembership
$creadsPrec :: Int -> ReadS CreateChannelMembership
Prelude.Read, Int -> CreateChannelMembership -> ShowS
[CreateChannelMembership] -> ShowS
CreateChannelMembership -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateChannelMembership] -> ShowS
$cshowList :: [CreateChannelMembership] -> ShowS
show :: CreateChannelMembership -> String
$cshow :: CreateChannelMembership -> String
showsPrec :: Int -> CreateChannelMembership -> ShowS
$cshowsPrec :: Int -> CreateChannelMembership -> ShowS
Prelude.Show, forall x. Rep CreateChannelMembership x -> CreateChannelMembership
forall x. CreateChannelMembership -> Rep CreateChannelMembership x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateChannelMembership x -> CreateChannelMembership
$cfrom :: forall x. CreateChannelMembership -> Rep CreateChannelMembership x
Prelude.Generic)

-- |
-- Create a value of 'CreateChannelMembership' 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:
--
-- 'subChannelId', 'createChannelMembership_subChannelId' - The ID of the SubChannel in the request.
--
-- Only required when creating membership in a SubChannel for a moderator
-- in an elastic channel.
--
-- 'channelArn', 'createChannelMembership_channelArn' - The ARN of the channel to which you\'re adding users.
--
-- 'memberArn', 'createChannelMembership_memberArn' - The @AppInstanceUserArn@ of the member you want to add to the channel.
--
-- 'type'', 'createChannelMembership_type' - The membership type of a user, @DEFAULT@ or @HIDDEN@. Default members
-- are always returned as part of @ListChannelMemberships@. Hidden members
-- are only returned if the type filter in @ListChannelMemberships@ equals
-- @HIDDEN@. Otherwise hidden members are not returned. This is only
-- supported by moderators.
--
-- 'chimeBearer', 'createChannelMembership_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
newCreateChannelMembership ::
  -- | 'channelArn'
  Prelude.Text ->
  -- | 'memberArn'
  Prelude.Text ->
  -- | 'type''
  ChannelMembershipType ->
  -- | 'chimeBearer'
  Prelude.Text ->
  CreateChannelMembership
newCreateChannelMembership :: Text
-> Text -> ChannelMembershipType -> Text -> CreateChannelMembership
newCreateChannelMembership
  Text
pChannelArn_
  Text
pMemberArn_
  ChannelMembershipType
pType_
  Text
pChimeBearer_ =
    CreateChannelMembership'
      { $sel:subChannelId:CreateChannelMembership' :: Maybe Text
subChannelId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:channelArn:CreateChannelMembership' :: Text
channelArn = Text
pChannelArn_,
        $sel:memberArn:CreateChannelMembership' :: Text
memberArn = Text
pMemberArn_,
        $sel:type':CreateChannelMembership' :: ChannelMembershipType
type' = ChannelMembershipType
pType_,
        $sel:chimeBearer:CreateChannelMembership' :: Text
chimeBearer = Text
pChimeBearer_
      }

-- | The ID of the SubChannel in the request.
--
-- Only required when creating membership in a SubChannel for a moderator
-- in an elastic channel.
createChannelMembership_subChannelId :: Lens.Lens' CreateChannelMembership (Prelude.Maybe Prelude.Text)
createChannelMembership_subChannelId :: Lens' CreateChannelMembership (Maybe Text)
createChannelMembership_subChannelId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChannelMembership' {Maybe Text
subChannelId :: Maybe Text
$sel:subChannelId:CreateChannelMembership' :: CreateChannelMembership -> Maybe Text
subChannelId} -> Maybe Text
subChannelId) (\s :: CreateChannelMembership
s@CreateChannelMembership' {} Maybe Text
a -> CreateChannelMembership
s {$sel:subChannelId:CreateChannelMembership' :: Maybe Text
subChannelId = Maybe Text
a} :: CreateChannelMembership)

-- | The ARN of the channel to which you\'re adding users.
createChannelMembership_channelArn :: Lens.Lens' CreateChannelMembership Prelude.Text
createChannelMembership_channelArn :: Lens' CreateChannelMembership Text
createChannelMembership_channelArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChannelMembership' {Text
channelArn :: Text
$sel:channelArn:CreateChannelMembership' :: CreateChannelMembership -> Text
channelArn} -> Text
channelArn) (\s :: CreateChannelMembership
s@CreateChannelMembership' {} Text
a -> CreateChannelMembership
s {$sel:channelArn:CreateChannelMembership' :: Text
channelArn = Text
a} :: CreateChannelMembership)

-- | The @AppInstanceUserArn@ of the member you want to add to the channel.
createChannelMembership_memberArn :: Lens.Lens' CreateChannelMembership Prelude.Text
createChannelMembership_memberArn :: Lens' CreateChannelMembership Text
createChannelMembership_memberArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChannelMembership' {Text
memberArn :: Text
$sel:memberArn:CreateChannelMembership' :: CreateChannelMembership -> Text
memberArn} -> Text
memberArn) (\s :: CreateChannelMembership
s@CreateChannelMembership' {} Text
a -> CreateChannelMembership
s {$sel:memberArn:CreateChannelMembership' :: Text
memberArn = Text
a} :: CreateChannelMembership)

-- | The membership type of a user, @DEFAULT@ or @HIDDEN@. Default members
-- are always returned as part of @ListChannelMemberships@. Hidden members
-- are only returned if the type filter in @ListChannelMemberships@ equals
-- @HIDDEN@. Otherwise hidden members are not returned. This is only
-- supported by moderators.
createChannelMembership_type :: Lens.Lens' CreateChannelMembership ChannelMembershipType
createChannelMembership_type :: Lens' CreateChannelMembership ChannelMembershipType
createChannelMembership_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChannelMembership' {ChannelMembershipType
type' :: ChannelMembershipType
$sel:type':CreateChannelMembership' :: CreateChannelMembership -> ChannelMembershipType
type'} -> ChannelMembershipType
type') (\s :: CreateChannelMembership
s@CreateChannelMembership' {} ChannelMembershipType
a -> CreateChannelMembership
s {$sel:type':CreateChannelMembership' :: ChannelMembershipType
type' = ChannelMembershipType
a} :: CreateChannelMembership)

-- | The @AppInstanceUserArn@ of the user that makes the API call.
createChannelMembership_chimeBearer :: Lens.Lens' CreateChannelMembership Prelude.Text
createChannelMembership_chimeBearer :: Lens' CreateChannelMembership Text
createChannelMembership_chimeBearer = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChannelMembership' {Text
chimeBearer :: Text
$sel:chimeBearer:CreateChannelMembership' :: CreateChannelMembership -> Text
chimeBearer} -> Text
chimeBearer) (\s :: CreateChannelMembership
s@CreateChannelMembership' {} Text
a -> CreateChannelMembership
s {$sel:chimeBearer:CreateChannelMembership' :: Text
chimeBearer = Text
a} :: CreateChannelMembership)

instance Core.AWSRequest CreateChannelMembership where
  type
    AWSResponse CreateChannelMembership =
      CreateChannelMembershipResponse
  request :: (Service -> Service)
-> CreateChannelMembership -> Request CreateChannelMembership
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 CreateChannelMembership
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateChannelMembership)))
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 Identity
-> Maybe Text
-> Int
-> CreateChannelMembershipResponse
CreateChannelMembershipResponse'
            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
"ChannelArn")
            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
"Member")
            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
"SubChannelId")
            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 CreateChannelMembership where
  hashWithSalt :: Int -> CreateChannelMembership -> Int
hashWithSalt Int
_salt CreateChannelMembership' {Maybe Text
Text
ChannelMembershipType
chimeBearer :: Text
type' :: ChannelMembershipType
memberArn :: Text
channelArn :: Text
subChannelId :: Maybe Text
$sel:chimeBearer:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:type':CreateChannelMembership' :: CreateChannelMembership -> ChannelMembershipType
$sel:memberArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:channelArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:subChannelId:CreateChannelMembership' :: CreateChannelMembership -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
subChannelId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
channelArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
memberArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ChannelMembershipType
type'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
chimeBearer

instance Prelude.NFData CreateChannelMembership where
  rnf :: CreateChannelMembership -> ()
rnf CreateChannelMembership' {Maybe Text
Text
ChannelMembershipType
chimeBearer :: Text
type' :: ChannelMembershipType
memberArn :: Text
channelArn :: Text
subChannelId :: Maybe Text
$sel:chimeBearer:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:type':CreateChannelMembership' :: CreateChannelMembership -> ChannelMembershipType
$sel:memberArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:channelArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:subChannelId:CreateChannelMembership' :: CreateChannelMembership -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
subChannelId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
channelArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
memberArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ChannelMembershipType
type'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
chimeBearer

instance Data.ToHeaders CreateChannelMembership where
  toHeaders :: CreateChannelMembership -> ResponseHeaders
toHeaders CreateChannelMembership' {Maybe Text
Text
ChannelMembershipType
chimeBearer :: Text
type' :: ChannelMembershipType
memberArn :: Text
channelArn :: Text
subChannelId :: Maybe Text
$sel:chimeBearer:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:type':CreateChannelMembership' :: CreateChannelMembership -> ChannelMembershipType
$sel:memberArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:channelArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:subChannelId:CreateChannelMembership' :: CreateChannelMembership -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [HeaderName
"x-amz-chime-bearer" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Text
chimeBearer]

instance Data.ToJSON CreateChannelMembership where
  toJSON :: CreateChannelMembership -> Value
toJSON CreateChannelMembership' {Maybe Text
Text
ChannelMembershipType
chimeBearer :: Text
type' :: ChannelMembershipType
memberArn :: Text
channelArn :: Text
subChannelId :: Maybe Text
$sel:chimeBearer:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:type':CreateChannelMembership' :: CreateChannelMembership -> ChannelMembershipType
$sel:memberArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:channelArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:subChannelId:CreateChannelMembership' :: CreateChannelMembership -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"SubChannelId" 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
subChannelId,
            forall a. a -> Maybe a
Prelude.Just (Key
"MemberArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
memberArn),
            forall a. a -> Maybe a
Prelude.Just (Key
"Type" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ChannelMembershipType
type')
          ]
      )

instance Data.ToPath CreateChannelMembership where
  toPath :: CreateChannelMembership -> ByteString
toPath CreateChannelMembership' {Maybe Text
Text
ChannelMembershipType
chimeBearer :: Text
type' :: ChannelMembershipType
memberArn :: Text
channelArn :: Text
subChannelId :: Maybe Text
$sel:chimeBearer:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:type':CreateChannelMembership' :: CreateChannelMembership -> ChannelMembershipType
$sel:memberArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:channelArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:subChannelId:CreateChannelMembership' :: CreateChannelMembership -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/channels/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
channelArn, ByteString
"/memberships"]

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

-- | /See:/ 'newCreateChannelMembershipResponse' smart constructor.
data CreateChannelMembershipResponse = CreateChannelMembershipResponse'
  { -- | The ARN of the channel.
    CreateChannelMembershipResponse -> Maybe Text
channelArn :: Prelude.Maybe Prelude.Text,
    -- | The ARN and metadata of the member being added.
    CreateChannelMembershipResponse -> Maybe Identity
member :: Prelude.Maybe Identity,
    -- | The ID of the SubChannel in the response.
    CreateChannelMembershipResponse -> Maybe Text
subChannelId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateChannelMembershipResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateChannelMembershipResponse
-> CreateChannelMembershipResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateChannelMembershipResponse
-> CreateChannelMembershipResponse -> Bool
$c/= :: CreateChannelMembershipResponse
-> CreateChannelMembershipResponse -> Bool
== :: CreateChannelMembershipResponse
-> CreateChannelMembershipResponse -> Bool
$c== :: CreateChannelMembershipResponse
-> CreateChannelMembershipResponse -> Bool
Prelude.Eq, Int -> CreateChannelMembershipResponse -> ShowS
[CreateChannelMembershipResponse] -> ShowS
CreateChannelMembershipResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateChannelMembershipResponse] -> ShowS
$cshowList :: [CreateChannelMembershipResponse] -> ShowS
show :: CreateChannelMembershipResponse -> String
$cshow :: CreateChannelMembershipResponse -> String
showsPrec :: Int -> CreateChannelMembershipResponse -> ShowS
$cshowsPrec :: Int -> CreateChannelMembershipResponse -> ShowS
Prelude.Show, forall x.
Rep CreateChannelMembershipResponse x
-> CreateChannelMembershipResponse
forall x.
CreateChannelMembershipResponse
-> Rep CreateChannelMembershipResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateChannelMembershipResponse x
-> CreateChannelMembershipResponse
$cfrom :: forall x.
CreateChannelMembershipResponse
-> Rep CreateChannelMembershipResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateChannelMembershipResponse' 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:
--
-- 'channelArn', 'createChannelMembershipResponse_channelArn' - The ARN of the channel.
--
-- 'member', 'createChannelMembershipResponse_member' - The ARN and metadata of the member being added.
--
-- 'subChannelId', 'createChannelMembershipResponse_subChannelId' - The ID of the SubChannel in the response.
--
-- 'httpStatus', 'createChannelMembershipResponse_httpStatus' - The response's http status code.
newCreateChannelMembershipResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateChannelMembershipResponse
newCreateChannelMembershipResponse :: Int -> CreateChannelMembershipResponse
newCreateChannelMembershipResponse Int
pHttpStatus_ =
  CreateChannelMembershipResponse'
    { $sel:channelArn:CreateChannelMembershipResponse' :: Maybe Text
channelArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:member:CreateChannelMembershipResponse' :: Maybe Identity
member = forall a. Maybe a
Prelude.Nothing,
      $sel:subChannelId:CreateChannelMembershipResponse' :: Maybe Text
subChannelId = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateChannelMembershipResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ARN of the channel.
createChannelMembershipResponse_channelArn :: Lens.Lens' CreateChannelMembershipResponse (Prelude.Maybe Prelude.Text)
createChannelMembershipResponse_channelArn :: Lens' CreateChannelMembershipResponse (Maybe Text)
createChannelMembershipResponse_channelArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChannelMembershipResponse' {Maybe Text
channelArn :: Maybe Text
$sel:channelArn:CreateChannelMembershipResponse' :: CreateChannelMembershipResponse -> Maybe Text
channelArn} -> Maybe Text
channelArn) (\s :: CreateChannelMembershipResponse
s@CreateChannelMembershipResponse' {} Maybe Text
a -> CreateChannelMembershipResponse
s {$sel:channelArn:CreateChannelMembershipResponse' :: Maybe Text
channelArn = Maybe Text
a} :: CreateChannelMembershipResponse)

-- | The ARN and metadata of the member being added.
createChannelMembershipResponse_member :: Lens.Lens' CreateChannelMembershipResponse (Prelude.Maybe Identity)
createChannelMembershipResponse_member :: Lens' CreateChannelMembershipResponse (Maybe Identity)
createChannelMembershipResponse_member = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChannelMembershipResponse' {Maybe Identity
member :: Maybe Identity
$sel:member:CreateChannelMembershipResponse' :: CreateChannelMembershipResponse -> Maybe Identity
member} -> Maybe Identity
member) (\s :: CreateChannelMembershipResponse
s@CreateChannelMembershipResponse' {} Maybe Identity
a -> CreateChannelMembershipResponse
s {$sel:member:CreateChannelMembershipResponse' :: Maybe Identity
member = Maybe Identity
a} :: CreateChannelMembershipResponse)

-- | The ID of the SubChannel in the response.
createChannelMembershipResponse_subChannelId :: Lens.Lens' CreateChannelMembershipResponse (Prelude.Maybe Prelude.Text)
createChannelMembershipResponse_subChannelId :: Lens' CreateChannelMembershipResponse (Maybe Text)
createChannelMembershipResponse_subChannelId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChannelMembershipResponse' {Maybe Text
subChannelId :: Maybe Text
$sel:subChannelId:CreateChannelMembershipResponse' :: CreateChannelMembershipResponse -> Maybe Text
subChannelId} -> Maybe Text
subChannelId) (\s :: CreateChannelMembershipResponse
s@CreateChannelMembershipResponse' {} Maybe Text
a -> CreateChannelMembershipResponse
s {$sel:subChannelId:CreateChannelMembershipResponse' :: Maybe Text
subChannelId = Maybe Text
a} :: CreateChannelMembershipResponse)

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

instance
  Prelude.NFData
    CreateChannelMembershipResponse
  where
  rnf :: CreateChannelMembershipResponse -> ()
rnf CreateChannelMembershipResponse' {Int
Maybe Text
Maybe Identity
httpStatus :: Int
subChannelId :: Maybe Text
member :: Maybe Identity
channelArn :: Maybe Text
$sel:httpStatus:CreateChannelMembershipResponse' :: CreateChannelMembershipResponse -> Int
$sel:subChannelId:CreateChannelMembershipResponse' :: CreateChannelMembershipResponse -> Maybe Text
$sel:member:CreateChannelMembershipResponse' :: CreateChannelMembershipResponse -> Maybe Identity
$sel:channelArn:CreateChannelMembershipResponse' :: CreateChannelMembershipResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
channelArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Identity
member
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
subChannelId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus