FAQ

Which contract format should I use?

ODCS. The older Data Contract Specification (models/fields) is still read, but write new contracts in ODCS — see Migrate from DCS to ODCS.

I imported a contract and test immediately fails on types. Why?

On the nine backends with catalog introspection, the declared physicalType is compared against the column’s real native type — a stricter check than the portable logicalType used elsewhere. See Types and the Data Source Reference.

I set isNullable: false but nothing is checked.

The CLI reads required, not isNullable. Write required: true. See What is not checked.

Where do credentials go?

Never in the contract. Connection details live in servers; credentials come from environment variables or a .env file in the working directory. Each reference page lists the variables its source expects.

How do I make CI fail on quality warnings?

datacontract ci --fail-on warning. The default is error; never always exits 0. See ci.

How do I run only some checks?

--checks schema, quality, or servicelevel, comma-separated. Omit it to run everything. See Test your Data.

Which optional dependency do I need?

One per data source — datacontract-cli[snowflake], [databricks], [postgres], … — or [all] for everything. See Installation.

TLS fails behind a corporate proxy.

Use datacontract --system-truststore … to verify against the operating system’s trust store instead of the bundled CA certificates, or set DATACONTRACT_SYSTEM_TRUSTSTORE=1.

Can I use it without the CLI?

Yes — as a Python library, or as a REST service with datacontract api.

Something is missing or broken.

Open an issue on GitHub or ask in the community Slack. To add it yourself, see Contributing.