{
    "definitions": {
        "filter": {
            "properties": {
                "column": {
                    "type": "string"
                },
                "not": {
                    "type": "boolean"
                },
                "operator": {
                    "enum": [
                        "equals",
                        "regex"
                    ]
                },
                "value": {
                    "type": "string"
                }
            },
            "required": [
                "column",
                "operator",
                "value"
            ],
            "type": "object"
        },
        "linkout": {
            "oneOf": [
                {
                    "required": [
                        "featuretype"
                    ]
                },
                {
                    "required": [
                        "featuretypePattern"
                    ]
                }
            ],
            "properties": {
                "featuretype": {
                    "type": "string"
                },
                "featuretypePattern": {
                    "type": "string"
                },
                "isLinkingService": {
                    "default": false,
                    "type": "boolean"
                },
                "text": {
                    "type": "string"
                },
                "url": {
                    "type": "string"
                }
            },
            "required": [
                "url"
            ],
            "type": "object"
        }
    },
    "description": "For more info, see https://github.com/ncgr/cmap-js",
    "properties": {
        "#": {
            "type": "string"
        },
        "attribution": {
            "type": "string"
        },
        "header": {
            "type": "string"
        },
        "initialView": {
            "items": {
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/definitions/filter"
                        },
                        "type": "array"
                    },
                    "map": {
                        "type": "string"
                    },
                    "source": {
                        "type": "string"
                    }
                },
                "required": [
                    "source",
                    "map"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "sources": {
            "items": {
                "properties": {
                    "#": {
                        "type": "string"
                    },
                    "data": {
                        "type": "object"
                    },
                    "filters": {
                        "items": {
                            "$ref": "#/definitions/filter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "type": "string"
                    },
                    "linkouts": {
                        "items": {
                            "$ref": "#/definitions/linkout"
                        },
                        "type": "array"
                    },
                    "method": {
                        "type": "string"
                    },
                    "url": {
                        "type": "string"
                    }
                },
                "required": [
                    "url",
                    "method",
                    "id"
                ],
                "type": "object"
            },
            "type": "array"
        }
    },
    "required": [
        "header",
        "attribution",
        "sources"
    ],
    "title": "cmap-js schema",
    "type": "object"
}