{"openapi": "3.0.3", "info": {"title": "Radar API Sandbox", "version": "1.0.0", "description": "Public, read-only practice endpoint mirroring the shape of GET /api/v1/tracks from the real fleet external API (see server/external_api.md in the radar repo). Synthetic data only; coordinates are randomized on server start and never correspond to a real deployment."}, "servers": [{"url": "https://radarapi.goldiearms.com"}], "paths": {"/api/v1/tracks": {"get": {"summary": "List current simulated tracks across all sandbox sites", "security": [{"ApiKeyAuth": []}], "responses": {"200": {"description": "Current track snapshot", "content": {"application/json": {"schema": {"type": "object", "properties": {"tracks": {"type": "array", "items": {"type": "object", "properties": {"id": {"type": "integer", "description": "globally unique report id"}, "track_id": {"type": "integer", "description": "id, stable within one radar"}, "radar_id": {"type": "integer"}, "radar_name": {"type": "string"}, "site_id": {"type": "integer"}, "site_name": {"type": "string"}, "type": {"type": "string", "enum": ["drone", "bird", "vehicle", "human", "unidentified"]}, "distance_m": {"type": "number"}, "azimuth_deg": {"type": "number", "description": "0-360, clockwise from north"}, "elevation_deg": {"type": "number"}, "height_m": {"type": "number"}, "speed_mps": {"type": "number"}, "vx_mps": {"type": "number"}, "vy_mps": {"type": "number"}, "vz_mps": {"type": "number"}, "snr": {"type": "number"}, "rcs": {"type": "number", "description": "synthetic radar cross-section, m^2"}, "threat_level": {"type": "integer"}, "latitude": {"type": "number"}, "longitude": {"type": "number"}, "age_seconds": {"type": "number"}, "observed_at": {"type": "string", "format": "date-time"}, "ingested_at": {"type": "string", "format": "date-time"}}, "required": ["track_id", "radar_id", "type", "distance_m", "azimuth_deg", "latitude", "longitude", "observed_at"]}}, "updated_at": {"type": "string", "format": "date-time", "nullable": true}}}}}}, "401": {"description": "Missing or unrecognized X-API-Key"}, "429": {"description": "Rate limit exceeded (120 requests/minute/IP)"}}}}, "/healthz": {"get": {"summary": "Liveness check", "responses": {"200": {"description": "Service is up"}}}}}, "components": {"securitySchemes": {"ApiKeyAuth": {"type": "apiKey", "in": "header", "name": "X-API-Key", "description": "Issued per partner. Contact us for a key; an unrecognized value is rejected with 401."}}}}