Versioning¶
This document describes the versioning strategy for Synthetic Open Schema.
API Versioning¶
Synthetic Open Schema uses semantic versioning for its API versions:
Version Format¶
API versions follow the format: v{MAJOR}[{STABILITY}]
Examples:
- v1 - Major version 1, stable
- v1beta1 - Major version 1, beta 1
- v1alpha1 - Major version 1, alpha 1
- v2 - Major version 2, stable
Stability Levels¶
Alpha (v1alpha1, v2alpha1, etc.):
- Early preview, subject to breaking changes
- No backward compatibility guarantees
- May be removed in future versions
- Not recommended for production use
Beta (v1beta1, v2beta1, etc.):
- Feature complete but may have minor changes
- Backward compatibility best effort
- API is relatively stable
- Suitable for testing and feedback
Stable (v1, v2, etc.):
- Production ready
- Strong backward compatibility guarantees
- Breaking changes only in new major versions
- Long-term support
Backward Compatibility¶
Within a Major Version¶
Within a stable major version (e.g., v1), changes MUST maintain backward compatibility:
Allowed Changes: - Adding new optional fields - Adding new check kinds - Adding new assertion types - Adding new operator types - Expanding allowed values for enums - Clarifying documentation
Prohibited Changes: - Removing fields - Changing field types - Making optional fields required - Changing field semantics - Removing check kinds - Removing operators
Between Major Versions¶
Major version changes (e.g., v1 → v2) MAY introduce breaking changes:
- Removed or renamed fields
- Changed field types or semantics
- Different validation rules
- Removed check kinds
Version Lifecycle¶
- Alpha: Experimental, may change significantly
- Beta: Feature complete, minor changes possible
- Stable: Production ready, long-term support
- Deprecated: Marked for removal, still supported
- Removed: No longer supported
Deprecation Policy¶
- Deprecation warnings MUST be provided at least one major version before removal
- Deprecated features MUST continue to work during the deprecation period
- Clear migration guides MUST be provided for deprecated features
Custom Extensions¶
Implementations MAY add custom check kinds under their own namespace:
Custom extensions: - MUST NOT conflict with standard check kinds - MUST use a company/organization domain as prefix - SHOULD follow the same versioning principles - MAY have different compatibility guarantees
Schema Evolution¶
JSON schemas are published in a separate repository: https://github.com/syntheticopenschema/schemas
Schemas are versioned alongside the API:
- v1.json corresponds to API version v1
- v1beta1.json corresponds to API version v1beta1
Schemas are generated from the reference implementation and published for tooling integration.