-
-
Notifications
You must be signed in to change notification settings - Fork 211
/
one.of.2.yaml
141 lines (136 loc) · 3.87 KB
/
one.of.2.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
openapi: '3.0.3'
info:
version: 1.0.0
title: Swagger
servers:
- url: /v1
paths:
/discriminator_implied:
post:
description: Creates a new pet in the store.
requestBody:
description: Pet to add to the store
required: true
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/CatObject'
- $ref: '#/components/schemas/DogObject'
discriminator:
propertyName: pet_type
responses:
'200':
description: Updated
/pets:
post:
description: Creates a new pet in the store.
requestBody:
description: Pet to add to the store
required: true
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/CatObject'
- $ref: '#/components/schemas/DogObject'
discriminator:
propertyName: pet_type
mapping:
cat: '#/components/schemas/CatObject'
kitty: '#/components/schemas/CatObject'
dog: '#/components/schemas/DogObject'
puppy: '#/components/schemas/DogObject'
responses:
'200':
description: Updated
/pets_all:
post:
description: Creates a new pet in the store.
operationId: createPetAll
x-eov-operation-id: pets#create ## overrides operationId
x-eov-operation-handler: api/controllers/pets
requestBody:
description: Pet to add to the store
required: true
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/Cat'
- $ref: '#/components/schemas/Dog'
discriminator:
propertyName: pet_type
responses:
'200':
description: Updated
components:
schemas:
DogObject:
type: object
required:
- bark
- breed
- pet_type
properties:
bark:
type: boolean
breed:
type: string
enum: [Dingo, Husky, Retriever, Shepherd]
pet_type:
type: string
# since we use an enum here
# add DogObject as an option
# so that the non-mapping / implied mapping tests can pass
enum: [dog, puppy, DogObject]
CatObject:
type: object
required:
- hunts
- age
- pet_type
properties:
hunts:
type: boolean
age:
type: integer
pet_type:
type: string
# since we use an enum here
# add CatObject as an option
# so that the non-mapping / implied mapping tests can pass
enum: [cat, kitty, CatObject]
color:
type: string
default: gray
Pet:
type: object
required:
- pet_type
properties:
pet_type:
type: string
discriminator:
propertyName: pet_type
Dog: # "Dog" is a value for the pet_type property (the discriminator value)
allOf: # Combines the main `Pet` schema with `Dog`-specific properties
- $ref: '#/components/schemas/Pet'
- type: object
# all other properties specific to a `Dog`
properties:
bark:
type: boolean
breed:
type: string
enum: [Dingo, Husky, Retriever, Shepherd]
Cat: # "Cat" is a value for the pet_type property (the discriminator value)
allOf: # Combines the main `Pet` schema with `Cat`-specific properties
- $ref: '#/components/schemas/Pet'
- type: object
# all other properties specific to a `Cat`
properties:
hunts:
type: boolean
age:
type: integer