Release server: data model, endpoints, licensing and permissions

Data model of the central release server, the endpoints for managing installations and releases, how registration codes and update requests work, authentication of the catalog API and the permission keys.

The release server manages the register of installations (ID, domain, client, operating model, versions, licence, events, requests), the list of releases, manual upload and revocation, central update requests and the server settings. Only technical and licence data is shown. Permissions are requested through a helper that calls canAction.

Data model

Table names carry the installation's own prefix in the database.

TableRoleMain fields
release_installationinstallationsUUID, label, domain, client, model, channel, automatic update, status, reg_code_hash with expiry
releasereleasesversion, channel, archive location, revocation with reason
release_eventeventse.g. regcode_issued
release_requestcentral update requestsversion, mode (prepare, install), note
update_configserver settingsserver_* keys
companyclient nameread only

Endpoints

KeyEndpointBehaviour
listindex, installations, releasesenabled state, public configuration, master key file, trusted keys, Google accounts; paged installation list with filter, licence state per row, staleness against the latest stable release, last 20 events and 10 requests; at most 500 releases
installationform, save, toggleUUID for a new row; event; success after reading back; the toggle flips automatic update or status
regcoderegcodeone-time code valid for 7 days, the server stores only its SHA-256 fingerprint
requestrequestrequest and event; a valid SemVer and an existing release are required (error_version); the code does not check that the installation exists
publishuploadzip + manifest + signature + key ID; the same verification and storage path as CI publishing; stored in the archive
revokerevokereason required; on the islands the check returns revoked if it is the installed version
settingssettings, publisherkeyswitch on (master key the first time), archive, cache 1–20 and at least 16 MB, licence exceptions, security override, token 60–3600 s and 1–10 uses; rotating the publisher secret (key version +1) additionally needs isSuper()

release.selfregister: creates the central multi-tenant instance's own "central" installation row and registers it with local transport (idempotent); permission: installation and isSuper().

Catalog API

Endpoints of api/update: register and publish authenticate with their own code or secret, check, authorize, download and report with an HMAC signature. If the server role is off: 404.

Permissions

  • All keys are classified SYSTEM; the debug key is not checked by the controller and its use cannot be determined.
  • Content scope: an installation's client can only be chosen from the companies allowed by the user's company group filter (error_scope).

Known limitations

Not yet run on a live central server with a real signing key and HTTPS transport.