Skip to main content

JSON Schema Reference

The CDM's canonical form is the Pydantic model. These schemas are its publication — what a consumer that is not Python actually reads and validates against — and the pages below are a rendering of those files, generated by docs/scripts/generate-schema-docs.mjs.

Nothing here is hand-written, and that is the point. Three copies of one contract exist (model, schema, page), each mechanically derived from the one above it:

packages/cdm/synapse_cdm/models.py the single source
└─ python -m synapse_cdm.schemas → schemas/*.schema.json (tested by --check)
└─ npm run gen:schemas → these pages (tested by npm run check:schemas)

Both arrows are gated. python -m synapse_cdm.schemas --check --out schemas fails if the schemas drift from the models, and npm run check:schemas fails if these pages drift from the schemas — so a field renamed in Python cannot reach a reader through a stale page.

CDM schema version: 3.2.0. Compatibility is decided by version.compatible(), not by string equality, and it is directional: a newer reader accepts an older object because the frozen historical schemas show it validating, while an older reader refuses a newer object that carries a property it does not know, populated or null. A minor nobody has published is unknown, not safe — see the Changelog.

PageSource fileSHA-256
CDMObject (the union)schemas/cdm_object.schema.jsonc93f426dbdbb…
Entityschemas/entity.schema.json0279537f42c5…
Eventschemas/event.schema.json5f4d579ce405…
Trackschemas/track.schema.json4a3560ab7b8f…
PlanObjectschemas/plan_object.schema.jsonc74b7aceb9ef…
GnssInterferencePayloadschemas/payload_gnss_interference.schema.json3d70e1b69271…