Need to confirm whether any guest customisation can be done as part of instantiateVAppTemplate. At present I believe this can only be done during composeVApp/recomposeVApp calls.
It'd be handy change vCPU/vRAM/Guest Script/Hostname as part of the initial instantiateVAppTemplate and not requiring specific coding for separate composeVApp/recomposeVApp calls.
You can modify the CustomizationSection of a vAppTemplate and set its CustomizeOnInstantiate property to true.
This specifies whether guest customization should be run during instantiation.
I am not sure if you can modify this while the vAppTemplate is added to a catalog - you may need to set this property before adding the template to a catalog. Refer to the documentation for more information.
Just a quick update, I found out it's possible to instantiate (instantiateVAppTemplate) the vApp template without customising it in catalogue. Trick is to set deploy=false and poweron=false. At this stage you can then POST and PUT customisation sections into the powered off vApp instance as you wish for each VM. When done, you deploy=tyue and poweron=true.