uptrakit_openapi_client/
audit_logs.rs1use crate::Result;
2use crate::UptrakitClient;
3use crate::types_impl::audit_logs::{AuditLogListParams, AuditLogResponse, SystemAuditLogResponse};
4use crate::types_impl::pagination::PaginatedResponse;
5
6impl UptrakitClient {
7 pub async fn list_audit_logs(
9 &self,
10 params: &AuditLogListParams,
11 ) -> Result<PaginatedResponse<AuditLogResponse>> {
12 self.get_with_query(crate::paths::audit_logs::BASE, params)
13 .await
14 }
15
16 pub async fn list_system_audit_logs(
18 &self,
19 params: &AuditLogListParams,
20 ) -> Result<PaginatedResponse<SystemAuditLogResponse>> {
21 self.get_with_query(crate::paths::audit_logs::SYSTEM, params)
22 .await
23 }
24}
25
26#[cfg(test)]
27mod tests {
28 use crate::types_impl::audit_logs::AuditLogListParams;
29 use uuid::Uuid;
30
31 #[test]
32 fn audit_log_list_params_serialization_with_semantic_filters() {
33 let actor_id = Uuid::parse_str("11111111-1111-1111-1111-111111111111").expect("valid uuid");
34 let mut params = AuditLogListParams::default();
35 params.actor_type = Some("user".to_string());
36 params.action_type = Some("plugin_config.create".to_string());
37 params.outcome = Some("success".to_string());
38 params.target_type = Some("plugin_config".to_string());
39 params.target_id = Some("019semantic".to_string());
40 params.from = Some("2025-01-01T00:00:00Z".to_string());
41 params.to = Some("2025-12-31T23:59:59Z".to_string());
42 params.actor_id = Some(actor_id);
43 params.page = Some(2);
44 params.per_page = Some(10);
45 let qs = serde_urlencoded::to_string(¶ms).expect("serialize");
46 assert!(qs.contains("actor_type=user"));
47 assert!(qs.contains("action_type=plugin_config.create"));
48 assert!(qs.contains("outcome=success"));
49 assert!(qs.contains("target_type=plugin_config"));
50 assert!(qs.contains("target_id=019semantic"));
51 assert!(qs.contains("page=2"));
52 assert!(qs.contains("per_page=10"));
53 assert!(qs.contains("actor_id=11111111-1111-1111-1111-111111111111"));
54 }
55
56 #[test]
57 fn audit_log_list_params_serialization_skips_none() {
58 let params = AuditLogListParams::default();
59 let qs = serde_urlencoded::to_string(¶ms).expect("serialize");
60 assert!(qs.is_empty());
61 }
62}