{
 "name": "Kolaboro open data API",
 "version": "1.0",
 "license": "CC BY 4.0 (credit: Kolaboro, kolaboro.com)",
 "auth": "none",
 "rate": "cached 10 minutes at the edge",
 "note": "Projects are anonymous until verification is complete and the developer has had 10 working days to reply. Scores describe what is public, not whether it is genuine.",
 "endpoints": {
  "GET /api/open/stats": "database totals (projects, markets, countries, claims tested, verification levels)",
  "GET /api/open/summary": "small summary used by the site: totals, latest seal and shipping log",
  "GET /api/open/projects": "projects; filters: market, country, stage (off-plan|under construction|completed), min_public (0-6), min_confirmed (0-6), all_six (1), flags (1|0), limit (max 1000), offset",
  "GET /api/open/projects.csv": "same filters, CSV",
  "GET /api/open/projects/{id}": "one project, e.g. /api/open/projects/BALI-014",
  "GET /api/open/proof/{id}": "Merkle inclusion proof that a project page fingerprint is in the daily root recorded in the public log (kolaboro.com/log)",
  "GET /api/open/changes?since=YYYY-MM-DD": "every recorded change to a project field since a date, newest first",
  "GET /api/open/log": "the public append-only log: one hash-chained head per day, each timestamped in Bitcoin",
  "GET /api/open/log-input": "what goes into today's log head: dataset SHA-256 and the Merkle root of page fingerprints",
  "GET /api/open/receipt/{evidence_id}": "signed receipt for one piece of site evidence: its SHA-256, position in the case hash chain and times",
  "Signatures": "every answer is signed: x-kolaboro-signature = base64 Ed25519 over 'kolaboro-sig-v1\\n' + SHA-256 hex of the body; key id in x-kolaboro-key-id; public keys at /.well-known/kolaboro-keys.json",
  "Headers": "every answer carries x-kolaboro-dataset-sha256 (fingerprint of the dataset file it came from) and an ETag; send If-None-Match to get 304 when nothing changed",
  "GET /api/open/markets": "per-market statistics and the transparency index (0-100)",
  "GET /api/open/markets.csv": "same, CSV",
  "GET /api/open/openapi.json": "OpenAPI 3.1 description",
  "GET /feed.json, /feed.xml": "shipping log and new data, JSON Feed and RSS",
  "GET /feed.xml?market=Bali": "changes and alerts for one market or country",
  "GET /feed/alerts.xml": "overdue, stalled and unapproved projects across all markets",
  "GET /api/open/badge/{id}.svg": "live badge for a project, for portals and listings"
 }
}