ODCS Validator
Free · In-browser · No data leaves your machine

ODCS Validator

Validate Open Data Contract Standard contracts instantly. Paste your YAML or JSON data contract and see exactly which fields pass or fail against the official ODCS JSON Schema.

v3.1.0v3.0.2v3.0.0v2.2.2v3.1.0 latest
Your Contract

Auto-validates as you type · Cmd/Ctrl+Enter to validate immediately

Validation Results

Paste an ODCS contract on the left to see validation results here.

How to validate your ODCS contract

1

Paste or load your contract

Paste a YAML or JSON ODCS data contract into the editor, or use the "Load example" dropdown to try one of the built-in samples.

2

Instant auto-validation

The validator automatically detects your format and apiVersion, selects the matching ODCS JSON Schema, and runs validation as you type.

3

Review results

A green banner means your contract is valid. Red errors list each failing field path, the violated rule, and a human-readable message.

What is the Open Data Contract Standard (ODCS)?

The Open Data Contract Standard (ODCS) is an open specification maintained byBitol(LF AI & Data Foundation) that defines how data producers and consumers formally agree on the structure, quality, ownership, and operational expectations of a dataset. An ODCS contract is a machine-readable YAML or JSON file that covers:

  • Schema — logical and physical column definitions, data types, primary keys
  • Data quality — null checks, row counts, duplicate rules, custom SQL checks
  • SLA — latency, availability, retention, update frequency
  • Team & Roles — owners, stewards, IAM access roles
  • Infrastructure — 30+ server types (Snowflake, BigQuery, Kafka, S3, Postgres, …)
  • Pricing — subscription cost per unit for data marketplace use cases
  • Support channels — Slack, Teams, email, ticketing

ODCS is platform-agnostic and supported natively by tools like the Data Contract CLI, Databricks Ontos, IBM watsonx, Witboost, and many more. The current version isv3.1.0, released December 2025. Starting with v3.1.0, the JSON Schema enforces strict validation — unknown fields are rejected, encouraging use ofcustomProperties for extensions.

ODCS contract examples

Copy these examples directly into the validator above to see them in action.

Minimal valid ODCS v3.1.0 contract (YAML)

apiVersion: v3.1.0
kind: DataContract
id: 53581432-6c55-4ba2-a65f-72344a91553a
name: orders_v1
version: 1.0.0
status: active

The five fields marked Required below are the only mandatory ones. All others are optional.

Contract with schema and data quality (YAML)

apiVersion: v3.1.0
kind: DataContract
id: abc123-def456
version: 2.0.0
status: active
schema:
  - id: orders_tbl
    name: orders
    physicalType: table
    properties:
      - id: order_id_prop
        name: order_id
        primaryKey: true
        primaryKeyPosition: 1
        logicalType: string
        physicalType: varchar(36)
        required: true
        quality:
          - metric: nullValues
            mustBe: 0

Minimal valid contract (JSON)

{
  "apiVersion": "v3.1.0",
  "kind": "DataContract",
  "id": "53581432-6c55-4ba2-a65f-72344a91553a",
  "version": "1.0.0",
  "status": "active"
}

Common error: unknown top-level field

apiVersion: v3.1.0
kind: DataContract
id: my-contract
version: 1.0.0
status: active
# ❌ This will fail — ODCS v3.1.0 does not
# allow unknown top-level fields.
# Move it to customProperties instead.
myCustomField: some-value

Fix: move to customProperties: [{property: myCustomField, value: some-value}]

ODCS v3.1.0 required fields

These five fields must be present in every ODCS v3.1.0 contract. Everything else is optional.

FieldTypeAllowed values / exampleDescription
apiVersionstringv3.1.0Version of the ODCS standard this contract follows.
kindstringDataContractMust be exactly DataContract.
idstring53581432-6c55-4ba2-a65f-72344a91553aUnique identifier (UUID recommended) to avoid name collisions.
versionstring1.0.0The contract's own semver version (independent of the standard version).
statusstringactive · draft · deprecated · retiredLifecycle status of this contract.

Commonly used optional fields

FieldDescription
nameHuman-readable contract name
domainLogical data domain (e.g. finance, commerce)
tenantOrganisation or property the data belongs to
schemaArray of data objects (tables/topics) and their properties
serversPhysical locations: Postgres, BigQuery, Snowflake, Kafka, S3, …
slaPropertiesLatency, retention, availability, frequency SLA entries
teamNamed team object with member list (v3.1.0+)
rolesIAM roles with access levels and approver chains
supportSlack, email, Teams, or ticket support channels
priceData product pricing (priceAmount, priceCurrency, priceUnit)
customPropertiesNon-standard key/value extensions (required instead of unknown top-level fields)
contractCreatedTsISO 8601 UTC timestamp of contract creation

Supported ODCS versions

The validator automatically picks the correct schema based on the apiVersion field in your contract. If the version is unrecognised, validation falls back to the latest schema (v3.1.0).

apiVersionStatusNotable changes
v3.1.0LatestStrict schema, FK relationships, improved library metrics, deprecated fields removed
v3.0.2SupportedAlso has a strict schema variant; backward-compatible with v3.1.0 contracts
v3.0.1SupportedValidated against v3.0.2 schema (closest match)
v3.0.0SupportedMajor v3 rewrite — objects/properties terminology, complex data structures
v2.2.2 / v2.2.1 / v2.2.0LegacyPre-v3 format, table/column model; validated against v2.2.2 schema

Frequently asked questions

What is the Open Data Contract Standard (ODCS)?
ODCS is an open specification (Apache 2.0 license) maintained by the Bitol / LF AI & Data Foundation. It defines a machine-readable YAML or JSON format for formalising the agreement between data producers and consumers — covering schema, quality rules, SLA, team ownership, IAM roles, pricing, and server infrastructure.
What ODCS versions does this validator support?
v3.1.0 (latest), v3.0.2, v3.0.1, v3.0.0, and v2.2.2/v2.2.1/v2.2.0 (legacy). The validator reads the apiVersion field from your contract and automatically selects the matching bundled JSON Schema.
Why does my contract fail with "additional properties" errors?
ODCS v3.1.0 introduced strict JSON Schema validation — additionalProperties: false at the root level and most nested objects. Any field not defined in the standard will be rejected. Move custom fields into a customProperties array. For example: customProperties: [{property: myField, value: myValue}].
Can I use JSON instead of YAML for my ODCS contract?
Yes — ODCS supports both formats equally. The validator auto-detects JSON or YAML. JSON is useful for programmatic generation or API transport; YAML is the more popular choice for human-authored contracts.
Is my contract data sent to a server?
No. All validation runs entirely in your browser. The ODCS JSON Schemas are bundled with the page. Your contract text never leaves your machine and no data is stored or logged.
The validator shows a version warning. What does that mean?
If your contract's apiVersion is not in the supported list (or is missing), the validator falls back to the latest schema (v3.1.0) and shows a soft warning. Your contract is still validated — the warning just informs you that an exact schema match was not found.
What is the difference between apiVersion and version in ODCS?
apiVersion is the ODCS standard version — it identifies which version of the specification your contract follows (e.g. v3.1.0). version is the contract's own semver version, tracking how the contract itself has changed over time (e.g. 1.3.0). They are completely independent fields.
Where can I learn more about writing ODCS contracts?
The official documentation is at https://bitol-io.github.io/open-data-contract-standard/v3.1.0/. The specification is split into sections for Fundamentals, Schema, References, Data Quality, SLA, Servers, Team, Roles, Support, Pricing, and Custom Properties. The GitHub repository at https://github.com/bitol-io/open-data-contract-standard also has many example contracts.