Skip to content

Distribution and versioning

Gapwise separates canonical ownership, public distribution, and runtime consumption.

The current canonical channel is published under:

https://data.gapwise.ca/datasets/utm/latest/

A production build generates:

https://data.gapwise.ca/datasets/utm/latest/manifest.json

The manifest lists each distributed artifact with its byte size, SHA-256 digest, and first-party URL. This makes raw consumers independent of GitHub’s raw-content URLs and provides an integrity boundary for mirrors and caches.

Example:

const campus = await fetch(
'https://data.gapwise.ca/datasets/utm/latest/buildings.geojson'
).then((response) => response.json());

The student web app, routing engine, and public API must keep functioning if the Data portal is unavailable. Core therefore pins and validates a snapshot during development/build rather than fetching data.gapwise.ca for every student request.

This gives us both:

  • one official source of campus facts; and
  • no new production single point of failure.

latest is the human-friendly current channel. Consumers that require strict reproducibility should pin a checksum or an immutable dataset release once one is published. Do not assume that latest will remain byte-identical forever.

The public API uses its own versioned compatibility contract. A data artifact changing does not automatically imply an API breaking change.

Prefer the API/SDK when you want Gapwise semantics such as building resolution, route calculation, warnings, confidence, or gap feasibility. Prefer raw distribution when you are doing research, visualization, provenance inspection, validation, or building your own derivation pipeline.