Schema/baseline.schema.json

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/xGreeny/hardening-lens/v1.3.1/src/HardeningLens/Schema/baseline.schema.json",
  "title": "Hardening Lens baseline",
  "type": "object",
  "required": [
    "schemaVersion",
    "name",
    "displayName",
    "version",
    "description",
    "controls"
  ],
  "properties": {
    "$schema": {
      "type": "string"
    },
    "schemaVersion": {
      "const": "1.0"
    },
    "name": {
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_-]{1,63}$"
    },
    "displayName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 120
    },
    "version": {
      "type": "string",
      "pattern": "^\\d+\\.\\d+\\.\\d+$"
    },
    "description": {
      "type": "string",
      "minLength": 20
    },
    "extends": {
      "enum": [
        "Workstation",
        "MemberServer",
        "DomainController",
        "AVDSessionHost"
      ]
    },
    "sourceBasis": {
      "type": "array",
      "uniqueItems": true,
      "items": {
        "type": "string",
        "minLength": 3
      }
    },
    "supportedRoles": {
      "type": "array",
      "uniqueItems": true,
      "items": {
        "enum": [
          "Workstation",
          "MemberServer",
          "DomainController",
          "AVDSessionHost"
        ]
      }
    },
    "excludedControls": {
      "type": "array",
      "uniqueItems": true,
      "items": {
        "type": "string",
        "pattern": "^HL-[A-Z]+-[0-9]{3}$"
      }
    },
    "controls": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^HL-[A-Z]+-[0-9]{3}$"
          },
          "enabled": {
            "type": "boolean"
          },
          "severity": {
            "enum": [
              "Critical",
              "High",
              "Medium",
              "Low",
              "Informational"
            ]
          },
          "parameters": {
            "type": "object"
          }
        },
        "additionalProperties": false
      }
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 3
      }
    }
  },
  "additionalProperties": false
}