Skip to content

feat(parser): Added Cognito trigger schemas #6737

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions aws_lambda_powertools/utilities/parser/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,43 @@
CloudWatchLogsLogEvent,
CloudWatchLogsModel,
)
from .cognito import (
CognitoCallerContextModel,
CognitoChallengeResultModel,
CognitoPreSignupRequestModel,
CognitoPreSignupResponseModel,
CognitoPreSignupTriggerModel,
CognitoPostConfirmationRequestModel,
CognitoPostConfirmationTriggerModel,
CognitoPreAuthenticationRequestModel,
CognitoPreAuthenticationTriggerModel,
CognitoPostAuthenticationRequestModel,
CognitoPostAuthenticationTriggerModel,
CognitoGroupConfigurationModel,
CognitoPreTokenGenRequestModel,
CognitoClaimsOverrideDetailsModel,
CognitoPreTokenGenResponseModel,
CognitoPreTokenGenerationTriggerModel,
CognitoMigrateUserRequestModel,
CognitoMigrateUserResponseModel,
CognitoMigrateUserTriggerModel,
CognitoCustomMessageRequestModel,
CognitoCustomMessageResponseModel,
CognitoCustomMessageTriggerModel,
CognitoCustomEmailSenderRequestModel,
CognitoCustomEmailSenderTriggerModel,
CognitoCustomSMSSenderRequestModel,
CognitoCustomSMSSenderTriggerModel,
CognitoDefineAuthChallengeRequestModel,
CognitoDefineAuthChallengeResponseModel,
CognitoDefineAuthChallengeTriggerModel,
CognitoCreateAuthChallengeRequestModel,
CognitoCreateAuthChallengeResponseModel,
CognitoCreateAuthChallengeTriggerModel,
CognitoVerifyAuthChallengeRequestModel,
CognitoVerifyAuthChallengeResponseModel,
CognitoVerifyAuthChallengeTriggerModel,
)
from .dynamodb import (
DynamoDBStreamChangedRecordModel,
DynamoDBStreamModel,
Expand Down Expand Up @@ -138,6 +175,41 @@
"CloudWatchLogsDecode",
"CloudWatchLogsLogEvent",
"CloudWatchLogsModel",
"CognitoCallerContextModel",
"CognitoChallengeResultModel",
"CognitoPreSignupRequestModel",
"CognitoPreSignupResponseModel",
"CognitoPreSignupTriggerModel",
"CognitoPostConfirmationRequestModel",
"CognitoPostConfirmationTriggerModel",
"CognitoPreAuthenticationRequestModel",
"CognitoPreAuthenticationTriggerModel",
"CognitoPostAuthenticationRequestModel",
"CognitoPostAuthenticationTriggerModel",
"CognitoGroupConfigurationModel",
"CognitoPreTokenGenRequestModel",
"CognitoClaimsOverrideDetailsModel",
"CognitoPreTokenGenResponseModel",
"CognitoPreTokenGenerationTriggerModel",
"CognitoMigrateUserRequestModel",
"CognitoMigrateUserResponseModel",
"CognitoMigrateUserTriggerModel",
"CognitoCustomMessageRequestModel",
"CognitoCustomMessageResponseModel",
"CognitoCustomMessageTriggerModel",
"CognitoCustomEmailSenderRequestModel",
"CognitoCustomEmailSenderTriggerModel",
"CognitoCustomSMSSenderRequestModel",
"CognitoCustomSMSSenderTriggerModel",
"CognitoDefineAuthChallengeRequestModel",
"CognitoDefineAuthChallengeResponseModel",
"CognitoDefineAuthChallengeTriggerModel",
"CognitoCreateAuthChallengeRequestModel",
"CognitoCreateAuthChallengeResponseModel",
"CognitoCreateAuthChallengeTriggerModel",
"CognitoVerifyAuthChallengeRequestModel",
"CognitoVerifyAuthChallengeResponseModel",
"CognitoVerifyAuthChallengeTriggerModel",
"AlbModel",
"AlbRequestContext",
"AlbRequestContextData",
Expand Down
276 changes: 276 additions & 0 deletions aws_lambda_powertools/utilities/parser/models/cognito.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,276 @@
from __future__ import annotations
from typing import Any, Dict, List, Optional
from pydantic import BaseModel


class CognitoCallerContextModel(BaseModel):
awsSdkVersion: str
clientId: str


class CognitoChallengeResultModel(BaseModel):
challengeName: str
challengeResult: bool
challengeMetadata: Optional[str]


class CognitoPreSignupRequestModel(BaseModel):
userAttributes: Dict[str, str]
validationData: Optional[Dict[str, str]] = None
clientMetadata: Optional[Dict[str, str]] = None


class CognitoPreSignupResponseModel(BaseModel):
autoConfirmUser: Optional[bool] = None
autoVerifyPhone: Optional[bool] = None
autoVerifyEmail: Optional[bool] = None


class CognitoPreSignupTriggerModel(BaseModel):
version: str
region: str
userPoolId: str
userName: str
callerContext: CognitoCallerContextModel
triggerSource: str
request: CognitoPreSignupRequestModel
response: CognitoPreSignupResponseModel


class CognitoPostConfirmationRequestModel(BaseModel):
userAttributes: Dict[str, str]
clientMetadata: Optional[Dict[str, str]] = None


class CognitoPostConfirmationTriggerModel(BaseModel):
version: str
region: str
userPoolId: str
userName: str
callerContext: CognitoCallerContextModel
triggerSource: str
request: CognitoPostConfirmationRequestModel
response: Dict[str, Any] = {}


class CognitoPreAuthenticationRequestModel(BaseModel):
userAttributes: Dict[str, str]
validationData: Optional[Dict[str, str]] = None
userNotFound: Optional[bool] = None


class CognitoPreAuthenticationTriggerModel(BaseModel):
version: str
region: str
userPoolId: str
userName: str
callerContext: CognitoCallerContextModel
triggerSource: str
request: CognitoPreAuthenticationRequestModel
response: Dict[str, Any] = {}


class CognitoPostAuthenticationRequestModel(BaseModel):
userAttributes: Dict[str, str]
newDeviceUsed: bool
clientMetadata: Optional[Dict[str, str]] = None


class CognitoPostAuthenticationTriggerModel(BaseModel):
version: str
region: str
userPoolId: str
userName: str
callerContext: CognitoCallerContextModel
triggerSource: str
request: CognitoPostAuthenticationRequestModel
response: Dict[str, Any] = {}


class CognitoGroupConfigurationModel(BaseModel):
groupsToOverride: List[str]
iamRolesToOverride: List[str]
preferredRole: Optional[str] = None


class CognitoPreTokenGenRequestModel(BaseModel):
userAttributes: Dict[str, str]
groupConfiguration: CognitoGroupConfigurationModel
clientMetadata: Optional[Dict[str, str]] = None


class CognitoClaimsOverrideDetailsModel(BaseModel):
claimsToAddOrOverride: Optional[Dict[str, str]] = None
claimsToSuppress: Optional[List[str]] = None
groupOverrideDetails: Optional[CognitoGroupConfigurationModel] = None


class CognitoPreTokenGenResponseModel(BaseModel):
claimsOverrideDetails: Optional[CognitoClaimsOverrideDetailsModel] = None


class CognitoPreTokenGenerationTriggerModel(BaseModel):
version: str
region: str
userPoolId: str
userName: str
callerContext: CognitoCallerContextModel
triggerSource: str
request: CognitoPreTokenGenRequestModel
response: CognitoPreTokenGenResponseModel


class CognitoMigrateUserRequestModel(BaseModel):
password: str
validationData: Optional[Dict[str, str]] = None
clientMetadata: Optional[Dict[str, str]] = None


class CognitoMigrateUserResponseModel(BaseModel):
userAttributes: Dict[str, str]
finalUserStatus: Optional[str] = None
messageAction: Optional[str] = None
desiredDeliveryMediums: Optional[List[str]] = None
forceAliasCreation: Optional[bool] = None
enableSMSMFA: Optional[bool] = None


class CognitoMigrateUserTriggerModel(BaseModel):
userName: str
version: Optional[str] = None
region: Optional[str] = None
userPoolId: Optional[str] = None
callerContext: Optional[CognitoCallerContextModel] = None
triggerSource: Optional[str] = None
request: CognitoMigrateUserRequestModel
response: CognitoMigrateUserResponseModel


class CognitoCustomMessageRequestModel(BaseModel):
userAttributes: Dict[str, str]
codeParameter: Optional[str] = None
usernameParameter: Optional[str] = None
clientMetadata: Optional[Dict[str, str]] = None


class CognitoCustomMessageResponseModel(BaseModel):
smsMessage: Optional[str] = None
emailMessage: Optional[str] = None
emailSubject: Optional[str] = None


class CognitoCustomMessageTriggerModel(BaseModel):
version: str
region: str
userPoolId: str
userName: str
callerContext: CognitoCallerContextModel
triggerSource: str
request: CognitoCustomMessageRequestModel
response: CognitoCustomMessageResponseModel


class CognitoCustomEmailSenderRequestModel(BaseModel):
type: str
code: str
clientMetadata: Optional[Dict[str, str]] = None
userAttributes: Dict[str, str]


class CognitoCustomEmailSenderTriggerModel(BaseModel):
version: str
region: str
userPoolId: str
userName: str
callerContext: CognitoCallerContextModel
triggerSource: str
request: CognitoCustomEmailSenderRequestModel


class CognitoCustomSMSSenderRequestModel(BaseModel):
type: str
code: str
clientMetadata: Optional[Dict[str, str]] = None
userAttributes: Dict[str, str]


class CognitoCustomSMSSenderTriggerModel(BaseModel):
version: str
region: str
userPoolId: str
userName: str
callerContext: CognitoCallerContextModel
triggerSource: str
request: CognitoCustomSMSSenderRequestModel


class CognitoDefineAuthChallengeRequestModel(BaseModel):
userAttributes: Dict[str, str]
session: List[CognitoChallengeResultModel]
clientMetadata: Optional[Dict[str, str]] = None
userNotFound: Optional[bool] = None


class CognitoDefineAuthChallengeResponseModel(BaseModel):
challengeName: str
issueTokens: bool
failAuthentication: bool


class CognitoDefineAuthChallengeTriggerModel(BaseModel):
version: str
region: str
userPoolId: str
userName: str
callerContext: CognitoCallerContextModel
triggerSource: str
request: CognitoDefineAuthChallengeRequestModel
response: CognitoDefineAuthChallengeResponseModel


class CognitoCreateAuthChallengeRequestModel(BaseModel):
userAttributes: Dict[str, str]
challengeName: str
session: List[CognitoChallengeResultModel]
clientMetadata: Optional[Dict[str, str]] = None
userNotFound: Optional[bool] = None


class CognitoCreateAuthChallengeResponseModel(BaseModel):
publicChallengeParameters: Dict[str, str]
privateChallengeParameters: Dict[str, str]
challengeMetadata: Optional[str] = None


class CognitoCreateAuthChallengeTriggerModel(BaseModel):
version: str
region: str
userPoolId: str
userName: str
callerContext: CognitoCallerContextModel
triggerSource: str
request: CognitoCreateAuthChallengeRequestModel
response: CognitoCreateAuthChallengeResponseModel


class CognitoVerifyAuthChallengeRequestModel(BaseModel):
userAttributes: Dict[str, str]
privateChallengeParameters: Dict[str, str]
challengeAnswer: str
clientMetadata: Optional[Dict[str, str]] = None
userNotFound: Optional[bool] = None


class CognitoVerifyAuthChallengeResponseModel(BaseModel):
answerCorrect: bool


class CognitoVerifyAuthChallengeTriggerModel(BaseModel):
version: str
region: str
userPoolId: str
userName: str
callerContext: CognitoCallerContextModel
triggerSource: str
request: CognitoVerifyAuthChallengeRequestModel
response: CognitoVerifyAuthChallengeResponseModel
12 changes: 12 additions & 0 deletions docs/utilities/parser.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,18 @@ The example above uses `SqsModel`. Other built-in models can be found below.
| **CloudFormationCustomResourceUpdateModel** | Lambda Event Source payload for AWS CloudFormation `UPDATE` operation |
| **CloudFormationCustomResourceDeleteModel** | Lambda Event Source payload for AWS CloudFormation `DELETE` operation |
| **CloudwatchLogsModel** | Lambda Event Source payload for Amazon CloudWatch Logs |
| **CognitoPreSignupTriggerModel** | Lambda User Pool Pre-Sign-Up trigger event |
| **CognitoPostConfirmationTriggerModel** | Lambda User Pool Post Confirmation trigger event |
| **CognitoPreAuthenticationTriggerModel** | Lambda User Pool Pre Authentication trigger event |
| **CognitoPostAuthenticationTriggerModel** | Lambda User Pool Post Authentication trigger event |
| **CognitoPreTokenGenerationTriggerModel** | Lambda User Pool Pre Token Generation trigger event |
| **CognitoMigrateUserTriggerModel** | Lambda User Pool Migrate User trigger event |
| **CognitoCustomMessageTriggerModel** | Lambda User Pool Custom Message trigger event |
| **CognitoCustomEmailSenderTriggerModel** | Lambda User Pool Custom Email Sender trigger event |
| **CognitoCustomSMSSenderTriggerModel** | Lambda User Pool Custom SMS Sender trigger event |
| **CognitoDefineAuthChallengeTriggerModel** | Lambda User Pool Define Auth Challenge trigger event |
| **CognitoCreateAuthChallengeTriggerModel** | Lambda User Pool Create Auth Challenge trigger event |
| **CognitoVerifyAuthChallengeTriggerModel** | Lambda User Pool Verify Auth Challenge trigger event |
| **DynamoDBStreamModel** | Lambda Event Source payload for Amazon DynamoDB Streams |
| **EventBridgeModel** | Lambda Event Source payload for Amazon EventBridge |
| **IoTCoreThingEvent** | Lambda Event Source payload for IoT Core Thing created, updated, or deleted. |
Expand Down
Loading