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: 1.0.0. Compatibility is decided by
version.compatible(), not by string equality: a 1.0.0 reader accepts anything 1.x, because
MINOR additions are optional by definition and a fleet that stops ingesting the moment one
adapter is upgraded is a self-inflicted outage.
| Page | Source file | SHA-256 |
|---|---|---|
| CDMObject (the union) | schemas/cdm_object.schema.json | f7d49f512d36… |
| Entity | schemas/entity.schema.json | 55d02434c120… |
| Event | schemas/event.schema.json | 35316ac8789c… |
| Track | schemas/track.schema.json | 28e44c85743e… |
| PlanObject | schemas/plan_object.schema.json | 154bc7250bb0… |
| GnssInterferencePayload | schemas/payload_gnss_interference.schema.json | 987a6669cc20… |