{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://jamonygr.github.io/az104-azure-administrator-labs/schemas/progress-schema.json",
  "title": "Private AZ-104 learner progress export",
  "description": "Portable progress only; identity, tenant, subscription, analytics, and credentials are forbidden by the closed schema.",
  "type": "object",
  "required": ["schemaVersion", "exportedAt", "labs"],
  "properties": {
    "schemaVersion": { "const": "1.0.0" },
    "exportedAt": { "type": "string", "format": "date-time" },
    "labs": {
      "type": "object",
      "minProperties": 28,
      "maxProperties": 28,
      "patternProperties": {
        "^LAB-(?:0[0-9]|1[0-9]|2[0-7])$": {
          "type": "object",
          "required": ["status", "validationPassed", "cleanupPassed", "assessmentScore", "updatedAt"],
          "properties": {
            "status": { "enum": ["not-started", "in-progress", "complete"] },
            "validationPassed": { "type": "boolean" },
            "cleanupPassed": { "type": "boolean" },
            "assessmentScore": {
              "oneOf": [
                { "type": "integer", "minimum": 0, "maximum": 100 },
                { "type": "null" }
              ]
            },
            "updatedAt": { "type": "string", "format": "date-time" }
          },
          "allOf": [
            {
              "if": {
                "properties": { "status": { "const": "complete" } },
                "required": ["status"]
              },
              "then": {
                "properties": {
                  "validationPassed": { "const": true },
                  "cleanupPassed": { "const": true }
                }
              }
            }
          ],
          "additionalProperties": false
        },
        "^LAB-(?:00|26|27)$": {
          "properties": {
            "assessmentScore": { "type": "null" }
          }
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
