Skip to content

[Bug]: Schemas in query parameters don't work #1022

@j616

Description

@j616

Actual Behavior

Query parameters with schemas are ignored when Unmarshalling

Expected Behavior

Query parameters matching a query parameter with a schema should be included in Unmarshall results.

Steps to Reproduce

Schema:

openapi: 3.1.0 info: title: Example version: "0.0" servers: - url: 'http://example.com' paths: /: get: parameters: - name: tag.{name} in: query schema: type: object patternProperties: '^tag\.[A-Za-z0-9]+$': type: string pattern: '^[A-Za-z0-9]+$' additionalProperties: false - name: baz in: query schema: type: string

Python script:

from openapi_core import OpenAPI from openapi_core.contrib.requests import RequestsOpenAPIRequest from requests import Request import re oas = OpenAPI.from_file_path('./exampleOas.yaml') req = oas.unmarshal_request(RequestsOpenAPIRequest(Request( "GET", "http://example.com/", params={"tag.foo": "bar", "baz": "bat"}))) print(req) # Returns # RequestUnmarshalResult(errors=[], body=None, parameters=Parameters(query={'baz': 'bat'}, header={}, cookie={}, path={}), security={}) # Prove the regex works print(re.search(r"^tag\.[A-Za-z0-9]+$", "tag.foo")) # Returns # <re.Match object; span=(0, 7), match='tag.foo'>

OpenAPI Core Version

0.19.5

OpenAPI Core Integration

requests

Affected Area(s)

unmarshalling

References

Such a pattern is described here and I've had confirmation on the OpenAPI slack here that this is the current best approach to describing pattern-based query parameter names.

This may be related to #250 but isn't completely related as it should work with the query default style of form.

Example of the use case I have for this.

Anything else we need to know?

No response

Would you like to implement a fix?

None

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugIndicates an issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions