use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuditLogEntry {
pub id: String,
pub timestamp: u64,
pub action: String,
pub actor: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub resource: Option<String>,
pub outcome: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub channel: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub context_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ListAuditLogsBody {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub to: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub action: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub actor: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub outcome: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub context_id: Option<String>,
#[serde(default = "default_page")]
pub page: u64,
#[serde(default = "default_page_size")]
pub page_size: u64,
}
fn default_page() -> u64 {
1
}
fn default_page_size() -> u64 {
50
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ListAuditLogsResultBody {
pub entries: Vec<AuditLogEntry>,
pub total: u64,
pub page: u64,
pub page_size: u64,
pub total_pages: u64,
}