{"openapi":"3.0.3","info":{"title":"DataSupply Core API","version":"0.6.3","description":"First-party read-only feeds and tenant-scoped delivery drafts. No payments or paid datasets."},"servers":[{"url":"https://core.datasupply.shop"}],"components":{"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","description":"Provisioned per-tenant DataSupply API token."}}},"paths":{"/v1/billing/plans":{"get":{"summary":"Draft plan proposals, checkout disabled","responses":{"200":{"description":"Unpublished draft pricing"}}}},"/v1/billing/status":{"get":{"summary":"Read own billing lifecycle, authorization required","responses":{"200":{"description":"Tenant subscriptions"}}}},"/v1/operator/tenants":{"post":{"summary":"Provision suspended tenant and invited owner. Private operator authorization required","responses":{"201":{"description":"Tenant created"}}}},"/v1/operator/activate-trial":{"post":{"summary":"Operator-verified seven-day pilot; manually approved first-party history only","responses":{"201":{"description":"Pilot activated"}}}},"/v1/operator/keys":{"post":{"summary":"Issue scoped API key to verified active tenant, operator only","responses":{"201":{"description":"Key issued once"}}}},"/v1/operator/revoke-key":{"post":{"summary":"Revoke API key, operator only","responses":{"200":{"description":"Key revoked"}}}},"/v1/webhooks/stripe":{"post":{"summary":"Signature-verified Stripe inbox. Disabled until merchant configured. Does not grant entitlements.","responses":{"503":{"description":"Disabled"}}}},"/v1/feeds":{"get":{"summary":"Versioned first-party datasets and source manifests","responses":{"200":{"description":"Feed index"}}}},"/v1/feeds/{slug}":{"get":{"summary":"Source manifest, schema and licensing status","responses":{"200":{"description":"Feed metadata"}}}},"/v1/feeds/{slug}/versions":{"get":{"summary":"List immutable dataset versions","responses":{"200":{"description":"Versions"}}}},"/v1/feeds/{slug}/versions/{version}":{"get":{"summary":"Retrieve versioned JSON or CSV; restricted feeds require entitlement","responses":{"200":{"description":"Snapshot"},"304":{"description":"Unchanged"}}}},"/v1/feeds/{slug}/quality":{"get":{"summary":"Provenance, freshness and latest refresh attempt","responses":{"200":{"description":"Quality"}}}},"/v1/feeds/{slug}/changes":{"get":{"summary":"Compare two feed versions","responses":{"200":{"description":"Diff"}}}},"/v1/exports":{"get":{"summary":"List tenant-scoped versioned delivery jobs; needs delivery:read","responses":{"200":{"description":"Jobs"}}},"post":{"summary":"Create idempotent dataset export job; needs delivery:write","responses":{"202":{"description":"Queued"}}}},"/v1/exports/{id}":{"get":{"summary":"Get export receipt and status","responses":{"200":{"description":"Job"}}}},"/v1/exports/{id}/attempts":{"get":{"summary":"Read tenant-owned export processing history","responses":{"200":{"description":"Attempts"}}}},"/v1/exports/{id}/receipts":{"get":{"summary":"Read tenant-owned export serve receipts","responses":{"200":{"description":"Receipts"}}}},"/v1/exports/{id}/download":{"get":{"summary":"Deliver authorized versioned JSON or CSV with receipt","responses":{"200":{"description":"File"},"401":{"description":"Unauthorized"},"429":{"description":"Quota exhausted"}}}},"/v1/export-schedules":{"get":{"summary":"List hourly/daily export schedules","responses":{"200":{"description":"Schedules"}}},"post":{"summary":"Create recurring export schedule for an authorized live feed","responses":{"201":{"description":"Schedule created"}}}},"/v1/export-schedules/{id}":{"delete":{"summary":"Revoke an export schedule","responses":{"200":{"description":"Revoked"}}}},"/v1/health":{"get":{"summary":"Service health","responses":{"200":{"description":"OK"}}}},"/v1/catalog":{"get":{"summary":"Dataset catalog","responses":{"200":{"description":"Product list"}}}},"/v1/products/{slug}":{"get":{"summary":"Product details","responses":{"200":{"description":"Product metadata"}}}},"/v1/products/{slug}/preview":{"get":{"summary":"Public preview or restricted schema","responses":{"200":{"description":"Sample"}}}},"/v1/data/{slug}":{"get":{"summary":"Read JSON or CSV; restricted feeds enforce entitlements and quotas","parameters":[{"in":"path","name":"slug","required":true,"schema":{"type":"string"}},{"in":"query","name":"format","schema":{"type":"string","enum":["json","csv"]}},{"in":"query","name":"limit","schema":{"type":"integer","maximum":100}}],"responses":{"200":{"description":"Data"},"401":{"description":"Authentication required"},"403":{"description":"Entitlement required"},"429":{"description":"Quota exceeded"}}}},"/v1/me":{"get":{"summary":"Authenticated tenant","security":[{"ApiKey":[]}],"responses":{"200":{"description":"Tenant"}}}},"/v1/usage":{"get":{"summary":"Daily usage","security":[{"ApiKey":[]}],"responses":{"200":{"description":"Usage"}}}},"/v1/delivery-contracts":{"get":{"summary":"List draft integrations","security":[{"ApiKey":[]}],"responses":{"200":{"description":"Drafts"}}},"post":{"summary":"Create draft integration; no execution or secrets","security":[{"ApiKey":[]}],"responses":{"201":{"description":"Draft created"}}}},"/v1/workbench/preview":{"post":{"summary":"Stateless normalization, mapping, deduplication and JSON/CSV export, with input limits","responses":{"200":{"description":"Normalized records"},"422":{"description":"Invalid specification"}}}},"/mcp":{"post":{"summary":"JSON-RPC MCP endpoint","responses":{"200":{"description":"MCP response"}}}}}}