Using required and allOf together
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
Research direction
Reproduce the schema using the request-validation path shown in openapi_core/validation/request/validators.py. Then trace validation through openapi_core/unmarshalling/schemas/unmarshallers.py and openapi_schema_validator/_validators.py, focusing on the required handling inside allOf. Done means the valid schema validates without the shown KeyError and still reports missing required properties correctly.
Written by the indexing model from the issue text.
Description
Hello,
We are using openapi-core to validate Django Requests.
When I use this syntax:
SaveRequest:
allOf:
- $ref: "#/definitions/Dog"
- required:
- breed
- name
I'm getting this error:
...
File "/Users/felix/Library/Caches/pypoetry/virtualenvs/button3d-iF01JEUe-py3.8/lib/python3.8/site-packages/openapi_core/validation/request/validators.py", line 204, in _get_body
body = self._unmarshal(media_type, casted)
File "/Users/felix/Library/Caches/pypoetry/virtualenvs/button3d-iF01JEUe-py3.8/lib/python3.8/site-packages/openapi_core/validation/request/validators.py", line 255, in _unmarshal
return super(RequestValidator, self)._unmarshal(
File "/Users/felix/Library/Caches/pypoetry/virtualenvs/button3d-iF01JEUe-py3.8/lib/python3.8/site-packages/openapi_core/validation/validators.py", line 66, in _unmarshal
return unmarshaller(value)
File "/Users/felix/Library/Caches/pypoetry/virtualenvs/button3d-iF01JEUe-py3.8/lib/python3.8/site-packages/openapi_core/unmarshalling/schemas/unmarshallers.py", line 49, in __call__
self.validate(value)
File "/Users/felix/Library/Caches/pypoetry/virtualenvs/button3d-iF01JEUe-py3.8/lib/python3.8/site-packages/openapi_core/unmarshalling/schemas/unmarshallers.py", line 61, in validate
errors = tuple(errors_iter)
File "/Users/felix/Library/Caches/pypoetry/virtualenvs/button3d-iF01JEUe-py3.8/lib/python3.8/site-packages/jsonschema/validators.py", line 328, in iter_errors
for error in errors:
File "/Users/felix/Library/Caches/pypoetry/virtualenvs/button3d-iF01JEUe-py3.8/lib/python3.8/site-packages/jsonschema/_validators.py", line 315, in allOf
for error in validator.descend(instance, subschema, schema_path=index):
File "/Users/felix/Library/Caches/pypoetry/virtualenvs/button3d-iF01JEUe-py3.8/lib/python3.8/site-packages/jsonschema/validators.py", line 344, in descend
for error in self.iter_errors(instance, schema):
File "/Users/felix/Library/Caches/pypoetry/virtualenvs/button3d-iF01JEUe-py3.8/lib/python3.8/site-packages/jsonschema/validators.py", line 328, in iter_errors
for error in errors:
File "/Users/felix/Library/Caches/pypoetry/virtualenvs/button3d-iF01JEUe-py3.8/lib/python3.8/site-packages/openapi_schema_validator/_validators.py", line 43, in required
prop_schema = schema['properties'][property]
According to this thread, it is a valid schema though:
https://github.com/OAI/OpenAPI-Specification/issues/1608
Also related issue:
https://github.com/p1c2u/openapi-core/issues/77
- Dominant language
- Python
- Stars
- 368
- Forks
- 140
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from python-openapi/openapi-core
-
kind/bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
python-openapi/openapi-core#1188 · 2 comments ·
-
kind/bug
Difficulty 3/5 1-2 days Newbie friendliness 68/100
python-openapi/openapi-core#1225 · 2 comments ·
-
kind/bug
Difficulty 3/5 1-2 days Newbie friendliness 76/100
python-openapi/openapi-core#1212 ·
-
[Bug]: Query parameter validation fails to match empty string when listed as a valid enum value Openkind/bug
Difficulty 3/5 1-2 days Newbie friendliness 68/100
python-openapi/openapi-core#1210 ·
-
kind/bug kind/bug/confirmed
Difficulty 3/5 1-2 days Newbie friendliness 58/100
python-openapi/openapi-core#1180 · 3 comments ·
All issues in python-openapi/openapi-core
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
learningequality/ricecooker#747 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
run-llama/llama_index#23199 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
KhronosGroup/glTF-Blender-IO#2769 ·