Closed jtregl closed 6 months ago
1.3.0 added the proper support for $dynamicRef
and $dynamicAnchor
. You specified that $dynamicAnchor
meta
in your root. Using the hierarchical output format makes it more obvious what is happening.
{
"valid" : false,
"evaluationPath" : "",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "",
"details" : [ {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/booleanPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/stringProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
},
"details" : [ {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedStringPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedIntProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedObjectPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
},
"details" : [ {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedObjectPropertyRequired/properties/nestedStringProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedObjectPropertyRequired/properties/nestedStringProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
} ]
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedStringPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedIntProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedObjectPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
},
"details" : [ {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedObjectPropertyRequired/properties/nestedStringProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedObjectPropertyRequired/properties/nestedStringProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
} ]
} ]
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/numberArrayPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
},
"details" : [ {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/items/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/numberArrayPropertyRequired/items",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/items/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectArrayProperty/items",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/items/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/numberArrayPropertyRequired/items",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/items/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectArrayProperty/items",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
} ]
}, {
"valid" : false,
"evaluationPath" : "/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectArrayProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/booleanPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/stringProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
},
"details" : [ {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedStringPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedIntProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedObjectPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
},
"details" : [ {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedObjectPropertyRequired/properties/nestedStringProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedObjectPropertyRequired/properties/nestedStringProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
} ]
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedStringPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedIntProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedObjectPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
},
"details" : [ {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedObjectPropertyRequired/properties/nestedStringProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectPropertyRequired/properties/nestedObjectPropertyRequired/properties/nestedStringProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
} ]
} ]
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/numberArrayPropertyRequired",
"errors" : {
"required" : "required property 'my-property-required' not found"
},
"details" : [ {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/items/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/numberArrayPropertyRequired/items",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/0/$ref/allOf/1/$ref/properties/items/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectArrayProperty/items",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/items/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/numberArrayPropertyRequired/items",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef/allOf/2/$ref/properties/items/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectArrayProperty/items",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
} ]
}, {
"valid" : false,
"evaluationPath" : "/allOf/2/$ref/properties/properties/additionalProperties/$dynamicRef",
"schemaLocation" : "https://jtregl.com/json-schemas/draft/2020-12/custom-schema#",
"instanceLocation" : "/properties/objectArrayProperty",
"errors" : {
"required" : "required property 'my-property-required' not found"
}
} ]
}
The meta schema you want should be similar to the following
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://jtregl.com/json-schemas/draft/2020-12/custom-schema",
"$vocabulary": {
"https://json-schema.org/draft/2020-12/vocab/core": true,
"https://json-schema.org/draft/2020-12/vocab/applicator": true,
"https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
"https://json-schema.org/draft/2020-12/vocab/validation": true,
"https://json-schema.org/draft/2020-12/vocab/meta-data": true,
"https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
"https://json-schema.org/draft/2020-12/vocab/content": true
},
"title": "Core and Validation specifications meta-schema",
"allOf": [
{"$ref": "https://json-schema.org/draft/2020-12/schema"}
],
"type": ["object"],
"properties": {
"my-property-required": {
"type": "string"
},
"my-property": {
"type": "string"
}
},
"required": ["my-property-required"]
}
Thank you for the clarification, I did not realise effect of the dynamicAnchor. It is working now as expected.
Hi, I have a custom JSON Meta Schema definition which I'm using to validate custom JSON Schema.
The key element here is the my-property-required marked as required. I'm validating following custom JSON Schema:
The idea behind is to verify, that the my-property-required is present in the root of the custom JSON schema. When I try to validate it using 1.2.0 version of the library, everything is fine and the validation pass. But when I try to validate it in 1.3.0 (but same result is in all later version to 1.4.0 including), the validation failed on following error messages:
It does not make sense to me, why the my-property-required is considered mandatory for every field, even the primitive ones like integer or string.
In attachments are projects with unit tests for version 1.2.0 and 1.4.0. json-schema-test-120.zip json-schema-test-140.zip