Skip to main content

steam_protos/messages/
notifications.rs

1//! Notification-related protobuf messages
2
3use prost::Message;
4
5/// Request item announcements
6#[derive(Clone, PartialEq, Message)]
7pub struct CMsgClientRequestItemAnnouncements {}
8
9/// Item announcements response
10#[derive(Clone, PartialEq, Message)]
11pub struct CMsgClientItemAnnouncements {
12    #[prost(uint32, optional, tag = "1")]
13    pub count_new_items: Option<u32>,
14    #[prost(message, repeated, tag = "2")]
15    pub unseen_items: Vec<cmsg_client_item_announcements::UnseenItem>,
16}
17
18pub mod cmsg_client_item_announcements {
19    use prost::Message;
20
21    #[derive(Clone, PartialEq, Message)]
22    pub struct UnseenItem {
23        #[prost(uint32, optional, tag = "1")]
24        pub appid: Option<u32>,
25        #[prost(uint64, optional, tag = "2")]
26        pub context_id: Option<u64>,
27        #[prost(uint64, optional, tag = "3")]
28        pub asset_id: Option<u64>,
29        #[prost(uint64, optional, tag = "4")]
30        pub amount: Option<u64>,
31        #[prost(fixed32, optional, tag = "5")]
32        pub rtime32_gained: Option<u32>,
33        #[prost(uint32, optional, tag = "6")]
34        pub source_appid: Option<u32>,
35    }
36}
37
38/// Request comment notifications
39#[derive(Clone, PartialEq, Message)]
40pub struct CMsgClientRequestCommentNotifications {}
41
42/// Comment notifications response
43#[derive(Clone, PartialEq, Message)]
44pub struct CMsgClientCommentNotifications {
45    #[prost(uint32, optional, tag = "1")]
46    pub count_new_comments: Option<u32>,
47    #[prost(uint32, optional, tag = "2")]
48    pub count_new_comments_owner: Option<u32>,
49    #[prost(uint32, optional, tag = "3")]
50    pub count_new_comments_subscriptions: Option<u32>,
51}
52
53/// Request offline message count (also known as
54/// CMsgClientFSRequestOfflineMessageCount)
55#[derive(Clone, PartialEq, Message)]
56pub struct CMsgClientRequestOfflineMessageCount {}
57
58/// Offline message notification
59#[derive(Clone, PartialEq, Message)]
60pub struct CMsgClientOfflineMessageNotification {
61    #[prost(uint32, optional, tag = "1")]
62    pub offline_messages: Option<u32>,
63    #[prost(uint32, repeated, packed = "false", tag = "2")]
64    pub friends_with_offline_messages: Vec<u32>,
65}
66
67/// User notifications
68#[derive(Clone, PartialEq, Message)]
69pub struct CMsgClientUserNotifications {
70    #[prost(message, repeated, tag = "1")]
71    pub notifications: Vec<cmsg_client_user_notifications::Notification>,
72}
73
74pub mod cmsg_client_user_notifications {
75    use prost::Message;
76
77    #[derive(Clone, PartialEq, Message)]
78    pub struct Notification {
79        #[prost(uint32, optional, tag = "1")]
80        pub user_notification_type: Option<u32>,
81        #[prost(uint32, optional, tag = "2")]
82        pub count: Option<u32>,
83    }
84}
85
86/// Steam notification mark as read notification
87///
88/// From `service_steamnotification.proto` (webui):
89/// - Used with `SteamNotification.MarkNotificationsRead#1` unified message
90#[derive(Clone, PartialEq, Message)]
91pub struct CSteamNotificationMarkNotificationsReadNotification {
92    /// Timestamp for marking notifications read
93    #[prost(uint32, optional, tag = "1")]
94    pub timestamp: Option<u32>,
95    /// Type of notification to mark as read (ESteamNotificationType)
96    #[prost(int32, optional, tag = "2")]
97    pub notification_type: Option<i32>,
98    /// Specific notification IDs to mark as read
99    #[prost(uint64, repeated, packed = "false", tag = "3")]
100    pub notification_ids: Vec<u64>,
101    /// If true, mark all notifications as read
102    #[prost(bool, optional, tag = "4")]
103    pub mark_all_read: Option<bool>,
104}
105
106#[derive(Clone, PartialEq, Message)]
107pub struct SteamNotificationData {
108    #[prost(uint64, optional, tag = "1")]
109    pub notification_id: Option<u64>,
110    #[prost(uint32, optional, tag = "2")]
111    pub notification_targets: Option<u32>,
112    #[prost(int32, optional, tag = "3")]
113    pub notification_type: Option<i32>,
114    #[prost(string, optional, tag = "4")]
115    pub body_data: Option<String>,
116    #[prost(bool, optional, tag = "7")]
117    pub read: Option<bool>,
118    #[prost(uint32, optional, tag = "8")]
119    pub timestamp: Option<u32>,
120    #[prost(bool, optional, tag = "9")]
121    pub hidden: Option<bool>,
122    #[prost(uint32, optional, tag = "10")]
123    pub expiry: Option<u32>,
124    #[prost(uint32, optional, tag = "11")]
125    pub viewed: Option<u32>,
126}
127
128#[derive(Clone, PartialEq, Message)]
129pub struct CSteamNotificationNotificationsReceivedNotification {
130    #[prost(message, repeated, tag = "1")]
131    pub notifications: Vec<SteamNotificationData>,
132    #[prost(uint32, optional, tag = "2")]
133    pub pending_gift_count: Option<u32>,
134    #[prost(uint32, optional, tag = "3")]
135    pub pending_friend_count: Option<u32>,
136    #[prost(uint32, optional, tag = "4")]
137    pub pending_family_invite_count: Option<u32>,
138}