{"openapi":"3.1.0","info":{"title":"Grid402 API","version":"0.5.0-phase5"},"paths":{"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/prices/current":{"get":{"summary":"Prices Current","operationId":"prices_current_v1_prices_current_get","parameters":[{"name":"iso","in":"query","required":false,"schema":{"type":"string","default":"ERCOT","title":"Iso"}},{"name":"location","in":"query","required":true,"schema":{"type":"string","title":"Location"}},{"name":"product","in":"query","required":false,"schema":{"type":"string","default":"ENERGY","title":"Product"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/demo/current":{"get":{"summary":"Demo Current","description":"Same shape as the paid current endpoint, delayed >= DEMO_DELAY_MINUTES\n(spec section 5: \"the trust-builder; keep it forever\"). Free, no rate-limit\nexemption beyond the same per-IP cap since it hits the same DB.\n\n`location` defaults to config.DEMO_DEFAULT_LOCATION (LZ_HOUSTON) so the bare\nURL (no query params) returns real data instead of a 422 -- the first thing an\nagent/person tries is often the unparameterized path.","operationId":"demo_current_v1_demo_current_get","parameters":[{"name":"iso","in":"query","required":false,"schema":{"type":"string","default":"ERCOT","title":"Iso"}},{"name":"location","in":"query","required":false,"schema":{"type":"string","default":"LZ_HOUSTON","title":"Location"}},{"name":"product","in":"query","required":false,"schema":{"type":"string","default":"ENERGY","title":"Product"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/prices/window":{"get":{"summary":"Prices Window","operationId":"prices_window_v1_prices_window_get","parameters":[{"name":"iso","in":"query","required":false,"schema":{"type":"string","default":"ERCOT","title":"Iso"}},{"name":"location","in":"query","required":true,"schema":{"type":"string","title":"Location"}},{"name":"market","in":"query","required":false,"schema":{"type":"string","default":"RTM","title":"Market"}},{"name":"product","in":"query","required":false,"schema":{"type":"string","default":"ENERGY","title":"Product"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":24,"title":"Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/prices/history":{"get":{"summary":"Prices History","operationId":"prices_history_v1_prices_history_get","parameters":[{"name":"iso","in":"query","required":false,"schema":{"type":"string","default":"ERCOT","title":"Iso"}},{"name":"location","in":"query","required":true,"schema":{"type":"string","title":"Location"}},{"name":"market","in":"query","required":false,"schema":{"type":"string","default":"RTM","title":"Market"}},{"name":"product","in":"query","required":false,"schema":{"type":"string","default":"ENERGY","title":"Product"}},{"name":"start","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD, UTC calendar day, inclusive","title":"Start"},"description":"YYYY-MM-DD, UTC calendar day, inclusive"},{"name":"end","in":"query","required":true,"schema":{"type":"string","description":"YYYY-MM-DD, UTC calendar day, inclusive","title":"End"},"description":"YYYY-MM-DD, UTC calendar day, inclusive"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/llms.txt":{"get":{"summary":"Llms Txt","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/status":{"get":{"summary":"Status Page","operationId":"status_page_status_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}