Shape

Observations are served as compact series: one file per metric, subject and period resolution, carrying provenance once and points as [periodStart, value] pairs. A 190-year monthly series is one file with 2,300 pairs, not 2,300 near-identical objects. The catalogue endpoints say what exists and how to address it, so you can enumerate the whole dataset without downloading it.

Series file

{
  "metricId": "precipitation-annual",
  "subjectId": "uk-england",
  "unit": "mm",
  "periodKind": "year",
  "basis": "reported",
  "sourceId": "uk-metoffice-haduk",
  "count": 190,
  "from": "1836-01-01",
  "to": "2025-01-01",
  "points": [["1836-01-01", 856.4], ["1837-01-01", 782.1]]
}

Endpoints

PathReturns
/api/v1/index.jsonService index: counts, endpoint list, shape and licence position.
/api/v1/datasets.jsonDataset catalogue with version, coverage and rights.
/api/v1/datasets/{slug}.jsonOne dataset: full metadata, fields, changelog and citation.
/api/v1/dictionary.jsonField definitions: unit, publisher unit, bases, comparability constraints.
/api/v1/metrics.jsonMetric registry.
/api/v1/sources.jsonSource registry with structured rights.
/api/v1/geographies.jsonGeography registry with levels and parents.
/api/v1/entities.jsonEntity registry across all families.
/api/v1/series/index.jsonCatalogue of every series: metric, subject, period kind, count, span, source.
/api/v1/series/{metricId}--{subjectId}.jsonOne series: provenance once, points as [periodStart, value] pairs.
/api/v1/observations/by-metric/{metricId}.jsonEvery series for a metric.
/api/v1/observations/by-subject/{subjectId}.jsonEvery series for a subject.

Identifiers

Identifiers are stable and are the contract. A metric id, geography id, entity id or dataset id does not change once published; if a record is withdrawn, its id is retired rather than reused.

KindFormExample
Metrickebab-case nameriver-flow-monthly-mean
Countrycountry- plus ISO 3166-1 alpha-3, lowercasedcountry-gbr
UK geographyuk- plus nameuk-england
Monitoring locationprefix plus the publisher’s own notation, kept verbatimgauge-ea-8496ce69-482c-406a-a2f0-ac418ef8f099
ObservationmetricId::subjectId::periodKind::periodStartprecipitation-annual::uk-england::year::1976-01-01

Observation ids are deterministic, which is what makes re-ingestion idempotent: the same fact always gets the same id, so a re-run supersedes rather than duplicates.

Provenance fields

Provenance survives API delivery. Every observation carries the fields below, and a derived value carries its calculation record as well.

FieldMeaning
basisHow the number came to exist: measured, reported, calculated, derived, aggregated, estimated, modelled or inferred. Never assume measured.
unit / sourceUnitThe stored unit and the unit the publisher used. These are frequently not the same quantity.
sourceIdResolve against /api/v1/sources.json for the licence before redistributing or using commercially.
periodStart, end, kind and label. Kind matters: a decadal mean and a year can share a start date.
confidence, uncertainty, qualifierQuality signals, including publisher flags such as provisional or break in series.
superseded, supersedesRevision chain. Superseded records are retained, not deleted.
derivationOn computed values: method, method version, formula, input observation ids, input source ids, calculation date and the limitations of the method.
retrievedWhen the value was taken from the source, or computed.

Access classes

Access classes describe what Hydrionis is willing to offer. They never widen what a publisher permitted: a paid tier is subject to exactly the same upstream licences as an anonymous visitor.

ClassIntended forStatus
PublicAnyone, with no account. The whole public site and the static JSON API, served as flat files.Available now
DeveloperMachine access for building things. Intended to carry an API key and a reasonable rate limit rather than a charge.Designed, not yet offered
ResearchBulk and archival access for academic and non-commercial research, where the underlying licence permits redistribution.Designed, not yet offered
ProfessionalHigher-volume access, derived analytics and advanced historical exports for organisations working with water data.Designed, not yet offered
EnterpriseNegotiated volume, feeds, service levels and bespoke extracts, including onward commercial licensing where the source rights allow it.Designed, not yet offered

Only the public class exists today, and it is the whole dataset. The others are modelled in the access-policy engine so that the data layer already knows which outputs each class is eligible for — see licensing. There is no pricing, because nothing is being sold yet.

Errors, pagination and limits

There are none, and that is a design consequence rather than an omission. Every endpoint is a static file: it either exists and returns 200, or it does not and your host returns 404. There is nothing to paginate because a series file is already the unit of retrieval, and nothing to rate-limit because serving a file costs Hydrionis the same whether it happens once or a million times.

If a future authenticated tier introduces keys, quotas and error envelopes, it will be documented here as a separate delivery channel over the same data — not as a replacement for this one.

Licensing

All 23 current datasets carry licences that permit redistribution and commercial reuse, but that is a fact about today’s sources rather than a guarantee about future ones — check the dataset.

Versioning

The API path carries a major version. Datasets carry their own semantic versions and changelogs, which is where meaningful change is recorded: a recomputation with a new method changes values without changing any endpoint. Cite the dataset version, not the date you fetched it.

Dataset catalogue · Data dictionary · Ingestion diagnostics · Data enquiries