swagger-spec-compatibility icon indicating copy to clipboard operation
swagger-spec-compatibility copied to clipboard

Implement detection rules for adding / removing x-nullable attribute

Open macisamuele opened this issue 4 years ago • 0 comments

Changing the nullability of an object or property might lead to backward incompatible specs.

For easier understanding we can use the following example

definitions:
  model:
    type: object
    x-model: Model
    properties:
      prop:
        type: string

with the above example we should consider {"prop": "a"} or {} as valid Model and {"prop": null} as invalid. But adding x-model: true into prop property it makes {"prop": null} a valid Model.

This change is:

  • backward compatible if the object is used in requests parameters, as old clients would continue to send Model instances
  • backward incompatible if the object is used in responses, as old clients might start receiving null values which were not supposed to receive

The objective of this issue is to track the implementation of two complementary rules

  • add x-nullable into response models
  • removing x-nullable from request models

Internal reference: CORESERV-9265

macisamuele avatar Feb 13 '20 09:02 macisamuele