Skip to content

CLI Specification

Binary:

odcs

Commands:

odcs validate <path>
odcs validate <path> --dep <path> [--dep ...] [--include <dir>] [--registry <dir>]
odcs inspect <path>
odcs diagnostics <path>
odcs diff <old> <new>
odcs registry index <dir>
odcs registry lookup <dir> <id> [--version <ver>]
odcs registry list <dir>
odcs schema
odcs version

Output modes:

odcs validate contract.yaml
odcs validate contract.yaml --json
odcs schema
odcs schema --json
odcs schema --url-only

Exit codes:

  • 0 valid / no breaking diff changes
  • 1 validation errors / breaking diff changes
  • 2 parse or IO failure

Cross-file validation (0.8.0+)

odcs validate consumer.yaml --dep provider.yaml --include ./contracts/
odcs validate consumer.yaml --registry ./contracts/

Requires odcs registry index ./contracts/ before --registry validation.

Local registry (0.9.0+)

odcs registry index ./contracts/
odcs registry lookup ./contracts/ provider-contract
odcs registry list ./contracts/

Compatibility diff (0.8.0+)

odcs diff old.yaml new.yaml
odcs diff old.yaml new.yaml --json

Exit 0 when no breaking changes; 1 when breaking changes are detected.

Validation (0.4.0+)

Default validate runs the Rust pipeline plus pinned ODCS v3.1.0 JSON Schema validation.

parse_strict() (library API) parses and validates in one step, returning Result<DataContract, DiagnosticReport>.

odcs schema

Flag Output
(default) Full pinned JSON Schema to stdout
--json {"schemaVersion","upstreamUrl","schema"} wrapper
--url-only Upstream repository URL line only

User-facing CLI documentation: ../user/cli.md.