{
	"$schema": "https://meta.json-schema.tools/",
	"title": "OpenRPC Specification Extension",
	"description": "A standard way to define OpenRPC Specification Extensions. This makes it easier to provide support for Specification Extensions in other tools.",
	"type": "object",
	"required": [
		"name",
		"schema",
		"openrpcExtension",
		"version"
	],
	"properties": {
		"openrpcExtension": {
			"title": "openrpcExtensionVersion",
			"description": "**REQUIRED**. This string MUST be the semantic version number of the Specification that the document uses.",
			"type": "string",
			"enum": [
				"0.0.0-development"
			]
		},
		"name": {
			"title": "specificationExtensionName",
			"description": "**REQUIRED** Name of the Specification Extension. MUST start with `x-`",
			"type": "string",
			"pattern": "^x-",
			"examples": [
				"x-foobarbaz"
			]
		},
		"version": {
			"title": "specificationExtensionVersion",
			"description": "**REQUIRED**. The version of the Extension (which is distinct from the `openrpcExtension` version and implementation version).",
			"type": "string",
			"examples": [
				"0.0.1"
			]
		},
		"required": {
			"title": "specificationExtensionRequired",
			"type": "boolean",
			"description": "wether or not this specification extension is required or not"
		},
		"restricted": {
			"title": "restrictedObjects",
			"description": "A list of object names to restrict the usage of the specification extension to.",
			"type": "array",
			"items": {
				"title": "restrictedObject",
				"description": "restricted object",
				"type": "string"
			}
		},
		"description": {
			"title": "specificationExtensionDescription",
			"type": "string",
			"description": "Markdown description describing the specification extension."
		},
		"summary": {
			"title": "specificationExtensionSummary",
			"type": "string",
			"description": "A short summary of what the specification extension is."
		},
		"schema": {
			"$ref": "https://meta.json-schema.tools"
		},
		"externalDocumentation": {
			"title": "specificationExtensionExternalDocumentationObject",
			"type": "object",
			"additionalProperties": false,
			"description": "Information about specification extension external documentation.",
			"required": [
				"url"
			],
			"properties": {
				"description": {
					"title": "specificationExtensionexternalDocumentationObjectDescription",
					"description": "external documentation description.",
					"type": "string"
				},
				"url": {
					"title": "specificationExtensionexternalDocumentationObjectUrl",
					"description": "external documentation description.",
					"type": "string",
					"format": "uri"
				}
			}
		}
	}
}