privchat_protocol/rpc/group/
approval.rs1use serde::{Deserialize, Serialize};
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct GroupApprovalListRequest {
26 pub group_id: u64,
28 pub operator_id: u64,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
36pub struct GroupApprovalHandleRequest {
37 pub request_id: String,
39 pub operator_id: u64,
41 pub action: String,
43 #[serde(skip_serializing_if = "Option::is_none")]
45 pub reject_reason: Option<String>,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct GroupApprovalMethodMemberInvite {
53 pub inviter_id: String,
54}
55
56#[derive(Debug, Clone, Serialize, Deserialize)]
57pub struct GroupApprovalMethodQrCode {
58 pub qr_code_id: String,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize)]
62pub struct GroupApprovalMethod {
63 #[serde(rename = "MemberInvite", skip_serializing_if = "Option::is_none")]
64 pub member_invite: Option<GroupApprovalMethodMemberInvite>,
65 #[serde(rename = "QRCode", skip_serializing_if = "Option::is_none")]
66 pub qr_code: Option<GroupApprovalMethodQrCode>,
67}
68
69#[derive(Debug, Clone, Serialize, Deserialize)]
70pub struct GroupApprovalItem {
71 pub request_id: String,
72 pub user_id: u64,
73 pub method: GroupApprovalMethod,
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub message: Option<String>,
76 pub created_at: String,
77 #[serde(skip_serializing_if = "Option::is_none")]
78 pub expires_at: Option<String>,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
82pub struct GroupApprovalListResponse {
83 pub group_id: String,
84 #[serde(default, alias = "approvals")]
85 pub requests: Vec<GroupApprovalItem>,
86 pub total: usize,
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize)]
93pub struct GroupApprovalHandleResponse {
94 pub success: bool,
95 pub request_id: String,
96 pub action: String,
97 pub group_id: u64,
98 pub user_id: u64,
99 #[serde(skip_serializing_if = "Option::is_none")]
100 pub reject_reason: Option<String>,
101 pub message: String,
102 pub handled_at: String,
103}