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