Skip to content

Emit standard Redfish query parameters on GET operations in generated OpenAPI #520

@j-westover

Description

@j-westover

Request an enhancement:

Add standard Redfish query parameters to applicable GET operations in generated OpenAPI, so client generators can expose them as typed query options without downstream patching.

Why this is needed

Today, many generated GET operations in openapi.yaml do not include Redfish query parameters, which makes it hard for OpenAPI-based SDK generators to expose them natively. Currently we have to post-process the generated OpenAPI file to inject these parameters ourselves, which is brittle.

Requested enhancement

For eligible GET operations (for example all GETs under /redfish/v1/...), emit optional query parameters consistent with Redfish spec support, such as:

  • $expand
  • $select
  • $filter
  • $top
  • $skip
  • only
  • excerpt
  • includeoriginofcondition

Example operation

This operation is a representative example where query params should be present.

Suggested modeling

  • Define reusable parameter components under components.parameters.
  • Reference them from operation parameters for applicable GET endpoints.
  • Keep them optional.
  • Avoid injecting for endpoints where they are not meaningful (if applicable).

Benefit
This would make the converter output immediately usable by OpenAPI toolchains (SDK + query clients), reduce custom downstream transforms, and improve consistency for Redfish consumers.

Example yaml

  /redfish/v1/Chassis:
    get:
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: http://redfish.dmtf.org/schemas/v1/ChassisCollection.yaml#/components/schemas/ChassisCollection_ChassisCollection
          description: The response contains a representation of the ChassisCollection resource
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RedfishError'
          description: Error condition
+      parameters:
+        - $ref: '#/components/parameters/RedfishQueryParam__expand'
+        - $ref: '#/components/parameters/RedfishQueryParam__select'
+        - $ref: '#/components/parameters/RedfishQueryParam__filter'
+        - $ref: '#/components/parameters/RedfishQueryParam__top'
+        - $ref: '#/components/parameters/RedfishQueryParam__skip'
+        - $ref: '#/components/parameters/RedfishQueryParam_only'
+        - $ref: '#/components/parameters/RedfishQueryParam_excerpt'
+        - $ref: '#/components/parameters/RedfishQueryParam_includeoriginofcondition'
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: http://redfish.dmtf.org/schemas/v1/Chassis.v1_28_0.yaml#/components/schemas/Chassis_v1_28_0_Chassis
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: http://redfish.dmtf.org/schemas/v1/Chassis.v1_28_0.yaml#/components/schemas/Chassis_v1_28_0_Chassis
          description: A resource of type Chassis has been created
        '202':
          content:
            application/json:
              schema:
                $ref: http://redfish.dmtf.org/schemas/v1/Task.v1_7_4.yaml#/components/schemas/Task_v1_7_4_Task
          description: Accepted; a task has been generated
        '204':
          description: Success, but no response data
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RedfishError'
          description: Error condition

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions