Take a look at https://github.com/swagger-api/swagger-ui#parameters.

 

 

 

From: <swagger-swaggersocket@googlegroups.com> on behalf of Jeff Haynes 
<jeff9fin...@gmail.com>
Reply-To: "swagger-swaggersocket@googlegroups.com" 
<swagger-swaggersocket@googlegroups.com>
Date: Wednesday, 17 August 2016 at 11:32
To: "swagger-swaggersocket@googlegroups.com" 
<swagger-swaggersocket@googlegroups.com>
Subject: Re: How do I specify a payload that allows different sub types?

 

How do I enable the JSON Schema Form editor? 

 

On Aug 16, 2016, at 11:12 PM, Ron Ratovsky <r...@swagger.io> wrote:

 

Should have been clearer, sorry. 

 

For requests, the validation is limited to primitives, mostly.

I believe that if you enable the JSON Schema Form editor (in swagger-ui), you 
will get some basic field-level validation for the payload fields, but it still 
doesn’t support the inheritance model.

 

 

 

From: <swagger-swaggersocket@googlegroups.com> on behalf of Jeff Haynes 
<jeff9fin...@gmail.com>
Reply-To: "swagger-swaggersocket@googlegroups.com" 
<swagger-swaggersocket@googlegroups.com>
Date: Tuesday, 16 August 2016 at 21:05
To: "swagger-swaggersocket@googlegroups.com" 
<swagger-swaggersocket@googlegroups.com>
Subject: Re: How do I specify a payload that allows different sub types?

 

Thanks for the response. 

 

You spoke about responses. What about as part of a payload?

 

Thanks

 

 

On Aug 16, 2016, at 10:46 PM, Ron Ratovsky <r...@swagger.io> wrote:

 

Currently, neither tool will show those fields. And since neither of them 
performs validation on responses, sub types are irrelevant.

 

 

 

From: <swagger-swaggersocket@googlegroups.com> on behalf of Jeff Haynes 
<jeff9fin...@gmail.com>
Reply-To: "swagger-swaggersocket@googlegroups.com" 
<swagger-swaggersocket@googlegroups.com>
Date: Friday, 12 August 2016 at 15:22
To: "swagger-swaggersocket@googlegroups.com" 
<swagger-swaggersocket@googlegroups.com>
Subject: Re: How do I specify a payload that allows different sub types?

 

Does that show all the fields for each type through swagger-ui and 
swagger-editor? 

And does that allow validation of the sub types?

 

Thanks

 

 

On Aug 12, 2016, at 5:14 PM, Ron Ratovsky <r...@swagger.io> wrote:

 

You just set the body parameter to be Animal. The rest inherit from it, and are 
valid as input.

 

 

 

From: <swagger-swaggersocket@googlegroups.com> on behalf of Jeff Haynes 
<jeff9fin...@gmail.com>
Reply-To: "swagger-swaggersocket@googlegroups.com" 
<swagger-swaggersocket@googlegroups.com>
Date: Friday, 12 August 2016 at 15:10
To: Swagger <swagger-swaggersocket@googlegroups.com>
Subject: How do I specify a payload that allows different sub types?

 

 

 

I am trying to design an endpoint of our API and the payload is an object which 
(in Java) is represented by a base class and several sub classes.

 

definitions:
  AnimalType:
    type: string
    enum: &animal_type_values
    - dog
    - cat
    - pig
    - horse

  EntityType:
    description: An enumeration of the supported entity types
    type: string
    enum:
    - Animal
    - Crop
    - Person
    - Building

  Entity:
    discriminator: entity_type
    required:
      - entity_type
      - id
    properties:
      id:
        type: integer
        format: int64
        readOnly: true
        description: The internal entity id for this entity representation
        example: 1438752
      entity_type:
        $ref: '#/definitions/EntityType'

  AnimalPayload:
    discriminator: animal_type
    allOf:
      - $ref: '#/definitions/Dog'
      - $ref: '#/definitions/Cat'
      - $ref: '#/definitions/Pig'
      - $ref: '#/definitions/Horse'

  Animal:
    discriminator: animal_type
    allOf:
      - $ref: '#/definitions/Entity'
      - type: object
        required:
          - animal_type
        properties:
          animal_type:
            $ref: '#/definitions/AnimalType'
          name:
            type: string
            readOnly: true    
          birth_date:
            type: string
            format: date
          gender:
            type: string
            enum:
            - male
            - female

  Dog:
    allOf:
      - $ref: '#/definitions/Animal'
      - type: object
        properties:
          breed:
            type: string
            
  Cat:
    allOf:
      - $ref: '#/definitions/Animal'
      - type: object
        properties:
          num_lives:
            type: integer
            format: int32

  Pig:
    allOf:
      - $ref: '#/definitions/Animal'
      - type: object
        properties:
          color:
            type: string

  Horse:
    allOf:
      - $ref: '#/definitions/Animal'
      - type: object
        properties:
          breed:
            type: string
            tamed:
              type: boolean
paths:
  /animals:

    post:
      parameters:
        animal:
          name: animal
          in: body
          schema:
            - $ref: '#/parameters/Dog'
            - $ref: '#/parameters/Cat'
            - $ref: '#/parameters/Pig'
            - $ref: '#/parameters/Horse'

 

 

I know this is not valid, but how do I get this to work in some form? I would 
like to simply use a Dog, Cat, Pig, or Horse object as the payload.

 

The only way I can think of is to create the AnimalPayload object. That is 
messy and confusing. Am I missing something? Can I model this differently to 
make this work more intuitively?

 

-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to swagger-swaggersocket+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

 

-- 
You received this message because you are subscribed to a topic in the Google 
Groups "Swagger" group.
To unsubscribe from this topic, visit 
https://groups.google.com/d/topic/swagger-swaggersocket/Jkz8lvE4s5A/unsubscribe.
To unsubscribe from this group and all its topics, send an email to 
swagger-swaggersocket+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

 

-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to swagger-swaggersocket+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

 

-- 
You received this message because you are subscribed to a topic in the Google 
Groups "Swagger" group.
To unsubscribe from this topic, visit 
https://groups.google.com/d/topic/swagger-swaggersocket/Jkz8lvE4s5A/unsubscribe.
To unsubscribe from this group and all its topics, send an email to 
swagger-swaggersocket+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

 

-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to swagger-swaggersocket+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

 

-- 
You received this message because you are subscribed to a topic in the Google 
Groups "Swagger" group.
To unsubscribe from this topic, visit 
https://groups.google.com/d/topic/swagger-swaggersocket/Jkz8lvE4s5A/unsubscribe.
To unsubscribe from this group and all its topics, send an email to 
swagger-swaggersocket+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

 

-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to swagger-swaggersocket+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to swagger-swaggersocket+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to