{
  "type": "object",
  "encoding": "REQUIRED_ONLY_BOUNDED_TYPED_OBJECT",
  "options": {
    "propertyEncodings": {
      "coord": {
        "type": "object",
        "encoding": "REQUIRED_ONLY_BOUNDED_TYPED_OBJECT",
        "options": {
          "propertyEncodings": {
            "lon": {
              "type": "number",
              "encoding": "DOUBLE_VARINT_TUPLE",
              "options": {}
            },
            "lat": {
              "type": "number",
              "encoding": "DOUBLE_VARINT_TUPLE",
              "options": {}
            }
          },
          "requiredProperties": [
            "lat",
            "lon"
          ],
          "booleanRequiredProperties": []
        }
      },
      "weather": {
        "type": "array",
        "encoding": "FLOOR_TYPED_LENGTH_PREFIX",
        "options": {
          "minimum": 0,
          "encoding": {
            "type": "object",
            "encoding": "REQUIRED_ONLY_BOUNDED_TYPED_OBJECT",
            "options": {
              "propertyEncodings": {
                "id": {
                  "type": "integer",
                  "encoding": "FLOOR_MULTIPLE_ENUM_VARINT",
                  "options": {
                    "minimum": 0,
                    "multiplier": 1
                  }
                },
                "main": {
                  "type": "string",
                  "encoding": "FLOOR_PREFIX_LENGTH_ENUM_VARINT",
                  "options": {
                    "minimum": 0
                  }
                },
                "description": {
                  "type": "string",
                  "encoding": "FLOOR_PREFIX_LENGTH_ENUM_VARINT",
                  "options": {
                    "minimum": 0
                  }
                },
                "icon": {
                  "type": "string",
                  "encoding": "FLOOR_PREFIX_LENGTH_ENUM_VARINT",
                  "options": {
                    "minimum": 0
                  }
                }
              },
              "requiredProperties": [
                "description",
                "icon",
                "id",
                "main"
              ],
              "booleanRequiredProperties": []
            }
          },
          "prefixEncodings": []
        }
      },
      "base": {
        "type": "string",
        "encoding": "FLOOR_PREFIX_LENGTH_ENUM_VARINT",
        "options": {
          "minimum": 0
        }
      },
      "main": {
        "type": "object",
        "encoding": "REQUIRED_ONLY_BOUNDED_TYPED_OBJECT",
        "options": {
          "propertyEncodings": {
            "temp": {
              "type": "number",
              "encoding": "DOUBLE_VARINT_TUPLE",
              "options": {}
            },
            "feels_like": {
              "type": "number",
              "encoding": "DOUBLE_VARINT_TUPLE",
              "options": {}
            },
            "temp_min": {
              "type": "number",
              "encoding": "DOUBLE_VARINT_TUPLE",
              "options": {}
            },
            "temp_max": {
              "type": "number",
              "encoding": "DOUBLE_VARINT_TUPLE",
              "options": {}
            },
            "pressure": {
              "type": "integer",
              "encoding": "FLOOR_MULTIPLE_ENUM_VARINT",
              "options": {
                "minimum": 0,
                "multiplier": 1
              }
            },
            "humidity": {
              "type": "integer",
              "encoding": "FLOOR_MULTIPLE_ENUM_VARINT",
              "options": {
                "minimum": 0,
                "multiplier": 1
              }
            }
          },
          "requiredProperties": [
            "feels_like",
            "humidity",
            "pressure",
            "temp",
            "temp_max",
            "temp_min"
          ],
          "booleanRequiredProperties": []
        }
      },
      "visibility": {
        "type": "integer",
        "encoding": "FLOOR_MULTIPLE_ENUM_VARINT",
        "options": {
          "minimum": 0,
          "multiplier": 1
        }
      },
      "wind": {
        "type": "object",
        "encoding": "REQUIRED_ONLY_BOUNDED_TYPED_OBJECT",
        "options": {
          "propertyEncodings": {
            "speed": {
              "type": "number",
              "encoding": "DOUBLE_VARINT_TUPLE",
              "options": {}
            },
            "deg": {
              "type": "integer",
              "encoding": "FLOOR_MULTIPLE_ENUM_VARINT",
              "options": {
                "minimum": 0,
                "multiplier": 1
              }
            }
          },
          "requiredProperties": [
            "deg",
            "speed"
          ],
          "booleanRequiredProperties": []
        }
      },
      "clouds": {
        "type": "object",
        "encoding": "REQUIRED_ONLY_BOUNDED_TYPED_OBJECT",
        "options": {
          "propertyEncodings": {
            "all": {
              "type": "integer",
              "encoding": "FLOOR_MULTIPLE_ENUM_VARINT",
              "options": {
                "minimum": 0,
                "multiplier": 1
              }
            }
          },
          "requiredProperties": [
            "all"
          ],
          "booleanRequiredProperties": []
        }
      },
      "dt": {
        "type": "integer",
        "encoding": "FLOOR_MULTIPLE_ENUM_VARINT",
        "options": {
          "minimum": 0,
          "multiplier": 1
        }
      },
      "sys": {
        "type": "object",
        "encoding": "REQUIRED_ONLY_BOUNDED_TYPED_OBJECT",
        "options": {
          "propertyEncodings": {
            "type": {
              "type": "integer",
              "encoding": "FLOOR_MULTIPLE_ENUM_VARINT",
              "options": {
                "minimum": 0,
                "multiplier": 1
              }
            },
            "id": {
              "type": "integer",
              "encoding": "FLOOR_MULTIPLE_ENUM_VARINT",
              "options": {
                "minimum": 0,
                "multiplier": 1
              }
            },
            "message": {
              "type": "number",
              "encoding": "DOUBLE_VARINT_TUPLE",
              "options": {}
            },
            "country": {
              "type": "string",
              "encoding": "FLOOR_PREFIX_LENGTH_ENUM_VARINT",
              "options": {
                "minimum": 0
              }
            },
            "sunrise": {
              "type": "integer",
              "encoding": "FLOOR_MULTIPLE_ENUM_VARINT",
              "options": {
                "minimum": 0,
                "multiplier": 1
              }
            },
            "sunset": {
              "type": "integer",
              "encoding": "FLOOR_MULTIPLE_ENUM_VARINT",
              "options": {
                "minimum": 0,
                "multiplier": 1
              }
            }
          },
          "requiredProperties": [
            "country",
            "id",
            "message",
            "sunrise",
            "sunset",
            "type"
          ],
          "booleanRequiredProperties": []
        }
      },
      "timezone": {
        "type": "integer",
        "encoding": "ARBITRARY_MULTIPLE_ZIGZAG_VARINT",
        "options": {
          "multiplier": 1
        }
      },
      "id": {
        "type": "integer",
        "encoding": "FLOOR_MULTIPLE_ENUM_VARINT",
        "options": {
          "minimum": 0,
          "multiplier": 1
        }
      },
      "name": {
        "type": "string",
        "encoding": "FLOOR_PREFIX_LENGTH_ENUM_VARINT",
        "options": {
          "minimum": 0
        }
      },
      "cod": {
        "type": "integer",
        "encoding": "FLOOR_MULTIPLE_ENUM_VARINT",
        "options": {
          "minimum": 0,
          "multiplier": 1
        }
      }
    },
    "requiredProperties": [
      "base",
      "clouds",
      "cod",
      "coord",
      "dt",
      "id",
      "main",
      "name",
      "sys",
      "timezone",
      "visibility",
      "weather",
      "wind"
    ],
    "booleanRequiredProperties": []
  }
}
