{
  "$schema": "http://json-schema.org/draft/2020-12/schema#",
  "type": "object",
  "required": ["version"],
  "properties": {
    "version": {
      "description": "The data version of snippet file to generate.",
      "oneOf": [
        {
          "type": "integer",
          "const": 1
        },
        {
          "type": "object",
          "required": [
            "major"
          ],
          "properties": {
            "major": {
              "type": "integer",
              "const": 1
            },
            "minor": {
              "type": "integer",
              "enum": [
                0,
                1
              ]
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "callbacks": {
      "type": "array",
      "description": "A list of command-line strings for callbacks to handle collected instrumentation data. Whenever these callbacks are executed, the full path to a v1 Index File is appended to the arguments included in the string.",
      "items": {
        "type": "string"
      }
    },
    "hooks": {
      "type": "array",
      "description": "A list of strings specifying when indexing should occur automatically. These are the intervals when instrumentation data should be collated and user callbacks should be invoked to handle the data.",
      "items": {
        "enum": [
          "postGenerate",
          "preBuild",
          "postBuild",
          "preCMakeBuild",
          "postCMakeBuild",
          "postCMakeInstall",
          "postCMakeWorkflow",
          "postCTest"
        ],
        "type": "string"
      },
      "uniqueItems": true
    },
    "options": {
      "type": "array",
      "description": "A list of strings used to enable certain optional behavior, including the collection of certain additional data.",
      "uniqueItems": true,
      "items": {
        "enum": [
          "staticSystemInformation",
          "dynamicSystemInformation",
          "compileTrace",
          "cdashSubmit",
          "cdashVerbose",
          "trace",
          "captureOutput"
        ],
        "type": "string"
      }
    }
  }
}
