spec-json-schemas
spec-json-schemas copied to clipboard
[BUG] Schemas without `$id` will fail validation on spec-compliant JSON Schema validators
Describe the bug.
Consider this concise variant of schemas/1.0.0-without-$id.json
:
{
"id": "http://asyncapi.com/definitions/1.0.0/asyncapi.json",
"$schema": "http://json-schema.org/draft-04/schema",
...
"properties": {
...
"externalDocs": {
"$ref": "#/definitions/externalDocs"
},
...
},
"definitions": {
"vendorExtension": {
"id": "http://asyncapi.com/definitions/1.0.0/vendorExtension.json"
...
},
"externalDocs": {
"id": "http://asyncapi.com/definitions/1.0.0/externalDocs.json",
...
"patternProperties": {
"^x-": {
"$ref": "#/definitions/vendorExtension"
}
}
}
}
}
Under a compliant implementation, the $ref
at /definitions/externalDocs/patternProperties/^x-/$ref
will resolve against the identifier at /definitions/externalDocs/id
, leading to /definitions/externalDocs/definitions/vendorExtension
instead of /definitions/vendorExtension
as expected.
Expected behavior
When producing these schema versions without $id
, I think you should actually remove the nested identifiers. That way it works for implementations that don't support $id
(like Visual Studio Code) and for compliant implementations too.
Screenshots
None
How to Reproduce
Try to perform validation using schemas/1.0.0-without-$id.json
🥦 Browser
None
👀 Have you checked for similar open issues?
- [X] I checked and didn't find similar issue
🏢 Have you read the Contributing Guidelines?
- [X] I have read the Contributing Guidelines
Are you willing to work on this issue ?
Yes I am willing to submit a PR!