Skip to content

Public API

Rust API reference for the odcs crate. Generated API docs: docs.rs/odcs.

Stability guarantees: api-stability.md. User guides: ../user/rust.md · API decision guide.

Stable entry points (1.0+)

Use these from application code:

Category Symbols
Parse parse, parse_file, parse_yaml, parse_json, parse_strict, DocumentFormat, ParseResult, MAX_PARSE_BYTES
Validate validate, parse_and_validate, validate_set, validate_with_contract_index
Model DataContract
Diagnostics Diagnostic, DiagnosticReport, codes, ValidationPhase, inspect_contract
Multi-document ContractSet, load_set, load_set_with_registry, parse_and_validate_set, parse_and_validate_set_with_registry
Registry Registry, RegistryEntry, index_registry, index_and_save_registry, load_registry
Compatibility diff, CompatibilityReport, ChangeKind
Constants UPSTREAM_SPEC_VERSION

Internal modules (parser, validation, model, …) are #[doc(hidden)] and not covered by semver.

Parse and validate

use odcs::{parse, parse_file, parse_and_validate, validate, DocumentFormat};

let result = parse(yaml_bytes, DocumentFormat::Yaml);
let result = parse_file("contract.odcs.yaml")?;
let report = parse_and_validate(yaml_bytes, DocumentFormat::Yaml);
assert!(report.is_valid());

ParseResult

let result = parse(content, DocumentFormat::Yaml);
let contract = result.into_contract()?;  // parse + validate required
let report = result.validate();

Validate a contract

use odcs::validate;

let report = validate(&contract);

JSON Schema validation against the pinned ODCS v3.1.0 schema always runs in validate().

parse_strict

use odcs::{parse_strict, DocumentFormat};

let contract = parse_strict(yaml_bytes, DocumentFormat::Yaml)?;

Convenience for parse + validate + typed DataContract. Unrelated to the removed 0.x --strict CLI flag.

DataContract helpers

use odcs::DataContract;

let result = DataContract::from_yaml(yaml_text);
let result = DataContract::from_json(json_text);
let result = DataContract::from_file("contract.odcs.yaml")?;

Features

Feature Default Description
cli yes odcs binary
python no PyO3 bindings (used by maturin)
odcs = { version = "1.0", default-features = false }

Python equivalent

See ../user/python.md.