Is there a way to set a default value to a discriminator? Or hide the property?

806 views
Skip to first unread message

Jeff Haynes

unread,
Jan 4, 2017, 6:54:15 PM1/4/17
to Swagger
We have a spec with inheritance in the model definitions. The base definition has a discriminator property defined that is an enumeration. This works fine when generating the client and server. However, it is problematic for the documentation presented using swagger-ui.

The issue is that then the model is displayed in swagger-ui, the discriminator property is a dropdown list that specifies all the enum values as an option for that model. This is incorrect, in that only one enum value is valid for that definition.

Is there a way to set a default value or set the value of the discriminator property in the swagger spec? Or in swagger-ui?

Another option would be to hide or disable the property altogether (from a documentation perspective) because the property really does not need to be displayed at all.


definitions:
ObjectType:
  type
: string
 
enum:
 
- dog
 
- cat
 
- mouse
 
- snake


Animal:
    type
: object
    discriminator
: object_type
    required
:
     
- id
     
- object_type
    properties
:
      id
:
        type
: integer
        format
: int64
      object_type
:

        $ref: '#/definitions/ObjectType'


Cat:
  allOf
:
   
- $ref: '#/definitions/Animal'
   
- type: object
      discriminator
: object_type
      required
:
       
- object_type
      properties
:          
        object_type
:
          $ref
: '#/definitions/ObjectType'
        name
:
          type
: string

Dog:
  allOf
:
   
- $ref: '#/definitions/Animal'
   
- type: object
      discriminator
: object_type
      required
:
       
- object_type
      properties
:          
        object_type
:
          $ref
: '#/definitions/ObjectType'
        name
:
          type
: string

The documentation has no need for the discriminator to be displayed, at least in this case. Is there a way to either:
  • Hide or disable the object_type property
  • Set the value of the object_type property to the name enumeration value for that type.
Reply all
Reply to author
Forward
0 new messages