A RESTful Web Services API was added to the product with XPP 9.3.
It is available, and is distributed for use with any new installation or upgrade as of the XPP 9.3 release.
Replace Web Services with a RESTful API that is URL addressable for XPP functionality.
Low-level "micro" services (toxsf, compose, print, citi, etc) supported by XPP, that can be built upon for more high level customized functionality.
Continuing the discussion of sync/async. From a direct socket perspective, the new rest API would maintain the socket so time out could be a problem (regardless of whether the client is using a callback to be notified when the data is ready). This is not a problem for the 'short term' functions you might want to run (like set the active style in the job ticket, or check with a division exists).
But for long term processes (like compose, print), I can see the need for a launch without waiting. The "nowait" would start the process in the background, return an ID and provide a way to check on the status of the command based on ID. If the command finished, you would get the status code and the stdout/stderr messages.
So minimally, a "nowait" option should be provided for compose, print, and "usercommand".
This type of connection cannot be tied to a callback (unless the client writes some kind of timer), because in this scenario the XPP rest server cannot send data back to the client via HTTP because the connection is gone. It has to be a query using the ID to get the status.