{"openapi": "3.0.3", "info": {"title": "Enviromesh public API", "version": "1.0.0", "description": "UTC environmental observations. Public data is explicitly opted in; gateway evidence and QC flags are retained."}, "servers": [{"url": "https://freemesh.ai"}], "paths": {"/public/v1/networks/": {"get": {"operationId": "list_public_networks", "summary": "List networks that have enabled publication", "parameters": [], "security": [], "responses": {"200": {"description": "Successful JSON response", "content": {"application/json": {"schema": {"type": "object"}}}}, "400": {"description": "Invalid request"}, "401": {"description": "Authentication required"}, "403": {"description": "Insufficient access"}, "429": {"description": "Rate limit exceeded"}}}}, "/public/v1/observations/": {"get": {"operationId": "get_public_observations", "summary": "Read future-only, published, passing observations; no messages, coordinates or keys", "parameters": [{"name": "hours", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 168, "default": 24}}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 100, "default": 100}}, {"name": "network", "in": "query", "required": false, "schema": {"type": "string"}}], "security": [], "responses": {"200": {"description": "Successful JSON response", "content": {"application/json": {"schema": {"type": "object", "properties": {"observations": {"type": "array", "items": {"$ref": "#/components/schemas/Observation"}}, "count": {"type": "integer"}}}}}}, "400": {"description": "Invalid request"}, "401": {"description": "Authentication required"}, "403": {"description": "Insufficient access"}, "429": {"description": "Rate limit exceeded"}}}}}, "components": {"schemas": {"Observation": {"type": "object", "required": ["id", "node_id", "observed_at", "measurements", "quality", "provenance"], "properties": {"id": {"type": "string", "format": "uuid"}, "node_id": {"type": "string", "format": "uuid"}, "node_name": {"type": "string"}, "observed_at": {"type": "string", "format": "date-time"}, "measurements": {"type": "object", "properties": {"temperature_c": {"type": "number", "description": "\u00b0C"}, "humidity_pct": {"type": "number", "description": "%"}, "pressure_hpa": {"type": "number", "description": "hPa"}, "battery_v": {"type": "number", "description": "V"}, "battery_pct": {"type": "number", "description": "%"}, "solar_w": {"type": "number", "description": "W"}, "wind_speed_ms": {"type": "number", "description": "m/s"}, "water_level_m": {"type": "number", "description": "m"}, "water_meter_m3": {"type": "number", "description": "m\u00b3"}}}, "units": {"type": "object", "additionalProperties": {"type": "string"}}, "quality": {"type": "string"}, "quality_flags": {"type": "array", "items": {"type": "string"}}, "qc_version": {"type": "string"}, "provenance": {"type": "string", "enum": ["gateway_attested", "ed25519_verified"]}, "simulation": {"type": "boolean"}}}}}}