niki/vendor/github.com/sv-tools/openapi/spec/discriminator.go

36 lines
1.4 KiB
Go

package spec
// Discriminator is used when request bodies or response payloads may be one of a number of different schemas,
// a discriminator object can be used to aid in serialization, deserialization, and validation.
// The discriminator is a specific object in a schema which is used to inform the consumer of the document of
// an alternative schema based on the value associated with it.
// When using the discriminator, inline schemas will not be considered.
//
// https://spec.openapis.org/oas/v3.1.0#discriminator-object
//
// Example:
//
// MyResponseType:
// oneOf:
// - $ref: '#/components/schemas/Cat'
// - $ref: '#/components/schemas/Dog'
// - $ref: '#/components/schemas/Lizard'
// - $ref: 'https://gigantic-server.com/schemas/Monster/schema.json'
// discriminator:
// propertyName: petType
// mapping:
// dog: '#/components/schemas/Dog'
// monster: 'https://gigantic-server.com/schemas/Monster/schema.json'
type Discriminator struct {
// An object to hold mappings between payload values and schema names or references.
Mapping map[string]string `json:"mapping,omitempty" yaml:"mapping,omitempty"`
// REQUIRED.
// The name of the property in the payload that will hold the discriminator value.
PropertyName string `json:"propertyName" yaml:"propertyName"`
}
// NewDiscriminator creates Discriminator object.
func NewDiscriminator() *Discriminator {
return &Discriminator{}
}