Skip to content

v3.2: edits to parameter sections#5196

Open
karenetheridge wants to merge 14 commits intoOAI:v3.2-devfrom
karenetheridge:ether/3.2-parameter-styles-more
Open

v3.2: edits to parameter sections#5196
karenetheridge wants to merge 14 commits intoOAI:v3.2-devfrom
karenetheridge:ether/3.2-parameter-styles-more

Conversation

@karenetheridge
Copy link
Member

Backport of #5122 from v3.3-dev, plus a few fixes from @valerii15298 in #5170.

Various fixes and wording clarifications to the sections discussing parameters.

  • schema changes are included in this pull request

this was added in commit 9739dfe, but now that the leading "?" has been
removed, this is no longer needed
namely: in=path, in=query, in=cookie+style=form,
but not in=header, in=querystring or in=cookie+style=cookie
and not in encoding objects where contentType is used (none of style, explode,
allowReserved are present)

this brings in some work that didn't get merged in OAI#4904
..and also fixes a bad $ref URI
@karenetheridge karenetheridge requested review from a team as code owners February 5, 2026 21:54
@karenetheridge karenetheridge changed the base branch from main to v3.2-dev February 5, 2026 21:54
… objects

- explode defaults were wrong for in: cookie, style: cookie, and for encoding object
- allowReserved defaults were wrong for encoding object

in parameter objects:
- explode: always false for "in: path", "in: header"
- explode: always true for "in: cookie" (both "style: form" and "style: cookie"
  default to "explode: true")
- explode: only true for "in: query" when "style: form" (the default style for
  this location)

in encoding objects:
- style: default is "form", but only when "explode" or "allowReserved" are present
- explode: default is true when "style: form" (the default style) and otherwise
  false, and not included at all unless "style" or "allowReserved" are present
- allowReserved: default is false, but only when "style" or "explode" are present

that is: when none of style, explode or allowReserved are present, "contentType"
is used (or a default is calculated), so none of style, explode or allowReserved
shall have default values
…ll defaults omitted

tested with:

$ openapi-validate --with-defaults tests/schema/pass/style-defaults.yaml
{
  "defaults" : {
    "/components/mediaTypes/encoding_object_defaults/encoding/allowReserved/explode" : true,
    "/components/mediaTypes/encoding_object_defaults/encoding/allowReserved/style" : "form",
    "/components/mediaTypes/encoding_object_defaults/encoding/explode/allowReserved" : false,
    "/components/mediaTypes/encoding_object_defaults/encoding/explode/style" : "form",
    "/components/mediaTypes/encoding_object_defaults/encoding/style_form/allowReserved" : false,
    "/components/mediaTypes/encoding_object_defaults/encoding/style_form/explode" : true,
    "/components/mediaTypes/encoding_object_defaults/encoding/style_spaceDelimited/allowReserved" : false,
    "/components/mediaTypes/encoding_object_defaults/encoding/style_spaceDelimited/explode" : false,
    "/components/parameters/cookie_cookie/deprecated" : false,
    "/components/parameters/cookie_cookie/explode" : true,
    "/components/parameters/cookie_cookie/required" : false,
    "/components/parameters/cookie_form/allowReserved" : false,
    "/components/parameters/cookie_form/deprecated" : false,
    "/components/parameters/cookie_form/explode" : true,
    "/components/parameters/cookie_form/required" : false,
    "/components/parameters/cookie_form/style" : "form",
    "/components/parameters/cookie_media_type/deprecated" : false,
    "/components/parameters/cookie_media_type/required" : false,
    "/components/parameters/header/allowReserved" : false,
    "/components/parameters/header/deprecated" : false,
    "/components/parameters/header/explode" : false,
    "/components/parameters/header/style" : "simple",
    "/components/parameters/path_label/allowReserved" : false,
    "/components/parameters/path_label/deprecated" : false,
    "/components/parameters/path_label/explode" : false,
    "/components/parameters/path_matrix/allowReserved" : false,
    "/components/parameters/path_matrix/deprecated" : false,
    "/components/parameters/path_matrix/explode" : false,
    "/components/parameters/path_media_type/deprecated" : false,
    "/components/parameters/path_simple/allowReserved" : false,
    "/components/parameters/path_simple/deprecated" : false,
    "/components/parameters/path_simple/explode" : false,
    "/components/parameters/path_simple/style" : "simple",
    "/components/parameters/query_deepObject/allowEmptyValue" : false,
    "/components/parameters/query_deepObject/allowReserved" : false,
    "/components/parameters/query_deepObject/deprecated" : false,
    "/components/parameters/query_deepObject/explode" : false,
    "/components/parameters/query_deepObject/required" : false,
    "/components/parameters/query_form/allowEmptyValue" : false,
    "/components/parameters/query_form/allowReserved" : false,
    "/components/parameters/query_form/deprecated" : false,
    "/components/parameters/query_form/explode" : true,
    "/components/parameters/query_form/required" : false,
    "/components/parameters/query_form/style" : "form",
    "/components/parameters/query_media_type/allowEmptyValue" : false,
    "/components/parameters/query_media_type/deprecated" : false,
    "/components/parameters/query_media_type/required" : false,
    "/components/parameters/query_pipeDelimited/allowEmptyValue" : false,
    "/components/parameters/query_pipeDelimited/allowReserved" : false,
    "/components/parameters/query_pipeDelimited/deprecated" : false,
    "/components/parameters/query_pipeDelimited/explode" : false,
    "/components/parameters/query_pipeDelimited/required" : false,
    "/components/parameters/query_spaceDelimited/allowEmptyValue" : false,
    "/components/parameters/query_spaceDelimited/allowReserved" : false,
    "/components/parameters/query_spaceDelimited/deprecated" : false,
    "/components/parameters/query_spaceDelimited/explode" : false,
    "/components/parameters/query_spaceDelimited/required" : false,
    "/jsonSchemaDialect" : "https://spec.openapis.org/oas/3.2/dialect/WORK-IN-PROGRESS",
    "/servers" : [
      {
        "url" : "/"
      }
    ]
  },
  "valid" : true
}

(executable is part of https://github.com/karenetheridge/OpenAPI-Modern)
For the Appendix C.4 example, "words" is said to not explode its values.
@karenetheridge karenetheridge force-pushed the ether/3.2-parameter-styles-more branch from 38fe590 to 1a12bf3 Compare February 6, 2026 01:13
@karenetheridge karenetheridge force-pushed the ether/3.2-parameter-styles-more branch from 1a12bf3 to 70feb2a Compare February 6, 2026 01:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants