Skip to main content

atrium_api/chat/bsky/moderation/
subscribe_mod_events.rs

1// @generated - This file is generated by atrium-codegen. DO NOT EDIT.
2//!Definitions for the `chat.bsky.moderation.subscribeModEvents` namespace.
3pub const NSID: &str = "chat.bsky.moderation.subscribeModEvents";
4#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
5#[serde(rename_all = "camelCase")]
6pub struct ParametersData {
7    ///The last known event seq number to backfill from. Use '2222222222222' to backfill from the beginning. Don't specify a cursor to listen only for new events.
8    #[serde(skip_serializing_if = "core::option::Option::is_none")]
9    pub cursor: core::option::Option<String>,
10}
11pub type Parameters = crate::types::Object<ParametersData>;
12#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
13#[serde(tag = "error", content = "message")]
14pub enum Error {
15    FutureCursor(Option<String>),
16    ///If the consumer of the stream can not keep up with events, and a backlog gets too large, the server will drop the connection.
17    ConsumerTooSlow(Option<String>),
18}
19impl std::fmt::Display for Error {
20    fn fmt(&self, _f: &mut std::fmt::Formatter) -> std::fmt::Result {
21        match self {
22            Error::FutureCursor(msg) => {
23                write!(_f, "FutureCursor")?;
24                if let Some(msg) = msg {
25                    write!(_f, ": {msg}")?;
26                }
27            }
28            Error::ConsumerTooSlow(msg) => {
29                write!(_f, "ConsumerTooSlow")?;
30                if let Some(msg) = msg {
31                    write!(_f, ": {msg}")?;
32                }
33            }
34        }
35        Ok(())
36    }
37}
38///Fired when a user accepts a chat convo, either explicitly or by sending a message.
39#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
40#[serde(rename_all = "camelCase")]
41pub struct EventChatAcceptedData {
42    ///The DID of the person accepting the convo.
43    pub actor_did: crate::types::string::Did,
44    ///When the convo was originally created.
45    pub convo_created_at: crate::types::string::Datetime,
46    pub convo_id: String,
47    pub created_at: crate::types::string::Datetime,
48    ///Current member count at the time of the event. Only present for group convos.
49    #[serde(skip_serializing_if = "core::option::Option::is_none")]
50    pub group_member_count: core::option::Option<i64>,
51    ///The name of the group chat. Only present for group convos.
52    #[serde(skip_serializing_if = "core::option::Option::is_none")]
53    pub group_name: core::option::Option<String>,
54    ///How the convo was accepted.
55    pub method: String,
56    ///The DID of the group chat owner. Only present for group convos.
57    #[serde(skip_serializing_if = "core::option::Option::is_none")]
58    pub owner_did: core::option::Option<crate::types::string::Did>,
59    pub rev: String,
60}
61pub type EventChatAccepted = crate::types::Object<EventChatAcceptedData>;
62///Fired when the first message was sent on a convo.
63#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
64#[serde(rename_all = "camelCase")]
65pub struct EventConvoFirstMessageData {
66    pub convo_id: String,
67    pub created_at: crate::types::string::Datetime,
68    #[serde(skip_serializing_if = "core::option::Option::is_none")]
69    pub message_id: core::option::Option<String>,
70    ///The list of DIDs message recipients. Does not include the sender, which is in the `user` field
71    pub recipients: Vec<crate::types::string::Did>,
72    pub rev: String,
73    ///The DID of the message author.
74    pub user: crate::types::string::Did,
75}
76pub type EventConvoFirstMessage = crate::types::Object<EventConvoFirstMessageData>;
77///Fire when a group chat is created.
78#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
79#[serde(rename_all = "camelCase")]
80pub struct EventGroupChatCreatedData {
81    ///The DID of the actor performing the action. For this event, same as ownerDid.
82    pub actor_did: crate::types::string::Did,
83    ///When the group was originally created.
84    pub convo_created_at: crate::types::string::Datetime,
85    pub convo_id: String,
86    pub created_at: crate::types::string::Datetime,
87    ///Current member count at the time of the event.
88    pub group_member_count: i64,
89    ///The name set at creation time.
90    pub group_name: String,
91    ///DIDs of everyone added at creation time.
92    pub initial_member_dids: Vec<crate::types::string::Did>,
93    ///The DID of the group chat owner.
94    pub owner_did: crate::types::string::Did,
95    pub rev: String,
96}
97pub type EventGroupChatCreated = crate::types::Object<EventGroupChatCreatedData>;
98///Fired when a user requests to join a group chat via an join link that requires approval.
99#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
100#[serde(rename_all = "camelCase")]
101pub struct EventGroupChatJoinRequestData {
102    ///The DID of the person requesting to join.
103    pub actor_did: crate::types::string::Did,
104    ///When the group was originally created.
105    pub convo_created_at: crate::types::string::Datetime,
106    pub convo_id: String,
107    pub created_at: crate::types::string::Datetime,
108    ///Current member count at the time of the event.
109    pub group_member_count: i64,
110    pub group_name: String,
111    ///The code of the join link used to request joining.
112    pub join_link_code: String,
113    ///The DID of the group chat owner.
114    pub owner_did: crate::types::string::Did,
115    pub rev: String,
116    ///Whether the requesting member follows the group owner.
117    pub subject_follows_owner: bool,
118}
119pub type EventGroupChatJoinRequest = crate::types::Object<EventGroupChatJoinRequestData>;
120///Fired when a join request is approved by the group owner.
121#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
122#[serde(rename_all = "camelCase")]
123pub struct EventGroupChatJoinRequestApprovedData {
124    ///The DID of the owner approving the request.
125    pub actor_did: crate::types::string::Did,
126    ///When the group was originally created.
127    pub convo_created_at: crate::types::string::Datetime,
128    pub convo_id: String,
129    pub created_at: crate::types::string::Datetime,
130    ///Current member count at the time of the event.
131    pub group_member_count: i64,
132    pub group_name: String,
133    ///The DID of the group chat owner.
134    pub owner_did: crate::types::string::Did,
135    pub rev: String,
136    ///The DID of the member whose request was approved.
137    pub subject_did: crate::types::string::Did,
138}
139pub type EventGroupChatJoinRequestApproved = crate::types::Object<
140    EventGroupChatJoinRequestApprovedData,
141>;
142///Fired when a join request is rejected by the group owner.
143#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
144#[serde(rename_all = "camelCase")]
145pub struct EventGroupChatJoinRequestRejectedData {
146    ///The DID of the owner rejecting the request.
147    pub actor_did: crate::types::string::Did,
148    ///When the group was originally created.
149    pub convo_created_at: crate::types::string::Datetime,
150    pub convo_id: String,
151    pub created_at: crate::types::string::Datetime,
152    ///Current member count at the time of the event.
153    pub group_member_count: i64,
154    pub group_name: String,
155    ///The DID of the group chat owner.
156    pub owner_did: crate::types::string::Did,
157    pub rev: String,
158    ///The DID of the member whose request was rejected.
159    pub subject_did: crate::types::string::Did,
160}
161pub type EventGroupChatJoinRequestRejected = crate::types::Object<
162    EventGroupChatJoinRequestRejectedData,
163>;
164///Fired when a member is added to a group chat. Note that members are added in the 'request' state.
165#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
166#[serde(rename_all = "camelCase")]
167pub struct EventGroupChatMemberAddedData {
168    ///The DID of the actor performing the action. For this event, same as ownerDid.
169    pub actor_did: crate::types::string::Did,
170    ///When the group was originally created.
171    pub convo_created_at: crate::types::string::Datetime,
172    pub convo_id: String,
173    pub created_at: crate::types::string::Datetime,
174    ///Current member count at the time of the event.
175    pub group_member_count: i64,
176    pub group_name: String,
177    ///The DID of the group chat owner.
178    pub owner_did: crate::types::string::Did,
179    ///The number of members who have not yet accepted the convo.
180    pub request_members_count: i64,
181    pub rev: String,
182    ///The DID of the member who was added.
183    pub subject_did: crate::types::string::Did,
184    ///Whether the added member follows the group owner.
185    pub subject_follows_owner: bool,
186}
187pub type EventGroupChatMemberAdded = crate::types::Object<EventGroupChatMemberAddedData>;
188///Fired when a member joins a group chat via an join link that does not require approval.
189#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
190#[serde(rename_all = "camelCase")]
191pub struct EventGroupChatMemberJoinedData {
192    ///The DID of the person joining.
193    pub actor_did: crate::types::string::Did,
194    ///When the group was originally created.
195    pub convo_created_at: crate::types::string::Datetime,
196    pub convo_id: String,
197    pub created_at: crate::types::string::Datetime,
198    ///Current member count at the time of the event.
199    pub group_member_count: i64,
200    pub group_name: String,
201    ///The code of the join link used to join.
202    pub join_link_code: String,
203    ///The DID of the group chat owner.
204    pub owner_did: crate::types::string::Did,
205    pub rev: String,
206    ///Whether the joining member follows the group owner.
207    pub subject_follows_owner: bool,
208}
209pub type EventGroupChatMemberJoined = crate::types::Object<
210    EventGroupChatMemberJoinedData,
211>;
212///Fired when a member leaves or is removed from a group chat.
213#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
214#[serde(rename_all = "camelCase")]
215pub struct EventGroupChatMemberLeftData {
216    ///The DID of the actor. For voluntary: the person leaving. For kicked: the owner.
217    pub actor_did: crate::types::string::Did,
218    ///When the group was originally created.
219    pub convo_created_at: crate::types::string::Datetime,
220    pub convo_id: String,
221    pub created_at: crate::types::string::Datetime,
222    ///Current member count at the time of the event.
223    pub group_member_count: i64,
224    pub group_name: String,
225    ///How the member left.
226    pub leave_method: String,
227    ///The DID of the group chat owner.
228    pub owner_did: crate::types::string::Did,
229    pub rev: String,
230    ///The DID of the member who left or was removed.
231    pub subject_did: crate::types::string::Did,
232}
233pub type EventGroupChatMemberLeft = crate::types::Object<EventGroupChatMemberLeftData>;
234///Fired when a group chat's metadata or status changes.
235#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
236#[serde(rename_all = "camelCase")]
237pub struct EventGroupChatUpdatedData {
238    ///The DID of the actor performing the action (the owner).
239    pub actor_did: crate::types::string::Did,
240    ///When the group was originally created.
241    pub convo_created_at: crate::types::string::Datetime,
242    pub convo_id: String,
243    pub created_at: crate::types::string::Datetime,
244    ///Current member count at the time of the event.
245    pub group_member_count: i64,
246    ///Current group name.
247    pub group_name: String,
248    ///The code of the join link. Only present when updateType is join-link-related.
249    #[serde(skip_serializing_if = "core::option::Option::is_none")]
250    pub join_link_code: core::option::Option<String>,
251    ///Whether the join link is restricted to followers of the owner. Only present when updateType is join-link-related.
252    #[serde(skip_serializing_if = "core::option::Option::is_none")]
253    pub join_link_followers_only: core::option::Option<bool>,
254    ///Whether the join link requires owner approval to join. Only present when updateType is join-link-related.
255    #[serde(skip_serializing_if = "core::option::Option::is_none")]
256    pub join_link_requires_approval: core::option::Option<bool>,
257    ///Why the group was locked. Only present when updateType is 'locked'.
258    #[serde(skip_serializing_if = "core::option::Option::is_none")]
259    pub lock_reason: core::option::Option<String>,
260    ///The new group name. Only present when updateType is 'name_changed'.
261    #[serde(skip_serializing_if = "core::option::Option::is_none")]
262    pub new_name: core::option::Option<String>,
263    ///The previous group name. Only present when updateType is 'name_changed'.
264    #[serde(skip_serializing_if = "core::option::Option::is_none")]
265    pub old_name: core::option::Option<String>,
266    ///The DID of the group chat owner.
267    pub owner_did: crate::types::string::Did,
268    pub rev: String,
269    ///What changed.
270    pub update_type: String,
271}
272pub type EventGroupChatUpdated = crate::types::Object<EventGroupChatUpdatedData>;
273///Fired when a user exceeds a rate limit.
274#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
275#[serde(rename_all = "camelCase")]
276pub struct EventRateLimitExceededData {
277    ///The DID of the user who hit the rate limit.
278    pub actor_did: crate::types::string::Did,
279    pub created_at: crate::types::string::Datetime,
280    ///The NSID of the endpoint that was rate limited.
281    pub endpoint: String,
282    pub rev: String,
283}
284pub type EventRateLimitExceeded = crate::types::Object<EventRateLimitExceededData>;
285#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
286#[serde(tag = "$type")]
287pub enum Message {
288    #[serde(rename = "chat.bsky.moderation.subscribeModEvents#eventConvoFirstMessage")]
289    EventConvoFirstMessage(Box<EventConvoFirstMessage>),
290    #[serde(rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatCreated")]
291    EventGroupChatCreated(Box<EventGroupChatCreated>),
292    #[serde(
293        rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatMemberAdded"
294    )]
295    EventGroupChatMemberAdded(Box<EventGroupChatMemberAdded>),
296    #[serde(
297        rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatMemberJoined"
298    )]
299    EventGroupChatMemberJoined(Box<EventGroupChatMemberJoined>),
300    #[serde(
301        rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatJoinRequest"
302    )]
303    EventGroupChatJoinRequest(Box<EventGroupChatJoinRequest>),
304    #[serde(
305        rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatJoinRequestApproved"
306    )]
307    EventGroupChatJoinRequestApproved(Box<EventGroupChatJoinRequestApproved>),
308    #[serde(
309        rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatJoinRequestRejected"
310    )]
311    EventGroupChatJoinRequestRejected(Box<EventGroupChatJoinRequestRejected>),
312    #[serde(rename = "chat.bsky.moderation.subscribeModEvents#eventChatAccepted")]
313    EventChatAccepted(Box<EventChatAccepted>),
314    #[serde(rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatMemberLeft")]
315    EventGroupChatMemberLeft(Box<EventGroupChatMemberLeft>),
316    #[serde(rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatUpdated")]
317    EventGroupChatUpdated(Box<EventGroupChatUpdated>),
318    #[serde(rename = "chat.bsky.moderation.subscribeModEvents#eventRateLimitExceeded")]
319    EventRateLimitExceeded(Box<EventRateLimitExceeded>),
320}