Desktop update & download endpoints
How the app updates itself and where the installers actually come from.
These are the endpoints behind the desktop app and the Downloads page. They take no authentication, by necessity: an app checking for an update has no session, and an installer download is public.
Checking for an update
GET /api/desktop/updater/{target}/{arch}/{version}?bundle={type}
The app fills all four in for itself. Two answers, and only two:
| Status | Means |
|---|---|
| 200 | There is an update. The body is { version, notes, pub_date, url, signature }. |
| 204 | Nothing to do. |
No newer release, no artefact matching your install form, and no valid signature all answer 204 rather than an error. That is deliberate: the alternative is handing the app an update it would download and then refuse, which looks to the user like a broken app rather than an unsigned build.
Fetching the bytes
GET /api/desktop/artifact/{name}— the update payload the manifest points at. 404 if that name isn't an asset of the current release, so it can't be used to reach anything else.GET /api/download/{platform}— the installers behind the Downloads page. Platforms arewindows,mac,mac-arm,linux,debandrpm. 404 for an unknown platform or a release with no build for it, 502 if the release can't be reached, 503 if downloads aren't configured on the server.
No response here ever hands you a link to the release repository, because that repository is private — a link to it would 404 for every real user. The bytes are proxied through Noots instead.
