Canonical OPass Schedule JSON contract and validator.
OPass Schedule JSON is the interchange format consumed by OPass apps. Google Sheets, Pretalx, and other systems are input sources; converters for those systems should emit OPass Schedule JSON and validate it with this package.
Run the CLI directly with npx:
npx --yes @ccip-app/schedule-json-validator schedule.jsonUse strict mode when a generated schedule is about to be published:
npx --yes @ccip-app/schedule-json-validator --strict schedule.jsonThe CLI exits with 0 when the schedule is valid and 1 when validation
fails. In base mode, warnings are reported but do not fail validation. Strict
mode promotes warnings to failures.
In a local checkout, run the bundled CLI directly:
node bin/opass-schedule-validate.js schedule.jsonimport { validateSchedule } from "@ccip-app/schedule-json-validator"
const result = validateSchedule(schedule)
if (!result.valid) {
console.error(result.errors)
}The human-readable contract lives in
docs/opass-schedule-contract.md. The machine-readable shape contract lives in
schemas/opass-schedule.v1.schema.json.
The schema intentionally allows extra properties. Required fields follow the
app-compatible schedule contract. Semantic checks such as session.room
referencing rooms[].id live in the validator; type, speaker, and tag
reference misses are warnings unless strict mode is enabled.
schedule-json-validator: schedule contract, schema, fixtures, and validatorschedule-json-generator: Google Sheets to OPass Schedule converterschedule-json-generator-action: GitHub Action wrapper for generated schedules- Android, iOS, and KMP apps: reference consumers for render-required fields
The examples/ directory contains small conformance fixtures:
examples/minimal.valid.json: smallest app-compatible schedule fixtureexamples/invalid-missing-room.json: broken required reference fixtureexamples/warnings-unknown-refs.json: fallback-compatible warning fixture
npm test