from __future__ import annotations from uuid import UUID from pydantic import Field from .common import ApiEnvelope, JsonObject, JsonList, RouteContract, SchemaModel HTTP_METHOD = 'POST' ROUTE_PATH = '/api/soile/moisture-heatmap/' class SoileMoistureHeatmapRequest(SchemaModel): farm_uuid: UUID class SoileMoistureHeatmapResponseData(SchemaModel): farm_uuid: str location: JsonObject = Field(default_factory=dict) current_sensor: JsonObject = Field(default_factory=dict) soil_profile: JsonList = Field(default_factory=list) timestamp: str | None = None grid_resolution: JsonObject = Field(default_factory=dict) grid_cells: JsonList = Field(default_factory=list) sensor_points: JsonList = Field(default_factory=list) quality_legend: JsonObject = Field(default_factory=dict) depth_layers: JsonList = Field(default_factory=list) model_metadata: JsonObject = Field(default_factory=dict) summary: JsonObject = Field(default_factory=dict) class SoileMoistureHeatmapResponse(ApiEnvelope[SoileMoistureHeatmapResponseData]): pass CONTRACT = RouteContract( method=HTTP_METHOD, path=ROUTE_PATH, request_model=SoileMoistureHeatmapRequest.__name__, response_model=SoileMoistureHeatmapResponse.__name__, )