Skip to content

Commit cdf72ca

Browse files
committed
Fixes from code review during TSC meeting
1 parent bd7a645 commit cdf72ca

File tree

5 files changed

+73
-58
lines changed

5 files changed

+73
-58
lines changed

schemas/v3.1/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ The TSC will then:
3131
The test suite is included as a git submodule of https://github.com/Mermade/openapi3-examples.
3232

3333
```bash
34-
npx mocha --recursive [repo root]/tests
34+
npx mocha --recursive tests
3535
```
3636

3737
You can also validate a document individually.
3838

3939
```bash
40-
node [repo root]/scripts/validate.js path/to/document/to/validate.yaml
40+
scripts/validate.js path/to/document/to/validate.yaml
4141
```

schemas/v3.1/dialect/base.schema.json

+1-7
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,7 @@
1515

1616
"title": "OpenAPI 3.1 Schema Object Dialect",
1717
"allOf": [
18-
{ "$ref": "https://json-schema.org/draft/2020-12/meta/core" },
19-
{ "$ref": "https://json-schema.org/draft/2020-12/meta/applicator" },
20-
{ "$ref": "https://json-schema.org/draft/2020-12/meta/unevaluated" },
21-
{ "$ref": "https://json-schema.org/draft/2020-12/meta/validation" },
22-
{ "$ref": "https://json-schema.org/draft/2020-12/meta/meta-data" },
23-
{ "$ref": "https://json-schema.org/draft/2020-12/meta/format-annotation" },
24-
{ "$ref": "https://json-schema.org/draft/2020-12/meta/content" },
18+
{ "$ref": "https://json-schema.org/draft/2020-12/schema" },
2519
{ "$ref": "https://spec.openapis.org/oas/3.1/meta/base" }
2620
]
2721
}

schemas/v3.1/meta/base.schema.json

+10-10
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@
1010
"type": ["object", "boolean"],
1111
"properties": {
1212
"example": true,
13-
"discriminator": { "$ref": "#/$defs/Discriminator" },
14-
"externalDocs": { "$ref": "#/$defs/ExternalDocs" },
15-
"xml": { "$ref": "#/$defs/Xml" }
13+
"discriminator": { "$ref": "#/$defs/discriminator" },
14+
"externalDocs": { "$ref": "#/$defs/external-docs" },
15+
"xml": { "$ref": "#/$defs/xml" }
1616
},
1717
"$defs": {
18-
"Extensible": {
18+
"extensible": {
1919
"patternProperties": {
2020
"^x-": true
2121
}
2222
},
23-
"Discriminator": {
24-
"$ref": "#/$defs/Extensible",
23+
"discriminator": {
24+
"$ref": "#/$defs/extensible",
2525
"type": "object",
2626
"properties": {
2727
"propertyName": {
@@ -37,8 +37,8 @@
3737
"required": ["propertyName"],
3838
"unevaluatedProperties": false
3939
},
40-
"ExternalDocs": {
41-
"$ref": "#/$defs/Extensible",
40+
"external-docs": {
41+
"$ref": "#/$defs/extensible",
4242
"type": "object",
4343
"properties": {
4444
"url": {
@@ -52,8 +52,8 @@
5252
"required": ["url"],
5353
"unevaluatedProperties": false
5454
},
55-
"Xml": {
56-
"$ref": "#/$defs/Extensible",
55+
"xml": {
56+
"$ref": "#/$defs/extensible",
5757
"type": "object",
5858
"properties": {
5959
"name": {

schemas/v3.1/schema.json

+37-22
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
{
22
"$id": "https://spec.openapis.org/oas/3.1/schema/2021-03-02",
33
"$schema": "https://json-schema.org/draft/2020-12/schema",
4+
"type": "object",
45
"properties": {
56
"openapi": {
6-
"type": "string"
7+
"type": "string",
8+
"pattern": "^3\\.1\\.\\d+(-.+)?$"
79
},
810
"info": {
911
"$ref": "#/$defs/info"
1012
},
1113
"jsonSchemaDialect": {
12-
"type": "string"
14+
"$ref": "#/$defs/uri",
15+
"default": "https://spec.openapis.org/oas/3.1/dialect/base"
1316
},
1417
"servers": {
1518
"$ref": "#/$defs/server"
@@ -81,7 +84,7 @@
8184
"termsOfService": {
8285
"type": "string"
8386
},
84-
"contact\"": {
87+
"contact": {
8588
"$ref": "#/$defs/contact"
8689
},
8790
"license": {
@@ -124,7 +127,7 @@
124127
"type": "string"
125128
},
126129
"url": {
127-
"$ref\"": "#/$defs/uri"
130+
"$ref": "#/$defs/uri"
128131
}
129132
},
130133
"required": [
@@ -226,7 +229,7 @@
226229
"headers": {
227230
"type": "object",
228231
"additionalProperties": {
229-
"$ref\"": "#/$defs/header-or-reference"
232+
"$ref": "#/$defs/header-or-reference"
230233
}
231234
},
232235
"securitySchemes": {
@@ -255,7 +258,8 @@
255258
}
256259
},
257260
"patternProperties": {
258-
"": {
261+
"^schemas|responses|parameters|examples|requestBodies|headers|securitySchemes|links|callbacks|pathItems$": {
262+
"$comment": "Enumerating all of the property names in the regex above is necessary for unevaluatedProperties to work as expected",
259263
"propertyNames": {
260264
"pattern": "^[a-zA-Z0-9._-]+$"
261265
}
@@ -341,7 +345,7 @@
341345
"parameters": {
342346
"type": "array",
343347
"items": {
344-
"$ref\"": "#/$defs/parameter-or-reference"
348+
"$ref": "#/$defs/parameter-or-reference"
345349
}
346350
},
347351
"requestBody": {
@@ -420,11 +424,32 @@
420424
"allowEmptyValue": {
421425
"default": false,
422426
"type": "boolean"
427+
},
428+
"schema": {
429+
"$dynamicRef": "#meta"
430+
},
431+
"content": {
432+
"type": "object",
433+
"additionalProperties": {
434+
"$ref": "#/$defs/media-type"
435+
}
423436
}
424437
},
425438
"required": [
426439
"in"
427440
],
441+
"oneOf": [
442+
{
443+
"required": [
444+
"schema"
445+
]
446+
},
447+
{
448+
"required": [
449+
"content"
450+
]
451+
}
452+
],
428453
"dependentSchemas": {
429454
"schema": {
430455
"properties": {
@@ -437,9 +462,6 @@
437462
"allowReserved": {
438463
"default": false,
439464
"type": "boolean"
440-
},
441-
"schema": {
442-
"$dynamicRef": "#meta"
443465
}
444466
},
445467
"allOf": [
@@ -589,16 +611,6 @@
589611
}
590612
}
591613
}
592-
},
593-
"content": {
594-
"properties": {
595-
"content": {
596-
"type": "object",
597-
"additionalProperties": {
598-
"$ref": "#/$defs/media-type"
599-
}
600-
}
601-
}
602614
}
603615
},
604616
"$ref": "#/$defs/specification-extensions",
@@ -1003,7 +1015,10 @@
10031015
},
10041016
"schema": {
10051017
"$dynamicAnchor": "meta",
1006-
"$ref": "https://spec.openapis.org/oas/3.1/dialect/base"
1018+
"type": [
1019+
"object",
1020+
"boolean"
1021+
]
10071022
},
10081023
"security-scheme": {
10091024
"type": "object",
@@ -1193,7 +1208,7 @@
11931208
"$ref": "#/$defs/oauth-flows/$defs/password"
11941209
},
11951210
"clientCredentials": {
1196-
"$ref\"": "#/$defs/oauth-flows/$defs/client-credentials"
1211+
"$ref": "#/$defs/oauth-flows/$defs/client-credentials"
11971212
},
11981213
"authorizationCode": {
11991214
"$ref": "#/$defs/oauth-flows/$defs/authorization-code"

schemas/v3.1/schema.yaml

+23-17
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
$id: 'https://spec.openapis.org/oas/3.1/schema/2021-03-02'
22
$schema: 'https://json-schema.org/draft/2020-12/schema'
33

4+
type: object
45
properties:
56
openapi:
67
type: string
8+
pattern: '^3\.1\.\d+(-.+)?$'
79
info:
810
$ref: '#/$defs/info'
911
jsonSchemaDialect:
@@ -54,7 +56,7 @@ $defs:
5456
type: string
5557
termsOfService:
5658
type: string
57-
contact":
59+
contact:
5860
$ref: '#/$defs/contact'
5961
license:
6062
$ref: '#/$defs/license'
@@ -86,7 +88,7 @@ $defs:
8688
identifier:
8789
type: string
8890
url:
89-
$ref": '#/$defs/uri'
91+
$ref: '#/$defs/uri'
9092
required:
9193
- name
9294
oneOf:
@@ -156,7 +158,7 @@ $defs:
156158
headers:
157159
type: object
158160
additionalProperties:
159-
$ref": '#/$defs/header-or-reference'
161+
$ref: '#/$defs/header-or-reference'
160162
securitySchemes:
161163
type: object
162164
additionalProperties:
@@ -174,7 +176,8 @@ $defs:
174176
additionalProperties:
175177
$ref: '#/$defs/path-item-or-reference'
176178
patternProperties:
177-
'':
179+
'^schemas|responses|parameters|examples|requestBodies|headers|securitySchemes|links|callbacks|pathItems$':
180+
$comment: Enumerating all of the property names in the regex above is necessary for unevaluatedProperties to work as expected
178181
propertyNames:
179182
pattern: '^[a-zA-Z0-9._-]+$'
180183
$ref: '#/$defs/specification-extensions'
@@ -236,7 +239,7 @@ $defs:
236239
parameters:
237240
type: array
238241
items:
239-
$ref": '#/$defs/parameter-or-reference'
242+
$ref: '#/$defs/parameter-or-reference'
240243
requestBody:
241244
$ref: '#/$defs/request-body-or-reference'
242245
responses:
@@ -293,8 +296,19 @@ $defs:
293296
allowEmptyValue:
294297
default: false
295298
type: boolean
299+
schema:
300+
$dynamicRef: '#meta'
301+
content:
302+
type: object
303+
additionalProperties:
304+
$ref: '#/$defs/media-type'
296305
required:
297306
- in
307+
oneOf:
308+
- required:
309+
- schema
310+
- required:
311+
- content
298312
dependentSchemas:
299313
schema:
300314
properties:
@@ -304,9 +318,7 @@ $defs:
304318
type: boolean
305319
allowReserved:
306320
default: false
307-
type: "boolean"
308-
schema:
309-
$dynamicRef: '#meta'
321+
type: boolean
310322
allOf:
311323
- $ref: '#/$defs/examples'
312324
- $ref: '#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-path'
@@ -397,12 +409,6 @@ $defs:
397409
explode:
398410
default: false
399411

400-
content:
401-
properties:
402-
content:
403-
type: object
404-
additionalProperties:
405-
$ref: '#/$defs/media-type'
406412
$ref: '#/$defs/specification-extensions'
407413
unevaluatedProperties: false
408414

@@ -536,9 +542,9 @@ $defs:
536542
required:
537543
- $ref
538544
then:
539-
$ref: "#/$defs/reference"
545+
$ref: '#/$defs/reference'
540546
else:
541-
$ref: "#/$defs/response"
547+
$ref: '#/$defs/response'
542548

543549
callbacks:
544550
type: object
@@ -806,7 +812,7 @@ $defs:
806812
password:
807813
$ref: '#/$defs/oauth-flows/$defs/password'
808814
clientCredentials:
809-
$ref": '#/$defs/oauth-flows/$defs/client-credentials'
815+
$ref: '#/$defs/oauth-flows/$defs/client-credentials'
810816
authorizationCode:
811817
$ref: '#/$defs/oauth-flows/$defs/authorization-code'
812818
$ref: '#/$defs/specification-extensions'

0 commit comments

Comments
 (0)