Data contracts are formal agreements between data producers and consumers — defining schema, SLOs, and data quality rules.
# Data contract YAML (OpenDataContract standard)
apiVersion: 2.2.2
kind: DataContract
id: urn:ezycoders:orders.completed:v2
info:
title: Orders Completed
version: 2.0.0
owner: orders-team@company.com
status: active
slo:
freshness: 30 minutes
availability: 99.9%
servers:
production:
type: bigquery
project: myproject
dataset: analytics
table: fct_orders
models:
- name: fct_orders
fields:
- name: order_id
type: string
required: true
unique: true
description: Unique order identifier
- name: amount
type: number
minimum: 0
maximum: 1000000
- name: status
type: string
enum: [completed, pending, cancelled, refunded]
# Validate contract with soda-core
# soda scan -d snowflake -c soda_config.yml orders_contract.yml
# Python validation
from datacontract.model.data_contract_specification import DataContractSpecification
contract = DataContractSpecification.from_file("orders_contract.yaml")
result = contract.test() # runs all quality checks