From bc4e2095983c6fd591caba56b84284bddbc9e7b2 Mon Sep 17 00:00:00 2001 From: Jason Desrosiers Date: Wed, 17 Feb 2021 18:05:00 -0800 Subject: [PATCH 1/3] Add meta-schema for 3.1 base vocab and dialect --- schemas/v3.1/dialect/base.schema.json | 27 +++++++++ schemas/v3.1/meta/base.schema.json | 79 +++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 schemas/v3.1/dialect/base.schema.json create mode 100644 schemas/v3.1/meta/base.schema.json diff --git a/schemas/v3.1/dialect/base.schema.json b/schemas/v3.1/dialect/base.schema.json new file mode 100644 index 0000000000..1f65d64e5d --- /dev/null +++ b/schemas/v3.1/dialect/base.schema.json @@ -0,0 +1,27 @@ +{ + "$id": "https://spec.openapis.org/oas/3.1/dialect/base", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$vocabulary": { + "https://json-schema.org/draft/2020-12/vocab/core": true, + "https://json-schema.org/draft/2020-12/vocab/applicator": true, + "https://json-schema.org/draft/2020-12/vocab/unevaluated": true, + "https://json-schema.org/draft/2020-12/vocab/validation": true, + "https://json-schema.org/draft/2020-12/vocab/meta-data": true, + "https://json-schema.org/draft/2020-12/vocab/format-annotation": true, + "https://json-schema.org/draft/2020-12/vocab/content": true, + "https://spec.openapis.org/oas/3.1/vocab/base": false + }, + "$dynamicAnchor": "meta", + + "title": "OpenAPI 3.1 Schema Object Dialect", + "allOf": [ + { "$ref": "https://json-schema.org/draft/2020-12/meta/core" }, + { "$ref": "https://json-schema.org/draft/2020-12/meta/applicator" }, + { "$ref": "https://json-schema.org/draft/2020-12/meta/unevaluated" }, + { "$ref": "https://json-schema.org/draft/2020-12/meta/validation" }, + { "$ref": "https://json-schema.org/draft/2020-12/meta/meta-data" }, + { "$ref": "https://json-schema.org/draft/2020-12/meta/format-annotation" }, + { "$ref": "https://json-schema.org/draft/2020-12/meta/content" }, + { "$ref": "https://spec.openapis.org/oas/3.1/meta/base" } + ] +} diff --git a/schemas/v3.1/meta/base.schema.json b/schemas/v3.1/meta/base.schema.json new file mode 100644 index 0000000000..5203261046 --- /dev/null +++ b/schemas/v3.1/meta/base.schema.json @@ -0,0 +1,79 @@ +{ + "$id": "https://spec.openapis.org/oas/3.1/meta/base", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$vocabulary": { + "https://spec.openapis.org/oas/3.1/vocab/base": true + }, + "$dynamicAnchor": "meta", + "title": "OAS Base vocabulary", + + "type": ["object", "boolean"], + "properties": { + "example": true, + "discriminator": { "$ref": "#/$defs/Discriminator" }, + "externalDocs": { "$ref": "#/$defs/ExternalDocs" }, + "xml": { "$ref": "#/$defs/Xml" } + }, + "$defs": { + "Discriminator": { + "type": "object", + "properties": { + "propertyName": { + "type": "string" + }, + "mapping": { + "additionalProperties": { + "type": "string" + } + } + }, + "patternProperties": { + "^x-": true + }, + "required": ["propertyName"], + "additionalProperties": false + }, + "ExternalDocs": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri-reference" + }, + "description": { + "type": "string" + } + }, + "patternProperties": { + "^x-": true + }, + "required": ["url"], + "additionalProperties": false + }, + "Xml": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string", + "format": "uri" + }, + "prefix": { + "type": "string" + }, + "attribute": { + "type": "boolean" + }, + "wrapped": { + "type": "boolean" + } + }, + "patternProperties": { + "^x-": true + }, + "additionalProperties": false + } + } +} From f5c6760e34f30f146a979f2addb93d53e55c922e Mon Sep 17 00:00:00 2001 From: Jason Desrosiers Date: Tue, 23 Feb 2021 09:06:16 -0800 Subject: [PATCH 2/3] Update OAS 3.1 JSON Schema Vocabulary to reduce duplication --- schemas/v3.1/meta/base.schema.json | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/schemas/v3.1/meta/base.schema.json b/schemas/v3.1/meta/base.schema.json index 5203261046..ed3ca1a6e0 100644 --- a/schemas/v3.1/meta/base.schema.json +++ b/schemas/v3.1/meta/base.schema.json @@ -15,7 +15,13 @@ "xml": { "$ref": "#/$defs/Xml" } }, "$defs": { + "Extensible": { + "patternProperties": { + "^x-": true + } + }, "Discriminator": { + "$ref": "#/$defs/Extensible", "type": "object", "properties": { "propertyName": { @@ -27,13 +33,11 @@ } } }, - "patternProperties": { - "^x-": true - }, "required": ["propertyName"], - "additionalProperties": false + "unevaluatedProperties": false }, "ExternalDocs": { + "$ref": "#/$defs/Extensible", "type": "object", "properties": { "url": { @@ -44,13 +48,11 @@ "type": "string" } }, - "patternProperties": { - "^x-": true - }, "required": ["url"], - "additionalProperties": false + "unevaluatedProperties": false }, "Xml": { + "$ref": "#/$defs/Extensible", "type": "object", "properties": { "name": { @@ -70,10 +72,7 @@ "type": "boolean" } }, - "patternProperties": { - "^x-": true - }, - "additionalProperties": false + "unevaluatedProperties": false } } } From fcd4ddbda318d63f687b6b91834b3b71ee2e5f09 Mon Sep 17 00:00:00 2001 From: Jason Desrosiers Date: Tue, 23 Feb 2021 11:49:49 -0800 Subject: [PATCH 3/3] Add missing type keyword for discriminator/mapping --- schemas/v3.1/meta/base.schema.json | 1 + 1 file changed, 1 insertion(+) diff --git a/schemas/v3.1/meta/base.schema.json b/schemas/v3.1/meta/base.schema.json index ed3ca1a6e0..00c127dc48 100644 --- a/schemas/v3.1/meta/base.schema.json +++ b/schemas/v3.1/meta/base.schema.json @@ -28,6 +28,7 @@ "type": "string" }, "mapping": { + "type": "object", "additionalProperties": { "type": "string" }