{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$ref": "#/definitions/Feature",
  "definitions": {
    "Feature": {
      "additionalProperties": false,
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "exposureDescription": {
          "oneOf": [
            {"type": "string"},
            {"type": "boolean"}
          ]
        },
        "isEarlyStartup": {
          "type": "boolean",
          "description": "If the feature values should be cached in prefs for fast early startup."
        },
        "variables": {
          "additionalProperties": false,
          "type": "object",
          "patternProperties": {
            "[a-zA-Z0-9_]+": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": ["json", "boolean", "int", "string"]
                },
                "fallbackPref": {
                  "type": "string"
                },
                "enum": {
                  "description": "Validate feature value using a list of possible options (for string only values)."
                },
                "description": {
                  "type": "string",
                  "description": "Explain how this value is being used"
                }
              },
              "required": ["type", "description"],
              "additionalProperties": false
            }
          }
        }
      },
      "required": ["description", "exposureDescription"]
    }
  }
}