3.91.0
(feat): Add the opt-in deepObjectMapQueryParameters configuration option. When enabled, query parameters typed
as a map (e.g. map<string, string>, which is what an OpenAPI type: object + additionalProperties
schema imports as) are handed to the query builder and serialized in deepObject form
(?metadata[env]=prod) instead of being JSON-stringified (?metadata=%7B%22env%22...). Maps whose
values are objects, nested maps, lists, sets, or date-times are supported too: with the serde layer
enabled they are run through the generated schema first, so nested keys use wire names, sets become
arrays, and dates are ISO strings (?metadata[env][created_at]=2026-09-04T00:00:00.000Z). Defaults to
false, so existing SDKs are unaffected.
Maps with unknown values (an OpenAPI additionalProperties: true import) are rejected at
generation time. There is no schema to normalize such a value against, so a non-plain object like a
Date or a Set would contribute no enumerable keys and be dropped from the query string with no
error. Rather than emit an SDK that silently loses data, generation fails:
One other behaviour to be aware of, inherent to deepObject encoding: an empty map is omitted from the
query string entirely, where it previously serialized as ?key=%7B%7D. There are no keys to explode,
so nothing is emitted.
Query parameters explicitly declared explode: false keep their existing encoding; deepObject form is
only applied where explode is true or unset.