Skip to main content
A file is checked in two stages:
  1. 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.
  2. The data, at ingest: that declared channels exist and carry the right messages, video encodings, point-cloud frames, rates and heights.
Every finding names a rule id (e.g. 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.
The response is always 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 as end_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.