{
    "definitions": {
        "character": {
            "definitions": {
                "level": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "spells": {
                    "items": {
                        "$ref": "#/definitions/spell"
                    },
                    "type": "array"
                }
            },
            "links": [
                {
                    "href": "/characters",
                    "method": "POST",
                    "rel": "create",
                    "schema": {
                        "properties": {
                            "name": {
                                "type": "string"
                            }
                        }
                    },
                    "targetSchema": {
                        "$ref": "#/definitions/character"
                    },
                    "title": "Create a character"
                },
                {
                    "href": "/characters",
                    "method": "GET",
                    "rel": "list",
                    "targetSchema": {
                        "items": {
                            "properties": {
                                "level": {
                                    "$ref": "#/definitions/character/definitions/level"
                                },
                                "name": {
                                    "$ref": "#/definitions/character/definitions/name"
                                }
                            }
                        },
                        "type": "array"
                    },
                    "title": "List characters"
                },
                {
                    "href": "/characters/{(#/definitions/character/definitions/name)}",
                    "method": "GET",
                    "rel": "one",
                    "targetSchema": {
                        "$ref": "#/definitions/character"
                    },
                    "title": "Details of a character"
                },
                {
                    "href": "/characters/{(#/definitions/character/definitions/name)}/spells/{(#/definitions/spell/definitions/name)}",
                    "method": "PUT",
                    "rel": "link",
                    "title": "Make a character learn a spell"
                },
                {
                    "href": "/characters/{(#/definitions/character/definitions/name)}/spells/{(#/definitions/spell/definitions/name)}",
                    "method": "DELETE",
                    "rel": "unlink",
                    "title": "Make a character forget a spell"
                }
            ],
            "properties": {
                "level": {
                    "$ref": "#/definitions/character/definitions/level"
                },
                "name": {
                    "$ref": "#/definitions/character/definitions/name"
                },
                "spells": {
                    "$ref": "#/definitions/character/definitions/spells"
                }
            },
            "type": "object"
        },
        "spell": {
            "definitions": {
                "element": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "power": {
                    "type": "integer"
                }
            },
            "links": [
                {
                    "href": "/spells",
                    "method": "POST",
                    "rel": "create",
                    "schema": {
                        "$ref": "#/definitions/spell"
                    },
                    "targetSchema": {
                        "$ref": "#/definitions/spell"
                    },
                    "title": "Create a spell"
                },
                {
                    "href": "/spells",
                    "method": "GET",
                    "rel": "list",
                    "targetSchema": {
                        "items": {
                            "$ref": "#/definitions/spell"
                        },
                        "type": "array"
                    },
                    "title": "List spells"
                },
                {
                    "href": "/spells/{(#/definitions/spell/definitions/name)}",
                    "method": "GET",
                    "rel": "one",
                    "targetSchema": {
                        "$ref": "#/definitions/spell"
                    },
                    "title": "Info for a spell"
                }
            ],
            "properties": {
                "element": {
                    "$ref": "#/definitions/spell/definitions/element"
                },
                "name": {
                    "$ref": "#/definitions/spell/definitions/name"
                },
                "power": {
                    "$ref": "#/definitions/spell/definitions/power"
                }
            },
            "type": "object"
        }
    },
    "properties": {
        "character": {
            "$ref": "#/definitions/character"
        },
        "spell": {
            "$ref": "#/definitions/spell"
        }
    },
    "title": "Test API",
    "type": "object"
}