#[non_exhaustive]pub enum ServiceMessage {
Show 27 variants
Ping(PingPayload),
Enroll(EnrollPayload),
RequestCertificate(RequestCertificatePayload),
RenewCertificate(RenewCertificatePayload),
Disconnecting(DisconnectingPayload),
ReportHosts(ReportHostsPayload),
VersionCheckResults(VersionCheckResultsPayload),
UpdateStarted(UpdateStartedPayload),
UpdateOutput(UpdateOutputPayload),
UpdateResult(UpdateResultPayload),
BatchUpdateResult(BatchUpdateResultPayload),
DiscoveryResults(DiscoveryResultsPayload),
StdinAttention(StdinAttentionPayload),
ServiceTriggerUpdate(ServiceUpdateTriggerPayload),
ServiceTriggerHostBatchUpdate(ServiceHostBatchUpdateTriggerPayload),
Register(RegisterPayload),
ReportPluginConfig(ReportPluginConfigPayload),
SurfaceRegistration(SurfaceRegistration),
SurfaceActionResponse(SurfaceActionResponse),
SurfaceActionRequest(SurfaceActionRequest),
StoreServiceConfig(StoreServiceConfigPayload),
DeleteServiceConfig(DeleteServiceConfigPayload),
WorkloadClaim(WorkloadClaimPayload),
WorkloadRelease(WorkloadReleasePayload),
TestPluginConfigResult(TestPluginConfigResultPayload),
AuditEvent(AuditEventPayload),
Unknown,
}Expand description
Messages sent from a service (agent or MQTT) to the controller.
§Forward compatibility
The Unknown variant is a catch-all for message types introduced in newer
service builds that an older controller does not yet recognise. When
encountered, the controller logs a warning and continues without closing the
connection, allowing rolling upgrades where services and controllers are not
updated simultaneously.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Ping(PingPayload)
Enroll(EnrollPayload)
RequestCertificate(RequestCertificatePayload)
RenewCertificate(RenewCertificatePayload)
Disconnecting(DisconnectingPayload)
ReportHosts(ReportHostsPayload)
VersionCheckResults(VersionCheckResultsPayload)
UpdateStarted(UpdateStartedPayload)
UpdateOutput(UpdateOutputPayload)
UpdateResult(UpdateResultPayload)
BatchUpdateResult(BatchUpdateResultPayload)
DiscoveryResults(DiscoveryResultsPayload)
StdinAttention(StdinAttentionPayload)
Agent → Controller: the update process appears to be waiting for stdin input.
Sent when the agent detects that the process has produced no output for a sustained period while still running (heuristic: ~10 seconds of silence). The controller broadcasts this to interactive session subscribers and may trigger notifications.
ServiceTriggerUpdate(ServiceUpdateTriggerPayload)
ServiceTriggerHostBatchUpdate(ServiceHostBatchUpdateTriggerPayload)
Service → Controller: trigger a batch update of all outdated software items on a host.
Sent when a Home Assistant user presses “Install” on a host update entity.
Register(RegisterPayload)
Service declares its capabilities immediately on connect.
Sent from on_connected before ServiceSettings is processed.
The controller uses this to establish session-level capability flags
without relying on DB-stored values (which may be absent on first connect).
ReportPluginConfig(ReportPluginConfigPayload)
Service reports a plugin configuration to the controller.
Sent by agents that detect infrastructure (e.g. PVE nodes) during
bootstrap. The controller creates or returns an existing plugin config
matching (tenant_id, plugin_type, name) and responds with
ReportPluginConfigResponse.
SurfaceRegistration(SurfaceRegistration)
Service declares its surfaces after connecting.
Sent once after connection setup by services that participate in the surface contract.
SurfaceActionResponse(SurfaceActionResponse)
Response to a proxied surface action invocation.
Sent by the service after processing a SurfaceActionRequest from the
controller.
SurfaceActionRequest(SurfaceActionRequest)
Service requests a surface action invocation from the controller.
Enables services to call surface actions via the wire protocol and
receive the correlated ControllerMessage::SurfaceActionResponse.
StoreServiceConfig(StoreServiceConfigPayload)
Service → Controller: upsert a config entry in the controller DB.
The controller encrypts sensitive values at rest, ACKs, and broadcasts
ServiceConfigUpdated to all connected instances of the same service app.
DeleteServiceConfig(DeleteServiceConfigPayload)
Service → Controller: delete a config entry from the controller DB.
The controller deletes, ACKs, and broadcasts ServiceConfigUpdated.
WorkloadClaim(WorkloadClaimPayload)
Service → Controller: request exclusive ownership of config keys.
Sent after ServiceConfigDelivery is processed and whenever the
desired config set changes. Uses full replacement semantics.
Requires the WorkloadClaims capability.
WorkloadRelease(WorkloadReleasePayload)
Service → Controller: voluntarily release config keys.
Sent when a service no longer wants to serve certain configs.
Requires the WorkloadClaims capability.
TestPluginConfigResult(TestPluginConfigResultPayload)
Agent -> Controller: result of a plugin configuration test.
Sent after the agent completes a config test request. The controller
uses request_id to correlate with the pending REST API request.
AuditEvent(AuditEventPayload)
Service -> Controller: forwarded semantic audit event.
The controller re-validates the event and silently drops invalid or non-forwardable payloads without closing the connection.
Unknown
Unknown message type from a newer service build.
Deserialized when the type tag does not match any known variant.
The payload is discarded. The receiver should log a warning and
continue processing other messages.
Trait Implementations§
Source§impl Clone for ServiceMessage
impl Clone for ServiceMessage
Source§fn clone(&self) -> ServiceMessage
fn clone(&self) -> ServiceMessage
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ServiceMessage
impl Debug for ServiceMessage
Source§impl<'de> Deserialize<'de> for ServiceMessage
impl<'de> Deserialize<'de> for ServiceMessage
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for ServiceMessage
Source§impl PartialEq for ServiceMessage
impl PartialEq for ServiceMessage
Source§impl Serialize for ServiceMessage
impl Serialize for ServiceMessage
impl StructuralPartialEq for ServiceMessage
Source§impl WireValidate for ServiceMessage
impl WireValidate for ServiceMessage
Source§fn wire_validate(&self) -> Result<(), WireValidationError>
fn wire_validate(&self) -> Result<(), WireValidationError>
Auto Trait Implementations§
impl Freeze for ServiceMessage
impl RefUnwindSafe for ServiceMessage
impl Send for ServiceMessage
impl Sync for ServiceMessage
impl Unpin for ServiceMessage
impl UnsafeUnpin for ServiceMessage
impl UnwindSafe for ServiceMessage
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.