Endpoints

URLWhat it holds
/api/v0/index.jsonAll 61 places: status, FCI or its range, DIDO, 1 − PITO, ρ, cell counts, links.
/api/v0/index.csvThe same, one row per place, for a spreadsheet.
/api/v0/places/<slug>.jsonOne place: the score, the twenty cells with their weights and sources, measured indicators with every year, the planetary-boundary reading, and next actions. For example barcelona.
/api/v0/measured.jsonWhat the Index pipeline has measured, by place, before any scoring.
/api/coverage.jsonThe Coverage Tracker: the 61 places and who has looked at which cell.
registry index.jsonEvery open source, its licence, the cells it feeds and the places it names.

How fresh. The /api/v0/ files are written when the site is published, and each says which registry it read (registry_generated). The site's pages recompute on the live registry, so a newly merged source shows on a page before it reaches these files.

curl -s https://index.fab.city/api/v0/index.json | jq '.places[] | {slug, status, fci, fci_range}'

fetch("https://index.fab.city/api/v0/places/barcelona.json").then(r => r.json()).then(d => d.score.fci)

What a score says about itself

  • Complete: every cell has open data and every cell with a PITO weight is measured. fci is a number.
  • Partial: at least one cell is measured. fci is a number that rests on pito_weight_measured; the missing cells weigh it down through DIDO.
  • Simulated: no cell is measured, so PITO is unknown. fci is null and fci_range is [0, DIDO].

ρ is not measured anywhere yet: it is 1, and rho_measured says false. The method: method, worked example.

Every place, now

Reading the registry and the Index pipeline…