packages feed

amazonka-identitystore-2.0: gen/Amazonka/IdentityStore/DescribeGroupMembership.hs

{-# 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.IdentityStore.DescribeGroupMembership
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves membership metadata and attributes from @MembershipId@ in an
-- identity store.
module Amazonka.IdentityStore.DescribeGroupMembership
  ( -- * Creating a Request
    DescribeGroupMembership (..),
    newDescribeGroupMembership,

    -- * Request Lenses
    describeGroupMembership_identityStoreId,
    describeGroupMembership_membershipId,

    -- * Destructuring the Response
    DescribeGroupMembershipResponse (..),
    newDescribeGroupMembershipResponse,

    -- * Response Lenses
    describeGroupMembershipResponse_httpStatus,
    describeGroupMembershipResponse_identityStoreId,
    describeGroupMembershipResponse_membershipId,
    describeGroupMembershipResponse_groupId,
    describeGroupMembershipResponse_memberId,
  )
where

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

-- | /See:/ 'newDescribeGroupMembership' smart constructor.
data DescribeGroupMembership = DescribeGroupMembership'
  { -- | The globally unique identifier for the identity store.
    identityStoreId :: Prelude.Text,
    -- | The identifier for a @GroupMembership@ in an identity store.
    membershipId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DescribeGroupMembership' 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:
--
-- 'identityStoreId', 'describeGroupMembership_identityStoreId' - The globally unique identifier for the identity store.
--
-- 'membershipId', 'describeGroupMembership_membershipId' - The identifier for a @GroupMembership@ in an identity store.
newDescribeGroupMembership ::
  -- | 'identityStoreId'
  Prelude.Text ->
  -- | 'membershipId'
  Prelude.Text ->
  DescribeGroupMembership
newDescribeGroupMembership
  pIdentityStoreId_
  pMembershipId_ =
    DescribeGroupMembership'
      { identityStoreId =
          pIdentityStoreId_,
        membershipId = pMembershipId_
      }

-- | The globally unique identifier for the identity store.
describeGroupMembership_identityStoreId :: Lens.Lens' DescribeGroupMembership Prelude.Text
describeGroupMembership_identityStoreId = Lens.lens (\DescribeGroupMembership' {identityStoreId} -> identityStoreId) (\s@DescribeGroupMembership' {} a -> s {identityStoreId = a} :: DescribeGroupMembership)

-- | The identifier for a @GroupMembership@ in an identity store.
describeGroupMembership_membershipId :: Lens.Lens' DescribeGroupMembership Prelude.Text
describeGroupMembership_membershipId = Lens.lens (\DescribeGroupMembership' {membershipId} -> membershipId) (\s@DescribeGroupMembership' {} a -> s {membershipId = a} :: DescribeGroupMembership)

instance Core.AWSRequest DescribeGroupMembership where
  type
    AWSResponse DescribeGroupMembership =
      DescribeGroupMembershipResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          DescribeGroupMembershipResponse'
            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
            Prelude.<*> (x Data..:> "IdentityStoreId")
            Prelude.<*> (x Data..:> "MembershipId")
            Prelude.<*> (x Data..:> "GroupId")
            Prelude.<*> (x Data..:> "MemberId")
      )

instance Prelude.Hashable DescribeGroupMembership where
  hashWithSalt _salt DescribeGroupMembership' {..} =
    _salt
      `Prelude.hashWithSalt` identityStoreId
      `Prelude.hashWithSalt` membershipId

instance Prelude.NFData DescribeGroupMembership where
  rnf DescribeGroupMembership' {..} =
    Prelude.rnf identityStoreId
      `Prelude.seq` Prelude.rnf membershipId

instance Data.ToHeaders DescribeGroupMembership where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ( "AWSIdentityStore.DescribeGroupMembership" ::
                          Prelude.ByteString
                      ),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeGroupMembership where
  toJSON DescribeGroupMembership' {..} =
    Data.object
      ( Prelude.catMaybes
          [ Prelude.Just
              ("IdentityStoreId" Data..= identityStoreId),
            Prelude.Just ("MembershipId" Data..= membershipId)
          ]
      )

instance Data.ToPath DescribeGroupMembership where
  toPath = Prelude.const "/"

instance Data.ToQuery DescribeGroupMembership where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newDescribeGroupMembershipResponse' smart constructor.
data DescribeGroupMembershipResponse = DescribeGroupMembershipResponse'
  { -- | The response's http status code.
    httpStatus :: Prelude.Int,
    -- | The globally unique identifier for the identity store.
    identityStoreId :: Prelude.Text,
    -- | The identifier for a @GroupMembership@ in an identity store.
    membershipId :: Prelude.Text,
    -- | The identifier for a group in the identity store.
    groupId :: Prelude.Text,
    memberId :: MemberId
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DescribeGroupMembershipResponse' 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:
--
-- 'httpStatus', 'describeGroupMembershipResponse_httpStatus' - The response's http status code.
--
-- 'identityStoreId', 'describeGroupMembershipResponse_identityStoreId' - The globally unique identifier for the identity store.
--
-- 'membershipId', 'describeGroupMembershipResponse_membershipId' - The identifier for a @GroupMembership@ in an identity store.
--
-- 'groupId', 'describeGroupMembershipResponse_groupId' - The identifier for a group in the identity store.
--
-- 'memberId', 'describeGroupMembershipResponse_memberId' - Undocumented member.
newDescribeGroupMembershipResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'identityStoreId'
  Prelude.Text ->
  -- | 'membershipId'
  Prelude.Text ->
  -- | 'groupId'
  Prelude.Text ->
  -- | 'memberId'
  MemberId ->
  DescribeGroupMembershipResponse
newDescribeGroupMembershipResponse
  pHttpStatus_
  pIdentityStoreId_
  pMembershipId_
  pGroupId_
  pMemberId_ =
    DescribeGroupMembershipResponse'
      { httpStatus =
          pHttpStatus_,
        identityStoreId = pIdentityStoreId_,
        membershipId = pMembershipId_,
        groupId = pGroupId_,
        memberId = pMemberId_
      }

-- | The response's http status code.
describeGroupMembershipResponse_httpStatus :: Lens.Lens' DescribeGroupMembershipResponse Prelude.Int
describeGroupMembershipResponse_httpStatus = Lens.lens (\DescribeGroupMembershipResponse' {httpStatus} -> httpStatus) (\s@DescribeGroupMembershipResponse' {} a -> s {httpStatus = a} :: DescribeGroupMembershipResponse)

-- | The globally unique identifier for the identity store.
describeGroupMembershipResponse_identityStoreId :: Lens.Lens' DescribeGroupMembershipResponse Prelude.Text
describeGroupMembershipResponse_identityStoreId = Lens.lens (\DescribeGroupMembershipResponse' {identityStoreId} -> identityStoreId) (\s@DescribeGroupMembershipResponse' {} a -> s {identityStoreId = a} :: DescribeGroupMembershipResponse)

-- | The identifier for a @GroupMembership@ in an identity store.
describeGroupMembershipResponse_membershipId :: Lens.Lens' DescribeGroupMembershipResponse Prelude.Text
describeGroupMembershipResponse_membershipId = Lens.lens (\DescribeGroupMembershipResponse' {membershipId} -> membershipId) (\s@DescribeGroupMembershipResponse' {} a -> s {membershipId = a} :: DescribeGroupMembershipResponse)

-- | The identifier for a group in the identity store.
describeGroupMembershipResponse_groupId :: Lens.Lens' DescribeGroupMembershipResponse Prelude.Text
describeGroupMembershipResponse_groupId = Lens.lens (\DescribeGroupMembershipResponse' {groupId} -> groupId) (\s@DescribeGroupMembershipResponse' {} a -> s {groupId = a} :: DescribeGroupMembershipResponse)

-- | Undocumented member.
describeGroupMembershipResponse_memberId :: Lens.Lens' DescribeGroupMembershipResponse MemberId
describeGroupMembershipResponse_memberId = Lens.lens (\DescribeGroupMembershipResponse' {memberId} -> memberId) (\s@DescribeGroupMembershipResponse' {} a -> s {memberId = a} :: DescribeGroupMembershipResponse)

instance
  Prelude.NFData
    DescribeGroupMembershipResponse
  where
  rnf DescribeGroupMembershipResponse' {..} =
    Prelude.rnf httpStatus
      `Prelude.seq` Prelude.rnf identityStoreId
      `Prelude.seq` Prelude.rnf membershipId
      `Prelude.seq` Prelude.rnf groupId
      `Prelude.seq` Prelude.rnf memberId