Requirements:
- Optional: ckanext-scheming for preset-based schema definition
Installation:
1. Activate CKAN virtualenv
2. Clone and install:
git clone https://github.com/Data/datashades/ckanext-ondc.git
cd ckanext-ondc
pip install -e .
pip install -r requirements.txt
Add to ckan.plugins:
ondc
With ckanext-scheming:
Add ONDC presets to scheming
scheming.presets = ckanext.ondc:presets.yaml
Add dataset schema using ONDC presets
scheming.dataset_schemas = path_to_your_extension:dataset.yaml
Example schema:
scheming_version: 1
dataset_type: your_dataset_type
dataset_fields:
- preset: ondc_identifier
- preset: ondc_title
- preset: ondc_description
- preset: ondc_data_custodian
# … all 26 ONDC presets available
ONDC Metadata Attributes (26 total):
Core (10 mandatory):
- identifier, title, description, data_custodian, point_of_contact
- access_rights, security_classification, keyword, resource_type, date_modified
Additional (16 optional):
- access_url, temporal_coverage_from/to, update_frequency, publish_date
- purpose, location, sensitive_data, file_size, format, language
- legal_authority, licence, disposal, data_status, publisher
Without scheming (IDatasetForm):
Implement plugin with IDatasetForm interface, define schema with validators:
- ondc_length_validator for field length limits
- convert_to_extras/convert_from_extras for storage
Example plugin included:
ckan.plugins = ondc ondc_dataset_example
API Actions:
Export ONDC attributes only
ckanapi action ondc_package_show id=
Search by ONDC attributes
ckanapi action ondc_package_search q=
Create/update with ONDC fields
ckanapi action package_create name= identifier= title= …
ckanapi action package_update id= identifier= …
ckanapi action package_patch id= identifier=
Documentation:
- ONDC Guide: https://www.datacommissioner.gov.au/sites/default/files/2023-12/ONDC-Guide-on-Metadata-Attributes-November-23.pdf
- Dataset schema example: https://github.com/DataShades/ckanext-ondc/blob/master/ckanext/ondc/dataset.yaml
Testing: pytest –ckan-ini=test.ini