- The overlay, on its own: fields, types, cross-references between parts and signals. This runs in preflight, before you upload anything, and again at ingest.
- The data, at ingest: that declared channels exist and carry the right messages, video encodings, point-cloud frames, rates and heights.
segment.end_s.invalid), a location (e.g.
recording.platform.parts[2] left_hand) and a message saying what to change.
Rejected and warned
Preflight
Check an overlay before you upload: preflight sends only the overlay JSON (kilobytes), never the recording.200 for a well-formed request; a bad overlay is reported in the body (abridged):
ok is true when there are no errors. Warnings never block ingest.
Preflight checks the overlay only. Checks that need the messages (channel presence, encodings,
LiDAR heights, observed rates, GPS fixes) run at ingest and are reported on the ingest.
Schema-only validation
You can also validate the overlay offline against the JSON Schema with any JSON Schema 2020-12 validator. The schema covers field shapes; preflight additionally checks the rules a schema cannot express, such asend_s after start_s, a part’s signal being
declared with the right type and unit, joint-name counts and keypoint trees. Treat preflight as
authoritative.