{ "$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/PAF/V1.6/AIMs/ResponseAndSceneRendering.json",
  "title":                "Response and Scene Rendering V1.6",

  "Identifier":           {"ImplementerID": "/* String assigned by IIDRA */", "ImplementationID": "/* String from Implementer */", "AIMName": "PAF-RSR-V1.6"},
  "Header":               "PAF-RSR-V1.6",

  "APIProfile":           "Basic",
  "Description":          "Response and Scene Rendering: renders the machine's response - a Text, and the Personal Status that goes with it - as the Portable Avatar of the input Avatar Model, ready to play; whoever requested it places it in a scene and renders it (with Scene and Avatar Rendering). Personal Status De-multiplexing splits a Personal Status into the Speech, Face and Body Personal Statuses; Text-To-Speech makes the Machine Speech; Portable Avatar Formation makes the Portable Avatar. The Point of View goes through.",

  "InternalTypes":        [{"Name": "SpeechPersonalStatus", "DataType": "MMC-SPS-V2.5"},
                          {"Name": "FacePersonalStatus", "DataType": "MMC-FPS-V2.5"},
                          {"Name": "BodyPersonalStatus", "DataType": "MMC-BPS-V2.5"},
                          {"Name": "MachineSpeech", "DataType": "OSD-BSO-V1.5", "Output": 2}],

  "ExternalPorts":        [{"Name": "PointOfView", "Direction": "Input", "DataType": "OSD-OPV-V1.5", "IsOptional": true, "Technology": "Software", "Protocol": "", "IsRemote": false},
                          {"Name": "AvatarSpatialAttitude", "Direction": "Input", "DataType": "OSD-OSA-V1.5", "IsOptional": true, "Technology": "Software", "Protocol": "", "IsRemote": false},
                          {"Name": "AVSceneDescriptors", "Direction": "Input", "DataType": "OSD-BMS-V1.5", "IsOptional": true, "Technology": "Software", "Protocol": "", "IsRemote": false},
                          {"Name": "InputSpeech", "Direction": "Input", "DataType": ["OSD-BSO-V1.5", "OSD-SPO-V1.5"], "Output": 2, "IsOptional": true, "Technology": "Software", "Protocol": "", "IsRemote": false},
                          {"Name": "SpeechModel", "Direction": "Input", "DataType": "AIP-MLO-V1.0", "IsOptional": true, "Technology": "Software", "Protocol": "", "IsRemote": false},
                          {"Name": "TextTTS", "Direction": "Input", "DataType": ["OSD-BTO-V1.5", "OSD-TXO-V1.5"], "PortNumber": 1, "Input": 1, "Technology": "Software", "Protocol": "", "IsRemote": false},
                          {"Name": "TextSAF", "Direction": "Input", "DataType": ["OSD-BTO-V1.5", "OSD-TXO-V1.5"], "PortNumber": 2, "Input": 1, "Output": 1, "Technology": "Software", "Protocol": "", "IsRemote": false},
                          {"Name": "PersonalStatus", "Direction": "Input", "DataType": "MMC-EPS-V2.5", "IsOptional": true, "Technology": "Software", "Protocol": "", "IsRemote": false},
                          {"Name": "AvatarModel", "Direction": "Input", "DataType": "OSD-B3O-V1.5", "Technology": "Software", "Protocol": "", "IsRemote": false},
                          {"Name": "MachineID", "Direction": "Input", "DataType": "string", "Technology": "Software", "Protocol": "", "IsRemote": false},
                          {"Name": "OutputPointOfView", "Direction": "Output", "DataType": "OSD-OPV-V1.5", "IsOptional": true, "Technology": "Software", "Protocol": "", "IsRemote": false},
                          {"Name": "PortableAvatar", "Direction": "Output", "DataType": "PAF-PAV-V1.6", "Technology": "Software", "Protocol": "", "IsRemote": false}],

  "SubAIMs":              [{"Identifier": {"ImplementerID": "/* String assigned by IIDRA */", "ImplementationID": "/* String from Implementer */", "AIMName": "MMC-PDX-V2.5", "Relation": "Internal"}},
                          {"Identifier": {"ImplementerID": "/* String assigned by IIDRA */", "ImplementationID": "/* String from Implementer */", "AIMName": "MMC-TTS-V2.5", "Relation": "Internal"}},
                          {"Identifier": {"ImplementerID": "/* String assigned by IIDRA */", "ImplementationID": "/* String from Implementer */", "AIMName": "PAF-SAF-V1.6", "Relation": "Internal"}}],

  "Topology":             [{"Output": {"AIMName": "", "DataType": "OSD-OPV-V1.5"}, "Input": {"AIMName": "", "DataType": "OSD-OPV-V1.5"}},
                          {"Output": {"AIMName": "", "DataType": "OSD-OSA-V1.5"}, "Input": {"AIMName": "PAF-SAF-V1.6", "DataType": "OSD-OSA-V1.5"}},
                          {"Output": {"AIMName": "", "DataType": "OSD-BMS-V1.5"}, "Input": {"AIMName": "PAF-SAF-V1.6", "DataType": "OSD-BMS-V1.5"}},
                          {"Output": {"AIMName": "", "DataType": "MMC-EPS-V2.5"}, "Input": {"AIMName": "MMC-PDX-V2.5", "DataType": "MMC-EPS-V2.5"}},
                          {"Output": {"AIMName": "", "DataType": "AIP-MLO-V1.0"}, "Input": {"AIMName": "MMC-TTS-V2.5", "DataType": "AIP-MLO-V1.0"}},
                          {"Output": {"AIMName": "", "DataType": "OSD-BTO-V1.5", "PortNumber": 1}, "Input": {"AIMName": "MMC-TTS-V2.5", "DataType": "OSD-BTO-V1.5"}},
                          {"Output": {"AIMName": "MMC-PDX-V2.5", "DataType": "MMC-SPS-V2.5"}, "Input": {"AIMName": "MMC-TTS-V2.5", "DataType": "MMC-SPS-V2.5"}},
                          {"Output": {"AIMName": "MMC-TTS-V2.5", "DataType": "OSD-BSO-V1.5"}, "Input": {"AIMName": "PAF-SAF-V1.6", "DataType": "OSD-BSO-V1.5", "PortNumber": 1}},
                          {"Output": {"AIMName": "", "DataType": "OSD-BSO-V1.5"}, "Input": {"AIMName": "PAF-SAF-V1.6", "DataType": "OSD-BSO-V1.5", "PortNumber": 1}},
                          {"Output": {"AIMName": "MMC-PDX-V2.5", "DataType": "MMC-FPS-V2.5"}, "Input": {"AIMName": "PAF-SAF-V1.6", "DataType": "MMC-FPS-V2.5"}},
                          {"Output": {"AIMName": "MMC-PDX-V2.5", "DataType": "MMC-BPS-V2.5"}, "Input": {"AIMName": "PAF-SAF-V1.6", "DataType": "MMC-BPS-V2.5"}},
                          {"Output": {"AIMName": "", "DataType": "OSD-BTO-V1.5", "PortNumber": 2}, "Input": {"AIMName": "PAF-SAF-V1.6", "DataType": "OSD-BTO-V1.5", "PortNumber": 1}},
                          {"Output": {"AIMName": "", "DataType": "OSD-B3O-V1.5"}, "Input": {"AIMName": "PAF-SAF-V1.6", "DataType": "OSD-B3O-V1.5"}},
                          {"Output": {"AIMName": "", "DataType": "string"}, "Input": {"AIMName": "PAF-SAF-V1.6", "DataType": "string"}},
                          {"Output": {"AIMName": "PAF-SAF-V1.6", "DataType": "PAF-PAV-V1.6"}, "Input": {"AIMName": "", "DataType": "PAF-PAV-V1.6"}}],

  "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": "Tutorial", "URI": "https://mpai.community/standards/mpai-paf/v1-6/"}]}