{
  "$defs": {
    "ActionEdit": {
      "additionalProperties": false,
      "properties": {
        "film": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Film",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Id",
          "type": "string"
        },
        "at": {
          "maximum": 3600,
          "minimum": 0,
          "title": "At",
          "type": "number"
        },
        "duration": {
          "exclusiveMinimum": 0,
          "maximum": 3600,
          "title": "Duration",
          "type": "number"
        },
        "kind": {
          "const": "action",
          "title": "Kind",
          "type": "string"
        },
        "actor": {
          "format": "uuid",
          "title": "Actor",
          "type": "string"
        },
        "action": {
          "enum": [
            "look-at",
            "move-to",
            "animate"
          ],
          "title": "Action",
          "type": "string"
        },
        "target": {
          "anyOf": [
            {
              "format": "uuid",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Target"
        },
        "clip": {
          "anyOf": [
            {
              "minimum": 0,
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Clip"
        },
        "persistence": {
          "enum": [
            "temporary",
            "runtime"
          ],
          "title": "Persistence",
          "type": "string"
        }
      },
      "required": [
        "film",
        "id",
        "at",
        "duration",
        "kind",
        "actor",
        "action",
        "target",
        "clip",
        "persistence"
      ],
      "title": "ActionEdit",
      "type": "object"
    },
    "ConversationPolicy": {
      "additionalProperties": false,
      "properties": {
        "actor": {
          "format": "uuid",
          "title": "Actor",
          "type": "string"
        },
        "profileId": {
          "format": "uuid",
          "title": "Profileid",
          "type": "string"
        }
      },
      "required": [
        "actor",
        "profileId"
      ],
      "title": "ConversationPolicy",
      "type": "object"
    },
    "ExperienceStateEdit": {
      "additionalProperties": false,
      "properties": {
        "kind": {
          "const": "experience-state",
          "title": "Kind",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Id",
          "type": "string"
        },
        "mode": {
          "enum": [
            "interactive",
            "cinematic",
            "conversation"
          ],
          "title": "Mode",
          "type": "string"
        },
        "conversation": {
          "anyOf": [
            {
              "$ref": "#/$defs/ConversationPolicy"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "cinematic": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Cinematic"
        },
        "control": {
          "anyOf": [
            {
              "format": "uuid",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Control"
        },
        "camera": {
          "enum": [
            "third-person",
            "first-person",
            "overhead",
            "overview"
          ],
          "title": "Camera",
          "type": "string"
        },
        "userCamera": {
          "title": "Usercamera",
          "type": "boolean"
        },
        "followers": {
          "items": {
            "$ref": "#/$defs/FollowPolicy"
          },
          "maxItems": 64,
          "title": "Followers",
          "type": "array"
        },
        "audio": {
          "items": {
            "$ref": "#/$defs/MusicPolicy"
          },
          "maxItems": 64,
          "title": "Audio",
          "type": "array"
        }
      },
      "required": [
        "kind",
        "id",
        "mode",
        "cinematic",
        "control",
        "camera",
        "userCamera",
        "followers",
        "audio"
      ],
      "title": "ExperienceStateEdit",
      "type": "object"
    },
    "ExperienceTransitionEdit": {
      "additionalProperties": false,
      "properties": {
        "kind": {
          "const": "experience-transition",
          "title": "Kind",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Id",
          "type": "string"
        },
        "from": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "From",
          "type": "string"
        },
        "to": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "To",
          "type": "string"
        },
        "event": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_.:-]{0,99}$",
          "title": "Event",
          "type": "string"
        },
        "subject": {
          "anyOf": [
            {
              "format": "uuid",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Subject"
        },
        "target": {
          "anyOf": [
            {
              "format": "uuid",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Target"
        },
        "once": {
          "title": "Once",
          "type": "boolean"
        }
      },
      "required": [
        "kind",
        "id",
        "from",
        "to",
        "event",
        "subject",
        "target",
        "once"
      ],
      "title": "ExperienceTransitionEdit",
      "type": "object"
    },
    "FollowPolicy": {
      "additionalProperties": false,
      "properties": {
        "actor": {
          "format": "uuid",
          "title": "Actor",
          "type": "string"
        },
        "target": {
          "format": "uuid",
          "title": "Target",
          "type": "string"
        },
        "distance": {
          "maximum": 20,
          "minimum": 0.1,
          "title": "Distance",
          "type": "number"
        },
        "delay": {
          "maximum": 60,
          "minimum": 0,
          "title": "Delay",
          "type": "number"
        },
        "speed": {
          "exclusiveMinimum": 0,
          "maximum": 5,
          "title": "Speed",
          "type": "number"
        }
      },
      "required": [
        "actor",
        "target",
        "distance",
        "delay",
        "speed"
      ],
      "title": "FollowPolicy",
      "type": "object"
    },
    "MusicEdit": {
      "additionalProperties": false,
      "properties": {
        "kind": {
          "const": "music",
          "title": "Kind",
          "type": "string"
        },
        "film": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Film",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Id",
          "type": "string"
        },
        "at": {
          "maximum": 3600,
          "minimum": 0,
          "title": "At",
          "type": "number"
        },
        "command": {
          "$ref": "#/$defs/MusicPolicy"
        }
      },
      "required": [
        "kind",
        "film",
        "id",
        "at",
        "command"
      ],
      "title": "MusicEdit",
      "type": "object"
    },
    "MusicPolicy": {
      "additionalProperties": false,
      "properties": {
        "action": {
          "enum": [
            "play",
            "stop",
            "crossfade"
          ],
          "title": "Action",
          "type": "string"
        },
        "assetId": {
          "format": "uuid",
          "title": "Assetid",
          "type": "string"
        },
        "from": {
          "anyOf": [
            {
              "format": "uuid",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "From"
        },
        "volume": {
          "maximum": 1,
          "minimum": 0,
          "title": "Volume",
          "type": "number"
        },
        "fade": {
          "maximum": 30,
          "minimum": 0,
          "title": "Fade",
          "type": "number"
        },
        "loop": {
          "title": "Loop",
          "type": "boolean"
        }
      },
      "required": [
        "action",
        "assetId",
        "from",
        "volume",
        "fade",
        "loop"
      ],
      "title": "MusicPolicy",
      "type": "object"
    },
    "RemoveCueEdit": {
      "additionalProperties": false,
      "properties": {
        "kind": {
          "const": "remove-cue",
          "title": "Kind",
          "type": "string"
        },
        "film": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Film",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Id",
          "type": "string"
        }
      },
      "required": [
        "kind",
        "film",
        "id"
      ],
      "title": "RemoveCueEdit",
      "type": "object"
    },
    "SfxEdit": {
      "additionalProperties": false,
      "properties": {
        "kind": {
          "const": "sfx",
          "title": "Kind",
          "type": "string"
        },
        "film": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Film",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Id",
          "type": "string"
        },
        "at": {
          "maximum": 3600,
          "minimum": 0,
          "title": "At",
          "type": "number"
        },
        "assetId": {
          "format": "uuid",
          "title": "Assetid",
          "type": "string"
        },
        "spatial": {
          "anyOf": [
            {
              "format": "uuid",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Spatial"
        },
        "volume": {
          "maximum": 1,
          "minimum": 0,
          "title": "Volume",
          "type": "number"
        }
      },
      "required": [
        "kind",
        "film",
        "id",
        "at",
        "assetId",
        "spatial",
        "volume"
      ],
      "title": "SfxEdit",
      "type": "object"
    },
    "ShotEdit": {
      "additionalProperties": false,
      "properties": {
        "film": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Film",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Id",
          "type": "string"
        },
        "at": {
          "maximum": 3600,
          "minimum": 0,
          "title": "At",
          "type": "number"
        },
        "duration": {
          "exclusiveMinimum": 0,
          "maximum": 3600,
          "title": "Duration",
          "type": "number"
        },
        "kind": {
          "const": "shot",
          "title": "Kind",
          "type": "string"
        },
        "shotType": {
          "enum": [
            "extreme-closeup",
            "closeup",
            "medium-closeup",
            "medium",
            "american",
            "full",
            "long",
            "extreme-long",
            "two-shot",
            "over-the-shoulder",
            "pov",
            "establishing",
            "insert"
          ],
          "title": "Shottype",
          "type": "string"
        },
        "subjects": {
          "items": {
            "format": "uuid",
            "type": "string"
          },
          "maxItems": 8,
          "minItems": 1,
          "title": "Subjects",
          "type": "array"
        },
        "shoulder": {
          "anyOf": [
            {
              "format": "uuid",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Shoulder"
        },
        "movement": {
          "enum": [
            "static",
            "pan",
            "tilt",
            "dolly",
            "truck",
            "pedestal",
            "orbit",
            "zoom",
            "follow",
            "crane"
          ],
          "title": "Movement",
          "type": "string"
        },
        "amount": {
          "maximum": 1,
          "minimum": -1,
          "title": "Amount",
          "type": "number"
        },
        "transition": {
          "enum": [
            "cut",
            "smooth"
          ],
          "title": "Transition",
          "type": "string"
        }
      },
      "required": [
        "film",
        "id",
        "at",
        "duration",
        "kind",
        "shotType",
        "subjects",
        "shoulder",
        "movement",
        "amount",
        "transition"
      ],
      "title": "ShotEdit",
      "type": "object"
    },
    "SignalEdit": {
      "additionalProperties": false,
      "properties": {
        "kind": {
          "enum": [
            "emit",
            "return"
          ],
          "title": "Kind",
          "type": "string"
        },
        "film": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Film",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Id",
          "type": "string"
        },
        "at": {
          "maximum": 3600,
          "minimum": 0,
          "title": "At",
          "type": "number"
        },
        "event": {
          "anyOf": [
            {
              "pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,99}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Event"
        },
        "target": {
          "anyOf": [
            {
              "format": "uuid",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Target"
        }
      },
      "required": [
        "kind",
        "film",
        "id",
        "at",
        "event",
        "target"
      ],
      "title": "SignalEdit",
      "type": "object"
    },
    "TextEdit": {
      "additionalProperties": false,
      "properties": {
        "film": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Film",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Id",
          "type": "string"
        },
        "at": {
          "maximum": 3600,
          "minimum": 0,
          "title": "At",
          "type": "number"
        },
        "duration": {
          "exclusiveMinimum": 0,
          "maximum": 3600,
          "title": "Duration",
          "type": "number"
        },
        "kind": {
          "enum": [
            "dialogue",
            "subtitle",
            "narration"
          ],
          "title": "Kind",
          "type": "string"
        },
        "actor": {
          "anyOf": [
            {
              "format": "uuid",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Actor"
        },
        "text": {
          "maxLength": 4000,
          "minLength": 1,
          "title": "Text",
          "type": "string"
        }
      },
      "required": [
        "film",
        "id",
        "at",
        "duration",
        "kind",
        "actor",
        "text"
      ],
      "title": "TextEdit",
      "type": "object"
    },
    "TriggerEdit": {
      "additionalProperties": false,
      "properties": {
        "kind": {
          "const": "trigger",
          "title": "Kind",
          "type": "string"
        },
        "id": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Id",
          "type": "string"
        },
        "subject": {
          "format": "uuid",
          "title": "Subject",
          "type": "string"
        },
        "target": {
          "anyOf": [
            {
              "format": "uuid",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Target"
        },
        "event": {
          "enum": [
            "near",
            "qway.object.enter",
            "qway.object.leave",
            "qway.relation.changed",
            "qway.interaction",
            "qway.trigger",
            "ridley.complete"
          ],
          "title": "Event",
          "type": "string"
        },
        "distance": {
          "exclusiveMinimum": 0,
          "maximum": 100,
          "title": "Distance",
          "type": "number"
        },
        "cinematic": {
          "pattern": "^[A-Za-z_][A-Za-z0-9_-]{0,99}$",
          "title": "Cinematic",
          "type": "string"
        },
        "once": {
          "title": "Once",
          "type": "boolean"
        }
      },
      "required": [
        "kind",
        "id",
        "subject",
        "target",
        "event",
        "distance",
        "cinematic",
        "once"
      ],
      "title": "TriggerEdit",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "operations": {
      "items": {
        "anyOf": [
          {
            "$ref": "#/$defs/ShotEdit"
          },
          {
            "$ref": "#/$defs/TextEdit"
          },
          {
            "$ref": "#/$defs/ActionEdit"
          },
          {
            "$ref": "#/$defs/SignalEdit"
          },
          {
            "$ref": "#/$defs/TriggerEdit"
          },
          {
            "$ref": "#/$defs/RemoveCueEdit"
          },
          {
            "$ref": "#/$defs/ExperienceStateEdit"
          },
          {
            "$ref": "#/$defs/ExperienceTransitionEdit"
          },
          {
            "$ref": "#/$defs/MusicEdit"
          },
          {
            "$ref": "#/$defs/SfxEdit"
          }
        ]
      },
      "maxItems": 32,
      "title": "Operations",
      "type": "array"
    },
    "warnings": {
      "items": {
        "maxLength": 240,
        "type": "string"
      },
      "maxItems": 8,
      "title": "Warnings",
      "type": "array"
    }
  },
  "required": [
    "operations",
    "warnings"
  ],
  "title": "RidleySuggestion",
  "type": "object"
}
