JavaScript
Apps
List app installs
Reports the backend’s durable view of background app-install attempts on this device — status reflects the install ATTEMPT, not device ground truth; list-apps remains authoritative for what is actually installed. Terminal and projected timeout records are kept ~15 minutes. Not gated on device readiness, so it also answers while the device is offline or crashed.
GET
JavaScript
Reports the backend’s view of background app-install attempts on this device — one entry per
Records are scoped to the tenant that owned the device when the install attempt started: after an ownership transfer (e.g. reassignment or a BYOD re-pair), the new owner cannot see the previous tenant’s install attempts, even while those records are still within their retention window above.
(platform, appId) pair that has an install-app attempt in progress or recently finished.
Unlike most Tools/Apps endpoints, this one is not gated on device readiness — it answers from durable install records, not from the device, so it also works while the device is offline, crashed, or otherwise unreachable. That’s the situation this endpoint exists to surface: an install that fails because the device dropped mid-download has no other way to be observed by a caller.
On failure, errorClass narrows down what went wrong from a small closed set:
download_failed— fetching the app asset failedadb_install_failed— the download succeeded butadb install-multiplefailedtimeout— the attempt exceeded its background time budgetpanic— the install goroutine panickedfailed— anything else
Terminal (
succeeded/failed) records are returned for roughly 15 minutes after their last update. A running record that passes its background deadline is projected as failed with errorClass: "timeout" and remains visible for roughly 15 minutes after that deadline. Older records are omitted from this endpoint’s response.Authorizations
Bearer token via Authorization header
Headers
Required range:
x >= 0