This document tracks changes to the catalog schema across versions. Use it as a reference when migrating datasets registered under an older schema version.
The active schema version is recorded on each dataset record as record_schema_version.
| Version | Status |
|---|---|
| v1.4.0 | Current — active, default for new registrations |
| v1.3.0 | Supported for read |
| v1.2.0 | Supported for read |
| v1.1.0 | Supported for read |
| v1.0.0 | Legacy — read only |
Status: Active. All new registrations default to this version. See
v1.4.0/schema.md.
- Data Asset:
storage_platformnow acceptsglobusas a valid value, andglobus://is recognized as alocation_urischeme. - Dataset:
metadata_schemais now alist[string](previously a single string), allowing multiple metadata schemas to apply to one dataset. - Data summary: new imaging fields
axes(list[json]of{ name, type, unit }),multiscales, andplatefor Zarr/imaging datasets. - Lineage Edge: new optional
metadatablock for recording processing algorithm name, pipeline version, transformation parameters, and similar context. - Collection: promoted to a multi-level provenance hierarchy (Study → Experiment →
Run).
collection_typenow acceptsstudy,experiment, andrunin addition topublication,training, andother. New optional fieldsmetadata,doi,license, andexternal_reference.
- Dataset signature:
versionandprojectare now required (alongsidecanonical_id). Updating any signature field tombstones the record, setsis_latest=false, and creates a new record with an incrementedrecord_version. - Governance: access classification is expressed via
access_scope(public/internal, defaulting tointernal). The free-formdata_sensitivityfield is no longer part of the governance block. - Collection: added explicit constraints — collections may not exceed 4 levels deep, and cycles are rejected at write time. A dataset may belong to multiple collection types simultaneously.
Status: Supported for read. New registrations should use v1.4.0.
DataSummaryMetadata.channel_normalization—ChannelNormalizationblock for recording per-dataset and per-timepoint intensity statistics across channels.dataset_statistics→IntensityStatistics(p1, p5, p95, p99, p95_p5, p99_p1, mean, std, median, iqr)timepoint_statistics→dict[str, IntensityStatistics]keyed by zero-based timepoint index string; must cover all timepoints if present.
ChannelMetadata.biological_annotation—BiologicalAnnotationsub-block per channel.biological_target,marker_type(endogenous_tag / live_cell_dye / fixed_dye / antibody),marker,cpg_labeled_structure,cpg_labeled_molecule
DataSummaryMetadata.dca_schema_version— DCA metadata schema version applied to the dataset.
DataSummaryMetadata.channelsentries now accept the fullChannelMetadatashape includingbiological_annotation. Previously onlyname,index, anddescriptionwere supported.
Status: Supported for read. New registrations should use v1.4.0.
DataSummaryMetadata.channels— list ofChannelMetadataentries describing per-channel properties.- Fields:
name,index,description,channel_type(fluorescence / chromogenic / labelfree / predicted)
- Fields:
DataSummaryMetadata.resolution—ResolutionMetadatablock withspatialandtemporalfor imaging datasets.DataSummaryMetadata.fov— field-of-view ID(s) for spatial/imaging datasets.DataSummaryMetadata.well— well ID(s) for plate-based experiments.DataSummaryMetadata.dimension— image dimension array (e.g.[Z, Y, X]).GovernanceMetadata.embargoed_until— ISO 8601 date field for embargoed datasets.
DataSummaryMetadata.read_length— now accepts either a plainintegeror adictmapping read lengths to counts (previously integer only).
Status: Supported for read. New registrations should use v1.4.0.
DatasetRequest.data_quality— optionalDataQualityChecksblock.checks_passed,checks_failed,checks_skipped(all accept any type)
DatasetRequest.cross_db_references— free-text field for external database references.DatasetRequest.doi— Digital Object Identifier field.GovernanceMetadata.is_external_reference— flag for datasets that reference external sources.SampleMetadata.development_stage— list of ontology entries for developmental stage.ExperimentMetadata.assay— list of ontology entries for assay type.DataSummaryMetadata.read_confidence— mean read quality score.
GovernanceMetadata.access_scope— now normalized to lowercase on ingest.tissueentries — extended with an optionaltypefield (e.g.primary,cell line). Previously tissue was a plain ontology entry.
Status: Legacy. Supported for read only.
First stable release of the dataset schema. Established the core structure:
- Identity fields:
canonical_id,version,projectas signature fields. - Display fields:
name,description,modality,dataset_type,is_latest. - Locations:
locations[]withDataAssetentries (location_uri,asset_type,encoding,size_bytes,checksum,checksum_alg,file_format,storage_platform,file_count). - Governance:
GovernanceMetadatawithlicense,access_scope,is_pii,is_phi,data_steward,data_owner. - Metadata envelope:
DatasetMetadatawithexperiment(sub_modality,machine_information,experimental_protocols),sample(organism,tissue,disease,perturbation,sample_parent,sample_preparation_protocols), anddata_summary(cell_count,read_count,read_length).
All schema versions to date are backward compatible: a payload valid under an older version remains valid under newer ones, with the exception of newly required fields.
- No breaking changes. Optionally add
data_quality,doi,cross_db_references. - Re-check
access_scopevalues — mixed-case values are normalized to lowercase on the next update.
- No breaking changes. For imaging datasets, consider populating
channels,resolution,dimension,well, andfovindata_summary. - To record a multi-length read distribution, switch
read_lengthto a dict (e.g.{"75": 1200000, "100": 3000000}).
- No breaking changes. For imaging datasets with channel data, consider adding
biological_annotationto eachChannelMetadataentry. - If intensity normalization statistics are available, populate
channel_normalization. Iftimepoint_statisticsis provided, it must cover every timepoint index present.
versionandprojectare now required. Records previously written without them must supply both on the next update; doing so changes the signature and creates a new record.- If a single-string
metadata_schemawas used, wrap it in a list. - For imaging/Zarr datasets, consider populating
axes,multiscales, andplate. - For collections, set
collection_typetostudy/experiment/runwhere the provenance hierarchy applies, and populateexternal_referencewhere an external equivalent exists. - The
data_sensitivitygovernance field is dropped; express public visibility viaaccess_scope.