{-# 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.ListUsers -- 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 available user accounts in FinSpace. -- -- This operation returns paginated results. module Amazonka.FinSpaceData.ListUsers ( -- * Creating a Request ListUsers (..), newListUsers, -- * Request Lenses listUsers_nextToken, listUsers_maxResults, -- * Destructuring the Response ListUsersResponse (..), newListUsersResponse, -- * Response Lenses listUsersResponse_nextToken, listUsersResponse_users, listUsersResponse_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:/ 'newListUsers' smart constructor. data ListUsers = ListUsers' { -- | A token that indicates where a results page should begin. nextToken :: Prelude.Maybe 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 'ListUsers' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'nextToken', 'listUsers_nextToken' - A token that indicates where a results page should begin. -- -- 'maxResults', 'listUsers_maxResults' - The maximum number of results per page. newListUsers :: -- | 'maxResults' Prelude.Natural -> ListUsers newListUsers pMaxResults_ = ListUsers' { nextToken = Prelude.Nothing, maxResults = pMaxResults_ } -- | A token that indicates where a results page should begin. listUsers_nextToken :: Lens.Lens' ListUsers (Prelude.Maybe Prelude.Text) listUsers_nextToken = Lens.lens (\ListUsers' {nextToken} -> nextToken) (\s@ListUsers' {} a -> s {nextToken = a} :: ListUsers) -- | The maximum number of results per page. listUsers_maxResults :: Lens.Lens' ListUsers Prelude.Natural listUsers_maxResults = Lens.lens (\ListUsers' {maxResults} -> maxResults) (\s@ListUsers' {} a -> s {maxResults = a} :: ListUsers) instance Core.AWSPager ListUsers where page rq rs | Core.stop ( rs Lens.^? listUsersResponse_nextToken Prelude.. Lens._Just ) = Prelude.Nothing | Core.stop ( rs Lens.^? listUsersResponse_users Prelude.. Lens._Just ) = Prelude.Nothing | Prelude.otherwise = Prelude.Just Prelude.$ rq Prelude.& listUsers_nextToken Lens..~ rs Lens.^? listUsersResponse_nextToken Prelude.. Lens._Just instance Core.AWSRequest ListUsers where type AWSResponse ListUsers = ListUsersResponse request overrides = Request.get (overrides defaultService) response = Response.receiveJSON ( \s h x -> ListUsersResponse' Prelude.<$> (x Data..?> "nextToken") Prelude.<*> (x Data..?> "users" Core..!@ Prelude.mempty) Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable ListUsers where hashWithSalt _salt ListUsers' {..} = _salt `Prelude.hashWithSalt` nextToken `Prelude.hashWithSalt` maxResults instance Prelude.NFData ListUsers where rnf ListUsers' {..} = Prelude.rnf nextToken `Prelude.seq` Prelude.rnf maxResults instance Data.ToHeaders ListUsers where toHeaders = Prelude.const ( Prelude.mconcat [ "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToPath ListUsers where toPath = Prelude.const "/user" instance Data.ToQuery ListUsers where toQuery ListUsers' {..} = Prelude.mconcat [ "nextToken" Data.=: nextToken, "maxResults" Data.=: maxResults ] -- | /See:/ 'newListUsersResponse' smart constructor. data ListUsersResponse = ListUsersResponse' { -- | A token that indicates where a results page should begin. nextToken :: Prelude.Maybe Prelude.Text, -- | A list of all the user accounts. users :: Prelude.Maybe [User], -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ListUsersResponse' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'nextToken', 'listUsersResponse_nextToken' - A token that indicates where a results page should begin. -- -- 'users', 'listUsersResponse_users' - A list of all the user accounts. -- -- 'httpStatus', 'listUsersResponse_httpStatus' - The response's http status code. newListUsersResponse :: -- | 'httpStatus' Prelude.Int -> ListUsersResponse newListUsersResponse pHttpStatus_ = ListUsersResponse' { nextToken = Prelude.Nothing, users = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | A token that indicates where a results page should begin. listUsersResponse_nextToken :: Lens.Lens' ListUsersResponse (Prelude.Maybe Prelude.Text) listUsersResponse_nextToken = Lens.lens (\ListUsersResponse' {nextToken} -> nextToken) (\s@ListUsersResponse' {} a -> s {nextToken = a} :: ListUsersResponse) -- | A list of all the user accounts. listUsersResponse_users :: Lens.Lens' ListUsersResponse (Prelude.Maybe [User]) listUsersResponse_users = Lens.lens (\ListUsersResponse' {users} -> users) (\s@ListUsersResponse' {} a -> s {users = a} :: ListUsersResponse) Prelude.. Lens.mapping Lens.coerced -- | The response's http status code. listUsersResponse_httpStatus :: Lens.Lens' ListUsersResponse Prelude.Int listUsersResponse_httpStatus = Lens.lens (\ListUsersResponse' {httpStatus} -> httpStatus) (\s@ListUsersResponse' {} a -> s {httpStatus = a} :: ListUsersResponse) instance Prelude.NFData ListUsersResponse where rnf ListUsersResponse' {..} = Prelude.rnf nextToken `Prelude.seq` Prelude.rnf users `Prelude.seq` Prelude.rnf httpStatus