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.json  

Example  

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  

PropertyTypeRequiredDescription
apiVersionstringYesVersion 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.
contractCreatedTsstringNoTimestamp in UTC of when the data contract was created.
Timestamp in UTC of when the data contract was created.
customPropertiesArrayNo
dataProductstringNoThe name of the data product.
The name of the data product.
descriptionobjectNoHigh level description of the dataset.
High level description of the dataset.
description.limitationsstringNoLimitations of the dataset.
Limitations of the dataset.
description.purposestringNoPurpose of the dataset.
Purpose of the dataset.
description.usagestringNoIntended usage of the dataset.
Intended usage of the dataset.
domainstringNoName 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.
idstringYesA 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.
kindstringYesThe 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.
namestringNoName of the data contract.
Name of the data contract.
pricePricingNo
provenanceobjectNoOrigin metadata recording where this contract was introspected from.
Origin metadata recording where this contract was introspected from.
provenance.introspectedAtstringNo
provenance.introspectedFromstringNo
provenance.sourceDriverstringNo
provenance.sourceEnvironmentstringNo
rolesRole []NoA list of roles that will provide user access to the dataset.
A list of roles that will provide user access to the dataset.
schemaSchemaObject []NoA list of elements within the schema to be cataloged.
A list of elements within the schema to be cataloged.
serversServer []NoList of servers where the datasets reside.
List of servers where the datasets reside.
slaDefaultElementstringNoElement (using the element path notation) to do the checks on.
Element (using the element path notation) to do the checks on.
slaPropertiesObject []NoA 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).
statusstringYesCurrent 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.
supportSupportNo
tagsTagsNo
teamTeam []No
tenantstringNoIndicates 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.
versionstringYesCurrent 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.

SectionCustom propertyDescription
schemacatalog_schemaDefines 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.propertiesforeign_keyBoolean 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.propertiesforeign_namespaceName 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.propertiesforeign_objectName 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.propertiesforeign_propertyName 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