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 <[email protected]> wrote: > > You just set the body parameter to be Animal. The rest inherit from it, and > are valid as input. > > > > From: <[email protected] > <mailto:[email protected]>> on behalf of Jeff Haynes > <[email protected] <mailto:[email protected]>> > Reply-To: "[email protected] > <mailto:[email protected]>" > <[email protected] > <mailto:[email protected]>> > Date: Friday, 12 August 2016 at 15:10 > To: Swagger <[email protected] > <mailto:[email protected]>> > 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 [email protected] > <mailto:[email protected]>. > For more options, visit https://groups.google.com/d/optout > <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 > > <https://groups.google.com/d/topic/swagger-swaggersocket/Jkz8lvE4s5A/unsubscribe>. > To unsubscribe from this group and all its topics, send an email to > [email protected] > <mailto:[email protected]>. > For more options, visit https://groups.google.com/d/optout > <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 [email protected]. For more options, visit https://groups.google.com/d/optout.
