main
py 40 lines 903 Bytes
Raw
1 from datetime import datetime
2 from typing import Any
3 from typing import Optional
4
5 from pydantic import BaseModel
6 from pydantic import Field
7
8
9 class TimeSeriesPoint(BaseModel):
10 """A single time-series data point."""
11
12 time: datetime
13 field: str
14 value: float
15 label: Optional[str] = None
16
17
18 class TimeSeriesData(BaseModel):
19 """Time-series data grouped by field/label."""
20
21 series: dict[str, list[dict[str, Any]]] = Field(
22 default_factory=dict,
23 description="Mapping of series name to list of {time, value} points",
24 )
25
26
27 class MetricsResponse(BaseModel):
28 """Generic response for metrics endpoints."""
29
30 success: bool
31 message: str
32 data: dict[str, Any] = Field(default_factory=dict)
33
34
35 class HostsResponse(BaseModel):
36 """Response for listing available hosts."""
37
38 success: bool
39 message: str
40 hosts: list[str] = Field(default_factory=list)