Warning
This project is a legacy experiment and is no longer maintained. It has
been superseded by the upgrade command in the Sourcemeta JSON Schema
CLI. Please refer to the
upgrade command
documentation
for the current, supported way to transform JSON Schema documents across
versions of the specification.
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
| 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 |
Transformations are transitively applied. For example, transforming from
draft6 to 2019-09 implies transforming draft6 to draft7 and draft7 to
2019-09.
// (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)# (1) Install globally through npm
npm install --global alterschema
# (2) Run the command-line tool
alterschema --from <from> --to <to> path/to/schema.jsonWe 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.
Special thanks to @gregdeniss for curating the initial set of upgrade rules.
Footnotes
-
This is a heavy work-in-progress. Subscribe to https://github.com/sourcemeta/alterschema/issues/83 for the latest updates. ↩