diff --git a/rules/from-draft3/to-draft4/001-ref-and-adjecent-keywords-present.json b/rules/from-draft3/to-draft4/001-ref-and-adjecent-keywords-present.json new file mode 100644 index 0000000..bbb03f4 --- /dev/null +++ b/rules/from-draft3/to-draft4/001-ref-and-adjecent-keywords-present.json @@ -0,0 +1,10 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "$ref" }, + { "operation": "type-is", "path": [ {} ], "value": [ "array", "booelan", "integer", "number", "object", "string" ] } + ], + "transform": [ + { "operation": "prefix-until-unique", "path": [ {} ], "value": "x-" } + ] +} diff --git a/rules/from-draft3/to-draft4/002-ref-and-x-ref-present.json b/rules/from-draft3/to-draft4/002-ref-and-x-ref-present.json new file mode 100644 index 0000000..5e482fa --- /dev/null +++ b/rules/from-draft3/to-draft4/002-ref-and-x-ref-present.json @@ -0,0 +1,10 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "$ref" }, + { "operation": "has-key", "path": [], "value": "x-$ref" } + ], + "transform": [ + { "operation": "prefix-until-unique", "path": [ "x-$ref" ], "value": "x-" } + ] +} diff --git a/rules/from-draft3/to-draft4/003-correct-sideeffects-ref-transform.json b/rules/from-draft3/to-draft4/003-correct-sideeffects-ref-transform.json new file mode 100644 index 0000000..56ba6d3 --- /dev/null +++ b/rules/from-draft3/to-draft4/003-correct-sideeffects-ref-transform.json @@ -0,0 +1,9 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "x-$ref" } + ], + "transform": [ + { "operation": "move", "to": [ "$ref" ], "from": [ "x-$ref" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/004-unknown-in-previous-draft-anyOf.json b/rules/from-draft3/to-draft4/004-unknown-in-previous-draft-anyOf.json new file mode 100644 index 0000000..7d21b7d --- /dev/null +++ b/rules/from-draft3/to-draft4/004-unknown-in-previous-draft-anyOf.json @@ -0,0 +1,9 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "anyOf" } + ], + "transform": [ + { "operation": "prefix-until-unique", "path": [ "anyOf" ], "value": "x-" } + ] +} diff --git a/rules/from-draft3/to-draft4/005-unknown-in-previous-draft-allOf.json b/rules/from-draft3/to-draft4/005-unknown-in-previous-draft-allOf.json new file mode 100644 index 0000000..5be6d9b --- /dev/null +++ b/rules/from-draft3/to-draft4/005-unknown-in-previous-draft-allOf.json @@ -0,0 +1,9 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "allOf" } + ], + "transform": [ + { "operation": "prefix-until-unique", "path": [ "allOf" ], "value": "x-" } + ] +} diff --git a/rules/from-draft3/to-draft4/006-unknown-in-previous-draft-oneOf.json b/rules/from-draft3/to-draft4/006-unknown-in-previous-draft-oneOf.json new file mode 100644 index 0000000..6fe5307 --- /dev/null +++ b/rules/from-draft3/to-draft4/006-unknown-in-previous-draft-oneOf.json @@ -0,0 +1,9 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "oneOf" } + ], + "transform": [ + { "operation": "prefix-until-unique", "path": [ "oneOf" ], "value": "x-" } + ] +} diff --git a/rules/from-draft3/to-draft4/007-unknown-in-previous-draft-not.json b/rules/from-draft3/to-draft4/007-unknown-in-previous-draft-not.json new file mode 100644 index 0000000..9246f09 --- /dev/null +++ b/rules/from-draft3/to-draft4/007-unknown-in-previous-draft-not.json @@ -0,0 +1,9 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "not" } + ], + "transform": [ + { "operation": "prefix-until-unique", "path": [ "not" ], "value": "x-" } + ] +} diff --git a/rules/from-draft3/to-draft4/008-unknown-in-previous-draft-definitions.json b/rules/from-draft3/to-draft4/008-unknown-in-previous-draft-definitions.json new file mode 100644 index 0000000..f92b0c8 --- /dev/null +++ b/rules/from-draft3/to-draft4/008-unknown-in-previous-draft-definitions.json @@ -0,0 +1,9 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "definitions" } + ], + "transform": [ + { "operation": "prefix-until-unique", "path": [ "definitions" ], "value": "x-" } + ] +} diff --git a/rules/from-draft3/to-draft4/009-unknown-in-previous-draft-maxProperties.json b/rules/from-draft3/to-draft4/009-unknown-in-previous-draft-maxProperties.json new file mode 100644 index 0000000..9ba50c0 --- /dev/null +++ b/rules/from-draft3/to-draft4/009-unknown-in-previous-draft-maxProperties.json @@ -0,0 +1,9 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "maxProperties" } + ], + "transform": [ + { "operation": "prefix-until-unique", "path": [ "maxProperties" ], "value": "x-" } + ] +} diff --git a/rules/from-draft3/to-draft4/010-unknown-in-previous-draft-minProperties.json b/rules/from-draft3/to-draft4/010-unknown-in-previous-draft-minProperties.json new file mode 100644 index 0000000..4a05db5 --- /dev/null +++ b/rules/from-draft3/to-draft4/010-unknown-in-previous-draft-minProperties.json @@ -0,0 +1,9 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "minProperties" } + ], + "transform": [ + { "operation": "prefix-until-unique", "path": [ "minProperties" ], "value": "x-" } + ] +} diff --git a/rules/from-draft3/to-draft4/011-schema.json b/rules/from-draft3/to-draft4/011-schema.json new file mode 100644 index 0000000..24a47fa --- /dev/null +++ b/rules/from-draft3/to-draft4/011-schema.json @@ -0,0 +1,10 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "$schema" }, + { "operation": "match-pattern", "path": [ "$schema" ], "value": "^http[s]?://json-schema.org/draft-03/schema[#]?$" } + ], + "transform": [ + { "operation": "replace", "path": [ "$schema" ], "value": "http://json-schema.org/draft-04/schema#" } + ] +} diff --git a/rules/from-draft3/to-draft4/012-type-has-value-equals-any.json b/rules/from-draft3/to-draft4/012-type-has-value-equals-any.json new file mode 100644 index 0000000..123bd35 --- /dev/null +++ b/rules/from-draft3/to-draft4/012-type-has-value-equals-any.json @@ -0,0 +1,10 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "type" }, + { "operation": "equals", "path": [ "type" ], "value": "any" } + ], + "transform": [ + { "operation": "remove", "path": [ "type" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/013-type-has-any-in-its-array.json b/rules/from-draft3/to-draft4/013-type-has-any-in-its-array.json new file mode 100644 index 0000000..a32dbdc --- /dev/null +++ b/rules/from-draft3/to-draft4/013-type-has-any-in-its-array.json @@ -0,0 +1,11 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "type" }, + { "operation": "type-is", "path": [ "type" ], "value": "array" }, + { "operation": "equals", "path": [ "type", {} ], "value": "any" } + ], + "transform": [ + { "operation": "remove", "path": [ "type" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/014-type-has-atleast-one-object-in-its-array-anyOf-absent.json b/rules/from-draft3/to-draft4/014-type-has-atleast-one-object-in-its-array-anyOf-absent.json new file mode 100644 index 0000000..1c645bb --- /dev/null +++ b/rules/from-draft3/to-draft4/014-type-has-atleast-one-object-in-its-array-anyOf-absent.json @@ -0,0 +1,12 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "type" }, + { "operation": "not-has-key", "path": [], "value": "anyOf" }, + { "operation": "type-is", "path": [ "type" ], "value": "array" }, + { "operation": "contains-type", "path": [ "type" ], "value": "object" } + ], + "transform": [ + { "operation": "add", "path": [ "anyOf" ], "value": [] } + ] +} diff --git a/rules/from-draft3/to-draft4/015-type-has-objects-and-strings-in-its-array-initialize.json b/rules/from-draft3/to-draft4/015-type-has-objects-and-strings-in-its-array-initialize.json new file mode 100644 index 0000000..f8596ec --- /dev/null +++ b/rules/from-draft3/to-draft4/015-type-has-objects-and-strings-in-its-array-initialize.json @@ -0,0 +1,13 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "type" }, + { "operation": "type-is", "path": [ "type" ], "value": "array" }, + { "operation": "contains-type", "path": [ "type" ], "value": "object" }, + { "operation": "contains-type", "path": [ "type" ], "value": "string" } + ], + "transform": [ + { "operation": "add", "path": [ "anyOf", "-" ], "value": { "type": [] } }, + { "operation": "add", "path": [ "type", "-" ], "value": true } + ] +} diff --git a/rules/from-draft3/to-draft4/017-type-has-objects-in-its-array.json b/rules/from-draft3/to-draft4/017-type-has-objects-in-its-array.json new file mode 100644 index 0000000..11edcd4 --- /dev/null +++ b/rules/from-draft3/to-draft4/017-type-has-objects-in-its-array.json @@ -0,0 +1,12 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "type" }, + { "operation": "type-is", "path": [ "type" ], "value": "array" }, + { "operation": "has-key", "path": [], "value": "anyOf" }, + { "operation": "type-is", "path": [ "type", {} ], "value": "object" } + ], + "transform": [ + { "operation": "remove-and-append", "to": [ "anyOf" ], "from": [ "type", {} ] } + ] +} diff --git a/rules/from-draft3/to-draft4/018-type-has-objects-and-strings-in-its-array.json b/rules/from-draft3/to-draft4/018-type-has-objects-and-strings-in-its-array.json new file mode 100644 index 0000000..6f7b851 --- /dev/null +++ b/rules/from-draft3/to-draft4/018-type-has-objects-and-strings-in-its-array.json @@ -0,0 +1,12 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "type" }, + { "operation": "type-is", "path": [ "type" ], "value": "array" }, + { "operation": "contains-type", "path": [ "type" ], "value": "object" }, + { "operation": "type-is", "path": [ "type", {} ], "value": "string" } + ], + "transform": [ + { "operation": "remove", "path": [ "type", {} ] } + ] +} diff --git a/rules/from-draft3/to-draft4/019-type-has-boolean-in-its-array.json b/rules/from-draft3/to-draft4/019-type-has-boolean-in-its-array.json new file mode 100644 index 0000000..db34e12 --- /dev/null +++ b/rules/from-draft3/to-draft4/019-type-has-boolean-in-its-array.json @@ -0,0 +1,11 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "type" }, + { "operation": "type-is", "path": [ "type" ], "value": "array" }, + { "operation": "contains-type", "path": [ "type" ], "value": "boolean" } + ], + "transform": [ + { "operation": "remove", "path": [ "type" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/020-type-is-an-empty-array.json b/rules/from-draft3/to-draft4/020-type-is-an-empty-array.json new file mode 100644 index 0000000..461ba9c --- /dev/null +++ b/rules/from-draft3/to-draft4/020-type-is-an-empty-array.json @@ -0,0 +1,10 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "type" }, + { "operation": "size-equals", "path": [ "type" ], "value": 0 } + ], + "transform": [ + { "operation": "remove", "path": [ "type" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/021-disallow-has-value-equals-any.json b/rules/from-draft3/to-draft4/021-disallow-has-value-equals-any.json new file mode 100644 index 0000000..4e98330 --- /dev/null +++ b/rules/from-draft3/to-draft4/021-disallow-has-value-equals-any.json @@ -0,0 +1,11 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "disallow" }, + { "operation": "equals", "path": [ "disallow" ], "value": "any" } + ], + "transform": [ + { "operation": "add", "path": [ "not" ], "value": {} }, + { "operation": "remove", "path": [ "disallow" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/022-disallow-has-any-in-its-array.json b/rules/from-draft3/to-draft4/022-disallow-has-any-in-its-array.json new file mode 100644 index 0000000..bc3fb76 --- /dev/null +++ b/rules/from-draft3/to-draft4/022-disallow-has-any-in-its-array.json @@ -0,0 +1,11 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "disallow" }, + { "operation": "equals", "path": [ "disallow", {} ], "value": "any" } + ], + "transform": [ + { "operation": "add", "path": [ "not" ], "value": {} }, + { "operation": "remove", "path": [ "disallow" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/023-disallow-has-atleast-one-object-in-its-array-initialize-allOf.json b/rules/from-draft3/to-draft4/023-disallow-has-atleast-one-object-in-its-array-initialize-allOf.json new file mode 100644 index 0000000..bd629f8 --- /dev/null +++ b/rules/from-draft3/to-draft4/023-disallow-has-atleast-one-object-in-its-array-initialize-allOf.json @@ -0,0 +1,12 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "disallow" }, + { "operation": "not-has-key", "path": [], "value": "allOf" }, + { "operation": "type-is", "path": [ "disallow" ], "value": "array" }, + { "operation": "contains-type", "path": [ "disallow" ], "value": "object" } + ], + "transform": [ + { "operation": "add", "path": [ "allOf" ], "value": [] } + ] +} diff --git a/rules/from-draft3/to-draft4/024-disallow-has-atleast-one-object-in-its-array.json b/rules/from-draft3/to-draft4/024-disallow-has-atleast-one-object-in-its-array.json new file mode 100644 index 0000000..ceef65e --- /dev/null +++ b/rules/from-draft3/to-draft4/024-disallow-has-atleast-one-object-in-its-array.json @@ -0,0 +1,13 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "disallow" }, + { "operation": "has-key", "path": [], "value": "allOf" }, + { "operation": "type-is", "path": [ "disallow" ], "value": "array" }, + { "operation": "type-is", "path": [ "disallow", {} ], "value": "object" } + ], + "transform": [ + { "operation": "add", "path": [ "allOf", "-" ], "value": { "not": "temp"} }, + { "operation": "move", "to": [ "allOf", "-", "not" ], "from": [ "disallow", {} ] } + ] +} diff --git a/rules/from-draft3/to-draft4/025-disallow-is-an-array-of-strings-allOf-present.json b/rules/from-draft3/to-draft4/025-disallow-is-an-array-of-strings-allOf-present.json new file mode 100644 index 0000000..f895e42 --- /dev/null +++ b/rules/from-draft3/to-draft4/025-disallow-is-an-array-of-strings-allOf-present.json @@ -0,0 +1,14 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "disallow" }, + { "operation": "type-is", "path": [ "disallow" ], "value": "array" }, + { "operation": "contains-type", "path": [ "disallow" ], "value": "string" }, + { "operation": "has-key", "path": [], "value": "allOf" } + ], + "transform": [ + { "operation": "add", "path": [ "allOf", "-" ], "value": { "not": "temp" } }, + { "operation": "add", "path": [ "allOf", "-", "not" ], "value": { "type": "temp" } }, + { "operation": "move", "to": [ "allOf", "-", "not", "type" ], "from": [ "disallow" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/026-disallow-is-an-array-of-strings-allOf-absent.json b/rules/from-draft3/to-draft4/026-disallow-is-an-array-of-strings-allOf-absent.json new file mode 100644 index 0000000..ba1e855 --- /dev/null +++ b/rules/from-draft3/to-draft4/026-disallow-is-an-array-of-strings-allOf-absent.json @@ -0,0 +1,13 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "disallow" }, + { "operation": "type-is", "path": [ "disallow" ], "value": "array" }, + { "operation": "contains-type", "path": [ "disallow" ], "value": "string" }, + { "operation": "not-has-key", "path": [], "value": "allOf" } + ], + "transform": [ + { "operation": "add", "path": [ "allOf" ], "value": [ { "not": { "type": "temp" } } ] }, + { "operation": "move", "to": [ "allOf", "-", "not", "type" ], "from": [ "disallow" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/027-disallow-is-an-empty-array.json b/rules/from-draft3/to-draft4/027-disallow-is-an-empty-array.json new file mode 100644 index 0000000..b983448 --- /dev/null +++ b/rules/from-draft3/to-draft4/027-disallow-is-an-empty-array.json @@ -0,0 +1,11 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "disallow" }, + { "operation": "type-is", "path": [ "disallow" ], "value": "array" }, + { "operation": "size-equals", "path": [ "disallow" ], "value": 0 } + ], + "transform": [ + { "operation": "remove", "path": [ "disallow" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/028-dependencies-children-have-type-string.json b/rules/from-draft3/to-draft4/028-dependencies-children-have-type-string.json new file mode 100644 index 0000000..c79cbc4 --- /dev/null +++ b/rules/from-draft3/to-draft4/028-dependencies-children-have-type-string.json @@ -0,0 +1,10 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "dependencies" }, + { "operation": "type-is", "path": [ "dependencies", {} ], "value": "string" } + ], + "transform": [ + { "operation": "remove-and-append", "from": [ "dependencies", {} ], "to": [ "dependencies", {} ] } + ] +} diff --git a/rules/from-draft3/to-draft4/029-divisiblyBy.json b/rules/from-draft3/to-draft4/029-divisiblyBy.json new file mode 100644 index 0000000..3d67ca6 --- /dev/null +++ b/rules/from-draft3/to-draft4/029-divisiblyBy.json @@ -0,0 +1,10 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "divisibleBy" } + ], + "transform": [ + { "operation": "replace-with-absolute", "path": [ "divisibleBy" ] }, + { "operation": "move", "to": [ "multipleOf" ], "from": [ "divisibleBy" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/030-extends-is-an-array-allOf-absent.json b/rules/from-draft3/to-draft4/030-extends-is-an-array-allOf-absent.json new file mode 100644 index 0000000..fa78bfd --- /dev/null +++ b/rules/from-draft3/to-draft4/030-extends-is-an-array-allOf-absent.json @@ -0,0 +1,12 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "extends" }, + { "operation": "type-is", "path": [ "extends" ], "value": "array" }, + { "operation": "type-is", "path": [ "extends", {} ], "value": "object" }, + { "operation": "not-has-key", "path": [], "value": "allOf" } + ], + "transform": [ + { "operation": "add", "path": [ "allOf" ], "value": [] } + ] +} diff --git a/rules/from-draft3/to-draft4/031-extends-is-an-array-allOf-present.json b/rules/from-draft3/to-draft4/031-extends-is-an-array-allOf-present.json new file mode 100644 index 0000000..df2c845 --- /dev/null +++ b/rules/from-draft3/to-draft4/031-extends-is-an-array-allOf-present.json @@ -0,0 +1,12 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "extends" }, + { "operation": "type-is", "path": [ "extends" ], "value": "array" }, + { "operation": "type-is", "path": [ "extends", {} ], "value": "object" }, + { "operation": "has-key", "path": [], "value": "allOf" } + ], + "transform": [ + { "operation": "remove-and-append", "to": [ "allOf" ], "from": [ "extends", {} ] } + ] +} diff --git a/rules/from-draft3/to-draft4/032-extends-is-an-object-allOf-absent.json b/rules/from-draft3/to-draft4/032-extends-is-an-object-allOf-absent.json new file mode 100644 index 0000000..3494586 --- /dev/null +++ b/rules/from-draft3/to-draft4/032-extends-is-an-object-allOf-absent.json @@ -0,0 +1,12 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "extends" }, + { "operation": "type-is", "path": [ "extends" ], "value": "object" }, + { "operation": "not-has-key", "path": [], "value": "allOf" } + ], + "transform": [ + { "operation": "add", "path": [ "allOf" ], "value": [ "temp" ] }, + { "operation": "move", "to": [ "allOf", "-" ], "from": [ "extends" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/033-extends-is-an-object-allOf-present.json b/rules/from-draft3/to-draft4/033-extends-is-an-object-allOf-present.json new file mode 100644 index 0000000..c315a65 --- /dev/null +++ b/rules/from-draft3/to-draft4/033-extends-is-an-object-allOf-present.json @@ -0,0 +1,12 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "extends" }, + { "operation": "type-is", "path": [ "extends" ], "value": "object" }, + { "operation": "has-key", "path": [], "value": "allOf" } + ], + "transform": [ + { "operation": "add", "path": [ "allOf", "-" ], "value": "temp" }, + { "operation": "move", "to": [ "allOf", "-" ], "from": [ "extends" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/034-empty-extends-array.json b/rules/from-draft3/to-draft4/034-empty-extends-array.json new file mode 100644 index 0000000..da96ec5 --- /dev/null +++ b/rules/from-draft3/to-draft4/034-empty-extends-array.json @@ -0,0 +1,10 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "extends" }, + { "operation": "size-equals", "path": [ "extends" ], "value": 0 } + ], + "transform": [ + { "operation": "remove", "path": [ "extends" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/035-required-false-present-in-properties's-values.json b/rules/from-draft3/to-draft4/035-required-false-present-in-properties's-values.json new file mode 100644 index 0000000..ade57d9 --- /dev/null +++ b/rules/from-draft3/to-draft4/035-required-false-present-in-properties's-values.json @@ -0,0 +1,11 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "properties" }, + { "operation": "has-key", "path": [ "properties", {} ], "value": "required" }, + { "operation": "equals", "path": [ "properties", {}, "required" ], "value": false } + ], + "transform": [ + { "operation": "remove", "path": [ "properties", {}, "required" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/036-required-is-present-in-outer-schema.json b/rules/from-draft3/to-draft4/036-required-is-present-in-outer-schema.json new file mode 100644 index 0000000..48ad4d0 --- /dev/null +++ b/rules/from-draft3/to-draft4/036-required-is-present-in-outer-schema.json @@ -0,0 +1,9 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "required" } + ], + "transform": [ + { "operation": "replace", "path": [ "required" ], "value": [] } + ] +} diff --git a/rules/from-draft3/to-draft4/037-required-is-absent-in-outer-schema-and-required-true-in-properties.json b/rules/from-draft3/to-draft4/037-required-is-absent-in-outer-schema-and-required-true-in-properties.json new file mode 100644 index 0000000..ea647f6 --- /dev/null +++ b/rules/from-draft3/to-draft4/037-required-is-absent-in-outer-schema-and-required-true-in-properties.json @@ -0,0 +1,12 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "not-has-key", "path": [], "value": "required" }, + { "operation": "has-key", "path": [], "value": "properties" }, + { "operation": "has-key", "path": [ "properties", {} ], "value": "required" }, + { "operation": "equals", "path": [ "properties", {}, "required" ], "value": true } + ], + "transform": [ + { "operation": "add", "path": [ "required" ], "value": [] } + ] +} diff --git a/rules/from-draft3/to-draft4/038-required-true-present-in-properties's-values.json b/rules/from-draft3/to-draft4/038-required-true-present-in-properties's-values.json new file mode 100644 index 0000000..87e124d --- /dev/null +++ b/rules/from-draft3/to-draft4/038-required-true-present-in-properties's-values.json @@ -0,0 +1,12 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "properties" }, + { "operation": "has-key", "path": [ "properties", {} ], "value": "required" }, + { "operation": "equals", "path": [ "properties", {}, "required" ], "value": true } + ], + "transform": [ + { "operation": "append-property", "to": [ "required" ], "from": [ "properties", {} ] }, + { "operation": "remove", "path": [ "properties", {}, "required" ] } + ] +} diff --git a/rules/from-draft3/to-draft4/039-empty-required-array-in-outer-schema.json b/rules/from-draft3/to-draft4/039-empty-required-array-in-outer-schema.json new file mode 100644 index 0000000..976f76d --- /dev/null +++ b/rules/from-draft3/to-draft4/039-empty-required-array-in-outer-schema.json @@ -0,0 +1,10 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "required" }, + { "operation": "size-equals", "path": [ "required" ], "value": 0 } + ], + "transform": [ + { "operation": "remove", "path": [ "required" ] } + ] +} diff --git a/test/from-draft3/to-draft4/ref.json b/test/from-draft3/to-draft4/ref.json new file mode 100644 index 0000000..c75fda1 --- /dev/null +++ b/test/from-draft3/to-draft4/ref.json @@ -0,0 +1,31 @@ +[ + { + "title": "$ref present in schema, with adjacent keywords", + "from": { + "id": "http://example.com", + "properties": { + "foo": { + "$ref": "/bar", + "type": "string", + "id": "zoo" + }, + "bar": { + "id": "bar" + } + } + }, + "to": { + "id": "http://example.com", + "properties": { + "foo": { + "$ref": "/bar", + "x-type": "string", + "x-id": "zoo" + }, + "bar": { + "id": "bar" + } + } + } + } +]