Skip to content

v3.1: edits to parameter sections#5198

Open
karenetheridge wants to merge 10 commits intoOAI:v3.1-devfrom
karenetheridge:ether/3.1-parameter-styles-more
Open

v3.1: edits to parameter sections#5198
karenetheridge wants to merge 10 commits intoOAI:v3.1-devfrom
karenetheridge:ether/3.1-parameter-styles-more

Conversation

@karenetheridge
Copy link
Member

@karenetheridge karenetheridge commented Feb 6, 2026

Backport of #5122 from v3.3-dev and #5196 from from v3.2-dev, adjusted with the following changes for 3.1:

  • allowReserved is only permitted in query parameters and the encoding object (not also in in: path and in: cookie, style: form).
  • removed any references to in: querystring and style: cookie

Various fixes and wording clarifications to the sections discussing parameters.

  • schema changes are included in this pull request

@karenetheridge karenetheridge requested review from a team as code owners February 6, 2026 20:48
@karenetheridge karenetheridge force-pushed the ether/3.1-parameter-styles-more branch from 0bfe8b3 to b6aad67 Compare February 6, 2026 21:12
…ts with in:query

(this was changed in 3.2.0 to allow it wherever percent-encoding is done)
… objects

- explode defaults were wrong 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" ("style: form" is the only option, and
  defaults 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/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/encoding_object_defaults/content/encoding_object_defaults/encoding/allowReserved/explode" : true,
    "/components/parameters/encoding_object_defaults/content/encoding_object_defaults/encoding/allowReserved/style" : "form",
    "/components/parameters/encoding_object_defaults/content/encoding_object_defaults/encoding/explode/allowReserved" : false,
    "/components/parameters/encoding_object_defaults/content/encoding_object_defaults/encoding/explode/style" : "form",
    "/components/parameters/encoding_object_defaults/content/encoding_object_defaults/encoding/style_form/allowReserved" : false,
    "/components/parameters/encoding_object_defaults/content/encoding_object_defaults/encoding/style_form/explode" : true,
    "/components/parameters/encoding_object_defaults/content/encoding_object_defaults/encoding/style_spaceDelimited/allowReserved" : false,
    "/components/parameters/encoding_object_defaults/content/encoding_object_defaults/encoding/style_spaceDelimited/explode" : false,
    "/components/parameters/encoding_object_defaults/deprecated" : false,
    "/components/parameters/encoding_object_defaults/required" : false,
    "/components/parameters/header/deprecated" : false,
    "/components/parameters/header/explode" : false,
    "/components/parameters/header/style" : "simple",
    "/components/parameters/path_label/deprecated" : false,
    "/components/parameters/path_label/explode" : false,
    "/components/parameters/path_matrix/deprecated" : false,
    "/components/parameters/path_matrix/explode" : false,
    "/components/parameters/path_media_type/deprecated" : 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.1/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.
..and remove example that is specific to a particular style, explode and
schema type configuration
@karenetheridge karenetheridge force-pushed the ether/3.1-parameter-styles-more branch from b6aad67 to e890239 Compare February 6, 2026 21:19
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