openapi-spec-validator icon indicating copy to clipboard operation
openapi-spec-validator copied to clipboard

Need of recursive properties check in validation

Open Jay-Gohil opened this issue 1 year ago • 0 comments

Some APIs contain nested schemas, and the current version of 0.7.1 openapi-spec-validator is unable catch the recursive properties. Below is an example of what can be achieved with a little tweak in the class SchemaValidator validation/keywords.py.

 nested_properties = []
        if "allOf" in schema:
            all_of = schema / "allOf"
            while True:
              for inner_schema in all_of:
                  yield from self(
                      inner_schema,
                      require_properties=False,
                  )
                  if "properties" not in inner_schema:
                      continue
                  inner_schema_props = inner_schema / "properties"
                  inner_schema_props_keys = inner_schema_props.keys()
                  nested_properties += list(inner_schema_props_keys)
              if "allOf" not in inner_schema:
                 break
              all_of = inner_schema / "allOf"

Jay-Gohil avatar Aug 08 '24 17:08 Jay-Gohil