#![allow(missing_docs)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum LogLevel {
Debug,
Info,
Notice,
Warning,
Error,
Critical,
Alert,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum ActionStatus {
Pending,
Acknowledged,
Completed,
Failed,
Expired,
}
#[derive(Debug, Clone, Deserialize)]
pub struct ActionUpdate {
pub message: String,
#[serde(default)]
pub data: Option<serde_json::Value>,
#[serde(default)]
pub timestamp: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct Action {
pub id: String,
#[serde(rename = "type")]
pub kind: String,
pub status: ActionStatus,
#[serde(default)]
pub params: Option<serde_json::Value>,
#[serde(default)]
pub updates: Vec<ActionUpdate>,
#[serde(default)]
pub result: Option<serde_json::Value>,
#[serde(default)]
pub expires_at: Option<String>,
#[serde(default)]
pub acknowledged_at: Option<String>,
#[serde(default)]
pub completed_at: Option<String>,
#[serde(default)]
pub created_at: Option<String>,
}