Skip to content
M↓ View as Markdown ↗

Supported ODCS Attributes

DCB supports a subset of the Open Data Contract Standard (ODCS) version 3.1.0.

The following sections describe the ODCS attributes supported by DCB and indicate which sections are required.

Fundamentals

Property Mapped Required Description
apiVersion Yes Yes Version of the ODCS standard used to build the data contract. The default value is v3.1.0.
kind Yes Yes The kind of file this is. Valid value is DataContract.
id Yes Yes Unique identifier used to reduce the risk of contract name collisions. Generated from the contract name.
version Yes Yes Current version of the data contract.
status Yes Yes Current lifecycle status of the data contract. Valid values are proposed, draft, active, deprecated, and retired.
name Yes No Name of the data contract.
dataProduct No No Name of the data product.
domain Yes No Name of the logical data domain.
tenant No No Property the data is primarily associated with (case insensitive).
description Yes No Object containing the description.
description.purpose Yes No Intended purpose of the provided data.
description.limitations Yes No Technical, compliance, and legal limitations for data use.
description.usage Yes No Recommended usage of the data.
description.authoritativeDefinitions Yes No Links to privacy statements, terms and conditions, or license agreements.
description.customProperties No No Custom properties not covered by the standard.
authoritativeDefinitions No No Links to sources with more details on the data contract.
tags Yes No A list of tags for categorizing the contract.
customProperties No No Top-level custom key/value pairs with organization-specific metadata.

Schema

Property Mapped Required Description
schema Yes Yes Array of schema elements (objects and their properties) to be cataloged.
schema[].name Yes Yes Name of the schema object.
schema[].id Yes No Stable unique identifier for the schema object, enabling safe references.
schema[].physicalName Yes No Physical name of the object in the data source.
schema[].physicalType Yes No Physical type of the object. Valid values are table, view, topic, and file.
schema[].description Yes No Human-readable description of the schema object.
schema[].quality Yes No Data quality rules associated with the object (for example, rowCount, compound duplicateValues).
schema[].businessName Yes No Business-facing name of the schema object.
schema[].dataGranularityDescription No No Granular level of data in this object.
schema[].relationships No No List of relationships to other properties. Supports composite keys and dot-notation references.
schema[].tags Yes No Tags used to categorize the object.
schema[].authoritativeDefinitions Yes No Links to authoritative sources for the object.
schema[].customProperties No No Custom properties for the schema object.
schema[].properties Yes No Array of properties (columns and fields) within the schema object.
schema[].properties[].name Yes Yes Name of the property.
schema[].properties[].logicalType Yes No Logical data type of the property. Valid values are string, date, timestamp, time, number, integer, object, array, and boolean.
schema[].properties[].id Yes No Stable unique identifier for the property, enabling safe references.
schema[].properties[].description Yes No Human-readable description of the property.
schema[].properties[].physicalType Yes No Physical data type in the source system.
schema[].properties[].required Yes No Indicates whether the property can contain null values. The default value is false.
schema[].properties[].primaryKey Yes No Indicates whether the property is a primary key. The default value is false.
schema[].properties[].primaryKeyPosition Yes No Position within a composite primary key (starts at 1, -1 = not a PK).
schema[].properties[].classification Yes No Data sensitivity classification. Valid values are public, restricted, confidential.
schema[].properties[].quality Yes No Data quality rules defined for the property.
schema[].properties[].physicalName Yes No Physical name of the property in the data source.
schema[].properties[].businessName Yes No Business-facing name of the property.
schema[].properties[].unique Yes No Indicates whether the property contains only unique values. The default value is false.
schema[].properties[].partitioned No No Whether the property is used as a partition key.
schema[].properties[].partitionKeyPosition No No Position in a composite partition key (starts at 1, -1 = not a partition key).
schema[].properties[].criticalDataElement Yes No Indicates whether the property is a Critical Data Element (CDE).
schema[].properties[].examples Yes No Sample values for the property.
schema[].properties[].items Yes No Describes items contained within an array property (only when logicalType is array).
schema[].properties[].relationships Yes No Foreign key relationships to other properties. The from field is implicit at property level.
schema[].properties[].logicalTypeOptions No No Additional metadata to further describe the logical type. See sub-properties below.
schema[].properties[].logicalTypeOptions.format No No Format for dates (JDK DateTimeFormatter) or string format hint.
schema[].properties[].logicalTypeOptions.minimum No No Minimum value (inclusive) for number/integer, or minimum date string.
schema[].properties[].logicalTypeOptions.maximum No No Maximum value (inclusive) for number/integer, or maximum date string.
schema[].properties[].logicalTypeOptions.exclusiveMinimum No No All values must be strictly greater than this (number/integer and date types).
schema[].properties[].logicalTypeOptions.exclusiveMaximum No No All values must be strictly less than this (number/integer and date types).
schema[].properties[].logicalTypeOptions.multipleOf No No Values must be a multiple of this number (integer/number only).
schema[].properties[].logicalTypeOptions.minLength No No Minimum string length.
schema[].properties[].logicalTypeOptions.maxLength No No Maximum string length.
schema[].properties[].logicalTypeOptions.pattern No No Regex pattern for valid string values (ECMA-262 syntax).
schema[].properties[].logicalTypeOptions.timezone No No Whether the timestamp/time value encodes timezone info.
schema[].properties[].logicalTypeOptions.defaultTimezone No No Default timezone when not embedded in the value.
schema[].properties[].logicalTypeOptions.minItems No No Minimum number of items in an array.
schema[].properties[].logicalTypeOptions.maxItems No No Maximum number of items in an array.
schema[].properties[].logicalTypeOptions.uniqueItems No No If true, all items in the array must be unique.
schema[].properties[].logicalTypeOptions.minProperties No No Minimum number of properties in an object.
schema[].properties[].logicalTypeOptions.maxProperties No No Maximum number of properties in an object.
schema[].properties[].logicalTypeOptions.required No No Property names that must be present in the object.
schema[].properties[].encryptedName No No Name of the property in the dataset that holds the encrypted value of this property.
schema[].properties[].transformSourceObjects No No List of source objects used in the property's transformation.
schema[].properties[].transformLogic No No SQL or code logic used in the property's transformation.
schema[].properties[].transformDescription No No Plain-language description of the transform logic.
schema[].properties[].tags Yes No Tags used to categorize the property.
schema[].properties[].authoritativeDefinitions Yes No Links to authoritative sources for the property.
schema[].properties[].customProperties No No Custom properties for the property.

Service-level Agreement (SLA)

Property Mapped Required Description
slaProperties Yes No Array of service-level agreement property entries.
slaProperties[].property Yes Yes SLA property name from the Data QoS periodic table. Valid values are latency, retention, frequency, availability, throughput, errorRate, generalAvailability, endOfSupport, endOfLife, timeOfAvailability, timeToDetect, timeToNotify, and timeToRepair.
slaProperties[].value Yes Yes Service-level target value.
slaProperties[].unit Yes No Unit for the SLA value (ISO standard). Valid values are d / day / days, y / yr / years, h / hr / hours
slaProperties[].element Yes No Object or property path to which the SLA applies.
slaProperties[].id No No Stable unique identifier for the SLA entry.
slaProperties[].valueExt No No Extended SLA value when the property requires two values (for example, a time window).
slaProperties[].driver Yes No Importance driver for the SLA. Valid values are regulatory, analytics, and operational.
slaProperties[].description Yes No Human-readable description of the SLA entry.
slaProperties[].scheduler No No Scheduler name for automated SLA checks.
slaProperties[].schedule No No Scheduler configuration for the SLA check.

Roles

Property Mapped Required Description
roles Yes No Array of IAM roles that a consumer may need to access the dataset.
roles[].role Yes Yes Name of the IAM role providing access.
roles[].access Yes No Type of access provided by the IAM role.
roles[].firstLevelApprovers No No Name(s) of first-level approver(s) for granting this role.
roles[].secondLevelApprovers No No Name(s) of second-level approver(s) for granting this role.
roles[].id No No Stable unique identifier for the role entry.
roles[].description Yes No Description of the IAM role and its permissions.
roles[].customProperties No No Custom properties for the role.

Servers

Property Mapped Required Description
servers No No Array of server/infrastructure entries describing where the data physically resides.
servers[].type No Yes Technology type of the server.
servers[].server No Yes Logical identifier/name of the server.
servers[].environment No No Deployment environment of the server.
servers[].host No No Hostname or IP address (most relational and streaming server types).
servers[].port No No Connection port.
servers[].database No No Database name.
servers[].schema No No Schema name within the database.
servers[].catalog No No Catalog name (Athena, Databricks, Presto, Trino, Glue).
servers[].location No No URL or file path to the data (Azure Blob, S3, SFTP, API, Glue).
servers[].format No No File or message format.
servers[].project No No GCP project name (BigQuery, Pub/Sub).
servers[].dataset No No BigQuery dataset name.
servers[].account No No Cloud account (Snowflake, Redshift, Glue).
servers[].warehouse No No Snowflake virtual warehouse name.
servers[].stream No No Kinesis data stream name.
servers[].path No No Relative or absolute path to local data file(s).
servers[].serviceName No No Oracle service name.
servers[].id No No Unique identifier for the server entry.
servers[].description No No Description of the server.
servers[].region No No Cloud region.
servers[].delimiter No No Delimiter for JSON format — how multiple JSON documents are separated within one file.
servers[].endpointUrl No No Endpoint URL for S3-compatible servers.
servers[].roles No No Roles with access to this server. Follows the same roles structure.
servers[].stagingDir No No S3 staging directory for Athena query results.
servers[].customProperties No No Custom properties for the server.

Pricing

Property Mapped Required Description
price No No Object containing pricing information for data product subscribers.
price.priceAmount No No Subscription price per unit of measure in priceUnit.
price.priceCurrency No No Currency of the subscription price.
price.priceUnit No No Unit of measure for pricing calculation.

Team

Property Mapped Required Description
team No No Object describing the team responsible for this data contract.
team.members No No List of team members.
team.members[].username No Yes The member's username or email address.
team.members[].role No No The member's job role (no limit on values).
team.id No No Unique identifier for the team.
team.name No No Team name.
team.description No No Team description.
team.members[].id No No Unique identifier for the team member entry.
team.members[].name No No The member's full name.
team.members[].description No No Description of the member's responsibilities.
team.members[].dateIn No No Date when the user joined the team.
team.members[].dateOut No No Date when the user ceased to be part of the team.
team.members[].replacedByUsername No No Username of the member who replaced this person.
team.members[].tags No No Tags for the team member.
team.members[].authoritativeDefinitions No No Authoritative definitions for the team member.
team.members[].customProperties No No Custom properties for the team member.
team.tags No No Tags for the team.
team.authoritativeDefinitions No No Authoritative definitions for the team.
team.customProperties No No Custom properties for the team.