{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Chime.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.
module Amazonka.Chime.ListChannelMemberships
  ( -- * Creating a Request
    ListChannelMemberships (..),
    newListChannelMemberships,

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

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

    -- * Response Lenses
    listChannelMembershipsResponse_channelArn,
    listChannelMembershipsResponse_channelMemberships,
    listChannelMembershipsResponse_nextToken,
    listChannelMembershipsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newListChannelMemberships' smart constructor.
data ListChannelMemberships = ListChannelMemberships'
  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
    ListChannelMemberships -> Maybe Text
chimeBearer :: Prelude.Maybe Prelude.Text,
    -- | 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 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.
    ListChannelMemberships -> Maybe ChannelMembershipType
type' :: Prelude.Maybe ChannelMembershipType,
    -- | The maximum number of channel memberships that you want returned.
    ListChannelMemberships -> Text
channelArn :: 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:
--
-- 'chimeBearer', 'listChannelMemberships_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
--
-- '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.
--
-- 'type'', 'listChannelMemberships_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.
--
-- 'channelArn', 'listChannelMemberships_channelArn' - The maximum number of channel memberships that you want returned.
newListChannelMemberships ::
  -- | 'channelArn'
  Prelude.Text ->
  ListChannelMemberships
newListChannelMemberships :: Text -> ListChannelMemberships
newListChannelMemberships Text
pChannelArn_ =
  ListChannelMemberships'
    { $sel:chimeBearer:ListChannelMemberships' :: Maybe Text
chimeBearer =
        forall a. Maybe a
Prelude.Nothing,
      $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:type':ListChannelMemberships' :: Maybe ChannelMembershipType
type' = forall a. Maybe a
Prelude.Nothing,
      $sel:channelArn:ListChannelMemberships' :: Text
channelArn = Text
pChannelArn_
    }

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

-- | 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 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.
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)

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
channelArn :: Text
type' :: Maybe ChannelMembershipType
nextToken :: Maybe (Sensitive Text)
maxResults :: Maybe Natural
chimeBearer :: Maybe Text
$sel:channelArn:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:type':ListChannelMemberships' :: ListChannelMemberships -> Maybe ChannelMembershipType
$sel:nextToken:ListChannelMemberships' :: ListChannelMemberships -> Maybe (Sensitive Text)
$sel:maxResults:ListChannelMemberships' :: ListChannelMemberships -> Maybe Natural
$sel:chimeBearer:ListChannelMemberships' :: ListChannelMemberships -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
chimeBearer
      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 ChannelMembershipType
type'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
channelArn

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

instance Data.ToHeaders ListChannelMemberships where
  toHeaders :: ListChannelMemberships -> ResponseHeaders
toHeaders ListChannelMemberships' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe ChannelMembershipType
Text
channelArn :: Text
type' :: Maybe ChannelMembershipType
nextToken :: Maybe (Sensitive Text)
maxResults :: Maybe Natural
chimeBearer :: Maybe Text
$sel:channelArn:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:type':ListChannelMemberships' :: ListChannelMemberships -> Maybe ChannelMembershipType
$sel:nextToken:ListChannelMemberships' :: ListChannelMemberships -> Maybe (Sensitive Text)
$sel:maxResults:ListChannelMemberships' :: ListChannelMemberships -> Maybe Natural
$sel:chimeBearer:ListChannelMemberships' :: ListChannelMemberships -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [HeaderName
"x-amz-chime-bearer" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Maybe Text
chimeBearer]

instance Data.ToPath ListChannelMemberships where
  toPath :: ListChannelMemberships -> ByteString
toPath ListChannelMemberships' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe ChannelMembershipType
Text
channelArn :: Text
type' :: Maybe ChannelMembershipType
nextToken :: Maybe (Sensitive Text)
maxResults :: Maybe Natural
chimeBearer :: Maybe Text
$sel:channelArn:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:type':ListChannelMemberships' :: ListChannelMemberships -> Maybe ChannelMembershipType
$sel:nextToken:ListChannelMemberships' :: ListChannelMemberships -> Maybe (Sensitive Text)
$sel:maxResults:ListChannelMemberships' :: ListChannelMemberships -> Maybe Natural
$sel:chimeBearer:ListChannelMemberships' :: ListChannelMemberships -> 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 ListChannelMemberships where
  toQuery :: ListChannelMemberships -> QueryString
toQuery ListChannelMemberships' {Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe ChannelMembershipType
Text
channelArn :: Text
type' :: Maybe ChannelMembershipType
nextToken :: Maybe (Sensitive Text)
maxResults :: Maybe Natural
chimeBearer :: Maybe Text
$sel:channelArn:ListChannelMemberships' :: ListChannelMemberships -> Text
$sel:type':ListChannelMemberships' :: ListChannelMemberships -> Maybe ChannelMembershipType
$sel:nextToken:ListChannelMemberships' :: ListChannelMemberships -> Maybe (Sensitive Text)
$sel:maxResults:ListChannelMemberships' :: ListChannelMemberships -> Maybe Natural
$sel:chimeBearer:ListChannelMemberships' :: ListChannelMemberships -> Maybe Text
..} =
    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
"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