{-# 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.Cloud9.DescribeEnvironmentMemberships
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets information about environment members for an Cloud9 development
-- environment.
--
-- This operation returns paginated results.
module Amazonka.Cloud9.DescribeEnvironmentMemberships
  ( -- * Creating a Request
    DescribeEnvironmentMemberships (..),
    newDescribeEnvironmentMemberships,

    -- * Request Lenses
    describeEnvironmentMemberships_environmentId,
    describeEnvironmentMemberships_maxResults,
    describeEnvironmentMemberships_nextToken,
    describeEnvironmentMemberships_permissions,
    describeEnvironmentMemberships_userArn,

    -- * Destructuring the Response
    DescribeEnvironmentMembershipsResponse (..),
    newDescribeEnvironmentMembershipsResponse,

    -- * Response Lenses
    describeEnvironmentMembershipsResponse_memberships,
    describeEnvironmentMembershipsResponse_nextToken,
    describeEnvironmentMembershipsResponse_httpStatus,
  )
where

import Amazonka.Cloud9.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:/ 'newDescribeEnvironmentMemberships' smart constructor.
data DescribeEnvironmentMemberships = DescribeEnvironmentMemberships'
  { -- | The ID of the environment to get environment member information about.
    DescribeEnvironmentMemberships -> Maybe Text
environmentId :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of environment members to get information about.
    DescribeEnvironmentMemberships -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | During a previous call, if there are more than 25 items in the list,
    -- only the first 25 items are returned, along with a unique string called
    -- a /next token/. To get the next batch of items in the list, call this
    -- operation again, adding the next token to the call. To get all of the
    -- items in the list, keep calling this operation with each subsequent next
    -- token that is returned, until no more next tokens are returned.
    DescribeEnvironmentMemberships -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The type of environment member permissions to get information about.
    -- Available values include:
    --
    -- -   @owner@: Owns the environment.
    --
    -- -   @read-only@: Has read-only access to the environment.
    --
    -- -   @read-write@: Has read-write access to the environment.
    --
    -- If no value is specified, information about all environment members are
    -- returned.
    DescribeEnvironmentMemberships -> Maybe [Permissions]
permissions :: Prelude.Maybe [Permissions],
    -- | The Amazon Resource Name (ARN) of an individual environment member to
    -- get information about. If no value is specified, information about all
    -- environment members are returned.
    DescribeEnvironmentMemberships -> Maybe Text
userArn :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeEnvironmentMemberships
-> DescribeEnvironmentMemberships -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeEnvironmentMemberships
-> DescribeEnvironmentMemberships -> Bool
$c/= :: DescribeEnvironmentMemberships
-> DescribeEnvironmentMemberships -> Bool
== :: DescribeEnvironmentMemberships
-> DescribeEnvironmentMemberships -> Bool
$c== :: DescribeEnvironmentMemberships
-> DescribeEnvironmentMemberships -> Bool
Prelude.Eq, ReadPrec [DescribeEnvironmentMemberships]
ReadPrec DescribeEnvironmentMemberships
Int -> ReadS DescribeEnvironmentMemberships
ReadS [DescribeEnvironmentMemberships]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeEnvironmentMemberships]
$creadListPrec :: ReadPrec [DescribeEnvironmentMemberships]
readPrec :: ReadPrec DescribeEnvironmentMemberships
$creadPrec :: ReadPrec DescribeEnvironmentMemberships
readList :: ReadS [DescribeEnvironmentMemberships]
$creadList :: ReadS [DescribeEnvironmentMemberships]
readsPrec :: Int -> ReadS DescribeEnvironmentMemberships
$creadsPrec :: Int -> ReadS DescribeEnvironmentMemberships
Prelude.Read, Int -> DescribeEnvironmentMemberships -> ShowS
[DescribeEnvironmentMemberships] -> ShowS
DescribeEnvironmentMemberships -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeEnvironmentMemberships] -> ShowS
$cshowList :: [DescribeEnvironmentMemberships] -> ShowS
show :: DescribeEnvironmentMemberships -> String
$cshow :: DescribeEnvironmentMemberships -> String
showsPrec :: Int -> DescribeEnvironmentMemberships -> ShowS
$cshowsPrec :: Int -> DescribeEnvironmentMemberships -> ShowS
Prelude.Show, forall x.
Rep DescribeEnvironmentMemberships x
-> DescribeEnvironmentMemberships
forall x.
DescribeEnvironmentMemberships
-> Rep DescribeEnvironmentMemberships x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeEnvironmentMemberships x
-> DescribeEnvironmentMemberships
$cfrom :: forall x.
DescribeEnvironmentMemberships
-> Rep DescribeEnvironmentMemberships x
Prelude.Generic)

-- |
-- Create a value of 'DescribeEnvironmentMemberships' 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:
--
-- 'environmentId', 'describeEnvironmentMemberships_environmentId' - The ID of the environment to get environment member information about.
--
-- 'maxResults', 'describeEnvironmentMemberships_maxResults' - The maximum number of environment members to get information about.
--
-- 'nextToken', 'describeEnvironmentMemberships_nextToken' - During a previous call, if there are more than 25 items in the list,
-- only the first 25 items are returned, along with a unique string called
-- a /next token/. To get the next batch of items in the list, call this
-- operation again, adding the next token to the call. To get all of the
-- items in the list, keep calling this operation with each subsequent next
-- token that is returned, until no more next tokens are returned.
--
-- 'permissions', 'describeEnvironmentMemberships_permissions' - The type of environment member permissions to get information about.
-- Available values include:
--
-- -   @owner@: Owns the environment.
--
-- -   @read-only@: Has read-only access to the environment.
--
-- -   @read-write@: Has read-write access to the environment.
--
-- If no value is specified, information about all environment members are
-- returned.
--
-- 'userArn', 'describeEnvironmentMemberships_userArn' - The Amazon Resource Name (ARN) of an individual environment member to
-- get information about. If no value is specified, information about all
-- environment members are returned.
newDescribeEnvironmentMemberships ::
  DescribeEnvironmentMemberships
newDescribeEnvironmentMemberships :: DescribeEnvironmentMemberships
newDescribeEnvironmentMemberships =
  DescribeEnvironmentMemberships'
    { $sel:environmentId:DescribeEnvironmentMemberships' :: Maybe Text
environmentId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:DescribeEnvironmentMemberships' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeEnvironmentMemberships' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:permissions:DescribeEnvironmentMemberships' :: Maybe [Permissions]
permissions = forall a. Maybe a
Prelude.Nothing,
      $sel:userArn:DescribeEnvironmentMemberships' :: Maybe Text
userArn = forall a. Maybe a
Prelude.Nothing
    }

-- | The ID of the environment to get environment member information about.
describeEnvironmentMemberships_environmentId :: Lens.Lens' DescribeEnvironmentMemberships (Prelude.Maybe Prelude.Text)
describeEnvironmentMemberships_environmentId :: Lens' DescribeEnvironmentMemberships (Maybe Text)
describeEnvironmentMemberships_environmentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentMemberships' {Maybe Text
environmentId :: Maybe Text
$sel:environmentId:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Text
environmentId} -> Maybe Text
environmentId) (\s :: DescribeEnvironmentMemberships
s@DescribeEnvironmentMemberships' {} Maybe Text
a -> DescribeEnvironmentMemberships
s {$sel:environmentId:DescribeEnvironmentMemberships' :: Maybe Text
environmentId = Maybe Text
a} :: DescribeEnvironmentMemberships)

-- | The maximum number of environment members to get information about.
describeEnvironmentMemberships_maxResults :: Lens.Lens' DescribeEnvironmentMemberships (Prelude.Maybe Prelude.Natural)
describeEnvironmentMemberships_maxResults :: Lens' DescribeEnvironmentMemberships (Maybe Natural)
describeEnvironmentMemberships_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentMemberships' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeEnvironmentMemberships
s@DescribeEnvironmentMemberships' {} Maybe Natural
a -> DescribeEnvironmentMemberships
s {$sel:maxResults:DescribeEnvironmentMemberships' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeEnvironmentMemberships)

-- | During a previous call, if there are more than 25 items in the list,
-- only the first 25 items are returned, along with a unique string called
-- a /next token/. To get the next batch of items in the list, call this
-- operation again, adding the next token to the call. To get all of the
-- items in the list, keep calling this operation with each subsequent next
-- token that is returned, until no more next tokens are returned.
describeEnvironmentMemberships_nextToken :: Lens.Lens' DescribeEnvironmentMemberships (Prelude.Maybe Prelude.Text)
describeEnvironmentMemberships_nextToken :: Lens' DescribeEnvironmentMemberships (Maybe Text)
describeEnvironmentMemberships_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentMemberships' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeEnvironmentMemberships
s@DescribeEnvironmentMemberships' {} Maybe Text
a -> DescribeEnvironmentMemberships
s {$sel:nextToken:DescribeEnvironmentMemberships' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeEnvironmentMemberships)

-- | The type of environment member permissions to get information about.
-- Available values include:
--
-- -   @owner@: Owns the environment.
--
-- -   @read-only@: Has read-only access to the environment.
--
-- -   @read-write@: Has read-write access to the environment.
--
-- If no value is specified, information about all environment members are
-- returned.
describeEnvironmentMemberships_permissions :: Lens.Lens' DescribeEnvironmentMemberships (Prelude.Maybe [Permissions])
describeEnvironmentMemberships_permissions :: Lens' DescribeEnvironmentMemberships (Maybe [Permissions])
describeEnvironmentMemberships_permissions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentMemberships' {Maybe [Permissions]
permissions :: Maybe [Permissions]
$sel:permissions:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe [Permissions]
permissions} -> Maybe [Permissions]
permissions) (\s :: DescribeEnvironmentMemberships
s@DescribeEnvironmentMemberships' {} Maybe [Permissions]
a -> DescribeEnvironmentMemberships
s {$sel:permissions:DescribeEnvironmentMemberships' :: Maybe [Permissions]
permissions = Maybe [Permissions]
a} :: DescribeEnvironmentMemberships) 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 Amazon Resource Name (ARN) of an individual environment member to
-- get information about. If no value is specified, information about all
-- environment members are returned.
describeEnvironmentMemberships_userArn :: Lens.Lens' DescribeEnvironmentMemberships (Prelude.Maybe Prelude.Text)
describeEnvironmentMemberships_userArn :: Lens' DescribeEnvironmentMemberships (Maybe Text)
describeEnvironmentMemberships_userArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentMemberships' {Maybe Text
userArn :: Maybe Text
$sel:userArn:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Text
userArn} -> Maybe Text
userArn) (\s :: DescribeEnvironmentMemberships
s@DescribeEnvironmentMemberships' {} Maybe Text
a -> DescribeEnvironmentMemberships
s {$sel:userArn:DescribeEnvironmentMemberships' :: Maybe Text
userArn = Maybe Text
a} :: DescribeEnvironmentMemberships)

instance Core.AWSPager DescribeEnvironmentMemberships where
  page :: DescribeEnvironmentMemberships
-> AWSResponse DescribeEnvironmentMemberships
-> Maybe DescribeEnvironmentMemberships
page DescribeEnvironmentMemberships
rq AWSResponse DescribeEnvironmentMemberships
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeEnvironmentMemberships
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeEnvironmentMembershipsResponse (Maybe Text)
describeEnvironmentMembershipsResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeEnvironmentMemberships
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeEnvironmentMembershipsResponse (Maybe [EnvironmentMember])
describeEnvironmentMembershipsResponse_memberships
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeEnvironmentMemberships
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeEnvironmentMemberships (Maybe Text)
describeEnvironmentMemberships_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeEnvironmentMemberships
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeEnvironmentMembershipsResponse (Maybe Text)
describeEnvironmentMembershipsResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance
  Core.AWSRequest
    DescribeEnvironmentMemberships
  where
  type
    AWSResponse DescribeEnvironmentMemberships =
      DescribeEnvironmentMembershipsResponse
  request :: (Service -> Service)
-> DescribeEnvironmentMemberships
-> Request DescribeEnvironmentMemberships
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 DescribeEnvironmentMemberships
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DescribeEnvironmentMemberships)))
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 [EnvironmentMember]
-> Maybe Text -> Int -> DescribeEnvironmentMembershipsResponse
DescribeEnvironmentMembershipsResponse'
            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
"memberships" 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
    DescribeEnvironmentMemberships
  where
  hashWithSalt :: Int -> DescribeEnvironmentMemberships -> Int
hashWithSalt
    Int
_salt
    DescribeEnvironmentMemberships' {Maybe Natural
Maybe [Permissions]
Maybe Text
userArn :: Maybe Text
permissions :: Maybe [Permissions]
nextToken :: Maybe Text
maxResults :: Maybe Natural
environmentId :: Maybe Text
$sel:userArn:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Text
$sel:permissions:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe [Permissions]
$sel:nextToken:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Text
$sel:maxResults:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Natural
$sel:environmentId:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
environmentId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Permissions]
permissions
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
userArn

instance
  Prelude.NFData
    DescribeEnvironmentMemberships
  where
  rnf :: DescribeEnvironmentMemberships -> ()
rnf DescribeEnvironmentMemberships' {Maybe Natural
Maybe [Permissions]
Maybe Text
userArn :: Maybe Text
permissions :: Maybe [Permissions]
nextToken :: Maybe Text
maxResults :: Maybe Natural
environmentId :: Maybe Text
$sel:userArn:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Text
$sel:permissions:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe [Permissions]
$sel:nextToken:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Text
$sel:maxResults:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Natural
$sel:environmentId:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
environmentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Permissions]
permissions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
userArn

instance
  Data.ToHeaders
    DescribeEnvironmentMemberships
  where
  toHeaders :: DescribeEnvironmentMemberships -> 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
"AWSCloud9WorkspaceManagementService.DescribeEnvironmentMemberships" ::
                          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 DescribeEnvironmentMemberships where
  toJSON :: DescribeEnvironmentMemberships -> Value
toJSON DescribeEnvironmentMemberships' {Maybe Natural
Maybe [Permissions]
Maybe Text
userArn :: Maybe Text
permissions :: Maybe [Permissions]
nextToken :: Maybe Text
maxResults :: Maybe Natural
environmentId :: Maybe Text
$sel:userArn:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Text
$sel:permissions:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe [Permissions]
$sel:nextToken:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Text
$sel:maxResults:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Natural
$sel:environmentId:DescribeEnvironmentMemberships' :: DescribeEnvironmentMemberships -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"environmentId" 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
environmentId,
            (Key
"maxResults" 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 Natural
maxResults,
            (Key
"nextToken" 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
nextToken,
            (Key
"permissions" 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 [Permissions]
permissions,
            (Key
"userArn" 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
userArn
          ]
      )

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

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

-- | /See:/ 'newDescribeEnvironmentMembershipsResponse' smart constructor.
data DescribeEnvironmentMembershipsResponse = DescribeEnvironmentMembershipsResponse'
  { -- | Information about the environment members for the environment.
    DescribeEnvironmentMembershipsResponse -> Maybe [EnvironmentMember]
memberships :: Prelude.Maybe [EnvironmentMember],
    -- | If there are more than 25 items in the list, only the first 25 items are
    -- returned, along with a unique string called a /next token/. To get the
    -- next batch of items in the list, call this operation again, adding the
    -- next token to the call.
    DescribeEnvironmentMembershipsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeEnvironmentMembershipsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeEnvironmentMembershipsResponse
-> DescribeEnvironmentMembershipsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeEnvironmentMembershipsResponse
-> DescribeEnvironmentMembershipsResponse -> Bool
$c/= :: DescribeEnvironmentMembershipsResponse
-> DescribeEnvironmentMembershipsResponse -> Bool
== :: DescribeEnvironmentMembershipsResponse
-> DescribeEnvironmentMembershipsResponse -> Bool
$c== :: DescribeEnvironmentMembershipsResponse
-> DescribeEnvironmentMembershipsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeEnvironmentMembershipsResponse]
ReadPrec DescribeEnvironmentMembershipsResponse
Int -> ReadS DescribeEnvironmentMembershipsResponse
ReadS [DescribeEnvironmentMembershipsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeEnvironmentMembershipsResponse]
$creadListPrec :: ReadPrec [DescribeEnvironmentMembershipsResponse]
readPrec :: ReadPrec DescribeEnvironmentMembershipsResponse
$creadPrec :: ReadPrec DescribeEnvironmentMembershipsResponse
readList :: ReadS [DescribeEnvironmentMembershipsResponse]
$creadList :: ReadS [DescribeEnvironmentMembershipsResponse]
readsPrec :: Int -> ReadS DescribeEnvironmentMembershipsResponse
$creadsPrec :: Int -> ReadS DescribeEnvironmentMembershipsResponse
Prelude.Read, Int -> DescribeEnvironmentMembershipsResponse -> ShowS
[DescribeEnvironmentMembershipsResponse] -> ShowS
DescribeEnvironmentMembershipsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeEnvironmentMembershipsResponse] -> ShowS
$cshowList :: [DescribeEnvironmentMembershipsResponse] -> ShowS
show :: DescribeEnvironmentMembershipsResponse -> String
$cshow :: DescribeEnvironmentMembershipsResponse -> String
showsPrec :: Int -> DescribeEnvironmentMembershipsResponse -> ShowS
$cshowsPrec :: Int -> DescribeEnvironmentMembershipsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeEnvironmentMembershipsResponse x
-> DescribeEnvironmentMembershipsResponse
forall x.
DescribeEnvironmentMembershipsResponse
-> Rep DescribeEnvironmentMembershipsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeEnvironmentMembershipsResponse x
-> DescribeEnvironmentMembershipsResponse
$cfrom :: forall x.
DescribeEnvironmentMembershipsResponse
-> Rep DescribeEnvironmentMembershipsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeEnvironmentMembershipsResponse' 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:
--
-- 'memberships', 'describeEnvironmentMembershipsResponse_memberships' - Information about the environment members for the environment.
--
-- 'nextToken', 'describeEnvironmentMembershipsResponse_nextToken' - If there are more than 25 items in the list, only the first 25 items are
-- returned, along with a unique string called a /next token/. To get the
-- next batch of items in the list, call this operation again, adding the
-- next token to the call.
--
-- 'httpStatus', 'describeEnvironmentMembershipsResponse_httpStatus' - The response's http status code.
newDescribeEnvironmentMembershipsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeEnvironmentMembershipsResponse
newDescribeEnvironmentMembershipsResponse :: Int -> DescribeEnvironmentMembershipsResponse
newDescribeEnvironmentMembershipsResponse
  Int
pHttpStatus_ =
    DescribeEnvironmentMembershipsResponse'
      { $sel:memberships:DescribeEnvironmentMembershipsResponse' :: Maybe [EnvironmentMember]
memberships =
          forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:DescribeEnvironmentMembershipsResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeEnvironmentMembershipsResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | Information about the environment members for the environment.
describeEnvironmentMembershipsResponse_memberships :: Lens.Lens' DescribeEnvironmentMembershipsResponse (Prelude.Maybe [EnvironmentMember])
describeEnvironmentMembershipsResponse_memberships :: Lens'
  DescribeEnvironmentMembershipsResponse (Maybe [EnvironmentMember])
describeEnvironmentMembershipsResponse_memberships = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentMembershipsResponse' {Maybe [EnvironmentMember]
memberships :: Maybe [EnvironmentMember]
$sel:memberships:DescribeEnvironmentMembershipsResponse' :: DescribeEnvironmentMembershipsResponse -> Maybe [EnvironmentMember]
memberships} -> Maybe [EnvironmentMember]
memberships) (\s :: DescribeEnvironmentMembershipsResponse
s@DescribeEnvironmentMembershipsResponse' {} Maybe [EnvironmentMember]
a -> DescribeEnvironmentMembershipsResponse
s {$sel:memberships:DescribeEnvironmentMembershipsResponse' :: Maybe [EnvironmentMember]
memberships = Maybe [EnvironmentMember]
a} :: DescribeEnvironmentMembershipsResponse) 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

-- | If there are more than 25 items in the list, only the first 25 items are
-- returned, along with a unique string called a /next token/. To get the
-- next batch of items in the list, call this operation again, adding the
-- next token to the call.
describeEnvironmentMembershipsResponse_nextToken :: Lens.Lens' DescribeEnvironmentMembershipsResponse (Prelude.Maybe Prelude.Text)
describeEnvironmentMembershipsResponse_nextToken :: Lens' DescribeEnvironmentMembershipsResponse (Maybe Text)
describeEnvironmentMembershipsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentMembershipsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeEnvironmentMembershipsResponse' :: DescribeEnvironmentMembershipsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeEnvironmentMembershipsResponse
s@DescribeEnvironmentMembershipsResponse' {} Maybe Text
a -> DescribeEnvironmentMembershipsResponse
s {$sel:nextToken:DescribeEnvironmentMembershipsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeEnvironmentMembershipsResponse)

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

instance
  Prelude.NFData
    DescribeEnvironmentMembershipsResponse
  where
  rnf :: DescribeEnvironmentMembershipsResponse -> ()
rnf DescribeEnvironmentMembershipsResponse' {Int
Maybe [EnvironmentMember]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
memberships :: Maybe [EnvironmentMember]
$sel:httpStatus:DescribeEnvironmentMembershipsResponse' :: DescribeEnvironmentMembershipsResponse -> Int
$sel:nextToken:DescribeEnvironmentMembershipsResponse' :: DescribeEnvironmentMembershipsResponse -> Maybe Text
$sel:memberships:DescribeEnvironmentMembershipsResponse' :: DescribeEnvironmentMembershipsResponse -> Maybe [EnvironmentMember]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [EnvironmentMember]
memberships
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus