createUserPool method
- required String poolName,
- AccountRecoverySettingType? accountRecoverySetting,
- AdminCreateUserConfigType? adminCreateUserConfig,
- List<
AliasAttributeType> ? aliasAttributes, - List<
VerifiedAttributeType> ? autoVerifiedAttributes, - DeletionProtectionType? deletionProtection,
- DeviceConfigurationType? deviceConfiguration,
- EmailConfigurationType? emailConfiguration,
- String? emailVerificationMessage,
- String? emailVerificationSubject,
- IssuerConfigurationType? issuerConfiguration,
- KeyConfigurationType? keyConfiguration,
- LambdaConfigType? lambdaConfig,
- UserPoolMfaType? mfaConfiguration,
- UserPoolPolicyType? policies,
- List<
SchemaAttributeType> ? schema, - String? smsAuthenticationMessage,
- SmsConfigurationType? smsConfiguration,
- String? smsVerificationMessage,
- UserAttributeUpdateSettingsType? userAttributeUpdateSettings,
- UserPoolAddOnsType? userPoolAddOns,
- Map<
String, String> ? userPoolTags, - UserPoolTierType? userPoolTier,
- List<
UsernameAttributeType> ? usernameAttributes, - UsernameConfigurationType? usernameConfiguration,
- VerificationMessageTemplateType? verificationMessageTemplate,
Creates a new Amazon Cognito user pool. This operation sets basic and advanced configuration options.
If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Services service, Amazon Simple Notification Service might place your account in the SMS sandbox. In sandbox mode , you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see SMS message settings for Amazon Cognito user pools in the Amazon Cognito Developer Guide.
Learn more
- Signing Amazon Web Services API Requests
- Using the Amazon Cognito user pools API and user pool endpoints
May throw FeatureUnavailableInTierException.
May throw InternalErrorException.
May throw InvalidEmailRoleAccessPolicyException.
May throw InvalidParameterException.
May throw InvalidSmsRoleAccessPolicyException.
May throw InvalidSmsRoleTrustRelationshipException.
May throw LimitExceededException.
May throw NotAuthorizedException.
May throw TierChangeNotAllowedException.
May throw TooManyRequestsException.
May throw UserPoolTaggingException.
Parameter poolName :
A friendly name for your user pool.
Parameter accountRecoverySetting :
The available verified method a user can use to recover their password
when they call ForgotPassword. You can use this setting to
define a preferred method when a user has more than one method available.
With this setting, SMS doesn't qualify for a valid password recovery
mechanism if the user also has SMS multi-factor authentication (MFA)
activated. Email MFA is also disqualifying for account recovery with
email. In the absence of this setting, Amazon Cognito uses the legacy
behavior to determine the recovery method where SMS is preferred over
email.
As a best practice, configure both verified_email and
verified_phone_number, with one having a higher priority than
the other.
Parameter adminCreateUserConfig :
The configuration for administrative creation of users. Includes the
template for the invitation message for new users, the duration of
temporary passwords, and permitting self-service sign-up.
Parameter aliasAttributes :
Attributes supported as an alias for this user pool. For more information
about alias attributes, see Customizing
sign-in attributes.
Parameter autoVerifiedAttributes :
The attributes that you want your user pool to automatically verify. For
more information, see Verifying
contact information at sign-up.
Parameter deletionProtection :
When active, DeletionProtection prevents accidental deletion
of your user pool. Before you can delete a user pool that you have
protected against deletion, you must deactivate this feature.
When you try to delete a protected user pool in a
DeleteUserPool API request, Amazon Cognito returns an
InvalidParameterException error. To delete a protected user
pool, send a new DeleteUserPool request after you deactivate
deletion protection in an UpdateUserPool API request.
Parameter deviceConfiguration :
The device-remembering configuration for a user pool. Device remembering
or device tracking is a "Remember me on this device" option for user pools
that perform authentication with the device key of a trusted device in the
back end, instead of a user-provided MFA code. For more information about
device authentication, see Working
with user devices in your user pool. A null value indicates that you
have deactivated device remembering in your user pool.
Parameter emailConfiguration :
The email configuration of your user pool. The email configuration type
sets your preferred sending method, Amazon Web Services Region, and sender
for messages from your user pool.
Parameter emailVerificationMessage :
This parameter is no longer used.
Parameter emailVerificationSubject :
This parameter is no longer used.
Parameter issuerConfiguration :
The issuer configuration for the user pool. Specifies the issuer type for
token generation.
Parameter keyConfiguration :
The key configuration for the user pool. Specifies the key type and KMS
key ARN for encryption.
Parameter lambdaConfig :
A collection of user pool Lambda triggers. Amazon Cognito invokes triggers
at several possible stages of authentication operations. Triggers can
modify the outcome of the operations that invoked them.
Parameter mfaConfiguration :
Sets multi-factor authentication (MFA) to be on, off, or optional. When
ON, all users must set up MFA before they can sign in. When
OPTIONAL, your application must make a client-side
determination of whether a user wants to register an MFA device. For user
pools with adaptive authentication with threat protection, choose
OPTIONAL.
When MfaConfiguration is OPTIONAL, managed login
doesn't automatically prompt users to set up MFA. Amazon Cognito generates
MFA prompts in API responses and in managed login for users who have
chosen and configured a preferred MFA factor.
Parameter policies :
The password policy and sign-in policy in the user pool. The password
policy sets options like password complexity requirements and password
history. The sign-in policy sets the options available to applications in
choice-based
authentication.
Parameter schema :
An array of attributes for the new user pool. You can add custom
attributes and modify the properties of default attributes. The
specifications in this parameter set the required attributes in your user
pool. For more information, see Working
with user attributes.
Parameter smsAuthenticationMessage :
The contents of the SMS message that your user pool sends to users in SMS
OTP and MFA authentication.
Parameter smsConfiguration :
The settings for your Amazon Cognito user pool to send SMS messages with
Amazon Simple Notification Service. To send SMS messages with Amazon SNS
in the Amazon Web Services Region that you want, the Amazon Cognito user
pool uses an Identity and Access Management (IAM) role in your Amazon Web
Services account. For more information see SMS
message settings.
Parameter smsVerificationMessage :
This parameter is no longer used.
Parameter userAttributeUpdateSettings :
The settings for updates to user attributes. These settings include the
property AttributesRequireVerificationBeforeUpdate, a
user-pool setting that tells Amazon Cognito how to handle changes to the
value of your users' email address and phone number attributes. For more
information, see
Verifying updates to email addresses and phone numbers.
Parameter userPoolAddOns :
Contains settings for activation of threat protection, including the
operating mode and additional authentication types. To log user security
information but take no action, set to AUDIT. To configure
automatic security responses to potentially unwanted traffic to your user
pool, set to ENFORCED.
For more information, see Adding advanced security to a user pool. To activate this setting, your user pool must be on the Plus tier.
Parameter userPoolTags :
The tag keys and values to assign to the user pool. A tag is a label that
you can use to categorize and manage user pools in different ways, such as
by purpose, owner, environment, or other criteria.
Parameter userPoolTier :
The user pool feature
plan, or tier. This parameter determines the eligibility of the user
pool for features like managed login, access-token customization, and
threat protection. Defaults to ESSENTIALS.
Parameter usernameAttributes :
Specifies whether a user can use an email address or phone number as a
username when they sign up. For more information, see Customizing
sign-in attributes.
Parameter usernameConfiguration :
Sets the case sensitivity option for sign-in usernames. When
CaseSensitive is false (case insensitive), users
can sign in with any combination of capital and lowercase letters. For
example, username, USERNAME, or
UserName, or for email, email@example.com or
EMaiL@eXamplE.Com. For most use cases, set case sensitivity
to false as a best practice. When usernames and email
addresses are case insensitive, Amazon Cognito treats any variation in
case as the same user, and prevents a case variation from being assigned
to the same attribute for a different user.
When CaseSensitive is true (case sensitive),
Amazon Cognito interprets USERNAME and UserName
as distinct users.
This configuration is immutable after you set it.
Parameter verificationMessageTemplate :
The template for the verification message that your user pool delivers to
users who set an email address or phone number attribute.
Set the email message type that corresponds to your
DefaultEmailOption selection. For
CONFIRM_WITH_LINK, specify an EmailMessageByLink
and leave EmailMessage blank. For
CONFIRM_WITH_CODE, specify an EmailMessage and
leave EmailMessageByLink blank. When you supply both
parameters with either choice, Amazon Cognito returns an error.
Implementation
Future<CreateUserPoolResponse> createUserPool({
required String poolName,
AccountRecoverySettingType? accountRecoverySetting,
AdminCreateUserConfigType? adminCreateUserConfig,
List<AliasAttributeType>? aliasAttributes,
List<VerifiedAttributeType>? autoVerifiedAttributes,
DeletionProtectionType? deletionProtection,
DeviceConfigurationType? deviceConfiguration,
EmailConfigurationType? emailConfiguration,
String? emailVerificationMessage,
String? emailVerificationSubject,
IssuerConfigurationType? issuerConfiguration,
KeyConfigurationType? keyConfiguration,
LambdaConfigType? lambdaConfig,
UserPoolMfaType? mfaConfiguration,
UserPoolPolicyType? policies,
List<SchemaAttributeType>? schema,
String? smsAuthenticationMessage,
SmsConfigurationType? smsConfiguration,
String? smsVerificationMessage,
UserAttributeUpdateSettingsType? userAttributeUpdateSettings,
UserPoolAddOnsType? userPoolAddOns,
Map<String, String>? userPoolTags,
UserPoolTierType? userPoolTier,
List<UsernameAttributeType>? usernameAttributes,
UsernameConfigurationType? usernameConfiguration,
VerificationMessageTemplateType? verificationMessageTemplate,
}) async {
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'AWSCognitoIdentityProviderService.CreateUserPool'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'PoolName': poolName,
if (accountRecoverySetting != null)
'AccountRecoverySetting': accountRecoverySetting,
if (adminCreateUserConfig != null)
'AdminCreateUserConfig': adminCreateUserConfig,
if (aliasAttributes != null)
'AliasAttributes': aliasAttributes.map((e) => e.value).toList(),
if (autoVerifiedAttributes != null)
'AutoVerifiedAttributes':
autoVerifiedAttributes.map((e) => e.value).toList(),
if (deletionProtection != null)
'DeletionProtection': deletionProtection.value,
if (deviceConfiguration != null)
'DeviceConfiguration': deviceConfiguration,
if (emailConfiguration != null)
'EmailConfiguration': emailConfiguration,
if (emailVerificationMessage != null)
'EmailVerificationMessage': emailVerificationMessage,
if (emailVerificationSubject != null)
'EmailVerificationSubject': emailVerificationSubject,
if (issuerConfiguration != null)
'IssuerConfiguration': issuerConfiguration,
if (keyConfiguration != null) 'KeyConfiguration': keyConfiguration,
if (lambdaConfig != null) 'LambdaConfig': lambdaConfig,
if (mfaConfiguration != null)
'MfaConfiguration': mfaConfiguration.value,
if (policies != null) 'Policies': policies,
if (schema != null) 'Schema': schema,
if (smsAuthenticationMessage != null)
'SmsAuthenticationMessage': smsAuthenticationMessage,
if (smsConfiguration != null) 'SmsConfiguration': smsConfiguration,
if (smsVerificationMessage != null)
'SmsVerificationMessage': smsVerificationMessage,
if (userAttributeUpdateSettings != null)
'UserAttributeUpdateSettings': userAttributeUpdateSettings,
if (userPoolAddOns != null) 'UserPoolAddOns': userPoolAddOns,
if (userPoolTags != null) 'UserPoolTags': userPoolTags,
if (userPoolTier != null) 'UserPoolTier': userPoolTier.value,
if (usernameAttributes != null)
'UsernameAttributes': usernameAttributes.map((e) => e.value).toList(),
if (usernameConfiguration != null)
'UsernameConfiguration': usernameConfiguration,
if (verificationMessageTemplate != null)
'VerificationMessageTemplate': verificationMessageTemplate,
},
);
return CreateUserPoolResponse.fromJson(jsonResponse.body);
}