json_schema: {
      "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"
  }