use serde::{Deserialize, Serialize};
use super::JsonObject;
#[derive(Debug, Clone, Default)]
pub struct IngestAuditEventParams {
pub organization_id: String,
pub action: String,
pub actor: JsonObject,
pub occurred_at: Option<String>,
pub targets: Option<Vec<serde_json::Value>>,
pub context: Option<JsonObject>,
pub metadata: Option<JsonObject>,
pub idempotency_key: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct ListAuditEventsParams {
pub organization_id: Option<String>,
pub actions: Option<String>,
pub actor_id: Option<String>,
pub target_id: Option<String>,
pub range_start: Option<String>,
pub range_end: Option<String>,
pub limit: Option<u32>,
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct AuditEvent {
pub id: String,
pub org_id: String,
pub seq: i64,
pub occurred_at: String,
pub ingested_at: String,
pub action: String,
pub actor: Option<JsonObject>,
pub targets: Option<Vec<serde_json::Value>>,
#[serde(default)]
pub context: Option<JsonObject>,
#[serde(default)]
pub metadata: Option<JsonObject>,
pub payload_hash: String,
pub signature: String,
pub signing_public_key: String,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Deserialize)]
pub struct ListAuditEventsResponse {
pub events: Vec<AuditEvent>,
pub next_cursor: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct CreateAuditOrgParams {
pub organization_id: String,
pub name: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct CreateAuditStreamParams {
pub url: String,
pub r#type: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct CreatePortalSessionParams {
pub organization_id: String,
pub intent: String,
pub session_duration_seconds: Option<i64>,
pub link_duration_seconds: Option<i64>,
}
#[derive(Debug, Clone, Default)]
pub struct CreateAuditExportParams {
pub organization_id: String,
pub format: String,
pub filters: Option<JsonObject>,
}