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.