json_schema: {
      "$schema": "http://json-schema.org/draft-04/schema#",
      "definitions": {
          "namedResource": {
              "properties": {
                  "name": {
                      "type": "string"
                  },
                  "resource_uri": {
                      "type": "string"
                  }
              },
              "required": [
                  "name",
                  "resource_uri"
              ],
              "type": "object"
          }
      },
      "properties": {
          "abilities": {
              "items": {
                  "$ref": "#/definitions/namedResource"
              },
              "type": "array"
          },
          "attack": {
              "type": "integer"
          },
          "catch_rate": {
              "type": "integer"
          },
          "created": {
              "pattern": "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{6}",
              "type": "string"
          },
          "defense": {
              "type": "integer"
          },
          "descriptions": {
              "items": {
                  "$ref": "#/definitions/namedResource"
              },
              "type": "array"
          },
          "egg_cycles": {
              "type": "integer"
          },
          "egg_groups": {
              "items": {
                  "$ref": "#/definitions/namedResource"
              },
              "type": "array"
          },
          "ev_yield": {
              "type": [
                  "string",
                  "integer"
              ]
          },
          "evolutions": {
              "items": {
                  "properties": {
                      "detail": {
                          "type": "string"
                      },
                      "method": {
                          "type": "string"
                      },
                      "resource_uri": {
                          "type": "string"
                      },
                      "to": {
                          "type": "string"
                      }
                  },
                  "required": [
                      "method",
                      "to",
                      "resource_uri"
                  ],
                  "type": "object"
              },
              "type": "array"
          },
          "exp": {
              "type": "integer"
          },
          "growth_rate": {
              "type": [
                  "string",
                  "integer"
              ]
          },
          "height": {
              "type": [
                  "string",
                  "integer"
              ]
          },
          "hp": {
              "type": "integer"
          },
          "male_female_ratio": {
              "type": "string"
          },
          "modified": {
              "pattern": "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{6}",
              "type": "string"
          },
          "moves": {
              "items": {
                  "allOf": [
                      {
                          "$ref": "#/definitions/namedResource"
                      },
                      {
                          "properties": {
                              "learn_type": {
                                  "type": "string"
                              },
                              "level": {
                                  "type": "integer"
                              }
                          },
                          "required": [
                              "learn_type"
                          ]
                      }
                  ]
              },
              "type": "array"
          },
          "name": {
              "type": "string"
          },
          "national_id": {
              "type": "integer"
          },
          "resource_uri": {
              "type": "string"
          },
          "sp_atk": {
              "type": "integer"
          },
          "sp_def": {
              "type": "integer"
          },
          "species": {
              "type": "string"
          },
          "speed": {
              "type": "integer"
          },
          "sprites": {
              "items": {
                  "$ref": "#/definitions/namedResource"
              },
              "type": "array"
          },
          "total": {
              "type": "integer"
          },
          "types": {
              "items": {
                  "$ref": "#/definitions/namedResource"
              },
              "type": "array"
          },
          "weight": {
              "type": [
                  "string",
                  "integer"
              ]
          }
      },
      "required": [
          "name",
          "resource_uri",
          "national_id",
          "created",
          "modified"
      ],
      "type": "object"
  }