Coverage for src/data_api/api/schemas/ping.py: 100%
18 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-11-13 19:28 +0000
« prev ^ index » next coverage.py v7.16.2, created at 2026-11-13 19:28 +0000
1"""Read-only dataset readiness diagnostics."""
3from datetime import datetime
4from typing import Literal
6from pydantic import BaseModel
8from data_api.data.nthudata import Freshness
11class DatasetError(BaseModel):
12 category: str
13 at: datetime
14 status_code: int | None = None
17class DatasetHealth(BaseModel):
18 usable: bool = False
19 freshness: Freshness = Freshness.UNAVAILABLE
20 check_due: bool = True
21 version: str | None = None
22 loaded_at: datetime | None = None
23 published_at: str | None = None
24 last_checked_at: datetime | None = None
25 last_refresh_attempt_at: datetime | None = None
26 last_refresh_success_at: datetime | None = None
27 last_error: DatasetError | None = None
30class PingResponse(BaseModel):
31 status: Literal["ok", "degraded", "unavailable"]
32 ready: bool
33 checked_at: datetime
34 datasets: dict[str, DatasetHealth]