davishmcclurg / json_schemer

JSON Schema validator. Supports drafts 4, 6, 7, 2019-09, 2020-12, OpenAPI 3.0, and OpenAPI 3.1.
MIT License
399 stars 64 forks source link

Follow refs when finding default property values #175

Closed davishmcclurg closed 7 months ago

davishmcclurg commented 7 months ago

This resolves any ref_schema keywords ($ref, $dynamicRef, $recursiveRef) when looking for default keywords for insert_property_defaults. It follows the keyword order defined in the vocabulary ($ref first, then $dynamicRef/$recursiveRef depending on the meta schema) and searches depth-first (ie, follows a $ref chain until a leaf schema before moving on to a sibling $dynamicRef). The first default keyword found is used, meaning a $ref default can be overwritten by the including schema, eg:

{
  "properties": {
    "example": {
      "$ref": "#/$defs/ref",
      "default": "override!"
    }
  },
  "$defs": {
    "ref": {
      "default": "overridden"
    }
  }
}

Closes: https://github.com/davishmcclurg/json_schemer/issues/173