{"openapi":"3.0.3","info":{"title":"data4x Data API","version":"1.0.0","description":"Pull your entitled dashboard data programmatically.\n\nAuthenticate with an API key (Authorization: Bearer d4x_live_...). Data calls deduct credits — a full page read ('api.page_read') costs more than a single-widget read ('api.widget_read') — and every call is recorded in your audit log. You can only access dashboards your subscription entitles you to."},"servers":[{"url":"http://data4x-api-5jiit27kka-ey.a.run.app/api/v1"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"d4x_live_*","description":"Your data4x API key."}}},"paths":{"/dashboards":{"get":{"summary":"List accessible dashboards","description":"Returns the dashboards (with pages and widget metadata) your key can read. Free.","responses":{"200":{"description":"Dashboards with pages and widgets"},"401":{"description":"Missing/invalid key"},"403":{"description":"api.access not entitled"}}}},"/dashboards/{slug}":{"get":{"summary":"Get a dashboard definition","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Dashboard with pages + widgets"},"404":{"description":"Not found"}}}},"/dashboards/{slug}/pages/{pageId}":{"get":{"summary":"Get all data for a page","description":"Returns every widget's rows for a page. Filters are passed as query parameters. Deducts 'api.page_read' credits once per call.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"pageId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Page data"},"402":{"description":"Insufficient credits"},"403":{"description":"Not entitled"},"404":{"description":"Not found"}}}},"/dashboards/{slug}/pages/{pageId}/widgets/{widgetId}":{"get":{"summary":"Get one widget's data","description":"Returns a single widget's rows. Filters are query parameters. Deducts 'api.widget_read' credits once per call (cheaper than a full page read).","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"pageId","in":"path","required":true,"schema":{"type":"string"}},{"name":"widgetId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Widget rows"},"402":{"description":"Insufficient credits"},"404":{"description":"Not found"}}}}}}