{
    "type": "object",
    "additionalProperties": false,
    "required": [
        "coord",
        "weather",
        "base",
        "main",
        "visibility",
        "wind",
        "clouds",
        "dt",
        "sys",
        "timezone",
        "id",
        "name",
        "cod"
    ],
    "properties": {
        "coord": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "lon",
                "lat"
            ],
            "properties": {
                "lon": {
                    "type": "number"
                },
                "lat": {
                    "type": "number"
                }
            }
        },
        "weather": {
            "type": "array",
            "items": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                    "id",
                    "main",
                    "description",
                    "icon"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "minimum": 0
                    },
                    "main": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string"
                    },
                    "icon": {
                        "type": "string"
                    }
                }
            }
        },
        "base": {
            "type": "string"
        },
        "main": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "temp",
                "feels_like",
                "temp_min",
                "temp_max",
                "pressure",
                "humidity"
            ],
            "properties": {
                "temp": {
                    "type": "number"
                },
                "feels_like": {
                    "type": "number"
                },
                "temp_min": {
                    "type": "number"
                },
                "temp_max": {
                    "type": "number"
                },
                "pressure": {
                    "type": "integer",
                    "minimum": 0
                },
                "humidity": {
                    "type": "integer",
                    "minimum": 0
                }
            }
        },
        "visibility": {
            "type": "integer",
            "minimum": 0
        },
        "wind": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "speed",
                "deg"
            ],
            "properties": {
                "speed": {
                    "type": "number"
                },
                "deg": {
                    "type": "integer",
                    "minimum": 0
                }
            }
        },
        "clouds": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "all"
            ],
            "properties": {
                "all": {
                    "type": "integer",
                    "minimum": 0
                }
            }
        },
        "dt": {
            "type": "integer",
            "minimum": 0
        },
        "sys": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "type",
                "id",
                "message",
                "country",
                "sunrise",
                "sunset"
            ],
            "properties": {
                "type": {
                    "type": "integer",
                    "minimum": 0
                },
                "id": {
                    "type": "integer",
                    "minimum": 0
                },
                "message": {
                    "type": "number"
                },
                "country": {
                    "type": "string"
                },
                "sunrise": {
                    "type": "integer",
                    "minimum": 0
                },
                "sunset": {
                    "type": "integer",
                    "minimum": 0
                }
            }
        },
        "timezone": {
            "type": "integer"
        },
        "id": {
            "type": "integer",
            "minimum": 0
        },
        "name": {
            "type": "string"
        },
        "cod": {
            "type": "integer",
            "minimum": 0
        }
    }
}
