from pydantic import BaseModel from typing import List, Optional class MakeItem(BaseModel): """Make item response model""" id: int name: str class ModelItem(BaseModel): """Model item response model""" id: int name: str class TrimItem(BaseModel): """Trim item response model""" id: int name: str class EngineItem(BaseModel): """Engine item response model""" id: int name: str class TransmissionItem(BaseModel): """Transmission item response model""" name: str class MakesResponse(BaseModel): """Makes response model""" makes: List[MakeItem] class YearsResponse(BaseModel): """Years response model""" years: List[int] class ModelsResponse(BaseModel): """Models response model""" models: List[ModelItem] class TrimsResponse(BaseModel): """Trims response model""" trims: List[TrimItem] class EnginesResponse(BaseModel): """Engines response model""" engines: List[EngineItem] class TransmissionsResponse(BaseModel): """Transmissions response model""" transmissions: List[TransmissionItem] class VINDecodeResult(BaseModel): """VIN decode result model""" make: Optional[str] = None model: Optional[str] = None year: Optional[int] = None trim_name: Optional[str] = None engine_description: Optional[str] = None transmission_description: Optional[str] = None horsepower: Optional[float] = None torque: Optional[float] = None top_speed: Optional[float] = None fuel: Optional[str] = None confidence_score: Optional[float] = None vehicle_type: Optional[str] = None class VINDecodeRequest(BaseModel): """VIN decode request model""" vin: str class VINDecodeResponse(BaseModel): """VIN decode response model""" vin: str result: Optional[VINDecodeResult] success: bool error: Optional[str] = None class HealthResponse(BaseModel): """Health check response model""" status: str database: str cache: str version: str etl_last_run: Optional[str] = None