{
  "$ref": "#/definitions/Events",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "CardinalDirection": {
      "enum": [
        "C",
        "N",
        "S",
        "NE",
        "SE",
        "NW",
        "SW",
        "NO",
        "SO",
        "W",
        "O"
      ],
      "type": "string"
    },
    "Events": {
      "additionalProperties": false,
      "properties": {
        "deletePreset": {
          "additionalProperties": false,
          "properties": {
            "name": {
              "type": "string"
            },
            "playerId": {
              "type": "string"
            },
            "time": {
              "format": "date-time",
              "type": "string"
            },
            "token": {
              "type": "string"
            },
            "x": {
              "type": "number"
            },
            "y": {
              "type": "number"
            },
            "z": {
              "type": "number"
            }
          },
          "required": [
            "name",
            "playerId",
            "time",
            "token",
            "x",
            "y",
            "z"
          ],
          "type": "object"
        },
        "goToHome": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "type": "string"
            },
            "movementSettings": {
              "$ref": "#/definitions/TMovementSettings"
            },
            "time": {
              "format": "date-time",
              "type": "string"
            }
          },
          "required": [
            "movementSettings",
            "id",
            "time"
          ],
          "type": "object"
        },
        "goToPreset": {
          "additionalProperties": false,
          "properties": {
            "movementSettings": {
              "$ref": "#/definitions/TMovementSettings"
            },
            "name": {
              "type": "string"
            },
            "playerId": {
              "type": "string"
            },
            "time": {
              "format": "date-time",
              "type": "string"
            },
            "token": {
              "type": "string"
            },
            "x": {
              "type": "number"
            },
            "y": {
              "type": "number"
            },
            "z": {
              "type": "number"
            }
          },
          "required": [
            "movementSettings",
            "name",
            "playerId",
            "time",
            "token",
            "x",
            "y",
            "z"
          ],
          "type": "object"
        },
        "goToSelectedArea": {
          "additionalProperties": false,
          "properties": {
            "height": {
              "type": "number"
            },
            "htmlVideoElementHeight": {
              "type": "number"
            },
            "htmlVideoElementWidth": {
              "type": "number"
            },
            "id": {
              "type": "string"
            },
            "left": {
              "type": "number"
            },
            "movementSettings": {
              "$ref": "#/definitions/TMovementSettings"
            },
            "time": {
              "format": "date-time",
              "type": "string"
            },
            "top": {
              "type": "number"
            },
            "width": {
              "type": "number"
            }
          },
          "required": [
            "movementSettings",
            "id",
            "top",
            "left",
            "width",
            "height",
            "htmlVideoElementWidth",
            "htmlVideoElementHeight",
            "time"
          ],
          "type": "object"
        },
        "initVideo": {
          "additionalProperties": false,
          "properties": {
            "htmlVideoElement": {},
            "id": {
              "type": "string"
            },
            "time": {
              "format": "date-time",
              "type": "string"
            }
          },
          "required": [
            "id",
            "time",
            "htmlVideoElement"
          ],
          "type": "object"
        },
        "panelMove": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "type": "string"
            },
            "opened": {
              "type": "boolean"
            }
          },
          "required": [
            "id",
            "opened"
          ],
          "type": "object"
        },
        "sendDirection": {
          "additionalProperties": false,
          "properties": {
            "direction": {
              "enum": [
                "up",
                "right",
                "down",
                "left"
              ],
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "joyId": {
              "type": "string"
            },
            "movementSettings": {
              "$ref": "#/definitions/TMovementSettings"
            },
            "time": {
              "format": "date-time",
              "type": "string"
            }
          },
          "required": [
            "movementSettings",
            "direction",
            "id",
            "joyId",
            "time"
          ],
          "type": "object"
        },
        "sendJoystickPosition": {
          "additionalProperties": false,
          "properties": {
            "cardinalDirection": {
              "$ref": "#/definitions/CardinalDirection"
            },
            "id": {
              "type": "string"
            },
            "joyId": {
              "type": "string"
            },
            "movementSettings": {
              "$ref": "#/definitions/TMovementSettings"
            },
            "time": {
              "format": "date-time",
              "type": "string"
            },
            "x": {
              "type": "number"
            },
            "y": {
              "type": "number"
            }
          },
          "required": [
            "movementSettings",
            "x",
            "y",
            "cardinalDirection",
            "id",
            "joyId",
            "time"
          ],
          "type": "object"
        },
        "setPreset": {
          "additionalProperties": false,
          "properties": {
            "id": {
              "type": "string"
            },
            "time": {
              "format": "date-time",
              "type": "string"
            }
          },
          "required": [
            "id",
            "time"
          ],
          "type": "object"
        },
        "zoomAction": {
          "additionalProperties": false,
          "properties": {
            "direction": {
              "enum": [
                "in",
                "out"
              ],
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "movementSettings": {
              "$ref": "#/definitions/TMovementSettings"
            },
            "time": {
              "format": "date-time",
              "type": "string"
            }
          },
          "required": [
            "movementSettings",
            "direction",
            "id",
            "time"
          ],
          "type": "object"
        }
      },
      "required": [
        "initVideo",
        "panelMove",
        "goToHome",
        "goToSelectedArea",
        "setPreset",
        "goToPreset",
        "deletePreset",
        "zoomAction",
        "sendJoystickPosition",
        "sendDirection"
      ],
      "type": "object"
    },
    "TMovementSettings": {
      "additionalProperties": false,
      "properties": {
        "precision": {
          "type": "number"
        },
        "speed": {
          "type": "number"
        }
      },
      "required": [
        "speed",
        "precision"
      ],
      "type": "object"
    }
  }
}
