{

"$schema": "http://json-schema.org/draft-04/hyper-schema#",
"id": "http://json-schema.org/draft-04/hyper-schema#",
"title": "JSON Hyper-Schema",
"allOf": [
    {
        "$ref": "http://json-schema.org/draft-04/schema#"
    }
],
"properties": {
    "additionalItems": {
        "anyOf": [
            {
                "type": "boolean"
            },
            {
                "$ref": "#"
            }
        ]
    },
    "additionalProperties": {
        "anyOf": [
            {
                "type": "boolean"
            },
            {
                "$ref": "#"
            }
        ]
    },
    "dependencies": {
        "additionalProperties": {
            "anyOf": [
                {
                    "$ref": "#"
                },
                {
                    "type": "array"
                }
            ]
        }
    },
    "items": {
        "anyOf": [
            {
                "$ref": "#"
            },
            {
                "$ref": "#/definitions/schemaArray"
            }
        ]
    },
    "definitions": {
        "additionalProperties": {
            "$ref": "#"
        }
    },
    "patternProperties": {
        "additionalProperties": {
            "$ref": "#"
        }
    },
    "properties": {
        "additionalProperties": {
            "$ref": "#"
        }
    },
    "allOf": {
        "$ref": "#/definitions/schemaArray"
    },
    "anyOf": {
        "$ref": "#/definitions/schemaArray"
    },
    "oneOf": {
        "$ref": "#/definitions/schemaArray"
    },
    "not": {
        "$ref": "#"
    },

    "links": {
        "type": "array",
        "items": {
            "$ref": "#/definitions/linkDescription"
        }
    },
    "fragmentResolution": {
        "type": "string"
    },
    "media": {
        "type": "object",
        "properties": {
            "type": {
                "description": "A media type, as described in RFC 2046",
                "type": "string"
            },
            "binaryEncoding": {
                "description": "A content encoding scheme, as described in RFC 2045",
                "type": "string"
            }
        }
    },
    "pathStart": {
        "description": "Instances' URIs must start with this value for this schema to apply to them",
        "type": "string",
        "format": "uri"
    }
},
"definitions": {
    "schemaArray": {
        "type": "array",
        "items": {
            "$ref": "#"
        }
    },
    "linkDescription": {
        "title": "Link Description Object",
        "type": "object",
        "required": [ "href", "rel" ],
        "properties": {
            "href": {
                "description": "a URI template, as defined by RFC 6570, with the addition of the $, ( and ) characters for pre-processing",
                "type": "string"
            },
            "rel": {
                "description": "relation to the target resource of the link",
                "type": "string"
            },
            "title": {
                "description": "a title for the link",
                "type": "string"
            },
            "targetSchema": {
                "description": "JSON Schema describing the link target",
                "$ref": "#"
            },
            "mediaType": {
                "description": "media type (as defined by RFC 2046) describing the link target",
                "type": "string"
            },
            "method": {
                "description": "method for requesting the target of the link (e.g. for HTTP this might be \"GET\" or \"DELETE\")",
                "type": "string"
            },
            "encType": {
                "description": "The media type in which to submit data along with the request",
                "type": "string",
                "default": "application/json"
            },
            "schema": {
                "description": "Schema describing the data to submit along with the request",
                "$ref": "#"
            }
        }
    }
},
"links": [
    {
        "rel": "self",
        "href": "{+id}"
    },
    {
        "rel": "full",
        "href": "{+($ref)}"
    }
]

}