I would like to propose that you add a either:
option A: (preferred) make turrets editable and retrievable through <vehicle|turret> getTurrets returning an array with the turrets as objets, which then can be used with a modified <turret> addWeapon weaponName<string>/removeWeapon weaponName<string> that accepts turrets. child turrets of a turret should be left out, but it should be possible to ask a turret to get it's child turrets with the getTurrets command.
option B: (probably a bit easier to implement?) add a 2nd syntax option to the addWeapon and removeWeapon commands specifying the turret path. This could alternatively be done through a command like "vehicle addWeaponTurret [turretpath<array>, weaponName<string>]" and "removeWeaponTurret [turretpath<array>, weaponName<string>]
Both boil down to the same thing. The same can be said for the magazine commands, which have been added with the longer name while overloading could have been used.
This issue is even more puzzling to me because read access is already in place for weapons on turrets but write access is not, while on the other hand it is possible for magazines in turrets.