blob: c6cc8cbf1a4efd497551f099a57257bc3f3c593f [file] [log] [blame]
Marcel van Lohuizenf4d483e2019-05-20 08:03:10 -04001{
2 "openapi": "3.0.0",
3 "components": {
4 "schema": {
5 "MyMessage": {
6 "description": "MyMessage is my message.",
7 "allOf": [
8 {
9 "type": "object",
10 "required": [
11 "foo",
12 "bar"
13 ],
14 "properties": {
15 "bar": {
16 "type": "array",
17 "items": {
18 "type": "string"
19 },
20 "default": []
21 },
22 "foo": {
23 "allOf": [
24 {
25 "$ref": "#/components/schema/Int32"
26 },
27 {
28 "type": "number",
29 "exclusiveMinimum": 10,
30 "exclusiveMaximum": 1000
31 }
32 ]
33 },
34 "port": {
35 "$ref": "#/components/schema/Port",
36 "type": "object"
37 }
38 }
39 },
40 {
41 "type": "object",
42 "anyOf": [
43 {
44 "type": "object",
45 "required": [
46 "a"
47 ],
48 "properties": {
49 "a": {
50 "description": "Field a.",
51 "type": "integer",
52 "enum": [
53 1
54 ]
55 }
56 }
57 },
58 {
59 "type": "object",
60 "required": [
61 "b"
62 ],
63 "properties": {
64 "b": {
65 "type": "string"
66 }
67 }
68 }
69 ]
70 }
71 ]
72 },
73 "Port": {
74 "type": "object",
75 "required": [
76 "port",
77 "obj"
78 ],
79 "properties": {
80 "obj": {
81 "type": "array",
82 "items": {
83 "type": "integer"
84 },
85 "default": []
86 },
87 "port": {
88 "type": "integer"
89 }
90 }
91 },
92 "Int32": {
93 "type": "integer",
94 "minimum": -2147483648,
95 "maximum": 2147483647
96 },
97 "YourMessage": {
98 "anyOf": [
99 {
100 "type": "object",
101 "required": [
102 "b"
103 ],
104 "properties": {
105 "a": {
106 "type": "string"
107 },
108 "b": {
109 "type": "string"
110 }
111 }
112 },
113 {
114 "type": "object",
115 "required": [
116 "b"
117 ],
118 "properties": {
119 "a": {
120 "type": "string"
121 },
122 "b": {
123 "type": "number"
124 }
125 }
126 }
127 ]
128 },
129 "YourMessage2": {
130 "allOf": [
131 {
132 "anyOf": [
133 {
134 "type": "object",
135 "required": [
136 "a"
137 ],
138 "properties": {
139 "a": {
140 "type": "number"
141 }
142 }
143 },
144 {
145 "type": "object",
146 "required": [
147 "b"
148 ],
149 "properties": {
150 "b": {
151 "type": "number"
152 }
153 }
154 }
155 ]
156 },
157 {
158 "anyOf": [
159 {
160 "type": "object",
161 "required": [
162 "c"
163 ],
164 "properties": {
165 "c": {
166 "type": "number"
167 }
168 }
169 },
170 {
171 "type": "object",
172 "required": [
173 "d"
174 ],
175 "properties": {
176 "d": {
177 "type": "number"
178 }
179 }
180 }
181 ]
182 },
183 {
184 "anyOf": [
185 {
186 "type": "object",
187 "required": [
188 "e"
189 ],
190 "properties": {
191 "e": {
192 "type": "number"
193 }
194 }
195 },
196 {
197 "type": "object",
198 "required": [
199 "f"
200 ],
201 "properties": {
202 "f": {
203 "type": "number"
204 }
205 }
206 }
207 ]
208 }
209 ]
210 },
211 "Msg2": {
212 "anyOf": [
213 {
214 "type": "object",
215 "required": [
216 "b"
217 ],
218 "properties": {
219 "b": {
220 "type": "number"
221 }
222 }
223 },
224 {
225 "type": "object",
226 "required": [
227 "a"
228 ],
229 "properties": {
230 "a": {
231 "type": "string"
232 }
233 }
234 }
235 ]
236 },
237 "Enum": {
238 "enum": [
239 "foo",
240 "bar",
241 "baz"
242 ]
243 },
244 "List": {
245 "type": "array",
246 "items": {
247 "type": "number"
248 },
249 "default": [
250 1,
251 2,
252 3
253 ]
254 },
255 "DefaultStruct": {
256 "allOf": [
257 {
258 "anyOf": [
259 {
260 "$ref": "#/components/schema/Port"
261 },
262 {
263 "type": "object",
264 "required": [
265 "port"
266 ],
267 "properties": {
268 "port": {
269 "type": "integer",
270 "enum": [
271 1
272 ]
273 }
274 }
275 }
276 ]
277 },
278 {
279 "default": {
280 "port": 1
281 }
282 }
283 ]
284 }
285 }
286 }
287}