{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/mlos-config-mlos-jsonc-mlos-json5-mlos-json/_shared/latest--tunable-values-schema.json",
  "title": "mlos_bench Tunable values config",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/microsoft/MLOS/main/mlos_bench/mlos_bench/config/schemas/tunables/tunable-values-schema.json",
    "sourceSha256": "4568fa319d2c89fba7cf4bb798c362e4022821a98a0fa88e501eeeafbd91294e"
  },
  "$defs": {
    "tunable_values_set": {
      "type": "object",
      "not": {
        "required": [
          "tunable_values"
        ]
      },
      "patternProperties": {
        "^[^$]+$": {
          "$comment": "Tunable values are either strings, numbers, booleans or nulls.",
          "type": [
            "string",
            "number",
            "boolean"
          ]
        }
      }
    }
  },
  "oneOf": [
    {
      "description": "Allow a simple object that specifies the tunable values directly.",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "$schema": {
              "$comment": "Optionally allow the schema to be specified in the top level of the config, but make sure it matches the expected schema.",
              "type": "string",
              "pattern": "/schemas/tunables/tunable-values-schema.json$"
            }
          }
        },
        {
          "$ref": "#/$defs/tunable_values_set"
        }
      ],
      "$comment": "TODO: Add support for lists of tunable values as well."
    }
  ]
}
