{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "prompt2json decision questions",
  "description": "The Jev questions object, without an outer request wrapper.",
  "type": "object",
  "minProperties": 1,
  "propertyNames": {"pattern": "\\S"},
  "additionalProperties": {"$ref": "#/$defs/question"},
  "$defs": {
    "description": {"type": ["string", "object", "array", "null"]},
    "scoreDescription": {"type": ["string", "object", "array"]},
    "question": {
      "oneOf": [
        {
          "type": "object",
          "required": ["type"],
          "additionalProperties": false,
          "properties": {
            "type": {"const": "noul"},
            "instructions": {"$ref": "#/$defs/description"},
            "criteria": {
              "type": ["object", "null"],
              "additionalProperties": false,
              "properties": {
                "true": {"$ref": "#/$defs/description"},
                "false": {"$ref": "#/$defs/description"}
              }
            }
          }
        },
        {
          "type": "object",
          "required": ["type", "criteria"],
          "additionalProperties": false,
          "properties": {
            "type": {"const": "choice"},
            "instructions": {"$ref": "#/$defs/description"},
            "criteria": {
              "type": "object",
              "minProperties": 2,
              "maxProperties": 255,
              "propertyNames": {"pattern": "\\S"},
              "additionalProperties": {"$ref": "#/$defs/description"}
            }
          }
        },
        {
          "type": "object",
          "required": ["type", "criteria"],
          "additionalProperties": false,
          "properties": {
            "type": {"const": "score"},
            "instructions": {"$ref": "#/$defs/description"},
            "criteria": {
              "type": "array",
              "minItems": 2,
              "maxItems": 10,
              "items": {"$ref": "#/$defs/scoreDescription"}
            }
          }
        }
      ]
    }
  }
}
