{-# 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-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- 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.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.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.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | A container for information about the user pool.
--
-- /See:/ 'newUserPoolType' smart constructor.
data UserPoolType = UserPoolType'
  { -- | The status of a user pool.
    UserPoolType -> Maybe StatusType
status :: Prelude.Maybe StatusType,
    -- | 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),
    -- | The reason why the email configuration cannot send the messages to your
    -- users.
    UserPoolType -> Maybe Text
emailConfigurationFailure :: Prelude.Maybe Prelude.Text,
    -- | The date the user pool was last modified.
    UserPoolType -> Maybe POSIX
lastModifiedDate :: Prelude.Maybe Core.POSIX,
    -- | The template for verification messages.
    UserPoolType -> Maybe VerificationMessageTemplateType
verificationMessageTemplate :: Prelude.Maybe VerificationMessageTemplateType,
    -- | A number estimating the size of the user pool.
    UserPoolType -> Maybe Int
estimatedNumberOfUsers :: Prelude.Maybe Prelude.Int,
    -- | The Amazon Resource Name (ARN) for the user pool.
    UserPoolType -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | Holds the domain prefix if the user pool has a domain associated with
    -- it.
    UserPoolType -> Maybe Text
domain :: Prelude.Maybe Prelude.Text,
    -- | 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. For example: @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,
    -- | The contents of the email verification message.
    UserPoolType -> Maybe Text
emailVerificationMessage :: Prelude.Maybe Prelude.Text,
    -- | The contents of the SMS authentication message.
    UserPoolType -> Maybe Text
smsAuthenticationMessage :: Prelude.Maybe Prelude.Text,
    -- | The user pool add-ons.
    UserPoolType -> Maybe UserPoolAddOnsType
userPoolAddOns :: Prelude.Maybe UserPoolAddOnsType,
    -- | A container with the schema attributes of a user pool.
    UserPoolType -> Maybe (NonEmpty SchemaAttributeType)
schemaAttributes :: Prelude.Maybe (Prelude.NonEmpty SchemaAttributeType),
    -- | The subject of the email verification message.
    UserPoolType -> Maybe Text
emailVerificationSubject :: Prelude.Maybe Prelude.Text,
    -- | Specifies whether email addresses or phone numbers can be specified as
    -- usernames when a user signs up.
    UserPoolType -> Maybe [UsernameAttributeType]
usernameAttributes :: Prelude.Maybe [UsernameAttributeType],
    -- | Specifies the attributes that are aliased in a user pool.
    UserPoolType -> Maybe [AliasAttributeType]
aliasAttributes :: Prelude.Maybe [AliasAttributeType],
    -- | Use this setting to define which verified available method a user can
    -- use to recover their password when they call @ForgotPassword@. It allows
    -- you to define a preferred method when a user has more than one method
    -- available. With this setting, SMS does not qualify for a valid password
    -- recovery mechanism if the user also has SMS MFA enabled. In the absence
    -- of this setting, Cognito uses the legacy behavior to determine the
    -- recovery method where SMS is preferred over email.
    UserPoolType -> Maybe AccountRecoverySettingType
accountRecoverySetting :: Prelude.Maybe AccountRecoverySettingType,
    -- | The email configuration.
    UserPoolType -> Maybe EmailConfigurationType
emailConfiguration :: Prelude.Maybe EmailConfigurationType,
    -- | The contents of the SMS verification message.
    UserPoolType -> Maybe Text
smsVerificationMessage :: Prelude.Maybe Prelude.Text,
    -- | The name of the user pool.
    UserPoolType -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | Can be one of the following values:
    --
    -- -   @OFF@ - MFA tokens are not required and cannot be specified during
    --     user registration.
    --
    -- -   @ON@ - MFA tokens are required for all user registrations. You can
    --     only specify required when you are 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 ID of the user pool.
    UserPoolType -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | The reason why the SMS configuration cannot 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 IAM role which Cognito
    --     uses to send SMS messages is not properly configured. For more
    --     information, see
    --     <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SmsConfigurationType.html SmsConfigurationType>.
    --
    -- -   SNSSandbox - The account is in SNS Sandbox and messages won’t reach
    --     unverified 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 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,
    -- | The date the user pool was created.
    UserPoolType -> Maybe POSIX
creationDate :: Prelude.Maybe Core.POSIX,
    -- | The Lambda triggers associated with the user pool.
    UserPoolType -> Maybe LambdaConfigType
lambdaConfig :: Prelude.Maybe LambdaConfigType,
    -- | The SMS configuration.
    UserPoolType -> Maybe SmsConfigurationType
smsConfiguration :: Prelude.Maybe SmsConfigurationType,
    -- | The configuration for @AdminCreateUser@ requests.
    UserPoolType -> Maybe AdminCreateUserConfigType
adminCreateUserConfig :: Prelude.Maybe AdminCreateUserConfigType,
    -- | The device configuration.
    UserPoolType -> Maybe DeviceConfigurationType
deviceConfiguration :: Prelude.Maybe DeviceConfigurationType,
    -- | Specifies the attributes that are auto-verified in a user pool.
    UserPoolType -> Maybe [VerifiedAttributeType]
autoVerifiedAttributes :: Prelude.Maybe [VerifiedAttributeType],
    -- | The policies associated with the user pool.
    UserPoolType -> Maybe UserPoolPolicyType
policies :: Prelude.Maybe UserPoolPolicyType,
    -- | You can choose to enable case sensitivity on the username input for the
    -- selected sign-in option. For example, when this is set to @False@, users
    -- will be able to 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
  }
  deriving (UserPoolType -> UserPoolType -> Bool
(UserPoolType -> UserPoolType -> Bool)
-> (UserPoolType -> UserPoolType -> Bool) -> Eq UserPoolType
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]
(Int -> ReadS UserPoolType)
-> ReadS [UserPoolType]
-> ReadPrec UserPoolType
-> ReadPrec [UserPoolType]
-> Read 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
(Int -> UserPoolType -> ShowS)
-> (UserPoolType -> String)
-> ([UserPoolType] -> ShowS)
-> Show UserPoolType
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. UserPoolType -> Rep UserPoolType x)
-> (forall x. Rep UserPoolType x -> UserPoolType)
-> Generic UserPoolType
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:
--
-- 'status', 'userPoolType_status' - The status of a user pool.
--
-- '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.
--
-- 'emailConfigurationFailure', 'userPoolType_emailConfigurationFailure' - The reason why the email configuration cannot send the messages to your
-- users.
--
-- 'lastModifiedDate', 'userPoolType_lastModifiedDate' - The date the user pool was last modified.
--
-- 'verificationMessageTemplate', 'userPoolType_verificationMessageTemplate' - The template for verification messages.
--
-- 'estimatedNumberOfUsers', 'userPoolType_estimatedNumberOfUsers' - A number estimating the size of the user pool.
--
-- 'arn', 'userPoolType_arn' - The Amazon Resource Name (ARN) for the user pool.
--
-- 'domain', 'userPoolType_domain' - Holds the domain prefix if the user pool has a domain associated with
-- it.
--
-- '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. For example: @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>.
--
-- 'emailVerificationMessage', 'userPoolType_emailVerificationMessage' - The contents of the email verification message.
--
-- 'smsAuthenticationMessage', 'userPoolType_smsAuthenticationMessage' - The contents of the SMS authentication message.
--
-- 'userPoolAddOns', 'userPoolType_userPoolAddOns' - The user pool add-ons.
--
-- 'schemaAttributes', 'userPoolType_schemaAttributes' - A container with the schema attributes of a user pool.
--
-- 'emailVerificationSubject', 'userPoolType_emailVerificationSubject' - The subject of the email verification message.
--
-- 'usernameAttributes', 'userPoolType_usernameAttributes' - Specifies whether email addresses or phone numbers can be specified as
-- usernames when a user signs up.
--
-- 'aliasAttributes', 'userPoolType_aliasAttributes' - Specifies the attributes that are aliased in a user pool.
--
-- 'accountRecoverySetting', 'userPoolType_accountRecoverySetting' - Use this setting to define which verified available method a user can
-- use to recover their password when they call @ForgotPassword@. It allows
-- you to define a preferred method when a user has more than one method
-- available. With this setting, SMS does not qualify for a valid password
-- recovery mechanism if the user also has SMS MFA enabled. In the absence
-- of this setting, Cognito uses the legacy behavior to determine the
-- recovery method where SMS is preferred over email.
--
-- 'emailConfiguration', 'userPoolType_emailConfiguration' - The email configuration.
--
-- 'smsVerificationMessage', 'userPoolType_smsVerificationMessage' - The contents of the SMS verification message.
--
-- 'name', 'userPoolType_name' - The name of the user pool.
--
-- 'mfaConfiguration', 'userPoolType_mfaConfiguration' - Can be one of the following values:
--
-- -   @OFF@ - MFA tokens are not required and cannot be specified during
--     user registration.
--
-- -   @ON@ - MFA tokens are required for all user registrations. You can
--     only specify required when you are initially creating a user pool.
--
-- -   @OPTIONAL@ - Users have the option when registering to create an MFA
--     token.
--
-- 'id', 'userPoolType_id' - The ID of the user pool.
--
-- 'smsConfigurationFailure', 'userPoolType_smsConfigurationFailure' - The reason why the SMS configuration cannot 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 IAM role which Cognito
--     uses to send SMS messages is not properly configured. For more
--     information, see
--     <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SmsConfigurationType.html SmsConfigurationType>.
--
-- -   SNSSandbox - The account is in SNS Sandbox and messages won’t reach
--     unverified 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 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>.
--
-- 'creationDate', 'userPoolType_creationDate' - The date the user pool was created.
--
-- 'lambdaConfig', 'userPoolType_lambdaConfig' - The Lambda triggers associated with the user pool.
--
-- 'smsConfiguration', 'userPoolType_smsConfiguration' - The SMS configuration.
--
-- 'adminCreateUserConfig', 'userPoolType_adminCreateUserConfig' - The configuration for @AdminCreateUser@ requests.
--
-- 'deviceConfiguration', 'userPoolType_deviceConfiguration' - The device configuration.
--
-- 'autoVerifiedAttributes', 'userPoolType_autoVerifiedAttributes' - Specifies the attributes that are auto-verified in a user pool.
--
-- 'policies', 'userPoolType_policies' - The policies associated with the user pool.
--
-- 'usernameConfiguration', 'userPoolType_usernameConfiguration' - You can choose to enable case sensitivity on the username input for the
-- selected sign-in option. For example, when this is set to @False@, users
-- will be able to 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>.
newUserPoolType ::
  UserPoolType
newUserPoolType :: UserPoolType
newUserPoolType =
  UserPoolType' :: Maybe StatusType
-> Maybe (HashMap Text Text)
-> Maybe Text
-> Maybe POSIX
-> Maybe VerificationMessageTemplateType
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe UserPoolAddOnsType
-> Maybe (NonEmpty SchemaAttributeType)
-> Maybe Text
-> Maybe [UsernameAttributeType]
-> Maybe [AliasAttributeType]
-> Maybe AccountRecoverySettingType
-> Maybe EmailConfigurationType
-> Maybe Text
-> Maybe Text
-> Maybe UserPoolMfaType
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe LambdaConfigType
-> Maybe SmsConfigurationType
-> Maybe AdminCreateUserConfigType
-> Maybe DeviceConfigurationType
-> Maybe [VerifiedAttributeType]
-> Maybe UserPoolPolicyType
-> Maybe UsernameConfigurationType
-> UserPoolType
UserPoolType'
    { $sel:status:UserPoolType' :: Maybe StatusType
status = Maybe StatusType
forall a. Maybe a
Prelude.Nothing,
      $sel:userPoolTags:UserPoolType' :: Maybe (HashMap Text Text)
userPoolTags = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:emailConfigurationFailure:UserPoolType' :: Maybe Text
emailConfigurationFailure = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedDate:UserPoolType' :: Maybe POSIX
lastModifiedDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:verificationMessageTemplate:UserPoolType' :: Maybe VerificationMessageTemplateType
verificationMessageTemplate = Maybe VerificationMessageTemplateType
forall a. Maybe a
Prelude.Nothing,
      $sel:estimatedNumberOfUsers:UserPoolType' :: Maybe Int
estimatedNumberOfUsers = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:UserPoolType' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:domain:UserPoolType' :: Maybe Text
domain = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:customDomain:UserPoolType' :: Maybe Text
customDomain = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:emailVerificationMessage:UserPoolType' :: Maybe Text
emailVerificationMessage = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:smsAuthenticationMessage:UserPoolType' :: Maybe Text
smsAuthenticationMessage = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:userPoolAddOns:UserPoolType' :: Maybe UserPoolAddOnsType
userPoolAddOns = Maybe UserPoolAddOnsType
forall a. Maybe a
Prelude.Nothing,
      $sel:schemaAttributes:UserPoolType' :: Maybe (NonEmpty SchemaAttributeType)
schemaAttributes = Maybe (NonEmpty SchemaAttributeType)
forall a. Maybe a
Prelude.Nothing,
      $sel:emailVerificationSubject:UserPoolType' :: Maybe Text
emailVerificationSubject = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:usernameAttributes:UserPoolType' :: Maybe [UsernameAttributeType]
usernameAttributes = Maybe [UsernameAttributeType]
forall a. Maybe a
Prelude.Nothing,
      $sel:aliasAttributes:UserPoolType' :: Maybe [AliasAttributeType]
aliasAttributes = Maybe [AliasAttributeType]
forall a. Maybe a
Prelude.Nothing,
      $sel:accountRecoverySetting:UserPoolType' :: Maybe AccountRecoverySettingType
accountRecoverySetting = Maybe AccountRecoverySettingType
forall a. Maybe a
Prelude.Nothing,
      $sel:emailConfiguration:UserPoolType' :: Maybe EmailConfigurationType
emailConfiguration = Maybe EmailConfigurationType
forall a. Maybe a
Prelude.Nothing,
      $sel:smsVerificationMessage:UserPoolType' :: Maybe Text
smsVerificationMessage = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:name:UserPoolType' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:mfaConfiguration:UserPoolType' :: Maybe UserPoolMfaType
mfaConfiguration = Maybe UserPoolMfaType
forall a. Maybe a
Prelude.Nothing,
      $sel:id:UserPoolType' :: Maybe Text
id = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:smsConfigurationFailure:UserPoolType' :: Maybe Text
smsConfigurationFailure = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:creationDate:UserPoolType' :: Maybe POSIX
creationDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:lambdaConfig:UserPoolType' :: Maybe LambdaConfigType
lambdaConfig = Maybe LambdaConfigType
forall a. Maybe a
Prelude.Nothing,
      $sel:smsConfiguration:UserPoolType' :: Maybe SmsConfigurationType
smsConfiguration = Maybe SmsConfigurationType
forall a. Maybe a
Prelude.Nothing,
      $sel:adminCreateUserConfig:UserPoolType' :: Maybe AdminCreateUserConfigType
adminCreateUserConfig = Maybe AdminCreateUserConfigType
forall a. Maybe a
Prelude.Nothing,
      $sel:deviceConfiguration:UserPoolType' :: Maybe DeviceConfigurationType
deviceConfiguration = Maybe DeviceConfigurationType
forall a. Maybe a
Prelude.Nothing,
      $sel:autoVerifiedAttributes:UserPoolType' :: Maybe [VerifiedAttributeType]
autoVerifiedAttributes = Maybe [VerifiedAttributeType]
forall a. Maybe a
Prelude.Nothing,
      $sel:policies:UserPoolType' :: Maybe UserPoolPolicyType
policies = Maybe UserPoolPolicyType
forall a. Maybe a
Prelude.Nothing,
      $sel:usernameConfiguration:UserPoolType' :: Maybe UsernameConfigurationType
usernameConfiguration = Maybe UsernameConfigurationType
forall a. Maybe a
Prelude.Nothing
    }

-- | The status of a user pool.
userPoolType_status :: Lens.Lens' UserPoolType (Prelude.Maybe StatusType)
userPoolType_status :: (Maybe StatusType -> f (Maybe StatusType))
-> UserPoolType -> f UserPoolType
userPoolType_status = (UserPoolType -> Maybe StatusType)
-> (UserPoolType -> Maybe StatusType -> UserPoolType)
-> Lens
     UserPoolType UserPoolType (Maybe StatusType) (Maybe StatusType)
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 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 :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> UserPoolType -> f UserPoolType
userPoolType_userPoolTags = (UserPoolType -> Maybe (HashMap Text Text))
-> (UserPoolType -> Maybe (HashMap Text Text) -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
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) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> UserPoolType -> f UserPoolType)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> UserPoolType
-> f UserPoolType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
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 AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The reason why the email configuration cannot send the messages to your
-- users.
userPoolType_emailConfigurationFailure :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_emailConfigurationFailure :: (Maybe Text -> f (Maybe Text)) -> UserPoolType -> f UserPoolType
userPoolType_emailConfigurationFailure = (UserPoolType -> Maybe Text)
-> (UserPoolType -> Maybe Text -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe Text) (Maybe Text)
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)

-- | The date the user pool was last modified.
userPoolType_lastModifiedDate :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.UTCTime)
userPoolType_lastModifiedDate :: (Maybe UTCTime -> f (Maybe UTCTime))
-> UserPoolType -> f UserPoolType
userPoolType_lastModifiedDate = (UserPoolType -> Maybe POSIX)
-> (UserPoolType -> Maybe POSIX -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe POSIX) (Maybe POSIX)
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) ((Maybe POSIX -> f (Maybe POSIX))
 -> UserPoolType -> f UserPoolType)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> UserPoolType
-> f UserPoolType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The template for verification messages.
userPoolType_verificationMessageTemplate :: Lens.Lens' UserPoolType (Prelude.Maybe VerificationMessageTemplateType)
userPoolType_verificationMessageTemplate :: (Maybe VerificationMessageTemplateType
 -> f (Maybe VerificationMessageTemplateType))
-> UserPoolType -> f UserPoolType
userPoolType_verificationMessageTemplate = (UserPoolType -> Maybe VerificationMessageTemplateType)
-> (UserPoolType
    -> Maybe VerificationMessageTemplateType -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe VerificationMessageTemplateType)
     (Maybe VerificationMessageTemplateType)
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)

-- | A number estimating the size of the user pool.
userPoolType_estimatedNumberOfUsers :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Int)
userPoolType_estimatedNumberOfUsers :: (Maybe Int -> f (Maybe Int)) -> UserPoolType -> f UserPoolType
userPoolType_estimatedNumberOfUsers = (UserPoolType -> Maybe Int)
-> (UserPoolType -> Maybe Int -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe Int) (Maybe Int)
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 Amazon Resource Name (ARN) for the user pool.
userPoolType_arn :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_arn :: (Maybe Text -> f (Maybe Text)) -> UserPoolType -> f UserPoolType
userPoolType_arn = (UserPoolType -> Maybe Text)
-> (UserPoolType -> Maybe Text -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe Text) (Maybe Text)
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)

-- | Holds the domain prefix if the user pool has a domain associated with
-- it.
userPoolType_domain :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_domain :: (Maybe Text -> f (Maybe Text)) -> UserPoolType -> f UserPoolType
userPoolType_domain = (UserPoolType -> Maybe Text)
-> (UserPoolType -> Maybe Text -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe Text) (Maybe Text)
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)

-- | 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. For example: @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 :: (Maybe Text -> f (Maybe Text)) -> UserPoolType -> f UserPoolType
userPoolType_customDomain = (UserPoolType -> Maybe Text)
-> (UserPoolType -> Maybe Text -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe Text) (Maybe Text)
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)

-- | The contents of the email verification message.
userPoolType_emailVerificationMessage :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_emailVerificationMessage :: (Maybe Text -> f (Maybe Text)) -> UserPoolType -> f UserPoolType
userPoolType_emailVerificationMessage = (UserPoolType -> Maybe Text)
-> (UserPoolType -> Maybe Text -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe Text) (Maybe Text)
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)

-- | The contents of the SMS authentication message.
userPoolType_smsAuthenticationMessage :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_smsAuthenticationMessage :: (Maybe Text -> f (Maybe Text)) -> UserPoolType -> f UserPoolType
userPoolType_smsAuthenticationMessage = (UserPoolType -> Maybe Text)
-> (UserPoolType -> Maybe Text -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe Text) (Maybe Text)
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 user pool add-ons.
userPoolType_userPoolAddOns :: Lens.Lens' UserPoolType (Prelude.Maybe UserPoolAddOnsType)
userPoolType_userPoolAddOns :: (Maybe UserPoolAddOnsType -> f (Maybe UserPoolAddOnsType))
-> UserPoolType -> f UserPoolType
userPoolType_userPoolAddOns = (UserPoolType -> Maybe UserPoolAddOnsType)
-> (UserPoolType -> Maybe UserPoolAddOnsType -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe UserPoolAddOnsType)
     (Maybe UserPoolAddOnsType)
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)

-- | A container with the schema attributes of a user pool.
userPoolType_schemaAttributes :: Lens.Lens' UserPoolType (Prelude.Maybe (Prelude.NonEmpty SchemaAttributeType))
userPoolType_schemaAttributes :: (Maybe (NonEmpty SchemaAttributeType)
 -> f (Maybe (NonEmpty SchemaAttributeType)))
-> UserPoolType -> f UserPoolType
userPoolType_schemaAttributes = (UserPoolType -> Maybe (NonEmpty SchemaAttributeType))
-> (UserPoolType
    -> Maybe (NonEmpty SchemaAttributeType) -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe (NonEmpty SchemaAttributeType))
     (Maybe (NonEmpty SchemaAttributeType))
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) ((Maybe (NonEmpty SchemaAttributeType)
  -> f (Maybe (NonEmpty SchemaAttributeType)))
 -> UserPoolType -> f UserPoolType)
-> ((Maybe (NonEmpty SchemaAttributeType)
     -> f (Maybe (NonEmpty SchemaAttributeType)))
    -> Maybe (NonEmpty SchemaAttributeType)
    -> f (Maybe (NonEmpty SchemaAttributeType)))
-> (Maybe (NonEmpty SchemaAttributeType)
    -> f (Maybe (NonEmpty SchemaAttributeType)))
-> UserPoolType
-> f UserPoolType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (NonEmpty SchemaAttributeType)
  (NonEmpty SchemaAttributeType)
  (NonEmpty SchemaAttributeType)
  (NonEmpty SchemaAttributeType)
-> Iso
     (Maybe (NonEmpty SchemaAttributeType))
     (Maybe (NonEmpty SchemaAttributeType))
     (Maybe (NonEmpty SchemaAttributeType))
     (Maybe (NonEmpty SchemaAttributeType))
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 AnIso
  (NonEmpty SchemaAttributeType)
  (NonEmpty SchemaAttributeType)
  (NonEmpty SchemaAttributeType)
  (NonEmpty SchemaAttributeType)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The subject of the email verification message.
userPoolType_emailVerificationSubject :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_emailVerificationSubject :: (Maybe Text -> f (Maybe Text)) -> UserPoolType -> f UserPoolType
userPoolType_emailVerificationSubject = (UserPoolType -> Maybe Text)
-> (UserPoolType -> Maybe Text -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe Text) (Maybe Text)
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)

-- | Specifies whether email addresses or phone numbers can be specified as
-- usernames when a user signs up.
userPoolType_usernameAttributes :: Lens.Lens' UserPoolType (Prelude.Maybe [UsernameAttributeType])
userPoolType_usernameAttributes :: (Maybe [UsernameAttributeType]
 -> f (Maybe [UsernameAttributeType]))
-> UserPoolType -> f UserPoolType
userPoolType_usernameAttributes = (UserPoolType -> Maybe [UsernameAttributeType])
-> (UserPoolType -> Maybe [UsernameAttributeType] -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe [UsernameAttributeType])
     (Maybe [UsernameAttributeType])
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) ((Maybe [UsernameAttributeType]
  -> f (Maybe [UsernameAttributeType]))
 -> UserPoolType -> f UserPoolType)
-> ((Maybe [UsernameAttributeType]
     -> f (Maybe [UsernameAttributeType]))
    -> Maybe [UsernameAttributeType]
    -> f (Maybe [UsernameAttributeType]))
-> (Maybe [UsernameAttributeType]
    -> f (Maybe [UsernameAttributeType]))
-> UserPoolType
-> f UserPoolType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [UsernameAttributeType]
  [UsernameAttributeType]
  [UsernameAttributeType]
  [UsernameAttributeType]
-> Iso
     (Maybe [UsernameAttributeType])
     (Maybe [UsernameAttributeType])
     (Maybe [UsernameAttributeType])
     (Maybe [UsernameAttributeType])
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 AnIso
  [UsernameAttributeType]
  [UsernameAttributeType]
  [UsernameAttributeType]
  [UsernameAttributeType]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Specifies the attributes that are aliased in a user pool.
userPoolType_aliasAttributes :: Lens.Lens' UserPoolType (Prelude.Maybe [AliasAttributeType])
userPoolType_aliasAttributes :: (Maybe [AliasAttributeType] -> f (Maybe [AliasAttributeType]))
-> UserPoolType -> f UserPoolType
userPoolType_aliasAttributes = (UserPoolType -> Maybe [AliasAttributeType])
-> (UserPoolType -> Maybe [AliasAttributeType] -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe [AliasAttributeType])
     (Maybe [AliasAttributeType])
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) ((Maybe [AliasAttributeType] -> f (Maybe [AliasAttributeType]))
 -> UserPoolType -> f UserPoolType)
-> ((Maybe [AliasAttributeType] -> f (Maybe [AliasAttributeType]))
    -> Maybe [AliasAttributeType] -> f (Maybe [AliasAttributeType]))
-> (Maybe [AliasAttributeType] -> f (Maybe [AliasAttributeType]))
-> UserPoolType
-> f UserPoolType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AliasAttributeType]
  [AliasAttributeType]
  [AliasAttributeType]
  [AliasAttributeType]
-> Iso
     (Maybe [AliasAttributeType])
     (Maybe [AliasAttributeType])
     (Maybe [AliasAttributeType])
     (Maybe [AliasAttributeType])
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 AnIso
  [AliasAttributeType]
  [AliasAttributeType]
  [AliasAttributeType]
  [AliasAttributeType]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Use this setting to define which verified available method a user can
-- use to recover their password when they call @ForgotPassword@. It allows
-- you to define a preferred method when a user has more than one method
-- available. With this setting, SMS does not qualify for a valid password
-- recovery mechanism if the user also has SMS MFA enabled. In the absence
-- of this setting, Cognito uses the legacy behavior to determine the
-- recovery method where SMS is preferred over email.
userPoolType_accountRecoverySetting :: Lens.Lens' UserPoolType (Prelude.Maybe AccountRecoverySettingType)
userPoolType_accountRecoverySetting :: (Maybe AccountRecoverySettingType
 -> f (Maybe AccountRecoverySettingType))
-> UserPoolType -> f UserPoolType
userPoolType_accountRecoverySetting = (UserPoolType -> Maybe AccountRecoverySettingType)
-> (UserPoolType
    -> Maybe AccountRecoverySettingType -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe AccountRecoverySettingType)
     (Maybe AccountRecoverySettingType)
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 email configuration.
userPoolType_emailConfiguration :: Lens.Lens' UserPoolType (Prelude.Maybe EmailConfigurationType)
userPoolType_emailConfiguration :: (Maybe EmailConfigurationType -> f (Maybe EmailConfigurationType))
-> UserPoolType -> f UserPoolType
userPoolType_emailConfiguration = (UserPoolType -> Maybe EmailConfigurationType)
-> (UserPoolType -> Maybe EmailConfigurationType -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe EmailConfigurationType)
     (Maybe EmailConfigurationType)
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)

-- | The contents of the SMS verification message.
userPoolType_smsVerificationMessage :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_smsVerificationMessage :: (Maybe Text -> f (Maybe Text)) -> UserPoolType -> f UserPoolType
userPoolType_smsVerificationMessage = (UserPoolType -> Maybe Text)
-> (UserPoolType -> Maybe Text -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe Text) (Maybe Text)
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 name of the user pool.
userPoolType_name :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_name :: (Maybe Text -> f (Maybe Text)) -> UserPoolType -> f UserPoolType
userPoolType_name = (UserPoolType -> Maybe Text)
-> (UserPoolType -> Maybe Text -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe Text) (Maybe Text)
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)

-- | Can be one of the following values:
--
-- -   @OFF@ - MFA tokens are not required and cannot be specified during
--     user registration.
--
-- -   @ON@ - MFA tokens are required for all user registrations. You can
--     only specify required when you are 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 :: (Maybe UserPoolMfaType -> f (Maybe UserPoolMfaType))
-> UserPoolType -> f UserPoolType
userPoolType_mfaConfiguration = (UserPoolType -> Maybe UserPoolMfaType)
-> (UserPoolType -> Maybe UserPoolMfaType -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe UserPoolMfaType)
     (Maybe UserPoolMfaType)
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 ID of the user pool.
userPoolType_id :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.Text)
userPoolType_id :: (Maybe Text -> f (Maybe Text)) -> UserPoolType -> f UserPoolType
userPoolType_id = (UserPoolType -> Maybe Text)
-> (UserPoolType -> Maybe Text -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe Text) (Maybe Text)
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 reason why the SMS configuration cannot 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 IAM role which Cognito
--     uses to send SMS messages is not properly configured. For more
--     information, see
--     <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SmsConfigurationType.html SmsConfigurationType>.
--
-- -   SNSSandbox - The account is in SNS Sandbox and messages won’t reach
--     unverified 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 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 :: (Maybe Text -> f (Maybe Text)) -> UserPoolType -> f UserPoolType
userPoolType_smsConfigurationFailure = (UserPoolType -> Maybe Text)
-> (UserPoolType -> Maybe Text -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe Text) (Maybe Text)
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)

-- | The date the user pool was created.
userPoolType_creationDate :: Lens.Lens' UserPoolType (Prelude.Maybe Prelude.UTCTime)
userPoolType_creationDate :: (Maybe UTCTime -> f (Maybe UTCTime))
-> UserPoolType -> f UserPoolType
userPoolType_creationDate = (UserPoolType -> Maybe POSIX)
-> (UserPoolType -> Maybe POSIX -> UserPoolType)
-> Lens UserPoolType UserPoolType (Maybe POSIX) (Maybe POSIX)
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) ((Maybe POSIX -> f (Maybe POSIX))
 -> UserPoolType -> f UserPoolType)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> UserPoolType
-> f UserPoolType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The Lambda triggers associated with the user pool.
userPoolType_lambdaConfig :: Lens.Lens' UserPoolType (Prelude.Maybe LambdaConfigType)
userPoolType_lambdaConfig :: (Maybe LambdaConfigType -> f (Maybe LambdaConfigType))
-> UserPoolType -> f UserPoolType
userPoolType_lambdaConfig = (UserPoolType -> Maybe LambdaConfigType)
-> (UserPoolType -> Maybe LambdaConfigType -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe LambdaConfigType)
     (Maybe LambdaConfigType)
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 SMS configuration.
userPoolType_smsConfiguration :: Lens.Lens' UserPoolType (Prelude.Maybe SmsConfigurationType)
userPoolType_smsConfiguration :: (Maybe SmsConfigurationType -> f (Maybe SmsConfigurationType))
-> UserPoolType -> f UserPoolType
userPoolType_smsConfiguration = (UserPoolType -> Maybe SmsConfigurationType)
-> (UserPoolType -> Maybe SmsConfigurationType -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe SmsConfigurationType)
     (Maybe SmsConfigurationType)
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 configuration for @AdminCreateUser@ requests.
userPoolType_adminCreateUserConfig :: Lens.Lens' UserPoolType (Prelude.Maybe AdminCreateUserConfigType)
userPoolType_adminCreateUserConfig :: (Maybe AdminCreateUserConfigType
 -> f (Maybe AdminCreateUserConfigType))
-> UserPoolType -> f UserPoolType
userPoolType_adminCreateUserConfig = (UserPoolType -> Maybe AdminCreateUserConfigType)
-> (UserPoolType
    -> Maybe AdminCreateUserConfigType -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe AdminCreateUserConfigType)
     (Maybe AdminCreateUserConfigType)
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 device configuration.
userPoolType_deviceConfiguration :: Lens.Lens' UserPoolType (Prelude.Maybe DeviceConfigurationType)
userPoolType_deviceConfiguration :: (Maybe DeviceConfigurationType
 -> f (Maybe DeviceConfigurationType))
-> UserPoolType -> f UserPoolType
userPoolType_deviceConfiguration = (UserPoolType -> Maybe DeviceConfigurationType)
-> (UserPoolType -> Maybe DeviceConfigurationType -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe DeviceConfigurationType)
     (Maybe DeviceConfigurationType)
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)

-- | Specifies the attributes that are auto-verified in a user pool.
userPoolType_autoVerifiedAttributes :: Lens.Lens' UserPoolType (Prelude.Maybe [VerifiedAttributeType])
userPoolType_autoVerifiedAttributes :: (Maybe [VerifiedAttributeType]
 -> f (Maybe [VerifiedAttributeType]))
-> UserPoolType -> f UserPoolType
userPoolType_autoVerifiedAttributes = (UserPoolType -> Maybe [VerifiedAttributeType])
-> (UserPoolType -> Maybe [VerifiedAttributeType] -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe [VerifiedAttributeType])
     (Maybe [VerifiedAttributeType])
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) ((Maybe [VerifiedAttributeType]
  -> f (Maybe [VerifiedAttributeType]))
 -> UserPoolType -> f UserPoolType)
-> ((Maybe [VerifiedAttributeType]
     -> f (Maybe [VerifiedAttributeType]))
    -> Maybe [VerifiedAttributeType]
    -> f (Maybe [VerifiedAttributeType]))
-> (Maybe [VerifiedAttributeType]
    -> f (Maybe [VerifiedAttributeType]))
-> UserPoolType
-> f UserPoolType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [VerifiedAttributeType]
  [VerifiedAttributeType]
  [VerifiedAttributeType]
  [VerifiedAttributeType]
-> Iso
     (Maybe [VerifiedAttributeType])
     (Maybe [VerifiedAttributeType])
     (Maybe [VerifiedAttributeType])
     (Maybe [VerifiedAttributeType])
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 AnIso
  [VerifiedAttributeType]
  [VerifiedAttributeType]
  [VerifiedAttributeType]
  [VerifiedAttributeType]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The policies associated with the user pool.
userPoolType_policies :: Lens.Lens' UserPoolType (Prelude.Maybe UserPoolPolicyType)
userPoolType_policies :: (Maybe UserPoolPolicyType -> f (Maybe UserPoolPolicyType))
-> UserPoolType -> f UserPoolType
userPoolType_policies = (UserPoolType -> Maybe UserPoolPolicyType)
-> (UserPoolType -> Maybe UserPoolPolicyType -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe UserPoolPolicyType)
     (Maybe UserPoolPolicyType)
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)

-- | You can choose to enable case sensitivity on the username input for the
-- selected sign-in option. For example, when this is set to @False@, users
-- will be able to 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 :: (Maybe UsernameConfigurationType
 -> f (Maybe UsernameConfigurationType))
-> UserPoolType -> f UserPoolType
userPoolType_usernameConfiguration = (UserPoolType -> Maybe UsernameConfigurationType)
-> (UserPoolType
    -> Maybe UsernameConfigurationType -> UserPoolType)
-> Lens
     UserPoolType
     UserPoolType
     (Maybe UsernameConfigurationType)
     (Maybe UsernameConfigurationType)
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)

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

instance Prelude.Hashable UserPoolType

instance Prelude.NFData UserPoolType