alterschema
v1.1.3
Published
Convert between schema specifications
Downloads
130,152
Maintainers
Readme
alterschema
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 to JSON Schema 2020-12 | | draft7 | 2019-09 | Lossless | Full | JSON Schema Draft 7 to JSON Schema 2019-09 | | draft6 | draft7 | Lossless | Full | JSON Schema Draft 6 to JSON Schema Draft 7 | | draft4 | draft6 | Lossless | Full | JSON Schema Draft 4 to JSON Schema Draft 6 | | draft3 | draft4 | Lossless | Minimal [^1] | JSON Schema Draft 3 to JSON Schema Draft 4 |
[^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 from
draft6
to 2019-09
implies transforming draft6
to draft7
and draft7
to
2019-09
.
Bindings
JavaScript
// (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 the
// `from` and `to` string parameters.
const result = await alterschema({ ... }, '2019-09', '2020-12')
console.log(result)
Command-line tool
# (1) Install globally through npm
npm install --global alterschema
# (2) Run the command-line tool
alterschema --from <from> --to <to> path/to/schema.json
Others
We accept contributions to implement alterschema
in any programming language.
To produce an alterschema
implementation, your programming language of choice
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.