{ "$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/CAE3/V1.0/AIMs/AudioObjectEditing.json",
  "title":                "Audio Object Editing V1.0",
  "Header":               "CAE-AOE-V1.0",

  "Identifier":           {"ImplementerID": "/* String from IIDRA */", "ImplementationID": "/* String from Implementer */", "AIMName": "CAE-AOE-V1.0"},

  "APIProfile":           "Basic",
  "Description":          "Audio Object Editing. One Basic Audio Object is open at a time, so a User Command need not name it: a Basic Audio Object arriving is opened - from Shared Storage, by its identifier - or, new (a sound the User Agent captured), created. The User Command modifies what it is like (ModifiedObjects: the Object part of the Acoustic Profile; LUFS) and where it is heard from (UserPoV, also on its own Port). Every edit is a new version in Shared Storage. Outputs: the open Basic Audio Object, to the Module and to Audio Scene Editing, and the User Command, with its report half (UserCommandReport) saying how each action was executed.",

  "InternalTypes":        [],

  "ExternalPorts":        [{"Name": "UserCommand", "Direction": "Input", "DataType": "CAE-UCM-V1.0", "IsOptional": true, "Technology": "Software", "Protocol": "", "IsRemote": false},
                           {"Name": "UserPoV", "Direction": "Input", "DataType": "OSD-OPV-V1.5", "IsOptional": true, "Technology": "Software", "Protocol": "", "IsRemote": false},
                           {"Name": "AudioObject", "Direction": "Input", "DataType": "OSD-BAO-V1.5", "IsOptional": true, "Technology": "Software", "Protocol": "", "IsRemote": false},
                           {"Name": "EditedAudioObject", "Direction": "Output", "DataType": "OSD-BAO-V1.5", "Technology": "Software", "Protocol": "", "IsRemote": false},
                           {"Name": "UserCommandReport", "Direction": "Output", "DataType": "CAE-UCM-V1.0", "IsOptional": true, "Technology": "Software", "Protocol": "", "IsRemote": false}],

  "SubAIMs":              [],
  "Topology":             [],

  "Implementations":      [{"ImplementationURI": "/* URI storing Implementation */",
                            "BinaryName":       "/* BinaryName */",
                            "Architecture":     "/* x86 | x86-64 | ARM | ARM64 | MIPS | RISC-V */",
                            "OperatingSystem":  "/* Windows | Linux | MacOS | Debian | Ubuntu | RedHat | Android | Zephyr | RTOS | Oniro | iOS */",
                            "Version":          "/* Version */",
                            "Source":           "/* AIMStorage | MPAIStore | AIMURL */",
                            "Destination":      "/* Destination URI */"}],

  "ResourcePolicies":     [{"Name": "Memory",    "Minimum": "/* GB */",                  "Request": "/* GB */",                  "Maximum": "/* GB */"},
                           {"Name": "CPU:Class", "Minimum": "/* Low | Medium | High */", "Request": "/* Low | Medium | High */", "Maximum": "/* Low | Medium | High */"}],

  "DataXMData":           { },

  "Documentation":        [{"Type": "Specification", "URI": "https://mpai.community/standards/mpai-cae/"}]}
