Does response status code make sense for multiple media types for error status codes as per OpenAPI 3 (Swagger) spec

Viewed 517

If we follow the OAS3 spec for Response here we can see that each response status code can have multiple media types and each media type in turn has a schema particular to it.

UseCase : For example oas3 example below, we can see 200 has a binary stream response but 400 has 3 media-types:application/json, application/xml, text/plain.

So is the client expected to request accept-type header with all the media-types mentioned below. How can we have specific media-type for 400 response code, or basically how we can convey to the REST Service to respond with media type as application/xml when its a 400 bad request and if 200 is returning a binary stream.

Does this OAS3 response multiple media-type make sense for Client/Server Errors. If yes then whats the accept-type set for expecting, say "application/xml" for 400 bad request.

Please refer the below swagger UI snap. Where we see a drop-down for the media-types for error code as well. But when we try out executing the rest operations, the accept header is only populated as per the 200 status code's media-type

enter image description here

openapi: 3.0.0
info:
  version: "1.0"
  title: Resource
  description: Resource service
paths:
  /resource:
    get:
      summary: getResource
      description: getResource
      operationId: get-resource
      responses:
        "200":
          description: a binary document to be returned
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400Element"
            application/xml:
              schema:
                $ref: "#/components/schemas/Error400Element"
            text/plain:
              schema:
                $ref: "#/components/schemas/Error400Element"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error500Element"
            application/xml:
              schema:
                $ref: "#/components/schemas/Error500Element"
            text/plain:
              schema:
                $ref: "#/components/schemas/Error500Element"
servers:
  - url: http://localhost:8088/
components:
  schemas:
    Error400Element:
      type: object
      required:
        - name
      properties:
        name:
          type: string
        number:
          type: integer
    Error500Element:
      type: object
      properties:
        number:
          type: integer
        flag:
          type: boolean

EDIT : modified the OAS3 spec and the SwaggerUI

0 Answers
Related