{
    "meta:license": [
        "Copyright 2017 Adobe Systems Incorporated. All rights reserved.",
        "This file is licensed to you under the Apache License, Version 2.0 (the 'License');",
        "you may not use this file except in compliance with the License. You may obtain a copy",
        "of the License at http://www.apache.org/licenses/LICENSE-2.0"
    ],
    "$schema": "http://json-schema.org/draft-06/schema#",
    "$id": "https://example.com/schemas/complex",
    "title": "Complex References ",
    "type": "object",
    "description": "This is an example schema that uses types defined in other schemas.",
    "properties": {
        "refabstract": {
            "$ref": "https://example.com/schemas/abstract#/definitions/first"
        },
        "refnamed": {
            "$ref": "https://example.com/schemas/simple"
        },
        "reflist": {
            "type": "array",
            "items": {
                "$ref": "https://example.com/schemas/simple"
            }
        },
        "or": {
            "description": "String or number…",
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "number",
                    "minimum": 0
                }
            ]
        },
        "and": {
            "description": "Number in a range",
            "allOf": [
                {
                    "type": "number",
                    "maximum": 10
                },
                {
                    "type": "number",
                    "minimum": 0
                }
            ]
        },
        "xor": {
            "description": "Exclusive choice.",
            "oneOf": [
                {
                    "type": "number",
                    "maximum": 0
                },
                {
                    "type": "number",
                    "minimum": 10
                }
            ]
        }
    },
    "required": [
        "refabstract"
    ],
    "additionalProperties": true,
    "patternProperties": {
        "int.*": {
            "type": "integer"
        },
        "str.*": {
            "type": "string"
        }
    }
}