{"name": "GridView Reporting API", "version": "1.0.0", "default_timezone": "Africa/Johannesburg", "ui_url": "http://gridview.reverse-proxy.co.za/", "docs_url": "http://gridview.reverse-proxy.co.za/docs", "openapi_url": "http://gridview.reverse-proxy.co.za/openapi.json", "auth": {"required_for_json_endpoints": true, "open_paths": ["/", "/api-info", "/docs", "/favicon.png", "/health", "/openapi.json"], "accepted_methods": [{"header": "X-API-Key", "format": "raw API key"}, {"header": "Authorization", "format": "Bearer <api-key>"}]}, "examples": {"meter": "meter-subtropico-fridge", "hourly_usage_url": "http://gridview.reverse-proxy.co.za/usage/hourly?meter=meter-subtropico-fridge&start=2026-03-01T00:00:00%2B02:00&end=2026-04-01T00:00:00%2B02:00"}, "endpoints": [{"path": "/favicon.png", "auth_required": false, "purpose": "GridView favicon using the same curated source asset as GridBrain"}, {"path": "/health", "auth_required": false, "purpose": "service health and basic runtime metadata"}, {"path": "/openapi.json", "auth_required": false, "purpose": "machine-readable API contract for agents and clients"}, {"path": "/api-info", "auth_required": false, "purpose": "compact discovery summary with auth and example URLs"}, {"path": "/meters", "auth_required": true, "purpose": "list known meters available in the rollup store"}, {"path": "/tariffs", "auth_required": true, "purpose": "list stored tariff rules for one meter or shared defaults"}, {"path": "/usage/hourly", "auth_required": true, "purpose": "fetch hourly usage rows and summary totals for a meter and range"}]}