Docs
Data Contracts
Data contracts formalize the format, content, and quality of shared data. Amfelt uses the Open Data Contract Standard (ODCS) to capture these contracts.
Overview
Data contracts define the format, content, and quality of a data sharing agreement for a specific data source. Amfelt implements the Open Data Contract Standard (ODCS) v3.0.0 to define and maintain these contracts. Data contracts use the YAML format and are validated with a JSON Schema Draft 2019-09 .
Full Schema Specification
odcs-json-schema-v3.0.0.jsonExample
You can explore a full example on the website of the Open Data Contract Standard (maintained by Bitol ). The same website also includes an example of a Postgres Adventureworks Contract .
Contract Fundamentals
| Property | Type | Required | Description |
|---|---|---|---|
apiVersion | string | Yes | Version of the standard used to build data contract. Default value is v3.0.0. Default value is: v3.0.0. Valid values are: v3.0.0, v2.2.2, v2.2.1, v2.2.0. |
Version of the standard used to build data contract. Default value is v3.0.0. Default value is: v3.0.0. Valid values are: v3.0.0, v2.2.2, v2.2.1, v2.2.0. | |||
contractCreatedTs | string | No | Timestamp in UTC of when the data contract was created. |
Timestamp in UTC of when the data contract was created. | |||
customProperties | Array | No | |
dataProduct | string | No | The name of the data product. |
The name of the data product. | |||
description | object | No | High level description of the dataset. |
High level description of the dataset. | |||
description.limitations | string | No | Limitations of the dataset. |
Limitations of the dataset. | |||
description.purpose | string | No | Purpose of the dataset. |
Purpose of the dataset. | |||
description.usage | string | No | Intended usage of the dataset. |
Intended usage of the dataset. | |||
domain | string | No | Name of the logical data domain. Examples: imdb_ds_aggregate, receiver_profile_out, transaction_profile_out. |
Name of the logical data domain. Examples: imdb_ds_aggregate, receiver_profile_out, transaction_profile_out. | |||
id | string | Yes | A unique identifier used to reduce the risk of dataset name collisions, such as a UUID. |
A unique identifier used to reduce the risk of dataset name collisions, such as a UUID. | |||
kind | string | Yes | The kind of file this is. Valid value is DataContract. Default value is: DataContract. |
The kind of file this is. Valid value is DataContract. Default value is: DataContract. | |||
name | string | No | Name of the data contract. |
Name of the data contract. | |||
price | Pricing | No | |
provenance | object | No | Origin metadata recording where this contract was introspected from. |
Origin metadata recording where this contract was introspected from. | |||
provenance.introspectedAt | string | No | |
provenance.introspectedFrom | string | No | |
provenance.sourceDriver | string | No | |
provenance.sourceEnvironment | string | No | |
roles | Role [] | No | A list of roles that will provide user access to the dataset. |
A list of roles that will provide user access to the dataset. | |||
schema | SchemaObject [] | No | A list of elements within the schema to be cataloged. |
A list of elements within the schema to be cataloged. | |||
servers | Server [] | No | List of servers where the datasets reside. |
List of servers where the datasets reside. | |||
slaDefaultElement | string | No | Element (using the element path notation) to do the checks on. |
Element (using the element path notation) to do the checks on. | |||
slaProperties | Object [] | No | A list of key/value pairs for SLA specific properties. There is no limit on the type of properties (more details to come). |
A list of key/value pairs for SLA specific properties. There is no limit on the type of properties (more details to come). | |||
status | string | Yes | Current status of the dataset. Valid values are production, test, or development. Examples: production, test, development. |
Current status of the dataset. Valid values are production, test, or development. Examples: production, test, development. | |||
support | Support | No | |
tags | Tags | No | |
team | Team [] | No | |
tenant | string | No | Indicates the property the data is primarily associated with. Value is case insensitive. |
Indicates the property the data is primarily associated with. Value is case insensitive. | |||
version | string | Yes | Current version of the data contract. |
Current version of the data contract. | |||
Extensions
Amfelt adds several custom properties to the open data contract standard. The below table lists these custom properties for each contract section.
| Section | Custom property | Description |
|---|---|---|
schema | catalog_schema | Defines the name of the database schema in which the object resides. For example, the table SalesPerson of the AdventureWorks database is defined within the schema Sales. |
Defines the name of the database schema in which the object resides. For example, the table SalesPerson of the AdventureWorks database is defined within the schema Sales. | ||
schema.properties | foreign_key | Boolean value that indicates if the property (table attribute) includes a foreign key constraint. If set, the custom properties foreign_namespace, foreign_object, and foreign_property define the targeted property. |
Boolean value that indicates if the property (table attribute) includes a foreign key constraint. If set, the custom properties foreign_namespace, foreign_object, and foreign_property define the targeted property. | ||
schema.properties | foreign_namespace | Name of the namespace (for example, the database schema) in which the targeted foreign key object resides. Only applicable when foreign_key is true. |
Name of the namespace (for example, the database schema) in which the targeted foreign key object resides. Only applicable when foreign_key is true. | ||
schema.properties | foreign_object | Name of the object (for example, the table) that owns the targeted foreign key property. Only applicable when foreign_key is true. |
Name of the object (for example, the table) that owns the targeted foreign key property. Only applicable when foreign_key is true. | ||
schema.properties | foreign_property | Name of the property (for example, the column) that is targeted by the foreign key. Only applicable when foreign_key is true. |
Name of the property (for example, the column) that is targeted by the foreign key. Only applicable when foreign_key is true. | ||
server | * | Includes server-specific connection settings. Each setting is specified as key-value pair. |
Includes server-specific connection settings. Each setting is specified as key-value pair. | ||
Last updated on October 21, 2026