Skip to content

redoc-cli - discriminators handled neither correctly nor consistently #2252

Open
@onavratil-monetplus

Description

@onavratil-monetplus

Consider the following specs

openapi: 3.1.0
info:
  title: Sample API
  version: '1.0'
  contact:
    email: [email protected]
  description: Api description.
tags:
  - name: sample tag
    description: tag description
servers:
  - url: http://localhost:3000
paths:
  /sample-path:
    post:
      summary: Sample op
      operationId: sample-op
      description: Op description.
      requestBody:
        content:
          application/json:
            schema:
              title: Test
              type: object
              properties:
                prop1:
                  title: Test Polymorph
                  oneOf:
                    - $ref: '#/components/schemas/test1'
                    - $ref: '#/components/schemas/test2'
                  discriminator:
                    propertyName: testType
                    mapping:
                      ONE: '#/components/schemas/test1'
                      TWO: '#/components/schemas/test2'
                prop2:
                  $ref: '#/components/schemas/testPolymorph'
      tags:
        - sample tag
  /another-path:
    post:
      summary: Another op
      operationId: another-op
      description: Another op description.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/testPolymorph'
      tags:
        - sample tag
components:
  schemas:
    test1:
      title: Test - Variant 1
      type: object
      properties:
        testType:
          type: string
        testOne:
          type: string
    test2:
      title: Test Variant 2
      type: object
      properties:
        testType:
          type: string
        testTwo:
          type: number
    testPolymorph:
      title: Test Polymorph
      discriminator:
        propertyName: testType
        mapping:
          ONE: '#/components/schemas/test1'
          TWO: '#/components/schemas/test2'
      oneOf:
        - $ref: '#/components/schemas/test1'
        - $ref: '#/components/schemas/test2'

All of the prop1, prop2 should be the same (only difference is that $ref is expanded in prop1) and also prop2 and request schema of /another-path should be the same (same $ref target). All of them should have select box on testType property.

However, we can see the output here.

image

I'm using redoc-cli via npm in the latest version

$ redoc-cli --version
0.13.20

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: BugopenapiQuestions about specification, validity, and edge cases

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions