{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://scenarios.ginc.org/data/schema/grammar.schema.json",
  "title": "GINC Scenario Library — grammar",
  "type": "object",
  "required": [
    "version",
    "sliders",
    "presets",
    "likelihood",
    "impact",
    "confidence",
    "priority",
    "load_levels",
    "regions",
    "stakeholders",
    "families",
    "thematics",
    "dimensions",
    "domains"
  ],
  "properties": {
    "version": {
      "type": "string"
    },
    "sliders": {
      "type": "array",
      "minItems": 10,
      "maxItems": 10,
      "items": {
        "type": "object",
        "required": [
          "n",
          "key",
          "name",
          "values",
          "note"
        ],
        "properties": {
          "n": {
            "type": "integer"
          },
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "values": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "note": {
            "type": "string"
          }
        }
      }
    },
    "presets": {
      "type": "array",
      "minItems": 3,
      "maxItems": 3,
      "items": {
        "type": "object",
        "required": [
          "key",
          "name",
          "definition"
        ]
      }
    },
    "likelihood": {
      "type": "object",
      "required": [
        "horizons",
        "bands",
        "types"
      ],
      "properties": {
        "bands": {
          "type": "array",
          "minItems": 5,
          "maxItems": 5,
          "items": {
            "type": "object",
            "required": [
              "band",
              "label",
              "range"
            ]
          }
        }
      }
    },
    "impact": {
      "type": "object",
      "required": [
        "systemic",
        "national"
      ],
      "properties": {
        "systemic": {
          "type": "object",
          "required": [
            "levels"
          ],
          "properties": {
            "levels": {
              "type": "array",
              "minItems": 5,
              "maxItems": 5,
              "items": {
                "type": "object",
                "required": [
                  "level",
                  "label",
                  "range",
                  "also"
                ]
              }
            }
          }
        },
        "national": {
          "type": "object",
          "required": [
            "dimensions"
          ],
          "properties": {
            "dimensions": {
              "type": "array",
              "minItems": 7,
              "maxItems": 7
            }
          }
        }
      }
    },
    "confidence": {
      "type": "object",
      "required": [
        "levels"
      ],
      "properties": {
        "levels": {
          "type": "array",
          "minItems": 5,
          "maxItems": 5
        }
      }
    },
    "priority": {
      "type": "object",
      "required": [
        "formula",
        "tiers",
        "tie_break"
      ]
    },
    "load_levels": {
      "type": "array",
      "minItems": 3,
      "maxItems": 3
    },
    "regions": {
      "type": "array",
      "minItems": 9,
      "maxItems": 9,
      "items": {
        "type": "object",
        "required": [
          "slug",
          "label"
        ]
      }
    },
    "stakeholders": {
      "type": "array",
      "minItems": 4,
      "maxItems": 4,
      "items": {
        "type": "object",
        "required": [
          "slug",
          "label",
          "members",
          "relevance_domains"
        ]
      }
    },
    "families": {
      "type": "array",
      "minItems": 5,
      "maxItems": 5,
      "items": {
        "type": "object",
        "required": [
          "key",
          "label",
          "colour",
          "shape"
        ]
      }
    },
    "orientations": {
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "items": {
        "type": "object",
        "required": [
          "key",
          "label",
          "definition"
        ]
      }
    },
    "lenses": {
      "type": "array",
      "minItems": 6,
      "maxItems": 6,
      "items": {
        "type": "object",
        "required": [
          "key",
          "label"
        ]
      }
    },
    "thematics": {
      "type": "array",
      "minItems": 6,
      "maxItems": 6,
      "items": {
        "type": "object",
        "required": [
          "slug",
          "label"
        ]
      }
    },
    "dimensions": {
      "type": "array",
      "minItems": 3,
      "maxItems": 3
    },
    "domains": {
      "type": "array",
      "minItems": 9,
      "maxItems": 9,
      "items": {
        "type": "object",
        "required": [
          "slug",
          "label",
          "dimension"
        ]
      }
    }
  }
}