Skip to content

Commit 14528c9

Browse files
query and querystring are mutually exclusive; disallow more than one querystring
1 parent c602ca6 commit 14528c9

File tree

5 files changed

+111
-6
lines changed

5 files changed

+111
-6
lines changed

src/schemas/validation/schema.yaml

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,7 @@ $defs:
236236
items:
237237
$ref: '#/$defs/server'
238238
parameters:
239-
type: array
240-
items:
241-
$ref: '#/$defs/parameter-or-reference'
239+
$ref: '#/$defs/parameters'
242240
additionalOperations:
243241
type: object
244242
additionalProperties:
@@ -295,9 +293,7 @@ $defs:
295293
operationId:
296294
type: string
297295
parameters:
298-
type: array
299-
items:
300-
$ref: '#/$defs/parameter-or-reference'
296+
$ref: '#/$defs/parameters'
301297
requestBody:
302298
$ref: '#/$defs/request-body-or-reference'
303299
responses:
@@ -334,6 +330,36 @@ $defs:
334330
$ref: '#/$defs/specification-extensions'
335331
unevaluatedProperties: false
336332

333+
parameters:
334+
type: array
335+
items:
336+
$ref: '#/$defs/parameter-or-reference'
337+
not:
338+
allOf:
339+
- contains:
340+
type: object
341+
properties:
342+
in:
343+
const: query
344+
required:
345+
- in
346+
- contains:
347+
type: object
348+
properties:
349+
in:
350+
const: querystring
351+
required:
352+
- in
353+
contains:
354+
type: object
355+
properties:
356+
in:
357+
const: querystring
358+
required:
359+
- in
360+
minContains: 0
361+
maxContains: 1
362+
337363
parameter:
338364
$comment: https://spec.openapis.org/oas/v3.2#parameter-object
339365
type: object
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
openapi: 3.2.0
2+
info:
3+
title: API
4+
version: 1.0.0
5+
components:
6+
pathItems:
7+
my-path-item:
8+
get:
9+
description: a query parameter cannot be used together with a querystring parameter
10+
parameters:
11+
- name: myquerystring
12+
in: querystring
13+
content:
14+
application/json:
15+
schema:
16+
type: string
17+
- name: myquery
18+
in: query
19+
schema:
20+
type: string
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
openapi: 3.2.0
2+
info:
3+
title: API
4+
version: 1.0.0
5+
components:
6+
pathItems:
7+
my-path-item:
8+
get:
9+
description: querystring cannot be used twice
10+
parameters:
11+
- name: myquerystring1
12+
in: querystring
13+
content:
14+
application/json:
15+
schema: {}
16+
- name: myquerystring2
17+
in: querystring
18+
content:
19+
application/json:
20+
schema: {}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
openapi: 3.2.0
2+
info:
3+
title: API
4+
version: 1.0.0
5+
components:
6+
pathItems:
7+
my-path-item:
8+
parameters:
9+
- name: myquerystring
10+
in: querystring
11+
content:
12+
application/json:
13+
schema:
14+
type: string
15+
- name: myquery
16+
in: query
17+
schema:
18+
type: string
19+
get: {}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
openapi: 3.2.0
2+
info:
3+
title: API
4+
version: 1.0.0
5+
components:
6+
pathItems:
7+
my-path-item:
8+
description: querystring cannot be used twice
9+
parameters:
10+
- name: myquerystring1
11+
in: querystring
12+
content:
13+
application/json:
14+
schema: {}
15+
- name: myquerystring2
16+
in: querystring
17+
content:
18+
application/json:
19+
schema: {}
20+
get: {}

0 commit comments

Comments
 (0)