The network
The Index as data.
Every place's Fab City Index, its label, the cells behind it and what would move it, as JSON and CSV. Free to use for maps, dashboards, analysis and reports, from any site (CORS is open). Scores are CC BY 4.0, Fab City Foundation; each source keeps its own licence, named where it is used.
Endpoints
| URL | What it holds |
|---|---|
| /api/v0/index.json | All 61 places: status, FCI or its range, DIDO, 1 − PITO, ρ, cell counts, links. |
| /api/v0/index.csv | The same, one row per place, for a spreadsheet. |
| /api/v0/places/<slug>.json | One 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.json | What the Index pipeline has measured, by place, before any scoring. |
| /api/coverage.json | The Coverage Tracker: the 61 places and who has looked at which cell. |
| registry index.json | Every 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…