rovenue/events/
envelope.rs1use super::IdentityContext;
10use serde::{Deserialize, Serialize};
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(rename_all = "camelCase")]
19pub struct FunnelContext {
20 pub funnel_id: String,
21 pub session_id: String,
25 pub placement_id: String,
26 pub placement_revision: i64,
27 pub revision: i64,
29 #[serde(skip_serializing_if = "Option::is_none")]
32 pub screen_id: Option<String>,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub variant_id: Option<String>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub experiment_key: Option<String>,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
40#[serde(rename_all = "camelCase")]
41pub struct EventEnvelope {
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub version: Option<u8>,
45
46 #[serde(skip_serializing_if = "Option::is_none")]
49 pub event_id: Option<String>,
50
51 pub event_type: String,
52
53 pub occurred_at: String,
55
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub subscriber_id: Option<String>,
58
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub product_id: Option<String>,
61
62 #[serde(skip_serializing_if = "Option::is_none")]
64 pub amount: Option<String>,
65
66 #[serde(skip_serializing_if = "Option::is_none")]
68 pub currency: Option<String>,
69
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub event_source_url: Option<String>,
72
73 #[serde(skip_serializing_if = "Option::is_none")]
74 pub identity_context: Option<IdentityContext>,
75
76 #[serde(skip_serializing_if = "Option::is_none")]
78 pub funnel_context: Option<FunnelContext>,
79}