Amazon Cognito · JSON Structure

Amazon Cognito User Pool Structure

Schema representing an Amazon Cognito user pool configuration and its properties.

Type: object Properties: 16 Required: 1
AuthenticationIdentityOAuthOIDCSAMLUser ManagementFederated Identity

Amazon Cognito User Pool is a JSON Structure definition published by Amazon Cognito, describing 16 properties, of which 1 is required. It conforms to the https://json-structure.org/meta/core/v0/# meta-schema.

Properties

Id Name Status Arn CreationDate LastModifiedDate EstimatedNumberOfUsers MfaConfiguration Policies AutoVerifiedAttributes UsernameAttributes SchemaAttributes EmailConfiguration SmsConfiguration UserPoolTags AdminCreateUserConfig

Meta-schema: https://json-structure.org/meta/core/v0/#

JSON Structure

Raw ↑
{
  "$schema": "https://json-structure.org/meta/core/v0/#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/amazon-cognito/refs/heads/main/json-structure/amazon-cognito-user-pool-structure.json",
  "name": "Amazon Cognito User Pool",
  "description": "Schema representing an Amazon Cognito user pool configuration and its properties.",
  "type": "object",
  "properties": {
    "Id": {
      "type": "string",
      "description": "The unique identifier for the user pool."
    },
    "Name": {
      "type": "string",
      "description": "The name of the user pool."
    },
    "Status": {
      "type": "string",
      "description": "The status of the user pool.",
      "enum": [
        "Enabled",
        "Disabled"
      ]
    },
    "Arn": {
      "type": "string",
      "description": "The Amazon Resource Name (ARN) for the user pool.",
      "pattern": "^arn:aws:cognito-idp:[a-z0-9-]+:[0-9]+:userpool/[a-zA-Z0-9_-]+$"
    },
    "CreationDate": {
      "type": "datetime",
      "description": "The date and time when the user pool was created."
    },
    "LastModifiedDate": {
      "type": "datetime",
      "description": "The date and time when the user pool was last modified."
    },
    "EstimatedNumberOfUsers": {
      "type": "integer",
      "description": "A number estimating the size of the user pool.",
      "minimum": 0
    },
    "MfaConfiguration": {
      "type": "string",
      "description": "The multi-factor authentication (MFA) configuration.",
      "enum": [
        "OFF",
        "ON",
        "OPTIONAL"
      ]
    },
    "Policies": {
      "type": "object",
      "description": "The policies associated with the user pool.",
      "properties": {
        "PasswordPolicy": {
          "type": "object",
          "description": "The password policy for the user pool.",
          "properties": {
            "MinimumLength": {
              "type": "integer",
              "description": "The minimum length of the password.",
              "minimum": 6,
              "maximum": 99
            },
            "RequireUppercase": {
              "type": "boolean",
              "description": "Whether the password must contain at least one uppercase letter."
            },
            "RequireLowercase": {
              "type": "boolean",
              "description": "Whether the password must contain at least one lowercase letter."
            },
            "RequireNumbers": {
              "type": "boolean",
              "description": "Whether the password must contain at least one number."
            },
            "RequireSymbols": {
              "type": "boolean",
              "description": "Whether the password must contain at least one symbol."
            },
            "TemporaryPasswordValidityDays": {
              "type": "integer",
              "description": "The number of days a temporary password is valid.",
              "minimum": 0,
              "maximum": 365
            }
          }
        }
      }
    },
    "AutoVerifiedAttributes": {
      "type": "array",
      "description": "The attributes that are automatically verified.",
      "items": {
        "type": "string",
        "enum": [
          "phone_number",
          "email"
        ]
      }
    },
    "UsernameAttributes": {
      "type": "array",
      "description": "Specifies whether email addresses or phone numbers can be used as user names when a user signs up.",
      "items": {
        "type": "string",
        "enum": [
          "phone_number",
          "email"
        ]
      }
    },
    "SchemaAttributes": {
      "type": "array",
      "description": "The schema attributes for the user pool.",
      "items": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The name of the attribute."
          },
          "AttributeDataType": {
            "type": "string",
            "description": "The data type of the attribute.",
            "enum": [
              "String",
              "Number",
              "DateTime",
              "Boolean"
            ]
          },
          "Mutable": {
            "type": "boolean",
            "description": "Whether the attribute can be changed after creation."
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the attribute is required during user registration."
          },
          "StringAttributeConstraints": {
            "type": "object",
            "properties": {
              "MinLength": {
                "type": "string",
                "description": "The minimum length."
              },
              "MaxLength": {
                "type": "string",
                "description": "The maximum length."
              }
            }
          },
          "NumberAttributeConstraints": {
            "type": "object",
            "properties": {
              "MinValue": {
                "type": "string",
                "description": "The minimum value."
              },
              "MaxValue": {
                "type": "string",
                "description": "The maximum value."
              }
            }
          }
        },
        "required": [
          "Name"
        ]
      }
    },
    "EmailConfiguration": {
      "type": "object",
      "description": "The email configuration for the user pool.",
      "properties": {
        "SourceArn": {
          "type": "string",
          "description": "The ARN of a verified email address in Amazon SES."
        },
        "ReplyToEmailAddress": {
          "type": "string",
          "format": "email",
          "description": "The destination to which the receiver of the email should reply."
        },
        "EmailSendingAccount": {
          "type": "string",
          "description": "Specifies whether Amazon Cognito emails your users by using its built-in email functionality or your Amazon SES email configuration.",
          "enum": [
            "COGNITO_DEFAULT",
            "DEVELOPER"
          ]
        }
      }
    },
    "SmsConfiguration": {
      "type": "object",
      "description": "The SMS configuration for the user pool.",
      "properties": {
        "SnsCallerArn": {
          "type": "string",
          "description": "The Amazon Resource Name (ARN) of the Amazon SNS caller."
        },
        "ExternalId": {
          "type": "string",
          "description": "The external ID."
        },
        "SnsRegion": {
          "type": "string",
          "description": "The AWS Region to use with Amazon SNS integration."
        }
      },
      "required": [
        "SnsCallerArn"
      ]
    },
    "UserPoolTags": {
      "type": "object",
      "description": "The tags that are assigned to the user pool.",
      "additionalProperties": {
        "type": "string"
      }
    },
    "AdminCreateUserConfig": {
      "type": "object",
      "description": "The configuration for AdminCreateUser requests.",
      "properties": {
        "AllowAdminCreateUserOnly": {
          "type": "boolean",
          "description": "Set to true if only the administrator is allowed to create user profiles."
        },
        "UnusedAccountValidityDays": {
          "type": "integer",
          "description": "The user account expiration limit, in days, after which the account is no longer usable."
        },
        "InviteMessageTemplate": {
          "type": "object",
          "properties": {
            "SMSMessage": {
              "type": "string"
            },
            "EmailMessage": {
              "type": "string"
            },
            "EmailSubject": {
              "type": "string"
            }
          }
        }
      }
    }
  },
  "required": [
    "Name"
  ]
}