APIDevTools / swagger-cli

Swagger 2.0 and OpenAPI 3.0 command-line tool
https://apitools.dev/swagger-cli
MIT License
516 stars 68 forks source link

Validation of composite keywords (anyOf, oneOf, allOf) #82

Open raoulkent opened 2 years ago

raoulkent commented 2 years ago

In a project that I am working on, we have in our OASv3 API specification the following issue: We wish to allow the input of some particular property to be a string with either the format date or date-time.

Currently, our specification looks as follows:

properties:
  foo:
    type: string
    oneOf:
    - format: date
    - format: date-time

This validates correctly, however it does not work with the tooling we use for our Node application (oas-tools). Looking at the source code it was clear that it needed modifying. Changing it to:

properties:
  foo:
    oneOf:
    - type: string
      format: date
    - type: string
      format: date-time

This works well with the tooling.

However, it is unclear to me whether one or both are valid from an OASv3 standpoint. From what I can gather from OASv3 data types. Quote: "Primitives have an optional modifier property: format." If this is the case, should not the first example fail validation?

If possible, could you help me verify the validity of the two examples above? And if the above example is invalid (as it lacks the type) then there may be a need to change the validation logic.

Thank you.

raoulkent commented 2 years ago

Of course, if there are issues with either the specification or oas-tools I will proceed by raising the issue with the correct group.