feat: add new HTTP JSON contracts and schemas for map data status, published, and heard endpoints

This commit is contained in:
Ivan 2026-08-13 14:36:28 -05:00
parent da89eadb3d
commit 7094d39594
No known key found for this signature in database
3 changed files with 63 additions and 0 deletions

Binary file not shown.

View file

@ -65,6 +65,9 @@ from tests.backend.http_api_response_schemas import (
LXMF_SIEVE_FILTERS_SCHEMA,
MAINTENANCE_MESSAGES_PURGE_PREVIEW_SCHEMA,
MAINTENANCE_MESSAGES_DUPLICATES_SCHEMA,
MAP_DATA_HEARD_SCHEMA,
MAP_DATA_PUBLISHED_SCHEMA,
MAP_DATA_STATUS_SCHEMA,
MAP_DRAWINGS_SCHEMA,
MAP_MBTILES_SCHEMA,
MAP_OFFLINE_SCHEMA,
@ -403,6 +406,27 @@ HTTP_JSON_GET_CONTRACTS: tuple[HttpJsonContract, ...] = (
HttpJsonContract("GET", "/api/v1/map/drawings", MAP_DRAWINGS_SCHEMA),
HttpJsonContract("GET", "/api/v1/map/offline", MAP_OFFLINE_SCHEMA),
HttpJsonContract("GET", "/api/v1/map/mbtiles", MAP_MBTILES_SCHEMA),
HttpJsonContract(
"GET",
"/api/v1/map/data/status",
MAP_DATA_STATUS_SCHEMA,
allow_statuses=(200, 503),
alt_schemas=(ERROR_ENVELOPE_SCHEMA,),
),
HttpJsonContract(
"GET",
"/api/v1/map/data/published",
MAP_DATA_PUBLISHED_SCHEMA,
allow_statuses=(200, 503),
alt_schemas=(ERROR_ENVELOPE_SCHEMA,),
),
HttpJsonContract(
"GET",
"/api/v1/map/data/heard",
MAP_DATA_HEARD_SCHEMA,
allow_statuses=(200, 503),
alt_schemas=(ERROR_ENVELOPE_SCHEMA,),
),
HttpJsonContract("GET", "/api/v1/telemetry/peers", TELEMETRY_PEERS_SCHEMA),
HttpJsonContract("GET", "/api/v1/telemetry/tracking", TELEMETRY_TRACKING_SCHEMA),
HttpJsonContract(

View file

@ -453,6 +453,45 @@ MAP_MBTILES_SCHEMA: dict = {
"items": _OBJECT,
}
MAP_DATA_STATUS_SCHEMA: dict = {
"type": "object",
"required": [
"aspect",
"running",
"destination_hash",
"display_name",
"announce_enabled",
"announce_interval",
"max_bytes",
"published_count",
],
"properties": {
"aspect": _STRING,
"running": _BOOLEAN,
"destination_hash": {"type": ["string", "null"]},
"display_name": _STRING,
"announce_enabled": _BOOLEAN,
"announce_interval": _INTEGER,
"max_bytes": _INTEGER,
"published_count": _INTEGER,
},
"additionalProperties": True,
}
MAP_DATA_PUBLISHED_SCHEMA: dict = {
"type": "object",
"required": ["maps"],
"properties": {"maps": _ARRAY},
"additionalProperties": True,
}
MAP_DATA_HEARD_SCHEMA: dict = {
"type": "object",
"required": ["announces"],
"properties": {"announces": _ARRAY},
"additionalProperties": True,
}
TELEMETRY_PEERS_SCHEMA: dict = {
"type": "object",
"required": ["telemetry"],