You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CycloneDX 2.0 - Constrain Properties to Applicable Types #638
In CycloneDX 1.x, several properties are loosely defined and may appear on types where they are semantically invalid. For example:
cryptoProperties is intended only for cryptographic assets (e.g. cryptographic libraries, keys, algorithms), but is currently allowed on any component.
modelCard, evaluationMeasures, and other AI/ML-specific metadata may appear on non-AI components.
This flexibility was useful during schema evolution, but introduces:
Limiting AI/ML-specific fields (modelCard, evaluationMeasures, datasets, etc.) to components of type: machine-learning-model
This ticket is not limited to cryptoProperties or modelCard and may be applicable to other properties in v1.6 or which will be introduced in v1.7.
Proposal
Update the CycloneDX 2.0 schema to:
Apply oneOf or if/then/else constraints where schema logic permits
Scope optional fields to valid component.type or service.category values
As written, this is not a breaking change and the documentation in the current specification clearly states the purpose and when to use these properties. This ticket is for the enforcement of that behavior through minor changes in schema structure.
1. Apply `oneOf` or `if/then/else` constraints where schema logic permits
2. Scope optional fields to valid `component.type` or `service.category` values
i have a different approach: create a baseCompoentn, have special component types inheriting from it,
have the component be a oneOf of these special component types.
see #1024
Your current approach makes the spec messy with all those constraints glued on the thing.
Better give them names and extend from a base, instead of using conditional restrictions.
Activity
jkowalleck commentedon Aug 15, 2026
i have a different approach: create a
baseCompoentn, have special component types inheriting from it,have the
componentbe aoneOfof these special component types.see #1024
Your current approach makes the spec messy with all those constraints glued on the thing.
Better give them names and extend from a base, instead of using conditional restrictions.