mhome-conversation-api 0.8.0

Typed wire contract for the mHome conversation API
Documentation
use crate::{ConversationQueue, LiveSnapshot, ThreadSnapshot, ThreadSummary};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ThreadSession {
    pub activity_at_unix_ms: i64,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(tag = "mode", rename_all = "snake_case")]
pub enum ThreadSync {
    Unchanged {
        snapshot_version: u64,
    },
    Delta {
        base_snapshot_version: u64,
        snapshot_version: u64,
        events: Vec<crate::SnapshotUpdatedEvent>,
    },
    Snapshot {
        snapshot: ThreadSnapshot,
    },
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct ThreadLoadResponse {
    pub thread: ThreadSummary,
    pub session: ThreadSession,
    pub sync: ThreadSync,
    pub live: LiveSnapshot,
    pub queue: ConversationQueue,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct MessageEnqueueResponse {
    pub request_id: String,
    pub disposition: MessageEnqueueDisposition,
    pub queue_version: u64,
}

#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum MessageEnqueueDisposition {
    Queued,
    Duplicate,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct InteractionSubmitResponse {
    pub request_id: String,
    pub disposition: InteractionSubmitDisposition,
}

#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum InteractionSubmitDisposition {
    Accepted,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct RequestCancelResponse {
    pub request_id: String,
    pub phase: RequestCancelPhase,
    pub outcome: RequestCancelOutcome,
    pub queue_version: u64,
}

#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum RequestCancelPhase {
    Waiting,
    Running,
}

#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum RequestCancelOutcome {
    Cancelled,
    Cancelling,
}