{
    "$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"
}