{-# 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.FinSpaceData.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.FinSpaceData.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.FinSpaceData.Types.ApiAccess
import Amazonka.FinSpaceData.Types.UserStatus
import Amazonka.FinSpaceData.Types.UserType
import qualified Amazonka.Prelude as Prelude

-- | The details of the user account.
--
-- /See:/ 'newUser' smart constructor.
data User = User'
  { -- | Indicates whether the user can use the
    -- @GetProgrammaticAccessCredentials@ API to obtain credentials that can
    -- then be used to access other FinSpace Data API operations.
    --
    -- -   @ENABLED@ – The user has permissions to use the APIs.
    --
    -- -   @DISABLED@ – The user does not have permissions to use any APIs.
    User -> Maybe ApiAccess
apiAccess :: Prelude.Maybe ApiAccess,
    -- | The ARN identifier of an AWS user or role that is allowed to call the
    -- @GetProgrammaticAccessCredentials@ API to obtain a credentials token for
    -- a specific FinSpace user. This must be an IAM role within your FinSpace
    -- account.
    User -> Maybe Text
apiAccessPrincipalArn :: Prelude.Maybe Prelude.Text,
    -- | The timestamp at which the user account was created in FinSpace. The
    -- value is determined as epoch time in milliseconds.
    User -> Maybe Integer
createTime :: Prelude.Maybe Prelude.Integer,
    -- | The email address of the user. The email address serves as a uniquer
    -- identifier for each user and cannot be changed after it\'s created.
    User -> Maybe (Sensitive Text)
emailAddress :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The first name of the user.
    User -> Maybe (Sensitive Text)
firstName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | Describes the last time the user account was disabled. The value is
    -- determined as epoch time in milliseconds.
    User -> Maybe Integer
lastDisabledTime :: Prelude.Maybe Prelude.Integer,
    -- | Describes the last time the user account was enabled. The value is
    -- determined as epoch time in milliseconds.
    User -> Maybe Integer
lastEnabledTime :: Prelude.Maybe Prelude.Integer,
    -- | Describes the last time that the user logged into their account. The
    -- value is determined as epoch time in milliseconds.
    User -> Maybe Integer
lastLoginTime :: Prelude.Maybe Prelude.Integer,
    -- | Describes the last time the user account was updated. The value is
    -- determined as epoch time in milliseconds.
    User -> Maybe Integer
lastModifiedTime :: Prelude.Maybe Prelude.Integer,
    -- | The last name of the user.
    User -> Maybe (Sensitive Text)
lastName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The current status of the user account.
    --
    -- -   @CREATING@ – The user account creation is in progress.
    --
    -- -   @ENABLED@ – The user account is created and is currently active.
    --
    -- -   @DISABLED@ – The user account is currently inactive.
    User -> Maybe UserStatus
status :: Prelude.Maybe UserStatus,
    -- | Indicates the type of user.
    --
    -- -   @SUPER_USER@ – A user with permission to all the functionality and
    --     data in FinSpace.
    --
    -- -   @APP_USER@ – A user with specific permissions in FinSpace. The users
    --     are assigned permissions by adding them to a permission group.
    User -> Maybe UserType
type' :: Prelude.Maybe UserType,
    -- | The unique identifier for the user.
    User -> Maybe Text
userId :: Prelude.Maybe 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:
--
-- 'apiAccess', 'user_apiAccess' - Indicates whether the user can use the
-- @GetProgrammaticAccessCredentials@ API to obtain credentials that can
-- then be used to access other FinSpace Data API operations.
--
-- -   @ENABLED@ – The user has permissions to use the APIs.
--
-- -   @DISABLED@ – The user does not have permissions to use any APIs.
--
-- 'apiAccessPrincipalArn', 'user_apiAccessPrincipalArn' - The ARN identifier of an AWS user or role that is allowed to call the
-- @GetProgrammaticAccessCredentials@ API to obtain a credentials token for
-- a specific FinSpace user. This must be an IAM role within your FinSpace
-- account.
--
-- 'createTime', 'user_createTime' - The timestamp at which the user account was created in FinSpace. The
-- value is determined as epoch time in milliseconds.
--
-- 'emailAddress', 'user_emailAddress' - The email address of the user. The email address serves as a uniquer
-- identifier for each user and cannot be changed after it\'s created.
--
-- 'firstName', 'user_firstName' - The first name of the user.
--
-- 'lastDisabledTime', 'user_lastDisabledTime' - Describes the last time the user account was disabled. The value is
-- determined as epoch time in milliseconds.
--
-- 'lastEnabledTime', 'user_lastEnabledTime' - Describes the last time the user account was enabled. The value is
-- determined as epoch time in milliseconds.
--
-- 'lastLoginTime', 'user_lastLoginTime' - Describes the last time that the user logged into their account. The
-- value is determined as epoch time in milliseconds.
--
-- 'lastModifiedTime', 'user_lastModifiedTime' - Describes the last time the user account was updated. The value is
-- determined as epoch time in milliseconds.
--
-- 'lastName', 'user_lastName' - The last name of the user.
--
-- 'status', 'user_status' - The current status of the user account.
--
-- -   @CREATING@ – The user account creation is in progress.
--
-- -   @ENABLED@ – The user account is created and is currently active.
--
-- -   @DISABLED@ – The user account is currently inactive.
--
-- 'type'', 'user_type' - Indicates the type of user.
--
-- -   @SUPER_USER@ – A user with permission to all the functionality and
--     data in FinSpace.
--
-- -   @APP_USER@ – A user with specific permissions in FinSpace. The users
--     are assigned permissions by adding them to a permission group.
--
-- 'userId', 'user_userId' - The unique identifier for the user.
newUser ::
  User
newUser :: User
newUser =
  User'
    { $sel:apiAccess:User' :: Maybe ApiAccess
apiAccess = forall a. Maybe a
Prelude.Nothing,
      $sel:apiAccessPrincipalArn:User' :: Maybe Text
apiAccessPrincipalArn = forall a. Maybe a
Prelude.Nothing,
      $sel:createTime:User' :: Maybe Integer
createTime = forall a. Maybe a
Prelude.Nothing,
      $sel:emailAddress:User' :: Maybe (Sensitive Text)
emailAddress = forall a. Maybe a
Prelude.Nothing,
      $sel:firstName:User' :: Maybe (Sensitive Text)
firstName = forall a. Maybe a
Prelude.Nothing,
      $sel:lastDisabledTime:User' :: Maybe Integer
lastDisabledTime = forall a. Maybe a
Prelude.Nothing,
      $sel:lastEnabledTime:User' :: Maybe Integer
lastEnabledTime = forall a. Maybe a
Prelude.Nothing,
      $sel:lastLoginTime:User' :: Maybe Integer
lastLoginTime = forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedTime:User' :: Maybe Integer
lastModifiedTime = forall a. Maybe a
Prelude.Nothing,
      $sel:lastName:User' :: Maybe (Sensitive Text)
lastName = forall a. Maybe a
Prelude.Nothing,
      $sel:status:User' :: Maybe UserStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:type':User' :: Maybe UserType
type' = forall a. Maybe a
Prelude.Nothing,
      $sel:userId:User' :: Maybe Text
userId = forall a. Maybe a
Prelude.Nothing
    }

-- | Indicates whether the user can use the
-- @GetProgrammaticAccessCredentials@ API to obtain credentials that can
-- then be used to access other FinSpace Data API operations.
--
-- -   @ENABLED@ – The user has permissions to use the APIs.
--
-- -   @DISABLED@ – The user does not have permissions to use any APIs.
user_apiAccess :: Lens.Lens' User (Prelude.Maybe ApiAccess)
user_apiAccess :: Lens' User (Maybe ApiAccess)
user_apiAccess = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe ApiAccess
apiAccess :: Maybe ApiAccess
$sel:apiAccess:User' :: User -> Maybe ApiAccess
apiAccess} -> Maybe ApiAccess
apiAccess) (\s :: User
s@User' {} Maybe ApiAccess
a -> User
s {$sel:apiAccess:User' :: Maybe ApiAccess
apiAccess = Maybe ApiAccess
a} :: User)

-- | The ARN identifier of an AWS user or role that is allowed to call the
-- @GetProgrammaticAccessCredentials@ API to obtain a credentials token for
-- a specific FinSpace user. This must be an IAM role within your FinSpace
-- account.
user_apiAccessPrincipalArn :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_apiAccessPrincipalArn :: Lens' User (Maybe Text)
user_apiAccessPrincipalArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe Text
apiAccessPrincipalArn :: Maybe Text
$sel:apiAccessPrincipalArn:User' :: User -> Maybe Text
apiAccessPrincipalArn} -> Maybe Text
apiAccessPrincipalArn) (\s :: User
s@User' {} Maybe Text
a -> User
s {$sel:apiAccessPrincipalArn:User' :: Maybe Text
apiAccessPrincipalArn = Maybe Text
a} :: User)

-- | The timestamp at which the user account was created in FinSpace. The
-- value is determined as epoch time in milliseconds.
user_createTime :: Lens.Lens' User (Prelude.Maybe Prelude.Integer)
user_createTime :: Lens' User (Maybe Integer)
user_createTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe Integer
createTime :: Maybe Integer
$sel:createTime:User' :: User -> Maybe Integer
createTime} -> Maybe Integer
createTime) (\s :: User
s@User' {} Maybe Integer
a -> User
s {$sel:createTime:User' :: Maybe Integer
createTime = Maybe Integer
a} :: User)

-- | The email address of the user. The email address serves as a uniquer
-- identifier for each user and cannot be changed after it\'s created.
user_emailAddress :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_emailAddress :: Lens' User (Maybe Text)
user_emailAddress = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (Sensitive Text)
emailAddress :: Maybe (Sensitive Text)
$sel:emailAddress:User' :: User -> Maybe (Sensitive Text)
emailAddress} -> Maybe (Sensitive Text)
emailAddress) (\s :: User
s@User' {} Maybe (Sensitive Text)
a -> User
s {$sel:emailAddress:User' :: Maybe (Sensitive Text)
emailAddress = 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 first name of the user.
user_firstName :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_firstName :: Lens' User (Maybe Text)
user_firstName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (Sensitive Text)
firstName :: Maybe (Sensitive Text)
$sel:firstName:User' :: User -> Maybe (Sensitive Text)
firstName} -> Maybe (Sensitive Text)
firstName) (\s :: User
s@User' {} Maybe (Sensitive Text)
a -> User
s {$sel:firstName:User' :: Maybe (Sensitive Text)
firstName = 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

-- | Describes the last time the user account was disabled. The value is
-- determined as epoch time in milliseconds.
user_lastDisabledTime :: Lens.Lens' User (Prelude.Maybe Prelude.Integer)
user_lastDisabledTime :: Lens' User (Maybe Integer)
user_lastDisabledTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe Integer
lastDisabledTime :: Maybe Integer
$sel:lastDisabledTime:User' :: User -> Maybe Integer
lastDisabledTime} -> Maybe Integer
lastDisabledTime) (\s :: User
s@User' {} Maybe Integer
a -> User
s {$sel:lastDisabledTime:User' :: Maybe Integer
lastDisabledTime = Maybe Integer
a} :: User)

-- | Describes the last time the user account was enabled. The value is
-- determined as epoch time in milliseconds.
user_lastEnabledTime :: Lens.Lens' User (Prelude.Maybe Prelude.Integer)
user_lastEnabledTime :: Lens' User (Maybe Integer)
user_lastEnabledTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe Integer
lastEnabledTime :: Maybe Integer
$sel:lastEnabledTime:User' :: User -> Maybe Integer
lastEnabledTime} -> Maybe Integer
lastEnabledTime) (\s :: User
s@User' {} Maybe Integer
a -> User
s {$sel:lastEnabledTime:User' :: Maybe Integer
lastEnabledTime = Maybe Integer
a} :: User)

-- | Describes the last time that the user logged into their account. The
-- value is determined as epoch time in milliseconds.
user_lastLoginTime :: Lens.Lens' User (Prelude.Maybe Prelude.Integer)
user_lastLoginTime :: Lens' User (Maybe Integer)
user_lastLoginTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe Integer
lastLoginTime :: Maybe Integer
$sel:lastLoginTime:User' :: User -> Maybe Integer
lastLoginTime} -> Maybe Integer
lastLoginTime) (\s :: User
s@User' {} Maybe Integer
a -> User
s {$sel:lastLoginTime:User' :: Maybe Integer
lastLoginTime = Maybe Integer
a} :: User)

-- | Describes the last time the user account was updated. The value is
-- determined as epoch time in milliseconds.
user_lastModifiedTime :: Lens.Lens' User (Prelude.Maybe Prelude.Integer)
user_lastModifiedTime :: Lens' User (Maybe Integer)
user_lastModifiedTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe Integer
lastModifiedTime :: Maybe Integer
$sel:lastModifiedTime:User' :: User -> Maybe Integer
lastModifiedTime} -> Maybe Integer
lastModifiedTime) (\s :: User
s@User' {} Maybe Integer
a -> User
s {$sel:lastModifiedTime:User' :: Maybe Integer
lastModifiedTime = Maybe Integer
a} :: User)

-- | The last name of the user.
user_lastName :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_lastName :: Lens' User (Maybe Text)
user_lastName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe (Sensitive Text)
lastName :: Maybe (Sensitive Text)
$sel:lastName:User' :: User -> Maybe (Sensitive Text)
lastName} -> Maybe (Sensitive Text)
lastName) (\s :: User
s@User' {} Maybe (Sensitive Text)
a -> User
s {$sel:lastName:User' :: Maybe (Sensitive Text)
lastName = 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 current status of the user account.
--
-- -   @CREATING@ – The user account creation is in progress.
--
-- -   @ENABLED@ – The user account is created and is currently active.
--
-- -   @DISABLED@ – The user account is currently inactive.
user_status :: Lens.Lens' User (Prelude.Maybe UserStatus)
user_status :: Lens' User (Maybe UserStatus)
user_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe UserStatus
status :: Maybe UserStatus
$sel:status:User' :: User -> Maybe UserStatus
status} -> Maybe UserStatus
status) (\s :: User
s@User' {} Maybe UserStatus
a -> User
s {$sel:status:User' :: Maybe UserStatus
status = Maybe UserStatus
a} :: User)

-- | Indicates the type of user.
--
-- -   @SUPER_USER@ – A user with permission to all the functionality and
--     data in FinSpace.
--
-- -   @APP_USER@ – A user with specific permissions in FinSpace. The users
--     are assigned permissions by adding them to a permission group.
user_type :: Lens.Lens' User (Prelude.Maybe UserType)
user_type :: Lens' User (Maybe UserType)
user_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe UserType
type' :: Maybe UserType
$sel:type':User' :: User -> Maybe UserType
type'} -> Maybe UserType
type') (\s :: User
s@User' {} Maybe UserType
a -> User
s {$sel:type':User' :: Maybe UserType
type' = Maybe UserType
a} :: User)

-- | The unique identifier for the user.
user_userId :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
user_userId :: Lens' User (Maybe Text)
user_userId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\User' {Maybe Text
userId :: Maybe Text
$sel:userId:User' :: User -> Maybe Text
userId} -> Maybe Text
userId) (\s :: User
s@User' {} Maybe Text
a -> User
s {$sel:userId:User' :: Maybe Text
userId = Maybe 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 ApiAccess
-> Maybe Text
-> Maybe Integer
-> Maybe (Sensitive Text)
-> Maybe (Sensitive Text)
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe (Sensitive Text)
-> Maybe UserStatus
-> Maybe UserType
-> Maybe 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
"apiAccess")
            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
"apiAccessPrincipalArn")
            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
"createTime")
            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
"emailAddress")
            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
"firstName")
            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
"lastDisabledTime")
            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
"lastEnabledTime")
            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
"lastLoginTime")
            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
"lastModifiedTime")
            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
"lastName")
            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
"status")
            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
"type")
            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
"userId")
      )

instance Prelude.Hashable User where
  hashWithSalt :: Int -> User -> Int
hashWithSalt Int
_salt User' {Maybe Integer
Maybe Text
Maybe (Sensitive Text)
Maybe ApiAccess
Maybe UserStatus
Maybe UserType
userId :: Maybe Text
type' :: Maybe UserType
status :: Maybe UserStatus
lastName :: Maybe (Sensitive Text)
lastModifiedTime :: Maybe Integer
lastLoginTime :: Maybe Integer
lastEnabledTime :: Maybe Integer
lastDisabledTime :: Maybe Integer
firstName :: Maybe (Sensitive Text)
emailAddress :: Maybe (Sensitive Text)
createTime :: Maybe Integer
apiAccessPrincipalArn :: Maybe Text
apiAccess :: Maybe ApiAccess
$sel:userId:User' :: User -> Maybe Text
$sel:type':User' :: User -> Maybe UserType
$sel:status:User' :: User -> Maybe UserStatus
$sel:lastName:User' :: User -> Maybe (Sensitive Text)
$sel:lastModifiedTime:User' :: User -> Maybe Integer
$sel:lastLoginTime:User' :: User -> Maybe Integer
$sel:lastEnabledTime:User' :: User -> Maybe Integer
$sel:lastDisabledTime:User' :: User -> Maybe Integer
$sel:firstName:User' :: User -> Maybe (Sensitive Text)
$sel:emailAddress:User' :: User -> Maybe (Sensitive Text)
$sel:createTime:User' :: User -> Maybe Integer
$sel:apiAccessPrincipalArn:User' :: User -> Maybe Text
$sel:apiAccess:User' :: User -> Maybe ApiAccess
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ApiAccess
apiAccess
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
apiAccessPrincipalArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
createTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
emailAddress
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
firstName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
lastDisabledTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
lastEnabledTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
lastLoginTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
lastModifiedTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
lastName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UserStatus
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UserType
type'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
userId

instance Prelude.NFData User where
  rnf :: User -> ()
rnf User' {Maybe Integer
Maybe Text
Maybe (Sensitive Text)
Maybe ApiAccess
Maybe UserStatus
Maybe UserType
userId :: Maybe Text
type' :: Maybe UserType
status :: Maybe UserStatus
lastName :: Maybe (Sensitive Text)
lastModifiedTime :: Maybe Integer
lastLoginTime :: Maybe Integer
lastEnabledTime :: Maybe Integer
lastDisabledTime :: Maybe Integer
firstName :: Maybe (Sensitive Text)
emailAddress :: Maybe (Sensitive Text)
createTime :: Maybe Integer
apiAccessPrincipalArn :: Maybe Text
apiAccess :: Maybe ApiAccess
$sel:userId:User' :: User -> Maybe Text
$sel:type':User' :: User -> Maybe UserType
$sel:status:User' :: User -> Maybe UserStatus
$sel:lastName:User' :: User -> Maybe (Sensitive Text)
$sel:lastModifiedTime:User' :: User -> Maybe Integer
$sel:lastLoginTime:User' :: User -> Maybe Integer
$sel:lastEnabledTime:User' :: User -> Maybe Integer
$sel:lastDisabledTime:User' :: User -> Maybe Integer
$sel:firstName:User' :: User -> Maybe (Sensitive Text)
$sel:emailAddress:User' :: User -> Maybe (Sensitive Text)
$sel:createTime:User' :: User -> Maybe Integer
$sel:apiAccessPrincipalArn:User' :: User -> Maybe Text
$sel:apiAccess:User' :: User -> Maybe ApiAccess
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ApiAccess
apiAccess
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
apiAccessPrincipalArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
createTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
emailAddress
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
firstName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
lastDisabledTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
lastEnabledTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
lastLoginTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
lastModifiedTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
lastName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe UserStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe UserType
type'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
userId