{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "format",
    "version",
    "name",
    "groups"
  ],
  "properties": {
    "format": {
      "const": "lumina-palette"
    },
    "version": {
      "const": 1
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "groups": {
      "type": "array",
      "minItems": 1,
      "maxItems": 5,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "settings",
          "colors"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "settings": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "base",
              "count",
              "harmony",
              "hue",
              "saturation",
              "lightness",
              "easing"
            ],
            "properties": {
              "base": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "count": {
                "type": "integer",
                "minimum": 2,
                "maximum": 24
              },
              "harmony": {
                "enum": [
                  "monochromatic",
                  "analogous",
                  "complementary",
                  "split",
                  "triadic",
                  "tetradic"
                ]
              },
              "hue": {
                "type": "number",
                "minimum": -360,
                "maximum": 360
              },
              "saturation": {
                "type": "number",
                "minimum": -100,
                "maximum": 100
              },
              "lightness": {
                "type": "number",
                "minimum": -100,
                "maximum": 100
              },
              "easing": {
                "enum": [
                  "linear",
                  "ease-in",
                  "ease-out",
                  "smooth"
                ]
              }
            }
          },
          "colors": {
            "type": "array",
            "minItems": 1,
            "maxItems": 24,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "hex",
                "locked"
              ],
              "properties": {
                "hex": {
                  "type": "string",
                  "pattern": "^#[0-9a-fA-F]{6}$"
                },
                "locked": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    }
  }
}
