bravado-core icon indicating copy to clipboard operation
bravado-core copied to clipboard

bravado-core does propagate x-nullable field in case of reference objects

Open macisamuele opened this issue 5 years ago • 0 comments

While working on #331 I've noticed that bravado-core has some custom logic to ensure that the x-nullable field is propagated in case of a reference object.

According to the JSON schema definition a reference object is meant to fully replace the current object with the referenced one. This means that siblings attributes of a reference objects can not be considered (the definition does not strictly define this behaviour, so the decision is delegated to the implementer).

I'm mentioning this as ensuring the propagation of x-nullable results in

  • additional custom code to handle in the library
  • possible lack of feature parity between usage of bravado_core.spec.Spec with internally_dereference_refs set to True or False
  • possible confusion on the users as certain vendor extension will be propagated and others not (ie. a schema like {'x-nullable': True, '$ref': '#/definitions/something', 'x-new': False} will have x-nullable propagated and x-new ignored)

My suggestion would be to remove this manual handling and to bump swagger-spec-validator to 2.4.0+ which adds a warning in case a sibling is identified into a reference object (https://github.com/Yelp/swagger_spec_validator/pull/107)

⚠️ : this might break clients, so addressing this issue needs a major release

macisamuele avatar May 23 '19 08:05 macisamuele