{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# 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.Types.User
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.IdentityStore.Types.User 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.Address
import Amazonka.IdentityStore.Types.Email
import Amazonka.IdentityStore.Types.ExternalId
import Amazonka.IdentityStore.Types.Name
import Amazonka.IdentityStore.Types.PhoneNumber
import qualified Amazonka.Prelude as Prelude

-- | A user object that contains a specified user’s metadata and attributes.
--
-- /See:/ 'newUser' smart constructor.
data User = User'
  { -- | A list of @Address@ objects containing addresses associated with the
    -- user.
    User -> Maybe (NonEmpty Address)
addresses :: Prelude.Maybe (Prelude.NonEmpty Address),
    -- | A string containing the user\'s name that\'s formatted for display when
    -- the user is referenced. For example, \"John Doe.\"
    User -> Maybe (Sensitive Text)
displayName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | A list of @Email@ objects containing email addresses associated with the
    -- user.
    User -> Maybe (NonEmpty Email)
emails :: Prelude.Maybe (Prelude.NonEmpty Email),
    -- | A list of @ExternalId@ objects that contains the identifiers issued to
    -- this resource by an external identity provider.
    User -> Maybe (NonEmpty ExternalId)
externalIds :: Prelude.Maybe (Prelude.NonEmpty ExternalId),
    -- | A string containing the user\'s geographical region or location.
    User -> Maybe (Sensitive Text)
locale :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | An object containing the user\'s name.
    User -> Maybe Name
name :: Prelude.Maybe Name,
    -- | A string containing an alternate name for the user.
    User -> Maybe (Sensitive Text)
nickName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | A list of @PhoneNumber@ objects containing phone numbers associated with
    -- the user.
    User -> Maybe (NonEmpty PhoneNumber)
phoneNumbers :: Prelude.Maybe (Prelude.NonEmpty PhoneNumber),
    -- | A string containing the preferred language of the user. For example,
    -- \"American English\" or \"en-us.\"
    User -> Maybe (Sensitive Text)
preferredLanguage :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | A string containing a URL that may be associated with the user.
    User -> Maybe (Sensitive Text)
profileUrl :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | A string containing the user\'s time zone.
    User -> Maybe (Sensitive Text)
timezone :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | A string containing the user\'s title. Possible values depend on each
    -- customer\'s specific needs, so they are left unspecified.
    User -> Maybe (Sensitive Text)
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.
    User -> Maybe (Sensitive Text)
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.
    User -> Maybe (Sensitive Text)
userType :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The identifier for a user in the identity store.
    User -> Text
userId :: Prelude.Text,
    -- | The globally unique identifier for the identity store.
    User -> Text
identityStoreId :: Prelude.Text
  }
  deriving (User -> User -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: User -> User -> Bool
$c/= :: User -> User -> Bool
== :: User -> User -> Bool
$c== :: User -> User -> Bool
Prelude.Eq, Int -> User -> ShowS
[User] -> ShowS
User -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [User] -> ShowS
$cshowList :: [User] -> ShowS
show :: User -> String
$cshow :: User -> String
showsPrec :: Int -> User -> ShowS
$cshowsPrec :: Int -> User -> ShowS
Prelude.Show, forall x. Rep User x -> User
forall x. User -> Rep User x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep User x -> User
$cfrom :: forall x. User -> Rep User x
Prelude.Generic)

-- |
-- Create a value of 'User' 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:
--
-- 'addresses', 'user_addresses' - A list of @Address@ objects containing addresses associated with the
-- user.
--
-- 'displayName', 'user_displayName' - A string containing the user\'s name that\'s formatted for display when
-- the user is referenced. For example, \"John Doe.\"
--
-- 'emails', 'user_emails' - A list of @Email@ objects containing email addresses associated with the
-- user.
--
-- 'externalIds', 'user_externalIds' - A list of @ExternalId@ objects that contains the identifiers issued to
-- this resource by an external identity provider.
--
-- 'locale', 'user_locale' - A string containing the user\'s geographical region or location.
--
-- 'name', 'user_name' - An object containing the user\'s name.
--
-- 'nickName', 'user_nickName' - A string containing an alternate name for the user.
--
-- 'phoneNumbers', 'user_phoneNumbers' - A list of @PhoneNumber@ objects containing phone numbers associated with
-- the user.
--
-- 'preferredLanguage', 'user_preferredLanguage' - A string containing the preferred language of the user. For example,
-- \"American English\" or \"en-us.\"
--
-- 'profileUrl', 'user_profileUrl' - A string containing a URL that may be associated with the user.
--
-- 'timezone', 'user_timezone' - A string containing the user\'s time zone.
--
-- 'title', 'user_title' - A string containing the user\'s title. Possible values depend on each
-- customer\'s specific needs, so they are left unspecified.
--
-- 'userName', 'user_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', 'user_userType' - A string indicating the user\'s type. Possible values depend on each
-- customer\'s specific needs, so they are left unspecified.
--
-- 'userId', 'user_userId' - The identifier for a user in the identity store.
--
-- 'identityStoreId', 'user_identityStoreId' - The globally unique identifier for the identity store.
newUser ::
  -- | 'userId'
  Prelude.Text ->
  -- | 'identityStoreId'
  Prelude.Text ->
  User
newUser :: Text -> Text -> User
newUser Text
pUserId_ Text
pIdentityStoreId_ =
  User'
    { $sel:addresses:User' :: Maybe (NonEmpty Address)
addresses = forall a. Maybe a
Prelude.Nothing,
      $sel:displayName:User' :: Maybe (Sensitive Text)
displayName = forall a. Maybe a
Prelude.Nothing,
      $sel:emails:User' :: Maybe (NonEmpty Email)
emails = forall a. Maybe a
Prelude.Nothing,
      $sel:externalIds:User' :: Maybe (NonEmpty ExternalId)
externalIds = forall a. Maybe a
Prelude.Nothing,
      $sel:locale:User' :: Maybe (Sensitive Text)
locale = forall a. Maybe a
Prelude.Nothing,
      $sel:name:User' :: Maybe Name
name = forall a. Maybe a
Prelude.Nothing,
      $sel:nickName:User' :: Maybe (Sensitive Text)
nickName = forall a. Maybe a
Prelude.Nothing,
      $sel:phoneNumbers:User' :: Maybe (NonEmpty PhoneNumber)
phoneNumbers = forall a. Maybe a
Prelude.Nothing,
      $sel:preferredLanguage:User' :: Maybe (Sensitive Text)
preferredLanguage = forall a. Maybe a
Prelude.Nothing,
      $sel:profileUrl:User' :: Maybe (Sensitive Text)
profileUrl = forall a. Maybe a
Prelude.Nothing,
      $sel:timezone:User' :: Maybe (Sensitive Text)
timezone = forall a. Maybe a
Prelude.Nothing,
      $sel:title:User' :: Maybe (Sensitive Text)
title = forall a. Maybe a
Prelude.Nothing,
      $sel:userName:User' :: Maybe (Sensitive Text)
userName = forall a. Maybe a
Prelude.Nothing,
      $sel:userType:User' :: Maybe (Sensitive Text)
userType = forall a. Maybe a
Prelude.Nothing,
      $sel:userId:User' :: Text
userId = Text
pUserId_,
      $sel:identityStoreId:User' :: Text
identityStoreId = Text
pIdentityStoreId_
    }

-- | A list of @Address@ objects containing addresses associated with the
-- user.
user_addresses :: Lens.Lens' User (Prelude.Maybe (Prelude.NonEmpty Address))
user_addresses :: Lens' User (Maybe (NonEmpty Address))
user_addresses = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (NonEmpty Address)
addresses :: Maybe (NonEmpty Address)
$sel:addresses:User' :: User -> Maybe (NonEmpty Address)
addresses} -> Maybe (NonEmpty Address)
addresses) (\s :: User
s@User' {} Maybe (NonEmpty Address)
a -> User
s {$sel:addresses:User' :: Maybe (NonEmpty Address)
addresses = Maybe (NonEmpty Address)
a} :: User) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A string containing the user\'s name that\'s formatted for display when
-- the user is referenced. For example, \"John Doe.\"
user_displayName :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_displayName :: Lens' User (Maybe Text)
user_displayName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (Sensitive Text)
displayName :: Maybe (Sensitive Text)
$sel:displayName:User' :: User -> Maybe (Sensitive Text)
displayName} -> Maybe (Sensitive Text)
displayName) (\s :: User
s@User' {} Maybe (Sensitive Text)
a -> User
s {$sel:displayName:User' :: Maybe (Sensitive Text)
displayName = Maybe (Sensitive Text)
a} :: User) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | A list of @Email@ objects containing email addresses associated with the
-- user.
user_emails :: Lens.Lens' User (Prelude.Maybe (Prelude.NonEmpty Email))
user_emails :: Lens' User (Maybe (NonEmpty Email))
user_emails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (NonEmpty Email)
emails :: Maybe (NonEmpty Email)
$sel:emails:User' :: User -> Maybe (NonEmpty Email)
emails} -> Maybe (NonEmpty Email)
emails) (\s :: User
s@User' {} Maybe (NonEmpty Email)
a -> User
s {$sel:emails:User' :: Maybe (NonEmpty Email)
emails = Maybe (NonEmpty Email)
a} :: User) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A list of @ExternalId@ objects that contains the identifiers issued to
-- this resource by an external identity provider.
user_externalIds :: Lens.Lens' User (Prelude.Maybe (Prelude.NonEmpty ExternalId))
user_externalIds :: Lens' User (Maybe (NonEmpty ExternalId))
user_externalIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (NonEmpty ExternalId)
externalIds :: Maybe (NonEmpty ExternalId)
$sel:externalIds:User' :: User -> Maybe (NonEmpty ExternalId)
externalIds} -> Maybe (NonEmpty ExternalId)
externalIds) (\s :: User
s@User' {} Maybe (NonEmpty ExternalId)
a -> User
s {$sel:externalIds:User' :: Maybe (NonEmpty ExternalId)
externalIds = Maybe (NonEmpty ExternalId)
a} :: User) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A string containing the user\'s geographical region or location.
user_locale :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_locale :: Lens' User (Maybe Text)
user_locale = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (Sensitive Text)
locale :: Maybe (Sensitive Text)
$sel:locale:User' :: User -> Maybe (Sensitive Text)
locale} -> Maybe (Sensitive Text)
locale) (\s :: User
s@User' {} Maybe (Sensitive Text)
a -> User
s {$sel:locale:User' :: Maybe (Sensitive Text)
locale = Maybe (Sensitive Text)
a} :: User) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | An object containing the user\'s name.
user_name :: Lens.Lens' User (Prelude.Maybe Name)
user_name :: Lens' User (Maybe Name)
user_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe Name
name :: Maybe Name
$sel:name:User' :: User -> Maybe Name
name} -> Maybe Name
name) (\s :: User
s@User' {} Maybe Name
a -> User
s {$sel:name:User' :: Maybe Name
name = Maybe Name
a} :: User)

-- | A string containing an alternate name for the user.
user_nickName :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_nickName :: Lens' User (Maybe Text)
user_nickName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (Sensitive Text)
nickName :: Maybe (Sensitive Text)
$sel:nickName:User' :: User -> Maybe (Sensitive Text)
nickName} -> Maybe (Sensitive Text)
nickName) (\s :: User
s@User' {} Maybe (Sensitive Text)
a -> User
s {$sel:nickName:User' :: Maybe (Sensitive Text)
nickName = Maybe (Sensitive Text)
a} :: User) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | A list of @PhoneNumber@ objects containing phone numbers associated with
-- the user.
user_phoneNumbers :: Lens.Lens' User (Prelude.Maybe (Prelude.NonEmpty PhoneNumber))
user_phoneNumbers :: Lens' User (Maybe (NonEmpty PhoneNumber))
user_phoneNumbers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (NonEmpty PhoneNumber)
phoneNumbers :: Maybe (NonEmpty PhoneNumber)
$sel:phoneNumbers:User' :: User -> Maybe (NonEmpty PhoneNumber)
phoneNumbers} -> Maybe (NonEmpty PhoneNumber)
phoneNumbers) (\s :: User
s@User' {} Maybe (NonEmpty PhoneNumber)
a -> User
s {$sel:phoneNumbers:User' :: Maybe (NonEmpty PhoneNumber)
phoneNumbers = Maybe (NonEmpty PhoneNumber)
a} :: User) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A string containing the preferred language of the user. For example,
-- \"American English\" or \"en-us.\"
user_preferredLanguage :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_preferredLanguage :: Lens' User (Maybe Text)
user_preferredLanguage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (Sensitive Text)
preferredLanguage :: Maybe (Sensitive Text)
$sel:preferredLanguage:User' :: User -> Maybe (Sensitive Text)
preferredLanguage} -> Maybe (Sensitive Text)
preferredLanguage) (\s :: User
s@User' {} Maybe (Sensitive Text)
a -> User
s {$sel:preferredLanguage:User' :: Maybe (Sensitive Text)
preferredLanguage = Maybe (Sensitive Text)
a} :: User) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | A string containing a URL that may be associated with the user.
user_profileUrl :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_profileUrl :: Lens' User (Maybe Text)
user_profileUrl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (Sensitive Text)
profileUrl :: Maybe (Sensitive Text)
$sel:profileUrl:User' :: User -> Maybe (Sensitive Text)
profileUrl} -> Maybe (Sensitive Text)
profileUrl) (\s :: User
s@User' {} Maybe (Sensitive Text)
a -> User
s {$sel:profileUrl:User' :: Maybe (Sensitive Text)
profileUrl = Maybe (Sensitive Text)
a} :: User) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | A string containing the user\'s time zone.
user_timezone :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_timezone :: Lens' User (Maybe Text)
user_timezone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (Sensitive Text)
timezone :: Maybe (Sensitive Text)
$sel:timezone:User' :: User -> Maybe (Sensitive Text)
timezone} -> Maybe (Sensitive Text)
timezone) (\s :: User
s@User' {} Maybe (Sensitive Text)
a -> User
s {$sel:timezone:User' :: Maybe (Sensitive Text)
timezone = Maybe (Sensitive Text)
a} :: User) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | A string containing the user\'s title. Possible values depend on each
-- customer\'s specific needs, so they are left unspecified.
user_title :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_title :: Lens' User (Maybe Text)
user_title = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (Sensitive Text)
title :: Maybe (Sensitive Text)
$sel:title:User' :: User -> Maybe (Sensitive Text)
title} -> Maybe (Sensitive Text)
title) (\s :: User
s@User' {} Maybe (Sensitive Text)
a -> User
s {$sel:title:User' :: Maybe (Sensitive Text)
title = Maybe (Sensitive Text)
a} :: User) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
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.
user_userName :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_userName :: Lens' User (Maybe Text)
user_userName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (Sensitive Text)
userName :: Maybe (Sensitive Text)
$sel:userName:User' :: User -> Maybe (Sensitive Text)
userName} -> Maybe (Sensitive Text)
userName) (\s :: User
s@User' {} Maybe (Sensitive Text)
a -> User
s {$sel:userName:User' :: Maybe (Sensitive Text)
userName = Maybe (Sensitive Text)
a} :: User) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | A string indicating the user\'s type. Possible values depend on each
-- customer\'s specific needs, so they are left unspecified.
user_userType :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_userType :: Lens' User (Maybe Text)
user_userType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (Sensitive Text)
userType :: Maybe (Sensitive Text)
$sel:userType:User' :: User -> Maybe (Sensitive Text)
userType} -> Maybe (Sensitive Text)
userType) (\s :: User
s@User' {} Maybe (Sensitive Text)
a -> User
s {$sel:userType:User' :: Maybe (Sensitive Text)
userType = Maybe (Sensitive Text)
a} :: User) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | The identifier for a user in the identity store.
user_userId :: Lens.Lens' User Prelude.Text
user_userId :: Lens' User Text
user_userId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Text
userId :: Text
$sel:userId:User' :: User -> Text
userId} -> Text
userId) (\s :: User
s@User' {} Text
a -> User
s {$sel:userId:User' :: Text
userId = Text
a} :: User)

-- | The globally unique identifier for the identity store.
user_identityStoreId :: Lens.Lens' User Prelude.Text
user_identityStoreId :: Lens' User Text
user_identityStoreId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Text
identityStoreId :: Text
$sel:identityStoreId:User' :: User -> Text
identityStoreId} -> Text
identityStoreId) (\s :: User
s@User' {} Text
a -> User
s {$sel:identityStoreId:User' :: Text
identityStoreId = Text
a} :: User)

instance Data.FromJSON User where
  parseJSON :: Value -> Parser User
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"User"
      ( \Object
x ->
          Maybe (NonEmpty Address)
-> Maybe (Sensitive Text)
-> Maybe (NonEmpty Email)
-> Maybe (NonEmpty ExternalId)
-> Maybe (Sensitive Text)
-> Maybe Name
-> Maybe (Sensitive Text)
-> Maybe (NonEmpty PhoneNumber)
-> Maybe (Sensitive Text)
-> Maybe (Sensitive Text)
-> Maybe (Sensitive Text)
-> Maybe (Sensitive Text)
-> Maybe (Sensitive Text)
-> Maybe (Sensitive Text)
-> Text
-> Text
-> User
User'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Addresses")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DisplayName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Emails")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ExternalIds")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Locale")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"NickName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"PhoneNumbers")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"PreferredLanguage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ProfileUrl")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Timezone")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Title")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"UserName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"UserType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"UserId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"IdentityStoreId")
      )

instance Prelude.Hashable User where
  hashWithSalt :: Int -> User -> Int
hashWithSalt Int
_salt User' {Maybe (NonEmpty Address)
Maybe (NonEmpty Email)
Maybe (NonEmpty ExternalId)
Maybe (NonEmpty PhoneNumber)
Maybe (Sensitive Text)
Maybe Name
Text
identityStoreId :: Text
userId :: Text
userType :: Maybe (Sensitive Text)
userName :: Maybe (Sensitive Text)
title :: Maybe (Sensitive Text)
timezone :: Maybe (Sensitive Text)
profileUrl :: Maybe (Sensitive Text)
preferredLanguage :: Maybe (Sensitive Text)
phoneNumbers :: Maybe (NonEmpty PhoneNumber)
nickName :: Maybe (Sensitive Text)
name :: Maybe Name
locale :: Maybe (Sensitive Text)
externalIds :: Maybe (NonEmpty ExternalId)
emails :: Maybe (NonEmpty Email)
displayName :: Maybe (Sensitive Text)
addresses :: Maybe (NonEmpty Address)
$sel:identityStoreId:User' :: User -> Text
$sel:userId:User' :: User -> Text
$sel:userType:User' :: User -> Maybe (Sensitive Text)
$sel:userName:User' :: User -> Maybe (Sensitive Text)
$sel:title:User' :: User -> Maybe (Sensitive Text)
$sel:timezone:User' :: User -> Maybe (Sensitive Text)
$sel:profileUrl:User' :: User -> Maybe (Sensitive Text)
$sel:preferredLanguage:User' :: User -> Maybe (Sensitive Text)
$sel:phoneNumbers:User' :: User -> Maybe (NonEmpty PhoneNumber)
$sel:nickName:User' :: User -> Maybe (Sensitive Text)
$sel:name:User' :: User -> Maybe Name
$sel:locale:User' :: User -> Maybe (Sensitive Text)
$sel:externalIds:User' :: User -> Maybe (NonEmpty ExternalId)
$sel:emails:User' :: User -> Maybe (NonEmpty Email)
$sel:displayName:User' :: User -> Maybe (Sensitive Text)
$sel:addresses:User' :: User -> Maybe (NonEmpty Address)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Address)
addresses
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
displayName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Email)
emails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty ExternalId)
externalIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
locale
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Name
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
nickName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty PhoneNumber)
phoneNumbers
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
preferredLanguage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
profileUrl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
timezone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
title
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
userName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
userType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
userId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
identityStoreId

instance Prelude.NFData User where
  rnf :: User -> ()
rnf User' {Maybe (NonEmpty Address)
Maybe (NonEmpty Email)
Maybe (NonEmpty ExternalId)
Maybe (NonEmpty PhoneNumber)
Maybe (Sensitive Text)
Maybe Name
Text
identityStoreId :: Text
userId :: Text
userType :: Maybe (Sensitive Text)
userName :: Maybe (Sensitive Text)
title :: Maybe (Sensitive Text)
timezone :: Maybe (Sensitive Text)
profileUrl :: Maybe (Sensitive Text)
preferredLanguage :: Maybe (Sensitive Text)
phoneNumbers :: Maybe (NonEmpty PhoneNumber)
nickName :: Maybe (Sensitive Text)
name :: Maybe Name
locale :: Maybe (Sensitive Text)
externalIds :: Maybe (NonEmpty ExternalId)
emails :: Maybe (NonEmpty Email)
displayName :: Maybe (Sensitive Text)
addresses :: Maybe (NonEmpty Address)
$sel:identityStoreId:User' :: User -> Text
$sel:userId:User' :: User -> Text
$sel:userType:User' :: User -> Maybe (Sensitive Text)
$sel:userName:User' :: User -> Maybe (Sensitive Text)
$sel:title:User' :: User -> Maybe (Sensitive Text)
$sel:timezone:User' :: User -> Maybe (Sensitive Text)
$sel:profileUrl:User' :: User -> Maybe (Sensitive Text)
$sel:preferredLanguage:User' :: User -> Maybe (Sensitive Text)
$sel:phoneNumbers:User' :: User -> Maybe (NonEmpty PhoneNumber)
$sel:nickName:User' :: User -> Maybe (Sensitive Text)
$sel:name:User' :: User -> Maybe Name
$sel:locale:User' :: User -> Maybe (Sensitive Text)
$sel:externalIds:User' :: User -> Maybe (NonEmpty ExternalId)
$sel:emails:User' :: User -> Maybe (NonEmpty Email)
$sel:displayName:User' :: User -> Maybe (Sensitive Text)
$sel:addresses:User' :: User -> Maybe (NonEmpty Address)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Address)
addresses
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
displayName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Email)
emails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty ExternalId)
externalIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
locale
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Name
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
nickName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty PhoneNumber)
phoneNumbers
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
preferredLanguage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
profileUrl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
timezone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
title
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
userName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
userType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
userId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
identityStoreId