import datetime import urllib.parse from pydantic import BaseModel, Field, field_validator class S3Bucket(BaseModel): name: str class S3Object(BaseModel): key: str size: int @field_validator("key") @classmethod def unquote_key(cls, v: str) -> str: return urllib.parse.unquote_plus(v) class S3Data(BaseModel): bucket: S3Bucket object: S3Object class S3Record(BaseModel): event_time: datetime.datetime = Field(alias="eventTime") s3: S3Data class S3Event(BaseModel): records: list[S3Record] = Field(alias="Records", min_length=1)