{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": ["CourseCompleted"]
    },
    "eventId": {
      "type": "string"
    },
    "instanceId": {
      "type": "integer"
    },
    "loggedUserId": {
      "type": "integer"
    },
    "courseCompletedProps": {
      "type": "object",
      "properties": {
        "instanceId": { "type": "integer" },
        "courseId": { "type": "integer" },
        "userId": { "type": "integer" },
        "averageGrade": { "type": "number" },
        "passed": { "type": "boolean" }
      },
      "required": ["instanceId", "courseId", "userId", "passed"]
    }
  },
  "required": ["type", "eventId", "instanceId", "loggedUserId"],
  "oneOf": [
    {
      "properties": {
        "type": { "const": "CourseCompleted" },
        "courseCompletedProps": { 
          "type": "object",
          "properties": {
            "instanceId": { "type": "integer" },
            "courseId": { "type": "integer" },
            "userId": { "type": "integer" },
            "averageGrade": { "type": "number" },
            "passed": { "type": "boolean" }
          },
          "required": ["instanceId", "courseId", "userId", "passed"]
        }
      },
      "required": ["type", "courseCompletedProps"]
    }
  ]
}
