Open
Description
If a schema is invalid, it will cause a oneOf to fail instead of failing on its own. I discovered this while thinking optional
was a valid thing.
The below is valid except I've added optional
to Dog
. The failure is now On instance['paths']['/pets']['patch']['requestBody']
instead of the expected ['components']['schemas']['Dog']
.
paths:
/pets:
patch:
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/Cat'
- $ref: '#/components/schemas/Dog'
responses:
'200':
description: Updated
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/Cat'
- $ref: '#/components/schemas/Dog'
components:
schemas:
Dog:
type: object
optional: [ "bark" ]
properties:
bark:
type: boolean
breed:
type: string
enum: [Dingo, Husky, Retriever, Shepherd]
Cat:
type: object
properties:
hunts:
type: boolean
age:
type: integer
$ docker run -v $PWD/simple.yaml:/openapi.yaml --rm p1c2u/openapi-spec-validator /openapi.yaml
{'content': {'application/json': {'schema': {'oneOf': [{'$ref': '#/components/schemas/Cat', 'x-scope': ['file:///openapi.yaml']}, {'$ref':'#/components/schemas/Dog', 'x-scope': ['file:///openapi.yaml']}]}}}} is not valid under any of the given schemas
Failed validating 'oneOf' in schema['properties']['paths']['patternProperties']['^\\/']['patternProperties']['^(get|put|post|delete|options|head|patch|trace)$']['properties']['requestBody']:
{'oneOf': [{'$ref': '#/definitions/RequestBody'},
{'$ref': '#/definitions/Reference'}]}
On instance['paths']['/pets']['patch']['requestBody']:
{'content': {'application/json': {'schema': {'oneOf': [{'$ref': '#/components/schemas/Cat',
'x-scope': ['file:///openapi.yaml']},
{'$ref': '#/components/schemas/Dog',
'x-scope': ['file:///openapi.yaml']}]}}}}
Metadata
Metadata
Assignees
Labels
No labels