{ "$schema":                        "https://json-schema.org/draft/2020-12/schema",
  "$id":                            "https://schemas.mpai.community/XRV1/V1.0/data/CueList.json",
  "title":                          "Cue List V1.0",
  "type":                           "object",
  "additionalProperties":           false,
  "properties":                     {

    "Header":                       { "type": "string", "const": "XRV-CLS-V1.0" },
    "MInstanceID":                  { "type": "string" },
    "UEnvironmentID":               { "type": "string" },
    "CueListID":                    { "type": "string" },
    "CueListTime":                  { "$ref": "https://schemas.mpai.community/OSD/V1.5/data/SimpleTime.json" },

    "CueListData":                  { "type": "array", "items": { "type": "object", "required": ["Cue"], "additionalProperties": false, "properties": {
      "Cue":                        { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "minProperties": 1, "maxProperties": 1, "properties": {
        "RealCue":                  { "$ref": "#/$defs/RealCue" },
        "VirtualCue":               { "$ref": "#/$defs/VirtualCue" },
        "MixedCue":                 { "$ref": "#/$defs/MixedCue" } } } } } } },

    "DataXMData":                   { "$ref": "https://schemas.mpai.community/PTF/V1.0/data/DataExchangeMetadata.json" },
    "DescrMetadata":                { "type": "string", "maxLength": 2048 } },

  "$defs":                          {

    "RealActionID":                 { "type": "string", "title": "RealActionID" },
    "VirtualActionID":              { "type": "string", "title": "VirtualActionID" },
    "MixedRealActionID":            { "type": "string", "title": "MixedRealActionID" },
    "MixedVirtualActionID":         { "type": "string", "title": "MixedVirtualActionID" },

    "RealActionIDs":                { "type": "array", "items": { "$ref": "#/$defs/RealActionID" }, "uniqueItems": true },
    "VirtualActionIDs":             { "type": "array", "items": { "$ref": "#/$defs/VirtualActionID" }, "uniqueItems": true },
    "MixedRealActionIDs":           { "type": "array", "items": { "$ref": "#/$defs/MixedRealActionID" }, "uniqueItems": true },
    "MixedVirtualActionIDs":        { "type": "array", "items": { "$ref": "#/$defs/MixedVirtualActionID" }, "uniqueItems": true },

    "RECueConditions":              { "type": "object", "additionalProperties": false, "properties": {
      "REPerformanceDescriptors":   { "$ref": "https://schemas.mpai.community/XRV1/V1.0/data/REPerformanceDescriptors.json" },
      "REPerformanceStatus":        { "$ref": "https://schemas.mpai.community/XRV1/V1.0/data/REPerformanceStatus.json" },
      "REParticipantDescriptors":   { "$ref": "https://schemas.mpai.community/XRV1/V1.0/data/REParticipantDescriptors.json" },
      "REParticipantStatus":        { "$ref": "https://schemas.mpai.community/XRV1/V1.0/data/REParticipantStatus.json" },
      "REOperatorDescriptors":      { "$ref": "https://schemas.mpai.community/XRV1/V1.0/data/REOperatorDescriptors.json" },
      "REOperatorStatus":           { "$ref": "https://schemas.mpai.community/XRV1/V1.0/data/REOperatorStatus.json" }} },

    "VECueConditions":              { "type": "object", "additionalProperties": false, "properties": {
      "VEPerformanceDescriptors":   { "$ref": "https://schemas.mpai.community/XRV1/V1.0/data/VEPerformanceDescriptors.json" },
      "VEPerformanceStatus":        { "$ref": "https://schemas.mpai.community/XRV1/V1.0/data/VEPerformanceStatus.json" },
      "VEParticipantDescriptors":   { "$ref": "https://schemas.mpai.community/XRV1/V1.0/data/VEParticipantDescriptors.json" },
      "VEParticipantStatus":        { "$ref": "https://schemas.mpai.community/XRV1/V1.0/data/VEParticipantStatus.json" },
      "VEOperatorDescriptors":      { "$ref": "https://schemas.mpai.community/XRV1/V1.0/data/VEOperatorDescriptors.json" },
      "VEOperatorStatus":           { "$ref": "https://schemas.mpai.community/XRV1/V1.0/data/VEOperatorStatus.json" }} },

    "REGroup":                      { "type": "object", "additionalProperties": false, "properties": {
      "RECueConditions":            { "$ref": "#/$defs/RECueConditions" },
      "REActions":                  { "$ref": "#/$defs/RealActionIDs" },
      "VEActions":                  { "$ref": "#/$defs/VirtualActionIDs" },
      "NextCue":                    { "type": "string" } } },

    "VEGroup":                      { "type": "object", "additionalProperties": false, "properties": {
      "VECueConditions":            { "$ref": "#/$defs/VECueConditions" },
      "REActions":                  { "$ref": "#/$defs/RealActionIDs" },
      "VEActions":                  { "$ref": "#/$defs/VirtualActionIDs" },
      "NextCue":                    { "type": "string" } } },

    "MEGroup":                      { "type": "object", "additionalProperties": false, "properties": {
      "RECueConditions":            { "$ref": "#/$defs/RECueConditions" },
      "VECueConditions":            { "$ref": "#/$defs/VECueConditions" },
      "REActions":                  { "$ref": "#/$defs/MixedRealActionIDs" },
      "VEActions":                  { "$ref": "#/$defs/MixedVirtualActionIDs" },
      "NextCue":                    { "type": "string" } } },

    "RealCue":                      { "type": "object", "additionalProperties": false, "required": ["RECueID", "REGroups"], "properties": {
      "RECueID":                    { "type": "string" },
      "REGroups":                   { "type": "array", "items": { "$ref": "#/$defs/REGroup" } } } },

    "VirtualCue":                   { "type": "object", "additionalProperties": false, "required": ["VECueID", "VEGroups"], "properties": {
      "VECueID":                    { "type": "string" },
      "VEGroups":                   { "type": "array", "items": { "$ref": "#/$defs/VEGroup" } } } },

    "MixedCue":                     { "type": "object", "additionalProperties": false, "required": ["MECueID", "MEGroups"], "properties": {
      "MECueID":                    { "type": "string" },
      "MEGroups":                   { "type": "array", "items": { "$ref": "#/$defs/MEGroup" } } } },

    "RealSubCue":                   { "type": "object", "additionalProperties": false, "required": ["RESubCueID", "REGroups"], "properties": {
      "RESubCueID":                 { "type": "string" },
      "REGroups":                   { "type": "array", "items": { "$ref": "#/$defs/REGroup" } } } },

    "VirtualSubCue":                { "type": "object", "additionalProperties": false, "required": ["VESubCueID", "VEGroups"], "properties": {
      "VESubCueID":                 { "type": "string" },
      "VEGroups":                   { "type": "array", "items": { "$ref": "#/$defs/VEGroup" } } } },

    "MixedSubCue":                  { "type": "object", "additionalProperties": false, "required": ["MESubCueID", "MEGroups"], "properties": {
      "MESubCueID":                 { "type": "string" },
      "MEGroups":                   { "type": "array", "items": { "$ref": "#/$defs/MEGroup" } } } } } }