agentlink_core/protocols/
user.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct User {
8 pub id: String,
9 #[serde(default)]
10 pub linkid: String,
11 pub nickname: String,
12 pub avatar: Option<String>,
13 pub status: String,
14 #[serde(default)]
16 pub online: bool,
17 #[serde(default)]
19 pub device_type: Option<String>,
20 #[serde(default)]
22 pub phone_verified: bool,
23 pub created_at: String,
24 pub updated_at: String,
25 #[serde(default)]
26 pub login_methods: Vec<UserLoginMethod>,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct UserLoginMethod {
32 pub id: String,
33 pub user_id: String,
34 pub login_type: String,
35 pub identifier: String,
36 pub verified: bool,
37 pub is_primary: bool,
38 pub created_at: String,
39 pub updated_at: String,
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize)]
44pub struct UserPrivacySettings {
45 pub user_id: String,
46 pub allow_friend_request: bool,
47 pub require_verification: bool,
48 pub friend_request_question: Option<String>,
49 pub moments_visibility: String,
50 pub allow_stranger_view_moments: bool,
51 pub show_online_status: bool,
52 pub show_phone_to: String,
53 pub find_by_phone: bool,
54 pub allow_search_by_linkid: bool,
55 pub show_qrcode: bool,
56 pub share_location: bool,
57 pub created_at: String,
58 pub updated_at: String,
59}
60
61#[derive(Debug, Clone, Serialize)]
63pub struct UpdatePrivacySettingsRequest {
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub allow_friend_request: Option<bool>,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub require_verification: Option<bool>,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub friend_request_question: Option<String>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub moments_visibility: Option<String>,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub allow_stranger_view_moments: Option<bool>,
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub show_online_status: Option<bool>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub show_phone_to: Option<String>,
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub find_by_phone: Option<bool>,
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub allow_search_by_linkid: Option<bool>,
82 #[serde(skip_serializing_if = "Option::is_none")]
83 pub show_qrcode: Option<bool>,
84 #[serde(skip_serializing_if = "Option::is_none")]
85 pub share_location: Option<bool>,
86}
87
88#[derive(Debug, Clone, Serialize, Deserialize)]
90pub struct BlacklistEntry {
91 pub id: String,
92 pub user_id: String,
93 pub blocked_user_id: String,
94 pub reason: Option<String>,
95 pub is_mutual: bool,
96 pub created_at: String,
97 pub updated_at: String,
98 pub blocked_user: Option<User>,
99}
100
101#[derive(Debug, Clone, Serialize)]
103pub struct AddToBlacklistRequest {
104 pub blocked_user_id: String,
105 #[serde(skip_serializing_if = "Option::is_none")]
106 pub reason: Option<String>,
107}