### Install AJV CLI Source: https://github.com/bitol-io/open-data-product-standard/blob/main/scripts/README.md Installs the AJV command-line interface globally using npm. This is a prerequisite for running the validation scripts. ```bash npm install -g ajv-cli ``` -------------------------------- ### Define Support Channels Source: https://context7.com/bitol-io/open-data-product-standard/llms.txt Specify how consumers can get help with a data product, including different scopes like interactive, announcements, and issues. ```yaml support: - channel: "Data Team Slack" url: "https://retailcorp.slack.com/archives/C1234567890" description: "Primary support channel for data product questions" tool: "slack" scope: "interactive" invitationUrl: "https://retailcorp.slack.com/join/C1234567890" - channel: "Email Support" url: "mailto:data-support@retailcorp.com" description: "Email support for urgent issues" tool: "email" scope: "issues" - channel: "Product Announcements" url: "https://teams.microsoft.com/l/channel/announcements" description: "Updates and announcements about the data product" tool: "teams" scope: "announcements" ``` -------------------------------- ### Example Management Port Configuration Source: https://github.com/bitol-io/open-data-product-standard/blob/main/docs/README.md This YAML snippet demonstrates how to configure a management port, specifically a Kafka topic for dictionary updates. Ensure the 'type' and 'name' fields are correctly set for your Kafka topic. ```yaml managementPorts: - content: dictionary type: topic name: tpc-dict-update description: Kafka topic for dictionary updates ``` -------------------------------- ### Example Validation Script Output Source: https://github.com/bitol-io/open-data-product-standard/blob/main/scripts/README.md Demonstrates the expected output when the ODPS validation script runs successfully, showing checks for AJV, schema loading, and individual file validation status. ```text Open Data Product Standard (ODPS) Validation Script ================================================== ✓ AJV found: /usr/local/bin/ajv ✓ Schema file found: /path/to/schema/odps-json-schema-v0.9.0.json Checking if v0.9.0 JSON schema is valid Valid JSON schema Validating example ODPS files based on v0.9.0 JSON schema Found YAML files to validate: - customer-data-product.odps.yaml - simple-data-product.odps.yaml Passed validation, file=customer-data-product.odps.yaml Passed validation, file=simple-data-product.odps.yaml ================================================== Validation Summary: Total failed=0 ✓ All files are valid! ``` -------------------------------- ### Run ODPS Validation Script Source: https://github.com/bitol-io/open-data-product-standard/blob/main/scripts/README.md Executes the bash script to validate YAML examples against the ODPS JSON schema. Ensure AJV is installed and the script has execute permissions. ```bash ./scripts/validate-examples.sh ``` -------------------------------- ### Validate ODPS File with ajv-cli Source: https://context7.com/bitol-io/open-data-product-standard/llms.txt Use ajv-cli to validate an ODPS file against its JSON Schema. Ensure ajv-formats is installed for full schema support. ```bash # Validate an ODPS file using ajv-cli npm install -g ajv-cli ajv-formats ajv validate -s schema/odps-json-schema-v1.0.0.json \ -d docs/examples/customer-data-product.odps.yaml \ --spec=draft2019 \ -c ajv-formats # Expected output for valid file: # docs/examples/customer-data-product.odps.yaml valid # For IDE integration, name your files with .odps.yaml extension # SchemaStore will automatically provide validation and IntelliSense ``` -------------------------------- ### Define Authoritative Definitions Source: https://context7.com/bitol-io/open-data-product-standard/llms.txt Link to external documentation, tutorials, and implementations for additional context about the data product. ```yaml authoritativeDefinitions: - type: "businessDefinition" url: "https://wiki.example.com/customer-data-product" description: "Business context and requirements" - type: "transformationImplementation" url: "https://github.com/example/customer-etl" description: "ETL pipeline implementation" - type: "videoTutorial" url: "https://youtube.com/watch?v=abc123" description: "How to consume this data product" - type: "tutorial" url: "https://docs.example.com/getting-started" description: "Step-by-step integration guide" - type: "canonicalUrl" url: "https://catalog.example.com/products/customer-data" description: "Canonical reference in data catalog" ``` -------------------------------- ### Define Input Ports Source: https://context7.com/bitol-io/open-data-product-standard/llms.txt Describes the data sources feeding into a data product. Each input port requires a name, version, and contract ID. Multiple versions can be supported. ```yaml inputPorts: - name: payments version: 1.0.0 contractId: dbb7b1eb-7628-436e-8914-2a00638ba6db - name: payments version: 2.0.0 contractId: dbb7b1eb-7628-436e-8914-2a00638ba6da - name: onlinetransactions version: 1.1.0 contractId: ec2a112d-5cfe-49f3-8760-f9cfb4597547 tags: ["transactions", "online"] customProperties: - property: "transactionsVersion" value: "1.1.0" description: "Version tracking for transactions" authoritativeDefinitions: - type: "businessDefinition" url: "https://docs.example.com/transactions" description: "Business definition for online transactions" ``` -------------------------------- ### Define Custom Properties Source: https://context7.com/bitol-io/open-data-product-standard/llms.txt Extend the standard with organization-specific key/value pairs at any level of the document hierarchy. ```yaml customProperties: - property: "dataSensitivity" value: "confidential" description: "Data classification level" - property: "retentionPeriodDays" value: 365 description: "How long data is retained" - property: "complianceFrameworks" value: ["GDPR", "CCPA", "SOC2"] description: "Applicable compliance frameworks" ``` -------------------------------- ### Complete Minimal Data Product Definition Source: https://context7.com/bitol-io/open-data-product-standard/llms.txt A minimal data product definition combining all required elements for a production-ready specification. This YAML defines the metadata for a data product, including its ID, name, version, status, domain, and descriptive information. ```yaml apiVersion: v1.0.0 kind: DataProduct id: 064c4630-8aad-4dc0-ba95-0f69940e6b18 name: Simple Data Product version: v1.0.0 status: active domain: analytics tenant: ExampleCorp description: purpose: Provides processed customer analytics data limitations: Data refreshed daily at 2am UTC usage: Suitable for dashboards and reports tags: ['analytics', 'customer'] inputPorts: - name: source-data version: 1.0.0 contractId: 12345678-1234-1234-1234-123456789abc outputPorts: - name: processed-data description: "Processed output data" type: tables version: 1.0.0 contractId: 87654321-4321-4321-4321-cba987654321 managementPorts: - name: metrics-api content: observability type: rest url: "https://api.example.com/metrics" support: - channel: "Support Email" url: "mailto:support@example.com" tool: "email" scope: "issues" team: name: "Analytics Team" members: - username: "owner@example.com" role: "owner" productCreatedTs: "2024-01-15T10:30:00Z" ``` -------------------------------- ### Define Output Ports Source: https://context7.com/bitol-io/open-data-product-standard/llms.txt Describes data products delivered to consumers, including type, versioning, SBOM references, and input contract dependencies for data lineage. Supports custom properties and authoritative definitions. ```yaml outputPorts: - name: rawtransactions description: "Raw Transactions" type: tables version: 1.0.0 contractId: c2798941-1b7e-4b03-9e0d-955b1a872b32 - name: rawtransactions description: "Raw Transactions v2 with enhanced lineage" type: tables version: 2.0.0 contractId: c2798941-1b7e-4b03-9e0d-955b1a872b33 tags: ["transactions", "raw"] customProperties: - property: "transactionsVersion" value: "2.0.0" authoritativeDefinitions: - type: "transformationImplementation" url: "https://github.com/example/etl-pipeline" sbom: - type: "external" url: "https://mysbomserver/mysbom" inputContracts: - id: dbb7b1eb-7628-436e-8914-2a00638ba6db version: 2.0.0 - id: ec2a112d-5cfe-49f3-8760-f9cfb4597544 version: 1.0.0 - name: consolidatedtransactions description: "Consolidated transactions" type: tables version: 1.0.0 contractId: a44978be-1fe0-4226-b840-1b715bc25c63 ``` -------------------------------- ### Make Script Executable Source: https://github.com/bitol-io/open-data-product-standard/blob/main/scripts/README.md Grants execute permissions to the validation script. This is necessary to run it directly from the command line. ```bash chmod +x scripts/validate-examples.sh ``` -------------------------------- ### Support and Communication Channels Source: https://github.com/bitol-io/open-data-product-standard/blob/main/docs/README.md Information regarding support and communication channels, which are standardized across Bitol standards. ```APIDOC ## Support and Communication Channels The structure describing "support and communication channels" is shared between all Bitol standards. ``` -------------------------------- ### Output Ports Configuration Source: https://github.com/bitol-io/open-data-product-standard/blob/main/docs/README.md Defines the structure for output ports, which represent data accessible from the data product. ```APIDOC ## Output Ports ### Field Descriptions | Field | Key | UX label | Required | Description | |---|---|---|---|---| | outputPorts.contractId | | Contract Id | No | | | outputPorts.type | | Type | No | There can be different types of output ports, each automated and handled differently. Here you can indicate the type. | | outputPorts.sbom | | SBOM | No | Software Bill of Material. | | outputPorts.sbom.type | | Type of SBOM | No | `external` is the default and only supported value. | | outputPorts.sbom.url | | URL | No | URL to download the Software Bill of Materials. | | outputPorts.description | | Description | No | Human-readable short description of the output port. | | outputPorts.customProperties | | Custom properties | No | Custom properties. | | outputPorts.authoritativeDefinitions | | Authoritative Definitions | No | Authoritative definitions. | | outputPorts.tags | | Tags | No | Tags. | ``` -------------------------------- ### Define Fundamental Data Product Metadata Source: https://github.com/bitol-io/open-data-product-standard/blob/main/docs/README.md This YAML snippet defines the core identifying metadata for a data product, including its API version, kind, name, unique ID, domain, status, tenant, a descriptive purpose and limitations, and relevant tags. ```yaml apiVersion: v1.0.0 kind: DataProduct name: Customer Data Product id: fbe8d147-28db-4f1d-bedf-a3fe9f458427 domain: seller status: draft tenant: RetailCorp description: purpose: Enterprise view of a customer. limitations: No known limitations. usage: Check the various artefacts for their own description. tags: ['customer'] ``` -------------------------------- ### Management Ports Configuration Source: https://github.com/bitol-io/open-data-product-standard/blob/main/docs/README.md Defines the structure for management ports, which provide access points for managing the data product. ```APIDOC ## Management Ports The management ports define access points for managing the data product. ### Example ```yaml managementPorts: - content: dictionary type: topic name: tpc-dict-update description: Kafka topic for dictionary updates ``` ### Field Descriptions | Field | Key | UX label | Required | Description | |---|---|---|---|---| | managementPorts | | Management Interface | No | Object defining a management port. | | managementPorts.**name** | Yes | Name | Yes | Endpoint identifier or unique name. | | managementPorts.content | | Content | Yes | Content: can be `discoverability`, `observability`, or `control`. | | managementPorts.type | | Type | No | Type: can be `rest` or `topic`. Default is `rest`. | | managementPorts.url | | URL | No | URL to access the endpoint. | | managementPorts.channel | | Channel | No | Channel to communicate with the data product. | | managementPorts.description | | Description | No | Purpose and usage. | | managementPorts.customProperties | | Custom Properties | No | Custom properties block. | | managementPorts.authoritativeDefinitions | | Authoritative Definitions | No | Authoritative definitions block. | | managementPorts.tags | | Tags | No | Tags. | ``` -------------------------------- ### Define Management Ports Source: https://context7.com/bitol-io/open-data-product-standard/llms.txt Defines access points for operational management, including discoverability, observability, and control interfaces. Supports REST APIs and message topics. ```yaml managementPorts: - name: tpc-dict-update content: dictionary type: topic description: Kafka topic for dictionary updates channel: kafka://broker:9092/dictionary-updates tags: ["kafka", "dictionary"] customProperties: - property: "kafkaTopic" value: "true" authoritativeDefinitions: - type: "implementation" url: "https://kafka.example.com/topics/dict-update" - name: observability-api content: observability type: rest url: "https://api.example.com/data-products/observability" description: REST API for metrics and monitoring ``` -------------------------------- ### Define Core Data Product Structure Source: https://context7.com/bitol-io/open-data-product-standard/llms.txt Defines the fundamental structure of an ODPS document, including identity, status, and basic metadata. Required fields are apiVersion, kind, id, and status. ```yaml apiVersion: v1.0.0 kind: DataProduct name: Customer Data Product id: fbe8d147-28db-4f1d-bedf-a3fe9f458427 version: v1.0.0 domain: seller status: active tenant: RetailCorp description: purpose: Enterprise view of a customer. limitations: No known limitations. usage: Check the various artefacts for their own description. tags: ['customer', 'enterprise'] productCreatedTs: "2023-01-15T10:30:00Z" ``` -------------------------------- ### Define Team Information Source: https://context7.com/bitol-io/open-data-product-standard/llms.txt Document the people responsible for a data product, including role assignments and membership history. ```yaml team: name: "Data Team" description: "The Data Team is responsible for the data product lifecycle." tags: ["data", "analytics"] customProperties: - property: "costCenter" value: "CC-12345" members: - username: "john.doe@retailcorp.com" name: "John Doe" description: "Data Product Owner responsible for strategy and roadmap" role: "owner" dateIn: "2023-01-15" tags: ["leadership"] - username: "jane.smith@retailcorp.com" name: "Jane Smith" description: "Data Steward ensuring data quality and governance" role: "data steward" dateIn: "2023-02-01" authoritativeDefinitions: - type: "businessDefinition" url: "https://wiki.example.com/data-steward-responsibilities" - username: "bob.previous@retailcorp.com" name: "Bob Previous" role: "developer" dateIn: "2022-06-01" dateOut: "2023-03-15" replacedByUsername: "alice.new@retailcorp.com" ``` -------------------------------- ### ODPS Citation BibTeX Entry Source: https://github.com/bitol-io/open-data-product-standard/blob/main/README.md BibTeX entry for citing the Open Data Product Standard (ODPS). ```bibtex @manual{ODPS2025, title = {Open Data Product Standard (ODPS)}, author = {{Bitol}}, organization = {LF AI & Data Foundation}, year = {2025}, url = {https://bitol-io.github.io/open-data-product-standard} } ``` -------------------------------- ### ODPS Mime Media Type Source: https://github.com/bitol-io/open-data-product-standard/blob/main/README.md The official media type for Open Data Product Standard (ODPS) version 1.0.0. ```text application/odps+yaml;version=1.0.0 ``` -------------------------------- ### Update SchemaStore Versions Source: https://github.com/bitol-io/open-data-product-standard/blob/main/schema/README.md When a new ODPS JSON Schema version is released, update this section in the SchemaStore repository to include the new version and its corresponding URL. Ensure the 'odcs-json-schema-latest.json' is also updated. ```json { "name": "Open Data Product Standard (ODPS)", ... "versions": { "": "https://github.com/bitol-io/open-data-product-standard/blob/main/schema/odps-json-schema-.json", ... "v0.9.0": "https://github.com/bitol-io/open-data-product-standard/blob/main/schema/odps-json-schema-v0.9.0.json" } }, ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.