""" Pydantic schemas for Device API (hardware devices). """ from datetime import datetime from typing import Any from pydantic import BaseModel, Field class DeviceAuthRequest(BaseModel): """Device authentication request.""" mac_address: str = Field( ..., description="MAC address of the device", pattern=r"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$", ) class DeviceAuthResponse(BaseModel): """Device authentication response.""" access_token: str token_type: str = "bearer" device_id: int simple_id: int organization_id: int | None class DeviceConfigResponse(BaseModel): """Device configuration response.""" device_id: int simple_id: int organization_id: int | None config: dict[str, Any] status: str class HeartbeatRequest(BaseModel): """Device heartbeat request.""" status: str = Field(..., description="Device status: online, offline, error") metadata: dict[str, Any] | None = Field( None, description="Additional device metadata" ) class HeartbeatResponse(BaseModel): """Device heartbeat response.""" success: bool last_seen_at: datetime class DeviceEvent(BaseModel): """Single device event.""" event_type: str = Field( ..., description="Event type: wifi_probe, ble_scan, etc." ) timestamp: datetime data: dict[str, Any] class DeviceEventsRequest(BaseModel): """Batch device events request.""" events: list[DeviceEvent] = Field( ..., description="List of events to process", max_length=1000 ) class DeviceEventsResponse(BaseModel): """Device events response.""" success: bool processed: int failed: int = 0 errors: list[str] | None = None