{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Linkt V2 workflow event",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "version",
    "event_id",
    "type",
    "occurred_at",
    "data"
  ],
  "properties": {
    "version": {
      "const": "2"
    },
    "event_id": {
      "$ref": "#/$defs/public_id"
    },
    "type": {
      "enum": [
        "run.succeeded",
        "run.failed",
        "run.canceled",
        "run.skipped"
      ]
    },
    "occurred_at": {
      "type": "string",
      "format": "date-time"
    },
    "data": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "run",
        "resources"
      ],
      "properties": {
        "run": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "id",
            "kind",
            "status"
          ],
          "properties": {
            "id": {
              "$ref": "#/$defs/public_id"
            },
            "kind": {
              "enum": [
                "discovery",
                "import",
                "monitor"
              ]
            },
            "status": {
              "enum": [
                "succeeded",
                "failed",
                "canceled",
                "skipped"
              ]
            }
          }
        },
        "monitor": {
          "$ref": "#/$defs/reference"
        },
        "campaign": {
          "$ref": "#/$defs/reference"
        },
        "resources": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "account_ids",
            "person_ids",
            "signal_ids"
          ],
          "properties": {
            "account_ids": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "$ref": "#/$defs/public_id"
              }
            },
            "person_ids": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "$ref": "#/$defs/public_id"
              }
            },
            "signal_ids": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "$ref": "#/$defs/public_id"
              }
            }
          }
        }
      }
    }
  },
  "$defs": {
    "public_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
    },
    "reference": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/public_id"
        }
      }
    }
  }
}
