addCustomAttributes method

Future<void> addCustomAttributes({
  1. required List<SchemaAttributeType> customAttributes,
  2. required String userPoolId,
})

Adds additional user attributes to the user pool schema. Custom attributes can be mutable or immutable and have a custom: or dev: prefix. For more information, see Custom attributes.

Learn more

May throw InternalErrorException. May throw InvalidParameterException. May throw NotAuthorizedException. May throw OperationNotEnabledException. May throw ResourceNotFoundException. May throw TooManyRequestsException. May throw UserImportInProgressException.

Parameter customAttributes : An array of custom attribute names and other properties. Sets the following characteristics:

AttributeDataType
The expected data type. Can be a string, a number, a date and time, or a boolean.
Mutable
If true, you can grant app clients write access to the attribute value. If false, the attribute value can only be set up on sign-up or administrator creation of users.
Name
The attribute name. For an attribute like custom:myAttribute, enter myAttribute for this field.
Required
When true, users who sign up or are created must set a value for the attribute.
NumberAttributeConstraints
The minimum and maximum length of accepted values for a Number-type attribute.
StringAttributeConstraints
The minimum and maximum length of accepted values for a String-type attribute.
DeveloperOnlyAttribute
This legacy option creates an attribute with a dev: prefix. You can only set the value of a developer-only attribute with administrative IAM credentials.

Parameter userPoolId : The ID of the user pool where you want to add custom attributes.

Implementation

Future<void> addCustomAttributes({
  required List<SchemaAttributeType> customAttributes,
  required String userPoolId,
}) async {
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AWSCognitoIdentityProviderService.AddCustomAttributes'
  };
  await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'CustomAttributes': customAttributes,
      'UserPoolId': userPoolId,
    },
  );
}