I am trying to document with OpenAPI a query string which look like
filtered[0][id]=code&filtered[0][value]=12345
and contains a list of object with properties id
and value
.
My yaml
documentation looks like the following
parameters:
- name: filtered
in: query
description: filters to be applied
explode: true
style: deepObject
schema:
type: array
items:
properties:
id:
description: name of the field to be filtered
type: string
value:
description: value of the filter
type: object
The problem is the following: it looks like the style: deepObject
option works only for one level, and not at the second level where my objects actually are. That is, it expects a query string like
?sorted[0]=%7B%0A%20%20%22id%22%3A%20%22string%22%2C%0A%20%20%22value%22%3A%20true%0A%7D
with the object not serialized as an array with id
and value
keys.
Is there a way to solve this?
operationId is an optional unique string used to identify an operation. If provided, these IDs must be unique among all operations described in your API.
explode (true/false) specifies whether arrays and objects should generate separate parameters for each array item or object property.
This is not possible as of OpenAPI 3.1
OpenAPI 3.0/3.1 Specifications currently defines the deepObject
behavior only for simple objects (with primitive properties) such as
{
"id": 5,
"name": "Bob"
}
but not for arrays and not for nested objects.
Since the behavior for arrays and nested objects is not defined, there's really no way to describe your query string. Technically, the only way would be to define filtered[0][id]
, filtered[0][value]
, etc. as individual query parameters.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With