pub struct InstallHeartbeatRequest {
pub install_id: String,
pub app_version: String,
pub os: String,
pub os_version: Option<String>,
pub arch: Option<String>,
pub locale: Option<String>,
pub distribution: Option<String>,
pub fleet: InstallHeartbeatFleet,
}Expand description
Body of POST /api/voice/installs/heartbeat. The daemon supplies
install_id + app_version; Client::install_heartbeat fills the
environment fields from SystemInfo::detect.
Fields§
§install_id: StringThe daemon’s persisted install UUID — the platform’s upsert key.
app_version: StringWaveKat Voice’s own version (env!("CARGO_PKG_VERSION") on the
daemon side) — not this crate’s version.
os: String§os_version: Option<String>§arch: Option<String>§locale: Option<String>§distribution: Option<String>How this copy was obtained — "direct" for a plain download,
"mas" for the sandboxed Mac App Store build. Unlike every other
field here it is not detectable: the two macOS builds share a
bundle id and a version, and the binary is identical, so only the
consumer knows which one it is shipping inside. Hence a caller
argument rather than part of SystemInfo.
Free text by contract, not an enum: the platform stores whatever
arrives so a new distribution can ship without a server release.
None when the consumer has nothing meaningful to say (a source
build, a package this crate has never heard of) — omitted from
the body entirely rather than sent as null.
fleet: InstallHeartbeatFleetFleet-admin fields (build provenance, update-channel and
updater state, native arch, process start time). Flattened onto
the wire so the body stays flat JSON even though the daemon
builds one value; see InstallHeartbeatFleet.