mhome-app-facade-api 1.37.3

Canonical public App Facade protocol for MeowLink clients
Documentation
use serde::{Deserialize, Serialize};

pub const TARGET_PREFIX: &str = "/app/plugin";
pub const CATALOG_LIST_TARGET: &str = "/app/plugin/catalog/list";
pub const SYSTEM_CATALOG_JSON: &str = include_str!("../manifest/plugin-catalog.v1.json");
pub const EXTENSION_VERSION: &str = "v1";
pub const ENABLED_LIST_TARGET: &str = "/app/plugin/enabled/list";
pub const DETAIL_GET_TARGET: &str = "/app/plugin/detail/get";
pub const CANDIDATE_LIST_TARGET: &str = "/app/plugin/candidate/list";
pub const ENABLE_START_TARGET: &str = "/app/plugin/enable/start";
pub const ENABLE_STATUS_TARGET: &str = "/app/plugin/enable/status";
pub const ENABLE_CANCEL_TARGET: &str = "/app/plugin/enable/cancel";
pub const DISABLE_TARGET: &str = "/app/plugin/disable";
pub const PROFILE_UPDATE_TARGET: &str = "/app/plugin/profile/update";
pub const SETTINGS_CHANGED_TARGET: &str = "/app/plugin/settings/changed";

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct PluginNodeRequest<T> {
    pub node_id: String,
    pub version: String,
    pub payload: T,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PluginNodeResponse<T> {
    pub node_id: String,
    pub node_type: String,
    pub version: String,
    pub data: T,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SettingsChangedEvent {
    pub version: String,
    pub node_id: String,
    pub node_type: String,
    pub event_seq: u64,
    pub section: String,
    pub revision: u64,
}