{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://atlashot.pages.dev/schema/map-request.schema.json",
  "title": "Map request",
  "description": "A atlashot map request. As a URL: /m?map=…&d=CODE:value,… — this object is the paste-JSON/POST form of the same request.",
  "type": "object",
  "required": [
    "map",
    "data"
  ],
  "additionalProperties": false,
  "properties": {
    "map": {
      "type": "string",
      "description": "Map set id (see /maps/index.json), e.g. world, europe, us, ro"
    },
    "data": {
      "type": "object",
      "minProperties": 1,
      "description": "Region code → value. Codes: ISO 3166-1 alpha-2 / ISO 3166-2. Numbers for scales, short strings for categories.",
      "additionalProperties": {
        "type": [
          "number",
          "string"
        ]
      }
    },
    "title": {
      "type": "string"
    },
    "subtitle": {
      "type": "string"
    },
    "unit": {
      "type": "string"
    },
    "source": {
      "type": "string"
    },
    "palette": {
      "type": "string",
      "enum": [
        "blues",
        "greens",
        "oranges",
        "purples",
        "reds",
        "viridis",
        "rdbu",
        "brbg",
        "puor",
        "tableau"
      ]
    },
    "scale": {
      "type": "string",
      "pattern": "^(quantile|quantize|linear|threshold:-?[0-9.]+(,-?[0-9.]+)*)$"
    },
    "classes": {
      "type": "integer",
      "minimum": 3,
      "maximum": 9
    },
    "domain": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "minItems": 2,
      "maxItems": 2
    },
    "format": {
      "type": "string",
      "description": "d3-format specifier for legend labels"
    }
  }
}
