I am working to create a set of empty pools with AS3 as part of an instantiation build.
We have a separate automation tool that adds and removes pool members as part of normal application deployment and server patching/maintenance functions.
The question I have is if the automation tool has populated the pools that AS3 built as empty and then I attempt to apply the AS3 declaration again, with that wipe the pool members from the pools that my automation tool placed in therm?
Is your automation tool using AS3 to add the pool members? In any manner, if you post the AS3 declaration with no pool members, then it will indeed delete those pool members. Ideally, you would deploy in the same manner you use today, update your automation tool to use AS3 to add/remove pool members, then query the current configuration and make changes to the current configuration for future AS3 declarations.
If your automation tool cannot take advantage of AS3, you should then consider those configurations as untouchable with AS3 post-deployment. Otherwise you'd need a programmatic way to query the current AS3 declaration, query the pool members using iControlREST, and have those members added to the declaration. That would not be easy or the best way forward.
As others have indicated, the AS3 declaration is pretty much the source of truth at this point. So, any subsequent declaration posts, will overwrite any modifications done by other tools.
However, service discover is intended for this use case. This should allow the other team to provide the F5 with pool member details outside of the AS3 declaration
Another option would be to deliver the app through a service catalog or automation, where that team would deploy the app with the necessary pool members. Any updates, they just need to redeploy the app with the new pool members. I've seen customers use some sort of form/questionair to gather the base app details and pool members (service-now/Ansible). This could also be done with FAST templates. All these options also have some sort of API.