{-# 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.ListChannelMemberships
-- 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 all channel memberships in a channel.
--
-- 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.
--
-- If you want to list the channels to which a specific app instance user
-- belongs, see the
-- <https://docs.aws.amazon.com/chime/latest/APIReference/API_messaging-chime_ListChannelMembershipsForAppInstanceUser.html ListChannelMembershipsForAppInstanceUser>
-- API.
module Amazonka.ChimeSDKMessaging.ListChannelMemberships
  ( -- * Creating a Request
    ListChannelMemberships (..),
    newListChannelMemberships,

    -- * Request Lenses
    listChannelMemberships_maxResults,
    listChannelMemberships_nextToken,
    listChannelMemberships_subChannelId,
    listChannelMemberships_type,
    listChannelMemberships_channelArn,
    listChannelMemberships_chimeBearer,

    -- * Destructuring the Response
    ListChannelMembershipsResponse (..),
    newListChannelMembershipsResponse,

    -- * Response Lenses
    listChannelMembershipsResponse_channelArn,
    listChannelMembershipsResponse_channelMemberships,
    listChannelMembershipsResponse_nextToken,
    listChannelMembershipsResponse_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:/ 'newListChannelMemberships' smart constructor.
data ListChannelMemberships = ListChannelMemberships'
  { -- | The maximum number of channel memberships that you want returned.
    ListChannelMemberships -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token passed by previous API calls until all requested channel
    -- memberships are returned.
    ListChannelMemberships -> Maybe (Sensitive Text)
nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The ID of the SubChannel in the request.
    --
    -- Only required when listing a user\'s memberships in a particular
    -- sub-channel of an elastic channel.
    ListChannelMemberships -> Maybe Text
subChannelId :: Prelude.Maybe Prelude.Text,
    -- | The membership type of a user, @DEFAULT@ or @HIDDEN@. Default members
    -- are returned as part of @ListChannelMemberships@ if no type is
    -- specified. Hidden members are only returned if the type filter in
    -- @ListChannelMemberships@ equals @HIDDEN@.
    ListChannelMemberships -> Maybe ChannelMembershipType
type' :: Prelude.Maybe ChannelMembershipType,
    -- | The maximum number of channel memberships that you want returned.
    ListChannelMemberships -> Text
channelArn :: Prelude.Text,
    -- | The @AppInstanceUserArn@ of the user that makes the API call.
    ListChannelMemberships -> Text
chimeBearer :: Prelude.Text
  }
  deriving (ListChannelMemberships -> ListChannelMemberships -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListChannelMemberships -> ListChannelMemberships -> Bool
$c/= :: ListChannelMemberships -> ListChannelMemberships -> Bool
== :: ListChannelMemberships -> ListChannelMemberships -> Bool
$c== :: ListChannelMemberships -> ListChannelMemberships -> Bool
Prelude.Eq, Int -> ListChannelMemberships -> ShowS
[ListChannelMemberships] -> ShowS
ListChannelMemberships -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListChannelMemberships] -> ShowS
$cshowList :: [ListChannelMemberships] -> ShowS
show :: ListChannelMemberships -> String
$cshow :: ListChannelMemberships -> String
showsPrec :: Int -> ListChannelMemberships -> ShowS
$cshowsPrec :: Int -> ListChannelMemberships -> ShowS
Prelude.Show, forall x. Rep ListChannelMemberships x -> ListChannelMemberships
forall x. ListChannelMemberships -> Rep ListChannelMemberships x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListChannelMemberships x -> ListChannelMemberships
$cfrom :: forall x. ListChannelMemberships -> Rep ListChannelMemberships x
Prelude.Generic)

-- |
-- Create a value of 'ListChannelMemberships' 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:
--
-- 'maxResults', 'listChannelMemberships_maxResults' - The maximum number of channel memberships that you want returned.
--
-- 'nextToken', 'listChannelMemberships_nextToken' - The token passed by previous API calls until all requested channel
-- memberships are returned.
--
-- 'subChannelId', 'listChannelMemberships_subChannelId' - The ID of the SubChannel in the request.
--
-- Only required when listing a user\'s memberships in a particular
-- sub-channel of an elastic channel.
--
-- 'type'', 'listChannelMemberships_type' - The membership type of a user, @DEFAULT@ or @HIDDEN@. Default members
-- are returned as part of @ListChannelMemberships@ if no type is
-- specified. Hidden members are only returned if the type filter in
-- @ListChannelMemberships@ equals @HIDDEN@.
--
-- 'channelArn', 'listChannelMemberships_channelArn' - The maximum number of channel memberships that you want returned.
--
-- 'chimeBearer', 'listChannelMemberships_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
newListChannelMemberships ::
  -- | 'channelArn'
  Prelude.Text ->
  -- | 'chimeBearer'
  Prelude.Text ->
  ListChannelMemberships
newListChannelMemberships :: Text -> Text -> ListChannelMemberships
newListChannelMemberships Text
pChannelArn_ Text
pChimeBearer_ =
  ListChannelMemberships'
    { $sel:maxResults:ListChannelMemberships' :: Maybe Natural
maxResults =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListChannelMemberships' :: Maybe (Sensitive Text)
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:subChannelId:ListChannelMemberships' :: Maybe Text
subChannelId = forall a. Maybe a
Prelude.Nothing,
      $sel:type':ListChannelMemberships' :: Maybe ChannelMembershipType
type' = forall a. Maybe a
Prelude.Nothing,
      $sel:channelArn:ListChannelMemberships' :: Text
channelArn = Text
pChannelArn_,
      $sel:chimeBearer:ListChannelMemberships' :: Text
chimeBearer = Text
pChimeBearer_
    }

-- | The maximum number of channel memberships that you want returned.
listChannelMemberships_maxResults :: Lens.Lens' ListChannelMemberships (Prelude.Maybe Prelude.Natural)
listChannelMemberships_maxResults :: Lens' ListChannelMemberships (Maybe Natural)
listChannelMemberships_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListChannelMemberships' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:ListChannelMemberships' :: ListChannelMemberships -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: ListChannelMemberships
s@ListChannelMemberships' {} Maybe Natural
a -> ListChannelMemberships
s {$sel:maxResults:ListChannelMemberships' :: Maybe Natural
maxResults = Maybe Natural
a} :: ListChannelMemberships)

-- | The token passed by previous API calls until all requested channel
-- memberships are returned.
listChannelMemberships_nextToken :: Lens.Lens' ListChannelMemberships (Prelude.Maybe Prelude.Text)
listChannelMemberships_nextToken :: Lens' ListChannelMemberships (Maybe Text)
listChannelMemberships_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListChannelMemberships' {Maybe (Sensitive Text)
nextToken :: Maybe (Sensitive Text)
$sel:nextToken:ListChannelMemberships' :: ListChannelMemberships -> Maybe (Sensitive Text)
nextToken} -> Maybe (Sensitive Text)
nextToken) (\s :: ListChannelMemberships
s@ListChannelMemberships' {} Maybe (Sensitive Text)
a -> ListChannelMemberships
s {$sel:nextToken:ListChannelMemberships' :: Maybe (Sensitive Text)
nextToken = Maybe (Sensitive Text)
a} :: ListChannelMemberships) 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 a. Iso' (Sensitive a) a
Data._Sensitive

-- | The ID of the SubChannel in the request.
--
-- Only required when listing a user\'s memberships in a particular
-- sub-channel of an elastic channel.
listChannelMemberships_subChannelId :: Lens.Lens' ListChannelMemberships (Prelude.Maybe Prelude.Text)
listChannelMemberships_subChannelId :: Lens' ListChannelMemberships (Maybe Text)
listChannelMemberships_subChannelId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListChannelMemberships' {Maybe Text
subChannelId :: Maybe Text
$sel:subChannelId:ListChannelMemberships' :: ListChannelMemberships -> Maybe Text
subChannelId} -> Maybe Text
subChannelId) (\s :: ListChannelMemberships
s@ListChannelMemberships' {} Maybe Text
a -> ListChannelMemberships
s {$sel:subChannelId:ListChannelMemberships' :: Maybe Text
subChannelId = Maybe Text
a} :: ListChannelMemberships)

-- | The membership type of a user, @DEFAULT@ or @HIDDEN@. Default members
-- are returned as part of @ListChannelMemberships@ if no type is
-- specified. Hidden members are only returned if the type filter in
-- @ListChannelMemberships@ equals @HIDDEN@.
listChannelMemberships_type :: Lens.Lens' ListChannelMemberships (Prelude.Maybe ChannelMembershipType)
listChannelMemberships_type :: Lens' ListChannelMemberships (Maybe ChannelMembershipType)
listChannelMemberships_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListChannelMemberships' {Maybe ChannelMembershipType
type' :: Maybe ChannelMembershipType
$sel:type':ListChannelMemberships' :: ListChannelMemberships -> Maybe ChannelMembershipType
type'} -> Maybe ChannelMembershipType
type') (\s :: ListChannelMemberships
s@ListChannelMemberships' {} Maybe ChannelMembershipType
a -> ListChannelMemberships
s {$sel:type':ListChannelMemberships' :: Maybe ChannelMembershipType
type' = Maybe ChannelMembershipType
a} :: ListChannelMemberships)

-- | The maximum number of channel memberships that you want returned.
listChannelMemberships_channelArn :: Lens.Lens' ListChannelMemberships Prelude.Text
listChannelMemberships_channelArn :: Lens' ListChannelMemberships Text
listChannelMemberships_channelArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListChannelMemberships' {Text
channelArn :: Text
$sel:channelArn:ListChannelMemberships' :: ListChannelMemberships -> Text
channelArn} -> Text
channelArn) (\s :: ListChannelMemberships
s@ListChannelMemberships' {} Text
a -> ListChannelMemberships
s {$sel:channelArn:ListChannelMemberships' :: Text
channelArn = Text
a} :: ListChannelMemberships)

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

instance Core.AWSRequest ListChannelMemberships where
  type
    AWSResponse ListChannelMemberships =
      ListChannelMembershipsResponse
  request :: (Service -> Service)
-> ListChannelMemberships -> Request ListChannelMemberships
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 ListChannelMemberships
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListChannelMemberships)))
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 [ChannelMembershipSummary]
-> Maybe (Sensitive Text)
-> Int
-> ListChannelMembershipsResponse
ListChannelMembershipsResponse'
            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
"ChannelMemberships"
                            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 ListChannelMemberships where
  hashWithSalt :: Int -> ListChannelMemberships -> Int
hashWithSalt Int
_salt ListChannelMemberships' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe ChannelMembershipType
Text
chimeBearer :: Text
channelArn :: Text
type' :: Maybe ChannelMembershipType
subChannelId :: Maybe Text
nextToken :: Maybe (Sensitive Text)
maxResults :: Maybe Natural
$sel:chimeBearer:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:channelArn:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:type':ListChannelMemberships' :: ListChannelMemberships -> Maybe ChannelMembershipType
$sel:subChannelId:ListChannelMemberships' :: ListChannelMemberships -> Maybe Text
$sel:nextToken:ListChannelMemberships' :: ListChannelMemberships -> Maybe (Sensitive Text)
$sel:maxResults:ListChannelMemberships' :: ListChannelMemberships -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
subChannelId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ChannelMembershipType
type'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
channelArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
chimeBearer

instance Prelude.NFData ListChannelMemberships where
  rnf :: ListChannelMemberships -> ()
rnf ListChannelMemberships' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe ChannelMembershipType
Text
chimeBearer :: Text
channelArn :: Text
type' :: Maybe ChannelMembershipType
subChannelId :: Maybe Text
nextToken :: Maybe (Sensitive Text)
maxResults :: Maybe Natural
$sel:chimeBearer:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:channelArn:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:type':ListChannelMemberships' :: ListChannelMemberships -> Maybe ChannelMembershipType
$sel:subChannelId:ListChannelMemberships' :: ListChannelMemberships -> Maybe Text
$sel:nextToken:ListChannelMemberships' :: ListChannelMemberships -> Maybe (Sensitive Text)
$sel:maxResults:ListChannelMemberships' :: ListChannelMemberships -> Maybe Natural
..} =
    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 (Sensitive Text)
nextToken
      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 Maybe ChannelMembershipType
type'
      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
chimeBearer

instance Data.ToHeaders ListChannelMemberships where
  toHeaders :: ListChannelMemberships -> ResponseHeaders
toHeaders ListChannelMemberships' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe ChannelMembershipType
Text
chimeBearer :: Text
channelArn :: Text
type' :: Maybe ChannelMembershipType
subChannelId :: Maybe Text
nextToken :: Maybe (Sensitive Text)
maxResults :: Maybe Natural
$sel:chimeBearer:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:channelArn:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:type':ListChannelMemberships' :: ListChannelMemberships -> Maybe ChannelMembershipType
$sel:subChannelId:ListChannelMemberships' :: ListChannelMemberships -> Maybe Text
$sel:nextToken:ListChannelMemberships' :: ListChannelMemberships -> Maybe (Sensitive Text)
$sel:maxResults:ListChannelMemberships' :: ListChannelMemberships -> Maybe Natural
..} =
    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.ToPath ListChannelMemberships where
  toPath :: ListChannelMemberships -> ByteString
toPath ListChannelMemberships' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe ChannelMembershipType
Text
chimeBearer :: Text
channelArn :: Text
type' :: Maybe ChannelMembershipType
subChannelId :: Maybe Text
nextToken :: Maybe (Sensitive Text)
maxResults :: Maybe Natural
$sel:chimeBearer:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:channelArn:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:type':ListChannelMemberships' :: ListChannelMemberships -> Maybe ChannelMembershipType
$sel:subChannelId:ListChannelMemberships' :: ListChannelMemberships -> Maybe Text
$sel:nextToken:ListChannelMemberships' :: ListChannelMemberships -> Maybe (Sensitive Text)
$sel:maxResults:ListChannelMemberships' :: ListChannelMemberships -> Maybe Natural
..} =
    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 ListChannelMemberships where
  toQuery :: ListChannelMemberships -> QueryString
toQuery ListChannelMemberships' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe ChannelMembershipType
Text
chimeBearer :: Text
channelArn :: Text
type' :: Maybe ChannelMembershipType
subChannelId :: Maybe Text
nextToken :: Maybe (Sensitive Text)
maxResults :: Maybe Natural
$sel:chimeBearer:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:channelArn:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:type':ListChannelMemberships' :: ListChannelMemberships -> Maybe ChannelMembershipType
$sel:subChannelId:ListChannelMemberships' :: ListChannelMemberships -> Maybe Text
$sel:nextToken:ListChannelMemberships' :: ListChannelMemberships -> Maybe (Sensitive Text)
$sel:maxResults:ListChannelMemberships' :: ListChannelMemberships -> Maybe Natural
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ 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 (Sensitive Text)
nextToken,
        ByteString
"sub-channel-id" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
subChannelId,
        ByteString
"type" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ChannelMembershipType
type'
      ]

-- | /See:/ 'newListChannelMembershipsResponse' smart constructor.
data ListChannelMembershipsResponse = ListChannelMembershipsResponse'
  { -- | The ARN of the channel.
    ListChannelMembershipsResponse -> Maybe Text
channelArn :: Prelude.Maybe Prelude.Text,
    -- | The information for the requested channel memberships.
    ListChannelMembershipsResponse -> Maybe [ChannelMembershipSummary]
channelMemberships :: Prelude.Maybe [ChannelMembershipSummary],
    -- | The token passed by previous API calls until all requested channel
    -- memberships are returned.
    ListChannelMembershipsResponse -> Maybe (Sensitive Text)
nextToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The response's http status code.
    ListChannelMembershipsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListChannelMembershipsResponse
-> ListChannelMembershipsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListChannelMembershipsResponse
-> ListChannelMembershipsResponse -> Bool
$c/= :: ListChannelMembershipsResponse
-> ListChannelMembershipsResponse -> Bool
== :: ListChannelMembershipsResponse
-> ListChannelMembershipsResponse -> Bool
$c== :: ListChannelMembershipsResponse
-> ListChannelMembershipsResponse -> Bool
Prelude.Eq, Int -> ListChannelMembershipsResponse -> ShowS
[ListChannelMembershipsResponse] -> ShowS
ListChannelMembershipsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListChannelMembershipsResponse] -> ShowS
$cshowList :: [ListChannelMembershipsResponse] -> ShowS
show :: ListChannelMembershipsResponse -> String
$cshow :: ListChannelMembershipsResponse -> String
showsPrec :: Int -> ListChannelMembershipsResponse -> ShowS
$cshowsPrec :: Int -> ListChannelMembershipsResponse -> ShowS
Prelude.Show, forall x.
Rep ListChannelMembershipsResponse x
-> ListChannelMembershipsResponse
forall x.
ListChannelMembershipsResponse
-> Rep ListChannelMembershipsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListChannelMembershipsResponse x
-> ListChannelMembershipsResponse
$cfrom :: forall x.
ListChannelMembershipsResponse
-> Rep ListChannelMembershipsResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListChannelMembershipsResponse' 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', 'listChannelMembershipsResponse_channelArn' - The ARN of the channel.
--
-- 'channelMemberships', 'listChannelMembershipsResponse_channelMemberships' - The information for the requested channel memberships.
--
-- 'nextToken', 'listChannelMembershipsResponse_nextToken' - The token passed by previous API calls until all requested channel
-- memberships are returned.
--
-- 'httpStatus', 'listChannelMembershipsResponse_httpStatus' - The response's http status code.
newListChannelMembershipsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListChannelMembershipsResponse
newListChannelMembershipsResponse :: Int -> ListChannelMembershipsResponse
newListChannelMembershipsResponse Int
pHttpStatus_ =
  ListChannelMembershipsResponse'
    { $sel:channelArn:ListChannelMembershipsResponse' :: Maybe Text
channelArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:channelMemberships:ListChannelMembershipsResponse' :: Maybe [ChannelMembershipSummary]
channelMemberships = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListChannelMembershipsResponse' :: Maybe (Sensitive Text)
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListChannelMembershipsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

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

-- | The information for the requested channel memberships.
listChannelMembershipsResponse_channelMemberships :: Lens.Lens' ListChannelMembershipsResponse (Prelude.Maybe [ChannelMembershipSummary])
listChannelMembershipsResponse_channelMemberships :: Lens'
  ListChannelMembershipsResponse (Maybe [ChannelMembershipSummary])
listChannelMembershipsResponse_channelMemberships = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListChannelMembershipsResponse' {Maybe [ChannelMembershipSummary]
channelMemberships :: Maybe [ChannelMembershipSummary]
$sel:channelMemberships:ListChannelMembershipsResponse' :: ListChannelMembershipsResponse -> Maybe [ChannelMembershipSummary]
channelMemberships} -> Maybe [ChannelMembershipSummary]
channelMemberships) (\s :: ListChannelMembershipsResponse
s@ListChannelMembershipsResponse' {} Maybe [ChannelMembershipSummary]
a -> ListChannelMembershipsResponse
s {$sel:channelMemberships:ListChannelMembershipsResponse' :: Maybe [ChannelMembershipSummary]
channelMemberships = Maybe [ChannelMembershipSummary]
a} :: ListChannelMembershipsResponse) 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 token passed by previous API calls until all requested channel
-- memberships are returned.
listChannelMembershipsResponse_nextToken :: Lens.Lens' ListChannelMembershipsResponse (Prelude.Maybe Prelude.Text)
listChannelMembershipsResponse_nextToken :: Lens' ListChannelMembershipsResponse (Maybe Text)
listChannelMembershipsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListChannelMembershipsResponse' {Maybe (Sensitive Text)
nextToken :: Maybe (Sensitive Text)
$sel:nextToken:ListChannelMembershipsResponse' :: ListChannelMembershipsResponse -> Maybe (Sensitive Text)
nextToken} -> Maybe (Sensitive Text)
nextToken) (\s :: ListChannelMembershipsResponse
s@ListChannelMembershipsResponse' {} Maybe (Sensitive Text)
a -> ListChannelMembershipsResponse
s {$sel:nextToken:ListChannelMembershipsResponse' :: Maybe (Sensitive Text)
nextToken = Maybe (Sensitive Text)
a} :: ListChannelMembershipsResponse) 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 a. Iso' (Sensitive a) a
Data._Sensitive

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

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