46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
|
|
# ================================================================
|
||
|
|
# services/data/app/schemas/external.py
|
||
|
|
# ================================================================
|
||
|
|
"""External API response schemas"""
|
||
|
|
|
||
|
|
from pydantic import BaseModel
|
||
|
|
from datetime import datetime
|
||
|
|
from typing import Optional, List
|
||
|
|
|
||
|
|
class WeatherDataResponse(BaseModel):
|
||
|
|
date: datetime
|
||
|
|
temperature: Optional[float]
|
||
|
|
precipitation: Optional[float]
|
||
|
|
humidity: Optional[float]
|
||
|
|
wind_speed: Optional[float]
|
||
|
|
pressure: Optional[float]
|
||
|
|
description: Optional[str]
|
||
|
|
source: str
|
||
|
|
|
||
|
|
class WeatherForecastResponse(BaseModel):
|
||
|
|
forecast_date: datetime
|
||
|
|
generated_at: datetime
|
||
|
|
temperature: Optional[float]
|
||
|
|
precipitation: Optional[float]
|
||
|
|
humidity: Optional[float]
|
||
|
|
wind_speed: Optional[float]
|
||
|
|
description: Optional[str]
|
||
|
|
source: str
|
||
|
|
|
||
|
|
class TrafficDataResponse(BaseModel):
|
||
|
|
date: datetime
|
||
|
|
traffic_volume: Optional[int]
|
||
|
|
pedestrian_count: Optional[int]
|
||
|
|
congestion_level: Optional[str]
|
||
|
|
average_speed: Optional[float]
|
||
|
|
source: str
|
||
|
|
|
||
|
|
class LocationRequest(BaseModel):
|
||
|
|
latitude: float
|
||
|
|
longitude: float
|
||
|
|
address: Optional[str] = None
|
||
|
|
|
||
|
|
class DateRangeRequest(BaseModel):
|
||
|
|
start_date: datetime
|
||
|
|
end_date: datetime
|