{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "dataSources": {
      "items": {
        "$ref": "#/$defs/DataSourceType"
      },
      "type": "array"
    },
    "interface": {
      "additionalProperties": false,
      "properties": {
        "cards": {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/TitleCard"
              },
              {
                "$ref": "#/$defs/LegendCard"
              },
              {
                "$ref": "#/$defs/PolygonFilterCard"
              },
              {
                "$ref": "#/$defs/ChartCard"
              },
              {
                "$ref": "#/$defs/BigNumberCard"
              },
              {
                "$ref": "#/$defs/FilterCard"
              },
              {
                "$ref": "#/$defs/TimelineFilterCard"
              },
              {
                "$ref": "#/$defs/DateFilterCard"
              }
            ]
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "mapLayers": {
      "items": {
        "$ref": "#/$defs/MapLayer"
      },
      "type": "array"
    },
    "schemaVersion": {
      "type": "string"
    },
    "settings": {
      "additionalProperties": false,
      "properties": {
        "basemap_style": {
          "enum": [
            "light",
            "dark",
            "white",
            "grayscale",
            "black"
          ],
          "type": "string"
        },
        "initialView": {
          "additionalProperties": false,
          "properties": {
            "bearing": {
              "type": "number"
            },
            "latitude": {
              "type": "number"
            },
            "longitude": {
              "type": "number"
            },
            "pitch": {
              "type": "number"
            },
            "zoom": {
              "type": "number"
            }
          },
          "type": "object"
        },
        "persistFiltersOnSave": {
          "type": "boolean"
        },
        "ui_theme": {
          "enum": [
            "light",
            "dark"
          ],
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "required": [
    "settings"
  ],
  "type": "object",
  "$defs": {
    "ColorPaletteName": {
      "enum": [
        "YlGn",
        "YlGnBu",
        "GnBu",
        "BuGn",
        "PuBuGn",
        "PuBu",
        "BuPu",
        "RdPu",
        "PuRd",
        "OrRd",
        "YlOrRd",
        "YlOrBr",
        "Purples",
        "Blues",
        "Greens",
        "Oranges",
        "Reds",
        "Greys",
        "PuOr",
        "BrBG",
        "PRGn",
        "PiYG",
        "RdBu",
        "RdGy",
        "RdYlBu",
        "Spectral",
        "RdYlGn",
        "Accent",
        "Dark2",
        "Paired",
        "Pastel1",
        "Pastel2",
        "Set1",
        "Set2",
        "Set3",
        "Glasbey",
        "GreenArmytage",
        "Kelly"
      ],
      "type": "string"
    },
    "AggregationType": {
      "enum": [
        "min",
        "max",
        "sum",
        "avg",
        "count",
        "median"
      ],
      "type": "string"
    },
    "ArcLayer": {
      "additionalProperties": false,
      "properties": {
        "colorScheme": {
          "$ref": "#/$defs/ColorSchemeConfig"
        },
        "dataSourceId": {
          "type": "string"
        },
        "destinationLatitudeFieldId": {
          "type": "string"
        },
        "destinationLongitudeFieldId": {
          "type": "string"
        },
        "enableTooltips": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "layerType": {
          "const": "ArcLayer",
          "type": "string"
        },
        "opacity": {
          "type": "number"
        },
        "originLatitudeFieldId": {
          "type": "string"
        },
        "originLongitudeFieldId": {
          "type": "string"
        },
        "size": {
          "$ref": "#/$defs/SizeConfig"
        },
        "tooltipFieldMetricFormatMap": {
          "additionalProperties": {
            "$ref": "#/$defs/MetricDisplayFormat"
          },
          "type": "object"
        },
        "tooltipFieldsIds": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "visible": {
          "type": "boolean"
        },
        "visibleZoomRange": {
          "items": {
            "type": "number"
          },
          "maxItems": 2,
          "minItems": 2,
          "type": "array"
        },
        "visibleZoomRangeEnabled": {
          "type": "boolean"
        }
      },
      "required": [
        "colorScheme",
        "dataSourceId",
        "destinationLatitudeFieldId",
        "destinationLongitudeFieldId",
        "enableTooltips",
        "id",
        "label",
        "layerType",
        "originLatitudeFieldId",
        "originLongitudeFieldId",
        "size"
      ],
      "type": "object"
    },
    "BigNumberCard": {
      "additionalProperties": false,
      "properties": {
        "aggregationType": {
          "$ref": "#/$defs/AggregationType"
        },
        "cardType": {
          "const": "BigNumberCard",
          "type": "string"
        },
        "dataSourceId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "interfacePosition": {
          "enum": [
            "left",
            "right"
          ],
          "type": "string"
        },
        "measureFieldId": {
          "type": "string"
        },
        "metricDisplayFormat": {
          "$ref": "#/$defs/MetricDisplayFormat"
        },
        "subtitle": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "cardType",
        "measureFieldId",
        "dataSourceId",
        "aggregationType",
        "interfacePosition"
      ],
      "type": "object"
    },
    "CategoricalColorConfig": {
      "additionalProperties": false,
      "properties": {
        "categorical": {
          "const": true,
          "type": "boolean"
        },
        "colorFieldId": {
          "type": "string"
        },
        "customColorMapping": {
          "$ref": "#/$defs/CustomColorMapping"
        },
        "isStatic": {
          "const": false,
          "type": "boolean"
        },
        "scheme": {
          "$ref": "#/$defs/ColorPaletteName"
        }
      },
      "required": [
        "isStatic",
        "categorical",
        "colorFieldId",
        "scheme",
        "customColorMapping"
      ],
      "type": "object"
    },
    "CategoricalMultiFilterCard": {
      "additionalProperties": false,
      "properties": {
        "allowMultipleSelections": {
          "const": true,
          "type": "boolean"
        },
        "applyToLayers": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "cardType": {
          "const": "FilterCard",
          "type": "string"
        },
        "categorical": {
          "const": true,
          "type": "boolean"
        },
        "currentValue": {
          "$ref": "#/$defs/CategoricalMultiFilterValue"
        },
        "dataSourceId": {
          "type": "string"
        },
        "filterType": {
          "enum": [
            "dropdown",
            "radio",
            "toggle"
          ],
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "interfacePosition": {
          "enum": [
            "left",
            "right"
          ],
          "type": "string"
        },
        "measureFieldId": {
          "type": "string"
        },
        "subtitle": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "allowMultipleSelections",
        "applyToLayers",
        "cardType",
        "categorical",
        "currentValue",
        "dataSourceId",
        "filterType",
        "id",
        "interfacePosition",
        "measureFieldId"
      ],
      "type": "object"
    },
    "CategoricalMultiFilterValue": {
      "anyOf": [
        {
          "items": {
            "type": [
              "string",
              "boolean"
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ]
    },
    "CategoricalSingleFilterCard": {
      "additionalProperties": false,
      "properties": {
        "allowMultipleSelections": {
          "const": false,
          "type": "boolean"
        },
        "applyToLayers": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "cardType": {
          "const": "FilterCard",
          "type": "string"
        },
        "categorical": {
          "const": true,
          "type": "boolean"
        },
        "currentValue": {
          "$ref": "#/$defs/CategoricalSingleFilterValue"
        },
        "dataSourceId": {
          "type": "string"
        },
        "filterType": {
          "enum": [
            "dropdown",
            "radio",
            "toggle"
          ],
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "interfacePosition": {
          "enum": [
            "left",
            "right"
          ],
          "type": "string"
        },
        "measureFieldId": {
          "type": "string"
        },
        "subtitle": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "allowMultipleSelections",
        "applyToLayers",
        "cardType",
        "categorical",
        "currentValue",
        "dataSourceId",
        "filterType",
        "id",
        "interfacePosition",
        "measureFieldId"
      ],
      "type": "object"
    },
    "CategoricalSingleFilterValue": {
      "type": [
        "string",
        "boolean",
        "null"
      ]
    },
    "ChartCard": {
      "anyOf": [
        {
          "additionalProperties": false,
          "properties": {
            "allowMultipleSelections": {
              "const": false,
              "type": "boolean"
            },
            "applyToLayers": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "horizontalBar",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "currentValue": {
              "$ref": "#/$defs/CategoricalSingleFilterValue"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": true,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "qualitativeField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "sort": {
              "$ref": "#/$defs/SortConfig"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            }
          },
          "required": [
            "allowMultipleSelections",
            "applyToLayers",
            "cardType",
            "chartType",
            "currentValue",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "qualitativeField",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "allowMultipleSelections": {
              "const": true,
              "type": "boolean"
            },
            "applyToLayers": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "horizontalBar",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "currentValue": {
              "$ref": "#/$defs/CategoricalMultiFilterValue"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": true,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "qualitativeField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "sort": {
              "$ref": "#/$defs/SortConfig"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            }
          },
          "required": [
            "allowMultipleSelections",
            "applyToLayers",
            "cardType",
            "chartType",
            "currentValue",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "qualitativeField",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "horizontalBar",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": false,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "qualitativeField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "sort": {
              "$ref": "#/$defs/SortConfig"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            }
          },
          "required": [
            "cardType",
            "chartType",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "qualitativeField",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "allowMultipleSelections": {
              "const": false,
              "type": "boolean"
            },
            "applyToLayers": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "verticalBar",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "currentValue": {
              "$ref": "#/$defs/CategoricalSingleFilterValue"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": true,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "qualitativeField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "sort": {
              "$ref": "#/$defs/SortConfig"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            }
          },
          "required": [
            "allowMultipleSelections",
            "applyToLayers",
            "cardType",
            "chartType",
            "currentValue",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "qualitativeField",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "allowMultipleSelections": {
              "const": true,
              "type": "boolean"
            },
            "applyToLayers": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "verticalBar",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "currentValue": {
              "$ref": "#/$defs/CategoricalMultiFilterValue"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": true,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "qualitativeField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "sort": {
              "$ref": "#/$defs/SortConfig"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            }
          },
          "required": [
            "allowMultipleSelections",
            "applyToLayers",
            "cardType",
            "chartType",
            "currentValue",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "qualitativeField",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "verticalBar",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": false,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "qualitativeField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "sort": {
              "$ref": "#/$defs/SortConfig"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            }
          },
          "required": [
            "cardType",
            "chartType",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "qualitativeField",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "allowMultipleSelections": {
              "const": false,
              "type": "boolean"
            },
            "applyToLayers": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "line",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "currentValue": {
              "$ref": "#/$defs/RangeSliderFilterValue"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": true,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "seriesField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            },
            "xField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "yField": {
              "$ref": "#/$defs/QuantitativeField"
            }
          },
          "required": [
            "allowMultipleSelections",
            "applyToLayers",
            "cardType",
            "chartType",
            "currentValue",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "title",
            "xField",
            "yField"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "allowMultipleSelections": {
              "const": false,
              "type": "boolean"
            },
            "applyToLayers": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "line",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "currentValue": {
              "$ref": "#/$defs/CategoricalSingleFilterValue"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": true,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "seriesField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            },
            "xField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "yField": {
              "$ref": "#/$defs/QuantitativeField"
            }
          },
          "required": [
            "allowMultipleSelections",
            "applyToLayers",
            "cardType",
            "chartType",
            "currentValue",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "title",
            "xField",
            "yField"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "allowMultipleSelections": {
              "const": true,
              "type": "boolean"
            },
            "applyToLayers": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "line",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "currentValue": {
              "$ref": "#/$defs/CategoricalMultiFilterValue"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": true,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "seriesField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            },
            "xField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "yField": {
              "$ref": "#/$defs/QuantitativeField"
            }
          },
          "required": [
            "allowMultipleSelections",
            "applyToLayers",
            "cardType",
            "chartType",
            "currentValue",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "title",
            "xField",
            "yField"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "line",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": false,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "seriesField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            },
            "xField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "yField": {
              "$ref": "#/$defs/QuantitativeField"
            }
          },
          "required": [
            "cardType",
            "chartType",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "title",
            "xField",
            "yField"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "allowMultipleSelections": {
              "const": false,
              "type": "boolean"
            },
            "applyToLayers": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "pie",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "currentValue": {
              "$ref": "#/$defs/CategoricalSingleFilterValue"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": true,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "qualitativeField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "sort": {
              "$ref": "#/$defs/SortConfig"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            }
          },
          "required": [
            "allowMultipleSelections",
            "applyToLayers",
            "cardType",
            "chartType",
            "currentValue",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "qualitativeField",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "allowMultipleSelections": {
              "const": true,
              "type": "boolean"
            },
            "applyToLayers": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "pie",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "currentValue": {
              "$ref": "#/$defs/CategoricalMultiFilterValue"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": true,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "qualitativeField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "sort": {
              "$ref": "#/$defs/SortConfig"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            }
          },
          "required": [
            "allowMultipleSelections",
            "applyToLayers",
            "cardType",
            "chartType",
            "currentValue",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "qualitativeField",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "pie",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": false,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "qualitativeField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "sort": {
              "$ref": "#/$defs/SortConfig"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            }
          },
          "required": [
            "cardType",
            "chartType",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "qualitativeField",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "allowMultipleSelections": {
              "const": false,
              "type": "boolean"
            },
            "applyToLayers": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "treemap",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "currentValue": {
              "$ref": "#/$defs/CategoricalSingleFilterValue"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": true,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "qualitativeField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "sort": {
              "$ref": "#/$defs/SortConfig"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            }
          },
          "required": [
            "allowMultipleSelections",
            "applyToLayers",
            "cardType",
            "chartType",
            "currentValue",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "qualitativeField",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "allowMultipleSelections": {
              "const": true,
              "type": "boolean"
            },
            "applyToLayers": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "treemap",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "currentValue": {
              "$ref": "#/$defs/CategoricalMultiFilterValue"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": true,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "qualitativeField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "sort": {
              "$ref": "#/$defs/SortConfig"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            }
          },
          "required": [
            "allowMultipleSelections",
            "applyToLayers",
            "cardType",
            "chartType",
            "currentValue",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "qualitativeField",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "treemap",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": false,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "qualitativeField": {
              "$ref": "#/$defs/QualitativeField"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "sort": {
              "$ref": "#/$defs/SortConfig"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            }
          },
          "required": [
            "cardType",
            "chartType",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "qualitativeField",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "allowMultipleSelections": {
              "const": false,
              "type": "boolean"
            },
            "applyToLayers": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "histogram",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "currentValue": {
              "$ref": "#/$defs/RangeSliderFilterValue"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": true,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "numberOfBins": {
              "type": "number"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            },
            "xAxisLabel": {
              "type": "string"
            },
            "xScaleRange": {
              "$ref": "#/$defs/ScaleRange"
            },
            "yAxisLabel": {
              "type": "string"
            },
            "yScaleRange": {
              "$ref": "#/$defs/ScaleRange"
            },
            "yScaleType": {
              "$ref": "#/$defs/YScaleType"
            }
          },
          "required": [
            "allowMultipleSelections",
            "applyToLayers",
            "cardType",
            "chartType",
            "currentValue",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "cardType": {
              "const": "ChartCard",
              "type": "string"
            },
            "chartType": {
              "const": "histogram",
              "type": "string"
            },
            "color": {
              "$ref": "#/$defs/ColorSchemeConfig"
            },
            "dataSourceId": {
              "type": "string"
            },
            "functionAsFilter": {
              "const": false,
              "type": "boolean"
            },
            "id": {
              "type": "string"
            },
            "interfacePosition": {
              "enum": [
                "left",
                "right"
              ],
              "type": "string"
            },
            "numberOfBins": {
              "type": "number"
            },
            "quantitativeField": {
              "$ref": "#/$defs/QuantitativeField"
            },
            "subtitle": {
              "type": "string"
            },
            "title": {
              "type": "string"
            },
            "xAxisLabel": {
              "type": "string"
            },
            "xScaleRange": {
              "$ref": "#/$defs/ScaleRange"
            },
            "yAxisLabel": {
              "type": "string"
            },
            "yScaleRange": {
              "$ref": "#/$defs/ScaleRange"
            },
            "yScaleType": {
              "$ref": "#/$defs/YScaleType"
            }
          },
          "required": [
            "cardType",
            "chartType",
            "dataSourceId",
            "functionAsFilter",
            "id",
            "interfacePosition",
            "quantitativeField",
            "title"
          ],
          "type": "object"
        }
      ]
    },
    "ColorRange": {
      "additionalProperties": false,
      "description": "Represents a color range with start inclusive and end exclusive [start, end)",
      "properties": {
        "color": {
          "description": "Hex color code for this range (e.g., \"#FF0000\")",
          "type": "string"
        },
        "end": {
          "description": "End of the range (exclusive)",
          "type": "number"
        },
        "start": {
          "description": "Start of the range (inclusive)",
          "type": "number"
        }
      },
      "required": [
        "start",
        "end",
        "color"
      ],
      "type": "object"
    },
    "ColorSchemeConfig": {
      "anyOf": [
        {
          "$ref": "#/$defs/StaticColorConfig"
        },
        {
          "$ref": "#/$defs/DynamicColorConfig"
        }
      ]
    },
    "ContinuousColorConfig": {
      "additionalProperties": false,
      "properties": {
        "categorical": {
          "const": false,
          "type": "boolean"
        },
        "colorFieldId": {
          "type": "string"
        },
        "interpolationType": {
          "enum": [
            "value",
            "quantile"
          ],
          "type": "string"
        },
        "isStatic": {
          "const": false,
          "type": "boolean"
        },
        "metricDisplayFormat": {
          "$ref": "#/$defs/MetricDisplayFormat"
        },
        "reversed": {
          "type": "boolean"
        },
        "scheme": {
          "$ref": "#/$defs/ColorPaletteName"
        },
        "steps": {
          "type": "number"
        }
      },
      "required": [
        "categorical",
        "colorFieldId",
        "interpolationType",
        "isStatic",
        "reversed",
        "scheme",
        "steps"
      ],
      "type": "object"
    },
    "CustomColorMapping": {
      "additionalProperties": {
        "type": "string"
      },
      "type": "object"
    },
    "CustomDiscreteColorConfig": {
      "additionalProperties": false,
      "properties": {
        "categorical": {
          "const": false,
          "type": "boolean"
        },
        "colorFieldId": {
          "type": "string"
        },
        "customDiscreteColorScale": {
          "$ref": "#/$defs/DiscreteColorScale"
        },
        "interpolationType": {
          "const": "custom_discrete",
          "type": "string"
        },
        "isStatic": {
          "const": false,
          "type": "boolean"
        },
        "metricDisplayFormat": {
          "$ref": "#/$defs/MetricDisplayFormat"
        },
        "reversed": {
          "type": "boolean"
        },
        "scheme": {
          "$ref": "#/$defs/ColorPaletteName"
        }
      },
      "required": [
        "categorical",
        "colorFieldId",
        "customDiscreteColorScale",
        "interpolationType",
        "isStatic",
        "reversed",
        "scheme"
      ],
      "type": "object"
    },
    "DataSourceType": {
      "anyOf": [
        {
          "$ref": "#/$defs/LocalFileDataSource"
        },
        {
          "$ref": "#/$defs/SnowflakeNativeAppDataSource"
        },
        {
          "$ref": "#/$defs/HoneycombHostedDataSource"
        }
      ]
    },
    "DateFilterCard": {
      "additionalProperties": false,
      "properties": {
        "applyToLayers": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "cardType": {
          "const": "DateFilterCard",
          "type": "string"
        },
        "dataSourceId": {
          "type": "string"
        },
        "dateFieldId": {
          "type": "string"
        },
        "endDate": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "interfacePosition": {
          "enum": [
            "left",
            "right"
          ],
          "type": "string"
        },
        "startDate": {
          "type": "string"
        },
        "subtitle": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "dataSourceId",
        "dateFieldId",
        "interfacePosition",
        "cardType",
        "applyToLayers"
      ],
      "type": "object"
    },
    "DiscreteColorScale": {
      "additionalProperties": false,
      "description": "Configuration for a color scale with discrete ranges",
      "properties": {
        "defaultColor": {
          "description": "Color to use for values not covered by any range",
          "type": "string"
        },
        "ranges": {
          "description": "Array of color ranges [start, end)",
          "items": {
            "$ref": "#/$defs/ColorRange"
          },
          "type": "array"
        }
      },
      "required": [
        "ranges",
        "defaultColor"
      ],
      "type": "object"
    },
    "DuckDBFieldType": {
      "enum": [
        "TINYINT",
        "INT1",
        "SMALLINT",
        "INT2",
        "SHORT",
        "INTEGER",
        "INT4",
        "INT",
        "SIGNED",
        "BIGINT",
        "INT8",
        "LONG",
        "HUGEINT",
        "UTINYINT",
        "USMALLINT",
        "UINTEGER",
        "UBIGINT",
        "UHUGEINT",
        "FLOAT",
        "FLOAT4",
        "REAL",
        "DOUBLE",
        "FLOAT8",
        "DECIMAL",
        "NUMERIC",
        "VARCHAR",
        "CHAR",
        "BPCHAR",
        "TEXT",
        "STRING",
        "BLOB",
        "BYTEA",
        "BINARY",
        "VARBINARY",
        "BIT",
        "BITSTRING",
        "DATE",
        "TIME",
        "TIME WITHOUT TIME ZONE",
        "TIMETZ",
        "TIME WITH TIME ZONE",
        "TIME_NS",
        "TIMESTAMP",
        "DATETIME",
        "TIMESTAMP WITHOUT TIME ZONE",
        "TIMESTAMP_NS",
        "TIMESTAMP_MS",
        "TIMESTAMP_S",
        "TIMESTAMPTZ",
        "TIMESTAMP WITH TIME ZONE",
        "INTERVAL",
        "BOOLEAN",
        "BOOL",
        "LOGICAL",
        "UUID",
        "JSON",
        "BIGNUM",
        "GEOMETRY",
        "GEOGRAPHY"
      ],
      "type": "string"
    },
    "DynamicColorConfig": {
      "anyOf": [
        {
          "$ref": "#/$defs/CategoricalColorConfig"
        },
        {
          "$ref": "#/$defs/QuantitativeColorConfig"
        }
      ]
    },
    "DynamicSizeConfig": {
      "additionalProperties": false,
      "properties": {
        "isStatic": {
          "const": false,
          "type": "boolean"
        },
        "minPixels": {
          "type": "number"
        },
        "sizeField": {
          "type": "string"
        },
        "sizeScalar": {
          "type": "number"
        },
        "units": {
          "enum": [
            "meters",
            "pixels"
          ],
          "type": "string"
        }
      },
      "required": [
        "isStatic",
        "sizeScalar",
        "units",
        "sizeField",
        "minPixels"
      ],
      "type": "object"
    },
    "Field": {
      "additionalProperties": false,
      "properties": {
        "colname": {
          "type": "string"
        },
        "geographicType": {
          "enum": [
            "h3",
            "lat",
            "lon",
            "polygon",
            "none"
          ],
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "type": {
          "$ref": "#/$defs/DuckDBFieldType"
        }
      },
      "required": [
        "colname",
        "type",
        "label",
        "id"
      ],
      "type": "object"
    },
    "FilterCard": {
      "anyOf": [
        {
          "$ref": "#/$defs/CategoricalSingleFilterCard"
        },
        {
          "$ref": "#/$defs/CategoricalMultiFilterCard"
        },
        {
          "$ref": "#/$defs/SingleSliderFilterCard"
        },
        {
          "$ref": "#/$defs/RangeSliderFilterCard"
        },
        {
          "$ref": "#/$defs/TextSingleFilterCard"
        },
        {
          "$ref": "#/$defs/TextMultiFilterCard"
        }
      ]
    },
    "GeoJSON.Feature": {
      "additionalProperties": false,
      "properties": {
        "geometry": {
          "$ref": "#/$defs/GeoJSON.Geometry"
        },
        "properties": {
          "anyOf": [
            {
              "additionalProperties": {},
              "type": "object"
            },
            {
              "type": "null"
            }
          ]
        },
        "type": {
          "const": "Feature",
          "type": "string"
        }
      },
      "required": [
        "type",
        "geometry",
        "properties"
      ],
      "type": "object"
    },
    "GeoJSON.FeatureCollection": {
      "additionalProperties": false,
      "properties": {
        "features": {
          "items": {
            "$ref": "#/$defs/GeoJSON.Feature"
          },
          "type": "array"
        },
        "type": {
          "const": "FeatureCollection",
          "type": "string"
        }
      },
      "required": [
        "type",
        "features"
      ],
      "type": "object"
    },
    "GeoJSON.Geometry": {
      "anyOf": [
        {
          "$ref": "#/$defs/GeoJSON.Point"
        },
        {
          "$ref": "#/$defs/GeoJSON.MultiPoint"
        },
        {
          "$ref": "#/$defs/GeoJSON.LineString"
        },
        {
          "$ref": "#/$defs/GeoJSON.MultiLineString"
        },
        {
          "$ref": "#/$defs/GeoJSON.Polygon"
        },
        {
          "$ref": "#/$defs/GeoJSON.MultiPolygon"
        },
        {
          "$ref": "#/$defs/GeoJSON.GeometryCollection"
        }
      ]
    },
    "GeoJSON.GeometryCollection": {
      "additionalProperties": false,
      "properties": {
        "geometries": {
          "items": {
            "$ref": "#/$defs/GeoJSON.Geometry"
          },
          "type": "array"
        },
        "type": {
          "const": "GeometryCollection",
          "type": "string"
        }
      },
      "required": [
        "type",
        "geometries"
      ],
      "type": "object"
    },
    "GeoJSON.LineString": {
      "additionalProperties": false,
      "properties": {
        "coordinates": {
          "items": {
            "anyOf": [
              {
                "items": {
                  "type": "number"
                },
                "maxItems": 2,
                "minItems": 2,
                "type": "array"
              },
              {
                "items": {
                  "type": "number"
                },
                "maxItems": 3,
                "minItems": 3,
                "type": "array"
              }
            ]
          },
          "type": "array"
        },
        "type": {
          "const": "LineString",
          "type": "string"
        }
      },
      "required": [
        "type",
        "coordinates"
      ],
      "type": "object"
    },
    "GeoJSON.MultiLineString": {
      "additionalProperties": false,
      "properties": {
        "coordinates": {
          "items": {
            "items": {
              "anyOf": [
                {
                  "items": {
                    "type": "number"
                  },
                  "maxItems": 2,
                  "minItems": 2,
                  "type": "array"
                },
                {
                  "items": {
                    "type": "number"
                  },
                  "maxItems": 3,
                  "minItems": 3,
                  "type": "array"
                }
              ]
            },
            "type": "array"
          },
          "type": "array"
        },
        "type": {
          "const": "MultiLineString",
          "type": "string"
        }
      },
      "required": [
        "type",
        "coordinates"
      ],
      "type": "object"
    },
    "GeoJSON.MultiPoint": {
      "additionalProperties": false,
      "properties": {
        "coordinates": {
          "items": {
            "anyOf": [
              {
                "items": {
                  "type": "number"
                },
                "maxItems": 2,
                "minItems": 2,
                "type": "array"
              },
              {
                "items": {
                  "type": "number"
                },
                "maxItems": 3,
                "minItems": 3,
                "type": "array"
              }
            ]
          },
          "type": "array"
        },
        "type": {
          "const": "MultiPoint",
          "type": "string"
        }
      },
      "required": [
        "type",
        "coordinates"
      ],
      "type": "object"
    },
    "GeoJSON.MultiPolygon": {
      "additionalProperties": false,
      "properties": {
        "coordinates": {
          "items": {
            "items": {
              "items": {
                "anyOf": [
                  {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 2,
                    "minItems": 2,
                    "type": "array"
                  },
                  {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  }
                ]
              },
              "type": "array"
            },
            "type": "array"
          },
          "type": "array"
        },
        "type": {
          "const": "MultiPolygon",
          "type": "string"
        }
      },
      "required": [
        "type",
        "coordinates"
      ],
      "type": "object"
    },
    "GeoJSON.Point": {
      "additionalProperties": false,
      "properties": {
        "coordinates": {
          "anyOf": [
            {
              "items": {
                "type": "number"
              },
              "maxItems": 2,
              "minItems": 2,
              "type": "array"
            },
            {
              "items": {
                "type": "number"
              },
              "maxItems": 3,
              "minItems": 3,
              "type": "array"
            }
          ]
        },
        "type": {
          "const": "Point",
          "type": "string"
        }
      },
      "required": [
        "type",
        "coordinates"
      ],
      "type": "object"
    },
    "GeoJSON.Polygon": {
      "additionalProperties": false,
      "properties": {
        "coordinates": {
          "items": {
            "items": {
              "anyOf": [
                {
                  "items": {
                    "type": "number"
                  },
                  "maxItems": 2,
                  "minItems": 2,
                  "type": "array"
                },
                {
                  "items": {
                    "type": "number"
                  },
                  "maxItems": 3,
                  "minItems": 3,
                  "type": "array"
                }
              ]
            },
            "type": "array"
          },
          "type": "array"
        },
        "type": {
          "const": "Polygon",
          "type": "string"
        }
      },
      "required": [
        "type",
        "coordinates"
      ],
      "type": "object"
    },
    "H3PredicateValue": {
      "additionalProperties": false,
      "properties": {
        "geometryType": {
          "const": "h3",
          "type": "string"
        },
        "h3FieldId": {
          "type": "string"
        },
        "maxH3Resolution": {
          "type": "number"
        }
      },
      "required": [
        "geometryType",
        "h3FieldId",
        "maxH3Resolution"
      ],
      "type": "object"
    },
    "HoneycombHostedDataSource": {
      "additionalProperties": false,
      "properties": {
        "error": {
          "type": [
            "string",
            "null"
          ]
        },
        "fields": {
          "items": {
            "$ref": "#/$defs/Field"
          },
          "type": "array"
        },
        "hostedDataSourceId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "locationType": {
          "const": "honeycomb_hosted",
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "progress": {
          "type": "number"
        },
        "status": {
          "enum": [
            "not_loaded",
            "loading",
            "loaded",
            "error",
            "waiting",
            "remove",
            "not_loaded_saved_map"
          ],
          "type": "string"
        }
      },
      "required": [
        "fields",
        "hostedDataSourceId",
        "id",
        "locationType",
        "name"
      ],
      "type": "object"
    },
    "HoneycombLayer": {
      "additionalProperties": false,
      "properties": {
        "aggregationType": {
          "$ref": "#/$defs/AggregationType"
        },
        "colorScheme": {
          "$ref": "#/$defs/ColorSchemeConfig"
        },
        "dataSourceId": {
          "type": "string"
        },
        "enableTooltips": {
          "type": "boolean"
        },
        "h3Field": {
          "type": "string"
        },
        "h3FixedResolution": {
          "type": "number"
        },
        "h3ResolutionType": {
          "enum": [
            "auto",
            "native",
            "fixed"
          ],
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "layerType": {
          "const": "HoneycombLayer",
          "type": "string"
        },
        "maxH3Resolution": {
          "type": "number"
        },
        "measureField": {
          "type": "string"
        },
        "opacity": {
          "type": "number"
        },
        "tooltipFieldAggregationMap": {
          "additionalProperties": {
            "$ref": "#/$defs/AggregationType"
          },
          "type": "object"
        },
        "tooltipFieldMetricFormatMap": {
          "additionalProperties": {
            "$ref": "#/$defs/MetricDisplayFormat"
          },
          "type": "object"
        },
        "tooltipFieldsIds": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "visible": {
          "type": "boolean"
        },
        "visibleZoomRange": {
          "items": {
            "type": "number"
          },
          "maxItems": 2,
          "minItems": 2,
          "type": "array"
        },
        "visibleZoomRangeEnabled": {
          "type": "boolean"
        }
      },
      "required": [
        "aggregationType",
        "colorScheme",
        "dataSourceId",
        "enableTooltips",
        "h3Field",
        "h3ResolutionType",
        "id",
        "label",
        "layerType",
        "maxH3Resolution",
        "measureField"
      ],
      "type": "object"
    },
    "LatLonPredicateValue": {
      "additionalProperties": false,
      "properties": {
        "geometryType": {
          "const": "latlon",
          "type": "string"
        },
        "latitudeFieldId": {
          "type": "string"
        },
        "longitudeFieldId": {
          "type": "string"
        }
      },
      "required": [
        "geometryType",
        "latitudeFieldId",
        "longitudeFieldId"
      ],
      "type": "object"
    },
    "LegendCard": {
      "additionalProperties": false,
      "properties": {
        "cardType": {
          "const": "LegendCard",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "interfacePosition": {
          "enum": [
            "left",
            "right"
          ],
          "type": "string"
        },
        "isCollapsed": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "id",
        "cardType",
        "interfacePosition"
      ],
      "type": "object"
    },
    "LineLayer": {
      "additionalProperties": false,
      "properties": {
        "colorScheme": {
          "$ref": "#/$defs/ColorSchemeConfig"
        },
        "dataSourceId": {
          "type": "string"
        },
        "enableTooltips": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "layerType": {
          "const": "LineLayer",
          "type": "string"
        },
        "lineField": {
          "type": "string"
        },
        "opacity": {
          "type": "number"
        },
        "size": {
          "$ref": "#/$defs/SizeConfig"
        },
        "tooltipFieldMetricFormatMap": {
          "additionalProperties": {
            "$ref": "#/$defs/MetricDisplayFormat"
          },
          "type": "object"
        },
        "tooltipFieldsIds": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "visible": {
          "type": "boolean"
        },
        "visibleZoomRange": {
          "items": {
            "type": "number"
          },
          "maxItems": 2,
          "minItems": 2,
          "type": "array"
        },
        "visibleZoomRangeEnabled": {
          "type": "boolean"
        }
      },
      "required": [
        "colorScheme",
        "dataSourceId",
        "enableTooltips",
        "id",
        "label",
        "layerType",
        "lineField",
        "size"
      ],
      "type": "object"
    },
    "LocalFileDataSource": {
      "additionalProperties": false,
      "properties": {
        "error": {
          "type": [
            "string",
            "null"
          ]
        },
        "fields": {
          "items": {
            "$ref": "#/$defs/Field"
          },
          "type": "array"
        },
        "id": {
          "type": "string"
        },
        "location": {
          "type": [
            "string",
            "null"
          ]
        },
        "locationType": {
          "const": "local_file",
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "progress": {
          "type": "number"
        },
        "status": {
          "enum": [
            "not_loaded",
            "loading",
            "loaded",
            "error",
            "waiting",
            "remove",
            "not_loaded_saved_map"
          ],
          "type": "string"
        },
        "type": {
          "enum": [
            "csv",
            "geojson",
            "parquet",
            "kml"
          ],
          "type": "string"
        }
      },
      "required": [
        "fields",
        "id",
        "location",
        "locationType",
        "name",
        "type"
      ],
      "type": "object"
    },
    "MapLayer": {
      "anyOf": [
        {
          "$ref": "#/$defs/PointLayer"
        },
        {
          "$ref": "#/$defs/PolygonLayer"
        },
        {
          "$ref": "#/$defs/HoneycombLayer"
        },
        {
          "$ref": "#/$defs/LineLayer"
        },
        {
          "$ref": "#/$defs/ArcLayer"
        }
      ]
    },
    "MetricDisplayFormat": {
      "additionalProperties": false,
      "properties": {
        "format": {
          "$ref": "#/$defs/MetricFormat"
        },
        "unit": {
          "$ref": "#/$defs/UnitFormat"
        }
      },
      "required": [
        "format"
      ],
      "type": "object"
    },
    "MetricFormat": {
      "anyOf": [
        {
          "additionalProperties": false,
          "properties": {
            "type": {
              "const": "auto",
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "decimalPlaces": {
              "type": "number"
            },
            "showSign": {
              "enum": [
                "auto",
                "always",
                "parentheses"
              ],
              "type": "string"
            },
            "type": {
              "const": "number",
              "type": "string"
            },
            "useThousandsSeparator": {
              "type": "boolean"
            }
          },
          "required": [
            "type"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "decimalPlaces": {
              "type": "number"
            },
            "multiplyBy100": {
              "type": "boolean"
            },
            "type": {
              "const": "percent",
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "decimalPlaces": {
              "type": "number"
            },
            "negativeStyle": {
              "enum": [
                "minus",
                "parentheses"
              ],
              "type": "string"
            },
            "symbol": {
              "type": "string"
            },
            "symbolPosition": {
              "enum": [
                "prefix",
                "suffix"
              ],
              "type": "string"
            },
            "type": {
              "const": "currency",
              "type": "string"
            },
            "useThousandsSeparator": {
              "type": "boolean"
            }
          },
          "required": [
            "type"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "customFormat": {
              "type": "string"
            },
            "dateStyle": {
              "enum": [
                "short",
                "medium",
                "long",
                "full"
              ],
              "type": "string"
            },
            "timeStyle": {
              "enum": [
                "short",
                "medium",
                "long",
                "full",
                "none"
              ],
              "type": "string"
            },
            "type": {
              "const": "datetime",
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "base": {
              "enum": [
                1000,
                1000000,
                1000000000
              ],
              "type": "number"
            },
            "decimalPlaces": {
              "type": "number"
            },
            "showSuffix": {
              "type": "boolean"
            },
            "type": {
              "const": "compact",
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "pattern": {
              "type": "string"
            },
            "type": {
              "const": "custom",
              "type": "string"
            }
          },
          "required": [
            "type",
            "pattern"
          ],
          "type": "object"
        }
      ]
    },
    "PointLayer": {
      "additionalProperties": false,
      "properties": {
        "colorScheme": {
          "$ref": "#/$defs/ColorSchemeConfig"
        },
        "dataSourceId": {
          "type": "string"
        },
        "enableTooltips": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "latitudeFieldId": {
          "type": "string"
        },
        "layerType": {
          "const": "PointLayer",
          "type": "string"
        },
        "longitudeFieldId": {
          "type": "string"
        },
        "opacity": {
          "type": "number"
        },
        "radiusMeters": {
          "type": "number"
        },
        "radiusMinPixels": {
          "type": "number"
        },
        "tooltipFieldMetricFormatMap": {
          "additionalProperties": {
            "$ref": "#/$defs/MetricDisplayFormat"
          },
          "type": "object"
        },
        "tooltipFieldsIds": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "visible": {
          "type": "boolean"
        },
        "visibleZoomRange": {
          "items": {
            "type": "number"
          },
          "maxItems": 2,
          "minItems": 2,
          "type": "array"
        },
        "visibleZoomRangeEnabled": {
          "type": "boolean"
        }
      },
      "required": [
        "colorScheme",
        "dataSourceId",
        "enableTooltips",
        "id",
        "label",
        "latitudeFieldId",
        "layerType",
        "longitudeFieldId"
      ],
      "type": "object"
    },
    "PolygonFilterCard": {
      "additionalProperties": false,
      "properties": {
        "active": {
          "type": "boolean"
        },
        "applyToLayers": {
          "additionalProperties": {
            "$ref": "#/$defs/PolygonFilterPredicateValue"
          },
          "type": "object"
        },
        "cardType": {
          "const": "PolygonFilterCard",
          "type": "string"
        },
        "currentGeometry": {
          "$ref": "#/$defs/GeoJSON.FeatureCollection"
        },
        "filterPolygonDatasetId": {
          "type": "string"
        },
        "filterPolygonGeometryField": {
          "type": "string"
        },
        "filterPolygonLabelField": {
          "type": "string"
        },
        "filterPolygonUniqueIdField": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "interfacePosition": {
          "enum": [
            "left",
            "right"
          ],
          "type": "string"
        },
        "polygonMethods": {
          "additionalProperties": false,
          "properties": {
            "drawing": {
              "type": "boolean"
            },
            "selectFromData": {
              "type": "boolean"
            },
            "uploadGeoJSON": {
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "stage": {
          "enum": [
            "none",
            "draw",
            "edit",
            "view"
          ],
          "type": "string"
        },
        "subtitle": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "cardType",
        "interfacePosition",
        "currentGeometry",
        "active",
        "stage",
        "applyToLayers"
      ],
      "type": "object"
    },
    "PolygonFilterPredicateValue": {
      "anyOf": [
        {
          "$ref": "#/$defs/LatLonPredicateValue"
        },
        {
          "$ref": "#/$defs/H3PredicateValue"
        },
        {
          "$ref": "#/$defs/PolygonPredicateValue"
        }
      ]
    },
    "PolygonLayer": {
      "additionalProperties": false,
      "properties": {
        "colorScheme": {
          "$ref": "#/$defs/ColorSchemeConfig"
        },
        "dataSourceId": {
          "type": "string"
        },
        "enableTooltips": {
          "type": "boolean"
        },
        "fill": {
          "type": "boolean"
        },
        "fillOpacity": {
          "type": "number"
        },
        "id": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "layerType": {
          "const": "PolygonLayer",
          "type": "string"
        },
        "outline": {
          "type": "boolean"
        },
        "outlineColorScheme": {
          "$ref": "#/$defs/StaticColorConfig"
        },
        "outlineColorSeparate": {
          "type": "boolean"
        },
        "outlineMeters": {
          "type": "number"
        },
        "outlineMinPixels": {
          "type": "number"
        },
        "outlineOpacity": {
          "type": "number"
        },
        "polygonField": {
          "type": "string"
        },
        "tooltipFieldMetricFormatMap": {
          "additionalProperties": {
            "$ref": "#/$defs/MetricDisplayFormat"
          },
          "type": "object"
        },
        "tooltipFieldsIds": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "visible": {
          "type": "boolean"
        },
        "visibleZoomRange": {
          "items": {
            "type": "number"
          },
          "maxItems": 2,
          "minItems": 2,
          "type": "array"
        },
        "visibleZoomRangeEnabled": {
          "type": "boolean"
        }
      },
      "required": [
        "colorScheme",
        "dataSourceId",
        "enableTooltips",
        "id",
        "label",
        "layerType",
        "polygonField"
      ],
      "type": "object"
    },
    "PolygonPredicateValue": {
      "additionalProperties": false,
      "properties": {
        "geometryFieldId": {
          "type": "string"
        },
        "geometryType": {
          "const": "polygon",
          "type": "string"
        }
      },
      "required": [
        "geometryType",
        "geometryFieldId"
      ],
      "type": "object"
    },
    "QualitativeField": {
      "additionalProperties": false,
      "description": "Configuration for charts",
      "properties": {
        "fieldName": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "maxCategories": {
          "type": "number"
        }
      },
      "required": [
        "fieldName"
      ],
      "type": "object"
    },
    "QuantitativeColorConfig": {
      "anyOf": [
        {
          "$ref": "#/$defs/ContinuousColorConfig"
        },
        {
          "$ref": "#/$defs/CustomDiscreteColorConfig"
        }
      ]
    },
    "QuantitativeField": {
      "additionalProperties": false,
      "properties": {
        "aggregation": {
          "$ref": "#/$defs/AggregationType"
        },
        "fieldName": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "metricDisplayFormat": {
          "$ref": "#/$defs/MetricDisplayFormat"
        }
      },
      "required": [
        "fieldName",
        "aggregation"
      ],
      "type": "object"
    },
    "RangeSliderFilterCard": {
      "additionalProperties": false,
      "properties": {
        "applyToLayers": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "cardType": {
          "const": "FilterCard",
          "type": "string"
        },
        "categorical": {
          "const": false,
          "type": "boolean"
        },
        "currentValue": {
          "$ref": "#/$defs/RangeSliderFilterValue"
        },
        "dataSourceId": {
          "type": "string"
        },
        "filterType": {
          "const": "slider",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "interfacePosition": {
          "enum": [
            "left",
            "right"
          ],
          "type": "string"
        },
        "measureFieldId": {
          "type": "string"
        },
        "sliderType": {
          "const": "range",
          "type": "string"
        },
        "subtitle": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "applyToLayers",
        "cardType",
        "categorical",
        "currentValue",
        "dataSourceId",
        "filterType",
        "id",
        "interfacePosition",
        "measureFieldId",
        "sliderType"
      ],
      "type": "object"
    },
    "RangeSliderFilterValue": {
      "anyOf": [
        {
          "items": {
            "type": "number"
          },
          "maxItems": 2,
          "minItems": 2,
          "type": "array"
        },
        {
          "type": "null"
        }
      ]
    },
    "ScaleRange": {
      "anyOf": [
        {
          "additionalProperties": false,
          "properties": {
            "mode": {
              "const": "auto",
              "type": "string"
            }
          },
          "required": [
            "mode"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "max": {
              "type": "number"
            },
            "min": {
              "type": "number"
            },
            "mode": {
              "const": "fixed",
              "type": "string"
            }
          },
          "required": [
            "mode",
            "min",
            "max"
          ],
          "type": "object"
        }
      ]
    },
    "SingleSliderFilterCard": {
      "additionalProperties": false,
      "properties": {
        "applyToLayers": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "cardType": {
          "const": "FilterCard",
          "type": "string"
        },
        "categorical": {
          "const": false,
          "type": "boolean"
        },
        "currentValue": {
          "$ref": "#/$defs/SingleSliderFilterValue"
        },
        "dataSourceId": {
          "type": "string"
        },
        "filterType": {
          "const": "slider",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "interfacePosition": {
          "enum": [
            "left",
            "right"
          ],
          "type": "string"
        },
        "measureFieldId": {
          "type": "string"
        },
        "sliderType": {
          "const": "single",
          "type": "string"
        },
        "subtitle": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "applyToLayers",
        "cardType",
        "categorical",
        "currentValue",
        "dataSourceId",
        "filterType",
        "id",
        "interfacePosition",
        "measureFieldId",
        "sliderType"
      ],
      "type": "object"
    },
    "SingleSliderFilterValue": {
      "type": [
        "number",
        "null"
      ]
    },
    "SizeConfig": {
      "anyOf": [
        {
          "$ref": "#/$defs/StaticSizeConfig"
        },
        {
          "$ref": "#/$defs/DynamicSizeConfig"
        }
      ]
    },
    "SnowflakeNativeAppDataSource": {
      "additionalProperties": false,
      "properties": {
        "error": {
          "type": [
            "string",
            "null"
          ]
        },
        "fields": {
          "items": {
            "$ref": "#/$defs/Field"
          },
          "type": "array"
        },
        "id": {
          "type": "string"
        },
        "locationType": {
          "const": "snowflake_native_app",
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "progress": {
          "type": "number"
        },
        "query": {
          "type": "string"
        },
        "status": {
          "enum": [
            "not_loaded",
            "loading",
            "loaded",
            "error",
            "waiting",
            "remove",
            "not_loaded_saved_map"
          ],
          "type": "string"
        }
      },
      "required": [
        "fields",
        "id",
        "locationType",
        "name",
        "query"
      ],
      "type": "object"
    },
    "SortConfig": {
      "anyOf": [
        {
          "additionalProperties": false,
          "properties": {
            "basis": {
              "const": "value",
              "type": "string"
            },
            "direction": {
              "$ref": "#/$defs/SortDirection"
            }
          },
          "required": [
            "basis",
            "direction"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "basis": {
              "const": "label",
              "type": "string"
            },
            "direction": {
              "$ref": "#/$defs/SortDirection"
            }
          },
          "required": [
            "basis",
            "direction"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "basis": {
              "const": "natural",
              "type": "string"
            }
          },
          "required": [
            "basis"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "basis": {
              "const": "explicit",
              "type": "string"
            },
            "order": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "required": [
            "basis",
            "order"
          ],
          "type": "object"
        }
      ]
    },
    "SortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "StaticColorConfig": {
      "additionalProperties": false,
      "properties": {
        "isStatic": {
          "const": true,
          "type": "boolean"
        },
        "staticColor": {
          "type": "string"
        }
      },
      "required": [
        "isStatic",
        "staticColor"
      ],
      "type": "object"
    },
    "StaticSizeConfig": {
      "additionalProperties": false,
      "properties": {
        "isStatic": {
          "const": true,
          "type": "boolean"
        },
        "minPixels": {
          "type": "number"
        },
        "sizeScalar": {
          "type": "number"
        },
        "units": {
          "enum": [
            "meters",
            "pixels"
          ],
          "type": "string"
        }
      },
      "required": [
        "isStatic",
        "sizeScalar",
        "units",
        "minPixels"
      ],
      "type": "object"
    },
    "TextMultiFilterCard": {
      "additionalProperties": false,
      "properties": {
        "allowMultipleSelections": {
          "const": true,
          "type": "boolean"
        },
        "applyToLayers": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "cardType": {
          "const": "FilterCard",
          "type": "string"
        },
        "categorical": {
          "type": "boolean"
        },
        "currentValue": {
          "$ref": "#/$defs/TextMultiFilterValue"
        },
        "dataSourceId": {
          "type": "string"
        },
        "filterType": {
          "const": "text",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "interfacePosition": {
          "enum": [
            "left",
            "right"
          ],
          "type": "string"
        },
        "measureFieldId": {
          "type": "string"
        },
        "subtitle": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "allowMultipleSelections",
        "applyToLayers",
        "cardType",
        "categorical",
        "currentValue",
        "dataSourceId",
        "filterType",
        "id",
        "interfacePosition",
        "measureFieldId"
      ],
      "type": "object"
    },
    "TextMultiFilterValue": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ]
    },
    "TextSingleFilterCard": {
      "additionalProperties": false,
      "properties": {
        "allowMultipleSelections": {
          "const": false,
          "type": "boolean"
        },
        "applyToLayers": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "cardType": {
          "const": "FilterCard",
          "type": "string"
        },
        "categorical": {
          "type": "boolean"
        },
        "currentValue": {
          "$ref": "#/$defs/TextSingleFilterValue"
        },
        "dataSourceId": {
          "type": "string"
        },
        "filterType": {
          "const": "text",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "interfacePosition": {
          "enum": [
            "left",
            "right"
          ],
          "type": "string"
        },
        "measureFieldId": {
          "type": "string"
        },
        "subtitle": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "allowMultipleSelections",
        "applyToLayers",
        "cardType",
        "categorical",
        "currentValue",
        "dataSourceId",
        "filterType",
        "id",
        "interfacePosition",
        "measureFieldId"
      ],
      "type": "object"
    },
    "TextSingleFilterValue": {
      "type": [
        "string",
        "null"
      ]
    },
    "TimelineFilterCard": {
      "additionalProperties": false,
      "properties": {
        "applyToLayers": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "cardType": {
          "const": "TimelineFilterCard",
          "type": "string"
        },
        "dataSourceId": {
          "type": "string"
        },
        "histogramAggregationType": {
          "$ref": "#/$defs/AggregationType"
        },
        "histogramMeasureId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "interfacePosition": {
          "const": "bottom",
          "type": "string"
        },
        "playbackMode": {
          "enum": [
            "sliding",
            "step",
            "cumulative"
          ],
          "type": "string"
        },
        "playbackSpeed": {
          "type": "number"
        },
        "selectedExtentEnd": {
          "type": [
            "number",
            "null"
          ]
        },
        "selectedExtentStart": {
          "type": [
            "number",
            "null"
          ]
        },
        "subtitle": {
          "type": "string"
        },
        "timestampFieldId": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "dataSourceId",
        "timestampFieldId",
        "interfacePosition",
        "cardType",
        "applyToLayers"
      ],
      "type": "object"
    },
    "TitleCard": {
      "additionalProperties": false,
      "properties": {
        "cardType": {
          "const": "TitleCard",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "interfacePosition": {
          "enum": [
            "left",
            "right"
          ],
          "type": "string"
        },
        "subtitle": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "interfacePosition",
        "cardType"
      ],
      "type": "object"
    },
    "UnitFormat": {
      "additionalProperties": false,
      "properties": {
        "position": {
          "enum": [
            "prefix",
            "suffix"
          ],
          "type": "string"
        },
        "text": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "YScaleType": {
      "enum": [
        "linear",
        "log"
      ],
      "type": "string"
    }
  }
}