API reference

The API is static JSON — committed files, no server, no keys (RP Part VII; tly/api.py). Any dumb host or mirror can serve it; index.json lets you verify a mirror byte-for-byte.

Layout

api/v1/
  latest.json          the newest epoch's print
  prints/<date>.json   one file per epoch (date = the Monday, UTC)
  countries.json       per-country S / E-bar / N breakdown
  index.json           every artifact above with its sha256

The print object (latest.json, prints/*.json)

Fields (all numbers are Decimal-as-string; schema: tly/prints.py):

Integrity

1. Fetch index.json; hash every artifact you mirror; compare. 2. Nothing may exist in the tree that index.json does not describe. 3. Each print's provenance hashes resolve into data/snapshots/*/ manifest.json in the repo — see the reproduction instructions (docs/REPRODUCE_FIXING.md) to recompute the values themselves.

Stability

print-v1 fields are append-only; removing or renaming a field is a schema version bump. Consumers should reject unknown schema_version values (the reference validator does).