- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 357
Description
Allow adding property schemas in referenced schemas.
That's one more solution to solving additionalProperties problem, somewhat similar to $params discussed with @handrews (#322). Also can be seen as implementation of a more generic #313.
Example:
Schema 2 explicitly allows extension (maybe it should be allowed by default and to prohibit extension you have to explicitly use "$extend": false (to prohibit extension of any keyword) or "$extend": {"properties": false} (to prohibit extension of properties only).
Schema 1 references schema 2 and extends properties.
{
  "$id": "schema1",
  "allOf": [{
    "$ref": "schema2",
    "$extend": {
      "properties": {
        "bar": {"type": "string"}
      }
    }
  }]
}  "$id": "schema2",
  "$extend": {"properties": true},
  "properties": {
    "foo": {"type": "string"}
  },
  "additionalProperties": false
}Probably other keywords can be extended in a similar way: patternProperties, required, dependencies, enum, type (with array syntax? more for consistency), items (with array syntax), anyOf, etc. - essentially any keyword that takes a structured value but not a schema.