A data contract in Specly is the table as you modeled and documented it – columns, data types, descriptions and status – written as an ODCS file that consumers can read and test against.
apiVersion: v3.2.0
kind: DataContract
id: dim_customer
name: dim_customer
version: 1.0.0
status: active
schema:
- name: dim_customer
physicalType: table
description: One row per customer, conformed across the CRM and webshop.
customProperties:
- property: owner
value: Customer team
properties:
- name: customer_id
description: Primary key, unique customer identifier
logicalType: string
physicalType: uuid
primaryKey: true
primaryKeyPosition: 1
- name: email
description: Primary contact email address
logicalType: string
physicalType: text
- name: is_active
description: True if the customer has paid for at least one order in the last twelve months
logicalType: boolean
physicalType: booleanTables, columns, data types and descriptions are created in Specly, where the team already works on the model. The contract is built from what is there.
You decide which fields in Specly correspond to which fields in ODCS. Values without a link are kept as custom properties in the contract, so nothing is lost.
Each table is written as one .odcs.yaml and each data product as one .odps.yaml, on the same branch as the code.
ODCS is a widely used open standard for data contracts. The files are not tied to Specly.
Consumers read the contract directly, and tools such as the Data Contract CLI can use it for validation.
Contracts are written from the same model the team edits. There is no separate copy to keep up to date on the side.
Tell us how you work today, and we will show you how Specly could fit in.