Update offered to device, but only applied if accepted

I would like a similar behaviour as we all experience with our smart phones:
The device user interface once in a while notifies about an optional software update. The user may then accept it in his own time or ignore it completely.

Ultimately I would like to:

  1. from CLI or web interface define for each device which release is offered as suggested “software upgrade”.
  2. from my device application query the hypervisor if there is any suggested “software upgrade”, and if so retrieve information about this (for example a version number) to present for the user.
  3. install the upgrade if the user accepts it, otherwise leave it as is.

Is this possible with resin.io?

The interesting question here is “What/Which UI?”, which in IoT is a challenge. I have devices for which their UI is a gesture, a displayotron hat and pure web-ui.
That said I think that your application code could quite easily pin its device to a particular build using the API endpoints explored here https://github.com/resin-io-playground/staged-releases and know what the latest build is using the endpoint here https://docs.resin.io/reference/api/resources/application/ and then it’s up to whatever UI you are using to communicate the difference and understand the response.

Another user asked a very similar question #4590