The Sustainability Index, as JSON
No auth, CC BY 4.0, edge-cached. This endpoint serves the latest published, frozen, signed ANNUAL report — never a live or on-demand aggregate. Signals come from real operator-reported outcome sessions under per-tenant research consent, not a score-request proxy. When nothing has cleared the coverage floor yet, the response is the same document shape with publication: null — the honest empty-state, not a fabricated number.
When to use
The Goable Sustainability Index is an annual, frozen and signed report composited from real, consented outcome sessions. It is not a carbon footprint, an emissions inventory or a certification. Per released zone it exposes up to six operational signals — access/ travel low-impact share (a participant-declared estimate), non- combustion propulsion share, facility renewable-energy share, equipment electrification, seasonal evenness, and equipment- provenance circularity (a weak proxy) — composited only where the zone has data for a signal, renormalised over whatever is present. Average group size is captured and disclosed but never scored. Protected-area proximity is a candidate future signal: it is not yet captured, disclosed or scored anywhere in this response.
Response field names such as carbonNeutralShare are stable API contract keys carried over from an earlier phase; read them as documented (non-combustion propulsion share), not as a net CO2 claim. Reach for this endpoint when you need the machine-readable artefact for a dashboard embed, academic citation or an operational-data appendix that may support sustainability reporting — it does not establish CSRD, GRI or GSTC compliance. The JSON is JSON-LD (Schema.org-typed).
Request
A single optional query parameter. Any from, to, k or zoneKm params from the earlier on-demand version of this endpoint are no longer accepted — this endpoint only ever serves a published year, never a caller-defined window.
yearExample requests:
curl "https://api.goable.io/v1/public/sustainability-index" curl "https://api.goable.io/v1/public/sustainability-index?year=2026"
No Authorization header, no X-Goable-Key: the sustainability index is deliberately open. The endpoint is edge-cached (cache-control: public, max-age=300) — reasonable for a frozen annual document, not a tight cache.
Response
Content-Type: application/ld+json. Shape below for a published year; the field values are illustrative, not observed platform data.
{
"@context": "https://schema.org",
"@type": "GoableSustainabilityIndex",
"generatedAt": "2026-07-04T09:12:04.812Z",
"period": {
"from": "2026-01-01T00:00:00Z",
"to": "2026-12-31T23:59:59Z"
},
"methodology": {
"weights": {
"accessLowImpact": 0.30,
"carbonNeutralShare": 0.20,
"facilityRenewable": 0.18,
"electrificationShare": 0.12,
"seasonalEvenness": 0.12,
"provenanceCircularity": 0.08
}
},
"overall": {
"index": 61.4,
"totalSessions": 14210,
"carbonNeutralShare": 0.764,
"dataCompleteness": 0.71,
"avgGroupSize": 3.4,
"zonesReleased": 18,
"zonesSuppressed": 7
},
"zones": [
{
"zoneKey": "36.00,-5.50",
"totalSessions": 1240,
"accessLowImpactShare": 0.62,
"carbonNeutralShare": 0.921,
"facilityRenewableShare": null,
"electrificationShare": 0.14,
"seasonalEvenness": null,
"provenanceCircularityShare": 0.55,
"avgGroupSize": 3.4,
"availableWeight": 0.7,
"comparability": "partial",
"zoneIndex": 61.6
}
],
"license": "CC BY 4.0",
"attribution": "Goable Sustainability Index (goable.io/research)",
"publication": {
"year": 2026,
"revision": 1,
"publishedAt": "2027-03-31T00:00:00Z",
"signedBy": "Sustainability Index lead",
"methodologyVersion": "2026.2-outcomes-v2"
}
}Publication vs the honest empty-state
Every response carries a top-level publication field. When a year has cleared the coverage floor and been signed, it is an object: { year, revision, publishedAt, signedBy, methodologyVersion }. When nothing has been published for the requested year — or at all — publication is null and the rest of the document reports zero zones/sessions. A consumer never needs a special branch: publication === null means "nothing official for this period," full stop. There is no laxer path by which a below-floor or unpublished figure reaches this endpoint; preview and publish share the exact same generation and floor-evaluation code, so a number either clears the floor and gets signed, or the endpoint returns the empty-state.
Governance
These are enforced in the generation and publication code as release criteria, not left to discretion:
- k-anonymity floor ≥ 10 distinct contributing tenants per zone. A zone missing the contributor count, or below the threshold, is suppressed and only counted in
overall.zonesSuppressed— fail-closed. - Platform coverage floor ≥ 30 distinct contributors AND ≥ 1,000 real sessions. Evaluated over the same publication-clamped window as the report. Below either, nothing is written for that year — the endpoint serves the empty-state. Early years publishing nothing is intended behaviour, not a bug.
- Spatial truncation. Sessions are snapped to a regional grid before any aggregation; exact coordinates never leave the server.
- 90-day publication lag. The reporting window is clamped to no closer than 90 days before "now," so a just-completed period can't be published before its data settles.
- Frozen, signed, revisable. A published year is immutable. Corrections create a new numbered revision that supersedes the prior one; the old revision is retained, never deleted.
- ≥50% per-signal declaration coverage. Each of the six composited signals is included for a zone only when at least half its sessions carry it; below that the signal is dropped and the remaining weights renormalise.
These are minimum disclosure controls, not a guarantee of anonymity: pseudonymous and aggregated data can still be personal data under GDPR Recital 26.
License + citation
Published under Creative Commons Attribution 4.0 International (CC BY 4.0) once a year clears the coverage floor. Free to cite, embed, remix; the only ask is the attribution string carried on the document itself (attribution field). It may be cited as a supplementary, methodologically documented operational indicator, not as proof of CSRD, GRI or GSTC compliance. Recommended citation:
Goable Sustainability Index. {publication.year} report, revision {publication.revision}.
Published {publication.publishedAt}, methodology {publication.methodologyVersion}.
CC BY 4.0. https://goable.io/sustainability-indexErrors
422 VALIDATION_ERROR: malformed year (not an integer, or outside 2000–2100). 503 SERVICE_UNAVAILABLE: the publication store is not wired on this deployment (transient, the endpoint returns automatically once it is available).