{"info":{"title":"Joltio Data API","version":"0.1.0"},"openapi":"3.1.1","paths":{"/v1/data/coverage":{"get":{"operationId":"data.coverage.list","summary":"Read Data source coverage","description":"Read Data source coverage.","tags":["data"],"parameters":[{"name":"table","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true,"example":"omie.prices"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"table_name":{"type":"string"},"min_datetime":{"anyOf":[{"type":"string"},{"type":"null"}]},"max_datetime":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"}},"required":["table_name"],"additionalProperties":{}}}}}}},"security":[]}},"/v1/data/coverage/units":{"get":{"operationId":"data.coverage.units","summary":"Read I90 coverage for units and dates","description":"Read I90 coverage for units and dates.","tags":["data"],"parameters":[{"name":"units","in":"query","required":true,"schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true,"example":"ABC"},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"},"allowEmptyValue":true,"allowReserved":true,"example":"2026-01-01"},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"},"allowEmptyValue":true,"allowReserved":true,"example":"2026-01-31"},{"name":"locale","in":"query","required":false,"schema":{"enum":["es","en"],"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/tier-info":{"get":{"operationId":"data.status","summary":"Read Data plan limits and table windows","description":"Read Data plan limits and table windows.","tags":["data"],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/indicators":{"get":{"operationId":"data.indicators.list","summary":"List public ESIOS indicator metadata","description":"List public ESIOS indicator metadata.","tags":["data"],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"indicators":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["indicators"]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/indicators/search":{"get":{"operationId":"data.indicators.search","summary":"Fuzzy search ESIOS indicators by name, magnitude and geography","description":"Fuzzy search ESIOS indicators by name, magnitude and geography.","tags":["data"],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200},"allowEmptyValue":true,"allowReserved":true,"example":"precio mercado diario"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200},"allowEmptyValue":true,"allowReserved":true,"example":10},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991},"allowEmptyValue":true,"allowReserved":true},{"name":"view","in":"query","required":false,"schema":{"enum":["full","summary"],"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/dimensions":{"get":{"operationId":"data.dimensions","summary":"Look up I90 units, companies and technologies","description":"Look up I90 units, companies and technologies.","tags":["data"],"parameters":[{"name":"dim","in":"query","schema":{"enum":["unit","company","technology"],"type":"string"},"allowEmptyValue":true,"allowReserved":true,"example":"unit"},{"name":"detail","in":"query","schema":{"enum":["summary","full"],"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"q","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"allowEmptyValue":true,"allowReserved":true,"example":"ARCOS"},{"name":"fields","in":"query","schema":{"type":"string","maxLength":500},"allowEmptyValue":true,"allowReserved":true},{"name":"kind","in":"query","schema":{"enum":["uf","up"],"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/indicators/{indicator_id}":{"get":{"operationId":"data.indicators.get","summary":"Read one ESIOS indicator","description":"Read one ESIOS indicator.","tags":["data"],"parameters":[{"name":"indicator_id","in":"path","required":true,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"example":600}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/revisions/indicators":{"get":{"operationId":"data.revisions.indicators.list","summary":"List active indicators for revision filters","description":"List active indicators for revision filters.","tags":["data"],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"indicators":{"type":"array","items":{"type":"object","properties":{"indicator_id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"}},"required":["indicator_id","name"]}}},"required":["indicators"]}}}}},"security":[]}},"/v1/data/revisions":{"get":{"operationId":"data.revisions.list","summary":"List public indicator revision summaries","description":"List public indicator revision summaries.","tags":["data"],"parameters":[{"name":"indicator_id","in":"query","schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allowEmptyValue":true,"allowReserved":true,"example":600},{"name":"date_from","in":"query","schema":{"type":"string","format":"date"},"allowEmptyValue":true,"allowReserved":true},{"name":"date_to","in":"query","schema":{"type":"string","format":"date"},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"allowEmptyValue":true,"allowReserved":true},{"name":"include_publications","in":"query","schema":{"anyOf":[{"type":"boolean"},{"enum":["0","1","true","false"],"type":"string"}],"default":false},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"revisions":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"has_more":{"type":"boolean"},"offset":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["revisions","has_more","offset"]}}}}},"security":[]}},"/v1/data/revisions/{revision_id}":{"get":{"operationId":"data.revisions.summary.get","summary":"Read a public indicator revision summary","description":"Read a public indicator revision summary.","tags":["data"],"parameters":[{"name":"revision_id","in":"path","required":true,"schema":{"type":"string"},"example":"00000000-0000-4000-8000-000000000001"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}}}},"security":[]}},"/v1/data/revisions/{revision_id}/values":{"get":{"operationId":"data.revisions.values.get","summary":"Export indicator revision values","description":"Export indicator revision values.","tags":["data"],"parameters":[{"name":"revision_id","in":"path","required":true,"schema":{"type":"string"},"example":"00000000-0000-4000-8000-000000000001"},{"name":"format","in":"query","schema":{"enum":["json","csv","parquet"],"type":"string","default":"json"},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":10000,"default":500},"allowEmptyValue":true,"allowReserved":true},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/reingests":{"get":{"operationId":"data.reingests.list","summary":"List workspace Data reingest requests and quota","description":"List workspace Data reingest requests and quota.","tags":["data"],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"reingests":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"quota":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]}},"required":["reingests","quota"]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]},"post":{"operationId":"data.reingests.create","summary":"Request a bounded Data reingest","description":"Request a bounded Data reingest.","tags":["data"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"indicators":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"date_from":{"type":"string","format":"date"},"date_to":{"type":"string","format":"date"},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]}},"required":["indicators","date_from","date_to"]},"example":{"indicators":[600],"date_from":"2026-01-01","date_to":"2026-01-02"}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/reingests/{checkpoint_id}":{"get":{"operationId":"data.reingests.status.get","summary":"Read a reingest request status","description":"Read a reingest request status.","tags":["data"],"parameters":[{"name":"checkpoint_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"example":"00000000-0000-4000-8000-000000000001"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/state/{kind}":{"get":{"operationId":"data.ingestion.state","summary":"Read workspace ingestion state","description":"Read workspace ingestion state.","tags":["data"],"parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["health","freshness","checkpoints"],"type":"string"},"example":"health"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/corrections":{"post":{"operationId":"data.corrections.submit","summary":"Submit a Data source correction for review","description":"Submit a Data source correction for review.","tags":["data"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entity_type":{"enum":["unit","company","group","installation"],"type":"string"},"entity_id":{"type":"string","minLength":1,"maxLength":64},"field":{"type":"string","minLength":1,"maxLength":64},"proposed_value":{"type":"string","minLength":1,"maxLength":500},"current_value":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"rationale":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"evidence_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"reporter_email":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["entity_type","entity_id","field","proposed_value"]},"example":{"entity_type":"unit","entity_id":"ABC","field":"name","proposed_value":"Corrected name"}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}},"security":[]}},"/v1/data/feedback":{"post":{"operationId":"data.feedback.submit","summary":"Submit feedback about Data tools","description":"Submit feedback about Data tools.","tags":["data"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"type":"string"},"message":{"type":"string"},"context":{"anyOf":[{"type":"string"},{"type":"null"}]},"intent":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["category","message"]},"example":{"category":"suggestion","message":"Please add this source."}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"enum":["received","deferred"],"type":"string"},"category":{"type":"string"},"recorded_for":{"type":"string"},"detail":{"type":"string"}},"required":["status","category"]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/alerts/rules":{"post":{"operationId":"data.alerts.create","summary":"Create a Data alert rule","description":"Create a Data alert rule.","tags":["data"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"schedule":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"kind":{"enum":["sql","freshness"],"type":"string","default":"sql"},"condition_sql":{"anyOf":[{"type":"string"},{"type":"null"}]},"indicator_id":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"stale_after_hours":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}]},"cooldown_minutes":{"type":"integer","minimum":0,"maximum":10080,"default":60},"delivery":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]}},"required":["schedule"]},"example":{"schedule":{},"condition_sql":"SELECT count() FROM omie.prices"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]},"get":{"operationId":"data.alerts.list","summary":"List Data alert rules","description":"List Data alert rules.","tags":["data"],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":-9007199254740991,"maximum":500},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/alerts/rules/{rule_id}":{"get":{"operationId":"data.alerts.get","summary":"Read a Data alert rule","description":"Read a Data alert rule.","tags":["data"],"parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"example":"00000000-0000-4000-8000-000000000001"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]},"delete":{"operationId":"data.alerts.delete","summary":"Delete a Data alert rule","description":"Delete a Data alert rule.","tags":["data"],"parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"example":"00000000-0000-4000-8000-000000000001"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/alerts/rules/{rule_id}/events":{"get":{"operationId":"data.alerts.rule.events","summary":"Read events for a Data alert rule","description":"Read events for a Data alert rule.","tags":["data"],"parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"example":"00000000-0000-4000-8000-000000000001"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":-9007199254740991,"maximum":200},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/alerts/events":{"get":{"operationId":"data.alerts.pending","summary":"Read pending Data alert events","description":"Read pending Data alert events.","tags":["data"],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":-9007199254740991,"maximum":500},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/alerts/events/ack":{"post":{"operationId":"data.alerts.ack","summary":"Acknowledge Data alert events","description":"Acknowledge Data alert events.","tags":["data"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"event_ids":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"string"}}},"required":["event_ids"]},"example":{"event_ids":["event-id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/metadata":{"get":{"operationId":"data.metadata.get","summary":"Read I90 metadata and programs","description":"Read I90 metadata and programs.","tags":["data"],"parameters":[{"name":"lang","in":"query","schema":{"enum":["en","es"],"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"detail","in":"query","schema":{"enum":["summary","full"],"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/search":{"post":{"operationId":"data.search","summary":"Search the Data catalog","description":"Search the Data catalog.","tags":["data"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"q":{"type":"string"},"facets":{"type":"string"},"values_of":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]},"limit":{"type":"integer","minimum":1,"maximum":1000},"offset":{"type":"integer","minimum":0,"maximum":9007199254740991},"intent":{"type":"string"}}},"example":{"q":"prices"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/describe":{"get":{"operationId":"data.describe","summary":"Describe the Data catalog","description":"Describe the Data catalog.","tags":["data"],"parameters":[{"name":"domain","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"format","in":"query","schema":{"enum":["json","markdown","toon"],"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"intent","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"lang","in":"query","schema":{"enum":["en","es"],"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/query":{"post":{"operationId":"data.query","summary":"Run a governed Data query","description":"Run one read-only SELECT or GraphQL query. Raw rows and aggregate rows have separate plan limits; a response over the limit has truncated: true.","tags":["data"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sql":{"type":"string"},"graphql":{"type":"string"},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"limit":{"type":"integer","minimum":1,"maximum":100000},"view":{"enum":["summary","full"],"type":"string"},"format":{"enum":["json","markdown","toon","csv"],"type":"string"},"intent":{"type":"string"}}},"example":{"sql":"SELECT max(datetime) AS latest_price_at FROM omie.prices WHERE datetime >= today() - 7","format":"json"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name","type"]}},"rows":{"type":"array","items":{"type":"array","items":{"anyOf":[{},{"type":"null"}]}}},"row_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"query_type":{"enum":["raw","aggregated"],"type":"string"},"max_rows_applied":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"truncated":{"type":"boolean"},"freshness":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"coverage":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"sources":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"hint":{"type":"string"}},"required":["columns","rows","row_count","query_type","max_rows_applied","truncated"],"additionalProperties":{}}}}},"400":{"description":"query_error: The query could not be executed.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"object","properties":{"error":{"type":"string","const":"query_error"},"error_detail":{"type":"string"},"hint":{"type":"string"}}}}}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}},"403":{"description":"readonly: Write operations are not allowed. Only SELECT queries are permitted.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"408":{"description":"timeout: Query timed out ({timeoutSeconds}s). Try adding more filters or reducing the date range.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}},"422":{"description":"query_too_expensive: This query reads too many rows. Filter by date or program, aggregate a smaller range, or use /coverage for the latest data.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"object","properties":{"error":{"type":"string","const":"query_too_expensive"},"message":{"type":"string"},"fix_text":{"type":"string"}}}}}}}},"429":{"description":"quota_exhausted: The query allowance for this traffic class is exhausted. Retry after the quota interval resets; use /coverage for table bounds and filter future queries by date.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"object","properties":{"error":{"type":"string","const":"quota_exhausted"},"message":{"type":"string"},"fix_text":{"type":"string"}}}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/example-query":{"post":{"operationId":"data.example.query","summary":"Run the fixed Data onboarding query","description":"Run the fixed Data onboarding query.","tags":["data"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"sql":{"type":"string"},"result":{}},"required":["sql"]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/graphql":{"post":{"operationId":"data.graphql","summary":"Query the Data GraphQL schema","description":"Query the Data GraphQL schema.","tags":["data"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"operationName":{"type":"string"}},"required":["query"]},"example":{"query":"{ indicators { id } }"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/recipes":{"get":{"operationId":"data.recipes.list","summary":"List governed Data recipes","description":"List governed Data recipes.","tags":["data"],"parameters":[{"name":"tags","in":"query","schema":{"type":"array","items":{"type":"string"}},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true},{"name":"backend","in":"query","schema":{"enum":["clickhouse","postgres"],"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"is_active","in":"query","schema":{"type":"boolean"},"allowEmptyValue":true,"allowReserved":true},{"name":"view","in":"query","schema":{"enum":["summary","full"],"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"format","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/recipes/{recipe_id}":{"get":{"operationId":"data.recipes.get","summary":"Describe a governed Data recipe","description":"Describe a governed Data recipe.","tags":["data"],"parameters":[{"name":"recipe_id","in":"path","required":true,"schema":{"type":"string"},"example":"recipe-id"},{"name":"format","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/recipes/{recipe_id}/run":{"post":{"operationId":"data.recipes.run","summary":"Run a governed Data recipe","description":"Run a governed Data recipe.","tags":["data"],"parameters":[{"name":"recipe_id","in":"path","required":true,"schema":{"type":"string"},"example":"recipe-id"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"lang":{"enum":["en","es"],"type":"string"},"format":{"type":"string"}}},"example":{"recipe_id":"recipe-id","params":{}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/guide":{"get":{"operationId":"data.guide","summary":"Read the Data guide","description":"Read the Data guide.","tags":["data"],"parameters":[{"name":"topic","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"format","in":"query","schema":{"enum":["markdown","json"],"type":"string","default":"json"},"allowEmptyValue":true,"allowReserved":true},{"name":"lang","in":"query","schema":{"enum":["en","es"],"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/knowledge":{"get":{"operationId":"data.knowledge","summary":"Read the Data knowledge catalog","description":"Read the Data knowledge catalog.","tags":["data"],"parameters":[{"name":"kind","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"scope","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"scope_ref","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"program","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"table","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"severity","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"mitigation_status","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"lang","in":"query","schema":{"enum":["en","es"],"type":"string"},"allowEmptyValue":true,"allowReserved":true},{"name":"include_content","in":"query","schema":{"anyOf":[{"type":"boolean"},{"enum":["0","1","true","false"],"type":"string"}]},"allowEmptyValue":true,"allowReserved":true},{"name":"format","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/plan":{"get":{"operationId":"data.plan.get","summary":"Read the current Data plan","description":"Read the current Data plan.","tags":["data"],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"tier":{"type":"string"},"credits_per_month":{"anyOf":[{"type":"number"},{"type":"null"}]},"history_months":{"anyOf":[{"type":"number"},{"type":"null"}]},"query_limits":{"type":"object","properties":{"rows_per_query_raw":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rows_per_query_agg":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"execution_timeout_seconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["rows_per_query_raw","rows_per_query_agg","execution_timeout_seconds"]},"expired":{"type":"boolean"},"message":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tier","credits_per_month","history_months","query_limits","expired","message"],"additionalProperties":{}}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/usage":{"get":{"operationId":"data.usage.get","summary":"Read Data usage","description":"Read Data usage.","tags":["data"],"parameters":[{"name":"month","in":"query","schema":{"type":"string"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"month":{"type":"string"},"usage":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"required":["month","usage"],"additionalProperties":{}}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/keys":{"get":{"operationId":"data.keys.list","summary":"List Data API keys","description":"List Data API keys.","tags":["data"],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]},"post":{"operationId":"data.keys.create","summary":"Create a Data API key","description":"Create a Data API key.","tags":["data"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200}},"required":["name"]},"example":{"name":"Training pipeline"}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/members/{user_id}/move-seat":{"post":{"operationId":"data.seats.move","summary":"Move a Data seat between workspaces","description":"Move a Data seat between workspaces.","tags":["data"],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"example":"00000000-0000-4000-8000-000000000001"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"previous_ln_id":{"type":"string","format":"uuid"},"confirmed":{"type":"boolean"}},"required":["previous_ln_id","confirmed"]},"example":{"user_id":"00000000-0000-4000-8000-000000000001","previous_ln_id":"00000000-0000-4000-8000-000000000002","confirmed":true}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"moved":{"type":"boolean"}},"required":["moved"]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/keys/{key_id}":{"delete":{"operationId":"data.keys.revoke","summary":"Revoke a Data API key","description":"Revoke a Data API key.","tags":["data"],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"example":"00000000-0000-4000-8000-000000000001"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"revoked":{"type":"boolean"}},"required":["revoked"]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/catalog/tables/{table}":{"get":{"operationId":"data.catalog.table","summary":"Read a public table notebook","description":"Read a public table notebook.","tags":["data"],"parameters":[{"name":"table","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z_][a-z0-9_]*\\.[a-z_][a-z0-9_]*$"},"example":"omie.prices"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/catalog/tables/{table}/entities":{"get":{"operationId":"data.catalog.entities","summary":"List public table entities","description":"List public table entities.","tags":["data"],"parameters":[{"name":"table","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z_][a-z0-9_]*\\.[a-z_][a-z0-9_]*$"},"example":"omie.prices"},{"name":"q","in":"query","schema":{"type":"string","maxLength":200,"default":""},"allowEmptyValue":true,"allowReserved":true},{"name":"state","in":"query","schema":{"enum":["","activa","alta","baja","sinficha"],"type":"string","default":""},"allowEmptyValue":true,"allowReserved":true},{"name":"tech","in":"query","schema":{"type":"string","maxLength":200,"default":""},"allowEmptyValue":true,"allowReserved":true},{"name":"owner","in":"query","schema":{"type":"string","maxLength":200,"default":""},"allowEmptyValue":true,"allowReserved":true},{"name":"month","in":"query","schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"allowEmptyValue":true,"allowReserved":true},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"default":1},"allowEmptyValue":true,"allowReserved":true},{"name":"split","in":"query","schema":{"type":"string","maxLength":40},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/catalog/tables/{table}/entities/{code}":{"get":{"operationId":"data.catalog.entity","summary":"Read a public table entity","description":"Read a public table entity.","tags":["data"],"parameters":[{"name":"table","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z_][a-z0-9_]*\\.[a-z_][a-z0-9_]*$"},"example":"omie.prices"},{"name":"code","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,32}$"},"example":"ABC"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/catalog/tables/{table}/loads":{"get":{"operationId":"data.catalog.loads","summary":"Read public table loads","description":"Read public table loads.","tags":["data"],"parameters":[{"name":"table","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z_][a-z0-9_]*\\.[a-z_][a-z0-9_]*$"},"example":"omie.prices"},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"maximum":9007199254740991,"default":1},"allowEmptyValue":true,"allowReserved":true},{"name":"status","in":"query","schema":{"type":"string","maxLength":40,"default":""},"allowEmptyValue":true,"allowReserved":true},{"name":"q","in":"query","schema":{"type":"string","maxLength":200,"default":""},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/catalog/tables/{table}/quality":{"get":{"operationId":"data.catalog.quality","summary":"Read a public table quality map","description":"Read a public table quality map.","tags":["data"],"parameters":[{"name":"table","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z_][a-z0-9_]*\\.[a-z_][a-z0-9_]*$"},"example":"omie.prices"},{"name":"series","in":"query","schema":{"type":"string","pattern":"^[0-9A-Za-z_-]{1,20}(,[0-9A-Za-z_-]{1,20}){0,9}$"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}},"/v1/data/catalog/tables/{table}/quality/month":{"get":{"operationId":"data.catalog.quality.month","summary":"Read a public table quality month","description":"Read a public table quality month.","tags":["data"],"parameters":[{"name":"table","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z_][a-z0-9_]*\\.[a-z_][a-z0-9_]*$"},"example":"omie.prices"},{"name":"split","in":"query","required":false,"schema":{"type":"string","maxLength":40,"default":""},"allowEmptyValue":true,"allowReserved":true},{"name":"month","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"allowEmptyValue":true,"allowReserved":true,"example":"2026-01"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}},"401":{"description":"unauthorized: An API key or Bearer token is required.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"anyOf":[{"type":"string"},{"type":"object"}]}}}}}}},"security":[{"apiKey":[]},{"bearer":[]}]}}},"servers":[{"url":"https://api.joltio.app"}],"tags":[{"name":"data","description":"Joltio Data operations"}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key"},"bearer":{"type":"http","scheme":"bearer"}}}}