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