Convert between schema specifications
npm install alterschemaalterschema
===========
This project implements a language-independent set of formal
transformations to
automatically transform JSON Schema documents across
versions of the specification.
**Try the web playground at:
https://alterschema.sourcemeta.com**
Coverage
--------
| From | To | Type | Status | Description |
|---------|---------|----------|--------------|------------------------------------------------------------------|
| 2019-09 | 2020-12 | Lossless | Full | JSON Schema [2019-09][2019-09] to JSON Schema [2020-12][2020-12] |
| draft7 | 2019-09 | Lossless | Full | JSON Schema [Draft 7][draft7] to JSON Schema [2019-09][2019-09] |
| draft6 | draft7 | Lossless | Full | JSON Schema [Draft 6][draft6] to JSON Schema [Draft 7][draft7] |
| draft4 | draft6 | Lossless | Full | JSON Schema [Draft 4][draft4] to JSON Schema [Draft 6][draft6] |
| draft3 | draft4 | Lossless | Minimal [^1] | JSON Schema [Draft 3][draft3] to JSON Schema [Draft 4][draft4] |
[^1]: This is a heavy work-in-progress. Subscribe to https://github.com/sourcemeta/alterschema/issues/83 for the latest updates.
Transformations are transitively applied. For example, transforming fromdraft6 to 2019-09 implies transforming draft6 to draft7 and draft7 to2019-09.
Bindings
--------
``js
// (1) Install by running "npm install --save alterschema"
const alterschema = require('alterschema')
// (2) alterschema(schema: JSON, from: string, to: string) -> JSON
// Transform the input document schema according to thefrom
// and to string parameters.
const result = await alterschema({ ... }, '2019-09', '2020-12')
console.log(result)
`
#### Command-line tool
`sh`(1) Install globally through npm
npm install --global alterschema(2) Run the command-line tool
alterschema --from
We accept contributions to implement alterschema in any programming language.alterschema` implementation, your programming language of choice
To produce an
must support a JSON Schema 2020-12 validator and a
JSON-e interpreter.
Acknowledgements
----------------
Special thanks to @gregdeniss for curating
the initial set of upgrade rules.
[2020-12]: https://json-schema.org/draft/2020-12/json-schema-core.html
[2019-09]: https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-02
[draft7]: https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-00
[draft6]: https://datatracker.ietf.org/doc/html/draft-wright-json-schema-01
[draft4]: https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-04
[draft3]: https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-03