lago_types/models/
activity_log.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4use strum_macros::EnumString;
5use uuid::Uuid;
6
7/// Represents an activity log entry in the Lago system.
8///
9/// This struct contains all information about an action performed on
10/// application resources, including the activity details and metadata.
11#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct ActivityLogObject {
13    pub activity_id: Uuid,
14    pub activity_type: String,
15    pub activity_source: ActivitySource,
16    pub logged_at: DateTime<Utc>,
17    pub created_at: DateTime<Utc>,
18    pub user_email: Option<String>,
19    pub resource_id: Option<Uuid>,
20    pub resource_type: Option<String>,
21    pub external_customer_id: Option<String>,
22    pub external_subscription_id: Option<String>,
23    pub activity_object: Option<Value>,
24}
25
26/// Source of the activity log entry.
27#[derive(Debug, Clone, Serialize, Deserialize, EnumString, PartialEq, Eq)]
28#[serde(rename_all = "lowercase")]
29#[strum(serialize_all = "lowercase")]
30pub enum ActivitySource {
31    Api,
32    Front,
33    System,
34}