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 `tools.ozone.report.defs` namespace.
///Activity recording a moderator being assigned to a report.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct AssignmentActivityData {
    ///The report's status before this activity. Populated automatically from the report row; not required in input.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub previous_status: core::option::Option<String>,
}
pub type AssignmentActivity = crate::types::Object<AssignmentActivityData>;
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct AssignmentViewData {
    pub did: crate::types::string::Did,
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub end_at: core::option::Option<crate::types::string::Datetime>,
    pub id: i64,
    ///The moderator assigned to this report
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub moderator: core::option::Option<crate::tools::ozone::team::defs::Member>,
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub queue: core::option::Option<crate::tools::ozone::queue::defs::QueueView>,
    pub report_id: i64,
    pub start_at: crate::types::string::Datetime,
}
pub type AssignmentView = crate::types::Object<AssignmentViewData>;
///Activity recording a report being closed.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CloseActivityData {
    ///The report's status before this activity. Populated automatically from the report row; not required in input.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub previous_status: core::option::Option<String>,
}
pub type CloseActivity = crate::types::Object<CloseActivityData>;
///Activity recording a report being escalated.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct EscalationActivityData {
    ///The report's status before this activity. Populated automatically from the report row; not required in input.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub previous_status: core::option::Option<String>,
}
pub type EscalationActivity = crate::types::Object<EscalationActivityData>;
///A single daily snapshot of report statistics for a calendar date.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct HistoricalStatsData {
    ///Percentage of reports actioned (actionedCount / inboundCount * 100), rounded to nearest integer.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub action_rate: core::option::Option<i64>,
    ///Number of reports closed during this day.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub actioned_count: core::option::Option<i64>,
    ///Average time in seconds from report creation (or moderator assignment) to close.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub avg_handling_time_sec: core::option::Option<i64>,
    ///When this snapshot was last computed.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub computed_at: core::option::Option<crate::types::string::Datetime>,
    ///The calendar date this snapshot covers (YYYY-MM-DD).
    pub date: String,
    ///Number of reports escalated during this day.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub escalated_count: core::option::Option<i64>,
    ///Reports received during this day.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub inbound_count: core::option::Option<i64>,
    ///Number of reports not closed at time of computation.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub pending_count: core::option::Option<i64>,
}
pub type HistoricalStats = crate::types::Object<HistoricalStatsData>;
///Live statistics for reports for the current calendar day, filterable by queue, moderator, or report type.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct LiveStatsData {
    ///Percentage of reports actioned (actionedCount / inboundCount * 100), rounded to nearest integer.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub action_rate: core::option::Option<i64>,
    ///Number of reports closed today.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub actioned_count: core::option::Option<i64>,
    ///Average time in seconds from report creation (or moderator assignment) to close.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub avg_handling_time_sec: core::option::Option<i64>,
    ///Number of reports escalated today.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub escalated_count: core::option::Option<i64>,
    ///Reports received today.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub inbound_count: core::option::Option<i64>,
    ///When these statistics were last computed.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub last_updated: core::option::Option<crate::types::string::Datetime>,
    ///Number of reports currently not closed.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub pending_count: core::option::Option<i64>,
}
pub type LiveStats = crate::types::Object<LiveStatsData>;
///Activity recording a note on a report. Use internalNote for moderator-only notes or publicNote for reporter-visible notes (or both).
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct NoteActivityData {}
pub type NoteActivity = crate::types::Object<NoteActivityData>;
///Activity recording a report being routed to a queue.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct QueueActivityData {
    ///The report's status before this activity. Populated automatically from the report row; not required in input.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub previous_status: core::option::Option<String>,
}
pub type QueueActivity = crate::types::Object<QueueActivityData>;
///Appeal a previously taken moderation action
pub const REASON_APPEAL: &str = "tools.ozone.report.defs#reasonAppeal";
///Child sexual abuse material (CSAM). These reports will be sent only be sent to the application's Moderation Authority.
pub const REASON_CHILD_SAFETY_CSAM: &str = "tools.ozone.report.defs#reasonChildSafetyCSAM";
///Grooming or predatory behavior. These reports will be sent only be sent to the application's Moderation Authority.
pub const REASON_CHILD_SAFETY_GROOM: &str = "tools.ozone.report.defs#reasonChildSafetyGroom";
///Harassment or bullying of minors
pub const REASON_CHILD_SAFETY_HARASSMENT: &str = "tools.ozone.report.defs#reasonChildSafetyHarassment";
///Other child safety. These reports will be sent only be sent to the application's Moderation Authority.
pub const REASON_CHILD_SAFETY_OTHER: &str = "tools.ozone.report.defs#reasonChildSafetyOther";
///Privacy violation involving a minor
pub const REASON_CHILD_SAFETY_PRIVACY: &str = "tools.ozone.report.defs#reasonChildSafetyPrivacy";
///Doxxing
pub const REASON_HARASSMENT_DOXXING: &str = "tools.ozone.report.defs#reasonHarassmentDoxxing";
///Hate speech
pub const REASON_HARASSMENT_HATE_SPEECH: &str = "tools.ozone.report.defs#reasonHarassmentHateSpeech";
///Other harassing or hateful content
pub const REASON_HARASSMENT_OTHER: &str = "tools.ozone.report.defs#reasonHarassmentOther";
///Targeted harassment
pub const REASON_HARASSMENT_TARGETED: &str = "tools.ozone.report.defs#reasonHarassmentTargeted";
///Trolling
pub const REASON_HARASSMENT_TROLL: &str = "tools.ozone.report.defs#reasonHarassmentTroll";
///Fake account or bot
pub const REASON_MISLEADING_BOT: &str = "tools.ozone.report.defs#reasonMisleadingBot";
///False information about elections
pub const REASON_MISLEADING_ELECTIONS: &str = "tools.ozone.report.defs#reasonMisleadingElections";
///Impersonation
pub const REASON_MISLEADING_IMPERSONATION: &str = "tools.ozone.report.defs#reasonMisleadingImpersonation";
///Other misleading content
pub const REASON_MISLEADING_OTHER: &str = "tools.ozone.report.defs#reasonMisleadingOther";
///Scam
pub const REASON_MISLEADING_SCAM: &str = "tools.ozone.report.defs#reasonMisleadingScam";
///Spam
pub const REASON_MISLEADING_SPAM: &str = "tools.ozone.report.defs#reasonMisleadingSpam";
///An issue not included in these options
pub const REASON_OTHER: &str = "tools.ozone.report.defs#reasonOther";
///Banned user returning
pub const REASON_RULE_BAN_EVASION: &str = "tools.ozone.report.defs#reasonRuleBanEvasion";
///Other
pub const REASON_RULE_OTHER: &str = "tools.ozone.report.defs#reasonRuleOther";
///Promoting or selling prohibited items or services
pub const REASON_RULE_PROHIBITED_SALES: &str = "tools.ozone.report.defs#reasonRuleProhibitedSales";
///Hacking or system attacks
pub const REASON_RULE_SITE_SECURITY: &str = "tools.ozone.report.defs#reasonRuleSiteSecurity";
///Content promoting or depicting self-harm
pub const REASON_SELF_HARM_CONTENT: &str = "tools.ozone.report.defs#reasonSelfHarmContent";
///Eating disorders
pub const REASON_SELF_HARM_ED: &str = "tools.ozone.report.defs#reasonSelfHarmED";
///Other dangerous content
pub const REASON_SELF_HARM_OTHER: &str = "tools.ozone.report.defs#reasonSelfHarmOther";
///Dangerous challenges or activities
pub const REASON_SELF_HARM_STUNTS: &str = "tools.ozone.report.defs#reasonSelfHarmStunts";
///Dangerous substances or drug abuse
pub const REASON_SELF_HARM_SUBSTANCES: &str = "tools.ozone.report.defs#reasonSelfHarmSubstances";
///Adult sexual abuse content
pub const REASON_SEXUAL_ABUSE_CONTENT: &str = "tools.ozone.report.defs#reasonSexualAbuseContent";
///Animal sexual abuse
pub const REASON_SEXUAL_ANIMAL: &str = "tools.ozone.report.defs#reasonSexualAnimal";
///Deepfake adult content
pub const REASON_SEXUAL_DEEPFAKE: &str = "tools.ozone.report.defs#reasonSexualDeepfake";
///Non-consensual intimate imagery
pub const REASON_SEXUAL_NCII: &str = "tools.ozone.report.defs#reasonSexualNCII";
///Other sexual violence content
pub const REASON_SEXUAL_OTHER: &str = "tools.ozone.report.defs#reasonSexualOther";
///Unlabelled adult content
pub const REASON_SEXUAL_UNLABELED: &str = "tools.ozone.report.defs#reasonSexualUnlabeled";
pub type ReasonType = String;
///Animal welfare violations
pub const REASON_VIOLENCE_ANIMAL: &str = "tools.ozone.report.defs#reasonViolenceAnimal";
///Extremist content. These reports will be sent only be sent to the application's Moderation Authority.
pub const REASON_VIOLENCE_EXTREMIST_CONTENT: &str = "tools.ozone.report.defs#reasonViolenceExtremistContent";
///Glorification of violence
pub const REASON_VIOLENCE_GLORIFICATION: &str = "tools.ozone.report.defs#reasonViolenceGlorification";
///Graphic violent content
pub const REASON_VIOLENCE_GRAPHIC_CONTENT: &str = "tools.ozone.report.defs#reasonViolenceGraphicContent";
///Other violent content
pub const REASON_VIOLENCE_OTHER: &str = "tools.ozone.report.defs#reasonViolenceOther";
///Threats or incitement
pub const REASON_VIOLENCE_THREATS: &str = "tools.ozone.report.defs#reasonViolenceThreats";
///Human trafficking
pub const REASON_VIOLENCE_TRAFFICKING: &str = "tools.ozone.report.defs#reasonViolenceTrafficking";
///Activity recording a closed report being reopened. Only valid when the report is in 'closed' status.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ReopenActivityData {
    ///The report's status before this activity. Populated automatically from the report row; not required in input.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub previous_status: core::option::Option<String>,
}
pub type ReopenActivity = crate::types::Object<ReopenActivityData>;
///A single activity entry on a report.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ReportActivityViewData {
    ///The typed activity object describing what occurred.
    pub activity: crate::types::Union<ReportActivityViewActivityRefs>,
    ///When this activity was created
    pub created_at: crate::types::string::Datetime,
    ///DID of the actor who created this activity, or the service DID for automated activities.
    pub created_by: crate::types::string::Did,
    ///Activity ID
    pub id: i64,
    ///Optional moderator-only note. Not visible to reporters.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub internal_note: core::option::Option<String>,
    ///True if this activity was created by an automated process (e.g. queue router) rather than a direct human action.
    pub is_automated: bool,
    ///Extensible JSON payload for loose activity-specific metadata (e.g. assignmentId).
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub meta: core::option::Option<crate::types::Unknown>,
    ///Full member record of the moderator who created this activity
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub moderator: core::option::Option<crate::tools::ozone::team::defs::Member>,
    ///Optional public note, potentially visible to the reporter.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub public_note: core::option::Option<String>,
    ///Full view of the report this activity belongs to.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub report: core::option::Option<ReportView>,
    ///ID of the report this activity belongs to
    pub report_id: i64,
}
pub type ReportActivityView = crate::types::Object<ReportActivityViewData>;
///Information about the moderator currently assigned to a report.
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ReportAssignmentData {
    ///When the report was assigned
    pub assigned_at: crate::types::string::Datetime,
    ///DID of the assigned moderator
    pub did: crate::types::string::Did,
    ///Full member record of the assigned moderator
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub moderator: core::option::Option<crate::tools::ozone::team::defs::Member>,
}
pub type ReportAssignment = crate::types::Object<ReportAssignmentData>;
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ReportViewData {
    ///Array of moderation event IDs representing actions taken on this report (sorted DESC, most recent first)
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub action_event_ids: core::option::Option<Vec<i64>>,
    ///Note sent to reporter when report was actioned
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub action_note: core::option::Option<String>,
    ///Optional: expanded action events
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub actions: core::option::Option<
        Vec<crate::tools::ozone::moderation::defs::ModEventView>,
    >,
    ///Information about moderator currently assigned to this report (if any)
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub assignment: core::option::Option<ReportAssignment>,
    ///Comment provided by the reporter
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub comment: core::option::Option<String>,
    ///When the report was created
    pub created_at: crate::types::string::Datetime,
    ///ID of the moderation event that created this report
    pub event_id: i64,
    ///Report ID
    pub id: i64,
    ///Whether this report was emitted by automated tooling.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub is_automated: core::option::Option<bool>,
    ///Whether this report is muted. A report is muted if the reporter was muted or the subject was muted at the time the report was created.
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub is_muted: core::option::Option<bool>,
    ///The queue this report is assigned to (if any)
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub queue: core::option::Option<crate::tools::ozone::queue::defs::QueueView>,
    ///When the report was assigned to its current queue
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub queued_at: core::option::Option<crate::types::string::Datetime>,
    ///Number of other pending reports on the same subject
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub related_report_count: core::option::Option<i64>,
    ///Type of report
    pub report_type: crate::com::atproto::moderation::defs::ReasonType,
    ///DID of the user who made the report
    pub reported_by: crate::types::string::Did,
    ///Full subject view of the reporter account
    pub reporter: crate::tools::ozone::moderation::defs::SubjectView,
    ///Current status of the report
    pub status: String,
    ///The subject that was reported with full details
    pub subject: crate::tools::ozone::moderation::defs::SubjectView,
    ///Current status of the reported subject
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub subject_status: core::option::Option<
        crate::tools::ozone::moderation::defs::SubjectStatusView,
    >,
    ///When the report was last updated
    #[serde(skip_serializing_if = "core::option::Option::is_none")]
    pub updated_at: core::option::Option<crate::types::string::Datetime>,
}
pub type ReportView = crate::types::Object<ReportViewData>;
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(tag = "$type")]
pub enum ReportActivityViewActivityRefs {
    #[serde(rename = "tools.ozone.report.defs#queueActivity")]
    QueueActivity(Box<QueueActivity>),
    #[serde(rename = "tools.ozone.report.defs#assignmentActivity")]
    AssignmentActivity(Box<AssignmentActivity>),
    #[serde(rename = "tools.ozone.report.defs#escalationActivity")]
    EscalationActivity(Box<EscalationActivity>),
    #[serde(rename = "tools.ozone.report.defs#closeActivity")]
    CloseActivity(Box<CloseActivity>),
    #[serde(rename = "tools.ozone.report.defs#reopenActivity")]
    ReopenActivity(Box<ReopenActivity>),
    #[serde(rename = "tools.ozone.report.defs#noteActivity")]
    NoteActivity(Box<NoteActivity>),
}