{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
        "base": {
          "type": "object"
        },
        "types": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string",
              "enum": ["AppStarted", "AppActivated"]
            }
        }
    },
    "required": [ "base", "types", "custom" ],
    "allOf": [
      {
        "if": { "properties": { "types": { "contains": { "const": "AppStarted" }}}},
        "then": { "properties": { "custom": { "$ref": "#/definitions/AppStarted" }}}
      },
      {
        "if": { "properties": { "types": { "contains": { "const": "AppActivated" }}}},
        "then": { "properties": { "custom": { "$ref": "#/definitions/AppActivated" }}}
      }
    ]
  },

  "definitions": {
    "AppActivated": {
      "type": "object",
      "properties": {
        "id": { "type": "number" }
      },
      "required": ["id"]
    },
    "AppStarted": {
      "type": "string"
    }
  }

}