Skip to main content

atrium_api/tools/ozone/report/
defs.rs

1// @generated - This file is generated by atrium-codegen. DO NOT EDIT.
2//!Definitions for the `tools.ozone.report.defs` namespace.
3///Activity recording a moderator being assigned to a report.
4#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
5#[serde(rename_all = "camelCase")]
6pub struct AssignmentActivityData {
7    ///The report's status before this activity. Populated automatically from the report row; not required in input.
8    #[serde(skip_serializing_if = "core::option::Option::is_none")]
9    pub previous_status: core::option::Option<String>,
10}
11pub type AssignmentActivity = crate::types::Object<AssignmentActivityData>;
12#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
13#[serde(rename_all = "camelCase")]
14pub struct AssignmentViewData {
15    pub did: crate::types::string::Did,
16    #[serde(skip_serializing_if = "core::option::Option::is_none")]
17    pub end_at: core::option::Option<crate::types::string::Datetime>,
18    pub id: i64,
19    ///The moderator assigned to this report
20    #[serde(skip_serializing_if = "core::option::Option::is_none")]
21    pub moderator: core::option::Option<crate::tools::ozone::team::defs::Member>,
22    #[serde(skip_serializing_if = "core::option::Option::is_none")]
23    pub queue: core::option::Option<crate::tools::ozone::queue::defs::QueueView>,
24    pub report_id: i64,
25    pub start_at: crate::types::string::Datetime,
26}
27pub type AssignmentView = crate::types::Object<AssignmentViewData>;
28///Activity recording a report being closed.
29#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
30#[serde(rename_all = "camelCase")]
31pub struct CloseActivityData {
32    ///The report's status before this activity. Populated automatically from the report row; not required in input.
33    #[serde(skip_serializing_if = "core::option::Option::is_none")]
34    pub previous_status: core::option::Option<String>,
35}
36pub type CloseActivity = crate::types::Object<CloseActivityData>;
37///Activity recording a report being escalated.
38#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
39#[serde(rename_all = "camelCase")]
40pub struct EscalationActivityData {
41    ///The report's status before this activity. Populated automatically from the report row; not required in input.
42    #[serde(skip_serializing_if = "core::option::Option::is_none")]
43    pub previous_status: core::option::Option<String>,
44}
45pub type EscalationActivity = crate::types::Object<EscalationActivityData>;
46///A single daily snapshot of report statistics for a calendar date.
47#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
48#[serde(rename_all = "camelCase")]
49pub struct HistoricalStatsData {
50    ///Percentage of reports actioned (actionedCount / inboundCount * 100), rounded to nearest integer.
51    #[serde(skip_serializing_if = "core::option::Option::is_none")]
52    pub action_rate: core::option::Option<i64>,
53    ///Number of reports closed during this day.
54    #[serde(skip_serializing_if = "core::option::Option::is_none")]
55    pub actioned_count: core::option::Option<i64>,
56    ///Average time in seconds from report creation (or moderator assignment) to close.
57    #[serde(skip_serializing_if = "core::option::Option::is_none")]
58    pub avg_handling_time_sec: core::option::Option<i64>,
59    ///When this snapshot was last computed.
60    #[serde(skip_serializing_if = "core::option::Option::is_none")]
61    pub computed_at: core::option::Option<crate::types::string::Datetime>,
62    ///The calendar date this snapshot covers (YYYY-MM-DD).
63    pub date: String,
64    ///Number of reports escalated during this day.
65    #[serde(skip_serializing_if = "core::option::Option::is_none")]
66    pub escalated_count: core::option::Option<i64>,
67    ///Reports received during this day.
68    #[serde(skip_serializing_if = "core::option::Option::is_none")]
69    pub inbound_count: core::option::Option<i64>,
70    ///Number of reports not closed at time of computation.
71    #[serde(skip_serializing_if = "core::option::Option::is_none")]
72    pub pending_count: core::option::Option<i64>,
73}
74pub type HistoricalStats = crate::types::Object<HistoricalStatsData>;
75///Live statistics for reports for the current calendar day, filterable by queue, moderator, or report type.
76#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
77#[serde(rename_all = "camelCase")]
78pub struct LiveStatsData {
79    ///Percentage of reports actioned (actionedCount / inboundCount * 100), rounded to nearest integer.
80    #[serde(skip_serializing_if = "core::option::Option::is_none")]
81    pub action_rate: core::option::Option<i64>,
82    ///Number of reports closed today.
83    #[serde(skip_serializing_if = "core::option::Option::is_none")]
84    pub actioned_count: core::option::Option<i64>,
85    ///Average time in seconds from report creation (or moderator assignment) to close.
86    #[serde(skip_serializing_if = "core::option::Option::is_none")]
87    pub avg_handling_time_sec: core::option::Option<i64>,
88    ///Number of reports escalated today.
89    #[serde(skip_serializing_if = "core::option::Option::is_none")]
90    pub escalated_count: core::option::Option<i64>,
91    ///Reports received today.
92    #[serde(skip_serializing_if = "core::option::Option::is_none")]
93    pub inbound_count: core::option::Option<i64>,
94    ///When these statistics were last computed.
95    #[serde(skip_serializing_if = "core::option::Option::is_none")]
96    pub last_updated: core::option::Option<crate::types::string::Datetime>,
97    ///Number of reports currently not closed.
98    #[serde(skip_serializing_if = "core::option::Option::is_none")]
99    pub pending_count: core::option::Option<i64>,
100}
101pub type LiveStats = crate::types::Object<LiveStatsData>;
102///Activity recording a note on a report. Use internalNote for moderator-only notes or publicNote for reporter-visible notes (or both).
103#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
104#[serde(rename_all = "camelCase")]
105pub struct NoteActivityData {}
106pub type NoteActivity = crate::types::Object<NoteActivityData>;
107///Activity recording a report being routed to a queue.
108#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
109#[serde(rename_all = "camelCase")]
110pub struct QueueActivityData {
111    ///The report's status before this activity. Populated automatically from the report row; not required in input.
112    #[serde(skip_serializing_if = "core::option::Option::is_none")]
113    pub previous_status: core::option::Option<String>,
114}
115pub type QueueActivity = crate::types::Object<QueueActivityData>;
116///Appeal a previously taken moderation action
117pub const REASON_APPEAL: &str = "tools.ozone.report.defs#reasonAppeal";
118///Child sexual abuse material (CSAM). These reports will be sent only be sent to the application's Moderation Authority.
119pub const REASON_CHILD_SAFETY_CSAM: &str = "tools.ozone.report.defs#reasonChildSafetyCSAM";
120///Grooming or predatory behavior. These reports will be sent only be sent to the application's Moderation Authority.
121pub const REASON_CHILD_SAFETY_GROOM: &str = "tools.ozone.report.defs#reasonChildSafetyGroom";
122///Harassment or bullying of minors
123pub const REASON_CHILD_SAFETY_HARASSMENT: &str = "tools.ozone.report.defs#reasonChildSafetyHarassment";
124///Other child safety. These reports will be sent only be sent to the application's Moderation Authority.
125pub const REASON_CHILD_SAFETY_OTHER: &str = "tools.ozone.report.defs#reasonChildSafetyOther";
126///Privacy violation involving a minor
127pub const REASON_CHILD_SAFETY_PRIVACY: &str = "tools.ozone.report.defs#reasonChildSafetyPrivacy";
128///Doxxing
129pub const REASON_HARASSMENT_DOXXING: &str = "tools.ozone.report.defs#reasonHarassmentDoxxing";
130///Hate speech
131pub const REASON_HARASSMENT_HATE_SPEECH: &str = "tools.ozone.report.defs#reasonHarassmentHateSpeech";
132///Other harassing or hateful content
133pub const REASON_HARASSMENT_OTHER: &str = "tools.ozone.report.defs#reasonHarassmentOther";
134///Targeted harassment
135pub const REASON_HARASSMENT_TARGETED: &str = "tools.ozone.report.defs#reasonHarassmentTargeted";
136///Trolling
137pub const REASON_HARASSMENT_TROLL: &str = "tools.ozone.report.defs#reasonHarassmentTroll";
138///Fake account or bot
139pub const REASON_MISLEADING_BOT: &str = "tools.ozone.report.defs#reasonMisleadingBot";
140///False information about elections
141pub const REASON_MISLEADING_ELECTIONS: &str = "tools.ozone.report.defs#reasonMisleadingElections";
142///Impersonation
143pub const REASON_MISLEADING_IMPERSONATION: &str = "tools.ozone.report.defs#reasonMisleadingImpersonation";
144///Other misleading content
145pub const REASON_MISLEADING_OTHER: &str = "tools.ozone.report.defs#reasonMisleadingOther";
146///Scam
147pub const REASON_MISLEADING_SCAM: &str = "tools.ozone.report.defs#reasonMisleadingScam";
148///Spam
149pub const REASON_MISLEADING_SPAM: &str = "tools.ozone.report.defs#reasonMisleadingSpam";
150///An issue not included in these options
151pub const REASON_OTHER: &str = "tools.ozone.report.defs#reasonOther";
152///Banned user returning
153pub const REASON_RULE_BAN_EVASION: &str = "tools.ozone.report.defs#reasonRuleBanEvasion";
154///Other
155pub const REASON_RULE_OTHER: &str = "tools.ozone.report.defs#reasonRuleOther";
156///Promoting or selling prohibited items or services
157pub const REASON_RULE_PROHIBITED_SALES: &str = "tools.ozone.report.defs#reasonRuleProhibitedSales";
158///Hacking or system attacks
159pub const REASON_RULE_SITE_SECURITY: &str = "tools.ozone.report.defs#reasonRuleSiteSecurity";
160///Content promoting or depicting self-harm
161pub const REASON_SELF_HARM_CONTENT: &str = "tools.ozone.report.defs#reasonSelfHarmContent";
162///Eating disorders
163pub const REASON_SELF_HARM_ED: &str = "tools.ozone.report.defs#reasonSelfHarmED";
164///Other dangerous content
165pub const REASON_SELF_HARM_OTHER: &str = "tools.ozone.report.defs#reasonSelfHarmOther";
166///Dangerous challenges or activities
167pub const REASON_SELF_HARM_STUNTS: &str = "tools.ozone.report.defs#reasonSelfHarmStunts";
168///Dangerous substances or drug abuse
169pub const REASON_SELF_HARM_SUBSTANCES: &str = "tools.ozone.report.defs#reasonSelfHarmSubstances";
170///Adult sexual abuse content
171pub const REASON_SEXUAL_ABUSE_CONTENT: &str = "tools.ozone.report.defs#reasonSexualAbuseContent";
172///Animal sexual abuse
173pub const REASON_SEXUAL_ANIMAL: &str = "tools.ozone.report.defs#reasonSexualAnimal";
174///Deepfake adult content
175pub const REASON_SEXUAL_DEEPFAKE: &str = "tools.ozone.report.defs#reasonSexualDeepfake";
176///Non-consensual intimate imagery
177pub const REASON_SEXUAL_NCII: &str = "tools.ozone.report.defs#reasonSexualNCII";
178///Other sexual violence content
179pub const REASON_SEXUAL_OTHER: &str = "tools.ozone.report.defs#reasonSexualOther";
180///Unlabelled adult content
181pub const REASON_SEXUAL_UNLABELED: &str = "tools.ozone.report.defs#reasonSexualUnlabeled";
182pub type ReasonType = String;
183///Animal welfare violations
184pub const REASON_VIOLENCE_ANIMAL: &str = "tools.ozone.report.defs#reasonViolenceAnimal";
185///Extremist content. These reports will be sent only be sent to the application's Moderation Authority.
186pub const REASON_VIOLENCE_EXTREMIST_CONTENT: &str = "tools.ozone.report.defs#reasonViolenceExtremistContent";
187///Glorification of violence
188pub const REASON_VIOLENCE_GLORIFICATION: &str = "tools.ozone.report.defs#reasonViolenceGlorification";
189///Graphic violent content
190pub const REASON_VIOLENCE_GRAPHIC_CONTENT: &str = "tools.ozone.report.defs#reasonViolenceGraphicContent";
191///Other violent content
192pub const REASON_VIOLENCE_OTHER: &str = "tools.ozone.report.defs#reasonViolenceOther";
193///Threats or incitement
194pub const REASON_VIOLENCE_THREATS: &str = "tools.ozone.report.defs#reasonViolenceThreats";
195///Human trafficking
196pub const REASON_VIOLENCE_TRAFFICKING: &str = "tools.ozone.report.defs#reasonViolenceTrafficking";
197///Activity recording a closed report being reopened. Only valid when the report is in 'closed' status.
198#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
199#[serde(rename_all = "camelCase")]
200pub struct ReopenActivityData {
201    ///The report's status before this activity. Populated automatically from the report row; not required in input.
202    #[serde(skip_serializing_if = "core::option::Option::is_none")]
203    pub previous_status: core::option::Option<String>,
204}
205pub type ReopenActivity = crate::types::Object<ReopenActivityData>;
206///A single activity entry on a report.
207#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
208#[serde(rename_all = "camelCase")]
209pub struct ReportActivityViewData {
210    ///The typed activity object describing what occurred.
211    pub activity: crate::types::Union<ReportActivityViewActivityRefs>,
212    ///When this activity was created
213    pub created_at: crate::types::string::Datetime,
214    ///DID of the actor who created this activity, or the service DID for automated activities.
215    pub created_by: crate::types::string::Did,
216    ///Activity ID
217    pub id: i64,
218    ///Optional moderator-only note. Not visible to reporters.
219    #[serde(skip_serializing_if = "core::option::Option::is_none")]
220    pub internal_note: core::option::Option<String>,
221    ///True if this activity was created by an automated process (e.g. queue router) rather than a direct human action.
222    pub is_automated: bool,
223    ///Extensible JSON payload for loose activity-specific metadata (e.g. assignmentId).
224    #[serde(skip_serializing_if = "core::option::Option::is_none")]
225    pub meta: core::option::Option<crate::types::Unknown>,
226    ///Full member record of the moderator who created this activity
227    #[serde(skip_serializing_if = "core::option::Option::is_none")]
228    pub moderator: core::option::Option<crate::tools::ozone::team::defs::Member>,
229    ///Optional public note, potentially visible to the reporter.
230    #[serde(skip_serializing_if = "core::option::Option::is_none")]
231    pub public_note: core::option::Option<String>,
232    ///Full view of the report this activity belongs to.
233    #[serde(skip_serializing_if = "core::option::Option::is_none")]
234    pub report: core::option::Option<ReportView>,
235    ///ID of the report this activity belongs to
236    pub report_id: i64,
237}
238pub type ReportActivityView = crate::types::Object<ReportActivityViewData>;
239///Information about the moderator currently assigned to a report.
240#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
241#[serde(rename_all = "camelCase")]
242pub struct ReportAssignmentData {
243    ///When the report was assigned
244    pub assigned_at: crate::types::string::Datetime,
245    ///DID of the assigned moderator
246    pub did: crate::types::string::Did,
247    ///Full member record of the assigned moderator
248    #[serde(skip_serializing_if = "core::option::Option::is_none")]
249    pub moderator: core::option::Option<crate::tools::ozone::team::defs::Member>,
250}
251pub type ReportAssignment = crate::types::Object<ReportAssignmentData>;
252#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
253#[serde(rename_all = "camelCase")]
254pub struct ReportViewData {
255    ///Array of moderation event IDs representing actions taken on this report (sorted DESC, most recent first)
256    #[serde(skip_serializing_if = "core::option::Option::is_none")]
257    pub action_event_ids: core::option::Option<Vec<i64>>,
258    ///Note sent to reporter when report was actioned
259    #[serde(skip_serializing_if = "core::option::Option::is_none")]
260    pub action_note: core::option::Option<String>,
261    ///Optional: expanded action events
262    #[serde(skip_serializing_if = "core::option::Option::is_none")]
263    pub actions: core::option::Option<
264        Vec<crate::tools::ozone::moderation::defs::ModEventView>,
265    >,
266    ///Information about moderator currently assigned to this report (if any)
267    #[serde(skip_serializing_if = "core::option::Option::is_none")]
268    pub assignment: core::option::Option<ReportAssignment>,
269    ///Comment provided by the reporter
270    #[serde(skip_serializing_if = "core::option::Option::is_none")]
271    pub comment: core::option::Option<String>,
272    ///When the report was created
273    pub created_at: crate::types::string::Datetime,
274    ///ID of the moderation event that created this report
275    pub event_id: i64,
276    ///Report ID
277    pub id: i64,
278    ///Whether this report was emitted by automated tooling.
279    #[serde(skip_serializing_if = "core::option::Option::is_none")]
280    pub is_automated: core::option::Option<bool>,
281    ///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.
282    #[serde(skip_serializing_if = "core::option::Option::is_none")]
283    pub is_muted: core::option::Option<bool>,
284    ///The queue this report is assigned to (if any)
285    #[serde(skip_serializing_if = "core::option::Option::is_none")]
286    pub queue: core::option::Option<crate::tools::ozone::queue::defs::QueueView>,
287    ///When the report was assigned to its current queue
288    #[serde(skip_serializing_if = "core::option::Option::is_none")]
289    pub queued_at: core::option::Option<crate::types::string::Datetime>,
290    ///Number of other pending reports on the same subject
291    #[serde(skip_serializing_if = "core::option::Option::is_none")]
292    pub related_report_count: core::option::Option<i64>,
293    ///Type of report
294    pub report_type: crate::com::atproto::moderation::defs::ReasonType,
295    ///DID of the user who made the report
296    pub reported_by: crate::types::string::Did,
297    ///Full subject view of the reporter account
298    pub reporter: crate::tools::ozone::moderation::defs::SubjectView,
299    ///Current status of the report
300    pub status: String,
301    ///The subject that was reported with full details
302    pub subject: crate::tools::ozone::moderation::defs::SubjectView,
303    ///Current status of the reported subject
304    #[serde(skip_serializing_if = "core::option::Option::is_none")]
305    pub subject_status: core::option::Option<
306        crate::tools::ozone::moderation::defs::SubjectStatusView,
307    >,
308    ///When the report was last updated
309    #[serde(skip_serializing_if = "core::option::Option::is_none")]
310    pub updated_at: core::option::Option<crate::types::string::Datetime>,
311}
312pub type ReportView = crate::types::Object<ReportViewData>;
313#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
314#[serde(tag = "$type")]
315pub enum ReportActivityViewActivityRefs {
316    #[serde(rename = "tools.ozone.report.defs#queueActivity")]
317    QueueActivity(Box<QueueActivity>),
318    #[serde(rename = "tools.ozone.report.defs#assignmentActivity")]
319    AssignmentActivity(Box<AssignmentActivity>),
320    #[serde(rename = "tools.ozone.report.defs#escalationActivity")]
321    EscalationActivity(Box<EscalationActivity>),
322    #[serde(rename = "tools.ozone.report.defs#closeActivity")]
323    CloseActivity(Box<CloseActivity>),
324    #[serde(rename = "tools.ozone.report.defs#reopenActivity")]
325    ReopenActivity(Box<ReopenActivity>),
326    #[serde(rename = "tools.ozone.report.defs#noteActivity")]
327    NoteActivity(Box<NoteActivity>),
328}