This could be approached 2 different ways. The first would be to set up a program with everything you want to run and start times then disable it. When the trigger level is reached have the program enabled or disabled again accordingly.
The second approach is simply scheduling a manual run with the api. This method would run the program once and then it disappears. If another program is already running it will add itself to the queue and run when your setup allows. This seems closest to what you want, but comes with the drawback of needing to externally create the program. It’s not really a big deal just putting together a string to send to OS. You could control the start time by delaying sending the command to OS until your desired time.