atrium-api 0.26.0

API library for AT Protocol (Bluesky)
Documentation
// @generated - This file is generated by atrium-codegen. DO NOT EDIT.
//!Definitions for the `chat.bsky.moderation.subscribeModEvents` namespace.
pub const NSID: &str = "chat.bsky.moderation.subscribeModEvents";
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ParametersData {
    ///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.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub cursor: core::option::Option<String>,
}
pub type Parameters = crate::types::Object<ParametersData>;
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(tag = "error", content = "message")]
pub enum Error {
    FutureCursor(Option<String>),
    ///If the consumer of the stream can not keep up with events, and a backlog gets too large, the server will drop the connection.
    ConsumerTooSlow(Option<String>),
}
impl std::fmt::Display for Error {
    fn fmt(&self, _f: &mut std::fmt::Formatter) -> std::fmt::Result {
        match self {
            Error::FutureCursor(msg) => {
                write!(_f, "FutureCursor")?;
                if let Some(msg) = msg {
                    write!(_f, ": {msg}")?;
                }
            }
            Error::ConsumerTooSlow(msg) => {
                write!(_f, "ConsumerTooSlow")?;
                if let Some(msg) = msg {
                    write!(_f, ": {msg}")?;
                }
            }
        }
        Ok(())
    }
}
///Fired when a user accepts a chat convo, either explicitly or by sending a message.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct EventChatAcceptedData {
    ///The DID of the person accepting the convo.
    pub actor_did: crate::types::string::Did,
    ///When the convo was originally created.
    pub convo_created_at: crate::types::string::Datetime,
    pub convo_id: String,
    pub created_at: crate::types::string::Datetime,
    ///Current member count at the time of the event. Only present for group convos.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub group_member_count: core::option::Option<i64>,
    ///The name of the group chat. Only present for group convos.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub group_name: core::option::Option<String>,
    ///How the convo was accepted.
    pub method: String,
    ///The DID of the group chat owner. Only present for group convos.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub owner_did: core::option::Option<crate::types::string::Did>,
    pub rev: String,
}
pub type EventChatAccepted = crate::types::Object<EventChatAcceptedData>;
///Fired when the first message was sent on a convo.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct EventConvoFirstMessageData {
    pub convo_id: String,
    pub created_at: crate::types::string::Datetime,
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub message_id: core::option::Option<String>,
    ///The list of DIDs message recipients. Does not include the sender, which is in the `user` field
    pub recipients: Vec<crate::types::string::Did>,
    pub rev: String,
    ///The DID of the message author.
    pub user: crate::types::string::Did,
}
pub type EventConvoFirstMessage = crate::types::Object<EventConvoFirstMessageData>;
///Fire when a group chat is created.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct EventGroupChatCreatedData {
    ///The DID of the actor performing the action. For this event, same as ownerDid.
    pub actor_did: crate::types::string::Did,
    ///When the group was originally created.
    pub convo_created_at: crate::types::string::Datetime,
    pub convo_id: String,
    pub created_at: crate::types::string::Datetime,
    ///Current member count at the time of the event.
    pub group_member_count: i64,
    ///The name set at creation time.
    pub group_name: String,
    ///DIDs of everyone added at creation time.
    pub initial_member_dids: Vec<crate::types::string::Did>,
    ///The DID of the group chat owner.
    pub owner_did: crate::types::string::Did,
    pub rev: String,
}
pub type EventGroupChatCreated = crate::types::Object<EventGroupChatCreatedData>;
///Fired when a user requests to join a group chat via an join link that requires approval.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct EventGroupChatJoinRequestData {
    ///The DID of the person requesting to join.
    pub actor_did: crate::types::string::Did,
    ///When the group was originally created.
    pub convo_created_at: crate::types::string::Datetime,
    pub convo_id: String,
    pub created_at: crate::types::string::Datetime,
    ///Current member count at the time of the event.
    pub group_member_count: i64,
    pub group_name: String,
    ///The code of the join link used to request joining.
    pub join_link_code: String,
    ///The DID of the group chat owner.
    pub owner_did: crate::types::string::Did,
    pub rev: String,
    ///Whether the requesting member follows the group owner.
    pub subject_follows_owner: bool,
}
pub type EventGroupChatJoinRequest = crate::types::Object<EventGroupChatJoinRequestData>;
///Fired when a join request is approved by the group owner.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct EventGroupChatJoinRequestApprovedData {
    ///The DID of the owner approving the request.
    pub actor_did: crate::types::string::Did,
    ///When the group was originally created.
    pub convo_created_at: crate::types::string::Datetime,
    pub convo_id: String,
    pub created_at: crate::types::string::Datetime,
    ///Current member count at the time of the event.
    pub group_member_count: i64,
    pub group_name: String,
    ///The DID of the group chat owner.
    pub owner_did: crate::types::string::Did,
    pub rev: String,
    ///The DID of the member whose request was approved.
    pub subject_did: crate::types::string::Did,
}
pub type EventGroupChatJoinRequestApproved = crate::types::Object<
    EventGroupChatJoinRequestApprovedData,
>;
///Fired when a join request is rejected by the group owner.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct EventGroupChatJoinRequestRejectedData {
    ///The DID of the owner rejecting the request.
    pub actor_did: crate::types::string::Did,
    ///When the group was originally created.
    pub convo_created_at: crate::types::string::Datetime,
    pub convo_id: String,
    pub created_at: crate::types::string::Datetime,
    ///Current member count at the time of the event.
    pub group_member_count: i64,
    pub group_name: String,
    ///The DID of the group chat owner.
    pub owner_did: crate::types::string::Did,
    pub rev: String,
    ///The DID of the member whose request was rejected.
    pub subject_did: crate::types::string::Did,
}
pub type EventGroupChatJoinRequestRejected = crate::types::Object<
    EventGroupChatJoinRequestRejectedData,
>;
///Fired when a member is added to a group chat. Note that members are added in the 'request' state.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct EventGroupChatMemberAddedData {
    ///The DID of the actor performing the action. For this event, same as ownerDid.
    pub actor_did: crate::types::string::Did,
    ///When the group was originally created.
    pub convo_created_at: crate::types::string::Datetime,
    pub convo_id: String,
    pub created_at: crate::types::string::Datetime,
    ///Current member count at the time of the event.
    pub group_member_count: i64,
    pub group_name: String,
    ///The DID of the group chat owner.
    pub owner_did: crate::types::string::Did,
    ///The number of members who have not yet accepted the convo.
    pub request_members_count: i64,
    pub rev: String,
    ///The DID of the member who was added.
    pub subject_did: crate::types::string::Did,
    ///Whether the added member follows the group owner.
    pub subject_follows_owner: bool,
}
pub type EventGroupChatMemberAdded = crate::types::Object<EventGroupChatMemberAddedData>;
///Fired when a member joins a group chat via an join link that does not require approval.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct EventGroupChatMemberJoinedData {
    ///The DID of the person joining.
    pub actor_did: crate::types::string::Did,
    ///When the group was originally created.
    pub convo_created_at: crate::types::string::Datetime,
    pub convo_id: String,
    pub created_at: crate::types::string::Datetime,
    ///Current member count at the time of the event.
    pub group_member_count: i64,
    pub group_name: String,
    ///The code of the join link used to join.
    pub join_link_code: String,
    ///The DID of the group chat owner.
    pub owner_did: crate::types::string::Did,
    pub rev: String,
    ///Whether the joining member follows the group owner.
    pub subject_follows_owner: bool,
}
pub type EventGroupChatMemberJoined = crate::types::Object<
    EventGroupChatMemberJoinedData,
>;
///Fired when a member leaves or is removed from a group chat.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct EventGroupChatMemberLeftData {
    ///The DID of the actor. For voluntary: the person leaving. For kicked: the owner.
    pub actor_did: crate::types::string::Did,
    ///When the group was originally created.
    pub convo_created_at: crate::types::string::Datetime,
    pub convo_id: String,
    pub created_at: crate::types::string::Datetime,
    ///Current member count at the time of the event.
    pub group_member_count: i64,
    pub group_name: String,
    ///How the member left.
    pub leave_method: String,
    ///The DID of the group chat owner.
    pub owner_did: crate::types::string::Did,
    pub rev: String,
    ///The DID of the member who left or was removed.
    pub subject_did: crate::types::string::Did,
}
pub type EventGroupChatMemberLeft = crate::types::Object<EventGroupChatMemberLeftData>;
///Fired when a group chat's metadata or status changes.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct EventGroupChatUpdatedData {
    ///The DID of the actor performing the action (the owner).
    pub actor_did: crate::types::string::Did,
    ///When the group was originally created.
    pub convo_created_at: crate::types::string::Datetime,
    pub convo_id: String,
    pub created_at: crate::types::string::Datetime,
    ///Current member count at the time of the event.
    pub group_member_count: i64,
    ///Current group name.
    pub group_name: String,
    ///The code of the join link. Only present when updateType is join-link-related.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub join_link_code: core::option::Option<String>,
    ///Whether the join link is restricted to followers of the owner. Only present when updateType is join-link-related.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub join_link_followers_only: core::option::Option<bool>,
    ///Whether the join link requires owner approval to join. Only present when updateType is join-link-related.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub join_link_requires_approval: core::option::Option<bool>,
    ///Why the group was locked. Only present when updateType is 'locked'.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub lock_reason: core::option::Option<String>,
    ///The new group name. Only present when updateType is 'name_changed'.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub new_name: core::option::Option<String>,
    ///The previous group name. Only present when updateType is 'name_changed'.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub old_name: core::option::Option<String>,
    ///The DID of the group chat owner.
    pub owner_did: crate::types::string::Did,
    pub rev: String,
    ///What changed.
    pub update_type: String,
}
pub type EventGroupChatUpdated = crate::types::Object<EventGroupChatUpdatedData>;
///Fired when a user exceeds a rate limit.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct EventRateLimitExceededData {
    ///The DID of the user who hit the rate limit.
    pub actor_did: crate::types::string::Did,
    pub created_at: crate::types::string::Datetime,
    ///The NSID of the endpoint that was rate limited.
    pub endpoint: String,
    pub rev: String,
}
pub type EventRateLimitExceeded = crate::types::Object<EventRateLimitExceededData>;
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(tag = "$type")]
pub enum Message {
    #[serde(rename = "chat.bsky.moderation.subscribeModEvents#eventConvoFirstMessage")]
    EventConvoFirstMessage(Box<EventConvoFirstMessage>),
    #[serde(rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatCreated")]
    EventGroupChatCreated(Box<EventGroupChatCreated>),
    #[serde(
        rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatMemberAdded"
    )]
    EventGroupChatMemberAdded(Box<EventGroupChatMemberAdded>),
    #[serde(
        rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatMemberJoined"
    )]
    EventGroupChatMemberJoined(Box<EventGroupChatMemberJoined>),
    #[serde(
        rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatJoinRequest"
    )]
    EventGroupChatJoinRequest(Box<EventGroupChatJoinRequest>),
    #[serde(
        rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatJoinRequestApproved"
    )]
    EventGroupChatJoinRequestApproved(Box<EventGroupChatJoinRequestApproved>),
    #[serde(
        rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatJoinRequestRejected"
    )]
    EventGroupChatJoinRequestRejected(Box<EventGroupChatJoinRequestRejected>),
    #[serde(rename = "chat.bsky.moderation.subscribeModEvents#eventChatAccepted")]
    EventChatAccepted(Box<EventChatAccepted>),
    #[serde(rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatMemberLeft")]
    EventGroupChatMemberLeft(Box<EventGroupChatMemberLeft>),
    #[serde(rename = "chat.bsky.moderation.subscribeModEvents#eventGroupChatUpdated")]
    EventGroupChatUpdated(Box<EventGroupChatUpdated>),
    #[serde(rename = "chat.bsky.moderation.subscribeModEvents#eventRateLimitExceeded")]
    EventRateLimitExceeded(Box<EventRateLimitExceeded>),
}