{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "polygon",
    "description": "Polygon as defined by GeoJSON",
    "type": "object",
    "required": [
        "type",
        "coordinates"
    ],
    "properties": {
        "type": {
            "enum": [
                "Polygon"
            ]
        },
        "coordinates": {
            "$ref": "#/definitions/polygon"
        }
    },
    "definitions": {
        "position": {
            "description": "A single position",
            "type": "array",
            "minItems": 2,
            "items": [
                {
                    "type": "number"
                },
                {
                    "type": "number"
                }
            ],
            "additionalItems": false
        },
        "positionArray": {
            "description": "An array of positions",
            "type": "array",
            "items": {
                "$ref": "#/definitions/position"
            }
        },
        "lineString": {
            "description": "An array of two or more positions",
            "allOf": [
                {
                    "$ref": "#/definitions/positionArray"
                },
                {
                    "minItems": 2
                }
            ]
        },
        "linearRing": {
            "description": "An array of four positions where the first equals the last",
            "allOf": [
                {
                    "$ref": "#/definitions/positionArray"
                },
                {
                    "minItems": 4
                }
            ]
        },
        "polygon": {
            "description": "An array of linear rings",
            "type": "array",
            "items": {
                "$ref": "#/definitions/linearRing"
            }
        }
    }
}
