Skip to content

Commit d9bf86f

Browse files
authoredDec 6, 2024
Consider CommonCatQueryParameters to validate query parameters (#3260)
The JSON rest-api-spec generally encodes this parameters, so that reduces the number of validation errors.
1 parent d686832 commit d9bf86f

File tree

2 files changed

+33
-149
lines changed

2 files changed

+33
-149
lines changed
 

‎compiler/src/steps/validate-rest-spec.ts

+18-18
Original file line numberDiff line numberDiff line change
@@ -161,30 +161,30 @@ export default async function validateRestSpec (model: model.Model, jsonSpec: Ma
161161
if (definition.body.kind !== 'no_body') {
162162
body = Body.yesBody
163163
}
164+
165+
if (definition.attachedBehaviors != null) {
166+
for (const attachedBehavior of definition.attachedBehaviors) {
167+
const type_ = getDefinition({
168+
namespace: '_spec_utils',
169+
name: attachedBehavior
170+
})
171+
if (
172+
type_.kind === 'interface' &&
173+
// allowing CommonQueryParameters too generates many errors
174+
attachedBehavior === 'CommonCatQueryParameters'
175+
) {
176+
for (const prop of type_.properties) {
177+
query.push(prop)
178+
}
179+
}
180+
}
181+
}
164182
} else {
165183
if (definition.properties.length > 0) {
166184
query.push(...definition.properties)
167185
}
168186
}
169187

170-
if (Array.isArray(definition.inherits)) {
171-
const inherits = definition.inherits.map(inherit => getDefinition(inherit.type))
172-
for (const inherit of inherits) {
173-
const properties = getProperties(inherit)
174-
if (properties.path.length > 0) {
175-
path.push(...properties.path)
176-
}
177-
178-
if (properties.query.length > 0) {
179-
query.push(...properties.query)
180-
}
181-
182-
if (properties.body === Body.yesBody) {
183-
body = properties.body
184-
}
185-
}
186-
}
187-
188188
return { path, query, body }
189189
}
190190
}

‎output/schema/validation-errors.json

+15-131
Original file line numberDiff line numberDiff line change
@@ -72,24 +72,12 @@
7272
},
7373
"cat.aliases": {
7474
"request": [
75-
"Request: missing json spec query parameter 'format'",
76-
"Request: missing json spec query parameter 'h'",
77-
"Request: missing json spec query parameter 'help'",
78-
"Request: missing json spec query parameter 's'",
79-
"Request: missing json spec query parameter 'v'",
80-
"Request: missing json spec query parameter 'master_timeout'",
8175
"request definition cat.aliases:Request / body - A request with inherited properties must have a PropertyBody"
8276
],
8377
"response": []
8478
},
8579
"cat.allocation": {
8680
"request": [
87-
"Request: missing json spec query parameter 'format'",
88-
"Request: missing json spec query parameter 'master_timeout'",
89-
"Request: missing json spec query parameter 'h'",
90-
"Request: missing json spec query parameter 'help'",
91-
"Request: missing json spec query parameter 's'",
92-
"Request: missing json spec query parameter 'v'",
9381
"request definition cat.allocation:Request / body - A request with inherited properties must have a PropertyBody"
9482
],
9583
"response": [
@@ -98,86 +86,56 @@
9886
},
9987
"cat.component_templates": {
10088
"request": [
101-
"Request: missing json spec query parameter 'format'",
102-
"Request: missing json spec query parameter 'master_timeout'",
103-
"Request: missing json spec query parameter 'h'",
104-
"Request: missing json spec query parameter 'help'",
105-
"Request: missing json spec query parameter 's'",
106-
"Request: missing json spec query parameter 'v'",
10789
"request definition cat.component_templates:Request / body - A request with inherited properties must have a PropertyBody"
10890
],
10991
"response": []
11092
},
11193
"cat.count": {
11294
"request": [
113-
"Request: missing json spec query parameter 'format'",
114-
"Request: missing json spec query parameter 'h'",
115-
"Request: missing json spec query parameter 'help'",
116-
"Request: missing json spec query parameter 's'",
117-
"Request: missing json spec query parameter 'v'",
95+
"Request: query parameter 'master_timeout' does not exist in the json spec",
11896
"request definition cat.count:Request / body - A request with inherited properties must have a PropertyBody"
11997
],
12098
"response": []
12199
},
122100
"cat.fielddata": {
123101
"request": [
124-
"Request: missing json spec query parameter 'format'",
125-
"Request: missing json spec query parameter 'h'",
126-
"Request: missing json spec query parameter 'help'",
127-
"Request: missing json spec query parameter 's'",
128-
"Request: missing json spec query parameter 'v'",
102+
"Request: query parameter 'master_timeout' does not exist in the json spec",
129103
"request definition cat.fielddata:Request / body - A request with inherited properties must have a PropertyBody"
130104
],
131105
"response": []
132106
},
133107
"cat.health": {
134108
"request": [
135-
"Request: missing json spec query parameter 'format'",
136-
"Request: missing json spec query parameter 'h'",
137-
"Request: missing json spec query parameter 'help'",
138-
"Request: missing json spec query parameter 's'",
139-
"Request: missing json spec query parameter 'v'",
109+
"Request: query parameter 'master_timeout' does not exist in the json spec",
140110
"request definition cat.health:Request / body - A request with inherited properties must have a PropertyBody"
141111
],
142112
"response": []
143113
},
144114
"cat.help": {
145115
"request": [
146-
"Request: missing json spec query parameter 'help'",
147-
"Request: missing json spec query parameter 's'",
116+
"Request: query parameter 'format' does not exist in the json spec",
117+
"Request: query parameter 'h' does not exist in the json spec",
118+
"Request: query parameter 'master_timeout' does not exist in the json spec",
119+
"Request: query parameter 'v' does not exist in the json spec",
148120
"request definition cat.help:Request / body - A request with inherited properties must have a PropertyBody"
149121
],
150122
"response": []
151123
},
152124
"cat.indices": {
153125
"request": [
154-
"Request: missing json spec query parameter 'format'",
155-
"Request: missing json spec query parameter 'master_timeout'",
156-
"Request: missing json spec query parameter 'h'",
157-
"Request: missing json spec query parameter 'help'",
158-
"Request: missing json spec query parameter 's'",
159-
"Request: missing json spec query parameter 'v'",
160126
"request definition cat.indices:Request / body - A request with inherited properties must have a PropertyBody"
161127
],
162128
"response": []
163129
},
164130
"cat.master": {
165131
"request": [
166-
"Request: missing json spec query parameter 'format'",
167-
"Request: missing json spec query parameter 'master_timeout'",
168-
"Request: missing json spec query parameter 'h'",
169-
"Request: missing json spec query parameter 'help'",
170-
"Request: missing json spec query parameter 's'",
171-
"Request: missing json spec query parameter 'v'",
172132
"request definition cat.master:Request / body - A request with inherited properties must have a PropertyBody"
173133
],
174134
"response": []
175135
},
176136
"cat.ml_data_frame_analytics": {
177137
"request": [
178-
"Request: missing json spec query parameter 'format'",
179-
"Request: missing json spec query parameter 'help'",
180-
"Request: missing json spec query parameter 'v'",
138+
"Request: query parameter 'master_timeout' does not exist in the json spec",
181139
"request definition cat.ml_data_frame_analytics:Request / query - Property 'h' is already defined in an ancestor class",
182140
"request definition cat.ml_data_frame_analytics:Request / query - Property 's' is already defined in an ancestor class",
183141
"request definition cat.ml_data_frame_analytics:Request / body - A request with inherited properties must have a PropertyBody"
@@ -186,9 +144,7 @@
186144
},
187145
"cat.ml_datafeeds": {
188146
"request": [
189-
"Request: missing json spec query parameter 'format'",
190-
"Request: missing json spec query parameter 'help'",
191-
"Request: missing json spec query parameter 'v'",
147+
"Request: query parameter 'master_timeout' does not exist in the json spec",
192148
"request definition cat.ml_datafeeds:Request / query - Property 'h' is already defined in an ancestor class",
193149
"request definition cat.ml_datafeeds:Request / query - Property 's' is already defined in an ancestor class",
194150
"request definition cat.ml_datafeeds:Request / body - A request with inherited properties must have a PropertyBody"
@@ -197,9 +153,7 @@
197153
},
198154
"cat.ml_jobs": {
199155
"request": [
200-
"Request: missing json spec query parameter 'format'",
201-
"Request: missing json spec query parameter 'help'",
202-
"Request: missing json spec query parameter 'v'",
156+
"Request: query parameter 'master_timeout' does not exist in the json spec",
203157
"request definition cat.ml_jobs:Request / query - Property 'h' is already defined in an ancestor class",
204158
"request definition cat.ml_jobs:Request / query - Property 's' is already defined in an ancestor class",
205159
"request definition cat.ml_jobs:Request / body - A request with inherited properties must have a PropertyBody"
@@ -208,10 +162,8 @@
208162
},
209163
"cat.ml_trained_models": {
210164
"request": [
211-
"Request: missing json spec query parameter 'format'",
212-
"Request: missing json spec query parameter 'help'",
165+
"Request: query parameter 'master_timeout' does not exist in the json spec",
213166
"Request: missing json spec query parameter 'time'",
214-
"Request: missing json spec query parameter 'v'",
215167
"request definition cat.ml_trained_models:Request / query - Property 'h' is already defined in an ancestor class",
216168
"request definition cat.ml_trained_models:Request / query - Property 's' is already defined in an ancestor class",
217169
"request definition cat.ml_trained_models:Request / body - A request with inherited properties must have a PropertyBody"
@@ -220,162 +172,94 @@
220172
},
221173
"cat.nodeattrs": {
222174
"request": [
223-
"Request: missing json spec query parameter 'format'",
224-
"Request: missing json spec query parameter 'master_timeout'",
225-
"Request: missing json spec query parameter 'h'",
226-
"Request: missing json spec query parameter 'help'",
227-
"Request: missing json spec query parameter 's'",
228-
"Request: missing json spec query parameter 'v'",
229175
"request definition cat.nodeattrs:Request / body - A request with inherited properties must have a PropertyBody"
230176
],
231177
"response": []
232178
},
233179
"cat.nodes": {
234180
"request": [
235-
"Request: missing json spec query parameter 'format'",
236-
"Request: missing json spec query parameter 'master_timeout'",
237-
"Request: missing json spec query parameter 'h'",
238-
"Request: missing json spec query parameter 'help'",
239-
"Request: missing json spec query parameter 's'",
240181
"Request: missing json spec query parameter 'time'",
241-
"Request: missing json spec query parameter 'v'",
242182
"request definition cat.nodes:Request / body - A request with inherited properties must have a PropertyBody"
243183
],
244184
"response": []
245185
},
246186
"cat.pending_tasks": {
247187
"request": [
248-
"Request: missing json spec query parameter 'format'",
249-
"Request: missing json spec query parameter 'master_timeout'",
250-
"Request: missing json spec query parameter 'h'",
251-
"Request: missing json spec query parameter 'help'",
252-
"Request: missing json spec query parameter 's'",
253188
"Request: missing json spec query parameter 'time'",
254-
"Request: missing json spec query parameter 'v'",
255189
"request definition cat.pending_tasks:Request / body - A request with inherited properties must have a PropertyBody"
256190
],
257191
"response": []
258192
},
259193
"cat.plugins": {
260194
"request": [
261-
"Request: missing json spec query parameter 'format'",
262-
"Request: missing json spec query parameter 'master_timeout'",
263-
"Request: missing json spec query parameter 'h'",
264-
"Request: missing json spec query parameter 'help'",
265195
"Request: missing json spec query parameter 'include_bootstrap'",
266-
"Request: missing json spec query parameter 's'",
267-
"Request: missing json spec query parameter 'v'",
268196
"request definition cat.plugins:Request / body - A request with inherited properties must have a PropertyBody"
269197
],
270198
"response": []
271199
},
272200
"cat.recovery": {
273201
"request": [
274-
"Request: missing json spec query parameter 'format'",
275-
"Request: missing json spec query parameter 'h'",
276-
"Request: missing json spec query parameter 'help'",
202+
"Request: query parameter 'master_timeout' does not exist in the json spec",
277203
"Request: missing json spec query parameter 'index'",
278-
"Request: missing json spec query parameter 's'",
279204
"Request: missing json spec query parameter 'time'",
280-
"Request: missing json spec query parameter 'v'",
281205
"request definition cat.recovery:Request / body - A request with inherited properties must have a PropertyBody"
282206
],
283207
"response": []
284208
},
285209
"cat.repositories": {
286210
"request": [
287-
"Request: missing json spec query parameter 'format'",
288211
"Request: missing json spec query parameter 'local'",
289-
"Request: missing json spec query parameter 'master_timeout'",
290-
"Request: missing json spec query parameter 'h'",
291-
"Request: missing json spec query parameter 'help'",
292-
"Request: missing json spec query parameter 's'",
293-
"Request: missing json spec query parameter 'v'",
294212
"request definition cat.repositories:Request / body - A request with inherited properties must have a PropertyBody"
295213
],
296214
"response": []
297215
},
298216
"cat.segments": {
299217
"request": [
300218
"Request: query parameter 'local' does not exist in the json spec",
301-
"Request: missing json spec query parameter 'format'",
302-
"Request: missing json spec query parameter 'h'",
303-
"Request: missing json spec query parameter 'help'",
304-
"Request: missing json spec query parameter 's'",
305-
"Request: missing json spec query parameter 'v'",
219+
"Request: query parameter 'master_timeout' does not exist in the json spec",
306220
"request definition cat.segments:Request / body - A request with inherited properties must have a PropertyBody"
307221
],
308222
"response": []
309223
},
310224
"cat.shards": {
311225
"request": [
312-
"Request: missing json spec query parameter 'format'",
313-
"Request: missing json spec query parameter 'master_timeout'",
314-
"Request: missing json spec query parameter 'h'",
315-
"Request: missing json spec query parameter 'help'",
316-
"Request: missing json spec query parameter 's'",
317226
"Request: missing json spec query parameter 'time'",
318-
"Request: missing json spec query parameter 'v'",
319227
"request definition cat.shards:Request / body - A request with inherited properties must have a PropertyBody"
320228
],
321229
"response": []
322230
},
323231
"cat.snapshots": {
324232
"request": [
325-
"Request: missing json spec query parameter 'format'",
326-
"Request: missing json spec query parameter 'master_timeout'",
327-
"Request: missing json spec query parameter 'h'",
328-
"Request: missing json spec query parameter 'help'",
329-
"Request: missing json spec query parameter 's'",
330233
"Request: missing json spec query parameter 'time'",
331-
"Request: missing json spec query parameter 'v'",
332234
"request definition cat.snapshots:Request / body - A request with inherited properties must have a PropertyBody"
333235
],
334236
"response": []
335237
},
336238
"cat.tasks": {
337239
"request": [
338240
"Request: query parameter 'node_id' does not exist in the json spec",
339-
"Request: missing json spec query parameter 'format'",
241+
"Request: query parameter 'master_timeout' does not exist in the json spec",
340242
"Request: missing json spec query parameter 'nodes'",
341-
"Request: missing json spec query parameter 'h'",
342-
"Request: missing json spec query parameter 'help'",
343-
"Request: missing json spec query parameter 's'",
344243
"Request: missing json spec query parameter 'time'",
345-
"Request: missing json spec query parameter 'v'",
346244
"request definition cat.tasks:Request / body - A request with inherited properties must have a PropertyBody"
347245
],
348246
"response": []
349247
},
350248
"cat.templates": {
351249
"request": [
352-
"Request: missing json spec query parameter 'format'",
353-
"Request: missing json spec query parameter 'master_timeout'",
354-
"Request: missing json spec query parameter 'h'",
355-
"Request: missing json spec query parameter 'help'",
356-
"Request: missing json spec query parameter 's'",
357-
"Request: missing json spec query parameter 'v'",
358250
"request definition cat.templates:Request / body - A request with inherited properties must have a PropertyBody"
359251
],
360252
"response": []
361253
},
362254
"cat.thread_pool": {
363255
"request": [
364-
"Request: missing json spec query parameter 'format'",
365-
"Request: missing json spec query parameter 'master_timeout'",
366-
"Request: missing json spec query parameter 'h'",
367-
"Request: missing json spec query parameter 'help'",
368-
"Request: missing json spec query parameter 's'",
369-
"Request: missing json spec query parameter 'v'",
370256
"request definition cat.thread_pool:Request / body - A request with inherited properties must have a PropertyBody"
371257
],
372258
"response": []
373259
},
374260
"cat.transforms": {
375261
"request": [
376-
"Request: missing json spec query parameter 'format'",
377-
"Request: missing json spec query parameter 'help'",
378-
"Request: missing json spec query parameter 'v'",
262+
"Request: query parameter 'master_timeout' does not exist in the json spec",
379263
"request definition cat.transforms:Request / query - Property 'h' is already defined in an ancestor class",
380264
"request definition cat.transforms:Request / query - Property 's' is already defined in an ancestor class",
381265
"request definition cat.transforms:Request / body - A request with inherited properties must have a PropertyBody"

0 commit comments

Comments
 (0)
Please sign in to comment.