networknt / json-schema-validator

A fast Java JSON schema validator that supports draft V4, V6, V7, V2019-09 and V2020-12
Apache License 2.0
836 stars 324 forks source link

JSON Schema validation failed against custom JSON Meta Schema after update 1.2.0 -> 1.3.0 #1012

Closed jtregl closed 6 months ago

jtregl commented 6 months ago

Hi, I have a custom JSON Meta Schema definition which I'm using to validate custom JSON Schema.

    "$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
    },
    "$dynamicAnchor": "meta",
    "title": "Core and Validation specifications meta-schema",
    "allOf": [
        {"$ref": "https://json-schema.org/draft/2020-12/schema"},
        {"$ref": "https://json-schema.org/draft/2020-12/meta/core"},
        {"$ref": "https://json-schema.org/draft/2020-12/meta/applicator"},
        {"$ref": "https://json-schema.org/draft/2020-12/meta/unevaluated"},
        {"$ref": "https://json-schema.org/draft/2020-12/meta/validation"},
        {"$ref": "https://json-schema.org/draft/2020-12/meta/meta-data"},
        {"$ref": "https://json-schema.org/draft/2020-12/meta/format-annotation"},
        {"$ref": "https://json-schema.org/draft/2020-12/meta/content"}
    ],
    "type": ["object"],
    "properties": {
        "my-property-required": {
            "type": "string"
        },
        "my-property": {
            "type": "string"
        }
    },
    "required": ["my-property-required"]
}

The key element here is the my-property-required marked as required. I'm validating following custom JSON Schema:

$id: https://jtregl.com/schemas/my-schema
$schema: https://jtregl.com/json-schemas/draft/2020-12/custom-schema

my-property-required: value

type: object
properties:
  booleanPropertyRequired:
    type: boolean
    title: A boolean required property
    default: true
  stringProperty:
    type: string
    title: A string property
    minLength: 2
    maxLength: 8
    default: string-value
  objectPropertyRequired:
    type: object
    title: An object property
    properties:
      nestedStringPropertyRequired:
        type: string
        title: Nested required string property
        minLength: 2
        maxLength: 8
        default: nested-string-value
      nestedIntProperty:
        type: integer
        title: Nested int property
        minimum: 0
        maximum: 10
      nestedObjectPropertyRequired:
        type: object
        title: Nested object property
        properties:
          nestedStringProperty:
            type: string
            title: Nested string property
    required:
      - nestedStringPropertyRequired
      - nestedObjectPropertyRequired
  numberArrayPropertyRequired:
    type: array
    items:
      type: number
    minItems: 2
    maxItems: 3
    default:
      - 1
      - 2
      - 3
  objectArrayProperty:
    type: array
    items:
      $ref: "#/properties/objectPropertyRequired"
required:
  - booleanPropertyRequired
  - objectPropertyRequired
  - numberArrayPropertyRequired

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:

$.properties.booleanPropertyRequired: required property 'my-property-required' not found
$.properties.stringProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedStringPropertyRequired: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedIntProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedObjectPropertyRequired.properties.nestedStringProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedObjectPropertyRequired.properties.nestedStringProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedObjectPropertyRequired: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedStringPropertyRequired: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedIntProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedObjectPropertyRequired.properties.nestedStringProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedObjectPropertyRequired.properties.nestedStringProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedObjectPropertyRequired: required property 'my-property-required' not found
$.properties.objectPropertyRequired: required property 'my-property-required' not found
$.properties.numberArrayPropertyRequired.items: required property 'my-property-required' not found
$.properties.numberArrayPropertyRequired.items: required property 'my-property-required' not found
$.properties.numberArrayPropertyRequired: required property 'my-property-required' not found
$.properties.objectArrayProperty.items: required property 'my-property-required' not found
$.properties.objectArrayProperty.items: required property 'my-property-required' not found
$.properties.objectArrayProperty: required property 'my-property-required' not found
$.properties.booleanPropertyRequired: required property 'my-property-required' not found
$.properties.stringProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedStringPropertyRequired: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedIntProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedObjectPropertyRequired.properties.nestedStringProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedObjectPropertyRequired.properties.nestedStringProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedObjectPropertyRequired: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedStringPropertyRequired: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedIntProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedObjectPropertyRequired.properties.nestedStringProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedObjectPropertyRequired.properties.nestedStringProperty: required property 'my-property-required' not found
$.properties.objectPropertyRequired.properties.nestedObjectPropertyRequired: required property 'my-property-required' not found
$.properties.objectPropertyRequired: required property 'my-property-required' not found
$.properties.numberArrayPropertyRequired.items: required property 'my-property-required' not found
$.properties.numberArrayPropertyRequired.items: required property 'my-property-required' not found
$.properties.numberArrayPropertyRequired: required property 'my-property-required' not found
$.properties.objectArrayProperty.items: required property 'my-property-required' not found
$.properties.objectArrayProperty.items: required property 'my-property-required' not found
$.properties.objectArrayProperty: required property 'my-property-required' not found

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

justin-tay commented 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"]
}
jtregl commented 6 months ago

Thank you for the clarification, I did not realise effect of the dynamicAnchor. It is working now as expected.