packages feed

amazonka-finspace-data-2.0: gen/Amazonka/FinSpaceData/ListUsersByPermissionGroup.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.FinSpaceData.ListUsersByPermissionGroup
-- 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 details of all the users in a specific permission group.
module Amazonka.FinSpaceData.ListUsersByPermissionGroup
  ( -- * Creating a Request
    ListUsersByPermissionGroup (..),
    newListUsersByPermissionGroup,

    -- * Request Lenses
    listUsersByPermissionGroup_nextToken,
    listUsersByPermissionGroup_permissionGroupId,
    listUsersByPermissionGroup_maxResults,

    -- * Destructuring the Response
    ListUsersByPermissionGroupResponse (..),
    newListUsersByPermissionGroupResponse,

    -- * Response Lenses
    listUsersByPermissionGroupResponse_nextToken,
    listUsersByPermissionGroupResponse_users,
    listUsersByPermissionGroupResponse_httpStatus,
  )
where

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

-- | /See:/ 'newListUsersByPermissionGroup' smart constructor.
data ListUsersByPermissionGroup = ListUsersByPermissionGroup'
  { -- | A token that indicates where a results page should begin.
    nextToken :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier for the permission group.
    permissionGroupId :: Prelude.Text,
    -- | The maximum number of results per page.
    maxResults :: Prelude.Natural
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListUsersByPermissionGroup' 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:
--
-- 'nextToken', 'listUsersByPermissionGroup_nextToken' - A token that indicates where a results page should begin.
--
-- 'permissionGroupId', 'listUsersByPermissionGroup_permissionGroupId' - The unique identifier for the permission group.
--
-- 'maxResults', 'listUsersByPermissionGroup_maxResults' - The maximum number of results per page.
newListUsersByPermissionGroup ::
  -- | 'permissionGroupId'
  Prelude.Text ->
  -- | 'maxResults'
  Prelude.Natural ->
  ListUsersByPermissionGroup
newListUsersByPermissionGroup
  pPermissionGroupId_
  pMaxResults_ =
    ListUsersByPermissionGroup'
      { nextToken =
          Prelude.Nothing,
        permissionGroupId = pPermissionGroupId_,
        maxResults = pMaxResults_
      }

-- | A token that indicates where a results page should begin.
listUsersByPermissionGroup_nextToken :: Lens.Lens' ListUsersByPermissionGroup (Prelude.Maybe Prelude.Text)
listUsersByPermissionGroup_nextToken = Lens.lens (\ListUsersByPermissionGroup' {nextToken} -> nextToken) (\s@ListUsersByPermissionGroup' {} a -> s {nextToken = a} :: ListUsersByPermissionGroup)

-- | The unique identifier for the permission group.
listUsersByPermissionGroup_permissionGroupId :: Lens.Lens' ListUsersByPermissionGroup Prelude.Text
listUsersByPermissionGroup_permissionGroupId = Lens.lens (\ListUsersByPermissionGroup' {permissionGroupId} -> permissionGroupId) (\s@ListUsersByPermissionGroup' {} a -> s {permissionGroupId = a} :: ListUsersByPermissionGroup)

-- | The maximum number of results per page.
listUsersByPermissionGroup_maxResults :: Lens.Lens' ListUsersByPermissionGroup Prelude.Natural
listUsersByPermissionGroup_maxResults = Lens.lens (\ListUsersByPermissionGroup' {maxResults} -> maxResults) (\s@ListUsersByPermissionGroup' {} a -> s {maxResults = a} :: ListUsersByPermissionGroup)

instance Core.AWSRequest ListUsersByPermissionGroup where
  type
    AWSResponse ListUsersByPermissionGroup =
      ListUsersByPermissionGroupResponse
  request overrides =
    Request.get (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          ListUsersByPermissionGroupResponse'
            Prelude.<$> (x Data..?> "nextToken")
            Prelude.<*> (x Data..?> "users" Core..!@ Prelude.mempty)
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable ListUsersByPermissionGroup where
  hashWithSalt _salt ListUsersByPermissionGroup' {..} =
    _salt
      `Prelude.hashWithSalt` nextToken
      `Prelude.hashWithSalt` permissionGroupId
      `Prelude.hashWithSalt` maxResults

instance Prelude.NFData ListUsersByPermissionGroup where
  rnf ListUsersByPermissionGroup' {..} =
    Prelude.rnf nextToken
      `Prelude.seq` Prelude.rnf permissionGroupId
      `Prelude.seq` Prelude.rnf maxResults

instance Data.ToHeaders ListUsersByPermissionGroup where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath ListUsersByPermissionGroup where
  toPath ListUsersByPermissionGroup' {..} =
    Prelude.mconcat
      [ "/permission-group/",
        Data.toBS permissionGroupId,
        "/users"
      ]

instance Data.ToQuery ListUsersByPermissionGroup where
  toQuery ListUsersByPermissionGroup' {..} =
    Prelude.mconcat
      [ "nextToken" Data.=: nextToken,
        "maxResults" Data.=: maxResults
      ]

-- | /See:/ 'newListUsersByPermissionGroupResponse' smart constructor.
data ListUsersByPermissionGroupResponse = ListUsersByPermissionGroupResponse'
  { -- | A token that indicates where a results page should begin.
    nextToken :: Prelude.Maybe Prelude.Text,
    -- | Lists details of all users in a specific permission group.
    users :: Prelude.Maybe [UserByPermissionGroup],
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListUsersByPermissionGroupResponse' 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:
--
-- 'nextToken', 'listUsersByPermissionGroupResponse_nextToken' - A token that indicates where a results page should begin.
--
-- 'users', 'listUsersByPermissionGroupResponse_users' - Lists details of all users in a specific permission group.
--
-- 'httpStatus', 'listUsersByPermissionGroupResponse_httpStatus' - The response's http status code.
newListUsersByPermissionGroupResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListUsersByPermissionGroupResponse
newListUsersByPermissionGroupResponse pHttpStatus_ =
  ListUsersByPermissionGroupResponse'
    { nextToken =
        Prelude.Nothing,
      users = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | A token that indicates where a results page should begin.
listUsersByPermissionGroupResponse_nextToken :: Lens.Lens' ListUsersByPermissionGroupResponse (Prelude.Maybe Prelude.Text)
listUsersByPermissionGroupResponse_nextToken = Lens.lens (\ListUsersByPermissionGroupResponse' {nextToken} -> nextToken) (\s@ListUsersByPermissionGroupResponse' {} a -> s {nextToken = a} :: ListUsersByPermissionGroupResponse)

-- | Lists details of all users in a specific permission group.
listUsersByPermissionGroupResponse_users :: Lens.Lens' ListUsersByPermissionGroupResponse (Prelude.Maybe [UserByPermissionGroup])
listUsersByPermissionGroupResponse_users = Lens.lens (\ListUsersByPermissionGroupResponse' {users} -> users) (\s@ListUsersByPermissionGroupResponse' {} a -> s {users = a} :: ListUsersByPermissionGroupResponse) Prelude.. Lens.mapping Lens.coerced

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

instance
  Prelude.NFData
    ListUsersByPermissionGroupResponse
  where
  rnf ListUsersByPermissionGroupResponse' {..} =
    Prelude.rnf nextToken
      `Prelude.seq` Prelude.rnf users
      `Prelude.seq` Prelude.rnf httpStatus