overcast local AWS emulator

Service Reference

Cognito — Amazon Cognito User Pools

Cognito User Pools (Identity Provider) uses the application/x-amz-json-1.1 protocol. Operations are identified by the X-Amz-Target header with the prefix...

Cognito — Amazon Cognito User Pools

AWS docs: https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html

Cognito User Pools (Identity Provider) uses the application/x-amz-json-1.1 protocol. Operations are identified by the X-Amz-Target header with the prefix AWSCognitoIdentityProviderService.. RPC v2 CBOR is also supported via the Smithy RPC path (POST /service/cognito/operation/{Operation}).

Accepted wire protocols: awsJson1_1, rpcv2Cbor


Summary

Category✅ Supported⚠️ Partial🚧 WIP❌ Unsupported
User Pools5000
Pool Clients5000
Users10000
Auth / Tokens19000
Groups9000
Domains4000

User Pool operations

OperationStatusNotes
CreateUserPoolReturns Id and Arn; Id format {region}_{8-char-hex}; accepts email templates
DescribeUserPoolReturns email templates, admin config, email configuration
DeleteUserPoolResourceNotFoundException if not found
UpdateUserPoolUpdates VerificationMessageTemplate, AdminCreateUserConfig, EmailConfiguration
ListUserPoolsPagination via NextToken

User Pool Client operations

OperationStatusNotes
CreateUserPoolClientReturns ClientId (26-char hex); accepts AccessTokenValidity, IdTokenValidity, RefreshTokenValidity, TokenValidityUnits
DescribeUserPoolClientResourceNotFoundException if not found
DeleteUserPoolClientResourceNotFoundException if not found
UpdateUserPoolClientUpdates client name, token validity
ListUserPoolClientsPagination via NextToken

User operations

OperationStatusNotes
AdminCreateUserBcrypt hashes password; sends email unless MessageAction=SUPPRESS
AdminDeleteUserUserNotFoundException if not found
AdminGetUserReturns attributes + status
AdminSetUserPasswordPermanent=true sets status CONFIRMED
AdminConfirmSignUpConfirms a UNCONFIRMED user
AdminUpdateUserAttributesMerges attributes
AdminDeleteUserAttributesRemoves named attributes from a user
AdminDisableUserSets Enabled=false; sign-in returns NotAuthorizedException
AdminEnableUserRe-enables a disabled user
ListUsersPagination via PaginationToken

Auth / Token operations

OperationStatusNotes
SignUpSends confirmation email; returns UserSub
ConfirmSignUpCodeMismatchException / ExpiredCodeException on failure; returns Session for USER_AUTH sign-in
ResendConfirmationCodeGenerates and emails a new confirmation code
InitiateAuthUSER_PASSWORD_AUTH + REFRESH_TOKEN_AUTH; USER_AUTH with ConfirmSignUp Session; returns NEW_PASSWORD_REQUIRED or SOFTWARE_TOKEN_MFA
AdminInitiateAuthUSER_PASSWORD_AUTH + REFRESH_TOKEN_AUTH with UserPoolId; USER_AUTH with ConfirmSignUp Session
RespondToAuthChallengeNEW_PASSWORD_REQUIRED and SOFTWARE_TOKEN_MFA challenges
AdminRespondToAuthChallengeSame as above with admin credentials
ForgotPasswordSends password-reset code by email
ConfirmForgotPasswordValidates reset code; sets new bcrypt password
ChangePasswordValidates AccessToken + old password before setting new one
GetUserValidates AccessToken; returns full user profile
UpdateUserAttributesSelf-service; validates AccessToken; merges attributes
DeleteUserAttributesSelf-service; validates AccessToken; removes named attributes
GlobalSignOutRevokes access + id + refresh tokens for the user
RevokeTokenRevokes a specific refresh token
AssociateSoftwareTokenIssues a TOTP secret for the user; requires valid AccessToken
VerifySoftwareTokenVerifies a TOTP code and marks the secret verified
SetUserMFAPreferenceEnables/disables TOTP MFA for the calling user
AdminSetUserMFAPreferenceSame as above, admin version

Group operations

OperationStatusNotes
CreateGroupGroupExistsException if duplicate
GetGroupResourceNotFoundException if not found
DeleteGroupResourceNotFoundException if not found
UpdateGroupUpdates Description, Precedence, RoleArn
ListGroupsReturns all groups for a pool
AdminAddUserToGroupIdempotent
AdminRemoveUserFromGroupNo error if user is not in group
AdminListGroupsForUserReturns groups the user belongs to
ListUsersInGroupReturns users belonging to the specified group

User Pool Domain operations

OperationStatusNotes
CreateUserPoolDomainAssociates a domain with the user pool’s hosted UI
DescribeUserPoolDomainReturns domain details; empty DomainDescription when domain not found
DeleteUserPoolDomainRemoves the domain association from the pool
UpdateUserPoolDomainAccepted; SSL certificate updates are inert in the emulator

Notes

Each user pool exposes a JWKS endpoint used by API Gateways and libraries to validate tokens:

GET /{poolId}/.well-known/jwks.json

Access and ID tokens are RS256-signed JWTs. The signing key is lazily generated per pool (RSA-2048) and stored in the emulator state so it survives restarts when a persistent backend is used.

  • Target dispatch header: X-Amz-Target: AWSCognitoIdentityProviderService.<Operation>.
  • Unimplemented operations return JSON 501 Not Implemented.
  • Pool IDs follow the {region}_{8-char-hex} format (e.g. us-east-1_A1B2C3D4).
  • Passwords are stored using bcrypt (cost 10).
  • Access and ID tokens are RS256-signed JWTs (standard 3-part format). Refresh, session, and MFA tokens are opaque hex strings.
  • Each pool has a lazily-generated RSA-2048 signing key exposed at the JWKS endpoint.
  • Email delivery uses the configured SMTP server (the built-in mock SMTP server by default).
  • Per-pool email templates: VerificationMessageTemplate (with EmailMessage, EmailSubject, EmailMessageByLink, EmailSubjectByLink, DefaultEmailOption, SmsMessage), AdminCreateUserConfig (with InviteMessageTemplate containing EmailMessage, EmailSubject, SMSMessage; plus AllowAdminCreateUserOnly and UnusedAccountValidityDays), and EmailConfiguration (with EmailSendingAccount, SourceArn, From, ReplyToEmailAddress). Templates use {username} and {####} placeholders.
  • TOTP MFA: RFC 6238, HMAC-SHA1, 30-second window, 6-digit codes. Clock skew tolerance: ±30 seconds.

User import (emulator-only)

Users can be imported from a real AWS Cognito user pool into an Overcast pool. Imported users are placed in FORCE_CHANGE_PASSWORD status because password hashes cannot be extracted from AWS.

CLI

overcast import cognito-users \
  --from-pool-id us-east-1_abc123 \
  --to-pool-id us-east-1_abc123 \
  --from-profile my-aws-profile \
  --batch-size 100
FlagDefaultDescription
--from-pool-id(req)Source user pool ID in real AWS
--to-pool-id(req)Target user pool ID in Overcast
--from-profileAWS profile for source credentials
--from-regionAWS region (auto-detected if omitted)
--userImport a single user by sub (UUID)
--max-users0Limit total users (0 = unlimited)
--batch-size100Users per POST to the server
--endpointOvercast daemon URL (inherited from root command)

HTTP endpoint

POST /_overcast/cognito/user-pools/{poolId}/import-users

Content-Type: application/json

{
  "users": [
    {
      "username": "jdoe",
      "sub": "a1b2c3d4-...",
      "enabled": true,
      "status": "CONFIRMED",
      "createdAt": "2024-01-01T00:00:00Z",
      "modifiedAt": "2024-01-01T00:00:00Z",
      "attributes": [
        {"name": "email", "value": "jdoe@example.com"}
      ],
      "groups": ["Admins"],
      "mfaEnabled": false
    }
  ]
}

Response

{
  "imported": 1,
  "skipped": 0,
  "errors": []
}

Status mapping

AWS statusOvercast status
CONFIRMEDFORCE_CHANGE_PASSWORD
FORCE_CHANGE_PASSWORDFORCE_CHANGE_PASSWORD
RESET_REQUIREDFORCE_CHANGE_PASSWORD
UNCONFIRMEDUNCONFIRMED
DISABLEDDISABLED
ARCHIVED, COMPROMISEDDISABLED
EXTERNAL_PROVIDERskipped

Behaviour

  • The original sub is preserved; any sub attribute in the payload is overwritten.
  • Groups referenced by the user are auto-created as stubs if they don’t already exist in the target pool.
  • Duplicate usernames are skipped (reported in errors).
  • No password, confirmation code, or TOTP secret is imported.

Summary

Category✅ Supported
User Pool operations7
User Pool Client operations5
User operations10
Auth / Token operations32
Group operations9
User Pool Domain operations4
Tags3

Endpoints

User Pool operations

OperationStatusNotesAWS Docs
CreateUserPool✅ SupportedReturns Id and Arn; Id format {region}_{8-char-hex}; accepts SignInPolicy, email templates, UserAttributeUpdateSettings, DeviceConfiguration, AliasAttributes, AccountRecoverySetting, SmsConfiguration, SmsAuthenticationMessage, SmsVerificationMessage, EmailVerificationMessage, EmailVerificationSubject, and LambdaConfig; LambdaConfig’s PreSignUp, PostConfirmation, PreTokenGeneration, PostAuthentication, and CustomMessage are invoked on the classic X-Amz-Target API (issue #1171); PreAuthentication, UserMigration, the CUSTOM_AUTH challenge triggers (#88/#94/#101), and the Smithy RPC v2 duplicate dispatch path are notdocs
DescribeUserPool✅ SupportedReturns SignInPolicy, email templates, admin config, email configuration, UserAttributeUpdateSettings, AliasAttributes, AccountRecoverySetting, SmsConfiguration, SmsAuthenticationMessage, SmsVerificationMessage, EmailVerificationMessage, EmailVerificationSubject, and LambdaConfigdocs
DeleteUserPool✅ SupportedResourceNotFoundException if not founddocs
UpdateUserPool✅ SupportedUpdates SignInPolicy, VerificationMessageTemplate, AdminCreateUserConfig, EmailConfiguration, UserAttributeUpdateSettings, DeviceConfiguration, AccountRecoverySetting, SmsConfiguration, SmsAuthenticationMessage, SmsVerificationMessage, EmailVerificationMessage, EmailVerificationSubject, and LambdaConfig; the CloudFormation UserPool handler treats an AliasAttributes/UsernameAttributes change as requiring replacement, matching real Cognito’s UpdateUserPoolRequest (neither is a member there)docs
ListUserPools✅ SupportedPagination via NextTokendocs
SetUserPoolMfaConfig✅ SupportedStores MfaConfiguration and WebAuthnConfiguration for passkey sign-in; passkey cryptographic validation is intentionally partialdocs
GetUserPoolMfaConfig✅ SupportedReturns stored MfaConfiguration and WebAuthnConfigurationdocs

User Pool Client operations

OperationStatusNotesAWS Docs
CreateUserPoolClient✅ SupportedReturns ClientId (26-char hex); accepts and validates ExplicitAuthFlows, AccessTokenValidity, IdTokenValidity, RefreshTokenValidity, TokenValidityUnits, PreventUserExistenceErrors, ReadAttributes, WriteAttributesdocs
DescribeUserPoolClient✅ SupportedResourceNotFoundException if not founddocs
DeleteUserPoolClient✅ SupportedResourceNotFoundException if not founddocs
UpdateUserPoolClient✅ SupportedUpdates client name, validates ExplicitAuthFlows, token validity, PreventUserExistenceErrors, ReadAttributes, WriteAttributesdocs
ListUserPoolClients✅ SupportedPagination via NextTokendocs

User operations

OperationStatusNotesAWS Docs
AdminCreateUser✅ SupportedBcrypt hashes password; sends email unless MessageAction=SUPPRESS; invokes PreSignUp_AdminCreateUser (its autoConfirm/autoVerify response fields are ignored, matching AWS) and CustomMessage_AdminCreateUser (issue #1171)docs
AdminDeleteUser✅ SupportedUserNotFoundException if not founddocs
AdminGetUser✅ SupportedReturns attributes + statusdocs
AdminSetUserPassword✅ SupportedPermanent=true sets status CONFIRMEDdocs
AdminConfirmSignUp✅ SupportedConfirms a UNCONFIRMED user; invokes PostConfirmation_ConfirmSignUp fire-and-forget — a trigger error is logged but does not fail the call or roll back the confirmation (issue #1171)docs
AdminUpdateUserAttributes✅ SupportedMerges attributes; honors verification-before-update settings unless *_verified=true is supplieddocs
AdminDeleteUserAttributes✅ SupportedRemoves named attributes from a userdocs
AdminDisableUser✅ SupportedSets Enabled=false; sign-in returns NotAuthorizedExceptiondocs
AdminEnableUser✅ SupportedRe-enables a disabled userdocs
ListUsers✅ SupportedPagination via PaginationTokendocs

Auth / Token operations

OperationStatusNotesAWS Docs
SignUp✅ SupportedSends confirmation email; returns UserSub; invokes PreSignUp_SignUp (autoConfirmUser/autoVerifyEmail/autoVerifyPhone honored — an auto-confirmed user also fires PostConfirmation_ConfirmSignUp within the same call, and no confirmation message is sent) and CustomMessage_SignUp; either failing fails SignUp with UserLambdaValidationException (issue #1171)docs
ConfirmSignUp✅ SupportedCodeMismatchException / ExpiredCodeException on failure; returns Session for USER_AUTH sign-in; invokes PostConfirmation_ConfirmSignUp fire-and-forget (issue #1171)docs
ResendConfirmationCode✅ SupportedGenerates and emails a new confirmation code; invokes CustomMessage_ResendCode, failing the call on a trigger error (issue #1171)docs
InitiateAuth✅ SupportedUSER_PASSWORD_AUTH + USER_SRP_AUTH + REFRESH_TOKEN_AUTH + CUSTOM_AUTH; USER_AUTH with ConfirmSignUp Session, SELECT_CHALLENGE/PASSWORD/PASSWORD_SRP/WEB_AUTHN/EMAIL_OTP/SMS_OTP, or preferred PASSWORD/WEB_AUTHN/EMAIL_OTP/SMS_OTP; returns NEW_PASSWORD_REQUIRED, SOFTWARE_TOKEN_MFA, or DEVICE_SRP_AUTH; a completed authentication invokes PostAuthentication_Authentication then PreTokenGeneration (TokenGeneration_Authentication/_RefreshTokens/_NewPasswordChallenge/_AuthenticateDevice as appropriate), each able to fail the call (issue #1171)docs
AdminInitiateAuth✅ SupportedUSER_PASSWORD_AUTH + USER_SRP_AUTH + REFRESH_TOKEN_AUTH + CUSTOM_AUTH with UserPoolId; USER_AUTH with ConfirmSignUp Session, SELECT_CHALLENGE/PASSWORD/PASSWORD_SRP/WEB_AUTHN/EMAIL_OTP/SMS_OTP, or preferred PASSWORD/WEB_AUTHN/EMAIL_OTP/SMS_OTP; same PostAuthentication/PreTokenGeneration trigger invocation as InitiateAuth (issue #1171)docs
RespondToAuthChallenge✅ SupportedSELECT_CHALLENGE/PASSWORD/PASSWORD_SRP/WEB_AUTHN/EMAIL_OTP/SMS_OTP, PASSWORD, PASSWORD_VERIFIER, CUSTOM_CHALLENGE, DEVICE_SRP_AUTH, DEVICE_PASSWORD_VERIFIER, WEB_AUTHN, EMAIL_OTP, SMS_OTP, NEW_PASSWORD_REQUIRED, and SOFTWARE_TOKEN_MFA challenges; a challenge completion that issues tokens invokes PostAuthentication_Authentication (skipped for NEW_PASSWORD_REQUIRED) then PreTokenGeneration, each able to fail the call (issue #1171)docs
AdminRespondToAuthChallenge✅ SupportedSame as above with admin credentials, including the same trigger invocation (issue #1171)docs
ConfirmDevice✅ SupportedConfirms a NewDeviceMetadata device key and stores remembered-device metadata; SRP verifier validation is intentionally partialdocs
GetDevice✅ SupportedReturns a confirmed device for the signed-in userdocs
ListDevices✅ SupportedLists confirmed devices for the signed-in userdocs
UpdateDeviceStatus✅ SupportedMarks a signed-in user’s confirmed device as remembered or not_remembereddocs
ForgetDevice✅ SupportedRemoves a confirmed device for the signed-in userdocs
AdminGetDevice✅ SupportedReturns a user’s confirmed devicedocs
AdminListDevices✅ SupportedLists a user’s confirmed devices with paginationdocs
AdminUpdateDeviceStatus✅ SupportedMarks a user’s confirmed device as remembered or not_remembereddocs
AdminForgetDevice✅ SupportedRemoves a user’s confirmed devicedocs
ForgotPassword✅ SupportedSends password-reset code by email; invokes CustomMessage_ForgotPassword, failing the call on a trigger error (issue #1171)docs
ConfirmForgotPassword✅ SupportedValidates reset code; sets new bcrypt password; invokes PostConfirmation_ConfirmForgotPassword fire-and-forget (issue #1171)docs
ChangePassword✅ SupportedValidates AccessToken + old password before setting new onedocs
GetUser✅ SupportedValidates AccessToken; returns full user profiledocs
UpdateUserAttributes✅ SupportedSelf-service; validates AccessToken; merges attributes or creates pending email/phone updates with CodeDeliveryDetailsListdocs
VerifyUserAttribute✅ SupportedVerifies pending email/phone updates and sets *_verified=truedocs
GetUserAttributeVerificationCode✅ SupportedSends or resends email/phone verification codes for the signed-in userdocs
DeleteUserAttributes✅ SupportedSelf-service; validates AccessToken; removes named attributesdocs
GlobalSignOut✅ SupportedRevokes access + id + refresh tokens for the userdocs
RevokeToken✅ SupportedRevokes a specific refresh tokendocs
AssociateSoftwareToken✅ SupportedIssues a TOTP secret for the user; requires valid AccessTokendocs
VerifySoftwareToken✅ SupportedVerifies a TOTP code and marks the secret verifieddocs
StartWebAuthnRegistration✅ SupportedReturns passkey CredentialCreationOptions for the signed-in userdocs
CompleteWebAuthnRegistration✅ SupportedRegisters passkey credential metadata; attestation validation is intentionally partialdocs
SetUserMFAPreference✅ SupportedEnables/disables TOTP MFA for the calling userdocs
AdminSetUserMFAPreference✅ SupportedSame as above, admin versiondocs

Group operations

OperationStatusNotesAWS Docs
CreateGroup✅ SupportedGroupExistsException if duplicatedocs
GetGroup✅ SupportedResourceNotFoundException if not founddocs
DeleteGroup✅ SupportedResourceNotFoundException if not founddocs
UpdateGroup✅ SupportedUpdates Description, Precedence, RoleArndocs
ListGroups✅ SupportedReturns all groups for a pooldocs
AdminAddUserToGroup✅ SupportedIdempotentdocs
AdminRemoveUserFromGroup✅ SupportedNo error if user is not in groupdocs
AdminListGroupsForUser✅ SupportedReturns groups the user belongs todocs
ListUsersInGroup✅ SupportedReturns users belonging to the specified groupdocs

User Pool Domain operations

OperationStatusNotesAWS Docs
CreateUserPoolDomain✅ SupportedAssociates a domain with the user pool’s hosted UIdocs
DescribeUserPoolDomain✅ SupportedReturns domain details; empty DomainDescription when domain not founddocs
DeleteUserPoolDomain✅ SupportedRemoves the domain association from the pooldocs
UpdateUserPoolDomain✅ SupportedAccepted; SSL certificate updates are inert in the emulatordocs

Tags

OperationStatusNotesAWS Docs
TagResource✅ Supporteddocs
UntagResource✅ Supporteddocs
ListTagsForResource✅ Supporteddocs