{-# 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.CreateUser -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates a new user within the specified identity store. module Amazonka.IdentityStore.CreateUser ( -- * Creating a Request CreateUser (..), newCreateUser, -- * Request Lenses createUser_addresses, createUser_displayName, createUser_emails, createUser_locale, createUser_name, createUser_nickName, createUser_phoneNumbers, createUser_preferredLanguage, createUser_profileUrl, createUser_timezone, createUser_title, createUser_userName, createUser_userType, createUser_identityStoreId, -- * Destructuring the Response CreateUserResponse (..), newCreateUserResponse, -- * Response Lenses createUserResponse_httpStatus, createUserResponse_userId, createUserResponse_identityStoreId, ) 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:/ 'newCreateUser' smart constructor. data CreateUser = CreateUser' { -- | A list of @Address@ objects containing addresses associated with the -- user. addresses :: Prelude.Maybe (Prelude.NonEmpty Address), -- | A string containing the user\'s name. This value is typically formatted -- for display when the user is referenced. For example, \"John Doe.\" displayName :: Prelude.Maybe (Data.Sensitive Prelude.Text), -- | A list of @Email@ objects containing email addresses associated with the -- user. emails :: Prelude.Maybe (Prelude.NonEmpty Email), -- | A string containing the user\'s geographical region or location. locale :: Prelude.Maybe (Data.Sensitive Prelude.Text), -- | An object containing the user\'s name. name :: Prelude.Maybe Name, -- | A string containing an alternate name for the user. nickName :: Prelude.Maybe (Data.Sensitive Prelude.Text), -- | A list of @PhoneNumber@ objects containing phone numbers associated with -- the user. phoneNumbers :: Prelude.Maybe (Prelude.NonEmpty PhoneNumber), -- | A string containing the preferred language of the user. For example, -- \"American English\" or \"en-us.\" preferredLanguage :: Prelude.Maybe (Data.Sensitive Prelude.Text), -- | A string containing a URL that may be associated with the user. profileUrl :: Prelude.Maybe (Data.Sensitive Prelude.Text), -- | A string containing the user\'s time zone. timezone :: Prelude.Maybe (Data.Sensitive Prelude.Text), -- | A string containing the user\'s title. Possible values are left -- unspecified given that they depend on each customer\'s specific needs. title :: Prelude.Maybe (Data.Sensitive Prelude.Text), -- | A unique string used to identify the user. The length limit is 128 -- characters. This value can consist of letters, accented characters, -- symbols, numbers, and punctuation. This value is specified at the time -- the user is created and stored as an attribute of the user object in the -- identity store. userName :: Prelude.Maybe (Data.Sensitive Prelude.Text), -- | A string indicating the user\'s type. Possible values depend on each -- customer\'s specific needs, so they are left unspecified. userType :: Prelude.Maybe (Data.Sensitive Prelude.Text), -- | The globally unique identifier for the identity store. identityStoreId :: Prelude.Text } deriving (Prelude.Eq, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateUser' 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: -- -- 'addresses', 'createUser_addresses' - A list of @Address@ objects containing addresses associated with the -- user. -- -- 'displayName', 'createUser_displayName' - A string containing the user\'s name. This value is typically formatted -- for display when the user is referenced. For example, \"John Doe.\" -- -- 'emails', 'createUser_emails' - A list of @Email@ objects containing email addresses associated with the -- user. -- -- 'locale', 'createUser_locale' - A string containing the user\'s geographical region or location. -- -- 'name', 'createUser_name' - An object containing the user\'s name. -- -- 'nickName', 'createUser_nickName' - A string containing an alternate name for the user. -- -- 'phoneNumbers', 'createUser_phoneNumbers' - A list of @PhoneNumber@ objects containing phone numbers associated with -- the user. -- -- 'preferredLanguage', 'createUser_preferredLanguage' - A string containing the preferred language of the user. For example, -- \"American English\" or \"en-us.\" -- -- 'profileUrl', 'createUser_profileUrl' - A string containing a URL that may be associated with the user. -- -- 'timezone', 'createUser_timezone' - A string containing the user\'s time zone. -- -- 'title', 'createUser_title' - A string containing the user\'s title. Possible values are left -- unspecified given that they depend on each customer\'s specific needs. -- -- 'userName', 'createUser_userName' - A unique string used to identify the user. The length limit is 128 -- characters. This value can consist of letters, accented characters, -- symbols, numbers, and punctuation. This value is specified at the time -- the user is created and stored as an attribute of the user object in the -- identity store. -- -- 'userType', 'createUser_userType' - A string indicating the user\'s type. Possible values depend on each -- customer\'s specific needs, so they are left unspecified. -- -- 'identityStoreId', 'createUser_identityStoreId' - The globally unique identifier for the identity store. newCreateUser :: -- | 'identityStoreId' Prelude.Text -> CreateUser newCreateUser pIdentityStoreId_ = CreateUser' { addresses = Prelude.Nothing, displayName = Prelude.Nothing, emails = Prelude.Nothing, locale = Prelude.Nothing, name = Prelude.Nothing, nickName = Prelude.Nothing, phoneNumbers = Prelude.Nothing, preferredLanguage = Prelude.Nothing, profileUrl = Prelude.Nothing, timezone = Prelude.Nothing, title = Prelude.Nothing, userName = Prelude.Nothing, userType = Prelude.Nothing, identityStoreId = pIdentityStoreId_ } -- | A list of @Address@ objects containing addresses associated with the -- user. createUser_addresses :: Lens.Lens' CreateUser (Prelude.Maybe (Prelude.NonEmpty Address)) createUser_addresses = Lens.lens (\CreateUser' {addresses} -> addresses) (\s@CreateUser' {} a -> s {addresses = a} :: CreateUser) Prelude.. Lens.mapping Lens.coerced -- | A string containing the user\'s name. This value is typically formatted -- for display when the user is referenced. For example, \"John Doe.\" createUser_displayName :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text) createUser_displayName = Lens.lens (\CreateUser' {displayName} -> displayName) (\s@CreateUser' {} a -> s {displayName = a} :: CreateUser) Prelude.. Lens.mapping Data._Sensitive -- | A list of @Email@ objects containing email addresses associated with the -- user. createUser_emails :: Lens.Lens' CreateUser (Prelude.Maybe (Prelude.NonEmpty Email)) createUser_emails = Lens.lens (\CreateUser' {emails} -> emails) (\s@CreateUser' {} a -> s {emails = a} :: CreateUser) Prelude.. Lens.mapping Lens.coerced -- | A string containing the user\'s geographical region or location. createUser_locale :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text) createUser_locale = Lens.lens (\CreateUser' {locale} -> locale) (\s@CreateUser' {} a -> s {locale = a} :: CreateUser) Prelude.. Lens.mapping Data._Sensitive -- | An object containing the user\'s name. createUser_name :: Lens.Lens' CreateUser (Prelude.Maybe Name) createUser_name = Lens.lens (\CreateUser' {name} -> name) (\s@CreateUser' {} a -> s {name = a} :: CreateUser) -- | A string containing an alternate name for the user. createUser_nickName :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text) createUser_nickName = Lens.lens (\CreateUser' {nickName} -> nickName) (\s@CreateUser' {} a -> s {nickName = a} :: CreateUser) Prelude.. Lens.mapping Data._Sensitive -- | A list of @PhoneNumber@ objects containing phone numbers associated with -- the user. createUser_phoneNumbers :: Lens.Lens' CreateUser (Prelude.Maybe (Prelude.NonEmpty PhoneNumber)) createUser_phoneNumbers = Lens.lens (\CreateUser' {phoneNumbers} -> phoneNumbers) (\s@CreateUser' {} a -> s {phoneNumbers = a} :: CreateUser) Prelude.. Lens.mapping Lens.coerced -- | A string containing the preferred language of the user. For example, -- \"American English\" or \"en-us.\" createUser_preferredLanguage :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text) createUser_preferredLanguage = Lens.lens (\CreateUser' {preferredLanguage} -> preferredLanguage) (\s@CreateUser' {} a -> s {preferredLanguage = a} :: CreateUser) Prelude.. Lens.mapping Data._Sensitive -- | A string containing a URL that may be associated with the user. createUser_profileUrl :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text) createUser_profileUrl = Lens.lens (\CreateUser' {profileUrl} -> profileUrl) (\s@CreateUser' {} a -> s {profileUrl = a} :: CreateUser) Prelude.. Lens.mapping Data._Sensitive -- | A string containing the user\'s time zone. createUser_timezone :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text) createUser_timezone = Lens.lens (\CreateUser' {timezone} -> timezone) (\s@CreateUser' {} a -> s {timezone = a} :: CreateUser) Prelude.. Lens.mapping Data._Sensitive -- | A string containing the user\'s title. Possible values are left -- unspecified given that they depend on each customer\'s specific needs. createUser_title :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text) createUser_title = Lens.lens (\CreateUser' {title} -> title) (\s@CreateUser' {} a -> s {title = a} :: CreateUser) Prelude.. Lens.mapping Data._Sensitive -- | A unique string used to identify the user. The length limit is 128 -- characters. This value can consist of letters, accented characters, -- symbols, numbers, and punctuation. This value is specified at the time -- the user is created and stored as an attribute of the user object in the -- identity store. createUser_userName :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text) createUser_userName = Lens.lens (\CreateUser' {userName} -> userName) (\s@CreateUser' {} a -> s {userName = a} :: CreateUser) Prelude.. Lens.mapping Data._Sensitive -- | A string indicating the user\'s type. Possible values depend on each -- customer\'s specific needs, so they are left unspecified. createUser_userType :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text) createUser_userType = Lens.lens (\CreateUser' {userType} -> userType) (\s@CreateUser' {} a -> s {userType = a} :: CreateUser) Prelude.. Lens.mapping Data._Sensitive -- | The globally unique identifier for the identity store. createUser_identityStoreId :: Lens.Lens' CreateUser Prelude.Text createUser_identityStoreId = Lens.lens (\CreateUser' {identityStoreId} -> identityStoreId) (\s@CreateUser' {} a -> s {identityStoreId = a} :: CreateUser) instance Core.AWSRequest CreateUser where type AWSResponse CreateUser = CreateUserResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> CreateUserResponse' Prelude.<$> (Prelude.pure (Prelude.fromEnum s)) Prelude.<*> (x Data..:> "UserId") Prelude.<*> (x Data..:> "IdentityStoreId") ) instance Prelude.Hashable CreateUser where hashWithSalt _salt CreateUser' {..} = _salt `Prelude.hashWithSalt` addresses `Prelude.hashWithSalt` displayName `Prelude.hashWithSalt` emails `Prelude.hashWithSalt` locale `Prelude.hashWithSalt` name `Prelude.hashWithSalt` nickName `Prelude.hashWithSalt` phoneNumbers `Prelude.hashWithSalt` preferredLanguage `Prelude.hashWithSalt` profileUrl `Prelude.hashWithSalt` timezone `Prelude.hashWithSalt` title `Prelude.hashWithSalt` userName `Prelude.hashWithSalt` userType `Prelude.hashWithSalt` identityStoreId instance Prelude.NFData CreateUser where rnf CreateUser' {..} = Prelude.rnf addresses `Prelude.seq` Prelude.rnf displayName `Prelude.seq` Prelude.rnf emails `Prelude.seq` Prelude.rnf locale `Prelude.seq` Prelude.rnf name `Prelude.seq` Prelude.rnf nickName `Prelude.seq` Prelude.rnf phoneNumbers `Prelude.seq` Prelude.rnf preferredLanguage `Prelude.seq` Prelude.rnf profileUrl `Prelude.seq` Prelude.rnf timezone `Prelude.seq` Prelude.rnf title `Prelude.seq` Prelude.rnf userName `Prelude.seq` Prelude.rnf userType `Prelude.seq` Prelude.rnf identityStoreId instance Data.ToHeaders CreateUser where toHeaders = Prelude.const ( Prelude.mconcat [ "X-Amz-Target" Data.=# ( "AWSIdentityStore.CreateUser" :: Prelude.ByteString ), "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON CreateUser where toJSON CreateUser' {..} = Data.object ( Prelude.catMaybes [ ("Addresses" Data..=) Prelude.<$> addresses, ("DisplayName" Data..=) Prelude.<$> displayName, ("Emails" Data..=) Prelude.<$> emails, ("Locale" Data..=) Prelude.<$> locale, ("Name" Data..=) Prelude.<$> name, ("NickName" Data..=) Prelude.<$> nickName, ("PhoneNumbers" Data..=) Prelude.<$> phoneNumbers, ("PreferredLanguage" Data..=) Prelude.<$> preferredLanguage, ("ProfileUrl" Data..=) Prelude.<$> profileUrl, ("Timezone" Data..=) Prelude.<$> timezone, ("Title" Data..=) Prelude.<$> title, ("UserName" Data..=) Prelude.<$> userName, ("UserType" Data..=) Prelude.<$> userType, Prelude.Just ("IdentityStoreId" Data..= identityStoreId) ] ) instance Data.ToPath CreateUser where toPath = Prelude.const "/" instance Data.ToQuery CreateUser where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newCreateUserResponse' smart constructor. data CreateUserResponse = CreateUserResponse' { -- | The response's http status code. httpStatus :: Prelude.Int, -- | The identifier of the newly created user in the identity store. userId :: Prelude.Text, -- | The globally unique identifier for the identity store. identityStoreId :: Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateUserResponse' 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', 'createUserResponse_httpStatus' - The response's http status code. -- -- 'userId', 'createUserResponse_userId' - The identifier of the newly created user in the identity store. -- -- 'identityStoreId', 'createUserResponse_identityStoreId' - The globally unique identifier for the identity store. newCreateUserResponse :: -- | 'httpStatus' Prelude.Int -> -- | 'userId' Prelude.Text -> -- | 'identityStoreId' Prelude.Text -> CreateUserResponse newCreateUserResponse pHttpStatus_ pUserId_ pIdentityStoreId_ = CreateUserResponse' { httpStatus = pHttpStatus_, userId = pUserId_, identityStoreId = pIdentityStoreId_ } -- | The response's http status code. createUserResponse_httpStatus :: Lens.Lens' CreateUserResponse Prelude.Int createUserResponse_httpStatus = Lens.lens (\CreateUserResponse' {httpStatus} -> httpStatus) (\s@CreateUserResponse' {} a -> s {httpStatus = a} :: CreateUserResponse) -- | The identifier of the newly created user in the identity store. createUserResponse_userId :: Lens.Lens' CreateUserResponse Prelude.Text createUserResponse_userId = Lens.lens (\CreateUserResponse' {userId} -> userId) (\s@CreateUserResponse' {} a -> s {userId = a} :: CreateUserResponse) -- | The globally unique identifier for the identity store. createUserResponse_identityStoreId :: Lens.Lens' CreateUserResponse Prelude.Text createUserResponse_identityStoreId = Lens.lens (\CreateUserResponse' {identityStoreId} -> identityStoreId) (\s@CreateUserResponse' {} a -> s {identityStoreId = a} :: CreateUserResponse) instance Prelude.NFData CreateUserResponse where rnf CreateUserResponse' {..} = Prelude.rnf httpStatus `Prelude.seq` Prelude.rnf userId `Prelude.seq` Prelude.rnf identityStoreId