{
    "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": []
    }
}
