sustainability-data Repository Gateway

A reference deployment of /.well-known/sustainability-data (draft-besleaga-sustainability-wellknown).

This service is a reference deployment of the /.well-known/sustainability-data well-known URI defined in draft-besleaga-sustainability-wellknown. It serves one conformant JSON document per reporting subject, each at /{domain}/.well-known/sustainability-data, so that the convention can be exercised against real, sourced annual disclosures without waiting for each organization to deploy its own endpoint. In a real deployment the document lives on the subject's own origin; a gateway is only a way to demonstrate and test the format.

Please read. Documents served here about third parties are ILLUSTRATIVE MAPPINGS prepared by the gateway operator from those organizations' own published reports. They are NOT published, reviewed, authorized, or endorsed by their reporting subjects, and this gateway is not an authoritative origin for them. Every figure is traceable to the public source document named in that document's methodology-uri member; nothing is estimated, interpolated, or invented on the subjects' behalf. Documents whose subject is a reserved .example name are deliberately synthetic and describe nothing real.

Subjects served (11)

EndpointReporting subjectPeriodMethodProvenance
akamai.com sourced Akamai Technologies, Inc. (organization) 2025 hardware-estimated source document
automattic.com sourced Automattic Inc. (data centre operations) (organization) 2020 hardware-estimated source document
cloudflare.com sourced Cloudflare, Inc. (organization) 2024 hardware-estimated source document
fastly.com sourced Fastly, Inc. (organization) 2024 hardware-estimated source document
hetzner.com sourced Hetzner Online GmbH (organization) 2024 hardware-estimated source document
microsoft.com sourced Microsoft Corporation (organization) 2025 hardware-estimated source document
mozilla.org sourced Mozilla Foundation and Mozilla Corporation (organization) 2025 hardware-estimated source document
ovhcloud.com sourced OVH Groupe SA (OVHcloud) (organization) 2025 hardware-estimated source document
retailer.example synthetic retailer.example (organization) 2025 third-party-modeled source document
saas-platform.example synthetic saas-platform.example (service) 2025 hardware-metered source document
wikimedia.org sourced Wikimedia Foundation (organization) 2024 hardware-estimated source document

Adapter demonstrations (8)

One demonstration subject per adapter shipped by the published sustainability-wellknown-publisher package, so every adapter runs end to end in this gateway. Subjects marked live fetch a real upstream daily (only upstreams whose licenses permit attributed republication; the attribution is carried in band). Subjects marked replay run the SAME adapter code against a recorded upstream response, because no legal free live access to that upstream exists; their figures are synthetic and say so in band. All sit under reserved .example names: they demonstrate the format and describe no real organization.

EndpointAdapterUpstream & attributionPeriod
carbontxt-demo.example live carbontxt-api (LIVE GWF validator API, daily) GWF carbon.txt validator API (free key) / recorded carbon.txt
carbon.txt self-published by its organization; validator by GWF
2025
climatiq-demo.example replay climatiq (recorded response shape, replay) Climatiq estimate API (replay by default; see terms note)
replay default: Climatiq 2026 terms restrict redistribution
last live attempt failed; serving last good data
2026-07
co2js-demo.example live co2js (local SWD model, live Greencheck, daily) CO2.js locally (Ember data) + GWF Greencheck
CO2.js Apache-2.0; Ember CC BY 4.0; GWF Green Domains ODbL
2026-07
grid-intensity-demo.example live computed (LIVE NESO grid intensity, daily) NESO Carbon Intensity API (api.carbonintensity.org.uk)
NESO Carbon Intensity API, CC BY 4.0
2026-07
kepler-demo.example replay kepler-prometheus (recorded fixture, replay mode) Kepler energy counters via Prometheus (no public instance; replay)
synthetic figures; recorded Prometheus query response
2025
ms-sustainability-demo.example replay ms-sustainability (retired OData shape, replay) MS Cloud for Sustainability (preview API retired 2025-05-30; replay)
synthetic figures; shape per the retired tenantemissions API
2025
salesforce-nzc-demo.example replay salesforce-nzc (documented SOQL shape, replay) Salesforce Net Zero Cloud (30-day trial orgs exist; replay here)
synthetic figures; field names per NZC developer guide
2025
watershed-demo.example replay watershed (documented footprint shape, replay) Watershed API (customer-only keys, no sandbox; replay)
synthetic figures; shape per api-docs.watershed.com
2025

Wire-format examples (14)

Every case from the specification repository's canonical example-responses set, served live. Array (trend) cases follow the draft's rule: the parameterless Basic response collapses to the most recent entry, and the full sorted array is returned only for ?granularity= requests on documents that themselves declare capabilities:extended. All figures are synthetic; the subjects are reserved .example names.

EndpointCaseShapeDemonstrates
basic.example example Basic response object The draft's worked Basic example: an origin-wide monthly report.
minimal.example example Minimal document object Mandatory members only — every metric omitted, methodology-uri carries the disclosure.
extended.example example Daily report, path target object A daily reporting period for a path-scoped target with extended capabilities declared.
partial.example example Partial reporting object Omission as the only not-reported mechanism. The source file omits carbon-unit; the served document carries the materialized default (gCO2e) — the pipeline resolving the draft's default-unit rule.
origin-annual.example example Origin-wide annual report object A calendar-year report for a whole origin, from cloud-billing data.
organization.example example Organization report object An organization-level mapping in the shape the draft's organization example uses.
organization-trend.example example Yearly trend, Basic service array (4) A multi-year trend file whose document declares capabilities:basic — the Basic response therefore collapses to the most recent year, exactly as the draft requires.
product.example example Product object A physical product as the reporting subject (per-unit footprint).
service.example example Service object A hosted application service as the reporting subject.
tenant.example example Cloud tenant object A single cloud tenant as the reporting subject.
device.example example Hardware device object A metered edge device as the reporting subject.
data-source.example example Data source / feed object A published data feed as the reporting subject.
yearly.example example Monthly series (Extended) array (12) ?granularity=monthly Twelve monthly entries; Basic collapses to the latest month, ?granularity=monthly returns the sorted year.
yearly-monthly-target.example example Monthly series, path target (Extended) array (2) ?granularity=monthly A short monthly series for a path-scoped target; Basic collapses, ?granularity=monthly returns the array.

This gateway's own report

The gateway also reports on itself, as a service, at /.well-known/sustainability-data (target: sustainability-data-gateway).

Consumer cross-validation

At boot, every document this gateway serves was fetched through the published publisher pipeline and validated with the published consumer library — the same code a third party would run. A validation failure aborts startup. This deployment: sustainability-wellknown-consumer@0.5.2 validated 36 documents at boot.

Service level

This gateway implements the Basic service: query parameters are ignored and the Basic response is returned — never an error. The one deliberate exception: the wire-format examples that themselves declare capabilities: "extended" honor the granularity parameter and return their full sorted trend array, exactly as the draft's Extended service defines. Successful responses are application/json with Cache-Control: public, max-age=86400, Access-Control-Allow-Origin: *, a strong ETag and Last-Modified; If-None-Match yields 304. A method other than GET or HEAD yields 405 with Allow: GET, HEAD. An unknown subject yields 404.

Verify these documents yourself

Every document served here can be fetched and validated with the specification's published reference consumer (sustainability-wellknown-consumer, version 0.5.2 or later). --strict runs the full conformance battery — schema validation, media type, caching, conditional requests, method handling — and labels each check with the strength of the requirement it tests (a failed MUST is a conformance failure; an unmet SHOULD is a warning).

The gateway's own report, at this origin's true well-known location:

npx -y -p sustainability-wellknown-consumer sustainability-fetch https://sustainability.up.railway.app --strict

Any subject document — curated, adapter demonstration, or wire-format example — by giving its path-prefixed base URL; the consumer resolves /.well-known/sustainability-data under the prefix:

npx -y -p sustainability-wellknown-consumer sustainability-fetch https://sustainability.up.railway.app/cloudflare.com --strict
npx -y -p sustainability-wellknown-consumer sustainability-fetch https://sustainability.up.railway.app/grid-intensity-demo.example --strict
npx -y -p sustainability-wellknown-consumer sustainability-fetch https://sustainability.up.railway.app/yearly.example --strict
npx -y -p sustainability-wellknown-consumer sustainability-fetch https://sustainability.up.railway.app/<any-domain-above> --strict

The Extended trend arrays, by giving the full document URL with its granularity parameter (the consumer validates array documents too):

npx -y -p sustainability-wellknown-consumer sustainability-fetch "https://sustainability.up.railway.app/yearly.example/.well-known/sustainability-data?granularity=monthly"

To just fetch and read a document (or pipe it into your own tooling):

curl -s https://sustainability.up.railway.app/wikimedia.org/.well-known/sustainability-data | python3 -m json.tool

Independent of this project's tooling, the JSON validates against the specification's published JTD and CDDL schemas.

Machine-readable index

/index.json carries the same list, this notice included.