{-# 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.CognitoIdentityProvider.Types.UserPoolType
-- 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.CognitoIdentityProvider.Types.UserPoolType where

import Amazonka.CognitoIdentityProvider.Types.AccountRecoverySettingType
import Amazonka.CognitoIdentityProvider.Types.AdminCreateUserConfigType
import Amazonka.CognitoIdentityProvider.Types.AliasAttributeType
import Amazonka.CognitoIdentityProvider.Types.DeletionProtectionType
import Amazonka.CognitoIdentityProvider.Types.DeviceConfigurationType
import Amazonka.CognitoIdentityProvider.Types.EmailConfigurationType
import Amazonka.CognitoIdentityProvider.Types.LambdaConfigType
import Amazonka.CognitoIdentityProvider.Types.SchemaAttributeType
import Amazonka.CognitoIdentityProvider.Types.SmsConfigurationType
import Amazonka.CognitoIdentityProvider.Types.StatusType
import Amazonka.CognitoIdentityProvider.Types.UserAttributeUpdateSettingsType
import Amazonka.CognitoIdentityProvider.Types.UserPoolAddOnsType
import Amazonka.CognitoIdentityProvider.Types.UserPoolMfaType
import Amazonka.CognitoIdentityProvider.Types.UserPoolPolicyType
import Amazonka.CognitoIdentityProvider.Types.UsernameAttributeType
import Amazonka.CognitoIdentityProvider.Types.UsernameConfigurationType
import Amazonka.CognitoIdentityProvider.Types.VerificationMessageTemplateType
import Amazonka.CognitoIdentityProvider.Types.VerifiedAttributeType
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | A container for information about the user pool.
--
-- /See:/ 'newUserPoolType' smart constructor.
data UserPoolType = UserPoolType'
  { -- | The available verified method a user can use to recover their password
    -- when they call @ForgotPassword@. You can use this setting to define a
    -- preferred method when a user has more than one method available. With
    -- this setting, SMS doesn\'t qualify for a valid password recovery
    -- mechanism if the user also has SMS multi-factor authentication (MFA)
    -- activated. In the absence of this setting, Amazon Cognito uses the
    -- legacy behavior to determine the recovery method where SMS is preferred
    -- through email.
    UserPoolType -> Maybe AccountRecoverySettingType
accountRecoverySetting :: Prelude.Maybe AccountRecoverySettingType,
    -- | The configuration for @AdminCreateUser@ requests.
    UserPoolType -> Maybe AdminCreateUserConfigType
adminCreateUserConfig :: Prelude.Maybe AdminCreateUserConfigType,
    -- | The attributes that are aliased in a user pool.
    UserPoolType -> Maybe [AliasAttributeType]
aliasAttributes :: Prelude.Maybe [AliasAttributeType],
    -- | The Amazon Resource Name (ARN) for the user pool.
    UserPoolType -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The attributes that are auto-verified in a user pool.
    UserPoolType -> Maybe [VerifiedAttributeType]
autoVerifiedAttributes :: Prelude.Maybe [VerifiedAttributeType],
    -- | The date the user pool was created.
    UserPoolType -> Maybe POSIX
creationDate :: Prelude.Maybe Data.POSIX,
    -- | A custom domain name that you provide to Amazon Cognito. This parameter
    -- applies only if you use a custom domain to host the sign-up and sign-in
    -- pages for your application. An example of a custom domain name might be
    -- @auth.example.com@.
    --
    -- For more information about adding a custom domain to your user pool, see
    -- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-add-custom-domain.html Using Your Own Domain for the Hosted UI>.
    UserPoolType -> Maybe Text
customDomain :: Prelude.Maybe Prelude.Text,
    -- | When active, @DeletionProtection@ prevents accidental deletion of your
    -- user pool. Before you can delete a user pool that you have protected
    -- against deletion, you must deactivate this feature.
    --
    -- When you try to delete a protected user pool in a @DeleteUserPool@ API
    -- request, Amazon Cognito returns an @InvalidParameterException@ error. To
    -- delete a protected user pool, send a new @DeleteUserPool@ request after
    -- you deactivate deletion protection in an @UpdateUserPool@ API request.
    UserPoolType -> Maybe DeletionProtectionType
deletionProtection :: Prelude.Maybe DeletionProtectionType,
    -- | The device-remembering configuration for a user pool. A null value
    -- indicates that you have deactivated device remembering in your user
    -- pool.
    --
    -- When you provide a value for any @DeviceConfiguration@ field, you
    -- activate the Amazon Cognito device-remembering feature.
    UserPoolType -> Maybe DeviceConfigurationType
deviceConfiguration :: Prelude.Maybe DeviceConfigurationType,
    -- | The domain prefix, if the user pool has a domain associated with it.
    UserPoolType -> Maybe Text
domain :: Prelude.Maybe Prelude.Text,
    -- | The email configuration of your user pool. The email configuration type
    -- sets your preferred sending method, Amazon Web Services Region, and
    -- sender for messages tfrom your user pool.
    UserPoolType -> Maybe EmailConfigurationType
emailConfiguration :: Prelude.Maybe EmailConfigurationType,
    -- | Deprecated. Review error codes from API requests with
    -- @EventSource:cognito-idp.amazonaws.com@ in CloudTrail for information
    -- about problems with user pool email configuration.
    UserPoolType -> Maybe Text
emailConfigurationFailure :: Prelude.Maybe Prelude.Text,
    -- | This parameter is no longer used. See
    -- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerificationMessageTemplateType.html VerificationMessageTemplateType>.
    UserPoolType -> Maybe Text
emailVerificationMessage :: Prelude.Maybe Prelude.Text,
    -- | This parameter is no longer used. See
    -- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerificationMessageTemplateType.html VerificationMessageTemplateType>.
    UserPoolType -> Maybe Text
emailVerificationSubject :: Prelude.Maybe Prelude.Text,
    -- | A number estimating the size of the user pool.
    UserPoolType -> Maybe Int
estimatedNumberOfUsers :: Prelude.Maybe Prelude.Int,
    -- | The ID of the user pool.
    UserPoolType -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | The Lambda triggers associated with the user pool.
    UserPoolType -> Maybe LambdaConfigType
lambdaConfig :: Prelude.Maybe LambdaConfigType,
    -- | The date the user pool was last modified.
    UserPoolType -> Maybe POSIX
lastModifiedDate :: Prelude.Maybe Data.POSIX,
    -- | Can be one of the following values:
    --
    -- -   @OFF@ - MFA tokens aren\'t required and can\'t be specified during
    --     user registration.
    --
    -- -   @ON@ - MFA tokens are required for all user registrations. You can
    --     only specify required when you\'re initially creating a user pool.
    --
    -- -   @OPTIONAL@ - Users have the option when registering to create an MFA
    --     token.
    UserPoolType -> Maybe UserPoolMfaType
mfaConfiguration :: Prelude.Maybe UserPoolMfaType,
    -- | The name of the user pool.
    UserPoolType -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The policies associated with the user pool.
    UserPoolType -> Maybe UserPoolPolicyType
policies :: Prelude.Maybe UserPoolPolicyType,
    -- | A container with the schema attributes of a user pool.
    UserPoolType -> Maybe (NonEmpty SchemaAttributeType)
schemaAttributes :: Prelude.Maybe (Prelude.NonEmpty SchemaAttributeType),
    -- | The contents of the SMS authentication message.
    UserPoolType -> Maybe Text
smsAuthenticationMessage :: Prelude.Maybe Prelude.Text,
    -- | The SMS configuration with the settings that your Amazon Cognito user
    -- pool must use to send an SMS message from your Amazon Web Services
    -- account through Amazon Simple Notification Service. To send SMS messages
    -- with Amazon SNS in the Amazon Web Services Region that you want, the
    -- Amazon Cognito user pool uses an Identity and Access Management (IAM)
    -- role in your Amazon Web Services account.
    UserPoolType -> Maybe SmsConfigurationType
smsConfiguration :: Prelude.Maybe SmsConfigurationType,
    -- | The reason why the SMS configuration can\'t send the messages to your
    -- users.
    --
    -- This message might include comma-separated values to describe why your
    -- SMS configuration can\'t send messages to user pool end users.
    --
    -- [InvalidSmsRoleAccessPolicyException]
    --     The Identity and Access Management role that Amazon Cognito uses to
    --     send SMS messages isn\'t properly configured. For more information,
    --     see
    --     <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SmsConfigurationType.html SmsConfigurationType>.
    --
    -- [SNSSandbox]
    --     The Amazon Web Services account is in the SNS SMS Sandbox and
    --     messages will only reach verified end users. This parameter won’t
    --     get populated with SNSSandbox if the IAM user creating the user pool
    --     doesn’t have SNS permissions. To learn how to move your Amazon Web
    --     Services account out of the sandbox, see
    --     <https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox-moving-to-production.html Moving out of the SMS sandbox>.
    UserPoolType -> Maybe Text
smsConfigurationFailure :: Prelude.Maybe Prelude.Text,
    -- | This parameter is no longer used. See
    -- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerificationMessageTemplateType.html VerificationMessageTemplateType>.
    UserPoolType -> Maybe Text
smsVerificationMessage :: Prelude.Maybe Prelude.Text,
    -- | The status of a user pool.
    UserPoolType -> Maybe StatusType
status :: Prelude.Maybe StatusType,
    -- | The settings for updates to user attributes. These settings include the
    -- property @AttributesRequireVerificationBeforeUpdate@, a user-pool
    -- setting that tells Amazon Cognito how to handle changes to the value of
    -- your users\' email address and phone number attributes. For more
    -- information, see
    -- <https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-email-phone-verification.html#user-pool-settings-verifications-verify-attribute-updates Verifying updates to email addresses and phone numbers>.
    UserPoolType -> Maybe UserAttributeUpdateSettingsType
userAttributeUpdateSettings :: Prelude.Maybe UserAttributeUpdateSettingsType,
    -- | The user pool add-ons.
    UserPoolType -> Maybe UserPoolAddOnsType
userPoolAddOns :: Prelude.Maybe UserPoolAddOnsType,
    -- | The tags that are assigned to the user pool. A tag is a label that you
    -- can apply to user pools to categorize and manage them in different ways,
    -- such as by purpose, owner, environment, or other criteria.
    UserPoolType -> Maybe (HashMap Text Text)
userPoolTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Specifies whether a user can use an email address or phone number as a
    -- username when they sign up.
    UserPoolType -> Maybe [UsernameAttributeType]
usernameAttributes :: Prelude.Maybe [UsernameAttributeType],
    -- | Case sensitivity of the username input for the selected sign-in option.
    -- For example, when case sensitivity is set to @False@, users can sign in
    -- using either \"username\" or \"Username\". This configuration is
    -- immutable once it has been set. For more information, see
    -- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UsernameConfigurationType.html UsernameConfigurationType>.
    UserPoolType -> Maybe UsernameConfigurationType
usernameConfiguration :: Prelude.Maybe UsernameConfigurationType,
    -- | The template for verification messages.
    UserPoolType -> Maybe VerificationMessageTemplateType
verificationMessageTemplate :: Prelude.Maybe VerificationMessageTemplateType
  }
  deriving (UserPoolType -> UserPoolType -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UserPoolType -> UserPoolType -> Bool
$c/= :: UserPoolType -> UserPoolType -> Bool
== :: UserPoolType -> UserPoolType -> Bool
$c== :: UserPoolType -> UserPoolType -> Bool
Prelude.Eq, ReadPrec [UserPoolType]
ReadPrec UserPoolType
Int -> ReadS UserPoolType
ReadS [UserPoolType]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UserPoolType]
$creadListPrec :: ReadPrec [UserPoolType]
readPrec :: ReadPrec UserPoolType
$creadPrec :: ReadPrec UserPoolType
readList :: ReadS [UserPoolType]
$creadList :: ReadS [UserPoolType]
readsPrec :: Int -> ReadS UserPoolType
$creadsPrec :: Int -> ReadS UserPoolType
Prelude.Read, Int -> UserPoolType -> ShowS
[UserPoolType] -> ShowS
UserPoolType -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UserPoolType] -> ShowS
$cshowList :: [UserPoolType] -> ShowS
show :: UserPoolType -> String
$cshow :: UserPoolType -> String
showsPrec :: Int -> UserPoolType -> ShowS
$cshowsPrec :: Int -> UserPoolType -> ShowS
Prelude.Show, forall x. Rep UserPoolType x -> UserPoolType
forall x. UserPoolType -> Rep UserPoolType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UserPoolType x -> UserPoolType
$cfrom :: forall x. UserPoolType -> Rep UserPoolType x
Prelude.Generic)

-- |
-- Create a value of 'UserPoolType' 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:
--
-- 'accountRecoverySetting', 'userPoolType_accountRecoverySetting' - The available verified method a user can use to recover their password
-- when they call @ForgotPassword@. You can use this setting to define a
-- preferred method when a user has more than one method available. With
-- this setting, SMS doesn\'t qualify for a valid password recovery
-- mechanism if the user also has SMS multi-factor authentication (MFA)
-- activated. In the absence of this setting, Amazon Cognito uses the
-- legacy behavior to determine the recovery method where SMS is preferred
-- through email.
--
-- 'adminCreateUserConfig', 'userPoolType_adminCreateUserConfig' - The configuration for @AdminCreateUser@ requests.
--
-- 'aliasAttributes', 'userPoolType_aliasAttributes' - The attributes that are aliased in a user pool.
--
-- 'arn', 'userPoolType_arn' - The Amazon Resource Name (ARN) for the user pool.
--
-- 'autoVerifiedAttributes', 'userPoolType_autoVerifiedAttributes' - The attributes that are auto-verified in a user pool.
--
-- 'creationDate', 'userPoolType_creationDate' - The date the user pool was created.
--
-- 'customDomain', 'userPoolType_customDomain' - A custom domain name that you provide to Amazon Cognito. This parameter
-- applies only if you use a custom domain to host the sign-up and sign-in
-- pages for your application. An example of a custom domain name might be
-- @auth.example.com@.
--
-- For more information about adding a custom domain to your user pool, see
-- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-add-custom-domain.html Using Your Own Domain for the Hosted UI>.
--
-- 'deletionProtection', 'userPoolType_deletionProtection' - When active, @DeletionProtection@ prevents accidental deletion of your
-- user pool. Before you can delete a user pool that you have protected
-- against deletion, you must deactivate this feature.
--
-- When you try to delete a protected user pool in a @DeleteUserPool@ API
-- request, Amazon Cognito returns an @InvalidParameterException@ error. To
-- delete a protected user pool, send a new @DeleteUserPool@ request after
-- you deactivate deletion protection in an @UpdateUserPool@ API request.
--
-- 'deviceConfiguration', 'userPoolType_deviceConfiguration' - The device-remembering configuration for a user pool. A null value
-- indicates that you have deactivated device remembering in your user
-- pool.
--
-- When you provide a value for any @DeviceConfiguration@ field, you
-- activate the Amazon Cognito device-remembering feature.
--
-- 'domain', 'userPoolType_domain' - The domain prefix, if the user pool has a domain associated with it.
--
-- 'emailConfiguration', 'userPoolType_emailConfiguration' - The email configuration of your user pool. The email configuration type
-- sets your preferred sending method, Amazon Web Services Region, and
-- sender for messages tfrom your user pool.
--
-- 'emailConfigurationFailure', 'userPoolType_emailConfigurationFailure' - Deprecated. Review error codes from API requests with
-- @EventSource:cognito-idp.amazonaws.com@ in CloudTrail for information
-- about problems with user pool email configuration.
--
-- 'emailVerificationMessage', 'userPoolType_emailVerificationMessage' - This parameter is no longer used. See
-- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerificationMessageTemplateType.html VerificationMessageTemplateType>.
--
-- 'emailVerificationSubject', 'userPoolType_emailVerificationSubject' - This parameter is no longer used. See
-- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerificationMessageTemplateType.html VerificationMessageTemplateType>.
--
-- 'estimatedNumberOfUsers', 'userPoolType_estimatedNumberOfUsers' - A number estimating the size of the user pool.
--
-- 'id', 'userPoolType_id' - The ID of the user pool.
--
-- 'lambdaConfig', 'userPoolType_lambdaConfig' - The Lambda triggers associated with the user pool.
--
-- 'lastModifiedDate', 'userPoolType_lastModifiedDate' - The date the user pool was last modified.
--
-- 'mfaConfiguration', 'userPoolType_mfaConfiguration' - Can be one of the following values:
--
-- -   @OFF@ - MFA tokens aren\'t required and can\'t be specified during
--     user registration.
--
-- -   @ON@ - MFA tokens are required for all user registrations. You can
--     only specify required when you\'re initially creating a user pool.
--
-- -   @OPTIONAL@ - Users have the option when registering to create an MFA
--     token.
--
-- 'name', 'userPoolType_name' - The name of the user pool.
--
-- 'policies', 'userPoolType_policies' - The policies associated with the user pool.
--
-- 'schemaAttributes', 'userPoolType_schemaAttributes' - A container with the schema attributes of a user pool.
--
-- 'smsAuthenticationMessage', 'userPoolType_smsAuthenticationMessage' - The contents of the SMS authentication message.
--
-- 'smsConfiguration', 'userPoolType_smsConfiguration' - The SMS configuration with the settings that your Amazon Cognito user
-- pool must use to send an SMS message from your Amazon Web Services
-- account through Amazon Simple Notification Service. To send SMS messages
-- with Amazon SNS in the Amazon Web Services Region that you want, the
-- Amazon Cognito user pool uses an Identity and Access Management (IAM)
-- role in your Amazon Web Services account.
--
-- 'smsConfigurationFailure', 'userPoolType_smsConfigurationFailure' - The reason why the SMS configuration can\'t send the messages to your
-- users.
--
-- This message might include comma-separated values to describe why your
-- SMS configuration can\'t send messages to user pool end users.
--
-- [InvalidSmsRoleAccessPolicyException]
--     The Identity and Access Management role that Amazon Cognito uses to
--     send SMS messages isn\'t properly configured. For more information,
--     see
--     <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SmsConfigurationType.html SmsConfigurationType>.
--
-- [SNSSandbox]
--     The Amazon Web Services account is in the SNS SMS Sandbox and
--     messages will only reach verified end users. This parameter won’t
--     get populated with SNSSandbox if the IAM user creating the user pool
--     doesn’t have SNS permissions. To learn how to move your Amazon Web
--     Services account out of the sandbox, see
--     <https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox-moving-to-production.html Moving out of the SMS sandbox>.
--
-- 'smsVerificationMessage', 'userPoolType_smsVerificationMessage' - This parameter is no longer used. See
-- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerificationMessageTemplateType.html VerificationMessageTemplateType>.
--
-- 'status', 'userPoolType_status' - The status of a user pool.
--
-- 'userAttributeUpdateSettings', 'userPoolType_userAttributeUpdateSettings' - The settings for updates to user attributes. These settings include the
-- property @AttributesRequireVerificationBeforeUpdate@, a user-pool
-- setting that tells Amazon Cognito how to handle changes to the value of
-- your users\' email address and phone number attributes. For more
-- information, see
-- <https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-email-phone-verification.html#user-pool-settings-verifications-verify-attribute-updates Verifying updates to email addresses and phone numbers>.
--
-- 'userPoolAddOns', 'userPoolType_userPoolAddOns' - The user pool add-ons.
--
-- 'userPoolTags', 'userPoolType_userPoolTags' - The tags that are assigned to the user pool. A tag is a label that you
-- can apply to user pools to categorize and manage them in different ways,
-- such as by purpose, owner, environment, or other criteria.
--
-- 'usernameAttributes', 'userPoolType_usernameAttributes' - Specifies whether a user can use an email address or phone number as a
-- username when they sign up.
--
-- 'usernameConfiguration', 'userPoolType_usernameConfiguration' - Case sensitivity of the username input for the selected sign-in option.
-- For example, when case sensitivity is set to @False@, users can sign in
-- using either \"username\" or \"Username\". This configuration is
-- immutable once it has been set. For more information, see
-- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UsernameConfigurationType.html UsernameConfigurationType>.
--
-- 'verificationMessageTemplate', 'userPoolType_verificationMessageTemplate' - The template for verification messages.
newUserPoolType ::
  UserPoolType
newUserPoolType :: UserPoolType
newUserPoolType =
  UserPoolType'
    { $sel:accountRecoverySetting:UserPoolType' :: Maybe AccountRecoverySettingType
accountRecoverySetting =
        forall a. Maybe a
Prelude.Nothing,
      $sel:adminCreateUserConfig:UserPoolType' :: Maybe AdminCreateUserConfigType
adminCreateUserConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:aliasAttributes:UserPoolType' :: Maybe [AliasAttributeType]
aliasAttributes = forall a. Maybe a
Prelude.Nothing,
      $sel:arn:UserPoolType' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:autoVerifiedAttributes:UserPoolType' :: Maybe [VerifiedAttributeType]
autoVerifiedAttributes = forall a. Maybe a
Prelude.Nothing,
      $sel:creationDate:UserPoolType' :: Maybe POSIX
creationDate = forall a. Maybe a
Prelude.Nothing,
      $sel:customDomain:UserPoolType' :: Maybe Text
customDomain = forall a. Maybe a
Prelude.Nothing,
      $sel:deletionProtection:UserPoolType' :: Maybe DeletionProtectionType
deletionProtection = forall a. Maybe a
Prelude.Nothing,
      $sel:deviceConfiguration:UserPoolType' :: Maybe DeviceConfigurationType
deviceConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:domain:UserPoolType' :: Maybe Text
domain = forall a. Maybe a
Prelude.Nothing,
      $sel:emailConfiguration:UserPoolType' :: Maybe EmailConfigurationType
emailConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:emailConfigurationFailure:UserPoolType' :: Maybe Text
emailConfigurationFailure = forall a. Maybe a
Prelude.Nothing,
      $sel:emailVerificationMessage:UserPoolType' :: Maybe Text
emailVerificationMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:emailVerificationSubject:UserPoolType' :: Maybe Text
emailVerificationSubject = forall a. Maybe a
Prelude.Nothing,
      $sel:estimatedNumberOfUsers:UserPoolType' :: Maybe Int
estimatedNumberOfUsers = forall a. Maybe a
Prelude.Nothing,
      $sel:id:UserPoolType' :: Maybe Text
id = forall a. Maybe a
Prelude.Nothing,
      $sel:lambdaConfig:UserPoolType' :: Maybe LambdaConfigType
lambdaConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedDate:UserPoolType' :: Maybe POSIX
lastModifiedDate = forall a. Maybe a
Prelude.Nothing,
      $sel:mfaConfiguration:UserPoolType' :: Maybe UserPoolMfaType
mfaConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:name:UserPoolType' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:policies:UserPoolType' :: Maybe UserPoolPolicyType
policies = forall a. Maybe a
Prelude.Nothing,
      $sel:schemaAttributes:UserPoolType' :: Maybe (NonEmpty SchemaAttributeType)
schemaAttributes = forall a. Maybe a
Prelude.Nothing,
      $sel:smsAuthenticationMessage:UserPoolType' :: Maybe Text
smsAuthenticationMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:smsConfiguration:UserPoolType' :: Maybe SmsConfigurationType
smsConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:smsConfigurationFailure:UserPoolType' :: Maybe Text
smsConfigurationFailure = forall a. Maybe a
Prelude.Nothing,
      $sel:smsVerificationMessage:UserPoolType' :: Maybe Text
smsVerificationMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:status:UserPoolType' :: Maybe StatusType
status = forall a. Maybe a
Prelude.Nothing,
      $sel:userAttributeUpdateSettings:UserPoolType' :: Maybe UserAttributeUpdateSettingsType
userAttributeUpdateSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:userPoolAddOns:UserPoolType' :: Maybe UserPoolAddOnsType
userPoolAddOns = forall a. Maybe a
Prelude.Nothing,
      $sel:userPoolTags:UserPoolType' :: Maybe (HashMap Text Text)
userPoolTags = forall a. Maybe a
Prelude.Nothing,
      $sel:usernameAttributes:UserPoolType' :: Maybe [UsernameAttributeType]
usernameAttributes = forall a. Maybe a
Prelude.Nothing,
      $sel:usernameConfiguration:UserPoolType' :: Maybe UsernameConfigurationType
usernameConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:verificationMessageTemplate:UserPoolType' :: Maybe VerificationMessageTemplateType
verificationMessageTemplate = forall a. Maybe a
Prelude.Nothing
    }

-- | The available verified method a user can use to recover their password
-- when they call @ForgotPassword@. You can use this setting to define a
-- preferred method when a user has more than one method available. With
-- this setting, SMS doesn\'t qualify for a valid password recovery
-- mechanism if the user also has SMS multi-factor authentication (MFA)
-- activated. In the absence of this setting, Amazon Cognito uses the
-- legacy behavior to determine the recovery method where SMS is preferred
-- through email.
userPoolType_accountRecoverySetting :: Lens.Lens' UserPoolType (Prelude.Maybe AccountRecoverySettingType)
userPoolType_accountRecoverySetting :: Lens' UserPoolType (Maybe AccountRecoverySettingType)
userPoolType_accountRecoverySetting = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe AccountRecoverySettingType
accountRecoverySetting :: Maybe AccountRecoverySettingType
$sel:accountRecoverySetting:UserPoolType' :: UserPoolType -> Maybe AccountRecoverySettingType
accountRecoverySetting} -> Maybe AccountRecoverySettingType
accountRecoverySetting) (\s :: UserPoolType
s@UserPoolType' {} Maybe AccountRecoverySettingType
a -> UserPoolType
s {$sel:accountRecoverySetting:UserPoolType' :: Maybe AccountRecoverySettingType
accountRecoverySetting = Maybe AccountRecoverySettingType
a} :: UserPoolType)

-- | The configuration for @AdminCreateUser@ requests.
userPoolType_adminCreateUserConfig :: Lens.Lens' UserPoolType (Prelude.Maybe AdminCreateUserConfigType)
userPoolType_adminCreateUserConfig :: Lens' UserPoolType (Maybe AdminCreateUserConfigType)
userPoolType_adminCreateUserConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe AdminCreateUserConfigType
adminCreateUserConfig :: Maybe AdminCreateUserConfigType
$sel:adminCreateUserConfig:UserPoolType' :: UserPoolType -> Maybe AdminCreateUserConfigType
adminCreateUserConfig} -> Maybe AdminCreateUserConfigType
adminCreateUserConfig) (\s :: UserPoolType
s@UserPoolType' {} Maybe AdminCreateUserConfigType
a -> UserPoolType
s {$sel:adminCreateUserConfig:UserPoolType' :: Maybe AdminCreateUserConfigType
adminCreateUserConfig = Maybe AdminCreateUserConfigType
a} :: UserPoolType)

-- | The attributes that are aliased in a user pool.
userPoolType_aliasAttributes :: Lens.Lens' UserPoolType (Prelude.Maybe [AliasAttributeType])
userPoolType_aliasAttributes :: Lens' UserPoolType (Maybe [AliasAttributeType])
userPoolType_aliasAttributes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe [AliasAttributeType]
aliasAttributes :: Maybe [AliasAttributeType]
$sel:aliasAttributes:UserPoolType' :: UserPoolType -> Maybe [AliasAttributeType]
aliasAttributes} -> Maybe [AliasAttributeType]
aliasAttributes) (\s :: UserPoolType
s@UserPoolType' {} Maybe [AliasAttributeType]
a -> UserPoolType
s {$sel:aliasAttributes:UserPoolType' :: Maybe [AliasAttributeType]
aliasAttributes = Maybe [AliasAttributeType]
a} :: UserPoolType) 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

-- | The Amazon Resource Name (ARN) for the user pool.
userPoolType_arn :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_arn :: Lens' UserPoolType (Maybe Text)
userPoolType_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe Text
arn :: Maybe Text
$sel:arn:UserPoolType' :: UserPoolType -> Maybe Text
arn} -> Maybe Text
arn) (\s :: UserPoolType
s@UserPoolType' {} Maybe Text
a -> UserPoolType
s {$sel:arn:UserPoolType' :: Maybe Text
arn = Maybe Text
a} :: UserPoolType)

-- | The attributes that are auto-verified in a user pool.
userPoolType_autoVerifiedAttributes :: Lens.Lens' UserPoolType (Prelude.Maybe [VerifiedAttributeType])
userPoolType_autoVerifiedAttributes :: Lens' UserPoolType (Maybe [VerifiedAttributeType])
userPoolType_autoVerifiedAttributes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe [VerifiedAttributeType]
autoVerifiedAttributes :: Maybe [VerifiedAttributeType]
$sel:autoVerifiedAttributes:UserPoolType' :: UserPoolType -> Maybe [VerifiedAttributeType]
autoVerifiedAttributes} -> Maybe [VerifiedAttributeType]
autoVerifiedAttributes) (\s :: UserPoolType
s@UserPoolType' {} Maybe [VerifiedAttributeType]
a -> UserPoolType
s {$sel:autoVerifiedAttributes:UserPoolType' :: Maybe [VerifiedAttributeType]
autoVerifiedAttributes = Maybe [VerifiedAttributeType]
a} :: UserPoolType) 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

-- | The date the user pool was created.
userPoolType_creationDate :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.UTCTime)
userPoolType_creationDate :: Lens' UserPoolType (Maybe UTCTime)
userPoolType_creationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe POSIX
creationDate :: Maybe POSIX
$sel:creationDate:UserPoolType' :: UserPoolType -> Maybe POSIX
creationDate} -> Maybe POSIX
creationDate) (\s :: UserPoolType
s@UserPoolType' {} Maybe POSIX
a -> UserPoolType
s {$sel:creationDate:UserPoolType' :: Maybe POSIX
creationDate = Maybe POSIX
a} :: UserPoolType) 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 :: Format). Iso' (Time a) UTCTime
Data._Time

-- | A custom domain name that you provide to Amazon Cognito. This parameter
-- applies only if you use a custom domain to host the sign-up and sign-in
-- pages for your application. An example of a custom domain name might be
-- @auth.example.com@.
--
-- For more information about adding a custom domain to your user pool, see
-- <https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-add-custom-domain.html Using Your Own Domain for the Hosted UI>.
userPoolType_customDomain :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_customDomain :: Lens' UserPoolType (Maybe Text)
userPoolType_customDomain = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe Text
customDomain :: Maybe Text
$sel:customDomain:UserPoolType' :: UserPoolType -> Maybe Text
customDomain} -> Maybe Text
customDomain) (\s :: UserPoolType
s@UserPoolType' {} Maybe Text
a -> UserPoolType
s {$sel:customDomain:UserPoolType' :: Maybe Text
customDomain = Maybe Text
a} :: UserPoolType)

-- | When active, @DeletionProtection@ prevents accidental deletion of your
-- user pool. Before you can delete a user pool that you have protected
-- against deletion, you must deactivate this feature.
--
-- When you try to delete a protected user pool in a @DeleteUserPool@ API
-- request, Amazon Cognito returns an @InvalidParameterException@ error. To
-- delete a protected user pool, send a new @DeleteUserPool@ request after
-- you deactivate deletion protection in an @UpdateUserPool@ API request.
userPoolType_deletionProtection :: Lens.Lens' UserPoolType (Prelude.Maybe DeletionProtectionType)
userPoolType_deletionProtection :: Lens' UserPoolType (Maybe DeletionProtectionType)
userPoolType_deletionProtection = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe DeletionProtectionType
deletionProtection :: Maybe DeletionProtectionType
$sel:deletionProtection:UserPoolType' :: UserPoolType -> Maybe DeletionProtectionType
deletionProtection} -> Maybe DeletionProtectionType
deletionProtection) (\s :: UserPoolType
s@UserPoolType' {} Maybe DeletionProtectionType
a -> UserPoolType
s {$sel:deletionProtection:UserPoolType' :: Maybe DeletionProtectionType
deletionProtection = Maybe DeletionProtectionType
a} :: UserPoolType)

-- | The device-remembering configuration for a user pool. A null value
-- indicates that you have deactivated device remembering in your user
-- pool.
--
-- When you provide a value for any @DeviceConfiguration@ field, you
-- activate the Amazon Cognito device-remembering feature.
userPoolType_deviceConfiguration :: Lens.Lens' UserPoolType (Prelude.Maybe DeviceConfigurationType)
userPoolType_deviceConfiguration :: Lens' UserPoolType (Maybe DeviceConfigurationType)
userPoolType_deviceConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe DeviceConfigurationType
deviceConfiguration :: Maybe DeviceConfigurationType
$sel:deviceConfiguration:UserPoolType' :: UserPoolType -> Maybe DeviceConfigurationType
deviceConfiguration} -> Maybe DeviceConfigurationType
deviceConfiguration) (\s :: UserPoolType
s@UserPoolType' {} Maybe DeviceConfigurationType
a -> UserPoolType
s {$sel:deviceConfiguration:UserPoolType' :: Maybe DeviceConfigurationType
deviceConfiguration = Maybe DeviceConfigurationType
a} :: UserPoolType)

-- | The domain prefix, if the user pool has a domain associated with it.
userPoolType_domain :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_domain :: Lens' UserPoolType (Maybe Text)
userPoolType_domain = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe Text
domain :: Maybe Text
$sel:domain:UserPoolType' :: UserPoolType -> Maybe Text
domain} -> Maybe Text
domain) (\s :: UserPoolType
s@UserPoolType' {} Maybe Text
a -> UserPoolType
s {$sel:domain:UserPoolType' :: Maybe Text
domain = Maybe Text
a} :: UserPoolType)

-- | The email configuration of your user pool. The email configuration type
-- sets your preferred sending method, Amazon Web Services Region, and
-- sender for messages tfrom your user pool.
userPoolType_emailConfiguration :: Lens.Lens' UserPoolType (Prelude.Maybe EmailConfigurationType)
userPoolType_emailConfiguration :: Lens' UserPoolType (Maybe EmailConfigurationType)
userPoolType_emailConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe EmailConfigurationType
emailConfiguration :: Maybe EmailConfigurationType
$sel:emailConfiguration:UserPoolType' :: UserPoolType -> Maybe EmailConfigurationType
emailConfiguration} -> Maybe EmailConfigurationType
emailConfiguration) (\s :: UserPoolType
s@UserPoolType' {} Maybe EmailConfigurationType
a -> UserPoolType
s {$sel:emailConfiguration:UserPoolType' :: Maybe EmailConfigurationType
emailConfiguration = Maybe EmailConfigurationType
a} :: UserPoolType)

-- | Deprecated. Review error codes from API requests with
-- @EventSource:cognito-idp.amazonaws.com@ in CloudTrail for information
-- about problems with user pool email configuration.
userPoolType_emailConfigurationFailure :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_emailConfigurationFailure :: Lens' UserPoolType (Maybe Text)
userPoolType_emailConfigurationFailure = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe Text
emailConfigurationFailure :: Maybe Text
$sel:emailConfigurationFailure:UserPoolType' :: UserPoolType -> Maybe Text
emailConfigurationFailure} -> Maybe Text
emailConfigurationFailure) (\s :: UserPoolType
s@UserPoolType' {} Maybe Text
a -> UserPoolType
s {$sel:emailConfigurationFailure:UserPoolType' :: Maybe Text
emailConfigurationFailure = Maybe Text
a} :: UserPoolType)

-- | This parameter is no longer used. See
-- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerificationMessageTemplateType.html VerificationMessageTemplateType>.
userPoolType_emailVerificationMessage :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_emailVerificationMessage :: Lens' UserPoolType (Maybe Text)
userPoolType_emailVerificationMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe Text
emailVerificationMessage :: Maybe Text
$sel:emailVerificationMessage:UserPoolType' :: UserPoolType -> Maybe Text
emailVerificationMessage} -> Maybe Text
emailVerificationMessage) (\s :: UserPoolType
s@UserPoolType' {} Maybe Text
a -> UserPoolType
s {$sel:emailVerificationMessage:UserPoolType' :: Maybe Text
emailVerificationMessage = Maybe Text
a} :: UserPoolType)

-- | This parameter is no longer used. See
-- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerificationMessageTemplateType.html VerificationMessageTemplateType>.
userPoolType_emailVerificationSubject :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_emailVerificationSubject :: Lens' UserPoolType (Maybe Text)
userPoolType_emailVerificationSubject = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe Text
emailVerificationSubject :: Maybe Text
$sel:emailVerificationSubject:UserPoolType' :: UserPoolType -> Maybe Text
emailVerificationSubject} -> Maybe Text
emailVerificationSubject) (\s :: UserPoolType
s@UserPoolType' {} Maybe Text
a -> UserPoolType
s {$sel:emailVerificationSubject:UserPoolType' :: Maybe Text
emailVerificationSubject = Maybe Text
a} :: UserPoolType)

-- | A number estimating the size of the user pool.
userPoolType_estimatedNumberOfUsers :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Int)
userPoolType_estimatedNumberOfUsers :: Lens' UserPoolType (Maybe Int)
userPoolType_estimatedNumberOfUsers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe Int
estimatedNumberOfUsers :: Maybe Int
$sel:estimatedNumberOfUsers:UserPoolType' :: UserPoolType -> Maybe Int
estimatedNumberOfUsers} -> Maybe Int
estimatedNumberOfUsers) (\s :: UserPoolType
s@UserPoolType' {} Maybe Int
a -> UserPoolType
s {$sel:estimatedNumberOfUsers:UserPoolType' :: Maybe Int
estimatedNumberOfUsers = Maybe Int
a} :: UserPoolType)

-- | The ID of the user pool.
userPoolType_id :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_id :: Lens' UserPoolType (Maybe Text)
userPoolType_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe Text
id :: Maybe Text
$sel:id:UserPoolType' :: UserPoolType -> Maybe Text
id} -> Maybe Text
id) (\s :: UserPoolType
s@UserPoolType' {} Maybe Text
a -> UserPoolType
s {$sel:id:UserPoolType' :: Maybe Text
id = Maybe Text
a} :: UserPoolType)

-- | The Lambda triggers associated with the user pool.
userPoolType_lambdaConfig :: Lens.Lens' UserPoolType (Prelude.Maybe LambdaConfigType)
userPoolType_lambdaConfig :: Lens' UserPoolType (Maybe LambdaConfigType)
userPoolType_lambdaConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe LambdaConfigType
lambdaConfig :: Maybe LambdaConfigType
$sel:lambdaConfig:UserPoolType' :: UserPoolType -> Maybe LambdaConfigType
lambdaConfig} -> Maybe LambdaConfigType
lambdaConfig) (\s :: UserPoolType
s@UserPoolType' {} Maybe LambdaConfigType
a -> UserPoolType
s {$sel:lambdaConfig:UserPoolType' :: Maybe LambdaConfigType
lambdaConfig = Maybe LambdaConfigType
a} :: UserPoolType)

-- | The date the user pool was last modified.
userPoolType_lastModifiedDate :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.UTCTime)
userPoolType_lastModifiedDate :: Lens' UserPoolType (Maybe UTCTime)
userPoolType_lastModifiedDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe POSIX
lastModifiedDate :: Maybe POSIX
$sel:lastModifiedDate:UserPoolType' :: UserPoolType -> Maybe POSIX
lastModifiedDate} -> Maybe POSIX
lastModifiedDate) (\s :: UserPoolType
s@UserPoolType' {} Maybe POSIX
a -> UserPoolType
s {$sel:lastModifiedDate:UserPoolType' :: Maybe POSIX
lastModifiedDate = Maybe POSIX
a} :: UserPoolType) 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 :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Can be one of the following values:
--
-- -   @OFF@ - MFA tokens aren\'t required and can\'t be specified during
--     user registration.
--
-- -   @ON@ - MFA tokens are required for all user registrations. You can
--     only specify required when you\'re initially creating a user pool.
--
-- -   @OPTIONAL@ - Users have the option when registering to create an MFA
--     token.
userPoolType_mfaConfiguration :: Lens.Lens' UserPoolType (Prelude.Maybe UserPoolMfaType)
userPoolType_mfaConfiguration :: Lens' UserPoolType (Maybe UserPoolMfaType)
userPoolType_mfaConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe UserPoolMfaType
mfaConfiguration :: Maybe UserPoolMfaType
$sel:mfaConfiguration:UserPoolType' :: UserPoolType -> Maybe UserPoolMfaType
mfaConfiguration} -> Maybe UserPoolMfaType
mfaConfiguration) (\s :: UserPoolType
s@UserPoolType' {} Maybe UserPoolMfaType
a -> UserPoolType
s {$sel:mfaConfiguration:UserPoolType' :: Maybe UserPoolMfaType
mfaConfiguration = Maybe UserPoolMfaType
a} :: UserPoolType)

-- | The name of the user pool.
userPoolType_name :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_name :: Lens' UserPoolType (Maybe Text)
userPoolType_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe Text
name :: Maybe Text
$sel:name:UserPoolType' :: UserPoolType -> Maybe Text
name} -> Maybe Text
name) (\s :: UserPoolType
s@UserPoolType' {} Maybe Text
a -> UserPoolType
s {$sel:name:UserPoolType' :: Maybe Text
name = Maybe Text
a} :: UserPoolType)

-- | The policies associated with the user pool.
userPoolType_policies :: Lens.Lens' UserPoolType (Prelude.Maybe UserPoolPolicyType)
userPoolType_policies :: Lens' UserPoolType (Maybe UserPoolPolicyType)
userPoolType_policies = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe UserPoolPolicyType
policies :: Maybe UserPoolPolicyType
$sel:policies:UserPoolType' :: UserPoolType -> Maybe UserPoolPolicyType
policies} -> Maybe UserPoolPolicyType
policies) (\s :: UserPoolType
s@UserPoolType' {} Maybe UserPoolPolicyType
a -> UserPoolType
s {$sel:policies:UserPoolType' :: Maybe UserPoolPolicyType
policies = Maybe UserPoolPolicyType
a} :: UserPoolType)

-- | A container with the schema attributes of a user pool.
userPoolType_schemaAttributes :: Lens.Lens' UserPoolType (Prelude.Maybe (Prelude.NonEmpty SchemaAttributeType))
userPoolType_schemaAttributes :: Lens' UserPoolType (Maybe (NonEmpty SchemaAttributeType))
userPoolType_schemaAttributes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe (NonEmpty SchemaAttributeType)
schemaAttributes :: Maybe (NonEmpty SchemaAttributeType)
$sel:schemaAttributes:UserPoolType' :: UserPoolType -> Maybe (NonEmpty SchemaAttributeType)
schemaAttributes} -> Maybe (NonEmpty SchemaAttributeType)
schemaAttributes) (\s :: UserPoolType
s@UserPoolType' {} Maybe (NonEmpty SchemaAttributeType)
a -> UserPoolType
s {$sel:schemaAttributes:UserPoolType' :: Maybe (NonEmpty SchemaAttributeType)
schemaAttributes = Maybe (NonEmpty SchemaAttributeType)
a} :: UserPoolType) 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

-- | The contents of the SMS authentication message.
userPoolType_smsAuthenticationMessage :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_smsAuthenticationMessage :: Lens' UserPoolType (Maybe Text)
userPoolType_smsAuthenticationMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe Text
smsAuthenticationMessage :: Maybe Text
$sel:smsAuthenticationMessage:UserPoolType' :: UserPoolType -> Maybe Text
smsAuthenticationMessage} -> Maybe Text
smsAuthenticationMessage) (\s :: UserPoolType
s@UserPoolType' {} Maybe Text
a -> UserPoolType
s {$sel:smsAuthenticationMessage:UserPoolType' :: Maybe Text
smsAuthenticationMessage = Maybe Text
a} :: UserPoolType)

-- | The SMS configuration with the settings that your Amazon Cognito user
-- pool must use to send an SMS message from your Amazon Web Services
-- account through Amazon Simple Notification Service. To send SMS messages
-- with Amazon SNS in the Amazon Web Services Region that you want, the
-- Amazon Cognito user pool uses an Identity and Access Management (IAM)
-- role in your Amazon Web Services account.
userPoolType_smsConfiguration :: Lens.Lens' UserPoolType (Prelude.Maybe SmsConfigurationType)
userPoolType_smsConfiguration :: Lens' UserPoolType (Maybe SmsConfigurationType)
userPoolType_smsConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe SmsConfigurationType
smsConfiguration :: Maybe SmsConfigurationType
$sel:smsConfiguration:UserPoolType' :: UserPoolType -> Maybe SmsConfigurationType
smsConfiguration} -> Maybe SmsConfigurationType
smsConfiguration) (\s :: UserPoolType
s@UserPoolType' {} Maybe SmsConfigurationType
a -> UserPoolType
s {$sel:smsConfiguration:UserPoolType' :: Maybe SmsConfigurationType
smsConfiguration = Maybe SmsConfigurationType
a} :: UserPoolType)

-- | The reason why the SMS configuration can\'t send the messages to your
-- users.
--
-- This message might include comma-separated values to describe why your
-- SMS configuration can\'t send messages to user pool end users.
--
-- [InvalidSmsRoleAccessPolicyException]
--     The Identity and Access Management role that Amazon Cognito uses to
--     send SMS messages isn\'t properly configured. For more information,
--     see
--     <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SmsConfigurationType.html SmsConfigurationType>.
--
-- [SNSSandbox]
--     The Amazon Web Services account is in the SNS SMS Sandbox and
--     messages will only reach verified end users. This parameter won’t
--     get populated with SNSSandbox if the IAM user creating the user pool
--     doesn’t have SNS permissions. To learn how to move your Amazon Web
--     Services account out of the sandbox, see
--     <https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox-moving-to-production.html Moving out of the SMS sandbox>.
userPoolType_smsConfigurationFailure :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_smsConfigurationFailure :: Lens' UserPoolType (Maybe Text)
userPoolType_smsConfigurationFailure = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe Text
smsConfigurationFailure :: Maybe Text
$sel:smsConfigurationFailure:UserPoolType' :: UserPoolType -> Maybe Text
smsConfigurationFailure} -> Maybe Text
smsConfigurationFailure) (\s :: UserPoolType
s@UserPoolType' {} Maybe Text
a -> UserPoolType
s {$sel:smsConfigurationFailure:UserPoolType' :: Maybe Text
smsConfigurationFailure = Maybe Text
a} :: UserPoolType)

-- | This parameter is no longer used. See
-- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerificationMessageTemplateType.html VerificationMessageTemplateType>.
userPoolType_smsVerificationMessage :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_smsVerificationMessage :: Lens' UserPoolType (Maybe Text)
userPoolType_smsVerificationMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe Text
smsVerificationMessage :: Maybe Text
$sel:smsVerificationMessage:UserPoolType' :: UserPoolType -> Maybe Text
smsVerificationMessage} -> Maybe Text
smsVerificationMessage) (\s :: UserPoolType
s@UserPoolType' {} Maybe Text
a -> UserPoolType
s {$sel:smsVerificationMessage:UserPoolType' :: Maybe Text
smsVerificationMessage = Maybe Text
a} :: UserPoolType)

-- | The status of a user pool.
userPoolType_status :: Lens.Lens' UserPoolType (Prelude.Maybe StatusType)
userPoolType_status :: Lens' UserPoolType (Maybe StatusType)
userPoolType_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe StatusType
status :: Maybe StatusType
$sel:status:UserPoolType' :: UserPoolType -> Maybe StatusType
status} -> Maybe StatusType
status) (\s :: UserPoolType
s@UserPoolType' {} Maybe StatusType
a -> UserPoolType
s {$sel:status:UserPoolType' :: Maybe StatusType
status = Maybe StatusType
a} :: UserPoolType)

-- | The settings for updates to user attributes. These settings include the
-- property @AttributesRequireVerificationBeforeUpdate@, a user-pool
-- setting that tells Amazon Cognito how to handle changes to the value of
-- your users\' email address and phone number attributes. For more
-- information, see
-- <https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-email-phone-verification.html#user-pool-settings-verifications-verify-attribute-updates Verifying updates to email addresses and phone numbers>.
userPoolType_userAttributeUpdateSettings :: Lens.Lens' UserPoolType (Prelude.Maybe UserAttributeUpdateSettingsType)
userPoolType_userAttributeUpdateSettings :: Lens' UserPoolType (Maybe UserAttributeUpdateSettingsType)
userPoolType_userAttributeUpdateSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe UserAttributeUpdateSettingsType
userAttributeUpdateSettings :: Maybe UserAttributeUpdateSettingsType
$sel:userAttributeUpdateSettings:UserPoolType' :: UserPoolType -> Maybe UserAttributeUpdateSettingsType
userAttributeUpdateSettings} -> Maybe UserAttributeUpdateSettingsType
userAttributeUpdateSettings) (\s :: UserPoolType
s@UserPoolType' {} Maybe UserAttributeUpdateSettingsType
a -> UserPoolType
s {$sel:userAttributeUpdateSettings:UserPoolType' :: Maybe UserAttributeUpdateSettingsType
userAttributeUpdateSettings = Maybe UserAttributeUpdateSettingsType
a} :: UserPoolType)

-- | The user pool add-ons.
userPoolType_userPoolAddOns :: Lens.Lens' UserPoolType (Prelude.Maybe UserPoolAddOnsType)
userPoolType_userPoolAddOns :: Lens' UserPoolType (Maybe UserPoolAddOnsType)
userPoolType_userPoolAddOns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe UserPoolAddOnsType
userPoolAddOns :: Maybe UserPoolAddOnsType
$sel:userPoolAddOns:UserPoolType' :: UserPoolType -> Maybe UserPoolAddOnsType
userPoolAddOns} -> Maybe UserPoolAddOnsType
userPoolAddOns) (\s :: UserPoolType
s@UserPoolType' {} Maybe UserPoolAddOnsType
a -> UserPoolType
s {$sel:userPoolAddOns:UserPoolType' :: Maybe UserPoolAddOnsType
userPoolAddOns = Maybe UserPoolAddOnsType
a} :: UserPoolType)

-- | The tags that are assigned to the user pool. A tag is a label that you
-- can apply to user pools to categorize and manage them in different ways,
-- such as by purpose, owner, environment, or other criteria.
userPoolType_userPoolTags :: Lens.Lens' UserPoolType (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
userPoolType_userPoolTags :: Lens' UserPoolType (Maybe (HashMap Text Text))
userPoolType_userPoolTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe (HashMap Text Text)
userPoolTags :: Maybe (HashMap Text Text)
$sel:userPoolTags:UserPoolType' :: UserPoolType -> Maybe (HashMap Text Text)
userPoolTags} -> Maybe (HashMap Text Text)
userPoolTags) (\s :: UserPoolType
s@UserPoolType' {} Maybe (HashMap Text Text)
a -> UserPoolType
s {$sel:userPoolTags:UserPoolType' :: Maybe (HashMap Text Text)
userPoolTags = Maybe (HashMap Text Text)
a} :: UserPoolType) 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

-- | Specifies whether a user can use an email address or phone number as a
-- username when they sign up.
userPoolType_usernameAttributes :: Lens.Lens' UserPoolType (Prelude.Maybe [UsernameAttributeType])
userPoolType_usernameAttributes :: Lens' UserPoolType (Maybe [UsernameAttributeType])
userPoolType_usernameAttributes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe [UsernameAttributeType]
usernameAttributes :: Maybe [UsernameAttributeType]
$sel:usernameAttributes:UserPoolType' :: UserPoolType -> Maybe [UsernameAttributeType]
usernameAttributes} -> Maybe [UsernameAttributeType]
usernameAttributes) (\s :: UserPoolType
s@UserPoolType' {} Maybe [UsernameAttributeType]
a -> UserPoolType
s {$sel:usernameAttributes:UserPoolType' :: Maybe [UsernameAttributeType]
usernameAttributes = Maybe [UsernameAttributeType]
a} :: UserPoolType) 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

-- | Case sensitivity of the username input for the selected sign-in option.
-- For example, when case sensitivity is set to @False@, users can sign in
-- using either \"username\" or \"Username\". This configuration is
-- immutable once it has been set. For more information, see
-- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UsernameConfigurationType.html UsernameConfigurationType>.
userPoolType_usernameConfiguration :: Lens.Lens' UserPoolType (Prelude.Maybe UsernameConfigurationType)
userPoolType_usernameConfiguration :: Lens' UserPoolType (Maybe UsernameConfigurationType)
userPoolType_usernameConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe UsernameConfigurationType
usernameConfiguration :: Maybe UsernameConfigurationType
$sel:usernameConfiguration:UserPoolType' :: UserPoolType -> Maybe UsernameConfigurationType
usernameConfiguration} -> Maybe UsernameConfigurationType
usernameConfiguration) (\s :: UserPoolType
s@UserPoolType' {} Maybe UsernameConfigurationType
a -> UserPoolType
s {$sel:usernameConfiguration:UserPoolType' :: Maybe UsernameConfigurationType
usernameConfiguration = Maybe UsernameConfigurationType
a} :: UserPoolType)

-- | The template for verification messages.
userPoolType_verificationMessageTemplate :: Lens.Lens' UserPoolType (Prelude.Maybe VerificationMessageTemplateType)
userPoolType_verificationMessageTemplate :: Lens' UserPoolType (Maybe VerificationMessageTemplateType)
userPoolType_verificationMessageTemplate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolType' {Maybe VerificationMessageTemplateType
verificationMessageTemplate :: Maybe VerificationMessageTemplateType
$sel:verificationMessageTemplate:UserPoolType' :: UserPoolType -> Maybe VerificationMessageTemplateType
verificationMessageTemplate} -> Maybe VerificationMessageTemplateType
verificationMessageTemplate) (\s :: UserPoolType
s@UserPoolType' {} Maybe VerificationMessageTemplateType
a -> UserPoolType
s {$sel:verificationMessageTemplate:UserPoolType' :: Maybe VerificationMessageTemplateType
verificationMessageTemplate = Maybe VerificationMessageTemplateType
a} :: UserPoolType)

instance Data.FromJSON UserPoolType where
  parseJSON :: Value -> Parser UserPoolType
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"UserPoolType"
      ( \Object
x ->
          Maybe AccountRecoverySettingType
-> Maybe AdminCreateUserConfigType
-> Maybe [AliasAttributeType]
-> Maybe Text
-> Maybe [VerifiedAttributeType]
-> Maybe POSIX
-> Maybe Text
-> Maybe DeletionProtectionType
-> Maybe DeviceConfigurationType
-> Maybe Text
-> Maybe EmailConfigurationType
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe LambdaConfigType
-> Maybe POSIX
-> Maybe UserPoolMfaType
-> Maybe Text
-> Maybe UserPoolPolicyType
-> Maybe (NonEmpty SchemaAttributeType)
-> Maybe Text
-> Maybe SmsConfigurationType
-> Maybe Text
-> Maybe Text
-> Maybe StatusType
-> Maybe UserAttributeUpdateSettingsType
-> Maybe UserPoolAddOnsType
-> Maybe (HashMap Text Text)
-> Maybe [UsernameAttributeType]
-> Maybe UsernameConfigurationType
-> Maybe VerificationMessageTemplateType
-> UserPoolType
UserPoolType'
            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
"AccountRecoverySetting")
            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
"AdminCreateUserConfig")
            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
"AliasAttributes"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            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
"Arn")
            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
"AutoVerifiedAttributes"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            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
"CreationDate")
            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
"CustomDomain")
            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
"DeletionProtection")
            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
"DeviceConfiguration")
            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
"Domain")
            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
"EmailConfiguration")
            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
"EmailConfigurationFailure")
            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
"EmailVerificationMessage")
            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
"EmailVerificationSubject")
            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
"EstimatedNumberOfUsers")
            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
"Id")
            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
"LambdaConfig")
            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
"LastModifiedDate")
            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
"MfaConfiguration")
            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
"Policies")
            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
"SchemaAttributes")
            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
"SmsAuthenticationMessage")
            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
"SmsConfiguration")
            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
"SmsConfigurationFailure")
            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
"SmsVerificationMessage")
            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
"UserAttributeUpdateSettings")
            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
"UserPoolAddOns")
            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
"UserPoolTags" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            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
"UsernameAttributes"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            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
"UsernameConfiguration")
            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
"VerificationMessageTemplate")
      )

instance Prelude.Hashable UserPoolType where
  hashWithSalt :: Int -> UserPoolType -> Int
hashWithSalt Int
_salt UserPoolType' {Maybe Int
Maybe [AliasAttributeType]
Maybe [UsernameAttributeType]
Maybe [VerifiedAttributeType]
Maybe (NonEmpty SchemaAttributeType)
Maybe Text
Maybe (HashMap Text Text)
Maybe POSIX
Maybe DeletionProtectionType
Maybe DeviceConfigurationType
Maybe EmailConfigurationType
Maybe LambdaConfigType
Maybe AdminCreateUserConfigType
Maybe AccountRecoverySettingType
Maybe SmsConfigurationType
Maybe StatusType
Maybe UserPoolAddOnsType
Maybe UserPoolMfaType
Maybe UserPoolPolicyType
Maybe UsernameConfigurationType
Maybe VerificationMessageTemplateType
Maybe UserAttributeUpdateSettingsType
verificationMessageTemplate :: Maybe VerificationMessageTemplateType
usernameConfiguration :: Maybe UsernameConfigurationType
usernameAttributes :: Maybe [UsernameAttributeType]
userPoolTags :: Maybe (HashMap Text Text)
userPoolAddOns :: Maybe UserPoolAddOnsType
userAttributeUpdateSettings :: Maybe UserAttributeUpdateSettingsType
status :: Maybe StatusType
smsVerificationMessage :: Maybe Text
smsConfigurationFailure :: Maybe Text
smsConfiguration :: Maybe SmsConfigurationType
smsAuthenticationMessage :: Maybe Text
schemaAttributes :: Maybe (NonEmpty SchemaAttributeType)
policies :: Maybe UserPoolPolicyType
name :: Maybe Text
mfaConfiguration :: Maybe UserPoolMfaType
lastModifiedDate :: Maybe POSIX
lambdaConfig :: Maybe LambdaConfigType
id :: Maybe Text
estimatedNumberOfUsers :: Maybe Int
emailVerificationSubject :: Maybe Text
emailVerificationMessage :: Maybe Text
emailConfigurationFailure :: Maybe Text
emailConfiguration :: Maybe EmailConfigurationType
domain :: Maybe Text
deviceConfiguration :: Maybe DeviceConfigurationType
deletionProtection :: Maybe DeletionProtectionType
customDomain :: Maybe Text
creationDate :: Maybe POSIX
autoVerifiedAttributes :: Maybe [VerifiedAttributeType]
arn :: Maybe Text
aliasAttributes :: Maybe [AliasAttributeType]
adminCreateUserConfig :: Maybe AdminCreateUserConfigType
accountRecoverySetting :: Maybe AccountRecoverySettingType
$sel:verificationMessageTemplate:UserPoolType' :: UserPoolType -> Maybe VerificationMessageTemplateType
$sel:usernameConfiguration:UserPoolType' :: UserPoolType -> Maybe UsernameConfigurationType
$sel:usernameAttributes:UserPoolType' :: UserPoolType -> Maybe [UsernameAttributeType]
$sel:userPoolTags:UserPoolType' :: UserPoolType -> Maybe (HashMap Text Text)
$sel:userPoolAddOns:UserPoolType' :: UserPoolType -> Maybe UserPoolAddOnsType
$sel:userAttributeUpdateSettings:UserPoolType' :: UserPoolType -> Maybe UserAttributeUpdateSettingsType
$sel:status:UserPoolType' :: UserPoolType -> Maybe StatusType
$sel:smsVerificationMessage:UserPoolType' :: UserPoolType -> Maybe Text
$sel:smsConfigurationFailure:UserPoolType' :: UserPoolType -> Maybe Text
$sel:smsConfiguration:UserPoolType' :: UserPoolType -> Maybe SmsConfigurationType
$sel:smsAuthenticationMessage:UserPoolType' :: UserPoolType -> Maybe Text
$sel:schemaAttributes:UserPoolType' :: UserPoolType -> Maybe (NonEmpty SchemaAttributeType)
$sel:policies:UserPoolType' :: UserPoolType -> Maybe UserPoolPolicyType
$sel:name:UserPoolType' :: UserPoolType -> Maybe Text
$sel:mfaConfiguration:UserPoolType' :: UserPoolType -> Maybe UserPoolMfaType
$sel:lastModifiedDate:UserPoolType' :: UserPoolType -> Maybe POSIX
$sel:lambdaConfig:UserPoolType' :: UserPoolType -> Maybe LambdaConfigType
$sel:id:UserPoolType' :: UserPoolType -> Maybe Text
$sel:estimatedNumberOfUsers:UserPoolType' :: UserPoolType -> Maybe Int
$sel:emailVerificationSubject:UserPoolType' :: UserPoolType -> Maybe Text
$sel:emailVerificationMessage:UserPoolType' :: UserPoolType -> Maybe Text
$sel:emailConfigurationFailure:UserPoolType' :: UserPoolType -> Maybe Text
$sel:emailConfiguration:UserPoolType' :: UserPoolType -> Maybe EmailConfigurationType
$sel:domain:UserPoolType' :: UserPoolType -> Maybe Text
$sel:deviceConfiguration:UserPoolType' :: UserPoolType -> Maybe DeviceConfigurationType
$sel:deletionProtection:UserPoolType' :: UserPoolType -> Maybe DeletionProtectionType
$sel:customDomain:UserPoolType' :: UserPoolType -> Maybe Text
$sel:creationDate:UserPoolType' :: UserPoolType -> Maybe POSIX
$sel:autoVerifiedAttributes:UserPoolType' :: UserPoolType -> Maybe [VerifiedAttributeType]
$sel:arn:UserPoolType' :: UserPoolType -> Maybe Text
$sel:aliasAttributes:UserPoolType' :: UserPoolType -> Maybe [AliasAttributeType]
$sel:adminCreateUserConfig:UserPoolType' :: UserPoolType -> Maybe AdminCreateUserConfigType
$sel:accountRecoverySetting:UserPoolType' :: UserPoolType -> Maybe AccountRecoverySettingType
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccountRecoverySettingType
accountRecoverySetting
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AdminCreateUserConfigType
adminCreateUserConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [AliasAttributeType]
aliasAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [VerifiedAttributeType]
autoVerifiedAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
creationDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
customDomain
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DeletionProtectionType
deletionProtection
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DeviceConfigurationType
deviceConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
domain
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EmailConfigurationType
emailConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
emailConfigurationFailure
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
emailVerificationMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
emailVerificationSubject
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
estimatedNumberOfUsers
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
id
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LambdaConfigType
lambdaConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastModifiedDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UserPoolMfaType
mfaConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UserPoolPolicyType
policies
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty SchemaAttributeType)
schemaAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
smsAuthenticationMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SmsConfigurationType
smsConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
smsConfigurationFailure
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
smsVerificationMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StatusType
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UserAttributeUpdateSettingsType
userAttributeUpdateSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UserPoolAddOnsType
userPoolAddOns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
userPoolTags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [UsernameAttributeType]
usernameAttributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UsernameConfigurationType
usernameConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VerificationMessageTemplateType
verificationMessageTemplate

instance Prelude.NFData UserPoolType where
  rnf :: UserPoolType -> ()
rnf UserPoolType' {Maybe Int
Maybe [AliasAttributeType]
Maybe [UsernameAttributeType]
Maybe [VerifiedAttributeType]
Maybe (NonEmpty SchemaAttributeType)
Maybe Text
Maybe (HashMap Text Text)
Maybe POSIX
Maybe DeletionProtectionType
Maybe DeviceConfigurationType
Maybe EmailConfigurationType
Maybe LambdaConfigType
Maybe AdminCreateUserConfigType
Maybe AccountRecoverySettingType
Maybe SmsConfigurationType
Maybe StatusType
Maybe UserPoolAddOnsType
Maybe UserPoolMfaType
Maybe UserPoolPolicyType
Maybe UsernameConfigurationType
Maybe VerificationMessageTemplateType
Maybe UserAttributeUpdateSettingsType
verificationMessageTemplate :: Maybe VerificationMessageTemplateType
usernameConfiguration :: Maybe UsernameConfigurationType
usernameAttributes :: Maybe [UsernameAttributeType]
userPoolTags :: Maybe (HashMap Text Text)
userPoolAddOns :: Maybe UserPoolAddOnsType
userAttributeUpdateSettings :: Maybe UserAttributeUpdateSettingsType
status :: Maybe StatusType
smsVerificationMessage :: Maybe Text
smsConfigurationFailure :: Maybe Text
smsConfiguration :: Maybe SmsConfigurationType
smsAuthenticationMessage :: Maybe Text
schemaAttributes :: Maybe (NonEmpty SchemaAttributeType)
policies :: Maybe UserPoolPolicyType
name :: Maybe Text
mfaConfiguration :: Maybe UserPoolMfaType
lastModifiedDate :: Maybe POSIX
lambdaConfig :: Maybe LambdaConfigType
id :: Maybe Text
estimatedNumberOfUsers :: Maybe Int
emailVerificationSubject :: Maybe Text
emailVerificationMessage :: Maybe Text
emailConfigurationFailure :: Maybe Text
emailConfiguration :: Maybe EmailConfigurationType
domain :: Maybe Text
deviceConfiguration :: Maybe DeviceConfigurationType
deletionProtection :: Maybe DeletionProtectionType
customDomain :: Maybe Text
creationDate :: Maybe POSIX
autoVerifiedAttributes :: Maybe [VerifiedAttributeType]
arn :: Maybe Text
aliasAttributes :: Maybe [AliasAttributeType]
adminCreateUserConfig :: Maybe AdminCreateUserConfigType
accountRecoverySetting :: Maybe AccountRecoverySettingType
$sel:verificationMessageTemplate:UserPoolType' :: UserPoolType -> Maybe VerificationMessageTemplateType
$sel:usernameConfiguration:UserPoolType' :: UserPoolType -> Maybe UsernameConfigurationType
$sel:usernameAttributes:UserPoolType' :: UserPoolType -> Maybe [UsernameAttributeType]
$sel:userPoolTags:UserPoolType' :: UserPoolType -> Maybe (HashMap Text Text)
$sel:userPoolAddOns:UserPoolType' :: UserPoolType -> Maybe UserPoolAddOnsType
$sel:userAttributeUpdateSettings:UserPoolType' :: UserPoolType -> Maybe UserAttributeUpdateSettingsType
$sel:status:UserPoolType' :: UserPoolType -> Maybe StatusType
$sel:smsVerificationMessage:UserPoolType' :: UserPoolType -> Maybe Text
$sel:smsConfigurationFailure:UserPoolType' :: UserPoolType -> Maybe Text
$sel:smsConfiguration:UserPoolType' :: UserPoolType -> Maybe SmsConfigurationType
$sel:smsAuthenticationMessage:UserPoolType' :: UserPoolType -> Maybe Text
$sel:schemaAttributes:UserPoolType' :: UserPoolType -> Maybe (NonEmpty SchemaAttributeType)
$sel:policies:UserPoolType' :: UserPoolType -> Maybe UserPoolPolicyType
$sel:name:UserPoolType' :: UserPoolType -> Maybe Text
$sel:mfaConfiguration:UserPoolType' :: UserPoolType -> Maybe UserPoolMfaType
$sel:lastModifiedDate:UserPoolType' :: UserPoolType -> Maybe POSIX
$sel:lambdaConfig:UserPoolType' :: UserPoolType -> Maybe LambdaConfigType
$sel:id:UserPoolType' :: UserPoolType -> Maybe Text
$sel:estimatedNumberOfUsers:UserPoolType' :: UserPoolType -> Maybe Int
$sel:emailVerificationSubject:UserPoolType' :: UserPoolType -> Maybe Text
$sel:emailVerificationMessage:UserPoolType' :: UserPoolType -> Maybe Text
$sel:emailConfigurationFailure:UserPoolType' :: UserPoolType -> Maybe Text
$sel:emailConfiguration:UserPoolType' :: UserPoolType -> Maybe EmailConfigurationType
$sel:domain:UserPoolType' :: UserPoolType -> Maybe Text
$sel:deviceConfiguration:UserPoolType' :: UserPoolType -> Maybe DeviceConfigurationType
$sel:deletionProtection:UserPoolType' :: UserPoolType -> Maybe DeletionProtectionType
$sel:customDomain:UserPoolType' :: UserPoolType -> Maybe Text
$sel:creationDate:UserPoolType' :: UserPoolType -> Maybe POSIX
$sel:autoVerifiedAttributes:UserPoolType' :: UserPoolType -> Maybe [VerifiedAttributeType]
$sel:arn:UserPoolType' :: UserPoolType -> Maybe Text
$sel:aliasAttributes:UserPoolType' :: UserPoolType -> Maybe [AliasAttributeType]
$sel:adminCreateUserConfig:UserPoolType' :: UserPoolType -> Maybe AdminCreateUserConfigType
$sel:accountRecoverySetting:UserPoolType' :: UserPoolType -> Maybe AccountRecoverySettingType
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AccountRecoverySettingType
accountRecoverySetting
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AdminCreateUserConfigType
adminCreateUserConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [AliasAttributeType]
aliasAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [VerifiedAttributeType]
autoVerifiedAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
customDomain
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeletionProtectionType
deletionProtection
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeviceConfigurationType
deviceConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
domain
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EmailConfigurationType
emailConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
emailConfigurationFailure
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
emailVerificationMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
emailVerificationSubject
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
estimatedNumberOfUsers
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LambdaConfigType
lambdaConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastModifiedDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe UserPoolMfaType
mfaConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe UserPoolPolicyType
policies
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe (NonEmpty SchemaAttributeType)
schemaAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
smsAuthenticationMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe SmsConfigurationType
smsConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
smsConfigurationFailure
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
smsVerificationMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe StatusType
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe UserAttributeUpdateSettingsType
userAttributeUpdateSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe UserPoolAddOnsType
userPoolAddOns
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe (HashMap Text Text)
userPoolTags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [UsernameAttributeType]
usernameAttributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe UsernameConfigurationType
usernameConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe VerificationMessageTemplateType
verificationMessageTemplate