odcs 0.9.1

Reference implementation of the Open Data Contract Standard (ODCS)
Documentation

odcs — Rust & Python reference implementation for ODCS

CI Crates.io PyPI Documentation License

Reference implementation, not the specification. This repo validates ODCS documents. The normative Open Data Contract Standard (ODCS) is maintained by Bitol.

odcs validates ODCS YAML/JSON files locally and in CI.

It checks that your contract document is well-formed and conforms to ODCS v3.1.0 — schema, quality rules, SLAs, ownership, and server metadata. It does not run quality checks against live data.

Release: 0.9.1 on main (0.9.0 on crates.io and PyPI until v0.9.1 ships). 1.0.0 stabilization is complete on main, pending release tag and registry publish — see Release status and API stability policy.

Install → validate in 60 seconds:

cargo install odcs   # or: pip install pyodcs
odcs version         # odcs 0.9.1 (upstream ODCS 3.1.0)
pyodcs version       # pyodcs 0.9.1 (upstream ODCS 3.1.0); use --json for crateVersion JSON
odcs validate contract.yaml

New to ODCS? Read What is ODCS? first.

Upstream ODCS 3.1.0
Rust crate odcs
Python package pyodcs
Documentation odcs.readthedocs.io
Rust API docs docs.rs/odcs

Quick start

Copy examples/minimal.odcs.yaml or save as contract.yaml (.yaml and .odcs.yaml both work):

version: "1.0.0"      # your contract revision
apiVersion: "v3.1.0"  # ODCS spec release — not the same as version
kind: "DataContract"
id: "hello-contract"
status: "draft"
schema:
  - name: customers
    logicalType: object
    properties:
      - name: customer_id
        logicalType: string
        required: true
odcs validate contract.yaml   # prints: valid

On failure, diagnostics include stable codes and paths:

[error] odcs:invalid-kind: expected kind 'DataContract', got 'WrongKind'
  at: kind

See Diagnostics and Troubleshooting.

From code:

import pyodcs

report = pyodcs.parse_and_validate(open("contract.yaml", "rb").read(), format="yaml")
assert pyodcs.is_valid(report)

Full walkthrough: Getting started · Installation

Documentation

Full docs: odcs.readthedocs.io

I want to… Read
Learn what ODCS is What is ODCS?
Get started in 5 minutes Getting started
Install Rust or Python Installation
Choose the right API API decision guide
Use the CLI CLI
Integrate in CI/CD CI/CD
Fix validation errors Troubleshooting
Browse examples Examples
Local registry & cross-file refs Local registry · examples/registry/
Compare contract revisions Compatibility analysis
Contribute Contributing
Upstream sync policy (maintainers) SPEC.md
Report a security issue SECURITY.md

Status: 0.9.1 on main (0.9.0 published); 1.0 stabilization complete, pending release — Release status · API stability · ROADMAP.md

This repository implements the standard; it is not the ODCS specification itself.

Pipeline

ODCS Document → Parser → Canonical Object Model → Validator → Diagnostics

Execution, pipeline composition, and transformation semantics are out of scope. See non-goals.

Contributing

See CONTRIBUTING.md. Run ./scripts/check.sh before opening a PR. When implementation guidance conflicts with the upstream ODCS specification, the upstream specification wins.

License

Apache License 2.0. See LICENSE.