# app/schemas/payment_event.py import json from pydantic import BaseModel, field_validator from typing import Optional, Dict, Any, Literal, List from datetime import datetime class VasPaymentEventOut(BaseModel): id: int provider: str event_type: Optional[str] event_id: Optional[str] parsed_amount: Optional[int] parsed_currency: Optional[str] parsed_device: Optional[str] raw_payload: Optional[Dict[str, Any]] = None matched_payment_id: Optional[int] matched_order_id: Optional[str] status: str error_message: Optional[str] created_at: datetime @field_validator("raw_payload", mode="before") def normalize_json_field(cls, v): if v is None: return None if isinstance(v, str): try: return json.loads(v) except Exception: return {} return v model_config = { "from_attributes": True }