{-# 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.IAM.GetUser -- 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 information about the specified IAM user, including the -- user\'s creation date, path, unique ID, and ARN. -- -- If you do not specify a user name, IAM determines the user name -- implicitly based on the Amazon Web Services access key ID used to sign -- the request to this operation. module Amazonka.IAM.GetUser ( -- * Creating a Request GetUser (..), newGetUser, -- * Request Lenses getUser_userName, -- * Destructuring the Response GetUserResponse (..), newGetUserResponse, -- * Response Lenses getUserResponse_httpStatus, getUserResponse_user, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.IAM.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newGetUser' smart constructor. data GetUser = GetUser' { -- | The name of the user to get information about. -- -- This parameter is optional. If it is not included, it defaults to the -- user making the request. This parameter allows (through its -- ) a string of characters -- consisting of upper and lowercase alphanumeric characters with no -- spaces. You can also include any of the following characters: _+=,.\@- userName :: Prelude.Maybe Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'GetUser' 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: -- -- 'userName', 'getUser_userName' - The name of the user to get information about. -- -- This parameter is optional. If it is not included, it defaults to the -- user making the request. This parameter allows (through its -- ) a string of characters -- consisting of upper and lowercase alphanumeric characters with no -- spaces. You can also include any of the following characters: _+=,.\@- newGetUser :: GetUser newGetUser = GetUser' {userName = Prelude.Nothing} -- | The name of the user to get information about. -- -- This parameter is optional. If it is not included, it defaults to the -- user making the request. This parameter allows (through its -- ) a string of characters -- consisting of upper and lowercase alphanumeric characters with no -- spaces. You can also include any of the following characters: _+=,.\@- getUser_userName :: Lens.Lens' GetUser (Prelude.Maybe Prelude.Text) getUser_userName = Lens.lens (\GetUser' {userName} -> userName) (\s@GetUser' {} a -> s {userName = a} :: GetUser) instance Core.AWSRequest GetUser where type AWSResponse GetUser = GetUserResponse request overrides = Request.postQuery (overrides defaultService) response = Response.receiveXMLWrapper "GetUserResult" ( \s h x -> GetUserResponse' Prelude.<$> (Prelude.pure (Prelude.fromEnum s)) Prelude.<*> (x Data..@ "User") ) instance Prelude.Hashable GetUser where hashWithSalt _salt GetUser' {..} = _salt `Prelude.hashWithSalt` userName instance Prelude.NFData GetUser where rnf GetUser' {..} = Prelude.rnf userName instance Data.ToHeaders GetUser where toHeaders = Prelude.const Prelude.mempty instance Data.ToPath GetUser where toPath = Prelude.const "/" instance Data.ToQuery GetUser where toQuery GetUser' {..} = Prelude.mconcat [ "Action" Data.=: ("GetUser" :: Prelude.ByteString), "Version" Data.=: ("2010-05-08" :: Prelude.ByteString), "UserName" Data.=: userName ] -- | Contains the response to a successful GetUser request. -- -- /See:/ 'newGetUserResponse' smart constructor. data GetUserResponse = GetUserResponse' { -- | The response's http status code. httpStatus :: Prelude.Int, -- | A structure containing details about the IAM user. -- -- Due to a service issue, password last used data does not include -- password use from May 3, 2018 22:50 PDT to May 23, 2018 14:08 PDT. This -- affects -- -- dates shown in the IAM console and password last used dates in the -- , -- and returned by this operation. If users signed in during the affected -- time, the password last used date that is returned is the date the user -- last signed in before May 3, 2018. For users that signed in after May -- 23, 2018 14:08 PDT, the returned password last used date is accurate. -- -- You can use password last used information to identify unused -- credentials for deletion. For example, you might delete users who did -- not sign in to Amazon Web Services in the last 90 days. In cases like -- this, we recommend that you adjust your evaluation window to include -- dates after May 23, 2018. Alternatively, if your users use access keys -- to access Amazon Web Services programmatically you can refer to access -- key last used information because it is accurate for all dates. user :: User } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'GetUserResponse' 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: -- -- 'httpStatus', 'getUserResponse_httpStatus' - The response's http status code. -- -- 'user', 'getUserResponse_user' - A structure containing details about the IAM user. -- -- Due to a service issue, password last used data does not include -- password use from May 3, 2018 22:50 PDT to May 23, 2018 14:08 PDT. This -- affects -- -- dates shown in the IAM console and password last used dates in the -- , -- and returned by this operation. If users signed in during the affected -- time, the password last used date that is returned is the date the user -- last signed in before May 3, 2018. For users that signed in after May -- 23, 2018 14:08 PDT, the returned password last used date is accurate. -- -- You can use password last used information to identify unused -- credentials for deletion. For example, you might delete users who did -- not sign in to Amazon Web Services in the last 90 days. In cases like -- this, we recommend that you adjust your evaluation window to include -- dates after May 23, 2018. Alternatively, if your users use access keys -- to access Amazon Web Services programmatically you can refer to access -- key last used information because it is accurate for all dates. newGetUserResponse :: -- | 'httpStatus' Prelude.Int -> -- | 'user' User -> GetUserResponse newGetUserResponse pHttpStatus_ pUser_ = GetUserResponse' { httpStatus = pHttpStatus_, user = pUser_ } -- | The response's http status code. getUserResponse_httpStatus :: Lens.Lens' GetUserResponse Prelude.Int getUserResponse_httpStatus = Lens.lens (\GetUserResponse' {httpStatus} -> httpStatus) (\s@GetUserResponse' {} a -> s {httpStatus = a} :: GetUserResponse) -- | A structure containing details about the IAM user. -- -- Due to a service issue, password last used data does not include -- password use from May 3, 2018 22:50 PDT to May 23, 2018 14:08 PDT. This -- affects -- -- dates shown in the IAM console and password last used dates in the -- , -- and returned by this operation. If users signed in during the affected -- time, the password last used date that is returned is the date the user -- last signed in before May 3, 2018. For users that signed in after May -- 23, 2018 14:08 PDT, the returned password last used date is accurate. -- -- You can use password last used information to identify unused -- credentials for deletion. For example, you might delete users who did -- not sign in to Amazon Web Services in the last 90 days. In cases like -- this, we recommend that you adjust your evaluation window to include -- dates after May 23, 2018. Alternatively, if your users use access keys -- to access Amazon Web Services programmatically you can refer to access -- key last used information because it is accurate for all dates. getUserResponse_user :: Lens.Lens' GetUserResponse User getUserResponse_user = Lens.lens (\GetUserResponse' {user} -> user) (\s@GetUserResponse' {} a -> s {user = a} :: GetUserResponse) instance Prelude.NFData GetUserResponse where rnf GetUserResponse' {..} = Prelude.rnf httpStatus `Prelude.seq` Prelude.rnf user