{ "$schema":              "https://json-schema.org/draft/2020-12/schema",
  "$comment":             "https://schemas.mpai.community/AIF/V3.0/data/AIMMetadata.json",
  "$id":                  "https://schemas.mpai.community/XRV1/V1.0/AIMs/LiveTheatricalPerformance.json",
  "title":                "Live Theatrical Performance V1.0",

  "Identifier":           {"ImplementerID": "/* String assigned by IIDRA */", "ImplementationID": "/* String assigned by Implementer */", "AIMName": "/* The name of the AIM, given by the concatenation of the two strings ImplementerID and ImplementationID, in this order, with no space and no character between them. */"},
  "Header":               "XRV-LTP-V1.0",

  "APIProfile":           "Basic",
  "Description":          "The Live Theatrical Performance (XRV-LTP) AIM receives Venue-specific Specifications and data from the Real and Virtual live-performance Environment, the live performance Script, historical and current Participant data, and Venue-specific commands, data, and associations between Script and Venue. As the Live Theatrical Performance proceeds, it controls the audience experience according to the Script based on the Actions of the Performance (Performers and related objects), Operators, and Participants.",

  "ExternalPorts":        [{"Name": "REDataIn",                "Direction": "Input", "DataType": "XRV-RDI-V1.0", "Technology": "Software", "Protocol": "", "IsRemote": false},
                           {"Name": "REVenueSpecification1",   "Direction": "Input", "DataType": "XRV-RVS-V1.0", "Technology": "Software", "Protocol": "", "IsRemote": false, "PortNumber": 1},
                           {"Name": "REVenueSpecification2",   "Direction": "Input", "DataType": "XRV-RVS-V1.0", "Technology": "Software", "Protocol": "", "IsRemote": false, "PortNumber": 2},
                           {"Name": "VEDataIn",                "Direction": "Input", "DataType": "XRV-VDI-V1.0", "Technology": "Software", "Protocol": "", "IsRemote": false},
                           {"Name": "VEVenueSpecification1",   "Direction": "Input", "DataType": "XRV-VVS-V1.0", "Technology": "Software", "Protocol": "", "IsRemote": false, "PortNumber": 1},
                           {"Name": "VEVenueSpecification2",   "Direction": "Input", "DataType": "XRV-VVS-V1.0", "Technology": "Software", "Protocol": "", "IsRemote": false, "PortNumber": 2},
                           {"Name": "ParticipantDataIn",       "Direction": "Input", "DataType": "XRV-PTD-V1.0", "Technology": "Software", "Protocol": "", "IsRemote": false},
                           {"Name": "Script",                  "Direction": "Input", "DataType": "XRV-SCR-V1.0", "Technology": "Software", "Protocol": "", "IsRemote": false},
                           {"Name": "ActionTable",             "Direction": "Input", "DataType": "XRV-ATB-V1.0", "Technology": "Software", "Protocol": "", "IsRemote": false},
                           {"Name": "ScriptVenueAssociations", "Direction": "Input", "DataType": "XRV-SVA-V1.0", "Technology": "Software", "Protocol": "", "IsRemote": false},
                           {"Name": "VEDataOut",               "Direction": "Output", "DataType": "XRV-VDO-V1.0", "Technology": "Software", "Protocol": "", "IsRemote": false},
                           {"Name": "REDataOut",               "Direction": "Output", "DataType": "XRV-RDO-V1.0", "Technology": "Software", "Protocol": "", "IsRemote": false},
                           {"Name": "ParticipantDataOut",      "Direction": "Output", "DataType": "XRV-PTD-V1.0", "Technology": "Software", "Protocol": "", "IsRemote": false}],

  "SubAIMs":              [{ "Header": "XRV-END-V1.0", "Identifier": { "ImplementerID": "/* String assigned by IIDRA */", "ImplementationID": "/* String assigned by Implementer */", "AIMName": "/* The name of the AIM, given by the concatenation of the two strings ImplementerID and ImplementationID, in this order, with no space and no character between them. */" } },
                           { "Header": "XRV-PFI-V1.0", "Identifier": { "ImplementerID": "/* String assigned by IIDRA */", "ImplementationID": "/* String assigned by Implementer */", "AIMName": "/* The name of the AIM, given by the concatenation of the two strings ImplementerID and ImplementationID, in this order, with no space and no character between them. */" } },
                           { "Header": "XRV-PTI-V1.0", "Identifier": { "ImplementerID": "/* String assigned by IIDRA */", "ImplementationID": "/* String assigned by Implementer */", "AIMName": "/* The name of the AIM, given by the concatenation of the two strings ImplementerID and ImplementationID, in this order, with no space and no character between them. */" } },
                           { "Header": "XRV-OSI-V1.0", "Identifier": { "ImplementerID": "/* String assigned by IIDRA */", "ImplementationID": "/* String assigned by Implementer */", "AIMName": "/* The name of the AIM, given by the concatenation of the two strings ImplementerID and ImplementationID, in this order, with no space and no character between them. */" } },
                           { "Header": "XRV-ACG-V1.0", "Identifier": { "ImplementerID": "/* String assigned by IIDRA */", "ImplementationID": "/* String assigned by Implementer */", "AIMName": "/* The name of the AIM, given by the concatenation of the two strings ImplementerID and ImplementationID, in this order, with no space and no character between them. */" } },
                           { "Header": "XRV-REG-V1.0", "Identifier": { "ImplementerID": "/* String assigned by IIDRA */", "ImplementationID": "/* String assigned by Implementer */", "AIMName": "/* The name of the AIM, given by the concatenation of the two strings ImplementerID and ImplementationID, in this order, with no space and no character between them. */" } },
                           { "Header": "XRV-VEG-V1.0", "Identifier": { "ImplementerID": "/* String assigned by IIDRA */", "ImplementationID": "/* String assigned by Implementer */", "AIMName": "/* The name of the AIM, given by the concatenation of the two strings ImplementerID and ImplementationID, in this order, with no space and no character between them. */" } }],

  "Topology":             [{ "Output": { "AIMName": "",             "PortName": "Script"                   }, "Input": { "AIMName": "XRV-END-V1.0", "PortName": "Script"                   } },
                           { "Output": { "AIMName": "",             "PortName": "Script"                   }, "Input": { "AIMName": "XRV-PFI-V1.0", "PortName": "Script"                   } },
                           { "Output": { "AIMName": "",             "PortName": "Script"                   }, "Input": { "AIMName": "XRV-PTI-V1.0", "PortName": "Script"                   } },
                           { "Output": { "AIMName": "",             "PortName": "Script"                   }, "Input": { "AIMName": "XRV-OSI-V1.0", "PortName": "Script"                   } },
                           { "Output": { "AIMName": "",             "PortName": "Script"                   }, "Input": { "AIMName": "XRV-ACG-V1.0", "PortName": "Script"                   } },
                           { "Output": { "AIMName": "",             "PortName": "Script"                   }, "Input": { "AIMName": "XRV-REG-V1.0", "PortName": "Script"                   } },
                           { "Output": { "AIMName": "",             "PortName": "Script"                   }, "Input": { "AIMName": "XRV-VEG-V1.0", "PortName": "Script"                   } },
                           { "Output": { "AIMName": "",             "PortName": "ActionTable"              }, "Input": { "AIMName": "XRV-END-V1.0", "PortName": "ActionTable"              } },
                           { "Output": { "AIMName": "",             "PortName": "ActionTable"              }, "Input": { "AIMName": "XRV-PFI-V1.0", "PortName": "ActionTable"              } },
                           { "Output": { "AIMName": "",             "PortName": "ActionTable"              }, "Input": { "AIMName": "XRV-PTI-V1.0", "PortName": "ActionTable"              } },
                           { "Output": { "AIMName": "",             "PortName": "ActionTable"              }, "Input": { "AIMName": "XRV-OSI-V1.0", "PortName": "ActionTable"              } },
                           { "Output": { "AIMName": "",             "PortName": "ActionTable"              }, "Input": { "AIMName": "XRV-ACG-V1.0", "PortName": "ActionTable"              } },
                           { "Output": { "AIMName": "",             "PortName": "ActionTable"              }, "Input": { "AIMName": "XRV-REG-V1.0", "PortName": "ActionTable"              } },
                           { "Output": { "AIMName": "",             "PortName": "ActionTable"              }, "Input": { "AIMName": "XRV-VEG-V1.0", "PortName": "ActionTable"              } },
                           { "Output": { "AIMName": "",             "PortName": "ScriptVenueAssociations"  }, "Input": { "AIMName": "XRV-END-V1.0", "PortName": "ScriptVenueAssociations"  } },
                           { "Output": { "AIMName": "",             "PortName": "ScriptVenueAssociations"  }, "Input": { "AIMName": "XRV-PFI-V1.0", "PortName": "ScriptVenueAssociations"  } },
                           { "Output": { "AIMName": "",             "PortName": "ScriptVenueAssociations"  }, "Input": { "AIMName": "XRV-PTI-V1.0", "PortName": "ScriptVenueAssociations"  } },
                           { "Output": { "AIMName": "",             "PortName": "ScriptVenueAssociations"  }, "Input": { "AIMName": "XRV-OSI-V1.0", "PortName": "ScriptVenueAssociations"  } },
                           { "Output": { "AIMName": "",             "PortName": "ScriptVenueAssociations"  }, "Input": { "AIMName": "XRV-ACG-V1.0", "PortName": "ScriptVenueAssociations"  } },
                           { "Output": { "AIMName": "",             "PortName": "ScriptVenueAssociations"  }, "Input": { "AIMName": "XRV-REG-V1.0", "PortName": "ScriptVenueAssociations"  } },
                           { "Output": { "AIMName": "",             "PortName": "ScriptVenueAssociations"  }, "Input": { "AIMName": "XRV-VEG-V1.0", "PortName": "ScriptVenueAssociations"  } },
                           { "Output": { "AIMName": "",             "PortName": "ParticipantDataIn"        }, "Input": { "AIMName": "XRV-END-V1.0", "PortName": "ParticipantData"          } },
                           { "Output": { "AIMName": "",             "PortName": "ParticipantDataIn"        }, "Input": { "AIMName": "XRV-PFI-V1.0", "PortName": "ParticipantData"          } },
                           { "Output": { "AIMName": "",             "PortName": "ParticipantDataIn"        }, "Input": { "AIMName": "XRV-PTI-V1.0", "PortName": "ParticipantData"          } },
                           { "Output": { "AIMName": "",             "PortName": "ParticipantDataIn"        }, "Input": { "AIMName": "XRV-OSI-V1.0", "PortName": "ParticipantData"          } },
                           { "Output": { "AIMName": "",             "PortName": "ParticipantDataIn"        }, "Input": { "AIMName": "XRV-ACG-V1.0", "PortName": "ParticipantData"          } },
                           { "Output": { "AIMName": "",             "PortName": "ParticipantDataIn"        }, "Input": { "AIMName": "XRV-REG-V1.0", "PortName": "ParticipantData"          } },
                           { "Output": { "AIMName": "",             "PortName": "ParticipantDataIn"        }, "Input": { "AIMName": "XRV-VEG-V1.0", "PortName": "ParticipantData"          } },
                           { "Output": { "AIMName": "",             "PortName": "REDataIn"                 }, "Input": { "AIMName": "XRV-END-V1.0", "PortName": "REDataIn"                 } },
                           { "Output": { "AIMName": "",             "PortName": "REVenueSpecification1"    }, "Input": { "AIMName": "XRV-END-V1.0", "PortName": "REVenueSpecification"     } },
                           { "Output": { "AIMName": "",             "PortName": "VEDataIn"                 }, "Input": { "AIMName": "XRV-END-V1.0", "PortName": "VEDataIn"                 } },
                           { "Output": { "AIMName": "",             "PortName": "VEVenueSpecification1"    }, "Input": { "AIMName": "XRV-END-V1.0", "PortName": "VEVenueSpecification"     } },
                           { "Output": { "AIMName": "XRV-END-V1.0", "PortName": "ShowDescriptors"          }, "Input": { "AIMName": "XRV-REG-V1.0", "PortName": "ShowDescriptors"          } },
                           { "Output": { "AIMName": "XRV-END-V1.0", "PortName": "ShowDescriptors"          }, "Input": { "AIMName": "XRV-VEG-V1.0", "PortName": "ShowDescriptors"          } },
                           { "Output": { "AIMName": "XRV-END-V1.0", "PortName": "REPerformanceDescriptors" }, "Input": { "AIMName": "XRV-PFI-V1.0", "PortName": "REPerformanceDescriptors" } },
                           { "Output": { "AIMName": "XRV-END-V1.0", "PortName": "VEPerformanceDescriptors" }, "Input": { "AIMName": "XRV-PFI-V1.0", "PortName": "VEPerformanceDescriptors" } },
                           { "Output": { "AIMName": "XRV-END-V1.0", "PortName": "REParticipantDescriptors" }, "Input": { "AIMName": "XRV-PTI-V1.0", "PortName": "REParticipantDescriptors" } },
                           { "Output": { "AIMName": "XRV-END-V1.0", "PortName": "VEParticipantDescriptors" }, "Input": { "AIMName": "XRV-PTI-V1.0", "PortName": "VEParticipantDescriptors" } },
                           { "Output": { "AIMName": "XRV-END-V1.0", "PortName": "REOperatorDescriptors"    }, "Input": { "AIMName": "XRV-OSI-V1.0", "PortName": "REOperatorDescriptors"    } },
                           { "Output": { "AIMName": "XRV-END-V1.0", "PortName": "VEOperatorDescriptors"    }, "Input": { "AIMName": "XRV-OSI-V1.0", "PortName": "VEOperatorDescriptors"    } },
                           { "Output": { "AIMName": "XRV-PFI-V1.0", "PortName": "REPerformanceStatus"      }, "Input": { "AIMName": "XRV-ACG-V1.0", "PortName": "REPerformanceStatus"      } },
                           { "Output": { "AIMName": "XRV-PFI-V1.0", "PortName": "VEPerformanceStatus"      }, "Input": { "AIMName": "XRV-ACG-V1.0", "PortName": "VEPerformanceStatus"      } },
                           { "Output": { "AIMName": "XRV-PTI-V1.0", "PortName": "REParticipantStatus"      }, "Input": { "AIMName": "XRV-ACG-V1.0", "PortName": "REParticipantStatus"      } },
                           { "Output": { "AIMName": "XRV-PTI-V1.0", "PortName": "VEParticipantStatus"      }, "Input": { "AIMName": "XRV-ACG-V1.0", "PortName": "VEParticipantStatus"      } },
                           { "Output": { "AIMName": "XRV-OSI-V1.0", "PortName": "REOperatorStatus"         }, "Input": { "AIMName": "XRV-ACG-V1.0", "PortName": "REOperatorStatus"         } },
                           { "Output": { "AIMName": "XRV-OSI-V1.0", "PortName": "VEOperatorStatus"         }, "Input": { "AIMName": "XRV-ACG-V1.0", "PortName": "VEOperatorStatus"         } },
                           { "Output": { "AIMName": "XRV-ACG-V1.0", "PortName": "CuePointID"               }, "Input": { "AIMName": "XRV-PFI-V1.0", "PortName": "CuePointID"               } },
                           { "Output": { "AIMName": "XRV-ACG-V1.0", "PortName": "CuePointID"               }, "Input": { "AIMName": "XRV-PTI-V1.0", "PortName": "CuePointID"               } },
                           { "Output": { "AIMName": "XRV-ACG-V1.0", "PortName": "CuePointID"               }, "Input": { "AIMName": "XRV-OSI-V1.0", "PortName": "CuePointID"               } },
                           { "Output": { "AIMName": "XRV-ACG-V1.0", "PortName": "REActionGeneration"       }, "Input": { "AIMName": "XRV-REG-V1.0", "PortName": "REActionIDs"              } },
                           { "Output": { "AIMName": "XRV-ACG-V1.0", "PortName": "VEActionGeneration"       }, "Input": { "AIMName": "XRV-VEG-V1.0", "PortName": "VEActionIDs"              } },
                           { "Output": { "AIMName": "XRV-ACG-V1.0", "PortName": "ParticipantData"          }, "Input": { "AIMName": "",             "PortName": "ParticipantDataOut"       } },
                           { "Output": { "AIMName": "",             "PortName": "REVenueSpecification2"    }, "Input": { "AIMName": "XRV-REG-V1.0", "PortName": "REVenueSpecification"     } },
                           { "Output": { "AIMName": "",             "PortName": "VEVenueSpecification2"    }, "Input": { "AIMName": "XRV-VEG-V1.0", "PortName": "VEVenueSpecification"     } },
                           { "Output": { "AIMName": "XRV-REG-V1.0", "PortName": "REDataOut"                }, "Input": { "AIMName": "",             "PortName": "REDataOut"                } },
                           { "Output": { "AIMName": "XRV-VEG-V1.0", "PortName": "VEDataOut"                }, "Input": { "AIMName": "",             "PortName": "VEDataOut"                } }],

  "AIMLicence":          "/* AIM Licence offered by the Implementer (AIF-LIC-V3.0): Grant, Term, Updates, Payment, TermsURI - or omit it if the AIM needs no AIM Licence */",

  "Implementations":      [{ "ImplementationURI": "/* absolute URI locating the Implementation */",
                             "BinaryName":        "/* provided by implementer */",
                             "Architecture":      "/* x86-64 | ARM64 */",
                             "MASPort":           443,
                             "Firewall":          [{ "Protocol": "TCP | UDP", "Version": "IPV4 | IPV6", "Direction": "Ingress | Egress | Both", "Range": "9990[-9999]", "Source": "0.0.0.0/0" }],
                             "OperatingSystem":   "/* Windows | Linux | MacOS */",
                             "Version":           "/* implementer version */",
                             "Source":            "/* AIMStorage | MPAIStore */",
                             "Destination":       "/* provided by implementer */" }],

  "ResourcePolicies":     [{ "Name": "Memory",               "Minimum": "/* GB */",             "Maximum": "/* GB */",             "Request": "/* GB */" },
                           { "Name": "CPU:Number",           "Minimum": "/* integer, 0=all */", "Maximum": "/* integer, 0=all */", "Request": "/* integer */" },
                           { "Name": "CPU:Class",            "Minimum": "/* string */",         "Maximum": "/* string */",         "Request": "/* string */" },
                           { "Name": "GPU:Number",           "Minimum": "/* integer, 0=all */", "Maximum": "/* integer, 0=all */", "Request": "/* integer */" },
                           { "Name": "GPU:CUDA:Class",       "Minimum": "/* string */",         "Maximum": "/* string */",         "Request": "/* string */" },
                           { "Name": "GPU:CUDA:FrameBuffer", "Minimum": "/* GB */",             "Maximum": "/* GB */",             "Request": "/* GB */" },
                           { "Name": "GPU:CUDA:MemorySpeed", "Minimum": "/* GB/s */",           "Maximum": "/* GB/s */",           "Request": "/* GB/s */" }],

  "DataXMData":           { },

  "Documentation":        [{"Type": "Specification", "URI": "https://mpai.community/standards/mpai-xrv/ltp/v1-0/ai-modules/live-theatrical-performance/"}]}