{
  "$ref": "#/definitions/Component",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "Component": {
      "additionalProperties": false,
      "properties": {
        "center": {
          "items": {
            "type": "number"
          },
          "type": "array"
        },
        "data": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "line": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "icon": {
                      "additionalProperties": false,
                      "properties": {
                        "anchor": {
                          "items": {
                            "type": "number"
                          },
                          "type": "array"
                        },
                        "color": {
                          "type": "string"
                        },
                        "opacity": {
                          "type": "number"
                        },
                        "scale": {
                          "type": "number"
                        },
                        "uri": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "uri"
                      ],
                      "type": "object"
                    },
                    "id": {
                      "type": "string"
                    },
                    "lngLat": {
                      "items": {
                        "type": "number"
                      },
                      "type": "array"
                    },
                    "popupHtml": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "lngLat"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "marker": {
                "additionalProperties": false,
                "properties": {
                  "icon": {
                    "additionalProperties": false,
                    "properties": {
                      "anchor": {
                        "items": {
                          "type": "number"
                        },
                        "type": "array"
                      },
                      "color": {
                        "type": "string"
                      },
                      "opacity": {
                        "type": "number"
                      },
                      "scale": {
                        "type": "number"
                      },
                      "uri": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "uri"
                    ],
                    "type": "object"
                  },
                  "id": {
                    "type": "string"
                  },
                  "lngLat": {
                    "items": {
                      "type": "number"
                    },
                    "type": "array"
                  },
                  "popupHtml": {
                    "type": "string"
                  },
                  "text": {
                    "type": "string"
                  },
                  "text_offset": {
                    "type": "number"
                  },
                  "text_position": {
                    "enum": [
                      "top",
                      "right",
                      "bottom",
                      "left"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "lngLat"
                ],
                "type": "object"
              },
              "point": {
                "additionalProperties": false,
                "properties": {
                  "icon": {
                    "additionalProperties": false,
                    "properties": {
                      "anchor": {
                        "items": {
                          "type": "number"
                        },
                        "type": "array"
                      },
                      "color": {
                        "type": "string"
                      },
                      "opacity": {
                        "type": "number"
                      },
                      "scale": {
                        "type": "number"
                      },
                      "uri": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "uri"
                    ],
                    "type": "object"
                  },
                  "id": {
                    "type": "string"
                  },
                  "lngLat": {
                    "items": {
                      "type": "number"
                    },
                    "type": "array"
                  },
                  "popupHtml": {
                    "type": "string"
                  }
                },
                "required": [
                  "lngLat"
                ],
                "type": "object"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "id": {
          "type": "string"
        },
        "options": {
          "additionalProperties": false,
          "properties": {
            "centerFromGeometries": {
              "type": "boolean"
            },
            "text_offset": {
              "type": "number"
            },
            "text_position": {
              "enum": [
                "top",
                "right",
                "bottom",
                "left"
              ],
              "type": "string"
            },
            "text_scale": {
              "type": "number"
            }
          },
          "type": "object"
        },
        "screenshot": {
          "type": "string"
        },
        "source": {
          "additionalProperties": false,
          "properties": {
            "boundaries_only": {
              "description": "When `true`, only the vector `boundary` layer is drawn (no land, roads, water fill, etc.).",
              "type": "boolean"
            },
            "boundary_admin_levels": {
              "description": "Optional JSON array string of OSM `admin_level` values to keep for `boundary` features, e.g. `\"[2]\"` for country borders, `\"[2,4]\"` for countries plus common internal divisions. Omit or empty to show all boundaries present in the tiles at the current zoom.",
              "type": "string"
            },
            "national_boundaries_only": {
              "description": "When `true`, only international / country boundaries (`admin_level` 2) are drawn; internal regional lines are hidden. Combines with `boundary_admin_levels` by intersection (e.g. if the JSON list excludes `2`, no boundaries render). National lines use a solid stroke; when `false`, level 2 stays solid and other levels stay dashed.",
              "type": "boolean"
            },
            "style": {
              "description": "Basemap palette for light UI. In dark color scheme (`prefers-color-scheme: dark` or `data-theme=\"dark\"` / `.theme-dark` on host or document), `dark_matter` is always used.",
              "enum": [
                "positron",
                "dark_matter",
                "voyager"
              ],
              "type": "string"
            },
            "type": {
              "type": "string"
            },
            "url": {
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "type": "object"
        },
        "style": {
          "type": "string"
        },
        "zoom": {
          "type": "number"
        }
      },
      "required": [
        "zoom",
        "center",
        "data",
        "source",
        "options"
      ],
      "type": "object"
    }
  }
}
