{
    "definitions": {
        "allowance": {
            "properties": {
                "cities": {
                    "type": "number"
                },
                "roads": {
                    "type": "number"
                },
                "settlements": {
                    "type": "number"
                }
            },
            "required": [
                "cities",
                "settlements",
                "roads"
            ],
            "type": "object"
        },
        "board": {
            "properties": {
                "corners": {
                    "items": {
                        "$ref": "#/definitions/corner"
                    },
                    "type": "array"
                },
                "edges": {
                    "items": {
                        "$ref": "#/definitions/edge"
                    },
                    "type": "array"
                },
                "height": {
                    "type": "number"
                },
                "hex": {
                    "$ref": "#/definitions/hexInfo"
                },
                "tiles": {
                    "items": {
                        "$ref": "#/definitions/tile"
                    },
                    "type": "array"
                },
                "width": {
                    "type": "number"
                }
            },
            "required": [
                "width",
                "height",
                "hex",
                "edges",
                "tiles",
                "corners"
            ],
            "type": "object"
        },
        "corner": {
            "properties": {
                "center": {
                    "$ref": "#/definitions/point"
                },
                "id": {
                    "type": "string"
                }
            },
            "required": [
                "id",
                "center"
            ],
            "type": "object"
        },
        "edge": {
            "properties": {
                "center": {
                    "$ref": "#/definitions/point"
                },
                "ends": {
                    "$ref": "#/definitions/vector"
                },
                "id": {
                    "type": "string"
                }
            },
            "required": [
                "id",
                "center",
                "ends"
            ],
            "type": "object"
        },
        "hexInfo": {
            "properties": {
                "apothem": {
                    "type": "number"
                },
                "circumradius": {
                    "type": "number"
                }
            },
            "required": [
                "apothem",
                "circumradius"
            ],
            "type": "object"
        },
        "point": {
            "properties": {
                "x": {
                    "type": "number"
                },
                "y": {
                    "type": "number"
                }
            },
            "required": [
                "x",
                "y"
            ],
            "type": "object"
        },
        "tile": {
            "properties": {
                "center": {
                    "$ref": "#/definitions/point"
                },
                "id": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                },
                "value": {
                    "type": "number"
                }
            },
            "required": [
                "id",
                "center",
                "type"
            ],
            "type": "object"
        },
        "vector": {
            "items": {
                "$ref": "#/definitions/point",
                "maxItems": 2,
                "minItems": 2,
                "_uniqueItems": true
            },
            "type": "array"
        }
    },
    "properties": {
        "allowance": {
            "$ref": "#/definitions/allowance"
        },
        "board": {
            "$ref": "#/definitions/board"
        }
    },
    "required": [
        "allowance",
        "board"
    ],
    "type": "object"
}