{
    "additionalProperties": false,
    "definitions": {
        "condition": {
            "additionalProperties": false
        },
        "metadata": {
            "additionalProperties": false,
            "properties": {
                "allow-types": {
                    "default": [
                        "null",
                        "boolean",
                        "string",
                        "number",
                        "integer",
                        "object",
                        "array",
                        "any"
                    ],
                    "description": "allowed types for this keyword",
                    "items": {
                        "$ref": "#/properties/vocabularies/properties/type/items"
                    },
                    "type": "array"
                },
                "as-container": {
                    "default": false,
                    "description": "treat the value for this keyword as containing as-schema values",
                    "type": "boolean"
                },
                "as-schema": {
                    "default": false,
                    "description": "treat the value for this keyword as a schema if possible",
                    "type": "boolean"
                },
                "comment": {
                    "description": "an optional descriptive comment",
                    "type": "string"
                },
                "for-types": {
                    "default": [
                        "null",
                        "boolean",
                        "string",
                        "number",
                        "integer",
                        "object",
                        "array",
                        "any"
                    ],
                    "description": "which types of value this keyword applies to",
                    "items": {
                        "$ref": "#/properties/vocabularies/properties/type/items"
                    },
                    "type": "array"
                },
                "for-undefined": {
                    "default": "false",
                    "description": "whether this keyword should still be processed if the instance is undefined",
                    "type": "boolean"
                },
                "synonym": {
                    "default": [],
                    "description": "other keywords in the same vocabulary with identical meaning",
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                }
            },
            "type": "object"
        }
    },
    "properties": {
        "metadata": {
            "additionalProperties": false,
            "properties": {
                "core": {
                    "additionalProperties": {
                        "$ref": "#/definitions/metadata"
                    },
                    "propertyNames": {
                        "$ref": "#/properties/vocabularies/properties/core/items"
                    },
                    "type": "object"
                },
                "format": {
                    "additionalProperties": {
                        "$ref": "#/definitions/metadata"
                    },
                    "propertyNames": {
                        "$ref": "#/properties/vocabularies/properties/format/items"
                    },
                    "type": "object"
                },
                "implementation": {
                    "additionalProperties": {
                        "$ref": "#/definitions/metadata"
                    },
                    "propertyNames": {
                        "$ref": "#/properties/vocabularies/properties/implementation/items"
                    },
                    "type": "object"
                },
                "metadata": {
                    "additionalProperties": {
                        "$ref": "#/definitions/metadata"
                    },
                    "propertyNames": {
                        "$ref": "#/properties/vocabularies/properties/metadata/items"
                    },
                    "type": "object"
                },
                "type": {
                    "additionalProperties": {
                        "$ref": "#/definitions/metadata"
                    },
                    "propertyNames": {
                        "$ref": "#/properties/vocabularies/properties/type/items"
                    },
                    "type": "object"
                },
                "validation": {
                    "additionalProperties": {
                        "$ref": "#/definitions/metadata"
                    },
                    "propertyNames": {
                        "$ref": "#/properties/vocabularies/properties/validation/items"
                    },
                    "type": "object"
                }
            },
            "type": "object"
        },
        "vocabularies": {
            "additionalProperties": false,
            "properties": {
                "core": {
                    "description": "core json-schema keywords",
                    "items": {
                        "enum": [
                            "$ref",
                            "$schema",
                            "$id",
                            "id"
                        ],
                        "type": "string"
                    },
                    "type": "array"
                },
                "format": {
                    "description": "pre-defined formats",
                    "items": {
                        "enum": [
                            "date-time",
                            "date",
                            "time",
                            "utc-millisec",
                            "regex",
                            "color",
                            "style",
                            "phone",
                            "uri",
                            "uriref",
                            "uri-reference",
                            "uri-template",
                            "json-pointer",
                            "email",
                            "ip-address",
                            "ipv4",
                            "ipv6",
                            "host-name",
                            "hostname"
                        ],
                        "type": "string"
                    },
                    "type": "array"
                },
                "implementation": {
                    "description": "implementation rules",
                    "items": {
                        "enum": [
                            "allowUndefinedTypes",
                            "selfDescriptiveMetaSchema",
                            "allowSimpleDependencies",
                            "formatSchemaURI",
                            "allowSchemaInUnionType",
                            "allowBooleanSchema",
                            "allowIntegerWithFractionalPart"
                        ],
                        "type": "string"
                    },
                    "type": "array"
                },
                "metadata": {
                    "description": "metadata keywords, not used for validation",
                    "items": {
                        "enum": [
                            "definitions",
                            "title",
                            "description",
                            "default",
                            "examples"
                        ],
                        "type": "string"
                    },
                    "type": "array"
                },
                "type": {
                    "description": "primitive types",
                    "items": {
                        "enum": [
                            "null",
                            "boolean",
                            "string",
                            "number",
                            "integer",
                            "object",
                            "array",
                            "any"
                        ],
                        "type": "string"
                    },
                    "type": "array"
                },
                "validation": {
                    "description": "validation keywords",
                    "items": {
                        "enum": [
                            "disallow",
                            "extends",
                            "divisibleBy",
                            "multipleOf",
                            "minimum",
                            "maximum",
                            "exclusiveMinimum",
                            "exclusiveMaximum",
                            "minLength",
                            "maxLength",
                            "pattern",
                            "items",
                            "additionalItems",
                            "minItems",
                            "maxItems",
                            "_uniqueItems",
                            "contains",
                            "properties",
                            "patternProperties",
                            "additionalProperties",
                            "minProperties",
                            "maxProperties",
                            "required",
                            "dependencies",
                            "propertyNames",
                            "type",
                            "const",
                            "enum",
                            "allOf",
                            "anyOf",
                            "oneOf",
                            "not",
                            "format"
                        ],
                        "type": "string"
                    },
                    "type": "array"
                }
            },
            "type": "object"
        }
    },
    "type": "object"
}