{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "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
    }
  }
}
